35 dwFlags, pbSignedBlob, cbSignedBlob);
42 const BYTE *pbSignedBlob,
DWORD cbSignedBlob)
47 TRACE(
"(%08x, %p, %d)\n", dwMsgEncodingType, pbSignedBlob, cbSignedBlob);
76 dwSignerIndex, certInfo, &
size))
104 return getCert(pVerifyPara->
pvGetArg,
110 const BYTE *pbDetachedSignBlob,
DWORD cbDetachedSignBlob,
DWORD cToBeSigned,
111 const BYTE *rgpbToBeSigned[],
DWORD rgcbToBeSigned[],
117 TRACE(
"(%p, %d, %p, %d, %d, %p, %p, %p)\n", pVerifyPara, dwSignerIndex,
118 pbDetachedSignBlob, cbDetachedSignBlob, cToBeSigned, rgpbToBeSigned,
119 rgcbToBeSigned, ppSignerCert);
122 *ppSignerCert =
NULL;
141 for (
i = 0;
ret &&
i < cToBeSigned;
i++)
143 i == cToBeSigned - 1);
160 msg, pVerifyPara, certInfo, store);
166 if (
ret && ppSignerCert)
167 *ppSignerCert =
cert;
185 DWORD dwSignerIndex,
const BYTE* pbSignedBlob,
DWORD cbSignedBlob,
191 TRACE(
"(%p, %d, %p, %d, %p, %p, %p)\n",
192 pVerifyPara, dwSignerIndex, pbSignedBlob, cbSignedBlob,
193 pbDecoded, pcbDecoded, ppSignerCert);
196 *ppSignerCert =
NULL;
213 if (
ret && pcbDecoded)
231 msg, pVerifyPara, certInfo, store);
237 if (
ret && ppSignerCert)
238 *ppSignerCert =
cert;
249 if(!
ret && pcbDecoded)
256 BOOL fDetachedHash,
DWORD cToBeHashed,
const BYTE *rgpbToBeHashed[],
258 BYTE *pbComputedHash,
DWORD *pcbComputedHash)
265 TRACE(
"(%p, %d, %d, %p, %p, %p, %p, %p, %p)\n", pHashPara, fDetachedHash,
266 cToBeHashed, rgpbToBeHashed, rgcbToBeHashed, pbHashedBlob, pcbHashedBlob,
267 pbComputedHash, pcbComputedHash);
300 if (
ret && pcbComputedHash)
302 pbComputedHash, pcbComputedHash);
310 BYTE *pbDetachedHashBlob,
DWORD cbDetachedHashBlob,
DWORD cToBeHashed,
311 const BYTE *rgpbToBeHashed[],
DWORD rgcbToBeHashed[],
BYTE *pbComputedHash,
312 DWORD *pcbComputedHash)
317 TRACE(
"(%p, %p, %d, %d, %p, %p, %p, %p)\n", pHashPara, pbDetachedHashBlob,
318 cbDetachedHashBlob, cToBeHashed, rgpbToBeHashed, rgcbToBeHashed,
319 pbComputedHash, pcbComputedHash);
343 for (
i = 0;
ret &&
i < cToBeHashed;
i++)
346 rgcbToBeHashed[
i],
i == cToBeHashed - 1);
355 if (
ret && pcbComputedHash)
357 pbComputedHash, pcbComputedHash);
366 DWORD *pcbToBeHashed,
BYTE *pbComputedHash,
DWORD *pcbComputedHash)
371 TRACE(
"(%p, %p, %d, %p, %p, %p, %p)\n", pHashPara, pbHashedBlob,
372 cbHashedBlob, pbToBeHashed, pcbToBeHashed, pbComputedHash,
394 if (
ret && pcbToBeHashed)
396 pbToBeHashed, pcbToBeHashed);
397 if (
ret && pcbComputedHash)
399 pbComputedHash, pcbComputedHash);
407 BOOL fDetachedSignature,
DWORD cToBeSigned,
const BYTE *rgpbToBeSigned[],
419 TRACE(
"(%p, %d, %d, %p, %p, %p, %p)\n", pSignPara, fDetachedSignature,
420 cToBeSigned, rgpbToBeSigned, rgcbToBeSigned, pbSignedBlob, pcbSignedBlob);
438 memset(&signer, 0,
sizeof(signer));
439 signer.
cbSize =
sizeof(signer);
450 memset(&signInfo, 0,
sizeof(signInfo));
451 signInfo.
cbSize =
sizeof(signInfo);
488 FIXME(
"unimplemented feature\n");
498 for (
i = 0;
ret &&
i < cToBeSigned; ++
i)
501 i == cToBeSigned - 1);
523 const BYTE *pbToBeEncrypted,
DWORD cbToBeEncrypted,
BYTE *pbEncryptedBlob,
524 DWORD *pcbEncryptedBlob)
532 TRACE(
"(%p, %d, %p, %p, %d, %p, %p)\n", pEncryptPara, cRecipientCert,
533 rgpRecipientCert, pbToBeEncrypted, cbToBeEncrypted, pbEncryptedBlob,
540 *pcbEncryptedBlob = 0;
545 memset(&envelopedInfo, 0,
sizeof(envelopedInfo));
546 envelopedInfo.
cbSize =
sizeof(envelopedInfo);
557 for (
i = 0;
i < cRecipientCert; ++
i)
558 certInfo[
i] = rgpRecipientCert[
i]->pCertInfo;
581 if (!
ret) *pcbEncryptedBlob = 0;
HCRYPTPROV_LEGACY hCryptProv
PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, DWORD dwCertEncodingType, DWORD dwFlags, DWORD dwType, const void *pvPara, PCCERT_CONTEXT pPrevCertContext)
PCRYPT_ATTRIBUTE rgUnauthAttr
PCERT_INFO * rgpRecipientCert
LONG WINAPI CryptGetMessageSignerCount(DWORD dwMsgEncodingType, const BYTE *pbSignedBlob, DWORD cbSignedBlob)
#define CRYPT_E_NOT_FOUND
static CERT_INFO * CRYPT_GetSignerCertInfoFromMsg(HCRYPTMSG msg, DWORD dwSignerIndex)
PCCERT_CONTEXT pSigningCert
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
GLuint GLuint GLsizei count
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
#define CERT_STORE_PROV_MSG
BOOL WINAPI CryptSignMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara, BOOL fDetachedSignature, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], BYTE *pbSignedBlob, DWORD *pcbSignedBlob)
#define PKCS_7_ASN_ENCODING
#define GET_CMSG_ENCODING_TYPE(x)
#define CMSG_COMPUTED_HASH_PARAM
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProv, DWORD *pdwKeySpec, BOOL *pfCallerFreeProv)
ULONG_PTR HCRYPTPROV_LEGACY
BOOL WINAPI CryptVerifyDetachedMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara, BYTE *pbDetachedHashBlob, DWORD cbDetachedHashBlob, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash, DWORD *pcbComputedHash)
HCRYPTPROV_LEGACY hCryptProv
HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo, PCMSG_STREAM_INFO pStreamInfo)
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
static PCCERT_CONTEXT CRYPT_GetSignerCertificate(HCRYPTMSG msg, PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, PCERT_INFO certInfo, HCERTSTORE store)
PCRYPT_ATTRIBUTE rgAuthAttr
static PCCERT_CONTEXT WINAPI CRYPT_DefaultGetSignerCertificate(void *pvGetArg, DWORD dwCertEncodingType, PCERT_INFO pSignerId, HCERTSTORE hMsgCertStore)
#define CRYPT_ACQUIRE_CACHE_FLAG
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags)
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm
static struct _test_info info[]
PCCERT_CONTEXT * rgpMsgCert
BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
#define CRYPT_E_UNEXPECTED_MSG_TYPE
#define CMSG_CTRL_VERIFY_SIGNATURE
#define CMSG_CTRL_VERIFY_HASH
PCCERT_CONTEXT(WINAPI * PFN_CRYPT_GET_SIGNER_CERTIFICATE)(_Inout_opt_ void *pvGetArg, _In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pSignerId, _In_ HCERTSTORE hMsgCertStore)
PCRYPT_ATTRIBUTE rgAuthAttr
PCCRL_CONTEXT * rgpMsgCrl
PFN_CRYPT_GET_SIGNER_CERTIFICATE pfnGetSignerCertificate
void * pvEncryptionAuxInfo
HCERTSTORE WINAPI CryptGetMessageCertificates(DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const BYTE *pbSignedBlob, DWORD cbSignedBlob)
WINE_DEFAULT_DEBUG_CHANNEL(crypt)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
BOOL WINAPI CryptEncryptMessage(PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeEncrypted, DWORD cbToBeEncrypted, BYTE *pbEncryptedBlob, DWORD *pcbEncryptedBlob)
#define CERT_FIND_SUBJECT_CERT
_In_ DWORD dwCertEncodingType
PCRYPT_ATTRIBUTE rgUnauthAttr
BOOL WINAPI CryptVerifyDetachedMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbDetachedSignBlob, DWORD cbDetachedSignBlob, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], PCCERT_CONTEXT *ppSignerCert)
#define CERT_STORE_PROV_PKCS7
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm
DWORD dwMsgAndCertEncodingType
BOOL WINAPI CryptHashMessage(PCRYPT_HASH_MESSAGE_PARA pHashPara, BOOL fDetachedHash, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbHashedBlob, DWORD *pcbHashedBlob, BYTE *pbComputedHash, DWORD *pcbComputedHash)
void * pvEncryptionAuxInfo
#define CMSG_CONTENT_PARAM
HCRYPTPROV_LEGACY hCryptProv
HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwMsgAndCertEncodingType, HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara)
VOID WINAPI CryptMemFree(LPVOID pv)
#define CMSG_DETACHED_FLAG
_In_ DWORD dwMsgAndCertEncodingType
BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg)
BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal)
CRYPT_ALGORITHM_IDENTIFIER ContentEncryptionAlgorithm
BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData)
#define CMSG_SIGNER_CERT_INFO_PARAM
BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, const BYTE *pbSignedBlob, DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded, PCCERT_CONTEXT *ppSignerCert)
HCRYPTMSG WINAPI CryptMsgOpenToEncode(DWORD dwMsgEncodingType, DWORD dwFlags, DWORD dwMsgType, const void *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, PCMSG_STREAM_INFO pStreamInfo)
HCRYPTPROV_LEGACY hCryptProv
BOOL WINAPI CryptVerifyMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara, BYTE *pbHashedBlob, DWORD cbHashedBlob, BYTE *pbToBeHashed, DWORD *pcbToBeHashed, BYTE *pbComputedHash, DWORD *pcbComputedHash)
BOOL WINAPI CryptMsgControl(HCRYPTMSG hCryptMsg, DWORD dwFlags, DWORD dwCtrlType, const void *pvCtrlPara)
#define CMSG_SIGNER_COUNT_PARAM
PCMSG_SIGNER_ENCODE_INFO rgSigners