23 #ifndef __PARSECERT_HEADER__ 24 #define __PARSECERT_HEADER__ 26 #ifdef __ENABLE_MOCANA_CV_CERT__ 27 #include "../crypto/cvcert.h" 51 #if (defined(__ENABLE_MOCANA_ECC__)) 54 #if (defined(__ENABLE_MOCANA_DSA__)) 66 typedef MSTATUS (*EnumCallbackFun)(
struct ASN1_ITEM* pItem, CStream cs,
void* userArg);
70 X509_decryptRSASignatureBuffer(MOC_RSA(hwAccelDescr hwAccelCtx)
71 struct RSAKey* pRSAKey,
72 const ubyte* pSignature, ubyte4 signatureLen,
73 ubyte hash[], sbyte4 *pHashLen,
74 ubyte4* rsaAlgoIdSubType);
76 #if (defined(__ENABLE_MOCANA_CRYPTO_INTERFACE__)) 78 X509_decryptRSASignatureBufferEx(MOC_RSA(hwAccelDescr hwAccelCtx)
79 struct RSAKey* pRSAKey,
80 const ubyte* pSignature, ubyte4 signatureLen,
81 ubyte hash[], sbyte4 *pHashLen,
82 ubyte4* rsaAlgoIdSubType, ubyte4 keyType);
86 X509_extractRSAKey(MOC_RSA(hwAccelDescr hwAccelCtx)
87 struct ASN1_ITEM* pSubjectKeyInfo, CStream s,
88 struct AsymmetricKey* pKey);
90 #if (defined(__ENABLE_MOCANA_DSA__)) 92 X509_verifyDSASignature(MOC_DSA(hwAccelDescr hwAccelCtx)
93 struct ASN1_ITEM* pSequenceSignature, CStream s,
94 struct DSAKey* pECCKey,
95 sbyte4 computedHashLen,
const ubyte computedHash[]);
97 X509_extractDSAKey(MOC_DSA(hwAccelDescr hwAccelCtx)
98 struct ASN1_ITEM* pSubjectKeyInfo, CStream s,
99 struct AsymmetricKey* pKey);
102 #if (defined(__ENABLE_MOCANA_ECC__)) 103 #if (defined(__ENABLE_MOCANA_CRYPTO_INTERFACE__)) 105 X509_verifyECDSASignatureEx( MOC_ECC(hwAccelDescr hwAccelCtx)
struct ASN1_ITEM* pSequenceSignature, CStream s,
106 struct ECCKey* pECCKey,
107 sbyte4 computedHashLen,
108 const ubyte computedHash[],
113 X509_verifyECDSASignature( MOC_ECC(hwAccelDescr hwAccelCtx)
struct ASN1_ITEM* pSequenceSignature, CStream s,
114 struct ECCKey* pECCKey,
115 sbyte4 computedHashLen,
116 const ubyte computedHash[]);
118 X509_extractECCKey( MOC_ECC(hwAccelDescr hwAccelCtx)
struct ASN1_ITEM* pSubjectKeyInfo, CStream s,
119 struct AsymmetricKey* pKey);
121 #if defined(__ENABLE_MOCANA_ECC_EDDSA_25519__) || defined(__ENABLE_MOCANA_ECC_EDDSA_448__) 123 X509_extractECCEdKey( MOC_ECC(hwAccelDescr hwAccelCtx)
struct ASN1_ITEM* pSubjectKeyInfo, CStream s,
124 struct AsymmetricKey* pKey);
127 #ifdef __ENABLE_MOCANA_QS__ 129 X509_extractHybridKey(
struct ASN1_ITEM* pSubjectKeyInfo, CStream s,
struct AsymmetricKey* pKey);
134 X509_setKeyFromSubjectPublicKeyInfo(MOC_ASYM(hwAccelDescr hwAccelCtx)
135 struct ASN1_ITEM* pCertificate, CStream s,
136 struct AsymmetricKey* pPubKey);
140 X509_compSubjectCommonName(
struct ASN1_ITEM* pCertificate, CStream s,
141 const sbyte* nameToMatch);
144 X509_compSubjectAltNames(
struct ASN1_ITEM* pCertificate, CStream s,
145 const sbyte* nameToMatch, ubyte4 tagMask);
148 X509_compSubjectAltNamesEx(
struct ASN1_ITEM* pCertificate, CStream s,
152 #if (defined(__ENABLE_MOCANA_MULTIPLE_COMMON_NAMES__)) 154 X509_compSubjectCommonNameEx(
struct ASN1_ITEM* pCertificate, CStream s,
159 X509_matchName(
struct ASN1_ITEM* pCertificate, CStream s,
160 const sbyte* nameToMatch);
163 X509_verifyValidityTime(
struct ASN1_ITEM* pCertificate, CStream s,
const TimeDate* td);
166 X509_computeBufferHash(MOC_HASH(hwAccelDescr hwAccelCtx) ubyte* buffer,
168 ubyte hash[], sbyte4* hashSize,
172 X509_getCertificateKeyUsage(
struct ASN1_ITEM* pCertificate, CStream s,
173 struct ASN1_ITEM** ppKeyUsage);
248 X509_canSignChain(
struct ASN1_ITEM* pCertificate, CStream s, sbyte4 chainLength);
254 X509_validateLink(MOC_ASYM(hwAccelDescr hwAccelCtx)
255 struct ASN1_ITEM* pCertificate, CStream pCertStream,
256 struct ASN1_ITEM* pParentCertificate, CStream pParentCertStream,
261 X509_extractDistinguishedNames(
struct ASN1_ITEM* pCertificate, CStream s,
262 intBoolean isSubject,
266 X509_extractDistinguishedNamesFromName(
struct ASN1_ITEM* pName, CStream s,
302 ubyte **ppBuffer, ubyte4 *pBufferLen);
305 X509_extractVersion(
struct ASN1_ITEM* pCertificate, sbyte4 *pRetVersion);
308 X509_getSubjectCommonName(
struct ASN1_ITEM* pCertificate, CStream s,
309 struct ASN1_ITEM** ppCommonNameItem);
313 X509_getSubjectEntryByOID(
struct ASN1_ITEM* pCertificate, CStream s,
314 const ubyte* oid,
struct ASN1_ITEM** ppEntryItem);
317 X509_getEntryByOID( ASN1_ITEMPTR pInputItem, CStream s,
318 const ubyte* oid, ASN1_ITEMPTR *ppEntryItem);
321 X509_checkCertificateIssuer(
struct ASN1_ITEM* pParentCertificate,
322 CStream pParentCertStream,
323 struct ASN1_ITEM* pCertificate,
324 CStream pCertStream);
327 X509_getCertTime(
struct ASN1_ITEM* pTime, CStream s, TimeDate* pGMTTime);
330 X509_verifySignature( MOC_ASYM(hwAccelDescr hwAccelCtx)
struct ASN1_ITEM* pCertOrCRL,
331 CStream cs,
struct AsymmetricKey *pIsuerPubKey);
334 X509_extractValidityTime(
struct ASN1_ITEM* pCertificate, CStream s,
337 X509_getValidityTime(
struct ASN1_ITEM* pCertificate,
338 struct ASN1_ITEM** pRetStart,
struct ASN1_ITEM** pRetEnd);
342 X509_rawVerifyOID(
struct ASN1_ITEM* pCertificate, CStream s,
343 const ubyte *pOidItem,
const ubyte *pOidValue,
344 intBoolean *pIsPresent);
347 X509_extractSerialNum(
struct ASN1_ITEM* pCertificate, CStream s,
348 ubyte** ppRetSerialNum, ubyte4 *pRetSerialNumLength);
353 X509_enumerateCRL(
struct ASN1_ITEM* pCertificate, CStream s,
354 EnumCallbackFun ecf,
void* userArg);
357 X509_enumerateAltName(
struct ASN1_ITEM* pCertificate, CStream s, sbyte4 isSubject,
358 EnumCallbackFun ecf,
void* userArg);
361 X509_checkCertificateIssuerSerialNumber(
struct ASN1_ITEM* pIssuer,
362 struct ASN1_ITEM* pSerialNumber,
363 CStream pIssuerStream,
364 struct ASN1_ITEM* pCertificate,
365 CStream pCertStream);
368 X509_getCertificateIssuerSerialNumber(
struct ASN1_ITEM* pCertificate,
369 struct ASN1_ITEM** ppIssuer,
370 struct ASN1_ITEM** ppSerialNumber);
373 X509_getCertificateSubject(
struct ASN1_ITEM* pCertificate,
struct ASN1_ITEM** ppSubject);
376 X509_getRSASignatureAlgo(
struct ASN1_ITEM* pCertificate, CStream certStream,
380 X509_isRootCertificate(
struct ASN1_ITEM* pCertificate, CStream s);
382 #ifdef __ENABLE_MOCANA_EXTRACT_CERT_BLOB__ 384 X509_extractDistinguishedNamesBlob(
struct ASN1_ITEM* pCertificate,
386 intBoolean isSubject,
387 ubyte **ppRetDistinguishedName,
388 ubyte4 *pRetDistinguishedNameLen);
392 X509_getCertExtension(
struct ASN1_ITEM* pExtensionsSeq, CStream s,
393 const ubyte* whichOID, intBoolean* critical,
394 struct ASN1_ITEM** ppExtension);
464 struct ASN1_ITEM** ppExtensions);
467 X509_getCertSignAlgoType(
struct ASN1_ITEM* pSignAlgoId, CStream s,
468 ubyte4* hashType, ubyte4* pubKeyType);
471 X509_getCertSignAlgoTypeEx(
struct ASN1_ITEM* pSignAlgoId, CStream s,
472 ubyte4* hashType, ubyte4* pubKeyType, ubyte4* curveType, ubyte4 *pQsAlg);
475 X509_getSignatureItem(
struct ASN1_ITEM* pCertificate, CStream s,
476 struct ASN1_ITEM** ppSignature);
479 X509_convertTime(TimeDate *pTime, ubyte *pOutputTime);
481 #ifdef __ENABLE_MOCANA_CV_CERT__ 483 PARSE_CV_CERT_checkCertificateIssuer(CV_CERT *pCertificate,
484 CV_CERT *pParentCertificate);
487 PARSE_CV_CERT_validateLink(MOC_ASYM(hwAccelDescr hwAccelCtx)
488 CV_CERT *pCertificate,
489 CV_CERT *pParentCertificate);
491 PARSE_CV_CERT_verifySignature(MOC_ASYM(hwAccelDescr hwAccelCtx)
492 CV_CERT *pCertificate,
493 CV_CERT *pParentCertificate);
496 PARSE_CV_CERT_verifyValidityTime(CV_CERT* pCert,
const TimeDate* currTime);
Definition: ca_mgmt.h:646
Distinguished name data (names and start/end dates) to support certificate generation.
Definition: ca_mgmt.h:424
MOC_EXTERN MSTATUS X509_getCertificateKeyUsageValue(struct ASN1_ITEM *pCertificate, CStream s, ubyte2 *pValue)
Return the value of the Key Usage extension.
MOC_EXTERN MSTATUS X509_getCertificateExtensions(struct ASN1_ITEM *pCertificate, struct ASN1_ITEM **ppExtensions)
Get the ASN1_ITEMPTR that contains the extensions.
MOC_EXTERN MSTATUS X509_extractDistinguishedNamesBuffer(ASN1_ITEMPTR pNameItem, CStream cs, ubyte **ppBuffer, ubyte4 *pBufferLen)
Extract the distinguished name components as a comma separated buffer.