forked from wolfSSL/wolfssl
Fix nid2*
and *2nid
functions
This commit is contained in:
768
src/ssl.c
768
src/ssl.c
@@ -30629,6 +30629,307 @@ int wolfSSL_cmp_peer_cert_to_file(WOLFSSL* ssl, const char *fname)
|
||||
static WC_RNG globalRNG;
|
||||
static int initGlobalRNG = 0;
|
||||
#endif
|
||||
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||
const WOLFSSL_ObjectInfo wolfssl_object_info[] = {
|
||||
#ifndef NO_CERTS
|
||||
/* oidCertExtType */
|
||||
{ NID_basic_constraints, BASIC_CA_OID, oidCertExtType, "basicConstraints",
|
||||
"X509v3 Basic Constraints"},
|
||||
{ NID_subject_alt_name, ALT_NAMES_OID, oidCertExtType, "subjectAltName",
|
||||
"X509v3 Subject Alternative Name"},
|
||||
{ CRL_DIST_OID, CRL_DIST_OID, oidCertExtType, "crlDistributionPoints",
|
||||
"X509v3 CRL Distribution Points"},
|
||||
{ NID_info_access, AUTH_INFO_OID, oidCertExtType, "authorityInfoAccess",
|
||||
"Authority Information Access"},
|
||||
{ NID_authority_key_identifier, AUTH_KEY_OID, oidCertExtType,
|
||||
"authorityKeyIdentifier", "X509v3 Authority Key Identifier"},
|
||||
{ NID_subject_key_identifier, SUBJ_KEY_OID, oidCertExtType,
|
||||
"subjectKeyIdentifier", "X509v3 Subject Key Identifier"},
|
||||
{ NID_key_usage, KEY_USAGE_OID, oidCertExtType, "keyUsage",
|
||||
"X509v3 Key Usage"},
|
||||
{ NID_inhibit_any_policy, INHIBIT_ANY_OID, oidCertExtType,
|
||||
"inhibitAnyPolicy", "X509v3 Inhibit Any Policy"},
|
||||
{ NID_ext_key_usage, KEY_USAGE_OID, oidCertExtType,
|
||||
"extendedKeyUsage", "X509v3 Extended Key Usage"},
|
||||
{ NID_name_constraints, NAME_CONS_OID, oidCertExtType,
|
||||
"nameConstraints", "X509v3 Name Constraints"},
|
||||
{ NID_certificate_policies, CERT_POLICY_OID, oidCertExtType,
|
||||
"certificatePolicies", "X509v3 Certificate Policies"},
|
||||
|
||||
/* oidCertAuthInfoType */
|
||||
{ AIA_OCSP_OID, AIA_OCSP_OID, oidCertAuthInfoType, "authorityInfoAccess",
|
||||
"Authority Information Access"},
|
||||
{ AIA_CA_ISSUER_OID, AIA_CA_ISSUER_OID, oidCertAuthInfoType,
|
||||
"caIssuers", "CA Issuers"},
|
||||
|
||||
/* oidCertPolicyType */
|
||||
{ NID_any_policy, CP_ANY_OID, oidCertPolicyType, "anyPolicy",
|
||||
"X509v3 Any Policy"},
|
||||
|
||||
/* oidCertAltNameType */
|
||||
{ NID_hw_name_oid, HW_NAME_OID, oidCertAltNameType, "Hardware name",""},
|
||||
|
||||
/* oidCertKeyUseType */
|
||||
{ NID_anyExtendedKeyUsage, EKU_ANY_OID, oidCertKeyUseType,
|
||||
"anyExtendedKeyUsage", "Any Extended Key Usage"},
|
||||
{ EKU_SERVER_AUTH_OID, EKU_SERVER_AUTH_OID, oidCertKeyUseType,
|
||||
"serverAuth", "TLS Web Server Authentication"},
|
||||
{ EKU_CLIENT_AUTH_OID, EKU_CLIENT_AUTH_OID, oidCertKeyUseType,
|
||||
"clientAuth", "TLS Web Client Authentication"},
|
||||
{ EKU_OCSP_SIGN_OID, EKU_OCSP_SIGN_OID, oidCertKeyUseType,
|
||||
"OCSPSigning", "OCSP Signing"},
|
||||
|
||||
/* oidCertNameType */
|
||||
{ NID_commonName, NID_commonName, oidCertNameType, "CN", "commonName"},
|
||||
{ NID_surname, NID_surname, oidCertNameType, "SN", "surname"},
|
||||
{ NID_serialNumber, NID_serialNumber, oidCertNameType, "serialNumber",
|
||||
"serialNumber"},
|
||||
{ NID_countryName, NID_countryName, oidCertNameType, "C", "countryName"},
|
||||
{ NID_localityName, NID_localityName, oidCertNameType, "L", "localityName"},
|
||||
{ NID_stateOrProvinceName, NID_stateOrProvinceName, oidCertNameType, "ST",
|
||||
"stateOrProvinceName"},
|
||||
{ NID_organizationName, NID_organizationName, oidCertNameType, "O",
|
||||
"organizationName"},
|
||||
{ NID_organizationalUnitName, NID_organizationalUnitName, oidCertNameType,
|
||||
"OU", "organizationalUnitName"},
|
||||
{ NID_emailAddress, NID_emailAddress, oidCertNameType, "emailAddress",
|
||||
"emailAddress"},
|
||||
{ NID_domainComponent, NID_domainComponent, oidCertNameType, "DC",
|
||||
"domainComponent"},
|
||||
{ NID_businessCategory, NID_businessCategory, oidCertNameType, "businessCategory",
|
||||
"businessCategory"},
|
||||
{ NID_jurisdictionCountryName, NID_jurisdictionCountryName, oidCertNameType, "jurisdictionC",
|
||||
"jurisdictionCountryName"},
|
||||
{ NID_jurisdictionStateOrProvinceName, NID_jurisdictionStateOrProvinceName,
|
||||
oidCertNameType, "jurisdictionST", "jurisdictionStateOrProvinceName"},
|
||||
#endif
|
||||
#ifdef OPENSSL_EXTRA /* OPENSSL_EXTRA_X509_SMALL only needs the above */
|
||||
/* oidHashType */
|
||||
#ifdef WOLFSSL_MD2
|
||||
{ NID_md2, MD2h, oidHashType, "MD2", "md2"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_MD5
|
||||
{ NID_md5, MD5h, oidHashType, "MD5", "md5"},
|
||||
#endif
|
||||
#ifndef NO_SHA
|
||||
{ NID_sha1, SHAh, oidHashType, "SHA1", "sha1"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ NID_sha224, SHA224h, oidHashType, "SHA224", "sha224"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ NID_sha256, SHA256h, oidHashType, "SHA256", "sha256"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ NID_sha384, SHA384h, oidHashType, "SHA384", "sha384"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ NID_sha512, SHA512h, oidHashType, "SHA512", "sha512"},
|
||||
#endif
|
||||
|
||||
/* oidSigType */
|
||||
#ifndef NO_DSA
|
||||
#ifndef NO_SHA
|
||||
{ CTC_SHAwDSA, CTC_SHAwDSA, oidSigType, "DSA-SHA1", "dsaWithSHA1"},
|
||||
#endif
|
||||
#endif /* NO_DSA */
|
||||
#ifndef NO_RSA
|
||||
#ifdef WOLFSSL_MD2
|
||||
{ CTC_MD2wRSA, CTC_MD2wRSA, oidSigType, "RSA-MD2",
|
||||
"md2WithRSAEncryption"},
|
||||
#endif
|
||||
#ifndef NO_MD5
|
||||
{ CTC_MD5wRSA, CTC_MD5wRSA, oidSigType, "RSA-MD5",
|
||||
"md5WithRSAEncryption"},
|
||||
#endif
|
||||
#ifndef NO_SHA
|
||||
{ CTC_SHAwRSA, CTC_SHAwRSA, oidSigType, "RSA-SHA1",
|
||||
"sha1WithRSAEncryption"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ CTC_SHA224wRSA, CTC_SHA224wRSA, oidSigType, "RSA-SHA224",
|
||||
"sha224WithRSAEncryption"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ CTC_SHA256wRSA, CTC_SHA256wRSA, oidSigType, "RSA-SHA256",
|
||||
"sha256WithRSAEncryption"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ CTC_SHA384wRSA, CTC_SHA384wRSA, oidSigType, "RSA-SHA384",
|
||||
"sha384WithRSAEncryption"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ CTC_SHA512wRSA, CTC_SHA512wRSA, oidSigType, "RSA-SHA512",
|
||||
"sha512WithRSAEncryption"},
|
||||
#endif
|
||||
#endif /* NO_RSA */
|
||||
#ifdef HAVE_ECC
|
||||
#ifndef NO_SHA
|
||||
{ CTC_SHAwECDSA, CTC_SHAwECDSA, oidSigType, "ecdsa-with-SHA1", "shaWithECDSA"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ CTC_SHA224wECDSA, CTC_SHA224wECDSA, oidSigType, "ecdsa-with-SHA224","sha224WithECDSA"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ CTC_SHA256wECDSA, CTC_SHA256wECDSA, oidSigType, "ecdsa-with-SHA256","sha256WithECDSA"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ CTC_SHA384wECDSA, CTC_SHA384wECDSA, oidSigType, "ecdsa-with-SHA384","sha384WithECDSA"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ CTC_SHA512wECDSA, CTC_SHA512wECDSA, oidSigType, "ecdsa-with-SHA512","sha512WithECDSA"},
|
||||
#endif
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
/* oidKeyType */
|
||||
#ifndef NO_DSA
|
||||
{ DSAk, DSAk, oidKeyType, "DSA", "dsaEncryption"},
|
||||
#endif /* NO_DSA */
|
||||
#ifndef NO_RSA
|
||||
{ RSAk, RSAk, oidKeyType, "RSA", "rsaEncryption"},
|
||||
#endif /* NO_RSA */
|
||||
#ifdef HAVE_NTRU
|
||||
{ NTRUk, NTRUk, oidKeyType, "NTRU", "ntruEncryption"},
|
||||
#endif /* HAVE_NTRU */
|
||||
#ifdef HAVE_ECC
|
||||
{ ECDSAk, ECDSAk, oidKeyType, "ECDSA", "ecdsaEncryption"},
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
/* oidCurveType */
|
||||
#ifdef HAVE_ECC
|
||||
{ NID_X9_62_prime192v1, ECC_SECP192R1_OID, oidCurveType, "prime192v1", "prime192v1"},
|
||||
{ NID_X9_62_prime192v2, ECC_PRIME192V2_OID, oidCurveType, "prime192v2", "prime192v2"},
|
||||
{ NID_X9_62_prime192v3, ECC_PRIME192V3_OID, oidCurveType, "prime192v3", "prime192v3"},
|
||||
|
||||
{ NID_X9_62_prime239v1, ECC_PRIME239V1_OID, oidCurveType, "prime239v1", "prime239v1"},
|
||||
{ NID_X9_62_prime239v2, ECC_PRIME239V2_OID, oidCurveType, "prime239v2", "prime239v2"},
|
||||
{ NID_X9_62_prime239v3, ECC_PRIME239V3_OID, oidCurveType, "prime239v3", "prime239v3"},
|
||||
|
||||
{ NID_X9_62_prime256v1, ECC_SECP256R1_OID, oidCurveType, "prime256v1", "prime256v1"},
|
||||
|
||||
{ NID_secp112r1, ECC_SECP112R1_OID, oidCurveType, "secp112r1", "secp112r1"},
|
||||
{ NID_secp112r2, ECC_SECP112R2_OID, oidCurveType, "secp112r2", "secp112r2"},
|
||||
|
||||
{ NID_secp128r1, ECC_SECP128R1_OID, oidCurveType, "secp128r1", "secp128r1"},
|
||||
{ NID_secp128r2, ECC_SECP128R2_OID, oidCurveType, "secp128r2", "secp128r2"},
|
||||
|
||||
{ NID_secp160r1, ECC_SECP160R1_OID, oidCurveType, "secp160r1", "secp160r1"},
|
||||
{ NID_secp160r2, ECC_SECP160R2_OID, oidCurveType, "secp160r2", "secp160r2"},
|
||||
|
||||
{ NID_secp224r1, ECC_SECP224R1_OID, oidCurveType, "secp224r1", "secp224r1"},
|
||||
{ NID_secp384r1, ECC_SECP384R1_OID, oidCurveType, "secp384r1", "secp384r1"},
|
||||
{ NID_secp521r1, ECC_SECP521R1_OID, oidCurveType, "secp521r1", "secp521r1"},
|
||||
|
||||
{ NID_secp160k1, ECC_SECP160K1_OID, oidCurveType, "secp160k1", "secp160k1"},
|
||||
{ NID_secp192k1, ECC_SECP192K1_OID, oidCurveType, "secp192k1", "secp192k1"},
|
||||
{ NID_secp224k1, ECC_SECP224K1_OID, oidCurveType, "secp224k1", "secp224k1"},
|
||||
{ NID_secp256k1, ECC_SECP256K1_OID, oidCurveType, "secp256k1", "secp256k1"},
|
||||
|
||||
{ NID_brainpoolP160r1, ECC_BRAINPOOLP160R1_OID, oidCurveType, "brainpoolP160r1", "brainpoolP160r1"},
|
||||
{ NID_brainpoolP192r1, ECC_BRAINPOOLP192R1_OID, oidCurveType, "brainpoolP192r1", "brainpoolP192r1"},
|
||||
{ NID_brainpoolP224r1, ECC_BRAINPOOLP224R1_OID, oidCurveType, "brainpoolP224r1", "brainpoolP224r1"},
|
||||
{ NID_brainpoolP256r1, ECC_BRAINPOOLP256R1_OID, oidCurveType, "brainpoolP256r1", "brainpoolP256r1"},
|
||||
{ NID_brainpoolP320r1, ECC_BRAINPOOLP320R1_OID, oidCurveType, "brainpoolP320r1", "brainpoolP320r1"},
|
||||
{ NID_brainpoolP384r1, ECC_BRAINPOOLP384R1_OID, oidCurveType, "brainpoolP384r1", "brainpoolP384r1"},
|
||||
{ NID_brainpoolP512r1, ECC_BRAINPOOLP512R1_OID, oidCurveType, "brainpoolP512r1", "brainpoolP512r1"},
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
/* oidBlkType */
|
||||
#ifdef WOLFSSL_AES_128
|
||||
{ AES128CBCb, AES128CBCb, oidBlkType, "AES-128-CBC", "aes-128-cbc"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_192
|
||||
{ AES192CBCb, AES192CBCb, oidBlkType, "AES-192-CBC", "aes-192-cbc"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_256
|
||||
{ AES256CBCb, AES256CBCb, oidBlkType, "AES-256-CBC", "aes-256-cbc"},
|
||||
#endif
|
||||
#ifndef NO_DES3
|
||||
{ NID_des, DESb, oidBlkType, "DES-CBC", "des-cbc"},
|
||||
{ NID_des3, DES3b, oidBlkType, "DES-EDE3-CBC", "des-ede3-cbc"},
|
||||
#endif /* !NO_DES3 */
|
||||
|
||||
/* oidOcspType */
|
||||
#ifdef HAVE_OCSP
|
||||
{ NID_id_pkix_OCSP_basic, OCSP_BASIC_OID, oidOcspType, "basicOCSPResponse",
|
||||
"Basic OCSP Response"},
|
||||
{ OCSP_NONCE_OID, OCSP_NONCE_OID, oidOcspType, "Nonce",
|
||||
"OCSP Nonce"},
|
||||
#endif /* HAVE_OCSP */
|
||||
|
||||
#ifndef NO_PWDBASED
|
||||
/* oidKdfType */
|
||||
{ PBKDF2_OID, PBKDF2_OID, oidKdfType, "PBKDFv2", "PBKDF2"},
|
||||
|
||||
/* oidPBEType */
|
||||
{ PBE_SHA1_RC4_128, PBE_SHA1_RC4_128, oidPBEType,
|
||||
"PBE-SHA1-RC4-128", "pbeWithSHA1And128BitRC4"},
|
||||
{ PBE_SHA1_DES, PBE_SHA1_DES, oidPBEType, "PBE-SHA1-DES",
|
||||
"pbeWithSHA1AndDES-CBC"},
|
||||
{ PBE_SHA1_DES3, PBE_SHA1_DES3, oidPBEType, "PBE-SHA1-3DES",
|
||||
"pbeWithSHA1And3-KeyTripleDES-CBC"},
|
||||
#endif
|
||||
|
||||
/* oidKeyWrapType */
|
||||
#ifdef WOLFSSL_AES_128
|
||||
{ AES128_WRAP, AES128_WRAP, oidKeyWrapType, "AES-128 wrap", "aes128-wrap"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_192
|
||||
{ AES192_WRAP, AES192_WRAP, oidKeyWrapType, "AES-192 wrap", "aes192-wrap"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_256
|
||||
{ AES256_WRAP, AES256_WRAP, oidKeyWrapType, "AES-256 wrap", "aes256-wrap"},
|
||||
#endif
|
||||
|
||||
#ifndef NO_PKCS7
|
||||
#ifndef NO_DH
|
||||
/* oidCmsKeyAgreeType */
|
||||
#ifndef NO_SHA
|
||||
{ dhSinglePass_stdDH_sha1kdf_scheme, dhSinglePass_stdDH_sha1kdf_scheme,
|
||||
oidCmsKeyAgreeType, "dhSinglePass-stdDH-sha1kdf-scheme", "dhSinglePass-stdDH-sha1kdf-scheme"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ dhSinglePass_stdDH_sha224kdf_scheme,
|
||||
dhSinglePass_stdDH_sha224kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha224kdf-scheme", "dhSinglePass-stdDH-sha224kdf-scheme"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ dhSinglePass_stdDH_sha256kdf_scheme,
|
||||
dhSinglePass_stdDH_sha256kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha256kdf-scheme", "dhSinglePass-stdDH-sha256kdf-scheme"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ dhSinglePass_stdDH_sha384kdf_scheme,
|
||||
dhSinglePass_stdDH_sha384kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha384kdf-scheme", "dhSinglePass-stdDH-sha384kdf-scheme"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ dhSinglePass_stdDH_sha512kdf_scheme,
|
||||
dhSinglePass_stdDH_sha512kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha512kdf-scheme", "dhSinglePass-stdDH-sha512kdf-scheme"},
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if defined(WOLFSSL_APACHE_HTTPD)
|
||||
/* "1.3.6.1.5.5.7.8.7" */
|
||||
{ NID_id_on_dnsSRV, NID_id_on_dnsSRV, oidCertNameType,
|
||||
WOLFSSL_SN_DNS_SRV, WOLFSSL_LN_DNS_SRV },
|
||||
|
||||
/* "1.3.6.1.4.1.311.20.2.3" */
|
||||
{ NID_ms_upn, WOLFSSL_MS_UPN_SUM, oidCertExtType, WOLFSSL_SN_MS_UPN,
|
||||
WOLFSSL_LN_MS_UPN },
|
||||
|
||||
/* "1.3.6.1.5.5.7.1.24" */
|
||||
{ NID_tlsfeature, WOLFSSL_TLS_FEATURE_SUM, oidTlsExtType,
|
||||
WOLFSSL_SN_TLS_FEATURE, WOLFSSL_LN_TLS_FEATURE },
|
||||
#endif
|
||||
#endif /* OPENSSL_EXTRA */
|
||||
};
|
||||
|
||||
#define WOLFSSL_OBJECT_INFO_SZ \
|
||||
(sizeof(wolfssl_object_info) / sizeof(*wolfssl_object_info))
|
||||
const size_t wolfssl_object_info_sz = WOLFSSL_OBJECT_INFO_SZ;
|
||||
#endif
|
||||
#if defined(OPENSSL_EXTRA) && \
|
||||
!defined(NO_RSA) && !defined(HAVE_USER_RSA) && !defined(HAVE_FAST_RSA)
|
||||
WC_RNG* WOLFSSL_RSA_GetRNG(WOLFSSL_RSA *rsa, WC_RNG **tmpRNG, int *initTmpRng)
|
||||
@@ -36878,11 +37179,12 @@ int wolfSSL_EC_POINT_is_at_infinity(const WOLFSSL_EC_GROUP *group,
|
||||
|
||||
size_t wolfSSL_EC_get_builtin_curves(WOLFSSL_EC_BUILTIN_CURVE *r, size_t nitems)
|
||||
{
|
||||
size_t ecc_sets_count;
|
||||
size_t i, min_nitems;
|
||||
|
||||
for (i = 0; ecc_sets[i].size != 0; i++);
|
||||
#ifdef HAVE_SELFTEST
|
||||
size_t ecc_sets_count;
|
||||
for (i = 0; ecc_sets[i].size != 0 && ecc_sets[i].name != NULL; i++);
|
||||
ecc_sets_count = i;
|
||||
#endif
|
||||
|
||||
if (r == NULL || nitems == 0)
|
||||
return ecc_sets_count;
|
||||
@@ -36891,7 +37193,7 @@ size_t wolfSSL_EC_get_builtin_curves(WOLFSSL_EC_BUILTIN_CURVE *r, size_t nitems)
|
||||
|
||||
for (i = 0; i < min_nitems; i++) {
|
||||
r[i].nid = EccEnumToNID(ecc_sets[i].id);
|
||||
r[i].comment = ecc_sets[i].name;
|
||||
r[i].comment = wolfSSL_OBJ_nid2sn(r[i].nid);
|
||||
}
|
||||
|
||||
return ecc_sets_count;
|
||||
@@ -39922,7 +40224,6 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
|
||||
void wolfSSL_cert_service(void) {}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef OPENSSL_EXTRA
|
||||
#ifndef NO_CERTS
|
||||
void wolfSSL_X509_NAME_free(WOLFSSL_X509_NAME *name)
|
||||
@@ -41857,303 +42158,6 @@ err:
|
||||
return SSL_SUCCESS;
|
||||
}
|
||||
|
||||
typedef struct WOLFSSL_ObjectInfo {
|
||||
int nid;
|
||||
int id;
|
||||
word32 type;
|
||||
const char* sName;
|
||||
const char* lName;
|
||||
} WOLFSSL_ObjectInfo;
|
||||
|
||||
static WOLFSSL_ObjectInfo wolfssl_object_info[] = {
|
||||
/* oidHashType */
|
||||
#ifdef WOLFSSL_MD2
|
||||
{ NID_md2, MD2h, oidHashType, "MD2", "md2"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_MD5
|
||||
{ NID_md5, MD5h, oidHashType, "MD5", "md5"},
|
||||
#endif
|
||||
#ifndef NO_SHA
|
||||
{ NID_sha1, SHAh, oidHashType, "SHA1", "sha1"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ NID_sha224, SHA224h, oidHashType, "SHA224", "sha224"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ NID_sha256, SHA256h, oidHashType, "SHA256", "sha256"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ NID_sha384, SHA384h, oidHashType, "SHA384", "sha384"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ NID_sha512, SHA512h, oidHashType, "SHA512", "sha512"},
|
||||
#endif
|
||||
|
||||
/* oidSigType */
|
||||
#ifndef NO_DSA
|
||||
#ifndef NO_SHA
|
||||
{ CTC_SHAwDSA, CTC_SHAwDSA, oidSigType, "DSA-SHA1", "dsaWithSHA1"},
|
||||
#endif
|
||||
#endif /* NO_DSA */
|
||||
#ifndef NO_RSA
|
||||
#ifdef WOLFSSL_MD2
|
||||
{ CTC_MD2wRSA, CTC_MD2wRSA, oidSigType, "RSA-MD2",
|
||||
"md2WithRSAEncryption"},
|
||||
#endif
|
||||
#ifndef NO_MD5
|
||||
{ CTC_MD5wRSA, CTC_MD5wRSA, oidSigType, "RSA-MD5",
|
||||
"md5WithRSAEncryption"},
|
||||
#endif
|
||||
#ifndef NO_SHA
|
||||
{ CTC_SHAwRSA, CTC_SHAwRSA, oidSigType, "RSA-SHA1",
|
||||
"sha1WithRSAEncryption"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ CTC_SHA224wRSA, CTC_SHA224wRSA, oidSigType, "RSA-SHA224",
|
||||
"sha224WithRSAEncryption"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ CTC_SHA256wRSA, CTC_SHA256wRSA, oidSigType, "RSA-SHA256",
|
||||
"sha256WithRSAEncryption"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ CTC_SHA384wRSA, CTC_SHA384wRSA, oidSigType, "RSA-SHA384",
|
||||
"sha384WithRSAEncryption"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ CTC_SHA512wRSA, CTC_SHA512wRSA, oidSigType, "RSA-SHA512",
|
||||
"sha512WithRSAEncryption"},
|
||||
#endif
|
||||
#endif /* NO_RSA */
|
||||
#ifdef HAVE_ECC
|
||||
#ifndef NO_SHA
|
||||
{ CTC_SHAwECDSA, CTC_SHAwECDSA, oidSigType, "ecdsa-with-SHA1", "shaWithECDSA"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ CTC_SHA224wECDSA, CTC_SHA224wECDSA, oidSigType, "ecdsa-with-SHA224","sha224WithECDSA"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ CTC_SHA256wECDSA, CTC_SHA256wECDSA, oidSigType, "ecdsa-with-SHA256","sha256WithECDSA"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ CTC_SHA384wECDSA, CTC_SHA384wECDSA, oidSigType, "ecdsa-with-SHA384","sha384WithECDSA"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ CTC_SHA512wECDSA, CTC_SHA512wECDSA, oidSigType, "ecdsa-with-SHA512","sha512WithECDSA"},
|
||||
#endif
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
/* oidKeyType */
|
||||
#ifndef NO_DSA
|
||||
{ DSAk, DSAk, oidKeyType, "DSA", "dsaEncryption"},
|
||||
#endif /* NO_DSA */
|
||||
#ifndef NO_RSA
|
||||
{ RSAk, RSAk, oidKeyType, "RSA", "rsaEncryption"},
|
||||
#endif /* NO_RSA */
|
||||
#ifdef HAVE_NTRU
|
||||
{ NTRUk, NTRUk, oidKeyType, "NTRU", "ntruEncryption"},
|
||||
#endif /* HAVE_NTRU */
|
||||
#ifdef HAVE_ECC
|
||||
{ ECDSAk, ECDSAk, oidKeyType, "ECDSA", "ecdsaEncryption"},
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
/* oidCurveType */
|
||||
#ifdef HAVE_ECC
|
||||
{ NID_X9_62_prime192v1, ECC_SECP192R1_OID, oidCurveType, "prime192v1", ""},
|
||||
{ NID_X9_62_prime192v2, ECC_PRIME192V2_OID, oidCurveType, "prime192v2", ""},
|
||||
{ NID_X9_62_prime192v3, ECC_PRIME192V3_OID, oidCurveType, "prime192v3", ""},
|
||||
|
||||
{ NID_X9_62_prime239v1, ECC_PRIME239V1_OID, oidCurveType, "prime239v1", ""},
|
||||
{ NID_X9_62_prime239v2, ECC_PRIME239V2_OID, oidCurveType, "prime239v2", ""},
|
||||
{ NID_X9_62_prime239v3, ECC_PRIME239V3_OID, oidCurveType, "prime239v3", ""},
|
||||
|
||||
{ NID_X9_62_prime256v1, ECC_SECP256R1_OID, oidCurveType, "prime256v1", ""},
|
||||
|
||||
{ NID_secp112r1, ECC_SECP112R1_OID, oidCurveType, "secp112r1", ""},
|
||||
{ NID_secp112r2, ECC_SECP112R2_OID, oidCurveType, "secp112r2", ""},
|
||||
|
||||
{ NID_secp128r1, ECC_SECP128R1_OID, oidCurveType, "secp128r1", ""},
|
||||
{ NID_secp128r2, ECC_SECP128R2_OID, oidCurveType, "secp128r2", ""},
|
||||
|
||||
{ NID_secp160r1, ECC_SECP160R1_OID, oidCurveType, "secp160r1", ""},
|
||||
{ NID_secp160r2, ECC_SECP160R2_OID, oidCurveType, "secp160r2", ""},
|
||||
|
||||
{ NID_secp224r1, ECC_SECP224R1_OID, oidCurveType, "secp224r1", ""},
|
||||
{ NID_secp384r1, ECC_SECP384R1_OID, oidCurveType, "secp384r1", ""},
|
||||
{ NID_secp521r1, ECC_SECP521R1_OID, oidCurveType, "secp521r1", ""},
|
||||
|
||||
{ NID_secp160k1, ECC_SECP160K1_OID, oidCurveType, "secp160k1", ""},
|
||||
{ NID_secp192k1, ECC_SECP192K1_OID, oidCurveType, "secp192k1", ""},
|
||||
{ NID_secp224k1, ECC_SECP224K1_OID, oidCurveType, "secp224k1", ""},
|
||||
{ NID_secp256k1, ECC_SECP256K1_OID, oidCurveType, "secp256k1", ""},
|
||||
|
||||
{ NID_brainpoolP160r1, ECC_BRAINPOOLP160R1_OID, oidCurveType, "brainpoolP160r1", ""},
|
||||
{ NID_brainpoolP192r1, ECC_BRAINPOOLP192R1_OID, oidCurveType, "brainpoolP192r1", ""},
|
||||
{ NID_brainpoolP224r1, ECC_BRAINPOOLP224R1_OID, oidCurveType, "brainpoolP224r1", ""},
|
||||
{ NID_brainpoolP256r1, ECC_BRAINPOOLP256R1_OID, oidCurveType, "brainpoolP256r1", ""},
|
||||
{ NID_brainpoolP320r1, ECC_BRAINPOOLP320R1_OID, oidCurveType, "brainpoolP320r1", ""},
|
||||
{ NID_brainpoolP384r1, ECC_BRAINPOOLP384R1_OID, oidCurveType, "brainpoolP384r1", ""},
|
||||
{ NID_brainpoolP512r1, ECC_BRAINPOOLP512R1_OID, oidCurveType, "brainpoolP512r1", ""},
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
/* oidBlkType */
|
||||
#ifdef WOLFSSL_AES_128
|
||||
{ AES128CBCb, AES128CBCb, oidBlkType, "AES-128-CBC", "aes-128-cbc"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_192
|
||||
{ AES192CBCb, AES192CBCb, oidBlkType, "AES-192-CBC", "aes-192-cbc"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_256
|
||||
{ AES256CBCb, AES256CBCb, oidBlkType, "AES-256-CBC", "aes-256-cbc"},
|
||||
#endif
|
||||
#ifndef NO_DES3
|
||||
{ NID_des, DESb, oidBlkType, "DES-CBC", "des-cbc"},
|
||||
{ NID_des3, DES3b, oidBlkType, "DES-EDE3-CBC", "des-ede3-cbc"},
|
||||
#endif /* !NO_DES3 */
|
||||
|
||||
/* oidOcspType */
|
||||
#ifdef HAVE_OCSP
|
||||
{ NID_id_pkix_OCSP_basic, OCSP_BASIC_OID, oidOcspType, "basicOCSPResponse",
|
||||
"Basic OCSP Response"},
|
||||
{ OCSP_NONCE_OID, OCSP_NONCE_OID, oidOcspType, "Nonce",
|
||||
"OCSP Nonce"},
|
||||
#endif /* HAVE_OCSP */
|
||||
|
||||
#ifndef NO_CERTS
|
||||
/* oidCertExtType */
|
||||
{ NID_basic_constraints, BASIC_CA_OID, oidCertExtType, "basicConstraints",
|
||||
"X509v3 Basic Constraints"},
|
||||
{ NID_subject_alt_name, ALT_NAMES_OID, oidCertExtType, "subjectAltName",
|
||||
"X509v3 Subject Alternative Name"},
|
||||
{ CRL_DIST_OID, CRL_DIST_OID, oidCertExtType, "crlDistributionPoints",
|
||||
"X509v3 CRL Distribution Points"},
|
||||
{ NID_info_access, AUTH_INFO_OID, oidCertExtType, "authorityInfoAccess",
|
||||
"Authority Information Access"},
|
||||
{ NID_authority_key_identifier, AUTH_KEY_OID, oidCertExtType,
|
||||
"authorityKeyIdentifier", "X509v3 Authority Key Identifier"},
|
||||
{ NID_subject_key_identifier, SUBJ_KEY_OID, oidCertExtType,
|
||||
"subjectKeyIdentifier", "X509v3 Subject Key Identifier"},
|
||||
{ NID_key_usage, KEY_USAGE_OID, oidCertExtType, "keyUsage",
|
||||
"X509v3 Key Usage"},
|
||||
{ NID_inhibit_any_policy, INHIBIT_ANY_OID, oidCertExtType,
|
||||
"inhibitAnyPolicy", "X509v3 Inhibit Any Policy"},
|
||||
{ NID_ext_key_usage, KEY_USAGE_OID, oidCertExtType,
|
||||
"extendedKeyUsage", "X509v3 Extended Key Usage"},
|
||||
{ NID_name_constraints, NAME_CONS_OID, oidCertExtType,
|
||||
"nameConstraints", "X509v3 Name Constraints"},
|
||||
{ NID_certificate_policies, CERT_POLICY_OID, oidCertExtType,
|
||||
"certificatePolicies", "X509v3 Certificate Policies"},
|
||||
|
||||
/* oidCertAuthInfoType */
|
||||
{ AIA_OCSP_OID, AIA_OCSP_OID, oidCertAuthInfoType, "authorityInfoAccess",
|
||||
"Authority Information Access"},
|
||||
{ AIA_CA_ISSUER_OID, AIA_CA_ISSUER_OID, oidCertAuthInfoType,
|
||||
"caIssuers", "CA Issuers"},
|
||||
|
||||
/* oidCertPolicyType */
|
||||
{ NID_any_policy, CP_ANY_OID, oidCertPolicyType, "anyPolicy",
|
||||
"X509v3 Any Policy"},
|
||||
|
||||
/* oidCertAltNameType */
|
||||
{ NID_hw_name_oid, HW_NAME_OID, oidCertAltNameType, "Hardware name",""},
|
||||
|
||||
/* oidCertKeyUseType */
|
||||
{ NID_anyExtendedKeyUsage, EKU_ANY_OID, oidCertKeyUseType,
|
||||
"anyExtendedKeyUsage", "Any Extended Key Usage"},
|
||||
{ EKU_SERVER_AUTH_OID, EKU_SERVER_AUTH_OID, oidCertKeyUseType,
|
||||
"serverAuth", "TLS Web Server Authentication"},
|
||||
{ EKU_CLIENT_AUTH_OID, EKU_CLIENT_AUTH_OID, oidCertKeyUseType,
|
||||
"clientAuth", "TLS Web Client Authentication"},
|
||||
{ EKU_OCSP_SIGN_OID, EKU_OCSP_SIGN_OID, oidCertKeyUseType,
|
||||
"OCSPSigning", "OCSP Signing"},
|
||||
|
||||
/* oidCertNameType */
|
||||
{ NID_commonName, NID_commonName, oidCertNameType, "CN", "commonName"},
|
||||
{ NID_surname, NID_surname, oidCertNameType, "SN", "surname"},
|
||||
{ NID_serialNumber, NID_serialNumber, oidCertNameType, "serialNumber",
|
||||
"serialNumber"},
|
||||
{ NID_countryName, NID_countryName, oidCertNameType, "C", "countryName"},
|
||||
{ NID_localityName, NID_localityName, oidCertNameType, "L", "localityName"},
|
||||
{ NID_stateOrProvinceName, NID_stateOrProvinceName, oidCertNameType, "ST",
|
||||
"stateOrProvinceName"},
|
||||
{ NID_organizationName, NID_organizationName, oidCertNameType, "O",
|
||||
"organizationName"},
|
||||
{ NID_organizationalUnitName, NID_organizationalUnitName, oidCertNameType,
|
||||
"OU", "organizationUnitName"},
|
||||
{ NID_emailAddress, NID_emailAddress, oidCertNameType, "emailAddress",
|
||||
"emailAddress"},
|
||||
#endif
|
||||
#ifndef NO_PWDBASED
|
||||
/* oidKdfType */
|
||||
{ PBKDF2_OID, PBKDF2_OID, oidKdfType, "PBKDFv2", "PBKDF2"},
|
||||
|
||||
/* oidPBEType */
|
||||
{ PBE_SHA1_RC4_128, PBE_SHA1_RC4_128, oidPBEType,
|
||||
"PBE-SHA1-RC4-128", "pbeWithSHA1And128BitRC4"},
|
||||
{ PBE_SHA1_DES, PBE_SHA1_DES, oidPBEType, "PBE-SHA1-DES",
|
||||
"pbeWithSHA1AndDES-CBC"},
|
||||
{ PBE_SHA1_DES3, PBE_SHA1_DES3, oidPBEType, "PBE-SHA1-3DES",
|
||||
"pbeWithSHA1And3-KeyTripleDES-CBC"},
|
||||
#endif
|
||||
|
||||
/* oidKeyWrapType */
|
||||
#ifdef WOLFSSL_AES_128
|
||||
{ AES128_WRAP, AES128_WRAP, oidKeyWrapType, "AES-128 wrap", "aes128-wrap"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_192
|
||||
{ AES192_WRAP, AES192_WRAP, oidKeyWrapType, "AES-192 wrap", "aes192-wrap"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_AES_256
|
||||
{ AES256_WRAP, AES256_WRAP, oidKeyWrapType, "AES-256 wrap", "aes256-wrap"},
|
||||
#endif
|
||||
|
||||
#ifndef NO_PKCS7
|
||||
#ifndef NO_DH
|
||||
/* oidCmsKeyAgreeType */
|
||||
#ifndef NO_SHA
|
||||
{ dhSinglePass_stdDH_sha1kdf_scheme, dhSinglePass_stdDH_sha1kdf_scheme,
|
||||
oidCmsKeyAgreeType, "dhSinglePass-stdDH-sha1kdf-scheme", "dhSinglePass-stdDH-sha1kdf-scheme"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA224
|
||||
{ dhSinglePass_stdDH_sha224kdf_scheme,
|
||||
dhSinglePass_stdDH_sha224kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha224kdf-scheme", "dhSinglePass-stdDH-sha224kdf-scheme"},
|
||||
#endif
|
||||
#ifndef NO_SHA256
|
||||
{ dhSinglePass_stdDH_sha256kdf_scheme,
|
||||
dhSinglePass_stdDH_sha256kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha256kdf-scheme", "dhSinglePass-stdDH-sha256kdf-scheme"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA384
|
||||
{ dhSinglePass_stdDH_sha384kdf_scheme,
|
||||
dhSinglePass_stdDH_sha384kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha384kdf-scheme", "dhSinglePass-stdDH-sha384kdf-scheme"},
|
||||
#endif
|
||||
#ifdef WOLFSSL_SHA512
|
||||
{ dhSinglePass_stdDH_sha512kdf_scheme,
|
||||
dhSinglePass_stdDH_sha512kdf_scheme, oidCmsKeyAgreeType,
|
||||
"dhSinglePass-stdDH-sha512kdf-scheme", "dhSinglePass-stdDH-sha512kdf-scheme"},
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if defined(WOLFSSL_APACHE_HTTPD)
|
||||
/* "1.3.6.1.5.5.7.8.7" */
|
||||
{ NID_id_on_dnsSRV, NID_id_on_dnsSRV, oidCertNameType,
|
||||
WOLFSSL_SN_DNS_SRV, WOLFSSL_LN_DNS_SRV },
|
||||
|
||||
/* "1.3.6.1.4.1.311.20.2.3" */
|
||||
{ NID_ms_upn, WOLFSSL_MS_UPN_SUM, oidCertExtType, WOLFSSL_SN_MS_UPN,
|
||||
WOLFSSL_LN_MS_UPN },
|
||||
|
||||
/* "1.3.6.1.5.5.7.1.24" */
|
||||
{ NID_tlsfeature, WOLFSSL_TLS_FEATURE_SUM, oidTlsExtType,
|
||||
WOLFSSL_SN_TLS_FEATURE, WOLFSSL_LN_TLS_FEATURE },
|
||||
#endif
|
||||
};
|
||||
|
||||
#define WOLFSSL_OBJECT_INFO_SZ \
|
||||
(sizeof(wolfssl_object_info) / sizeof(*wolfssl_object_info))
|
||||
|
||||
int wolfSSL_X509_NAME_add_entry_by_txt(WOLFSSL_X509_NAME *name,
|
||||
const char *field, int type,
|
||||
const unsigned char *bytes, int len,
|
||||
@@ -42765,71 +42769,20 @@ err:
|
||||
* or NULL if short name can't be found.
|
||||
*/
|
||||
const char * wolfSSL_OBJ_nid2sn(int n) {
|
||||
|
||||
const WOLFSSL_ObjectInfo *obj_info = wolfssl_object_info;
|
||||
size_t i;
|
||||
WOLFSSL_ENTER("wolfSSL_OBJ_nid2sn");
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case NID_commonName :
|
||||
return "CN";
|
||||
case NID_countryName :
|
||||
return "C";
|
||||
case NID_localityName :
|
||||
return "L";
|
||||
case NID_stateOrProvinceName :
|
||||
return "ST";
|
||||
case NID_organizationName :
|
||||
return "O";
|
||||
case NID_organizationalUnitName :
|
||||
return "OU";
|
||||
case NID_emailAddress :
|
||||
return "emailAddress";
|
||||
case NID_basic_constraints :
|
||||
return "basicConstraints";
|
||||
case NID_subject_key_identifier :
|
||||
return "subjectKeyIdentifier";
|
||||
case NID_authority_key_identifier :
|
||||
return "authorityKeyIdentifier";
|
||||
case NID_certificate_policies:
|
||||
return "certificatePolicies";
|
||||
case NID_key_usage :
|
||||
return "keyUsage";
|
||||
case NID_info_access :
|
||||
return "authorityInfoAccess";
|
||||
case NID_crl_distribution_points :
|
||||
return "cRLDistributionPoints";
|
||||
case EXT_KEY_USAGE_OID :
|
||||
return "extKeyUsage";
|
||||
case AIA_OCSP_OID:
|
||||
return "OCSP";
|
||||
case AIA_CA_ISSUER_OID:
|
||||
return "caIssuers";
|
||||
default :
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
{
|
||||
int eccEnum;
|
||||
int i;
|
||||
/* Convert OpenSSL NID to enum value in ecc_curve_id */
|
||||
if ((eccEnum = NIDToEccEnum(n)) != -1) {
|
||||
/* find sn based on NID and return name */
|
||||
for (i = 0; ecc_sets[i].size != 0; i++) {
|
||||
if (eccEnum == ecc_sets[i].id) {
|
||||
return ecc_sets[i].name;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < WOLFSSL_OBJECT_INFO_SZ; i++, obj_info++) {
|
||||
if (obj_info->nid == n) {
|
||||
return obj_info->sName;
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_ECC */
|
||||
WOLFSSL_MSG("SN not found");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||
int wolfSSL_OBJ_sn2nid(const char *sn) {
|
||||
|
||||
WOLFSSL_ENTER("wolfSSL_OBJ_sn2nid");
|
||||
if (sn == NULL)
|
||||
return NID_undef;
|
||||
@@ -42877,49 +42830,14 @@ err:
|
||||
* n : NID value of ASN1_OBJECT to search */
|
||||
const char* wolfSSL_OBJ_nid2ln(int n)
|
||||
{
|
||||
int i;
|
||||
const WOLFSSL_ObjectInfo *obj_info = wolfssl_object_info;
|
||||
size_t i;
|
||||
WOLFSSL_ENTER("wolfSSL_OBJ_nid2ln");
|
||||
|
||||
switch(n)
|
||||
{
|
||||
case NID_commonName :
|
||||
return WOLFSSL_LN_COMMON_NAME;
|
||||
case NID_countryName :
|
||||
return WOLFSSL_LN_COUNTRY_NAME;
|
||||
case NID_localityName :
|
||||
return WOLFSSL_LN_LOCALITY_NAME;
|
||||
case NID_stateOrProvinceName :
|
||||
return WOLFSSL_LN_STATE_NAME;
|
||||
case NID_organizationName :
|
||||
return WOLFSSL_LN_ORG_NAME;
|
||||
case NID_organizationalUnitName :
|
||||
return WOLFSSL_LN_ORGUNIT_NAME;
|
||||
case NID_emailAddress :
|
||||
return WOLFSSL_EMAIL_ADDR;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
{
|
||||
int eccEnum;
|
||||
/* Convert OpenSSL NID to enum value in ecc_curve_id */
|
||||
if ((eccEnum = NIDToEccEnum(n)) != -1) {
|
||||
/* find sn based on NID and return name */
|
||||
for (i = 0; i < ecc_sets[i].size; i++) {
|
||||
if (eccEnum == ecc_sets[i].id) {
|
||||
return ecc_sets[i].name;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < WOLFSSL_OBJECT_INFO_SZ; i++, obj_info++) {
|
||||
if (obj_info->nid == n) {
|
||||
return obj_info->lName;
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
for (i = 0; i < (int)WOLFSSL_OBJECT_INFO_SZ; i++) {
|
||||
if (wolfssl_object_info[i].nid == n)
|
||||
return wolfssl_object_info[i].lName;
|
||||
}
|
||||
|
||||
WOLFSSL_MSG("NID not found in table");
|
||||
return NULL;
|
||||
}
|
||||
@@ -42929,51 +42847,25 @@ err:
|
||||
*/
|
||||
int wolfSSL_OBJ_ln2nid(const char *ln)
|
||||
{
|
||||
static const struct {
|
||||
const char *ln;
|
||||
int nid;
|
||||
} ln2nid[] = {
|
||||
{WOLFSSL_LN_COMMON_NAME, NID_commonName},
|
||||
{WOLFSSL_LN_COUNTRY_NAME, NID_countryName},
|
||||
{WOLFSSL_LN_LOCALITY_NAME, NID_localityName},
|
||||
{WOLFSSL_LN_STATE_NAME, NID_stateOrProvinceName},
|
||||
{WOLFSSL_LN_ORG_NAME, NID_organizationName},
|
||||
{WOLFSSL_LN_ORGUNIT_NAME, NID_organizationalUnitName},
|
||||
{WOLFSSL_EMAIL_ADDR, NID_emailAddress},
|
||||
{NULL, -1}};
|
||||
|
||||
int i;
|
||||
const WOLFSSL_ObjectInfo *obj_info = wolfssl_object_info;
|
||||
size_t i, lnlen;
|
||||
WOLFSSL_ENTER("wolfSSL_OBJ_ln2nid");
|
||||
|
||||
if (ln == NULL) return BAD_FUNC_ARG;
|
||||
|
||||
/* Return certificate info ln */
|
||||
for(i=0; ln2nid[i].ln != NULL; i++) {
|
||||
if(XSTRNCMP(ln, ln2nid[i].ln, XSTRLEN(ln2nid[i].ln)) == 0) {
|
||||
return ln2nid[i].nid;
|
||||
if (ln && (lnlen = XSTRLEN(ln)) > 0) {
|
||||
/* Accept input like "/commonName=" */
|
||||
if (ln[0] == '/') {
|
||||
ln++;
|
||||
lnlen--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return ECC ln */
|
||||
#ifdef HAVE_ECC
|
||||
{
|
||||
int eccEnum;
|
||||
/* Nginx uses this OpenSSL string. */
|
||||
#ifdef WOLFSSL_NGINX
|
||||
if (XSTRNCMP(ln, "prime256v1", 10) == 0) ln = "SECP256R1";
|
||||
if (XSTRNCMP(ln, "secp384r1", 10) == 0) ln = "SECP384R1";
|
||||
#endif
|
||||
/* find based on name and return NID */
|
||||
for (i = 0; i < ecc_sets[i].size; i++) {
|
||||
if (XSTRNCMP(ln, ecc_sets[i].name, ECC_MAXNAME) == 0) {
|
||||
eccEnum = ecc_sets[i].id;
|
||||
/* Convert enum value in ecc_curve_id to OpenSSL NID */
|
||||
return EccEnumToNID(eccEnum);
|
||||
if (ln[lnlen-1] == '=') {
|
||||
lnlen--;
|
||||
}
|
||||
for (i = 0; i < WOLFSSL_OBJECT_INFO_SZ; i++, obj_info++) {
|
||||
if (lnlen == XSTRLEN(obj_info->lName) &&
|
||||
XSTRNCMP(ln, obj_info->lName, lnlen) == 0) {
|
||||
return obj_info->nid;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
return NID_undef;
|
||||
}
|
||||
|
||||
|
39
tests/api.c
39
tests/api.c
@@ -27953,18 +27953,39 @@ static void test_wolfSSL_EVP_PKEY_assign(void)
|
||||
|
||||
static void test_wolfSSL_OBJ_ln(void)
|
||||
{
|
||||
int i = 0, maxIdx = 7;
|
||||
const int nid_set[] = {NID_commonName,NID_countryName,NID_localityName,
|
||||
NID_stateOrProvinceName,NID_organizationName,
|
||||
NID_organizationalUnitName,NID_emailAddress};
|
||||
const char* ln_set[] = {WOLFSSL_LN_COMMON_NAME,WOLFSSL_LN_COUNTRY_NAME,
|
||||
WOLFSSL_LN_LOCALITY_NAME,WOLFSSL_LN_STATE_NAME,
|
||||
WOLFSSL_LN_ORG_NAME,WOLFSSL_LN_ORGUNIT_NAME,
|
||||
WOLFSSL_EMAIL_ADDR};
|
||||
const int nid_set[] = {
|
||||
NID_commonName,
|
||||
NID_serialNumber,
|
||||
NID_countryName,
|
||||
NID_localityName,
|
||||
NID_stateOrProvinceName,
|
||||
NID_organizationName,
|
||||
NID_organizationalUnitName,
|
||||
NID_domainComponent,
|
||||
NID_businessCategory,
|
||||
NID_jurisdictionCountryName,
|
||||
NID_jurisdictionStateOrProvinceName,
|
||||
NID_emailAddress
|
||||
};
|
||||
const char* ln_set[] = {
|
||||
"commonName",
|
||||
"serialNumber",
|
||||
"countryName",
|
||||
"localityName",
|
||||
"stateOrProvinceName",
|
||||
"organizationName",
|
||||
"organizationalUnitName",
|
||||
"domainComponent",
|
||||
"businessCategory",
|
||||
"jurisdictionCountryName",
|
||||
"jurisdictionStateOrProvinceName",
|
||||
"emailAddress",
|
||||
};
|
||||
int i = 0, maxIdx = sizeof(ln_set)/sizeof(char*);
|
||||
|
||||
printf(testingFmt, "wolfSSL_OBJ_ln");
|
||||
|
||||
AssertIntEQ(OBJ_ln2nid(NULL), BAD_FUNC_ARG);
|
||||
AssertIntEQ(OBJ_ln2nid(NULL), NID_undef);
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
{
|
||||
|
@@ -5436,45 +5436,25 @@ WOLFSSL_API int EccEnumToNID(int n)
|
||||
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||
int wc_OBJ_sn2nid(const char *sn)
|
||||
{
|
||||
const struct {
|
||||
const char *sn;
|
||||
int nid;
|
||||
} sn2nid[] = {
|
||||
{WOLFSSL_COMMON_NAME, NID_commonName},
|
||||
{WOLFSSL_COUNTRY_NAME, NID_countryName},
|
||||
{WOLFSSL_LOCALITY_NAME, NID_localityName},
|
||||
{WOLFSSL_STATE_NAME, NID_stateOrProvinceName},
|
||||
{WOLFSSL_ORG_NAME, NID_organizationName},
|
||||
{WOLFSSL_ORGUNIT_NAME, NID_organizationalUnitName},
|
||||
{WOLFSSL_EMAIL_ADDR, NID_emailAddress},
|
||||
{NULL, -1}};
|
||||
|
||||
int i;
|
||||
#ifdef HAVE_ECC
|
||||
int eccEnum;
|
||||
#endif
|
||||
WOLFSSL_ENTER("OBJ_sn2nid");
|
||||
for(i=0; sn2nid[i].sn != NULL; i++) {
|
||||
if(XSTRNCMP(sn, sn2nid[i].sn, XSTRLEN(sn2nid[i].sn)) == 0) {
|
||||
return sn2nid[i].nid;
|
||||
const WOLFSSL_ObjectInfo *obj_info = wolfssl_object_info;
|
||||
size_t i, snlen;
|
||||
WOLFSSL_ENTER("wolfSSL_OBJ_ln2nid");
|
||||
if (sn && (snlen = XSTRLEN(sn)) > 0) {
|
||||
/* Accept input like "/CN=" */
|
||||
if (sn[0] == '/') {
|
||||
sn++;
|
||||
snlen--;
|
||||
}
|
||||
if (sn[snlen-1] == '=') {
|
||||
snlen--;
|
||||
}
|
||||
for (i = 0; i < wolfssl_object_info_sz; i++, obj_info++) {
|
||||
if (snlen == XSTRLEN(obj_info->sName) &&
|
||||
XSTRNCMP(sn, obj_info->sName, snlen) == 0) {
|
||||
return obj_info->nid;
|
||||
}
|
||||
}
|
||||
}
|
||||
#ifdef HAVE_ECC
|
||||
/* Nginx uses this OpenSSL string. */
|
||||
if (XSTRNCMP(sn, "prime256v1", 10) == 0)
|
||||
sn = "SECP256R1";
|
||||
if (XSTRNCMP(sn, "secp384r1", 10) == 0)
|
||||
sn = "SECP384R1";
|
||||
/* find based on name and return NID */
|
||||
for (i = 0; ecc_sets[i].size != 0; i++) {
|
||||
if (XSTRNCMP(sn, ecc_sets[i].name, ECC_MAXNAME) == 0) {
|
||||
eccEnum = ecc_sets[i].id;
|
||||
/* Convert enum value in ecc_curve_id to OpenSSL NID */
|
||||
return EccEnumToNID(eccEnum);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return NID_undef;
|
||||
}
|
||||
#endif
|
||||
@@ -10109,10 +10089,11 @@ int wc_EncryptedInfoParse(EncryptedInfo* info, char** pBuffer, size_t bufSz)
|
||||
PEM_LINE_LEN));
|
||||
}
|
||||
if ((newline != NULL) && (newline > finish)) {
|
||||
info->ivSz = (word32)(newline - (finish + 1));
|
||||
if (info->ivSz >= IV_SZ)
|
||||
finish++;
|
||||
info->ivSz = (word32)(newline - finish);
|
||||
if (info->ivSz > IV_SZ)
|
||||
return BUFFER_E;
|
||||
if (XMEMCPY(info->iv, finish + 1, info->ivSz) == NULL)
|
||||
if (XMEMCPY(info->iv, finish, info->ivSz) == NULL)
|
||||
return BUFFER_E;
|
||||
info->set = 1;
|
||||
}
|
||||
|
@@ -1141,6 +1141,7 @@ const ecc_set_type ecc_sets[] = {
|
||||
}
|
||||
};
|
||||
#define ECC_SET_COUNT (sizeof(ecc_sets)/sizeof(ecc_set_type))
|
||||
const size_t ecc_sets_count = ECC_SET_COUNT - 1;
|
||||
|
||||
|
||||
#ifdef HAVE_OID_ENCODING
|
||||
|
@@ -134,6 +134,18 @@ enum DN_Tags {
|
||||
ASN_DOMAIN_COMPONENT = 0x19 /* DC */
|
||||
};
|
||||
|
||||
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
|
||||
typedef struct WOLFSSL_ObjectInfo {
|
||||
int nid;
|
||||
int id;
|
||||
word32 type;
|
||||
const char* sName;
|
||||
const char* lName;
|
||||
} WOLFSSL_ObjectInfo;
|
||||
extern const size_t wolfssl_object_info_sz;
|
||||
extern const WOLFSSL_ObjectInfo wolfssl_object_info[];
|
||||
#endif /* defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) */
|
||||
|
||||
/* DN Tag Strings */
|
||||
#define WOLFSSL_COMMON_NAME "/CN="
|
||||
#define WOLFSSL_LN_COMMON_NAME "/commonName="
|
||||
@@ -217,7 +229,10 @@ enum
|
||||
NID_stateOrProvinceName = 0x08, /* ST */
|
||||
NID_organizationName = 0x0a, /* O */
|
||||
NID_organizationalUnitName = 0x0b, /* OU */
|
||||
NID_domainComponent = 0x19, /* matches ASN_DOMAIN_COMPONENT in asn.h */
|
||||
NID_jurisdictionCountryName = 0xc,
|
||||
NID_jurisdictionStateOrProvinceName = 0xd,
|
||||
NID_businessCategory = ASN_BUS_CAT,
|
||||
NID_domainComponent = ASN_DOMAIN_COMPONENT,
|
||||
NID_emailAddress = 0x30, /* emailAddress */
|
||||
NID_id_on_dnsSRV = 82, /* 1.3.6.1.5.5.7.8.7 */
|
||||
NID_ms_upn = 265, /* 1.3.6.1.4.1.311.20.2.3 */
|
||||
|
@@ -422,6 +422,7 @@ WOLFSSL_ABI WOLFSSL_API void wc_ecc_key_free(ecc_key*);
|
||||
|
||||
/* ECC predefined curve sets */
|
||||
extern const ecc_set_type ecc_sets[];
|
||||
extern const size_t ecc_sets_count;
|
||||
|
||||
WOLFSSL_API
|
||||
const char* wc_ecc_get_name(int curve_id);
|
||||
|
Reference in New Issue
Block a user