forked from wolfSSL/wolfssl
add function wolfSSL_X509_NAME_ENTRY_create_by_txt
This commit is contained in:
42
src/ssl.c
42
src/ssl.c
@ -40693,6 +40693,48 @@ err:
|
||||
}
|
||||
|
||||
|
||||
/* Create a new WOLFSSL_X509_NAME_ENTRY structure based on the text passed
|
||||
* in. Returns NULL on failure */
|
||||
WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_txt(
|
||||
WOLFSSL_X509_NAME_ENTRY **neIn, const char *txt, int type,
|
||||
const unsigned char *data, int dataSz)
|
||||
{
|
||||
int nid = -1;
|
||||
WOLFSSL_X509_NAME_ENTRY* ne = NULL;
|
||||
|
||||
WOLFSSL_ENTER("wolfSSL_X509_NAME_ENTRY_create_by_txt()");
|
||||
|
||||
if (txt == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (neIn != NULL) {
|
||||
ne = *neIn;
|
||||
}
|
||||
|
||||
nid = wolfSSL_OBJ_txt2nid(txt);
|
||||
if (nid == NID_undef) {
|
||||
WOLFSSL_MSG("Unable to find text");
|
||||
}
|
||||
else {
|
||||
if (ne == NULL) {
|
||||
ne = wolfSSL_X509_NAME_ENTRY_new();
|
||||
if (ne == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
ne->nid = nid;
|
||||
ne->value = wolfSSL_ASN1_STRING_type_new(type);
|
||||
if (ne->value != NULL) {
|
||||
wolfSSL_ASN1_STRING_set(ne->value, (const void*)data, dataSz);
|
||||
ne->set = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return ne;
|
||||
}
|
||||
|
||||
|
||||
WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_NID(
|
||||
WOLFSSL_X509_NAME_ENTRY** out, int nid, int type,
|
||||
const unsigned char* data, int dataSz)
|
||||
|
@ -24598,6 +24598,12 @@ static void test_wolfSSL_X509_NAME_ENTRY(void)
|
||||
#endif
|
||||
X509_NAME_ENTRY_free(entry);
|
||||
|
||||
/* Test add entry by text */
|
||||
AssertNotNull(entry = X509_NAME_ENTRY_create_by_txt(NULL, "commonName",
|
||||
0x0c, cn, (int)sizeof(cn)));
|
||||
AssertIntEQ(X509_NAME_add_entry(nm, entry, -1, 0), SSL_SUCCESS);
|
||||
X509_NAME_ENTRY_free(entry);
|
||||
|
||||
/* Test add entry by NID */
|
||||
AssertIntEQ(X509_NAME_add_entry_by_NID(nm, NID_commonName, MBSTRING_UTF8,
|
||||
cn, -1, -1, 0), WOLFSSL_SUCCESS);
|
||||
|
@ -459,8 +459,10 @@ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS;
|
||||
#define X509_NAME_get_text_by_NID wolfSSL_X509_NAME_get_text_by_NID
|
||||
#define X509_NAME_get_index_by_OBJ wolfSSL_X509_NAME_get_index_by_OBJ
|
||||
#define X509_NAME_cmp wolfSSL_X509_NAME_cmp
|
||||
#define X509_NAME_ENTRY_new wolfSSL_X509_NAME_ENTRY_new
|
||||
#define X509_NAME_ENTRY_free wolfSSL_X509_NAME_ENTRY_free
|
||||
#define X509_NAME_ENTRY_create_by_NID wolfSSL_X509_NAME_ENTRY_create_by_NID
|
||||
#define X509_NAME_ENTRY_create_by_txt wolfSSL_X509_NAME_ENTRY_create_by_txt
|
||||
#define X509_NAME_add_entry wolfSSL_X509_NAME_add_entry
|
||||
#define X509_NAME_add_entry_by_txt wolfSSL_X509_NAME_add_entry_by_txt
|
||||
#define X509_NAME_add_entry_by_NID wolfSSL_X509_NAME_add_entry_by_NID
|
||||
|
@ -3270,6 +3270,9 @@ WOLFSSL_API long wolfSSL_CTX_clear_extra_chain_certs(WOLFSSL_CTX* ctx);
|
||||
WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_NID(
|
||||
WOLFSSL_X509_NAME_ENTRY** out, int nid, int type,
|
||||
const unsigned char* data, int dataSz);
|
||||
WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_txt(
|
||||
WOLFSSL_X509_NAME_ENTRY **neIn, const char *txt, int format,
|
||||
const unsigned char *data, int dataSz);
|
||||
WOLFSSL_API int wolfSSL_X509_NAME_add_entry(WOLFSSL_X509_NAME* name,
|
||||
WOLFSSL_X509_NAME_ENTRY* entry, int idx, int set);
|
||||
WOLFSSL_API int wolfSSL_X509_NAME_add_entry_by_txt(WOLFSSL_X509_NAME *name,
|
||||
|
Reference in New Issue
Block a user