Merge pull request #6157 from miyazakh/add_favouriteDrinkNID

pull/6191/head
Chris Conlon 2023-03-06 16:45:14 -07:00 committed by GitHub
commit 9bc3b867e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 1 deletions

View File

@ -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;

View File

@ -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

View File

@ -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,