mirror of https://github.com/wolfSSL/wolfssl.git
Merge pull request #6157 from miyazakh/add_favouriteDrinkNID
commit
9bc3b867e0
|
@ -9987,6 +9987,7 @@ static int ConvertNIDToWolfSSL(int nid)
|
|||
case NID_businessCategory: return ASN_BUS_CAT;
|
||||
case NID_domainComponent: return ASN_DOMAIN_COMPONENT;
|
||||
case NID_postalCode: return ASN_POSTAL_CODE;
|
||||
case NID_favouriteDrink: return ASN_FAVOURITE_DRINK;
|
||||
default:
|
||||
WOLFSSL_MSG("Attribute NID not found");
|
||||
return -1;
|
||||
|
|
10
tests/api.c
10
tests/api.c
|
@ -41057,15 +41057,25 @@ static int test_wolfSSL_X509_NAME_ENTRY(void)
|
|||
#ifdef WOLFSSL_CERT_REQ
|
||||
{
|
||||
unsigned char srv_pkcs9p[] = "Server";
|
||||
unsigned char fvrtDrnk[] = "tequila";
|
||||
unsigned char* der = NULL;
|
||||
char* subject;
|
||||
AssertIntEQ(X509_NAME_add_entry_by_NID(nm, NID_pkcs9_contentType,
|
||||
MBSTRING_ASC, srv_pkcs9p, -1, -1, 0), SSL_SUCCESS);
|
||||
|
||||
AssertIntEQ(X509_NAME_add_entry_by_NID(nm, NID_favouriteDrink,
|
||||
MBSTRING_ASC, fvrtDrnk, -1, -1, 0), SSL_SUCCESS);
|
||||
|
||||
AssertIntGT(wolfSSL_i2d_X509_NAME(nm, &der), 0);
|
||||
AssertNotNull(der);
|
||||
|
||||
subject = X509_NAME_oneline(nm, 0, 0);
|
||||
AssertNotNull(XSTRSTR(subject, "favouriteDrink=tequila"));
|
||||
#ifdef DEBUG_WOLFSSL
|
||||
fprintf(stderr, "\n\t%s\n", subject);
|
||||
#endif
|
||||
XFREE(subject, 0, DYNAMIC_TYPE_OPENSSL);
|
||||
XFREE(der, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -4353,7 +4353,9 @@ static const byte dnsSRVOid[] = {43, 6, 1, 5, 5, 7, 8, 7};
|
|||
defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
|
||||
defined(WOLFSSL_ASN_TEMPLATE)
|
||||
/* Pilot attribute types (0.9.2342.19200300.100.1.*) */
|
||||
static const byte uidOid[] = {9, 146, 38, 137, 147, 242, 44, 100, 1, 1}; /* user id */
|
||||
#define PLT_ATTR_TYPE_OID_BASE(num) {9, 146, 38, 137, 147, 242, 44, 100, 1, num}
|
||||
static const byte uidOid[] = PLT_ATTR_TYPE_OID_BASE(1); /* user id */
|
||||
static const byte fvrtDrk[] = PLT_ATTR_TYPE_OID_BASE(5);/* favourite drink*/
|
||||
#endif
|
||||
|
||||
#if defined(WOLFSSL_CERT_GEN) || \
|
||||
|
@ -12408,6 +12410,15 @@ static int GetRDN(DecodedCert* cert, char* full, word32* idx, int* nid,
|
|||
*nid = NID_domainComponent;
|
||||
#endif
|
||||
}
|
||||
else if (oidSz == sizeof(fvrtDrk) && XMEMCMP(oid, fvrtDrk, oidSz) == 0) {
|
||||
/* Set the favourite drink, type string, length and NID. */
|
||||
id = ASN_FAVOURITE_DRINK;
|
||||
typeStr = WOLFSSL_FAVOURITE_DRINK;
|
||||
typeStrLen = sizeof(WOLFSSL_FAVOURITE_DRINK) - 1;
|
||||
#ifdef WOLFSSL_X509_NAME_AVAILABLE
|
||||
*nid = NID_favouriteDrink;
|
||||
#endif
|
||||
}
|
||||
/* Other OIDs that start with the same values. */
|
||||
else if (oidSz == sizeof(dcOid) && XMEMCMP(oid, dcOid, oidSz-1) == 0) {
|
||||
WOLFSSL_MSG("Unknown pilot attribute type");
|
||||
|
@ -25806,6 +25817,10 @@ static int EncodeName(EncodedName* name, const char* nameStr,
|
|||
thisLen += (int)sizeof(uidOid);
|
||||
firstSz = (int)sizeof(uidOid);
|
||||
break;
|
||||
case ASN_FAVOURITE_DRINK:
|
||||
thisLen += (int)sizeof(fvrtDrk);
|
||||
firstSz = (int)sizeof(fvrtDrk);
|
||||
break;
|
||||
#ifdef WOLFSSL_CUSTOM_OID
|
||||
case ASN_CUSTOM_NAME:
|
||||
thisLen += cname->custom.oidSz;
|
||||
|
@ -25861,6 +25876,12 @@ static int EncodeName(EncodedName* name, const char* nameStr,
|
|||
/* str type */
|
||||
name->encoded[idx++] = nameTag;
|
||||
break;
|
||||
case ASN_FAVOURITE_DRINK:
|
||||
XMEMCPY(name->encoded + idx, fvrtDrk, sizeof(fvrtDrk));
|
||||
idx += (int)sizeof(fvrtDrk);
|
||||
/* str type */
|
||||
name->encoded[idx++] = nameTag;
|
||||
break;
|
||||
#ifdef WOLFSSL_CUSTOM_OID
|
||||
case ASN_CUSTOM_NAME:
|
||||
XMEMCPY(name->encoded + idx, cname->custom.oid,
|
||||
|
@ -25931,6 +25952,10 @@ static int EncodeName(EncodedName* name, const char* nameStr,
|
|||
oid = uidOid;
|
||||
oidSz = sizeof(uidOid);
|
||||
break;
|
||||
case ASN_FAVOURITE_DRINK:
|
||||
oid = fvrtDrk;
|
||||
oidSz = sizeof(fvrtDrk);
|
||||
break;
|
||||
#ifdef WOLFSSL_CUSTOM_OID
|
||||
case ASN_CUSTOM_NAME:
|
||||
nameSz = cname->custom.valSz;
|
||||
|
@ -26118,6 +26143,12 @@ static int SetNameRdnItems(ASNSetData* dataASN, ASNItem* namesASN,
|
|||
sizeof(uidOid), GetNameType(name, i),
|
||||
(const byte*)GetOneCertName(name, i), nameLen[i]);
|
||||
}
|
||||
else if (type == ASN_FAVOURITE_DRINK) {
|
||||
/* Copy favourite drink data into dynamic vars. */
|
||||
SetRdnItems(namesASN + idx, dataASN + idx, fvrtDrk,
|
||||
sizeof(fvrtDrk), GetNameType(name, i),
|
||||
(const byte*)GetOneCertName(name, i), nameLen[i]);
|
||||
}
|
||||
else if (type == ASN_CUSTOM_NAME) {
|
||||
#ifdef WOLFSSL_CUSTOM_OID
|
||||
SetRdnItems(namesASN + idx, dataASN + idx, name->custom.oid,
|
||||
|
|
Loading…
Reference in New Issue