📄 cert.h
字号:
int copyValidityEntries( INOUT_PTR VALIDITY_INFO **destListHeadPtrPtr,
const VALIDITY_INFO *srcListPtr );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int copyRevocationEntries( INOUT_PTR REVOCATION_INFO **destListHeadPtrPtr,
const REVOCATION_INFO *srcListPtr );
/* Determine whether a certificate has been revoked by this CRL/OCSP
response */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int checkRevocation( const CERT_INFO *certInfoPtr,
INOUT CERT_INFO *revocationInfoPtr );
/****************************************************************************
* *
* Certificate Checking Functions *
* *
****************************************************************************/
/* Check a certificate object */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 4, 5 ) ) \
int checkCert( INOUT CERT_INFO *subjectCertInfoPtr,
IN_OPT const CERT_INFO *issuerCertInfoPtr,
const BOOLEAN shortCircuitCheck,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int checkCertChain( INOUT CERT_INFO *certInfoPtr );
/* Certificate key check flags. These are:
FLAG_NONE: No specific check.
FLAG_CA: Certificate must contain a CA key.
FLAG_PRIVATEKEY: Check for constraints on the corresponding private
key's usage, not just the public key usage.
FLAG_GENCHECK: Perform a general check that the key usage details are
in order without checking for a particular usage */
#define CHECKKEY_FLAG_NONE 0x00 /* No specific checks */
#define CHECKKEY_FLAG_CA 0x01 /* Must be CA key */
#define CHECKKEY_FLAG_PRIVATEKEY 0x02 /* Check priv.key constraints */
#define CHECKKEY_FLAG_GENCHECK 0x04 /* General details check */
#define CHECKKEY_FLAG_MAX 0x07 /* Maximum possible flag value */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2, 3, 4 ) ) \
int getKeyUsageFromExtKeyUsage( const CERT_INFO *certInfoPtr,
OUT_FLAGS_Z( CRYPT_KEYUSAGE ) int *keyUsage,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 5, 6 ) ) \
int checkKeyUsage( const CERT_INFO *certInfoPtr,
IN_FLAGS_Z( CHECKKEY ) const int flags,
IN_FLAGS_Z( CRYPT_KEYUSAGE ) const int specificUsage,
IN_RANGE( CRYPT_COMPLIANCELEVEL_OBLIVIOUS, \
CRYPT_COMPLIANCELEVEL_LAST - 1 ) \
const int complianceLevel,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
/* Check certificate constraints */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2, 4, 5 ) ) \
int checkNameConstraints( const CERT_INFO *subjectCertInfoPtr,
const ATTRIBUTE_LIST *issuerAttributes,
const BOOLEAN isExcluded,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2, 4, 5 ) ) \
int checkPolicyConstraints( const CERT_INFO *subjectCertInfoPtr,
const ATTRIBUTE_LIST *issuerAttributes,
IN_ENUM_OPT( POLICY ) const POLICY_TYPE policyType,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2, 3, 4 ) ) \
int checkPathConstraints( const CERT_INFO *subjectCertInfoPtr,
const ATTRIBUTE_LIST *issuerAttributes,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
/* Sign/sig check a certificate */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int signCert( INOUT CERT_INFO *certInfoPtr,
IN_HANDLE_OPT const CRYPT_CONTEXT iSignContext );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int checkCertValidity( INOUT CERT_INFO *certInfoPtr,
IN_HANDLE_OPT const CRYPT_HANDLE iSigCheckObject );
/****************************************************************************
* *
* Certificate Chain Functions *
* *
****************************************************************************/
/* Read/write/copy a certificate chain */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int readCertChain( INOUT STREAM *stream, OUT CRYPT_CERTIFICATE *iCryptCert,
IN_HANDLE const CRYPT_USER iCryptOwner,
IN_ENUM( CRYPT_CERTTYPE ) const CRYPT_CERTTYPE_TYPE type,
IN_KEYID_OPT const CRYPT_KEYID_TYPE keyIDtype,
IN_BUFFER_OPT( keyIDlength ) const void *keyID,
IN_LENGTH_KEYID_Z const int keyIDlength,
const BOOLEAN dataOnlyCert );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int writeCertChain( INOUT STREAM *stream,
const CERT_INFO *certInfoPtr );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int copyCertChain( INOUT CERT_INFO *certInfoPtr,
IN_HANDLE const CRYPT_HANDLE certChain,
const BOOLEAN isCertCollection );
/* Read/write certificate collections in assorted formats */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int sizeofCertCollection( const CERT_INFO *certInfoPtr,
IN_ENUM( CRYPT_CERTFORMAT ) \
const CRYPT_CERTFORMAT_TYPE certFormatType );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int writeCertCollection( INOUT STREAM *stream,
const CERT_INFO *certInfoPtr,
IN_ENUM( CRYPT_CERTFORMAT ) \
const CRYPT_CERTFORMAT_TYPE certFormatType );
/* Assemble a certificate chain from certificates read from an object */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 4 ) ) \
int assembleCertChain( OUT CRYPT_CERTIFICATE *iCertificate,
IN_HANDLE const CRYPT_HANDLE iCertSource,
IN_KEYID const CRYPT_KEYID_TYPE keyIDtype,
IN_BUFFER( keyIDlength ) const void *keyID,
IN_LENGTH_KEYID const int keyIDlength,
IN_FLAGS( KEYMGMT ) const int options );
/****************************************************************************
* *
* Certificate Functions *
* *
****************************************************************************/
/* Create a certificate object ready for further initialisation */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int createCertificateInfo( OUT_PTR CERT_INFO **certInfoPtrPtr,
IN_HANDLE const CRYPT_USER iCryptOwner,
IN_ENUM( CRYPT_CERTTYPE ) \
const CRYPT_CERTTYPE_TYPE certType );
/* Add/get/delete a certificate component */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int addCertComponent( INOUT CERT_INFO *certInfoPtr,
IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE certInfoType,
/*?*/ const void *certInfo,
/*?*/ const int certInfoLength );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 5 ) ) \
int getCertComponent( INOUT CERT_INFO *certInfoPtr,
const CRYPT_ATTRIBUTE_TYPE certInfoType,
OUT_BUFFER_OPT( certInfoMaxLength, \
*certInfoLength ) void *certInfo,
const int certInfoMaxLength,
int *certInfoLength );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int deleteCertComponent( INOUT CERT_INFO *certInfoPtr,
IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE certInfoType );
/* Import/export a certificate */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 3 ) ) \
int importCert( IN_BUFFER( certObjectLength ) const void *certObject,
IN_LENGTH const int certObjectLength,
OUT_HANDLE_OPT CRYPT_CERTIFICATE *certificate,
IN_HANDLE const CRYPT_USER iCryptOwner,
IN_KEYID const CRYPT_KEYID_TYPE keyIDtype,
IN_BUFFER_OPT( keyIDlength ) const void *keyID,
IN_LENGTH_KEYID_Z const int keyIDlength,
IN_ENUM_OPT( CRYPT_CERTTYPE ) \
const CRYPT_CERTTYPE_TYPE formatHint );
CHECK_RETVAL STDC_NONNULL_ARG( ( 3, 5 ) ) \
int exportCert( OUT_BUFFER_OPT( certObjectMaxLength, *certObjectLength ) \
void *certObject,
IN_LENGTH const int certObjectMaxLength,
OUT_LENGTH_Z int *certObjectLength,
IN_ENUM( CRYPT_CERTFORMAT ) \
const CRYPT_CERTFORMAT_TYPE certFormatType,
const CERT_INFO *certInfoPtr );
/* Oddball routines: work with a certificate's serial number */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int setSerialNumber( INOUT CERT_INFO *certInfoPtr,
IN_BUFFER_OPT( serialNumberLength ) const void *serialNumber,
IN_LENGTH_SHORT_Z const int serialNumberLength );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 3 ) ) \
BOOLEAN compareSerialNumber( IN_BUFFER( canonSerialNumberLength ) \
const void *canonSerialNumber,
IN_LENGTH_SHORT const int canonSerialNumberLength,
IN_BUFFER( serialNumberLength ) \
const void *serialNumber,
IN_LENGTH_SHORT const int serialNumberLength );
/****************************************************************************
* *
* Miscellaneous Functions *
* *
****************************************************************************/
/* Convert a text-form OID to its binary form */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 3, 5 ) ) \
int textToOID( IN_BUFFER( oidLength ) const char *textOID,
IN_RANGE( MIN_ASCII_OIDSIZE, CRYPT_MAX_TEXTSIZE ) \
const int textOIDlength,
OUT_BUFFER( binaryOidMaxLen, binaryOidLen ) BYTE *binaryOID,
IN_LENGTH_SHORT const int binaryOidMaxLen,
OUT_LENGTH_SHORT_Z int *binaryOidLen );
/* Prototypes for functions in certext.c */
CHECK_RETVAL_BOOL \
BOOLEAN isValidField( IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE fieldID,
IN_ENUM( CRYPT_CERTTYPE ) \
const CRYPT_CERTTYPE_TYPE certType );
/* Prototypes for functions in comp_get.c */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int moveCursorToField( INOUT CERT_INFO *certInfoPtr,
const CRYPT_ATTRIBUTE_TYPE certInfoType );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int selectGeneralName( INOUT CERT_INFO *certInfoPtr,
IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE certInfoType,
IN_ENUM( SELECTION_OPTION ) const SELECTION_OPTION option );
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int selectDN( INOUT CERT_INFO *certInfoPtr,
IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE certInfoType,
IN_ENUM( SELECTION_OPTION ) const SELECTION_OPTION option );
void syncSelection( INOUT CERT_INFO *certInfoPtr ) \
STDC_NONNULL_ARG( ( 1 ) );
CHECK_RETVAL_PTR STDC_NONNULL_ARG( ( 1 ) ) \
time_t *getRevocationTimePtr( const CERT_INFO *certInfoPtr );
/* Prototypes for functions in certschk.c */
int checkCertDetails( CERT_INFO *subjectCertInfoPtr,
CERT_INFO *issuerCertInfoPtr,
const CRYPT_CONTEXT iIssuerPubKey,
const X509SIG_FORMATINFO *formatInfo,
const BOOLEAN trustAnchorCheck,
const BOOLEAN shortCircuitCheck,
OUT_ENUM_OPT( CRYPT_ATTRIBUTE ) \
CRYPT_ATTRIBUTE_TYPE *errorLocus,
OUT_ENUM_OPT( CRYPT_ERRTYPE ) \
CRYPT_ERRTYPE_TYPE *errorType );
/* Prototypes for functions in dn.c */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1, 2 ) ) \
int convertEmail( INOUT CERT_INFO *certInfoPtr,
/*?*/ void **dnComponentListPtrPtr,
IN_ATTRIBUTE const CRYPT_ATTRIBUTE_TYPE altNameType );
/* Prototypes for functions in ext.c */
CHECK_RETVAL STDC_NONNULL_ARG( ( 1 ) ) \
int fixAttributes( INOUT CERT_INFO *certInfoPtr );
/* Prototypes for functions in ext_def.c */
CHECK_RETVAL_BOOL \
BOOLEAN checkExtensionTables( void );
#endif /* _CERT_DEFINED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -