//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1999 // // File: cnvcrypt.h // // Contents: Temporary Hack for converting the (SDR) version of // CryptoAPI 2.0 //---------------------------------------------------------------------------- #ifndef __CNVCRYPT_H__ #define __CNVCRYPT_H__ #if(_WIN32_WINNT >= 0x0400) #ifdef __cplusplus extern "C" { #endif // In general all digest, Digest, DIGEST changed to: hash, Hash, HASH. // A Hack to get the old error codes to work #define CRMSG_E_GENERAL CRYPT_E_MSG_ERROR #define CERT_BAD_PARAMETER E_INVALIDARG #define CERT_BAD_LENGTH CRYPT_E_BAD_LEN #define CERT_BAD_ENCODE CRYPT_E_BAD_ENCODE #define CERT_OUT_OF_MEMORY E_OUTOFMEMORY #define CERT_MUST_COPY_ENCODED E_INVALIDARG #define CERT_OSS_ERROR CRYPT_E_OSS_ERROR #define CERT_STORE_BAD_PARAMETER E_INVALIDARG #define CERT_STORE_BAD_LEN CRYPT_E_BAD_LEN #define CERT_STORE_BAD_FLAGS E_INVALIDARG #define CERT_STORE_BAD_FILE CRYPT_E_FILE_ERROR #define CERT_STORE_NO_SUCH_PROPERTY CRYPT_E_NOT_FOUND #define CERT_STORE_ALREADY_IN_STORE CRYPT_E_EXISTS #define CERT_STORE_NOT_IMPLEMENTED E_NOTIMPL #define CERT_STORE_NOT_FOUND CRYPT_E_NOT_FOUND #define CERT_STORE_NO_CRYPT_PROV CRYPT_E_NO_PROVIDER #define CERT_STORE_SELF_SIGNED CRYPT_E_SELF_SIGNED #define CERT_STORE_DELETED_PREV CRYPT_E_DELETED_PREV #define CERT_HELPER_NO_MATCH CRYPT_E_NO_MATCH #define SCA_BAD_LEN_PARAMETER CRYPT_E_BAD_LEN #define SCA_BAD_PARAMETER E_INVALIDARG #define SCA_UNEXPECTED_MSG_TYPE CRYPT_E_UNEXPECTED_MSG_TYPE #define SCA_NO_CERT_KEY_PROV CRYPT_E_NO_KEY_PROPERTY #define SCA_NO_XCHG_CERT CRYPT_E_NO_DECRYPT_CERT #define SCA_BAD_MSG CRYPT_E_BAD_MSG // A Hack to get the old APIs to work #define CertStoreOpen CertOpenStore // Added dwFlags parameter to CertCloseStore #define CertStoreClose CertCloseStore #define CertStoreClean CertCleanStore #define CertStoreSave CertSaveStore #define CertStoreDuplicate CertDuplicateStore #define CertStoreAddCert CertAddEncodedCertificateToStore #define CertStoreAddCertContext CertAddCertificateContextToStore #define CertStoreAddCrl CertAddEncodedCRLToStore #define CertStoreAddCrlContext CertAddCRLContextToStore #define CertStoreDeleteCert CertDeleteCertificateFromStore #define CertStoreDeleteCrl CertDeleteCRLFromStore #define CertStoreEnumCert CertEnumCertificatesInStore #define CertStoreFindCert CertFindCertificateInStore #define CertStoreGetSubjectCert CertGetSubjectCertificateFromStore #define CertStoreGetCrl CertGetCRLFromStore #define CertStoreGetIssuerCert CertGetIssuerCertificateFromStore #define CertStoreCreateCert CertCreateCertificateContext #define CertStoreDuplicateCert CertDuplicateCertificateContext #define CertStoreSetCertProperty CertSetCertificateContextProperty #define CertStoreGetCertProperty CertGetCertificateContextProperty #define CertStoreFreeCert CertFreeCertificateContext #define CertStoreCreateCrl CertCreateCRLContext #define CertStoreDuplicateCrl CertDuplicateCRLContext #define CertStoreFreeCrl CertFreeCRLContext #define CertStoreSetCrlProperty CertSetCRLContextProperty #define CertStoreGetCrlProperty CertGetCRLContextProperty #define WinGetSystemCertificateStoreA CertOpenSystemStoreA #define WinGetSystemCertificateStoreW CertOpenSystemStoreW #define WinInsertCertificateA CertAddEncodedCertificateToSystemStoreA #define WinInsertCertificateW CertAddEncodedCertificateToSystemStoreW #define CertHelperCompareCert CertCompareCertificate #define CertHelperCompareCertName CertCompareCertificateName #define CertHelperCompareCertNameAttr CertIsRDNAttrsInCertificateName // Note parameters changed from PCRYPT_BIT_BLOB to PCERT_PUBLIC_KEY_INFO #define CertHelperComparePublicKey CertComparePublicKeyInfo #define CertComparePublicKeys CertComparePublicKeyInfo // Note CertCompareCertificateName takes a PCERT_NAME_BLOB, not a PCERT_INFO #define CertHelperIsIssuerOfSubjectCert CertCompareCertificateName #define CertHelperIsIssuerOfCrl CertCompareCertificateName // Note: PublicKey changed from a PCRYPT_BIT_BLOB to a PCERT_PUBLIC_KEY_INFO. #define CertHelperKeyVerifySignature CryptVerifyCertificateSignature #if 0 BOOL WINAPI CertHelperVerifySignature( IN HCRYPTPROV hCryptProv, IN DWORD dwCertEncodingType, IN BYTE *pbEncoded, IN DWORD cbEncoded, IN PCERT_INFO pIssuerInfo ); #else #define CertHelperVerifySignature(hCryptProv, dwCertEncodingType, \ pbEncoded, cbEncoded, pIssuerInfo) \ CryptVerifyCertificateSignature(hCryptProv, dwCertEncodingType, \ pbEncoded, cbEncoded, &pIssuerInfo->SubjectPublicKeyInfo) #endif #define CertHelperDigestToBeSigned CryptHashToBeSigned // Added dwFlags to CrytptDigestCertificate and CryptHashPublicKeyInfo #define CertHelperComputeDigest CryptHashCertificate #define CertHelperDigestPublicKeyInfo CryptHashPublicKeyInfo // Note added HashAlgid and dwHashFlags parameters. // Switched the order of the dwKeySpec and dwCertEncodingType parameters. #define CertHelperSignToBeSigned CryptSignCertificate #define CryptSignCertificateContext CryptSignCertificate #define CertHelperVerifyCertTimeValidity CertVerifyTimeValidity #define CertHelperVerifyCrlTimeValidity CertVerifyCRLTimeValidity #define CertHelperVerifyValidityNesting CertVerifyValidityNesting #define CertHelperVerifyCertRevocation CertVerifyRevocation #define CryptVerifyRevocation CertVerifyRevocation #define CertHelperAlgIdToObjId CertAlgIdToOID #define CertHelperObjIdToAlgId CertOIDToAlgId #define CertHelperFindExtension CertFindExtension #define CertHelperFindAttribute CertFindAttribute #define CertHelperFindRDNAttr CertFindRDNAttr #define CertHelperGetIntendedKeyUsage CertGetIntendedKeyUsage // Added deCertEncodingType parameter, returns PCERT_PUBLIC_KEY_INFO instead // of PBYTE #define CertHelperGetPublicKey CryptExportPublicKeyInfo #define CertGetPublicKey CryptExportPublicKeyInfo #if 0 BOOL WINAPI CertHelperCreatePublicKeyInfo( IN HCRYPTPROV hCryptProv, DWORD dwKeySpec, // AT_SIGNATURE | AT_KEYEXCHANGE OUT PCERT_PUBLIC_KEY_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define CertHelperCreatePublicKeyInfo(hCryptProv, dwKeySpec, \ pInfo, pcbInfo) \ CryptExportPublicKeyInfo(hCryptProv, dwKeySpec, X509_ASN_ENCODING, \ pInfo, pcbInfo) #endif #define CertHelperNameValueToStr CertRDNValueToStrA #define CertHelperNameValueToWStr CertRDNValueToStrW // For all the SCA_*_PARA: dwVersion has been changed to cbSize. // cbSize must be set to the sizeof(CRYPT_*_PARA) or else LastError // will be updated with E_INVALIDARG. typedef PFN_CRYPT_GET_SIGNER_CERTIFICATE PFN_SCA_VERIFY_SIGNER_POLICY; typedef CRYPT_SIGN_MESSAGE_PARA SCA_SIGN_PARA; typedef PCRYPT_SIGN_MESSAGE_PARA PSCA_SIGN_PARA; // Combined into single dwMsgAndCertEncodingType typedef CRYPT_VERIFY_MESSAGE_PARA SCA_VERIFY_PARA; typedef PCRYPT_VERIFY_MESSAGE_PARA PSCA_VERIFY_PARA; // Added EncryptionAlgid, dwEncryptionFlags typedef CRYPT_ENCRYPT_MESSAGE_PARA SCA_ENCRYPT_PARA; typedef PCRYPT_ENCRYPT_MESSAGE_PARA PSCA_ENCRYPT_PARA; // Combined into single dwMsgAndCertEncodingType typedef CRYPT_DECRYPT_MESSAGE_PARA SCA_DECRYPT_PARA; typedef PCRYPT_DECRYPT_MESSAGE_PARA PSCA_DECRYPT_PARA; // Added HashAlgid, dwHashFlags typedef CRYPT_HASH_MESSAGE_PARA SCA_DIGEST_PARA; typedef PCRYPT_HASH_MESSAGE_PARA PSCA_DIGEST_PARA; // Added dwKeySpec, HashAlgid, dwHashFlags. Combined into single // dwMsgAndCertEncodingType. typedef CRYPT_KEY_SIGN_MESSAGE_PARA SCA_NO_CERT_SIGN_PARA; typedef PCRYPT_KEY_SIGN_MESSAGE_PARA PSCA_NO_CERT_SIGN_PARA; typedef CRYPT_KEY_VERIFY_MESSAGE_PARA SCA_NO_CERT_VERIFY_PARA; typedef PCRYPT_KEY_VERIFY_MESSAGE_PARA PSCA_NO_CERT_VERIFY_PARA; #define SCAEncrypt CryptEncryptMessage #define SCADecrypt CryptDecryptMessage #define SCASign CryptSignMessage #define SCAVerifySignature CryptVerifyMessageSignature #define SCASignAndEncrypt CryptSignAndEncryptMessage #define SCADecryptAndVerifySignature CryptDecryptAndVerifyMessageSignature #define SCADigest CryptHashMessage #define SCAVerifyDigest CryptVerifyMessageHash #define SCANoCertSign CryptSignMessageWithKey #define SCANoCertVerifySignature CryptVerifyMessageSignatureWithKey #define SCAVerifyDetachedDigest CryptVerifyDetachedMessageHash #define SCAVerifyDetachedSignature CryptVerifyDetachedMessageSignature #define SETSCASignAndExEncrypt CryptSignAndExEncryptMessage #define SETSCAExDecryptAndVerifySignature CryptExDecryptAndVerifyMessageSignature #define SETSCAExEncrypt CryptExEncryptMessage #define SETSCAExDecrypt CryptExDecryptMessage // A Hack to get the old encode/decode APIs to work // Renamed the structure used for X509_CERT. Futhermore, the content of the // CERT_ENCODING structure has changed. typedef CERT_SIGNED_CONTENT_INFO CERT_ENCODING; typedef PCERT_SIGNED_CONTENT_INFO PCERT_ENCODING; // Content types #define CERT_CONTENT 1 #define CRL_CONTENT 2 #define CERT_REQUEST_CONTENT 3 #if 0 BOOL WINAPI CertEncodeToBeSigned( IN DWORD dwEncodingType, IN DWORD dwContentType, IN void *pvInfo, OUT BYTE *pbEncodedToBeSigned, IN OUT DWORD *pcbEncodedToBeSigned ); #else #define CertEncodeToBeSigned(dwEncodingType, dwContentType, pvInfo, \ pbEncodedToBeSigned, pcbEncodedToBeSigned) \ CryptEncodeObject(dwEncodingType, \ (dwContentType == CERT_CONTENT) ? X509_CERT_TO_BE_SIGNED : \ ((dwContentType == CRL_CONTENT) ? X509_CERT_CRL_TO_BE_SIGNED : \ X509_CERT_REQUEST_TO_BE_SIGNED), \ pvInfo, pbEncodedToBeSigned, pcbEncodedToBeSigned) #endif #if 0 BOOL WINAPI CertEncode( IN DWORD dwEncodingType, IN const BYTE *pbEncodedToBeSigned, IN DWORD cbEncodedToBeSigned, IN PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, IN const BYTE *pbSignature, IN DWORD cbSignature, IN OPTIONAL void *pAdditionalInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else // You'll need to create and initialize a CERT_SIGNED_CONTENT_INFO data // structure initialized with the above information // You'll need to manually modify your code #define CertEncode(dwEncodingType, pbEncodedToBeSigned, cbEncodedToBeSigned, \ pSignatureAlgorithm, pbSignature, cbSignature, pAdditionalInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_CERT, &CertSignedContentInfo, \ pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI CertDecodeToBeSigned( IN DWORD dwEncodingType, IN DWORD dwContentType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT void *pvInfo, IN OUT DWORD *pcbInfo ); #else #define CertDecodeToBeSigned(dwEncodingType, dwContentType, \ pbEncoded, cbEncoded, pvInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, \ (dwContentType == CERT_CONTENT) ? X509_CERT_TO_BE_SIGNED : \ ((dwContentType == CRL_CONTENT) ? X509_CERT_CRL_TO_BE_SIGNED : \ X509_CERT_REQUEST_TO_BE_SIGNED), \ pbEncoded, cbEncoded, 0, pvInfo, pcbInfo) #endif #if 0 BOOL WINAPI CertDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT OPTIONAL PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, IN OUT OPTIONAL DWORD *pcbSignatureAlgorithm, IN OUT OPTIONAL BYTE **ppbSignature, IN OUT OPTIONAL DWORD *pcbSignature, IN OUT BYTE **ppbEncodedToBeSigned, IN OUT DWORD *pcbEncodedToBeSigned, IN OUT OPTIONAL void *pAdditionalInfo, IN OUT OPTIONAL DWORD *pcbAdditionalInfo ); #else // Returns a CERT_SIGNED_CONTENT_INFO data // structure containing the above information // You'll need to manually modify your code #define CertDecode(dwEncodingType, pbEncoded, cbEncoded, \ pSignatureAlgorithm, pcbSignatureAlgorithm, \ ppbSignature, pcbSignature, \ ppbEncodedToBeSigned, pcbEncodedToBeSigned, \ pAdditionalInfo, pcbAdditionalInfo) \ CryptDecodeObject(dwEncodingType, X509_CERT, pbEncoded, cbEncoded, 0, \ pCertSignedContentInfo, &cbCertSignedContentInfo) #endif #if 0 BOOL WINAPI CertEncodeName( IN DWORD dwEncodingType, IN PCERT_NAME_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define CertEncodeName(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_NAME, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI CertDecodeName( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_NAME_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define CertDecodeName(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_NAME, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI CertEncodeNameValue( IN DWORD dwEncodingType, IN PCERT_NAME_VALUE pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define CertEncodeNameValue(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_NAME_VALUE, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI CertDecodeNameValue( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_NAME_VALUE pInfo, IN OUT DWORD *pcbInfo ); #else #define CertDecodeNameValue(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_NAME_VALUE, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI CertEncodeExtensions( IN DWORD dwEncodingType, IN PCERT_EXTENSIONS pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define CertEncodeExtensions(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_EXTENSIONS, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI CertDecodeExtensions( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_EXTENSIONS pInfo, IN OUT DWORD *pcbInfo ); #else #define CertDecodeExtensions(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_EXTENSIONS, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI PublicKeyInfoEncode( IN DWORD dwEncodingType, IN PCERT_PUBLIC_KEY_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define PublicKeyInfoEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_PUBLIC_KEY_INFO, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI PublicKeyInfoDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_PUBLIC_KEY_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define PublicKeyInfoDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_PUBLIC_KEY_INFO, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI AuthorityKeyIdEncode( IN DWORD dwEncodingType, IN PCERT_AUTHORITY_KEY_ID_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define AuthorityKeyIdEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_AUTHORITY_KEY_ID, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI AuthorityKeyIdDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_AUTHORITY_KEY_ID_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define AuthorityKeyIdDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_AUTHORITY_KEY_ID, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI KeyAttributesEncode( IN DWORD dwEncodingType, IN PCERT_KEY_ATTRIBUTES_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define KeyAttributesEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_KEY_ATTRIBUTES, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI KeyAttributesDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_KEY_ATTRIBUTES_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define KeyAttributesDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_KEY_ATTRIBUTES, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI KeyUsageRestrictionEncode( IN DWORD dwEncodingType, IN PCERT_KEY_USAGE_RESTRICTION_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define KeyUsageRestrictionEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_KEY_USAGE_RESTRICTION, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI KeyUsageRestrictionDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_KEY_USAGE_RESTRICTION_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define KeyUsageRestrictionDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_KEY_USAGE_RESTRICTION, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI AltNameEncode( IN DWORD dwEncodingType, IN PCERT_ALT_NAME_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define AltNameEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_ALTERNATE_NAME, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI AltNameDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_ALT_NAME_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define AltNameDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_ALTERNATE_NAME, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI BasicConstraintsEncode( IN DWORD dwEncodingType, IN PCERT_BASIC_CONSTRAINTS_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define BasicConstraintsEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_BASIC_CONSTRAINTS, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI BasicConstraintsDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCERT_BASIC_CONSTRAINTS_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define BasicConstraintsDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_BASIC_CONSTRAINTS, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SETAccountAliasEncode( IN DWORD dwEncodingType, IN BOOL *pbInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define SETAccountAliasEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_SET_ACCOUNT_ALIAS, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI SETAccountAliasDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT BOOL *pbInfo, IN OUT DWORD *pcbInfo ); #else #define SETAccountAliasDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_SET_ACCOUNT_ALIAS, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SETHashedRootKeyEncode( IN DWORD dwEncodingType, IN BYTE rgbInfo[SET_HASHED_ROOT_LEN], OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define SETHashedRootKeyEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_SET_HASHED_ROOT_KEY, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI SETHashedRootKeyDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT BYTE rgbInfo[SET_HASHED_ROOT_LEN], IN OUT DWORD *pcbInfo ); #else #define SETHashedRootKeyDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_SET_HASHED_ROOT_KEY, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SETCertificateTypeEncode( IN DWORD dwEncodingType, IN PCRYPT_BIT_BLOB pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define SETCertificateTypeEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_SET_CERTIFICATE_TYPE, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI SETCertificateTypeDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PCRYPT_BIT_BLOB pInfo, IN OUT DWORD *pcbInfo ); #else #define SETCertificateTypeDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_SET_CERTIFICATE_TYPE, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SETMerchantDataEncode( IN DWORD dwEncodingType, IN PSET_MERCHANT_DATA_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); #else #define SETMerchantDataEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, X509_SET_MERCHANT_DATA, \ pInfo, pbEncoded, pcbEncoded) #endif #if 0 BOOL WINAPI SETMerchantDataDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSET_MERCHANT_DATA_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define SETMerchantDataDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, X509_SET_MERCHANT_DATA, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif // A Hack to get the old SPC encode/decode APIs to work #if 0 BOOL WINAPI SpcSpAgencyInfoEncode( IN DWORD dwEncodingType, IN PSPC_SP_AGENCY_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcSpAgencyInfoDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_SP_AGENCY_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcSpAgencyInfoEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_SP_AGENCY_INFO_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcSpAgencyInfoDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_SP_AGENCY_INFO_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcMinimalCriteriaInfoEncode( IN DWORD dwEncodingType, IN BOOL *pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcMinimalCriteriaInfoDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT BOOL *pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcMinimalCriteriaInfoEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_MINIMAL_CRITERIA_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcMinimalCriteriaInfoDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_MINIMAL_CRITERIA_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcFinancialCriteriaInfoEncode( IN DWORD dwEncodingType, IN PSPC_FINANCIAL_CRITERIA pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcFinancialCriteriaInfoDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_FINANCIAL_CRITERIA pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcFinancialCriteriaInfoEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_FINANCIAL_CRITERIA_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcFinancialCriteriaInfoDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_FINANCIAL_CRITERIA_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcIndirectDataContentEncode( IN DWORD dwEncodingType, IN PSPC_INDIRECT_DATA_CONTENT pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcIndirectDataContentDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_INDIRECT_DATA_CONTENT pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcIndirectDataContentEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_INDIRECT_DATA_CONTENT_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcIndirectDataContentDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_INDIRECT_DATA_CONTENT_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcPeImageDataEncode( IN DWORD dwEncodingType, IN PSPC_PE_IMAGE_DATA pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcPeImageDataDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_PE_IMAGE_DATA pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcPeImageDataEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_PE_IMAGE_DATA_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcPeImageDataDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_PE_IMAGE_DATA_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcLinkEncode( IN DWORD dwEncodingType, IN PSPC_LINK pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcLinkDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_LINK pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcLinkEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_LINK_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcLinkDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_LINK_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcStatementTypeEncode( IN DWORD dwEncodingType, IN PSPC_STATEMENT_TYPE pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcStatementTypeDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_STATEMENT_TYPE pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcStatementTypeEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_STATEMENT_TYPE_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcStatementTypeDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_STATEMENT_TYPE_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #if 0 BOOL WINAPI SpcSpOpusInfoEncode( IN DWORD dwEncodingType, IN PSPC_SP_OPUS_INFO pInfo, OUT BYTE *pbEncoded, IN OUT DWORD *pcbEncoded ); BOOL WINAPI SpcSpOpusInfoDecode( IN DWORD dwEncodingType, IN const BYTE *pbEncoded, IN DWORD cbEncoded, OUT PSPC_SP_OPUS_INFO pInfo, IN OUT DWORD *pcbInfo ); #else #define SpcSpOpusInfoEncode(dwEncodingType, pInfo, \ pbEncoded, pcbEncoded) \ CryptEncodeObject(dwEncodingType, SPC_SP_OPUS_INFO_STRUCT, \ pInfo, pbEncoded, pcbEncoded) #define SpcSpOpusInfoDecode(dwEncodingType, pbEncoded, cbEncoded, \ pInfo, pcbInfo) \ CryptDecodeObject(dwEncodingType, SPC_SP_OPUS_INFO_STRUCT, \ pbEncoded, cbEncoded, 0, pInfo, pcbInfo) #endif #ifdef __cplusplus } // Balance extern "C" above #endif #endif /* _WIN32_WINNT >= 0x0400 */ #endif // __CNVCRYPT_H__