⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pkcsdll.h

📁 windows的加密api源码
💻 H
📖 第 1 页 / 共 2 页
字号:
    OUT LPCRLHANDLE phCrl,          // Handle for future reference
    IN ISSUERHANDLE hIssuer,        // Handle of controlling issuer
    IN const BYTE *pbCrl);          // Buffer containing the CRL.

extern PKCSDLLAPI BOOL WINAPI
PkcsCrlRevoke(
    IN CRLHANDLE hCrl,              // The reference handle to the CRL
    IN const BYTE *pbSerialNo,      // Serial number of certificate to revoke
    IN DWORD cbSerialNoLen,         // Length of the serial number
    IN LPFILETIME pfmStartDate);    // Effective date of revokation

extern PKCSDLLAPI BOOL WINAPI
PkcsCrlIssue(
    IN CRLHANDLE hCrl,              // The reference handle to the CRL
    IN LPFILETIME pftEndDate,       // Termination date of the CRL
    OUT LPBYTE pbCrl,               // Buffer to receive the CRL
    IN OUT LPDWORD pcbCrlLen);      // Length of the pbCrl buffer

extern PKCSDLLAPI BOOL WINAPI
PkcsCrlClose(
    IN CRLHANDLE hCrl);             // The reference handle to the Crl

    //
    // ?HOW? -  How do we attach X.509 CRL v2 Extensions to the revokee?
    //


//
//==============================================================================
//
//  Certificate services.
//

typedef PKCSHANDLE
    CERTIFICATEHANDLE;              // Reference handle type.
typedef CERTIFICATEHANDLE
    *PCERTIFICATEHANDLE,            // Pointers to reference handles.
    *LPCERTIFICATEHANDLE;

#define CERT_PKCSV1_INFO 1          // The type of Cert Info Struct following:

//
// Supported Certificate Types.
//

#define CERTYPE_UNKNOWN         0   // Unknown Certificate Type.
#define CERTYPE_LOCAL_CA        1   // A local CA pointer.
#define CERTYPE_X509            2   // An X.509 certificate.
#define CERTYPE_PKCS_X509       3   // A PKCS & imbedded X.509 Certificate.
#define CERTYPE_PKCS_REQUEST    4   // A PKCS Certificate Request (internal use)


//
// Supported Certificate Types.
//

// Local CA Specifics

#define LCA_VERSION_1 0             // This Local CA is version 1.
#define LCA_MAX_VERSION LCA_VERSION_1 // Max version supported.

typedef struct {
    DWORD   dwVersion;              // The version of the local CA
    LPTSTR  szSubject;              // Address for Subject name
    DWORD   cbSubjectLen;           // Length of szSubject buffer
    LPTSTR  szProvider;             // Address for the provider name
    DWORD   cbProviderLen;          // Length of szProvider buffer
    DWORD   dwProvType;             // The type of Provider
    LPTSTR  szKeyset;               // Address for the keyset name
    DWORD   cbKeysetLen;            // Length of the szKeyset buffer
    DWORD   dwKeySpec;              // The specific key identifier
} LOCALCACERTINFO, *PLOCALCACERTINFO, *LPLOCALCACERTINFO;


// X.509 Certificate specifics

#define X509_VERSION_1 0            // This certificate is X.509 version 1
#define X509_VERSION_2 1            // This certificate is X.509 version 2
#define X509_VERSION_3 2            // This certificate is X.509 version 3
#define X509_MAX_VERSION X509_VERSION_1 // Max version supported.

typedef struct {
    DWORD   dwX509Version;          // The version of the certificate
    LPBYTE  pbSerialNumber;         // Address for serial number.
    DWORD   cbSerialNumLen;         // Length of pbSerialNumber buffer.
    ALG_ID  algId;                  // Algorithm Id.
    LPTSTR  szIssuer;               // Address for Issuer name
    DWORD   cbIssuerLen;            // Length of szIssuer buffer
    FILETIME ftNotBefore;           // Certificate effective date
    FILETIME ftNotAfter;            // Certificate expiration date
    LPTSTR  szSubject;              // Address for Subject name
    DWORD   cbSubjectLen;           // Length of szSubject buffer
    LPVOID  pvIssuerUid;            // Address for Issuer Id ?q?
    DWORD   cbIssuerUidLen;         // Length of pvIssuerUid buffer
    LPVOID  pvSubjectUid;           // Address for Subject Id ?q?
    DWORD   cbSubjectUidLen;        // Length of pvSubjectUid buffer
    EXTENSIONLISTHANDLE
            hExtensions;            // Extension List handle
} X509CERTINFO, *PX509CERTINFO, *LPX509CERTINFO;


// PKCS-6 with embedded X.509 Certificate specifics

