X509_NAME_ENTRY_get_object

This commit is contained in:
Go Hosohara
2018-06-08 14:36:11 +09:00
parent 2922a93bf7
commit e79cdefcde
6 changed files with 122 additions and 54 deletions

View File

@@ -29749,12 +29749,19 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
* returns a pointer to a new WOLFSSL_ASN1_OBJECT struct on success and NULL
* on fail
*/
WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj(int id)
{
return wolfSSL_OBJ_nid2obj_ex(id, NULL);
}
WOLFSSL_LOCAL WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj_ex(int id,
WOLFSSL_ASN1_OBJECT* arg_obj)
{
word32 oidSz = 0;
const byte* oid;
word32 type = 0;
WOLFSSL_ASN1_OBJECT* obj;
WOLFSSL_ASN1_OBJECT* obj = arg_obj;
byte objBuf[MAX_OID_SZ + MAX_LENGTH_SZ + 1]; /* +1 for object tag */
word32 objSz = 0;
const char* sName;
@@ -30169,10 +30176,12 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
oid = OidFromId(id, type, &oidSz);
/* set object ID to buffer */
obj = wolfSSL_ASN1_OBJECT_new();
if (obj == NULL) {
WOLFSSL_MSG("Issue creating WOLFSSL_ASN1_OBJECT struct");
return NULL;
if (obj == NULL){
obj = wolfSSL_ASN1_OBJECT_new();
if (obj == NULL) {
WOLFSSL_MSG("Issue creating WOLFSSL_ASN1_OBJECT struct");
return NULL;
}
}
obj->type = id;
obj->grp = type;
@@ -30185,12 +30194,15 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
objSz += oidSz;
obj->objSz = objSz;
obj->obj = (byte*)XMALLOC(obj->objSz, NULL, DYNAMIC_TYPE_ASN1);
if (obj->obj == NULL) {
wolfSSL_ASN1_OBJECT_free(obj);
return NULL;
}
XMEMCPY(obj->obj, objBuf, obj->objSz);
if(arg_obj == NULL) { /* Dynamic NAME_ENTRY */
obj->obj = (byte*)XMALLOC(obj->objSz, NULL, DYNAMIC_TYPE_ASN1);
if ((obj->obj == NULL) && arg_obj == NULL) {
wolfSSL_ASN1_OBJECT_free(obj);
return NULL;
}
XMEMCPY(obj->obj, objBuf, obj->objSz);
} else /* static NAME_ENTR is for just type and grp */
obj->obj = NULL;
(void)type;
@@ -30889,15 +30901,13 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
#endif
#ifndef NO_WOLFSSL_STUB
WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne) {
(void)ne;
WOLFSSL_ENTER("wolfSSL_X509_NAME_ENTRY_get_object");
WOLFSSL_STUB("X509_NAME_ENTRY_get_object");
return NULL;
if (ne == NULL) return NULL;
wolfSSL_OBJ_nid2obj_ex(ne->nid, &ne->object);
return &ne->object;
}
#endif
WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(
WOLFSSL_X509_NAME *name, int loc)
@@ -30932,7 +30942,6 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
}
name->cnEntry.data.type = CTC_UTF8;
name->cnEntry.set = 1;
return &(name->cnEntry);
/* common name index case */
} else if (loc == name->fullName.cnIdx) {
@@ -30942,9 +30951,11 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
name->cnEntry.data.type = CTC_UTF8;
name->cnEntry.nid = ASN_COMMON_NAME;
name->cnEntry.set = 1;
return &(name->cnEntry);
}
wolfSSL_OBJ_nid2obj_ex(name->cnEntry.nid, &name->cnEntry.object);
return &name->cnEntry;
/* additionall cases to check for go here */
WOLFSSL_MSG("Entry not found or implemented");