|
|
//+---------------------------------------------------------------------------
//
// 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__
|