#define PKCS_NOTUSED   0xffff       // PKCS isn't used on this certificate
#define PKCS_VERSION_1 0            // This certificate is PKCS version 1
#define PKCS_MAX_VERSION PKCS_VERSION_1 // Max version supported.

typedef struct {
    DWORD   dwPKCSVersion;          // The version of the certificate
    ATTRIBLISTHANDLE hAttributes;   // Attribute list handle
    X509CERTINFO x509Info;          // Info from the X.509 Certificate
} PKCSX509CERTINFO, *PPKCSX509CERTINFO, *LPPKCSX509CERTINFO;


// PKCS-10 Certificate Request Specifics
typedef struct {
    DWORD   dwPKCSVersion;          // The version of the certificate request
    LPTSTR  szSubject;              // Address for Subject name
    DWORD   cbSubjectLen;           // Length of szSubject buffer
    ATTRIBLISTHANDLE hAttributes;   // Attribute list handle
} PKCSREQCERTINFO, *PPKCSREQCERTINFO, *LPPKCSREQCERTINFO;


// Common Certificate Info Header.

typedef struct {
    // This part is common to all certificate info structure types.  (?Q?)
    DWORD   cbStructLen;            // Length of this structure
    WORD    wCertInfoVersion;       // The version (CERT_PKCSV1_INFO)
    WORD    wCertInfoType;          // The type of the following structure
    union {
        LOCALCACERTINFO localCA;    // Local CA Characteristics
        X509CERTINFO x509;          // X.509 Characteristics
        PKCSX509CERTINFO pkcs;      // PKCS-6 Characteristics
        PKCSREQCERTINFO req;        // PKCS-10 Request Characteristics
    } certInfo;
} CERTIFICATEINFO, *PCERTIFICATEINFO, *LPCERTIFICATEINFO;


// Crypto API Definitions
#define CAPI_MAX_VERSION 2          // Supported version of CAPI.


// Certificate Store Definitions
#define CERTSTORE_NONE          0   // No store to be used.
#define CERTSTORE_APPLICATION   1   // Store in application volatile memory
#define CERTSTORE_CURRENT_USER  3   // Store in Registry under current user
#define CERTSTORE_LOCAL_MACHINE 5   // Store in Registry under local machine


// Certificate Warning Definitions
#define CERTWARN_NOCRL       0x01   // At least one of the signing CAs didn't
                                    // have an associated CRL.
#define CERTWARN_EARLYCRL    0x02   // At least one of the signing CAs had an
                                    // associated CRL who's issuing date was
                                    // in the future.
#define CERTWARN_LATECRL     0x04   // At least one of the signing CAs had an
                                    // expired CRL.
#define CERTWARN_TOBEREVOKED 0x08   // At least one of the signing CAs contained
                                    // a revocation for a certificate, but its
                                    // effective date has not yet been reached.

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateLoad(
    OUT LPCERTIFICATEHANDLE phCert, // Handle for future reference
    IN const BYTE *pbCert,          // Buffer containing the certificate
    IN const BYTE *pbCrl,           // Buffer containing any associated CRL
    IN OUT LPDWORD pdwType,         // Certificate Type
    IN DWORD dwStore,               // Which certificate store to load
    IN LPCTSTR szKeySet,            // The name of the keyset to use
    IN LPCTSTR szProvider,          // The specific name of the CSP to use
    IN DWORD dwProvType,            // Provider type hint
    OUT LPBYTE szIssuerName,        // The root or missing issuer
    IN OUT LPDWORD pcbIssuerLen,    // Length of the szIssuerName buffer
    OUT LPDWORD pdwWarnings);       // Receives warning flags.

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateOpen(
    OUT LPCERTIFICATEHANDLE phCert, // Handle for future reference
    IN LPCTSTR szSubjName,          // Name of subject of existing certificate
    IN LPCTSTR szKeySet,            // The name of the keyset to use
    IN LPCTSTR szProvider,          // The specific name of the CSP to use
    IN DWORD dwProvType,            // Provider type hint
    OUT LPDWORD pdwCertType,        // Certificate Type
    IN OUT LPDWORD pfStore,         // Certificate store search/found limits
    OUT LPTSTR szIssuerName,        // The root or missing issuer
    IN OUT LPDWORD pcbIssuerLen,    // Length of the szIssuerName buffer
    OUT LPDWORD pdwWarnings);       // Receives warning flags.

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateUpdateCrl(
    IN CERTIFICATEHANDLE hCert,     // The reference handle to the Certificate
    IN const BYTE *pbCrl);          // Buffer containing the associated CRL

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateVerify(
    IN CERTIFICATEHANDLE hCert,     // The reference handle to the Certificate
    IN const BYTE *pbData,          // The data to be verified
    IN DWORD cbDataLen,             // The length of the data to be signed
    IN LPCTSTR szComment,           // Comment string associated with signature
    IN ALG_ID algId,                // Algorithm suggestion
    IN const BYTE *pbSignature,     // The supplied signature
    IN DWORD cbSigLen);             // Length of the pbSignature buffer.

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateGetInfo(
    IN CERTIFICATEHANDLE hCert,     // The reference handle to the Certificate
    IN OUT LPCERTIFICATEINFO pCertInfo); // The info structure to fill in

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateClose(
    IN CERTIFICATEHANDLE hCert);    // The reference handle to the Certificate

extern PKCSDLLAPI BOOL WINAPI
PkcsCertificateDelete(
    IN CERTIFICATEHANDLE hCert);    // The handle to the Certificate to remove


#if defined(_MSVC) && defined(_DEBUG)
//
//==============================================================================
//
//  Debugging extensions
//

extern PKCSDLLAPI void WINAPI
PkcsMemoryClean(
    void);
#endif


//
//==============================================================================
//
//  Attribute Type definitions
//

#define X500_commonName                     TEXT("2.5.4.3")
#define X500_surname                        TEXT("2.5.4.4")
#define X500_serialNumber                   TEXT("2.5.4.5")
#define X500_countryName                    TEXT("2.5.4.6")
#define X500_locality                       TEXT("2.5.4.7")
#define X500_stateOrProvinceName            TEXT("2.5.4.8")
#define X500_streetAddress                  TEXT("2.5.4.9")
#define X500_organizationName               TEXT("2.5.4.10")
#define X500_orginazationalUnitName         TEXT("2.5.4.11")
#define X500_title                          TEXT("2.5.4.12")
#define X500_description                    TEXT("2.5.4.13")
#define X500_businessCategory               TEXT("2.5.4.15")
#define X500_postalCode                     TEXT("2.5.4.17")
#define X500_postOfficeBox                  TEXT("2.5.4.18")
#define X500_physicalDeliveryOfficeName     TEXT("2.5.4.19")
#define X500_telephoneNumber                TEXT("2.5.4.20")
#define X500_x121Address                    TEXT("2.5.4.24")
#define X500_internationalISDNNumber        TEXT("2.5.4.25")
#define X500_destinationIndicator           TEXT("2.5.4.27")

#define PKCS1_md2                           TEXT("1.2.840.113549.2.2")
#define PKCS1_md4                           TEXT("1.2.840.113549.2.4")
#define PKCS1_md5                           TEXT("1.2.840.113549.2.5")
#define PKCS1_rsaEncryption                 TEXT("1.2.840.113549.1.1.1")
#define PKCS1_md2WithRSAEncryption          TEXT("1.2.840.113549.1.1.2")
#define PKCS1_md4WithRSAEncryption          TEXT("1.2.840.113549.1.1.3")
#define PKCS1_md5WithRSAEncryption          TEXT("1.2.840.113549.1.1.4")

#define PKCS3_dhKeyAgreement                TEXT("1.2.840.113549.1.3.1")

#define PKCS5_pbeWithMD2AndDES_CBC          TEXT("1.2.840.113549.1.5.1")
#define PKCS5_pbeWithMD5AndDES_CBC          TEXT("1.2.840.113549.1.5.3")

#define PKCS7_data                          TEXT("1.2.840.113549.1.7.1")
#define PKCS7_signedData                    TEXT("1.2.840.113549.1.7.2")
#define PKCS7_envelopedData                 TEXT("1.2.840.113549.1.7.3")
#define PKCS7_signedAndEnvelopedData        TEXT("1.2.840.113549.1.7.4")
#define PKCS7_digestedData                  TEXT("1.2.840.113549.1.7.5")
#define PKCS7_encryptedData                 TEXT("1.2.840.113549.1.7.6")

#define PKCS9_emailAddress                  TEXT("1.2.840.113549.1.9.1")
#define PKCS9_unstructuredName              TEXT("1.2.840.113549.1.9.2")
#define PKCS9_contentType                   TEXT("1.2.840.113549.1.9.3")
#define PKCS9_messageDigest                 TEXT("1.2.840.113549.1.9.4")
#define PKCS9_signingTime                   TEXT("1.2.840.113549.1.9.5")
#define PKCS9_countersignature              TEXT("1.2.840.113549.1.9.6")
#define PKCS9_challengePassword             TEXT("1.2.840.113549.1.9.7")
#define PKCS9_unstructuredAddress           TEXT("1.2.840.113549.1.9.8")
#define PKCS9_extendedCertificateAttributes TEXT("1.2.840.113549.1.9.9")
#define PKCS9_description                   TEXT("1.2.840.113549.1.9.10")

#ifdef _cplusplus
}
#endif
#endif // _PKCSLIB_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -