From e09c7694fd53411af999951aa8a19c0a5880614c Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sat, 31 Jan 2009 14:28:46 +0000 Subject: [PATCH] sync crypt32 with wine 1.1.14 svn path=/trunk/; revision=39236 --- reactos/dll/win32/crypt32/cert.c | 269 ++++++++++++++++++-- reactos/dll/win32/crypt32/chain.c | 4 +- reactos/dll/win32/crypt32/collectionstore.c | 28 +- reactos/dll/win32/crypt32/context.c | 4 +- reactos/dll/win32/crypt32/crl.c | 14 +- reactos/dll/win32/crypt32/crypt32.spec | 7 +- reactos/dll/win32/crypt32/crypt32_En.rc | 1 + reactos/dll/win32/crypt32/crypt32_Nl.rc | 1 + reactos/dll/win32/crypt32/cryptres.h | 1 + reactos/dll/win32/crypt32/ctl.c | 23 +- reactos/dll/win32/crypt32/decode.c | 184 +++++++------ reactos/dll/win32/crypt32/encode.c | 170 ++++++------- reactos/dll/win32/crypt32/filestore.c | 26 +- reactos/dll/win32/crypt32/msg.c | 73 +++--- reactos/dll/win32/crypt32/object.c | 26 +- reactos/dll/win32/crypt32/oid.c | 27 +- reactos/dll/win32/crypt32/provstore.c | 10 +- reactos/dll/win32/crypt32/regstore.c | 16 +- reactos/dll/win32/crypt32/rootstore.c | 11 - reactos/dll/win32/crypt32/serialize.c | 32 ++- reactos/dll/win32/crypt32/store.c | 76 +++--- reactos/include/psdk/wincrypt.h | 31 +++ 22 files changed, 660 insertions(+), 374 deletions(-) diff --git a/reactos/dll/win32/crypt32/cert.c b/reactos/dll/win32/crypt32/cert.c index 8b5f2e85043..2780cba6343 100644 --- a/reactos/dll/win32/crypt32/cert.c +++ b/reactos/dll/win32/crypt32/cert.c @@ -27,6 +27,7 @@ #include "winnls.h" #include "rpc.h" #include "wine/debug.h" +#include "wine/unicode.h" #include "crypt32_private.h" WINE_DEFAULT_DEBUG_CHANNEL(crypt); @@ -83,7 +84,7 @@ PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType, ret = CryptDecodeObjectEx(dwCertEncodingType, X509_CERT_TO_BE_SIGNED, pbCertEncoded, cbCertEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL, - (BYTE *)&certInfo, &size); + &certInfo, &size); if (ret) { BYTE *data = NULL; @@ -107,20 +108,24 @@ PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType, } end: - return (PCCERT_CONTEXT)cert; + return cert; } PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext( PCCERT_CONTEXT pCertContext) { TRACE("(%p)\n", pCertContext); + + if (!pCertContext) + return NULL; + Context_AddRef((void *)pCertContext, sizeof(CERT_CONTEXT)); return pCertContext; } static void CertDataContext_Free(void *context) { - PCERT_CONTEXT certContext = (PCERT_CONTEXT)context; + PCERT_CONTEXT certContext = context; CryptMemFree(certContext->pbCertEncoded); LocalFree(certContext->pCertInfo); @@ -140,7 +145,7 @@ DWORD WINAPI CertEnumCertificateContextProperties(PCCERT_CONTEXT pCertContext, DWORD dwPropId) { PCONTEXT_PROPERTY_LIST properties = Context_GetProperties( - (void *)pCertContext, sizeof(CERT_CONTEXT)); + pCertContext, sizeof(CERT_CONTEXT)); DWORD ret; TRACE("(%p, %d)\n", pCertContext, dwPropId); @@ -191,7 +196,7 @@ static BOOL CertContext_CopyParam(void *pvData, DWORD *pcbData, const void *pb, static BOOL CertContext_GetProperty(void *context, DWORD dwPropId, void *pvData, DWORD *pcbData) { - PCCERT_CONTEXT pCertContext = (PCCERT_CONTEXT)context; + PCCERT_CONTEXT pCertContext = context; PCONTEXT_PROPERTY_LIST properties = Context_GetProperties(context, sizeof(CERT_CONTEXT)); BOOL ret; @@ -349,7 +354,7 @@ BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, ret = CertContext_GetProperty((void *)pCertContext, dwPropId, pvData, pcbData); if (ret && pvData) - CRYPT_FixKeyProvInfoPointers((PCRYPT_KEY_PROV_INFO)pvData); + CRYPT_FixKeyProvInfoPointers(pvData); break; default: ret = CertContext_GetProperty((void *)pCertContext, dwPropId, pvData, @@ -718,6 +723,218 @@ BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert, return ret; } +static BOOL key_prov_info_matches_cert(PCCERT_CONTEXT pCert, + const CRYPT_KEY_PROV_INFO *keyProvInfo) +{ + HCRYPTPROV csp; + BOOL matches = FALSE; + + if (CryptAcquireContextW(&csp, keyProvInfo->pwszContainerName, + keyProvInfo->pwszProvName, keyProvInfo->dwProvType, keyProvInfo->dwFlags)) + { + DWORD size; + + /* Need to sign something to verify the sig. What to sign? Why not + * the certificate itself? + */ + if (CryptSignAndEncodeCertificate(csp, AT_SIGNATURE, + pCert->dwCertEncodingType, X509_CERT_TO_BE_SIGNED, pCert->pCertInfo, + &pCert->pCertInfo->SignatureAlgorithm, NULL, NULL, &size)) + { + BYTE *certEncoded = CryptMemAlloc(size); + + if (certEncoded) + { + if (CryptSignAndEncodeCertificate(csp, AT_SIGNATURE, + pCert->dwCertEncodingType, X509_CERT_TO_BE_SIGNED, + pCert->pCertInfo, &pCert->pCertInfo->SignatureAlgorithm, + NULL, certEncoded, &size)) + { + if (size == pCert->cbCertEncoded && + !memcmp(certEncoded, pCert->pbCertEncoded, size)) + matches = TRUE; + } + CryptMemFree(certEncoded); + } + } + CryptReleaseContext(csp, 0); + } + return matches; +} + +static BOOL container_matches_cert(PCCERT_CONTEXT pCert, LPCSTR container, + CRYPT_KEY_PROV_INFO *keyProvInfo) +{ + CRYPT_KEY_PROV_INFO copy; + WCHAR containerW[MAX_PATH]; + BOOL matches = FALSE; + + MultiByteToWideChar(CP_ACP, 0, container, -1, + containerW, sizeof(containerW) / sizeof(containerW[0])); + /* We make a copy of the CRYPT_KEY_PROV_INFO because the caller expects + * keyProvInfo->pwszContainerName to be NULL or a heap-allocated container + * name. + */ + memcpy(©, keyProvInfo, sizeof(copy)); + copy.pwszContainerName = containerW; + matches = key_prov_info_matches_cert(pCert, ©); + if (matches) + { + keyProvInfo->pwszContainerName = + CryptMemAlloc((strlenW(containerW) + 1) * sizeof(WCHAR)); + if (keyProvInfo->pwszContainerName) + { + strcpyW(keyProvInfo->pwszContainerName, containerW); + keyProvInfo->dwKeySpec = AT_SIGNATURE; + } + else + matches = FALSE; + } + return matches; +} + +/* Searches the provider named keyProvInfo.pwszProvName for a container whose + * private key matches pCert's public key. Upon success, updates keyProvInfo + * with the matching container's info (free keyProvInfo.pwszContainerName upon + * success.) + * Returns TRUE if found, FALSE if not. + */ +static BOOL find_key_prov_info_in_provider(PCCERT_CONTEXT pCert, + CRYPT_KEY_PROV_INFO *keyProvInfo) +{ + HCRYPTPROV defProvider; + BOOL ret, found = FALSE; + char containerA[MAX_PATH]; + + assert(keyProvInfo->pwszContainerName == NULL); + if ((ret = CryptAcquireContextW(&defProvider, NULL, + keyProvInfo->pwszProvName, keyProvInfo->dwProvType, + keyProvInfo->dwFlags | CRYPT_VERIFYCONTEXT))) + { + DWORD enumFlags = keyProvInfo->dwFlags | CRYPT_FIRST; + + while (ret && !found) + { + DWORD size = sizeof(containerA); + + ret = CryptGetProvParam(defProvider, PP_ENUMCONTAINERS, + (BYTE *)containerA, &size, enumFlags); + if (ret) + found = container_matches_cert(pCert, containerA, keyProvInfo); + if (enumFlags & CRYPT_FIRST) + { + enumFlags &= ~CRYPT_FIRST; + enumFlags |= CRYPT_NEXT; + } + } + CryptReleaseContext(defProvider, 0); + } + return found; +} + +static BOOL find_matching_provider(PCCERT_CONTEXT pCert, DWORD dwFlags) +{ + BOOL found = FALSE, ret = TRUE; + DWORD index = 0, cbProvName = 0; + CRYPT_KEY_PROV_INFO keyProvInfo; + + TRACE("(%p, %08x)\n", pCert, dwFlags); + + memset(&keyProvInfo, 0, sizeof(keyProvInfo)); + while (ret && !found) + { + DWORD size = 0; + + ret = CryptEnumProvidersW(index, NULL, 0, &keyProvInfo.dwProvType, + NULL, &size); + if (ret) + { + if (size <= cbProvName) + ret = CryptEnumProvidersW(index, NULL, 0, + &keyProvInfo.dwProvType, keyProvInfo.pwszProvName, &size); + else + { + CryptMemFree(keyProvInfo.pwszProvName); + keyProvInfo.pwszProvName = CryptMemAlloc(size); + if (keyProvInfo.pwszProvName) + { + cbProvName = size; + ret = CryptEnumProvidersW(index, NULL, 0, + &keyProvInfo.dwProvType, keyProvInfo.pwszProvName, &size); + if (ret) + { + if (dwFlags & CRYPT_FIND_SILENT_KEYSET_FLAG) + keyProvInfo.dwFlags |= CRYPT_SILENT; + if (dwFlags & CRYPT_FIND_USER_KEYSET_FLAG || + !(dwFlags & (CRYPT_FIND_USER_KEYSET_FLAG | + CRYPT_FIND_MACHINE_KEYSET_FLAG))) + { + keyProvInfo.dwFlags |= CRYPT_USER_KEYSET; + found = find_key_prov_info_in_provider(pCert, + &keyProvInfo); + } + if (!found) + { + if (dwFlags & CRYPT_FIND_MACHINE_KEYSET_FLAG || + !(dwFlags & (CRYPT_FIND_USER_KEYSET_FLAG | + CRYPT_FIND_MACHINE_KEYSET_FLAG))) + { + keyProvInfo.dwFlags &= ~CRYPT_USER_KEYSET; + keyProvInfo.dwFlags |= CRYPT_MACHINE_KEYSET; + found = find_key_prov_info_in_provider(pCert, + &keyProvInfo); + } + } + } + } + else + ret = FALSE; + } + index++; + } + } + if (found) + CertSetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, + 0, &keyProvInfo); + CryptMemFree(keyProvInfo.pwszProvName); + CryptMemFree(keyProvInfo.pwszContainerName); + return found; +} + +static BOOL cert_prov_info_matches_cert(PCCERT_CONTEXT pCert) +{ + BOOL matches = FALSE; + DWORD size; + + if (CertGetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, + NULL, &size)) + { + CRYPT_KEY_PROV_INFO *keyProvInfo = CryptMemAlloc(size); + + if (keyProvInfo) + { + if (CertGetCertificateContextProperty(pCert, + CERT_KEY_PROV_INFO_PROP_ID, keyProvInfo, &size)) + matches = key_prov_info_matches_cert(pCert, keyProvInfo); + CryptMemFree(keyProvInfo); + } + } + return matches; +} + +BOOL WINAPI CryptFindCertificateKeyProvInfo(PCCERT_CONTEXT pCert, + DWORD dwFlags, void *pvReserved) +{ + BOOL matches = FALSE; + + TRACE("(%p, %08x, %p)\n", pCert, dwFlags, pvReserved); + + matches = cert_prov_info_matches_cert(pCert); + if (!matches) + matches = find_matching_provider(pCert, dwFlags); + return matches; +} + BOOL WINAPI CertCompareCertificate(DWORD dwCertEncodingType, PCERT_INFO pCertId1, PCERT_INFO pCertId2) { @@ -920,7 +1137,7 @@ static BOOL compare_cert_by_md5_hash(PCCERT_CONTEXT pCertContext, DWORD dwType, CERT_MD5_HASH_PROP_ID, hash, &size); if (ret) { - const CRYPT_HASH_BLOB *pHash = (const CRYPT_HASH_BLOB *)pvPara; + const CRYPT_HASH_BLOB *pHash = pvPara; if (size == pHash->cbData) ret = !memcmp(pHash->pbData, hash, size); @@ -941,7 +1158,7 @@ static BOOL compare_cert_by_sha1_hash(PCCERT_CONTEXT pCertContext, DWORD dwType, CERT_SHA1_HASH_PROP_ID, hash, &size); if (ret) { - const CRYPT_HASH_BLOB *pHash = (const CRYPT_HASH_BLOB *)pvPara; + const CRYPT_HASH_BLOB *pHash = pvPara; if (size == pHash->cbData) ret = !memcmp(pHash->pbData, hash, size); @@ -966,6 +1183,17 @@ static BOOL compare_cert_by_name(PCCERT_CONTEXT pCertContext, DWORD dwType, return ret; } +static BOOL compare_cert_by_public_key(PCCERT_CONTEXT pCertContext, + DWORD dwType, DWORD dwFlags, const void *pvPara) +{ + CERT_PUBLIC_KEY_INFO *publicKey = (CERT_PUBLIC_KEY_INFO *)pvPara; + BOOL ret; + + ret = CertComparePublicKeyInfo(pCertContext->dwCertEncodingType, + &pCertContext->pCertInfo->SubjectPublicKeyInfo, publicKey); + return ret; +} + static BOOL compare_cert_by_subject_cert(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara) { @@ -1043,7 +1271,7 @@ static BOOL compare_cert_by_issuer(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara) { BOOL ret = FALSE; - PCCERT_CONTEXT subject = (PCCERT_CONTEXT)pvPara; + PCCERT_CONTEXT subject = pvPara; PCERT_EXTENSION ext; DWORD size; @@ -1146,7 +1374,7 @@ static BOOL compare_cert_by_issuer(PCCERT_CONTEXT pCertContext, DWORD dwType, static BOOL compare_existing_cert(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara) { - PCCERT_CONTEXT toCompare = (PCCERT_CONTEXT)pvPara; + PCCERT_CONTEXT toCompare = pvPara; return CertCompareCertificate(pCertContext->dwCertEncodingType, pCertContext->pCertInfo, toCompare->pCertInfo); } @@ -1154,7 +1382,7 @@ static BOOL compare_existing_cert(PCCERT_CONTEXT pCertContext, DWORD dwType, static BOOL compare_cert_by_signature_hash(PCCERT_CONTEXT pCertContext, DWORD dwType, DWORD dwFlags, const void *pvPara) { - const CRYPT_HASH_BLOB *hash = (const CRYPT_HASH_BLOB *)pvPara; + const CRYPT_HASH_BLOB *hash = pvPara; DWORD size = 0; BOOL ret; @@ -1201,6 +1429,9 @@ PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, case CERT_COMPARE_NAME: compare = compare_cert_by_name; break; + case CERT_COMPARE_PUBLIC_KEY: + compare = compare_cert_by_public_key; + break; case CERT_COMPARE_SUBJECT_CERT: compare = compare_cert_by_subject_cert; break; @@ -1586,7 +1817,7 @@ BOOL WINAPI CryptHashToBeSigned(HCRYPTPROV_LEGACY hCryptProv, pbEncoded, cbEncoded, pbComputedHash, *pcbComputedHash); ret = CryptDecodeObjectEx(dwCertEncodingType, X509_CERT, - pbEncoded, cbEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL, (void *)&info, &size); + pbEncoded, cbEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL, &info, &size); if (ret) { PCCRYPT_OID_INFO oidInfo; @@ -1808,7 +2039,7 @@ BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, { case CRYPT_VERIFY_CERT_SIGN_SUBJECT_BLOB: { - PCRYPT_DATA_BLOB blob = (PCRYPT_DATA_BLOB)pvSubject; + PCRYPT_DATA_BLOB blob = pvSubject; subjectBlob.pbData = blob->pbData; subjectBlob.cbData = blob->cbData; @@ -1816,7 +2047,7 @@ BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, } case CRYPT_VERIFY_CERT_SIGN_SUBJECT_CERT: { - PCERT_CONTEXT context = (PCERT_CONTEXT)pvSubject; + PCERT_CONTEXT context = pvSubject; subjectBlob.pbData = context->pbCertEncoded; subjectBlob.cbData = context->cbCertEncoded; @@ -1824,7 +2055,7 @@ BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, } case CRYPT_VERIFY_CERT_SIGN_SUBJECT_CRL: { - PCRL_CONTEXT context = (PCRL_CONTEXT)pvSubject; + PCRL_CONTEXT context = pvSubject; subjectBlob.pbData = context->pbCrlEncoded; subjectBlob.cbData = context->cbCrlEncoded; @@ -1843,14 +2074,14 @@ BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, ret = CryptDecodeObjectEx(dwCertEncodingType, X509_CERT, subjectBlob.pbData, subjectBlob.cbData, CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_NOCOPY_FLAG, NULL, - (BYTE *)&signedCert, &size); + &signedCert, &size); if (ret) { switch (dwIssuerType) { case CRYPT_VERIFY_CERT_SIGN_ISSUER_PUBKEY: ret = CRYPT_VerifyCertSignatureFromPublicKeyInfo(hCryptProv, - dwCertEncodingType, (PCERT_PUBLIC_KEY_INFO)pvIssuer, + dwCertEncodingType, pvIssuer, signedCert); break; case CRYPT_VERIFY_CERT_SIGN_ISSUER_CERT: @@ -2458,7 +2689,7 @@ static PCCERT_CONTEXT CRYPT_CreateSignedCert(const CRYPT_DER_BLOB *blob, signedInfo.Signature.cUnusedBits = 0; ret = CryptEncodeObjectEx(X509_ASN_ENCODING, X509_CERT, &signedInfo, CRYPT_ENCODE_ALLOC_FLAG, NULL, - (BYTE *)&encodedSignedCert, &encodedSignedCertSize); + &encodedSignedCert, &encodedSignedCertSize); if (ret) { context = CertCreateCertificateContext(X509_ASN_ENCODING, @@ -2687,7 +2918,7 @@ PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HAN CRYPT_MakeCertInfo(&info, &serialBlob, pSubjectIssuerBlob, pSignatureAlgorithm, pStartTime, pEndTime, pubKey, pExtensions); ret = CryptEncodeObjectEx(X509_ASN_ENCODING, X509_CERT_TO_BE_SIGNED, - &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&blob.pbData, + &info, CRYPT_ENCODE_ALLOC_FLAG, NULL, &blob.pbData, &blob.cbData); if (ret) { diff --git a/reactos/dll/win32/crypt32/chain.c b/reactos/dll/win32/crypt32/chain.c index e7133620573..6d7bb54e2d6 100644 --- a/reactos/dll/win32/crypt32/chain.c +++ b/reactos/dll/win32/crypt32/chain.c @@ -144,7 +144,7 @@ HCERTCHAINENGINE CRYPT_CreateChainEngine(HCERTSTORE root, else engine->CycleDetectionModulus = DEFAULT_CYCLE_MODULUS; } - return (HCERTCHAINENGINE)engine; + return engine; } BOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig, @@ -383,7 +383,7 @@ static BOOL CRYPT_DecodeBasicConstraints(PCCERT_CONTEXT cert, ret = CryptDecodeObjectEx(X509_ASN_ENCODING, szOID_BASIC_CONSTRAINTS, ext->Value.pbData, ext->Value.cbData, CRYPT_DECODE_ALLOC_FLAG, - NULL, (LPBYTE)&info, &size); + NULL, &info, &size); if (ret) { if (info->SubjectType.cbData == 1) diff --git a/reactos/dll/win32/crypt32/collectionstore.c b/reactos/dll/win32/crypt32/collectionstore.c index 41b644a841e..12eb7c3f7aa 100644 --- a/reactos/dll/win32/crypt32/collectionstore.c +++ b/reactos/dll/win32/crypt32/collectionstore.c @@ -42,7 +42,7 @@ typedef struct _WINE_COLLECTIONSTORE static void WINAPI CRYPT_CollectionCloseStore(HCERTSTORE store, DWORD dwFlags) { - PWINE_COLLECTIONSTORE cs = (PWINE_COLLECTIONSTORE)store; + PWINE_COLLECTIONSTORE cs = store; PWINE_STORE_LIST_ENTRY entry, next; TRACE("(%p, %08x)\n", store, dwFlags); @@ -51,12 +51,12 @@ static void WINAPI CRYPT_CollectionCloseStore(HCERTSTORE store, DWORD dwFlags) entry) { TRACE("closing %p\n", entry); - CertCloseStore((HCERTSTORE)entry->store, dwFlags); + CertCloseStore(entry->store, dwFlags); CryptMemFree(entry); } cs->cs.DebugInfo->Spare[0] = 0; DeleteCriticalSection(&cs->cs); - CRYPT_FreeStore((PWINECRYPT_CERTSTORE)store); + CRYPT_FreeStore(store); } static void *CRYPT_CollectionCreateContextFromChild(PWINE_COLLECTIONSTORE store, @@ -95,7 +95,7 @@ static BOOL CRYPT_CollectionAddContext(PWINE_COLLECTIONSTORE store, contextFuncs = (PCONTEXT_FUNCS)((LPBYTE)storeEntry->store + contextFuncsOffset); ret = contextFuncs->addContext(storeEntry->store, context, - existingLinked, childContext); + existingLinked, (const void **)&childContext); } else { @@ -205,7 +205,7 @@ static BOOL CRYPT_CollectionAddCert(PWINECRYPT_CERTSTORE store, void *cert, context->hCertStore = store; *ppStoreContext = context; } - CertFreeCertificateContext((PCCERT_CONTEXT)childContext); + CertFreeCertificateContext(childContext); return ret; } @@ -258,7 +258,7 @@ static BOOL CRYPT_CollectionDeleteCert(PWINECRYPT_CERTSTORE store, TRACE("(%p, %p)\n", store, pCertContext); - ret = CertDeleteCertificateFromStore((PCCERT_CONTEXT) + ret = CertDeleteCertificateFromStore( Context_GetLinkedContext(pCertContext, sizeof(CERT_CONTEXT))); return ret; } @@ -284,7 +284,7 @@ static BOOL CRYPT_CollectionAddCRL(PWINECRYPT_CERTSTORE store, void *crl, context->hCertStore = store; *ppStoreContext = context; } - CertFreeCRLContext((PCCRL_CONTEXT)childContext); + CertFreeCRLContext(childContext); return ret; } @@ -336,7 +336,7 @@ static BOOL CRYPT_CollectionDeleteCRL(PWINECRYPT_CERTSTORE store, TRACE("(%p, %p)\n", store, pCrlContext); - ret = CertDeleteCRLFromStore((PCCRL_CONTEXT) + ret = CertDeleteCRLFromStore( Context_GetLinkedContext(pCrlContext, sizeof(CRL_CONTEXT))); return ret; } @@ -362,7 +362,7 @@ static BOOL CRYPT_CollectionAddCTL(PWINECRYPT_CERTSTORE store, void *ctl, context->hCertStore = store; *ppStoreContext = context; } - CertFreeCTLContext((PCCTL_CONTEXT)childContext); + CertFreeCTLContext(childContext); return ret; } @@ -414,7 +414,7 @@ static BOOL CRYPT_CollectionDeleteCTL(PWINECRYPT_CERTSTORE store, TRACE("(%p, %p)\n", store, pCtlContext); - ret = CertDeleteCTLFromStore((PCCTL_CONTEXT) + ret = CertDeleteCTLFromStore( Context_GetLinkedContext(pCtlContext, sizeof(CTL_CONTEXT))); return ret; } @@ -457,8 +457,8 @@ PWINECRYPT_CERTSTORE CRYPT_CollectionOpenStore(HCRYPTPROV hCryptProv, BOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority) { - PWINE_COLLECTIONSTORE collection = (PWINE_COLLECTIONSTORE)hCollectionStore; - WINECRYPT_CERTSTORE *sibling = (WINECRYPT_CERTSTORE *)hSiblingStore; + PWINE_COLLECTIONSTORE collection = hCollectionStore; + WINECRYPT_CERTSTORE *sibling = hSiblingStore; PWINE_STORE_LIST_ENTRY entry; BOOL ret; @@ -525,8 +525,8 @@ BOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore, void WINAPI CertRemoveStoreFromCollection(HCERTSTORE hCollectionStore, HCERTSTORE hSiblingStore) { - PWINE_COLLECTIONSTORE collection = (PWINE_COLLECTIONSTORE)hCollectionStore; - WINECRYPT_CERTSTORE *sibling = (WINECRYPT_CERTSTORE *)hSiblingStore; + PWINE_COLLECTIONSTORE collection = hCollectionStore; + WINECRYPT_CERTSTORE *sibling = hSiblingStore; PWINE_STORE_LIST_ENTRY store, next; TRACE("(%p, %p)\n", hCollectionStore, hSiblingStore); diff --git a/reactos/dll/win32/crypt32/context.c b/reactos/dll/win32/crypt32/context.c index fa7922f84e0..f7ebebb1c48 100644 --- a/reactos/dll/win32/crypt32/context.c +++ b/reactos/dll/win32/crypt32/context.c @@ -171,8 +171,8 @@ void Context_CopyProperties(const void *to, const void *from, { PCONTEXT_PROPERTY_LIST toProperties, fromProperties; - toProperties = Context_GetProperties((void *)to, contextSize); - fromProperties = Context_GetProperties((void *)from, contextSize); + toProperties = Context_GetProperties(to, contextSize); + fromProperties = Context_GetProperties(from, contextSize); assert(toProperties && fromProperties); ContextPropertyList_Copy(toProperties, fromProperties); } diff --git a/reactos/dll/win32/crypt32/crl.c b/reactos/dll/win32/crypt32/crl.c index a1138b5ed67..271e4e0c1b4 100644 --- a/reactos/dll/win32/crypt32/crl.c +++ b/reactos/dll/win32/crypt32/crl.c @@ -45,7 +45,7 @@ PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType, } ret = CryptDecodeObjectEx(dwCertEncodingType, X509_CERT_CRL_TO_BE_SIGNED, pbCrlEncoded, cbCrlEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL, - (BYTE *)&crlInfo, &size); + &crlInfo, &size); if (ret) { BYTE *data = NULL; @@ -69,7 +69,7 @@ PCCRL_CONTEXT WINAPI CertCreateCRLContext(DWORD dwCertEncodingType, } end: - return (PCCRL_CONTEXT)crl; + return crl; } BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore, @@ -110,7 +110,7 @@ static BOOL compare_crl_issued_by(PCCRL_CONTEXT pCrlContext, DWORD dwType, if (pvPara) { - PCCERT_CONTEXT issuer = (PCCERT_CONTEXT)pvPara; + PCCERT_CONTEXT issuer = pvPara; ret = CertCompareCertificateName(issuer->dwCertEncodingType, &issuer->pCertInfo->Issuer, &pCrlContext->pCrlInfo->Issuer); @@ -127,7 +127,7 @@ static BOOL compare_crl_existing(PCCRL_CONTEXT pCrlContext, DWORD dwType, if (pvPara) { - PCCRL_CONTEXT crl = (PCCRL_CONTEXT)pvPara; + PCCRL_CONTEXT crl = pvPara; ret = CertCompareCertificateName(pCrlContext->dwCertEncodingType, &pCrlContext->pCrlInfo->Issuer, &crl->pCrlInfo->Issuer); @@ -234,7 +234,7 @@ PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext) static void CrlDataContext_Free(void *context) { - PCRL_CONTEXT crlContext = (PCRL_CONTEXT)context; + PCRL_CONTEXT crlContext = context; CryptMemFree(crlContext->pbCrlEncoded); LocalFree(crlContext->pCrlInfo); @@ -254,7 +254,7 @@ DWORD WINAPI CertEnumCRLContextProperties(PCCRL_CONTEXT pCRLContext, DWORD dwPropId) { PCONTEXT_PROPERTY_LIST properties = Context_GetProperties( - (void *)pCRLContext, sizeof(CRL_CONTEXT)); + pCRLContext, sizeof(CRL_CONTEXT)); DWORD ret; TRACE("(%p, %d)\n", pCRLContext, dwPropId); @@ -428,7 +428,7 @@ static BOOL CRLContext_SetProperty(PCCRL_CONTEXT context, DWORD dwPropId, } case CERT_DATE_STAMP_PROP_ID: ret = ContextPropertyList_SetProperty(properties, dwPropId, - (const BYTE *)pvData, sizeof(FILETIME)); + pvData, sizeof(FILETIME)); break; default: FIXME("%d: stub\n", dwPropId); diff --git a/reactos/dll/win32/crypt32/crypt32.spec b/reactos/dll/win32/crypt32/crypt32.spec index 3f9ac98e99c..3591d17d234 100644 --- a/reactos/dll/win32/crypt32/crypt32.spec +++ b/reactos/dll/win32/crypt32/crypt32.spec @@ -118,6 +118,7 @@ @ stub CryptExportPKCS8 @ stdcall CryptExportPublicKeyInfo(long long long ptr ptr) @ stdcall CryptExportPublicKeyInfoEx(long long long str long ptr ptr ptr) +@ stdcall CryptFindCertificateKeyProvInfo(ptr long ptr) @ stdcall CryptFindLocalizedName(wstr) @ stdcall CryptFindOIDInfo(long ptr long) @ stdcall CryptFormatObject(long long long ptr str ptr long ptr ptr) @@ -216,8 +217,10 @@ @ stdcall I_CryptSetTls(long ptr) @ stdcall I_CryptUninstallAsn1Module(long) @ stub I_CryptUninstallOssGlobal -@ stub PFXExportCertStore -@ stub PFXImportCertStore +@ stdcall PFXExportCertStore(ptr ptr ptr long) +@ stdcall PFXExportCertStoreEx(ptr ptr ptr ptr long) +@ stdcall PFXImportCertStore(ptr ptr long) +@ stdcall PFXIsPFXBlob(ptr) @ stub RegCreateHKCUKeyExU @ stub RegCreateKeyExU @ stub RegDeleteValueU diff --git a/reactos/dll/win32/crypt32/crypt32_En.rc b/reactos/dll/win32/crypt32/crypt32_En.rc index ace77d265bb..e24ce860f67 100644 --- a/reactos/dll/win32/crypt32/crypt32_En.rc +++ b/reactos/dll/win32/crypt32/crypt32_En.rc @@ -171,6 +171,7 @@ STRINGTABLE DISCARDABLE IDS_LOCALIZEDNAME_MY "Personal" IDS_LOCALIZEDNAME_CA "Intermediate Certification Authorities" IDS_LOCALIZEDNAME_ADDRESSBOOK "Other People" + IDS_LOCALIZEDNAME_TRUSTEDPUBLISHER "Trusted Publishers" } STRINGTABLE DISCARDABLE diff --git a/reactos/dll/win32/crypt32/crypt32_Nl.rc b/reactos/dll/win32/crypt32/crypt32_Nl.rc index c9857f80f24..fe3fa45c85b 100644 --- a/reactos/dll/win32/crypt32/crypt32_Nl.rc +++ b/reactos/dll/win32/crypt32/crypt32_Nl.rc @@ -171,6 +171,7 @@ STRINGTABLE DISCARDABLE IDS_LOCALIZEDNAME_MY "Persoonlijk" IDS_LOCALIZEDNAME_CA "Certificatie Tussen-Autoriteiten" IDS_LOCALIZEDNAME_ADDRESSBOOK "Overige Personen" + IDS_LOCALIZEDNAME_TRUSTEDPUBLISHER "Vertrouwde uitgevers" } STRINGTABLE DISCARDABLE { diff --git a/reactos/dll/win32/crypt32/cryptres.h b/reactos/dll/win32/crypt32/cryptres.h index 6d0ac46b420..fe2fd91b580 100644 --- a/reactos/dll/win32/crypt32/cryptres.h +++ b/reactos/dll/win32/crypt32/cryptres.h @@ -164,6 +164,7 @@ #define IDS_LOCALIZEDNAME_MY 1142 #define IDS_LOCALIZEDNAME_CA 1143 #define IDS_LOCALIZEDNAME_ADDRESSBOOK 1144 +#define IDS_LOCALIZEDNAME_TRUSTEDPUBLISHER 1145 #define IDS_KEY_ID 1200 #define IDS_CERT_ISSUER 1201 diff --git a/reactos/dll/win32/crypt32/ctl.c b/reactos/dll/win32/crypt32/ctl.c index 42abcd73346..5a6d19b64fe 100644 --- a/reactos/dll/win32/crypt32/ctl.c +++ b/reactos/dll/win32/crypt32/ctl.c @@ -36,7 +36,7 @@ BOOL WINAPI CertAddCTLContextToStore(HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, PCCTL_CONTEXT* ppStoreContext) { - PWINECRYPT_CERTSTORE store = (PWINECRYPT_CERTSTORE)hCertStore; + PWINECRYPT_CERTSTORE store = hCertStore; BOOL ret = TRUE; PCCTL_CONTEXT toAdd = NULL, existing = NULL; @@ -161,7 +161,7 @@ BOOL WINAPI CertAddEncodedCTLToStore(HCERTSTORE hCertStore, PCCTL_CONTEXT WINAPI CertEnumCTLsInStore(HCERTSTORE hCertStore, PCCTL_CONTEXT pPrev) { - WINECRYPT_CERTSTORE *hcs = (WINECRYPT_CERTSTORE *)hCertStore; + WINECRYPT_CERTSTORE *hcs = hCertStore; PCCTL_CONTEXT ret; TRACE("(%p, %p)\n", hCertStore, pPrev); @@ -194,7 +194,7 @@ static BOOL compare_ctl_by_md5_hash(PCCTL_CONTEXT pCtlContext, DWORD dwType, &size); if (ret) { - const CRYPT_HASH_BLOB *pHash = (const CRYPT_HASH_BLOB *)pvPara; + const CRYPT_HASH_BLOB *pHash = pvPara; if (size == pHash->cbData) ret = !memcmp(pHash->pbData, hash, size); @@ -215,7 +215,7 @@ static BOOL compare_ctl_by_sha1_hash(PCCTL_CONTEXT pCtlContext, DWORD dwType, &size); if (ret) { - const CRYPT_HASH_BLOB *pHash = (const CRYPT_HASH_BLOB *)pvPara; + const CRYPT_HASH_BLOB *pHash = pvPara; if (size == pHash->cbData) ret = !memcmp(pHash->pbData, hash, size); @@ -232,7 +232,7 @@ static BOOL compare_ctl_existing(PCCTL_CONTEXT pCtlContext, DWORD dwType, if (pvPara) { - PCCTL_CONTEXT ctl = (PCCTL_CONTEXT)pvPara; + PCCTL_CONTEXT ctl = pvPara; if (pCtlContext->cbCtlContext == ctl->cbCtlContext) { @@ -315,8 +315,7 @@ BOOL WINAPI CertDeleteCTLFromStore(PCCTL_CONTEXT pCtlContext) } else { - PWINECRYPT_CERTSTORE hcs = - (PWINECRYPT_CERTSTORE)pCtlContext->hCertStore; + PWINECRYPT_CERTSTORE hcs = pCtlContext->hCertStore; if (hcs->dwMagic != WINE_CRYPTCERTSTORE_MAGIC) ret = FALSE; @@ -400,7 +399,7 @@ PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType, { ret = CryptDecodeObjectEx(dwMsgAndCertEncodingType, PKCS_CTL, content, contentSize, CRYPT_DECODE_ALLOC_FLAG, NULL, - (BYTE *)&ctlInfo, &size); + &ctlInfo, &size); if (ret) { ctl = Context_CreateDataContext(sizeof(CTL_CONTEXT)); @@ -450,7 +449,7 @@ end: CryptMemFree(content); CryptMsgClose(msg); } - return (PCCTL_CONTEXT)ctl; + return ctl; } PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext) @@ -462,7 +461,7 @@ PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext) static void CTLDataContext_Free(void *context) { - PCTL_CONTEXT ctlContext = (PCTL_CONTEXT)context; + PCTL_CONTEXT ctlContext = context; CryptMsgClose(ctlContext->hCryptMsg); CryptMemFree(ctlContext->pbCtlEncoded); @@ -484,7 +483,7 @@ DWORD WINAPI CertEnumCTLContextProperties(PCCTL_CONTEXT pCTLContext, DWORD dwPropId) { PCONTEXT_PROPERTY_LIST properties = Context_GetProperties( - (void *)pCTLContext, sizeof(CTL_CONTEXT)); + pCTLContext, sizeof(CTL_CONTEXT)); DWORD ret; TRACE("(%p, %d)\n", pCTLContext, dwPropId); @@ -656,7 +655,7 @@ static BOOL CTLContext_SetProperty(PCCTL_CONTEXT context, DWORD dwPropId, } case CERT_DATE_STAMP_PROP_ID: ret = ContextPropertyList_SetProperty(properties, dwPropId, - (const BYTE *)pvData, sizeof(FILETIME)); + pvData, sizeof(FILETIME)); break; default: FIXME("%d: stub\n", dwPropId); diff --git a/reactos/dll/win32/crypt32/decode.c b/reactos/dll/win32/crypt32/decode.c index fa06510a350..cda8b62aed1 100644 --- a/reactos/dll/win32/crypt32/decode.c +++ b/reactos/dll/win32/crypt32/decode.c @@ -537,7 +537,7 @@ static BOOL CRYPT_AsnDecodeSequence(struct AsnDecodeSequenceItem items[], if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; if (startingPointer) - nextData = (BYTE *)startingPointer; + nextData = startingPointer; else nextData = (BYTE *)pvStructInfo + structSize; memset(pvStructInfo, 0, structSize); @@ -704,7 +704,7 @@ static BOOL CRYPT_AsnDecodeArray(const struct AsnArrayDescriptor *arrayDesc, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - array = (struct GenericArray *)pvStructInfo; + array = pvStructInfo; array->cItems = cItems; if (startingPointer) array->rgItems = startingPointer; @@ -779,7 +779,7 @@ static BOOL CRYPT_AsnDecodeDerBlob(const BYTE *pbEncoded, DWORD cbEncoded, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - blob = (CRYPT_DER_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->cbData = 1 + lenBytes + dataLen; if (blob->cbData) { @@ -819,7 +819,7 @@ static BOOL CRYPT_AsnDecodeBitsSwapBytes(const BYTE *pbEncoded, pcbDecoded); if (ret && pvStructInfo) { - CRYPT_BIT_BLOB *blob = (CRYPT_BIT_BLOB *)pvStructInfo; + CRYPT_BIT_BLOB *blob = pvStructInfo; if (blob->cbData) { @@ -985,7 +985,7 @@ static BOOL CRYPT_AsnDecodeCertInfo(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) info = *(CERT_INFO **)pvStructInfo; else - info = (CERT_INFO *)pvStructInfo; + info = pvStructInfo; if (!info->SerialNumber.cbData || !info->Issuer.cbData || !info->Subject.cbData) { @@ -1021,7 +1021,7 @@ static BOOL WINAPI CRYPT_AsnDecodeCert(DWORD dwCertEncodingType, ret = CRYPT_AsnDecodeCertSignedContent(dwCertEncodingType, X509_CERT, pbEncoded, cbEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL, - (BYTE *)&signedCert, &size); + &signedCert, &size); if (ret) { size = 0; @@ -1065,7 +1065,7 @@ static BOOL CRYPT_AsnDecodeCRLEntry(const BYTE *pbEncoded, DWORD cbEncoded, CRYPT_AsnDecodeExtensionsInternal, sizeof(CERT_EXTENSIONS), TRUE, TRUE, offsetof(CRL_ENTRY, rgExtension), 0 }, }; - PCRL_ENTRY entry = (PCRL_ENTRY)pvStructInfo; + PCRL_ENTRY entry = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, entry, *pcbStructInfo); @@ -1092,7 +1092,7 @@ static BOOL CRYPT_AsnDecodeCRLEntries(const BYTE *pbEncoded, DWORD cbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_SEQUENCEOF, CRYPT_AsnDecodeCRLEntry, sizeof(CRL_ENTRY), TRUE, offsetof(CRL_ENTRY, SerialNumber.pbData) }; - struct GenericArray *entries = (struct GenericArray *)pvStructInfo; + struct GenericArray *entries = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -1161,7 +1161,7 @@ static BOOL WINAPI CRYPT_AsnDecodeCRL(DWORD dwCertEncodingType, ret = CRYPT_AsnDecodeCertSignedContent(dwCertEncodingType, X509_CERT, pbEncoded, cbEncoded, CRYPT_DECODE_ALLOC_FLAG, NULL, - (BYTE *)&signedCrl, &size); + &signedCrl, &size); if (ret) { size = 0; @@ -1331,7 +1331,7 @@ static BOOL CRYPT_AsnDecodeExtension(const BYTE *pbEncoded, DWORD cbEncoded, offsetof(CERT_EXTENSION, Value.pbData) }, }; BOOL ret = TRUE; - PCERT_EXTENSION ext = (PCERT_EXTENSION)pvStructInfo; + PCERT_EXTENSION ext = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, ext, *pcbStructInfo); @@ -1356,7 +1356,7 @@ static BOOL CRYPT_AsnDecodeExtensionsInternal(const BYTE *pbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_SEQUENCEOF, CRYPT_AsnDecodeExtension, sizeof(CERT_EXTENSION), TRUE, offsetof(CERT_EXTENSION, pszObjId) }; - PCERT_EXTENSIONS exts = (PCERT_EXTENSIONS)pvStructInfo; + PCERT_EXTENSIONS exts = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -1387,7 +1387,7 @@ static BOOL WINAPI CRYPT_AsnDecodeExtensions(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - exts = (CERT_EXTENSIONS *)pvStructInfo; + exts = pvStructInfo; exts->rgExtension = (CERT_EXTENSION *)((BYTE *)exts + sizeof(CERT_EXTENSIONS)); ret = CRYPT_AsnDecodeExtensionsInternal(pbEncoded, cbEncoded, @@ -1415,7 +1415,7 @@ static BOOL CRYPT_AsnDecodeNameValueInternal(const BYTE *pbEncoded, { BOOL ret = TRUE; DWORD dataLen; - CERT_NAME_VALUE *value = (CERT_NAME_VALUE *)pvStructInfo; + CERT_NAME_VALUE *value = pvStructInfo; if ((ret = CRYPT_GetLen(pbEncoded, cbEncoded, &dataLen))) { @@ -1579,7 +1579,7 @@ static BOOL WINAPI CRYPT_AsnDecodeNameValue(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - value = (CERT_NAME_VALUE *)pvStructInfo; + value = pvStructInfo; value->Value.pbData = ((BYTE *)value + sizeof(CERT_NAME_VALUE)); ret = CRYPT_AsnDecodeNameValueInternal( pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo, @@ -1602,7 +1602,7 @@ static BOOL CRYPT_AsnDecodeUnicodeNameValueInternal(const BYTE *pbEncoded, { BOOL ret = TRUE; DWORD dataLen; - CERT_NAME_VALUE *value = (CERT_NAME_VALUE *)pvStructInfo; + CERT_NAME_VALUE *value = pvStructInfo; if ((ret = CRYPT_GetLen(pbEncoded, cbEncoded, &dataLen))) { @@ -1761,7 +1761,7 @@ static BOOL WINAPI CRYPT_AsnDecodeUnicodeNameValue(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - value = (CERT_NAME_VALUE *)pvStructInfo; + value = pvStructInfo; value->Value.pbData = ((BYTE *)value + sizeof(CERT_NAME_VALUE)); ret = CRYPT_AsnDecodeUnicodeNameValueInternal(pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo, @@ -1790,7 +1790,7 @@ static BOOL CRYPT_AsnDecodeRdnAttr(const BYTE *pbEncoded, DWORD cbEncoded, CRYPT_AsnDecodeNameValueInternal, sizeof(CERT_NAME_VALUE), FALSE, TRUE, offsetof(CERT_RDN_ATTR, Value.pbData), 0 }, }; - CERT_RDN_ATTR *attr = (CERT_RDN_ATTR *)pvStructInfo; + CERT_RDN_ATTR *attr = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo); @@ -1817,7 +1817,7 @@ static BOOL CRYPT_AsnDecodeRdn(const BYTE *pbEncoded, DWORD cbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_CONSTRUCTOR | ASN_SETOF, CRYPT_AsnDecodeRdnAttr, sizeof(CERT_RDN_ATTR), TRUE, offsetof(CERT_RDN_ATTR, pszObjId) }; - PCERT_RDN rdn = (PCERT_RDN)pvStructInfo; + PCERT_RDN rdn = pvStructInfo; ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo, pcbDecoded, @@ -1862,7 +1862,7 @@ static BOOL CRYPT_AsnDecodeUnicodeRdnAttr(const BYTE *pbEncoded, CRYPT_AsnDecodeUnicodeNameValueInternal, sizeof(CERT_NAME_VALUE), FALSE, TRUE, offsetof(CERT_RDN_ATTR, Value.pbData), 0 }, }; - CERT_RDN_ATTR *attr = (CERT_RDN_ATTR *)pvStructInfo; + CERT_RDN_ATTR *attr = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo); @@ -1889,7 +1889,7 @@ static BOOL CRYPT_AsnDecodeUnicodeRdn(const BYTE *pbEncoded, DWORD cbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_CONSTRUCTOR | ASN_SETOF, CRYPT_AsnDecodeUnicodeRdnAttr, sizeof(CERT_RDN_ATTR), TRUE, offsetof(CERT_RDN_ATTR, pszObjId) }; - PCERT_RDN rdn = (PCERT_RDN)pvStructInfo; + PCERT_RDN rdn = pvStructInfo; ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo, pcbDecoded, @@ -2001,7 +2001,7 @@ static BOOL CRYPT_AsnDecodeCopyBytes(const BYTE *pbEncoded, } else { - PCRYPT_OBJID_BLOB blob = (PCRYPT_OBJID_BLOB)pvStructInfo; + PCRYPT_OBJID_BLOB blob = pvStructInfo; *pcbStructInfo = bytesNeeded; blob->cbData = encodedLen; @@ -2030,7 +2030,7 @@ static BOOL CRYPT_DecodeDERArray(const BYTE *pbEncoded, DWORD cbEncoded, BOOL ret; struct AsnArrayDescriptor arrayDesc = { 0, CRYPT_AsnDecodeCopyBytes, sizeof(CRYPT_DER_BLOB), TRUE, offsetof(CRYPT_DER_BLOB, pbData) }; - struct GenericArray *array = (struct GenericArray *)pvStructInfo; + struct GenericArray *array = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -2047,7 +2047,7 @@ static BOOL CRYPT_AsnDecodeCTLUsage(const BYTE *pbEncoded, DWORD cbEncoded, BOOL ret; struct AsnArrayDescriptor arrayDesc = { ASN_SEQUENCEOF, CRYPT_AsnDecodeOidInternal, sizeof(LPSTR), TRUE, 0 }; - CTL_USAGE *usage = (CTL_USAGE *)pvStructInfo; + CTL_USAGE *usage = pvStructInfo; ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo, pcbDecoded, @@ -2067,7 +2067,7 @@ static BOOL CRYPT_AsnDecodeCTLEntry(const BYTE *pbEncoded, DWORD cbEncoded, TRUE, offsetof(CTL_ENTRY, rgAttribute), 0 }, }; BOOL ret = TRUE; - CTL_ENTRY *entry = (CTL_ENTRY *)pvStructInfo; + CTL_ENTRY *entry = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, entry, *pcbStructInfo); @@ -2085,7 +2085,7 @@ static BOOL CRYPT_AsnDecodeCTLEntries(const BYTE *pbEncoded, DWORD cbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_SEQUENCEOF, CRYPT_AsnDecodeCTLEntry, sizeof(CTL_ENTRY), TRUE, offsetof(CTL_ENTRY, SubjectIdentifier.pbData) }; - struct GenericArray *entries = (struct GenericArray *)pvStructInfo; + struct GenericArray *entries = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -2164,7 +2164,7 @@ static BOOL CRYPT_AsnDecodeSMIMECapability(const BYTE *pbEncoded, CRYPT_AsnDecodeCopyBytes, sizeof(CRYPT_OBJID_BLOB), TRUE, TRUE, offsetof(CRYPT_SMIME_CAPABILITY, Parameters.pbData), 0 }, }; - PCRYPT_SMIME_CAPABILITY capability = (PCRYPT_SMIME_CAPABILITY)pvStructInfo; + PCRYPT_SMIME_CAPABILITY capability = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo); @@ -2183,8 +2183,7 @@ static BOOL CRYPT_AsnDecodeSMIMECapabilitiesInternal(const BYTE *pbEncoded, struct AsnArrayDescriptor arrayDesc = { 0, CRYPT_AsnDecodeSMIMECapability, sizeof(CRYPT_SMIME_CAPABILITY), TRUE, offsetof(CRYPT_SMIME_CAPABILITY, pszObjId) }; - PCRYPT_SMIME_CAPABILITIES capabilities = - (PCRYPT_SMIME_CAPABILITIES)pvStructInfo; + PCRYPT_SMIME_CAPABILITIES capabilities = pvStructInfo; BOOL ret; ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags, @@ -2223,7 +2222,7 @@ static BOOL WINAPI CRYPT_AsnDecodeSMIMECapabilities(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - capabilities = (PCRYPT_SMIME_CAPABILITIES)pvStructInfo; + capabilities = pvStructInfo; capabilities->rgCapability = (PCRYPT_SMIME_CAPABILITY)((BYTE *)pvStructInfo + sizeof(CRYPT_SMIME_CAPABILITIES)); @@ -2591,7 +2590,7 @@ static BOOL CRYPT_AsnDecodePKCSAttributeInternal(const BYTE *pbEncoded, CRYPT_DecodeDERArray, sizeof(struct GenericArray), FALSE, TRUE, offsetof(CRYPT_ATTRIBUTE, rgValue), 0 }, }; - PCRYPT_ATTRIBUTE attr = (PCRYPT_ATTRIBUTE)pvStructInfo; + PCRYPT_ATTRIBUTE attr = pvStructInfo; TRACE("%p, %d, %08x, %p, %d\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo); @@ -2629,7 +2628,7 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSAttribute(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - attr = (PCRYPT_ATTRIBUTE)pvStructInfo; + attr = pvStructInfo; attr->pszObjId = (LPSTR)((BYTE *)pvStructInfo + sizeof(CRYPT_ATTRIBUTE)); ret = CRYPT_AsnDecodePKCSAttributeInternal(pbEncoded, cbEncoded, @@ -2654,7 +2653,7 @@ static BOOL CRYPT_AsnDecodePKCSAttributesInternal(const BYTE *pbEncoded, struct AsnArrayDescriptor arrayDesc = { 0, CRYPT_AsnDecodePKCSAttributeInternal, sizeof(CRYPT_ATTRIBUTE), TRUE, offsetof(CRYPT_ATTRIBUTE, pszObjId) }; - PCRYPT_ATTRIBUTES attrs = (PCRYPT_ATTRIBUTES)pvStructInfo; + PCRYPT_ATTRIBUTES attrs = pvStructInfo; BOOL ret; ret = CRYPT_AsnDecodeArray(&arrayDesc, pbEncoded, cbEncoded, dwFlags, @@ -2693,7 +2692,7 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSAttributes(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - attrs = (PCRYPT_ATTRIBUTES)pvStructInfo; + attrs = pvStructInfo; attrs->rgAttr = (PCRYPT_ATTRIBUTE)((BYTE *)pvStructInfo + sizeof(CRYPT_ATTRIBUTES)); ret = CRYPT_AsnDecodePKCSAttributesInternal(pbEncoded, @@ -2714,8 +2713,7 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSAttributes(DWORD dwCertEncodingType, static BOOL CRYPT_AsnDecodeAlgorithmId(const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) { - CRYPT_ALGORITHM_IDENTIFIER *algo = - (CRYPT_ALGORITHM_IDENTIFIER *)pvStructInfo; + CRYPT_ALGORITHM_IDENTIFIER *algo = pvStructInfo; BOOL ret = TRUE; struct AsnDecodeSequenceItem items[] = { { ASN_OBJECTIDENTIFIER, offsetof(CRYPT_ALGORITHM_IDENTIFIER, pszObjId), @@ -2754,7 +2752,7 @@ static BOOL CRYPT_AsnDecodePubKeyInfoInternal(const BYTE *pbEncoded, CRYPT_AsnDecodeBitsInternal, sizeof(CRYPT_BIT_BLOB), FALSE, TRUE, offsetof(CERT_PUBLIC_KEY_INFO, PublicKey.pbData) }, }; - PCERT_PUBLIC_KEY_INFO info = (PCERT_PUBLIC_KEY_INFO)pvStructInfo; + PCERT_PUBLIC_KEY_INFO info = pvStructInfo; ret = CRYPT_AsnDecodeSequence(items, sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo, @@ -2784,7 +2782,7 @@ static BOOL WINAPI CRYPT_AsnDecodePubKeyInfo(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - info = (PCERT_PUBLIC_KEY_INFO)pvStructInfo; + info = pvStructInfo; info->Algorithm.Parameters.pbData = (BYTE *)pvStructInfo + sizeof(CERT_PUBLIC_KEY_INFO); ret = CRYPT_AsnDecodePubKeyInfoInternal(pbEncoded, cbEncoded, @@ -2848,7 +2846,7 @@ static BOOL CRYPT_AsnDecodeBool(const BYTE *pbEncoded, DWORD cbEncoded, static BOOL CRYPT_AsnDecodeAltNameEntry(const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) { - PCERT_ALT_NAME_ENTRY entry = (PCERT_ALT_NAME_ENTRY)pvStructInfo; + PCERT_ALT_NAME_ENTRY entry = pvStructInfo; DWORD dataLen, lenBytes, bytesNeeded = sizeof(CERT_ALT_NAME_ENTRY); BOOL ret; @@ -2971,7 +2969,7 @@ static BOOL CRYPT_AsnDecodeAltNameInternal(const BYTE *pbEncoded, struct AsnArrayDescriptor arrayDesc = { 0, CRYPT_AsnDecodeAltNameEntry, sizeof(CERT_ALT_NAME_ENTRY), TRUE, offsetof(CERT_ALT_NAME_ENTRY, u.pwszURL) }; - PCERT_ALT_NAME_INFO info = (PCERT_ALT_NAME_INFO)pvStructInfo; + PCERT_ALT_NAME_INFO info = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -3002,7 +3000,7 @@ static BOOL CRYPT_AsnDecodeIntegerSwapBytes(const BYTE *pbEncoded, pcbDecoded); if (ret && pvStructInfo) { - CRYPT_DATA_BLOB *blob = (CRYPT_DATA_BLOB *)pvStructInfo; + CRYPT_DATA_BLOB *blob = pvStructInfo; if (blob->cbData) { @@ -3105,7 +3103,7 @@ static BOOL CRYPT_AsnDecodeAccessDescription(const BYTE *pbEncoded, CRYPT_AsnDecodeAltNameEntry, sizeof(CERT_ALT_NAME_ENTRY), FALSE, TRUE, offsetof(CERT_ACCESS_DESCRIPTION, AccessLocation.u.pwszURL), 0 }, }; - CERT_ACCESS_DESCRIPTION *descr = (CERT_ACCESS_DESCRIPTION *)pvStructInfo; + CERT_ACCESS_DESCRIPTION *descr = pvStructInfo; return CRYPT_AsnDecodeSequence(items, sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo, @@ -3195,7 +3193,7 @@ static BOOL CRYPT_AsnDecodePKCSContentInfoInternal(const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) { - CRYPT_CONTENT_INFO *info = (CRYPT_CONTENT_INFO *)pvStructInfo; + CRYPT_CONTENT_INFO *info = pvStructInfo; struct AsnDecodeSequenceItem items[] = { { ASN_OBJECTIDENTIFIER, offsetof(CRYPT_CONTENT_INFO, pszObjId), CRYPT_AsnDecodeOidIgnoreTag, sizeof(LPSTR), FALSE, TRUE, @@ -3239,7 +3237,7 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSContentInfo(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - info = (CRYPT_CONTENT_INFO *)pvStructInfo; + info = pvStructInfo; info->pszObjId = (LPSTR)((BYTE *)info + sizeof(CRYPT_CONTENT_INFO)); ret = CRYPT_AsnDecodePKCSContentInfoInternal(pbEncoded, @@ -3308,7 +3306,7 @@ static BOOL WINAPI CRYPT_AsnDecodeAltName(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - name = (CERT_ALT_NAME_INFO *)pvStructInfo; + name = pvStructInfo; name->rgAltEntry = (PCERT_ALT_NAME_ENTRY) ((BYTE *)pvStructInfo + sizeof(CERT_ALT_NAME_INFO)); ret = CRYPT_AsnDecodeAltNameInternal(pbEncoded, cbEncoded, @@ -3356,8 +3354,7 @@ static BOOL CRYPT_AsnDecodePathLenConstraint(const BYTE *pbEncoded, } else { - struct PATH_LEN_CONSTRAINT *constraint = - (struct PATH_LEN_CONSTRAINT *)pvStructInfo; + struct PATH_LEN_CONSTRAINT *constraint = pvStructInfo; *pcbStructInfo = bytesNeeded; size = sizeof(constraint->dwPathLenConstraint); @@ -3380,7 +3377,7 @@ static BOOL CRYPT_AsnDecodeSubtreeConstraints(const BYTE *pbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_SEQUENCEOF, CRYPT_AsnDecodeCopyBytes, sizeof(CERT_NAME_BLOB), TRUE, offsetof(CERT_NAME_BLOB, pbData) }; - struct GenericArray *entries = (struct GenericArray *)pvStructInfo; + struct GenericArray *entries = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -3597,7 +3594,7 @@ static BOOL WINAPI CRYPT_AsnDecodeRsaPubKey(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - hdr = (BLOBHEADER *)pvStructInfo; + hdr = pvStructInfo; hdr->bType = PUBLICKEYBLOB; hdr->bVersion = CUR_BLOB_VERSION; hdr->reserved = 0; @@ -3656,7 +3653,7 @@ static BOOL CRYPT_AsnDecodeOctetsInternal(const BYTE *pbEncoded, CRYPT_DATA_BLOB *blob; *pcbStructInfo = bytesNeeded; - blob = (CRYPT_DATA_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->cbData = dataLen; if (dwFlags & CRYPT_DECODE_NOCOPY_FLAG) blob->pbData = (BYTE *)pbEncoded + 1 + lenBytes; @@ -3707,7 +3704,7 @@ static BOOL WINAPI CRYPT_AsnDecodeOctets(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - blob = (CRYPT_DATA_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->pbData = (BYTE *)pvStructInfo + sizeof(CRYPT_DATA_BLOB); ret = CRYPT_AsnDecodeOctetsInternal(pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo, @@ -3755,7 +3752,7 @@ static BOOL CRYPT_AsnDecodeBitsInternal(const BYTE *pbEncoded, DWORD cbEncoded, CRYPT_BIT_BLOB *blob; *pcbStructInfo = bytesNeeded; - blob = (CRYPT_BIT_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->cbData = dataLen - 1; blob->cUnusedBits = *(pbEncoded + 1 + lenBytes); if (dwFlags & CRYPT_DECODE_NOCOPY_FLAG) @@ -3814,7 +3811,7 @@ static BOOL WINAPI CRYPT_AsnDecodeBits(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - blob = (CRYPT_BIT_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->pbData = (BYTE *)pvStructInfo + sizeof(CRYPT_BIT_BLOB); ret = CRYPT_AsnDecodeBitsInternal(pbEncoded, cbEncoded, dwFlags & ~CRYPT_DECODE_ALLOC_FLAG, pvStructInfo, @@ -3943,7 +3940,7 @@ static BOOL CRYPT_AsnDecodeIntegerInternal(const BYTE *pbEncoded, } else { - CRYPT_INTEGER_BLOB *blob = (CRYPT_INTEGER_BLOB *)pvStructInfo; + CRYPT_INTEGER_BLOB *blob = pvStructInfo; *pcbStructInfo = bytesNeeded; blob->cbData = dataLen; @@ -3992,7 +3989,7 @@ static BOOL WINAPI CRYPT_AsnDecodeInteger(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - blob = (CRYPT_INTEGER_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->pbData = (BYTE *)pvStructInfo + sizeof(CRYPT_INTEGER_BLOB); ret = CRYPT_AsnDecodeIntegerInternal(pbEncoded, cbEncoded, @@ -4037,7 +4034,7 @@ static BOOL CRYPT_AsnDecodeUnsignedIntegerInternal(const BYTE *pbEncoded, } else { - CRYPT_INTEGER_BLOB *blob = (CRYPT_INTEGER_BLOB *)pvStructInfo; + CRYPT_INTEGER_BLOB *blob = pvStructInfo; *pcbStructInfo = bytesNeeded; blob->cbData = dataLen; @@ -4091,7 +4088,7 @@ static BOOL WINAPI CRYPT_AsnDecodeUnsignedInteger(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - blob = (CRYPT_INTEGER_BLOB *)pvStructInfo; + blob = pvStructInfo; blob->pbData = (BYTE *)pvStructInfo + sizeof(CRYPT_INTEGER_BLOB); ret = CRYPT_AsnDecodeUnsignedIntegerInternal(pbEncoded, @@ -4313,8 +4310,7 @@ static BOOL CRYPT_AsnDecodeUtcTimeInternal(const BYTE *pbEncoded, *pcbStructInfo = sizeof(FILETIME); else if ((ret = CRYPT_DecodeCheckSpace(pcbStructInfo, sizeof(FILETIME)))) - ret = SystemTimeToFileTime(&sysTime, - (FILETIME *)pvStructInfo); + ret = SystemTimeToFileTime(&sysTime, pvStructInfo); } } } @@ -4421,8 +4417,7 @@ static BOOL CRYPT_AsnDecodeGeneralizedTime(const BYTE *pbEncoded, *pcbStructInfo = sizeof(FILETIME); else if ((ret = CRYPT_DecodeCheckSpace(pcbStructInfo, sizeof(FILETIME)))) - ret = SystemTimeToFileTime(&sysTime, - (FILETIME *)pvStructInfo); + ret = SystemTimeToFileTime(&sysTime, pvStructInfo); } } } @@ -4542,7 +4537,7 @@ static BOOL WINAPI CRYPT_AsnDecodeSequenceOfAny(DWORD dwCertEncodingType, { if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - seq = (CRYPT_SEQUENCE_OF_ANY *)pvStructInfo; + seq = pvStructInfo; seq->cValue = cValue; seq->rgValue = (CRYPT_DER_BLOB *)((BYTE *)seq + sizeof(*seq)); @@ -4640,7 +4635,7 @@ static BOOL CRYPT_AsnDecodeDistPointName(const BYTE *pbEncoded, } else { - CRL_DIST_POINT_NAME *name = (CRL_DIST_POINT_NAME *)pvStructInfo; + CRL_DIST_POINT_NAME *name = pvStructInfo; *pcbStructInfo = bytesNeeded; if (dataLen) @@ -4679,7 +4674,7 @@ static BOOL CRYPT_AsnDecodeDistPoint(const BYTE *pbEncoded, DWORD cbEncoded, CRYPT_AsnDecodeAltNameInternal, sizeof(CERT_ALT_NAME_INFO), TRUE, TRUE, offsetof(CRL_DIST_POINT, CRLIssuer.rgAltEntry), 0 }, }; - CRL_DIST_POINT *point = (CRL_DIST_POINT *)pvStructInfo; + CRL_DIST_POINT *point = pvStructInfo; BOOL ret; ret = CRYPT_AsnDecodeSequence(items, sizeof(items) / sizeof(items[0]), @@ -4829,14 +4824,14 @@ static BOOL CRYPT_AsnDecodeSubtree(const BYTE *pbEncoded, CRYPT_AsnDecodeMaximum, sizeof(BOOL) + sizeof(DWORD), TRUE, FALSE, 0, 0 }, }; - CERT_GENERAL_SUBTREE *subtree = (CERT_GENERAL_SUBTREE *)pvStructInfo; + CERT_GENERAL_SUBTREE *subtree = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); ret = CRYPT_AsnDecodeSequence(items, sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags, NULL, pvStructInfo, pcbStructInfo, - pcbDecoded, subtree ? (BYTE *)subtree->Base.u.pwszURL : NULL); + pcbDecoded, subtree ? subtree->Base.u.pwszURL : NULL); if (pcbDecoded) { TRACE("%d\n", *pcbDecoded); @@ -4856,7 +4851,7 @@ static BOOL CRYPT_AsnDecodeSubtreeArray(const BYTE *pbEncoded, struct AsnArrayDescriptor arrayDesc = { 0, CRYPT_AsnDecodeSubtree, sizeof(CERT_GENERAL_SUBTREE), TRUE, offsetof(CERT_GENERAL_SUBTREE, Base.u.pwszURL) }; - struct GenericArray *array = (struct GenericArray *)pvStructInfo; + struct GenericArray *array = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -4915,8 +4910,7 @@ static BOOL CRYPT_AsnDecodeIssuerSerialNumber(const BYTE *pbEncoded, CRYPT_AsnDecodeIntegerInternal, sizeof(CRYPT_INTEGER_BLOB), FALSE, TRUE, offsetof(CERT_ISSUER_SERIAL_NUMBER, SerialNumber.pbData), 0 }, }; - CERT_ISSUER_SERIAL_NUMBER *issuerSerial = - (CERT_ISSUER_SERIAL_NUMBER *)pvStructInfo; + CERT_ISSUER_SERIAL_NUMBER *issuerSerial = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -4937,7 +4931,7 @@ static BOOL CRYPT_AsnDecodePKCSSignerInfoInternal(const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) { - CMSG_SIGNER_INFO *info = (CMSG_SIGNER_INFO *)pvStructInfo; + CMSG_SIGNER_INFO *info = pvStructInfo; struct AsnDecodeSequenceItem items[] = { { ASN_INTEGER, offsetof(CMSG_SIGNER_INFO, dwVersion), CRYPT_AsnDecodeIntInternal, sizeof(DWORD), FALSE, FALSE, 0, 0 }, @@ -4997,7 +4991,7 @@ static BOOL WINAPI CRYPT_AsnDecodePKCSSignerInfo(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - info = (CMSG_SIGNER_INFO *)pvStructInfo; + info = pvStructInfo; info->Issuer.pbData = ((BYTE *)info + sizeof(CMSG_SIGNER_INFO)); ret = CRYPT_AsnDecodePKCSSignerInfoInternal(pbEncoded, @@ -5019,7 +5013,7 @@ static BOOL CRYPT_AsnDecodeCMSSignerId(const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) { - CERT_ID *id = (CERT_ID *)pvStructInfo; + CERT_ID *id = pvStructInfo; BOOL ret = FALSE; if (*pbEncoded == ASN_SEQUENCEOF) @@ -5061,7 +5055,7 @@ static BOOL CRYPT_AsnDecodeCMSSignerInfoInternal(const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, DWORD *pcbStructInfo, DWORD *pcbDecoded) { - CMSG_CMS_SIGNER_INFO *info = (CMSG_CMS_SIGNER_INFO *)pvStructInfo; + CMSG_CMS_SIGNER_INFO *info = pvStructInfo; struct AsnDecodeSequenceItem items[] = { { ASN_INTEGER, offsetof(CMSG_CMS_SIGNER_INFO, dwVersion), CRYPT_AsnDecodeIntInternal, sizeof(DWORD), FALSE, FALSE, 0, 0 }, @@ -5121,7 +5115,7 @@ static BOOL WINAPI CRYPT_AsnDecodeCMSSignerInfo(DWORD dwCertEncodingType, if (dwFlags & CRYPT_DECODE_ALLOC_FLAG) pvStructInfo = *(BYTE **)pvStructInfo; - info = (CMSG_CMS_SIGNER_INFO *)pvStructInfo; + info = pvStructInfo; info->SignerId.u.KeyId.pbData = ((BYTE *)info + sizeof(CMSG_CMS_SIGNER_INFO)); ret = CRYPT_AsnDecodeCMSSignerInfoInternal(pbEncoded, @@ -5146,7 +5140,7 @@ static BOOL CRYPT_DecodeSignerArray(const BYTE *pbEncoded, DWORD cbEncoded, struct AsnArrayDescriptor arrayDesc = { ASN_CONSTRUCTOR | ASN_SETOF, CRYPT_AsnDecodeCMSSignerInfoInternal, sizeof(CMSG_CMS_SIGNER_INFO), TRUE, offsetof(CMSG_CMS_SIGNER_INFO, SignerId.u.KeyId.pbData) }; - struct GenericArray *array = (struct GenericArray *)pvStructInfo; + struct GenericArray *array = pvStructInfo; TRACE("%p, %d, %08x, %p, %d, %p\n", pbEncoded, cbEncoded, dwFlags, pvStructInfo, *pcbStructInfo, pcbDecoded); @@ -5517,3 +5511,45 @@ BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, TRACE_(crypt)("returning %d\n", ret); return ret; } + +BOOL WINAPI PFXIsPFXBlob(CRYPT_DATA_BLOB *pPFX) +{ + BOOL ret; + + TRACE_(crypt)("(%p)\n", pPFX); + + /* A PFX blob is an asn.1-encoded sequence, consisting of at least a + * version integer of length 1 (3 encoded byes) and at least one other + * datum (two encoded bytes), plus at least two bytes for the outer + * sequence. Thus, even an empty PFX blob is at least 7 bytes in length. + */ + if (pPFX->cbData < 7) + ret = FALSE; + else if (pPFX->pbData[0] == ASN_SEQUENCE) + { + DWORD len; + + if ((ret = CRYPT_GetLengthIndefinite(pPFX->pbData, pPFX->cbData, &len))) + { + BYTE lenLen = GET_LEN_BYTES(pPFX->pbData[1]); + + /* Need at least three bytes for the integer version */ + if (pPFX->cbData < 1 + lenLen + 3) + ret = FALSE; + else if (pPFX->pbData[1 + lenLen] != ASN_INTEGER || /* Tag */ + pPFX->pbData[1 + lenLen + 1] != 1 || /* Definite length */ + pPFX->pbData[1 + lenLen + 2] != 3) /* PFX version */ + ret = FALSE; + } + } + else + ret = FALSE; + return ret; +} + +HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, + DWORD dwFlags) +{ + FIXME_(crypt)("(%p, %p, %08x): stub\n", pPFX, szPassword, dwFlags); + return NULL; +} diff --git a/reactos/dll/win32/crypt32/encode.c b/reactos/dll/win32/crypt32/encode.c index 2440d1696f1..14d193fb3a6 100644 --- a/reactos/dll/win32/crypt32/encode.c +++ b/reactos/dll/win32/crypt32/encode.c @@ -228,8 +228,7 @@ BOOL WINAPI CRYPT_AsnEncodeConstructed(DWORD dwCertEncodingType, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { BOOL ret; - const struct AsnConstructedItem *item = - (const struct AsnConstructedItem *)pvStructInfo; + const struct AsnConstructedItem *item = pvStructInfo; DWORD len; if ((ret = item->encodeFunc(dwCertEncodingType, lpszStructType, @@ -283,8 +282,7 @@ static BOOL WINAPI CRYPT_AsnEncodeSwapTag(DWORD dwCertEncodingType, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { BOOL ret; - const struct AsnEncodeTagSwappedItem *item = - (const struct AsnEncodeTagSwappedItem *)pvStructInfo; + const struct AsnEncodeTagSwappedItem *item = pvStructInfo; ret = item->encodeFunc(dwCertEncodingType, lpszStructType, item->pvStructInfo, dwFlags, pEncodePara, pbEncoded, pcbEncoded); @@ -297,7 +295,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCertVersion(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const DWORD *ver = (const DWORD *)pvStructInfo; + const DWORD *ver = pvStructInfo; BOOL ret; /* CERT_V1 is not encoded */ @@ -320,7 +318,7 @@ static BOOL WINAPI CRYPT_CopyEncodedBlob(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_DER_BLOB *blob = (const CRYPT_DER_BLOB *)pvStructInfo; + const CRYPT_DER_BLOB *blob = pvStructInfo; BOOL ret; if (!pbEncoded) @@ -350,7 +348,7 @@ static BOOL WINAPI CRYPT_AsnEncodeValidity(DWORD dwCertEncodingType, { BOOL ret; /* This has two filetimes in a row, a NotBefore and a NotAfter */ - const FILETIME *timePtr = (const FILETIME *)pvStructInfo; + const FILETIME *timePtr = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { timePtr, CRYPT_AsnEncodeChoiceOfTime, 0 }, { timePtr + 1, CRYPT_AsnEncodeChoiceOfTime, 0 }, @@ -370,8 +368,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAlgorithmIdWithNullParams( DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_ALGORITHM_IDENTIFIER *algo = - (const CRYPT_ALGORITHM_IDENTIFIER *)pvStructInfo; + const CRYPT_ALGORITHM_IDENTIFIER *algo = pvStructInfo; static const BYTE asn1Null[] = { ASN_NULL, 0 }; static const CRYPT_DATA_BLOB nullBlob = { sizeof(asn1Null), (LPBYTE)asn1Null }; @@ -395,8 +392,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAlgorithmId(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_ALGORITHM_IDENTIFIER *algo = - (const CRYPT_ALGORITHM_IDENTIFIER *)pvStructInfo; + const CRYPT_ALGORITHM_IDENTIFIER *algo = pvStructInfo; BOOL ret; struct AsnEncodeSequenceItem items[] = { { algo->pszObjId, CRYPT_AsnEncodeOid, 0 }, @@ -417,8 +413,7 @@ static BOOL WINAPI CRYPT_AsnEncodePubKeyInfo(DWORD dwCertEncodingType, __TRY { - const CERT_PUBLIC_KEY_INFO *info = - (const CERT_PUBLIC_KEY_INFO *)pvStructInfo; + const CERT_PUBLIC_KEY_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { &info->Algorithm, CRYPT_AsnEncodeAlgorithmId, 0 }, { &info->PublicKey, CRYPT_AsnEncodeBits, 0 }, @@ -447,8 +442,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCert(DWORD dwCertEncodingType, __TRY { - const CERT_SIGNED_CONTENT_INFO *info = - (const CERT_SIGNED_CONTENT_INFO *)pvStructInfo; + const CERT_SIGNED_CONTENT_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { &info->ToBeSigned, CRYPT_CopyEncodedBlob, 0 }, { &info->SignatureAlgorithm, CRYPT_AsnEncodeAlgorithmId, 0 }, @@ -482,7 +476,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCertInfo(DWORD dwCertEncodingType, __TRY { - const CERT_INFO *info = (const CERT_INFO *)pvStructInfo; + const CERT_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[10] = { { &info->dwVersion, CRYPT_AsnEncodeCertVersion, 0 }, { &info->SerialNumber, CRYPT_AsnEncodeInteger, 0 }, @@ -619,7 +613,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLVersion(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const DWORD *ver = (const DWORD *)pvStructInfo; + const DWORD *ver = pvStructInfo; BOOL ret; /* CRL_V1 is not encoded */ @@ -646,7 +640,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLInfo(DWORD dwCertEncodingType, __TRY { - const CRL_INFO *info = (const CRL_INFO *)pvStructInfo; + const CRL_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[7] = { { &info->dwVersion, CRYPT_AsnEncodeCRLVersion, 0 }, { &info->SignatureAlgorithm, CRYPT_AsnEncodeAlgorithmId, 0 }, @@ -730,7 +724,7 @@ static BOOL WINAPI CRYPT_AsnEncodeExtensions(DWORD dwCertEncodingType, __TRY { DWORD bytesNeeded, dataLen, lenBytes, i; - const CERT_EXTENSIONS *exts = (const CERT_EXTENSIONS *)pvStructInfo; + const CERT_EXTENSIONS *exts = pvStructInfo; ret = TRUE; for (i = 0, dataLen = 0; ret && i < exts->cExtension; i++) @@ -783,7 +777,7 @@ BOOL WINAPI CRYPT_AsnEncodeOid(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - LPCSTR pszObjId = (LPCSTR)pvStructInfo; + LPCSTR pszObjId = pvStructInfo; DWORD bytesNeeded = 0, lenBytes; BOOL ret = TRUE; int firstPos = 0; @@ -1007,7 +1001,7 @@ static BOOL WINAPI CRYPT_AsnEncodeNameValue(DWORD dwCertEncodingType, __TRY { - const CERT_NAME_VALUE *value = (const CERT_NAME_VALUE *)pvStructInfo; + const CERT_NAME_VALUE *value = pvStructInfo; switch (value->dwValueType) { @@ -1098,8 +1092,8 @@ static BOOL CRYPT_AsnEncodeRdnAttr(DWORD dwCertEncodingType, /* hack: a CERT_RDN_ATTR is identical to a CERT_NAME_VALUE beginning * with dwValueType, so "cast" it to get its encoded size */ - ret = nameValueEncodeFunc(dwCertEncodingType, NULL, - (CERT_NAME_VALUE *)&attr->dwValueType, 0, NULL, NULL, &size); + ret = nameValueEncodeFunc(dwCertEncodingType, NULL, &attr->dwValueType, + 0, NULL, NULL, &size); if (ret) { bytesNeeded += size; @@ -1125,9 +1119,8 @@ static BOOL CRYPT_AsnEncodeRdnAttr(DWORD dwCertEncodingType, { pbEncoded += size; size = bytesNeeded - 1 - lenBytes - size; - ret = nameValueEncodeFunc(dwCertEncodingType, - NULL, (CERT_NAME_VALUE *)&attr->dwValueType, - 0, NULL, pbEncoded, &size); + ret = nameValueEncodeFunc(dwCertEncodingType, NULL, + &attr->dwValueType, 0, NULL, pbEncoded, &size); if (!ret) *pcbEncoded = size; } @@ -1147,7 +1140,7 @@ static BOOL CRYPT_AsnEncodeRdnAttr(DWORD dwCertEncodingType, static int BLOBComp(const void *l, const void *r) { - const CRYPT_DER_BLOB *a = (const CRYPT_DER_BLOB *)l, *b = (const CRYPT_DER_BLOB *)r; + const CRYPT_DER_BLOB *a = l, *b = r; int ret; if (!(ret = memcmp(a->pbData, b->pbData, min(a->cbData, b->cbData)))) @@ -1161,7 +1154,7 @@ static BOOL WINAPI CRYPT_DEREncodeSet(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_BLOB_ARRAY *set = (const CRYPT_BLOB_ARRAY *)pvStructInfo; + const CRYPT_BLOB_ARRAY *set = pvStructInfo; DWORD bytesNeeded = 0, lenBytes, i; BOOL ret; @@ -1205,8 +1198,7 @@ static BOOL WINAPI CRYPT_DEREncodeItemsAsSet(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const struct DERSetDescriptor *desc = - (const struct DERSetDescriptor *)pvStructInfo; + const struct DERSetDescriptor *desc = pvStructInfo; CRYPT_BLOB_ARRAY setOf = { 0, NULL }; BOOL ret = TRUE; DWORD i; @@ -1344,7 +1336,7 @@ static BOOL WINAPI CRYPT_AsnEncodeOrCopyUnicodeNameValue( DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CERT_NAME_VALUE *value = (const CERT_NAME_VALUE *)pvStructInfo; + const CERT_NAME_VALUE *value = pvStructInfo; BOOL ret; if (value->dwValueType == CERT_RDN_ENCODED_BLOB) @@ -1364,7 +1356,7 @@ static BOOL WINAPI CRYPT_AsnEncodeUnicodeName(DWORD dwCertEncodingType, __TRY { - const CERT_NAME_INFO *info = (const CERT_NAME_INFO *)pvStructInfo; + const CERT_NAME_INFO *info = pvStructInfo; DWORD bytesNeeded = 0, lenBytes, size, i; TRACE("encoding name with %d RDNs\n", info->cRDN); @@ -1426,7 +1418,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCTLVersion(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const DWORD *ver = (const DWORD *)pvStructInfo; + const DWORD *ver = pvStructInfo; BOOL ret; /* CTL_V1 is not encoded */ @@ -1449,8 +1441,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCTLSubjectAlgorithm( DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_ALGORITHM_IDENTIFIER *algo = - (const CRYPT_ALGORITHM_IDENTIFIER *)pvStructInfo; + const CRYPT_ALGORITHM_IDENTIFIER *algo = pvStructInfo; BOOL ret; struct AsnEncodeSequenceItem items[2] = { { algo->pszObjId, CRYPT_AsnEncodeOid, 0 }, @@ -1501,7 +1492,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCTLEntries(DWORD dwCertEncodingType, { BOOL ret; DWORD bytesNeeded, dataLen, lenBytes, i; - const struct CTLEntries *entries = (const struct CTLEntries *)pvStructInfo; + const struct CTLEntries *entries = pvStructInfo; ret = TRUE; for (i = 0, dataLen = 0; ret && i < entries->cEntry; i++) @@ -1551,7 +1542,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCTL(DWORD dwCertEncodingType, __TRY { - const CTL_INFO *info = (const CTL_INFO *)pvStructInfo; + const CTL_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[9] = { { &info->dwVersion, CRYPT_AsnEncodeCTLVersion, 0 }, { &info->SubjectUsage, CRYPT_AsnEncodeEnhancedKeyUsage, 0 }, @@ -1617,8 +1608,7 @@ static BOOL CRYPT_AsnEncodeSMIMECapability(DWORD dwCertEncodingType, __TRY { - const CRYPT_SMIME_CAPABILITY *capability = - (const CRYPT_SMIME_CAPABILITY *)pvStructInfo; + const CRYPT_SMIME_CAPABILITY *capability = pvStructInfo; if (!capability->pszObjId) SetLastError(E_INVALIDARG); @@ -1651,8 +1641,7 @@ static BOOL WINAPI CRYPT_AsnEncodeSMIMECapabilities(DWORD dwCertEncodingType, __TRY { DWORD bytesNeeded, dataLen, lenBytes, i; - const CRYPT_SMIME_CAPABILITIES *capabilities = - (const CRYPT_SMIME_CAPABILITIES *)pvStructInfo; + const CRYPT_SMIME_CAPABILITIES *capabilities = pvStructInfo; ret = TRUE; for (i = 0, dataLen = 0; ret && i < capabilities->cCapability; i++) @@ -1818,7 +1807,7 @@ static BOOL WINAPI CRYPT_AsnEncodePKCSAttribute(DWORD dwCertEncodingType, __TRY { - const CRYPT_ATTRIBUTE *attr = (const CRYPT_ATTRIBUTE *)pvStructInfo; + const CRYPT_ATTRIBUTE *attr = pvStructInfo; if (!attr->pszObjId) SetLastError(E_INVALIDARG); @@ -1850,8 +1839,7 @@ static BOOL WINAPI CRYPT_AsnEncodePKCSAttributes(DWORD dwCertEncodingType, __TRY { - const CRYPT_ATTRIBUTES *attributes = - (const CRYPT_ATTRIBUTES *)pvStructInfo; + const CRYPT_ATTRIBUTES *attributes = pvStructInfo; struct DERSetDescriptor desc = { attributes->cAttr, attributes->rgAttr, sizeof(CRYPT_ATTRIBUTE), 0, CRYPT_AsnEncodePKCSAttribute }; @@ -1872,7 +1860,7 @@ static BOOL WINAPI CRYPT_AsnEncodePKCSContentInfoInternal( DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CRYPT_CONTENT_INFO *info = (const CRYPT_CONTENT_INFO *)pvStructInfo; + const CRYPT_CONTENT_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[2] = { { info->pszObjId, CRYPT_AsnEncodeOid, 0 }, { NULL, NULL, 0 }, @@ -1916,8 +1904,7 @@ static BOOL WINAPI CRYPT_AsnEncodePKCSContentInfo(DWORD dwCertEncodingType, __TRY { - const CRYPT_CONTENT_INFO *info = - (const CRYPT_CONTENT_INFO *)pvStructInfo; + const CRYPT_CONTENT_INFO *info = pvStructInfo; if (!info->pszObjId) SetLastError(E_INVALIDARG); @@ -2170,7 +2157,7 @@ static BOOL WINAPI CRYPT_AsnEncodeUnicodeNameValue(DWORD dwCertEncodingType, __TRY { - const CERT_NAME_VALUE *value = (const CERT_NAME_VALUE *)pvStructInfo; + const CERT_NAME_VALUE *value = pvStructInfo; switch (value->dwValueType) { @@ -2243,7 +2230,7 @@ static BOOL WINAPI CRYPT_AsnEncodeName(DWORD dwCertEncodingType, __TRY { - const CERT_NAME_INFO *info = (const CERT_NAME_INFO *)pvStructInfo; + const CERT_NAME_INFO *info = pvStructInfo; DWORD bytesNeeded = 0, lenBytes, size, i; TRACE("encoding name with %d RDNs\n", info->cRDN); @@ -2332,8 +2319,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAltNameEntry(DWORD dwCertEncodingType, LPCSTR lpszStructType, const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { - const CERT_ALT_NAME_ENTRY *entry = - (const CERT_ALT_NAME_ENTRY *)pvStructInfo; + const CERT_ALT_NAME_ENTRY *entry = pvStructInfo; BOOL ret; DWORD dataLen; BYTE tag; @@ -2442,7 +2428,7 @@ static BOOL WINAPI CRYPT_AsnEncodeIntegerSwapBytes(DWORD dwCertEncodingType, __TRY { - const CRYPT_DATA_BLOB *blob = (const CRYPT_DATA_BLOB *)pvStructInfo; + const CRYPT_DATA_BLOB *blob = pvStructInfo; CRYPT_DATA_BLOB newBlob = { blob->cbData, NULL }; ret = TRUE; @@ -2481,8 +2467,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAuthorityKeyId(DWORD dwCertEncodingType, __TRY { - const CERT_AUTHORITY_KEY_ID_INFO *info = - (const CERT_AUTHORITY_KEY_ID_INFO *)pvStructInfo; + const CERT_AUTHORITY_KEY_ID_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[3] = { { 0 } }; struct AsnEncodeTagSwappedItem swapped[3] = { { 0 } }; struct AsnConstructedItem constructed = { 0 }; @@ -2537,8 +2522,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAltName(DWORD dwCertEncodingType, __TRY { - const CERT_ALT_NAME_INFO *info = - (const CERT_ALT_NAME_INFO *)pvStructInfo; + const CERT_ALT_NAME_INFO *info = pvStructInfo; DWORD bytesNeeded, dataLen, lenBytes, i; ret = TRUE; @@ -2615,8 +2599,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAuthorityKeyId2(DWORD dwCertEncodingType, __TRY { - const CERT_AUTHORITY_KEY_ID2_INFO *info = - (const CERT_AUTHORITY_KEY_ID2_INFO *)pvStructInfo; + const CERT_AUTHORITY_KEY_ID2_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[3] = { { 0 } }; struct AsnEncodeTagSwappedItem swapped[3] = { { 0 } }; DWORD cItem = 0, cSwapped = 0; @@ -2689,8 +2672,7 @@ static BOOL WINAPI CRYPT_AsnEncodeAuthorityInfoAccess(DWORD dwCertEncodingType, __TRY { DWORD bytesNeeded, dataLen, lenBytes, i; - const CERT_AUTHORITY_INFO_ACCESS *info = - (const CERT_AUTHORITY_INFO_ACCESS *)pvStructInfo; + const CERT_AUTHORITY_INFO_ACCESS *info = pvStructInfo; ret = TRUE; for (i = 0, dataLen = 0; ret && i < info->cAccDescr; i++) @@ -2748,8 +2730,7 @@ static BOOL WINAPI CRYPT_AsnEncodeBasicConstraints(DWORD dwCertEncodingType, __TRY { - const CERT_BASIC_CONSTRAINTS_INFO *info = - (const CERT_BASIC_CONSTRAINTS_INFO *)pvStructInfo; + const CERT_BASIC_CONSTRAINTS_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[3] = { { &info->SubjectType, CRYPT_AsnEncodeBits, 0 }, { 0 } @@ -2788,8 +2769,7 @@ static BOOL WINAPI CRYPT_AsnEncodeBasicConstraints2(DWORD dwCertEncodingType, __TRY { - const CERT_BASIC_CONSTRAINTS2_INFO *info = - (const CERT_BASIC_CONSTRAINTS2_INFO *)pvStructInfo; + const CERT_BASIC_CONSTRAINTS2_INFO *info = pvStructInfo; struct AsnEncodeSequenceItem items[2] = { { 0 } }; DWORD cItem = 0; @@ -2981,8 +2961,7 @@ static BOOL WINAPI CRYPT_AsnEncodeRsaPubKey(DWORD dwCertEncodingType, __TRY { - const BLOBHEADER *hdr = - (const BLOBHEADER *)pvStructInfo; + const BLOBHEADER *hdr = pvStructInfo; if (hdr->bType != PUBLICKEYBLOB) { @@ -3022,7 +3001,7 @@ BOOL WINAPI CRYPT_AsnEncodeOctets(DWORD dwCertEncodingType, __TRY { - const CRYPT_DATA_BLOB *blob = (const CRYPT_DATA_BLOB *)pvStructInfo; + const CRYPT_DATA_BLOB *blob = pvStructInfo; DWORD bytesNeeded, lenBytes; TRACE("(%d, %p), %08x, %p, %p, %d\n", blob->cbData, blob->pbData, @@ -3068,7 +3047,7 @@ static BOOL WINAPI CRYPT_AsnEncodeBits(DWORD dwCertEncodingType, __TRY { - const CRYPT_BIT_BLOB *blob = (const CRYPT_BIT_BLOB *)pvStructInfo; + const CRYPT_BIT_BLOB *blob = pvStructInfo; DWORD bytesNeeded, lenBytes, dataBytes; BYTE unusedBits; @@ -3138,7 +3117,7 @@ static BOOL WINAPI CRYPT_AsnEncodeBitsSwapBytes(DWORD dwCertEncodingType, __TRY { - const CRYPT_BIT_BLOB *blob = (const CRYPT_BIT_BLOB *)pvStructInfo; + const CRYPT_BIT_BLOB *blob = pvStructInfo; CRYPT_BIT_BLOB newBlob = { blob->cbData, NULL, blob->cUnusedBits }; ret = TRUE; @@ -3190,8 +3169,7 @@ static BOOL WINAPI CRYPT_AsnEncodeInteger(DWORD dwCertEncodingType, DWORD significantBytes, lenBytes, bytesNeeded; BYTE padByte = 0; BOOL pad = FALSE; - const CRYPT_INTEGER_BLOB *blob = - (const CRYPT_INTEGER_BLOB *)pvStructInfo; + const CRYPT_INTEGER_BLOB *blob = pvStructInfo; significantBytes = blob->cbData; if (significantBytes) @@ -3278,8 +3256,7 @@ static BOOL WINAPI CRYPT_AsnEncodeUnsignedInteger(DWORD dwCertEncodingType, { DWORD significantBytes, lenBytes, bytesNeeded; BOOL pad = FALSE; - const CRYPT_INTEGER_BLOB *blob = - (const CRYPT_INTEGER_BLOB *)pvStructInfo; + const CRYPT_INTEGER_BLOB *blob = pvStructInfo; significantBytes = blob->cbData; if (significantBytes) @@ -3382,8 +3359,7 @@ static BOOL WINAPI CRYPT_AsnEncodeUtcTime(DWORD dwCertEncodingType, else { /* Sanity check the year, this is a two-digit year format */ - ret = FileTimeToSystemTime((const FILETIME *)pvStructInfo, - &sysTime); + ret = FileTimeToSystemTime(pvStructInfo, &sysTime); if (ret && (sysTime.wYear < 1950 || sysTime.wYear > 2050)) { SetLastError(CRYPT_E_BAD_ENCODE); @@ -3439,8 +3415,7 @@ static BOOL CRYPT_AsnEncodeGeneralizedTime(DWORD dwCertEncodingType, } else { - ret = FileTimeToSystemTime((const FILETIME *)pvStructInfo, - &sysTime); + ret = FileTimeToSystemTime(pvStructInfo, &sysTime); if (ret) ret = CRYPT_EncodeEnsureSpace(dwFlags, pEncodePara, pbEncoded, pcbEncoded, bytesNeeded); @@ -3477,7 +3452,7 @@ static BOOL WINAPI CRYPT_AsnEncodeChoiceOfTime(DWORD dwCertEncodingType, SYSTEMTIME sysTime; /* Check the year, if it's in the UTCTime range call that encode func */ - if (!FileTimeToSystemTime((const FILETIME *)pvStructInfo, &sysTime)) + if (!FileTimeToSystemTime(pvStructInfo, &sysTime)) return FALSE; if (sysTime.wYear >= 1950 && sysTime.wYear <= 2050) ret = CRYPT_AsnEncodeUtcTime(dwCertEncodingType, lpszStructType, @@ -3505,8 +3480,7 @@ static BOOL WINAPI CRYPT_AsnEncodeSequenceOfAny(DWORD dwCertEncodingType, __TRY { DWORD bytesNeeded, dataLen, lenBytes, i; - const CRYPT_SEQUENCE_OF_ANY *seq = - (const CRYPT_SEQUENCE_OF_ANY *)pvStructInfo; + const CRYPT_SEQUENCE_OF_ANY *seq = pvStructInfo; for (i = 0, dataLen = 0; i < seq->cValue; i++) dataLen += seq->rgValue[i].cbData; @@ -3612,8 +3586,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCRLDistPoints(DWORD dwCertEncodingType, __TRY { - const CRL_DIST_POINTS_INFO *info = - (const CRL_DIST_POINTS_INFO *)pvStructInfo; + const CRL_DIST_POINTS_INFO *info = pvStructInfo; if (!info->cDistPoint) { @@ -3692,8 +3665,7 @@ static BOOL WINAPI CRYPT_AsnEncodeEnhancedKeyUsage(DWORD dwCertEncodingType, __TRY { - const CERT_ENHKEY_USAGE *usage = - (const CERT_ENHKEY_USAGE *)pvStructInfo; + const CERT_ENHKEY_USAGE *usage = pvStructInfo; DWORD bytesNeeded = 0, lenBytes, size, i; ret = TRUE; @@ -3756,8 +3728,7 @@ static BOOL WINAPI CRYPT_AsnEncodeIssuingDistPoint(DWORD dwCertEncodingType, __TRY { - const CRL_ISSUING_DIST_POINT *point = - (const CRL_ISSUING_DIST_POINT *)pvStructInfo; + const CRL_ISSUING_DIST_POINT *point = pvStructInfo; struct AsnEncodeSequenceItem items[6] = { { 0 } }; struct AsnConstructedItem constructed = { 0 }; struct AsnEncodeTagSwappedItem swapped[5] = { { 0 } }; @@ -3843,8 +3814,7 @@ static BOOL CRYPT_AsnEncodeGeneralSubtree(DWORD dwCertEncodingType, PCRYPT_ENCODE_PARA pEncodePara, BYTE *pbEncoded, DWORD *pcbEncoded) { BOOL ret; - const CERT_GENERAL_SUBTREE *subtree = - (const CERT_GENERAL_SUBTREE *)pvStructInfo; + const CERT_GENERAL_SUBTREE *subtree = pvStructInfo; struct AsnEncodeSequenceItem items[3] = { { &subtree->Base, CRYPT_AsnEncodeAltNameEntry, 0 }, { 0 } @@ -3888,8 +3858,7 @@ static BOOL WINAPI CRYPT_AsnEncodeNameConstraints(DWORD dwCertEncodingType, __TRY { - const CERT_NAME_CONSTRAINTS_INFO *constraints = - (const CERT_NAME_CONSTRAINTS_INFO *)pvStructInfo; + const CERT_NAME_CONSTRAINTS_INFO *constraints = pvStructInfo; struct AsnEncodeSequenceItem items[2] = { { 0 } }; struct AsnEncodeTagSwappedItem swapped[2] = { { 0 } }; DWORD i, cItem = 0, cSwapped = 0; @@ -3978,8 +3947,7 @@ static BOOL WINAPI CRYPT_AsnEncodeIssuerSerialNumber( DWORD *pcbEncoded) { BOOL ret; - const CERT_ISSUER_SERIAL_NUMBER *issuerSerial = - (const CERT_ISSUER_SERIAL_NUMBER *)pvStructInfo; + const CERT_ISSUER_SERIAL_NUMBER *issuerSerial = pvStructInfo; struct AsnEncodeSequenceItem items[] = { { &issuerSerial->Issuer, CRYPT_CopyEncodedBlob, 0 }, { &issuerSerial->SerialNumber, CRYPT_AsnEncodeInteger, 0 }, @@ -4005,7 +3973,7 @@ static BOOL WINAPI CRYPT_AsnEncodePKCSSignerInfo(DWORD dwCertEncodingType, __TRY { - const CMSG_SIGNER_INFO *info = (const CMSG_SIGNER_INFO *)pvStructInfo; + const CMSG_SIGNER_INFO *info = pvStructInfo; if (!info->Issuer.cbData) SetLastError(E_INVALIDARG); @@ -4072,7 +4040,7 @@ static BOOL WINAPI CRYPT_AsnEncodeCMSSignerInfo(DWORD dwCertEncodingType, __TRY { - const CMSG_CMS_SIGNER_INFO *info = (const CMSG_CMS_SIGNER_INFO *)pvStructInfo; + const CMSG_CMS_SIGNER_INFO *info = pvStructInfo; if (info->SignerId.dwIdChoice != CERT_ID_ISSUER_SERIAL_NUMBER && info->SignerId.dwIdChoice != CERT_ID_KEY_IDENTIFIER) @@ -4531,6 +4499,20 @@ BOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, return ret; } +BOOL WINAPI PFXExportCertStore(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, + LPCWSTR szPassword, DWORD dwFlags) +{ + return PFXExportCertStoreEx(hStore, pPFX, szPassword, NULL, dwFlags); +} + +BOOL WINAPI PFXExportCertStoreEx(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, + LPCWSTR szPassword, void *pvReserved, DWORD dwFlags) +{ + FIXME_(crypt)("(%p, %p, %p, %p, %08x): stub\n", hStore, pPFX, szPassword, + pvReserved, dwFlags); + return FALSE; +} + BOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo) { diff --git a/reactos/dll/win32/crypt32/filestore.c b/reactos/dll/win32/crypt32/filestore.c index a33b828cebc..f27b3b7386a 100644 --- a/reactos/dll/win32/crypt32/filestore.c +++ b/reactos/dll/win32/crypt32/filestore.c @@ -37,7 +37,7 @@ typedef struct _WINE_FILESTOREINFO static void WINAPI CRYPT_FileCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %08x)\n", store, dwFlags); if (store->dirty) @@ -51,7 +51,7 @@ static void WINAPI CRYPT_FileCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) static BOOL WINAPI CRYPT_FileWriteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT cert, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %p, %d)\n", hCertStore, cert, dwFlags); store->dirty = TRUE; @@ -61,7 +61,7 @@ static BOOL WINAPI CRYPT_FileWriteCert(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_FileDeleteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %p, %08x)\n", hCertStore, pCertContext, dwFlags); store->dirty = TRUE; @@ -71,7 +71,7 @@ static BOOL WINAPI CRYPT_FileDeleteCert(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_FileWriteCRL(HCERTSTORE hCertStore, PCCRL_CONTEXT crl, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %p, %d)\n", hCertStore, crl, dwFlags); store->dirty = TRUE; @@ -81,7 +81,7 @@ static BOOL WINAPI CRYPT_FileWriteCRL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_FileDeleteCRL(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %p, %08x)\n", hCertStore, pCrlContext, dwFlags); store->dirty = TRUE; @@ -91,7 +91,7 @@ static BOOL WINAPI CRYPT_FileDeleteCRL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_FileWriteCTL(HCERTSTORE hCertStore, PCCTL_CONTEXT ctl, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %p, %d)\n", hCertStore, ctl, dwFlags); store->dirty = TRUE; @@ -101,7 +101,7 @@ static BOOL WINAPI CRYPT_FileWriteCTL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_FileDeleteCTL(HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwFlags) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; TRACE("(%p, %p, %08x)\n", hCertStore, pCtlContext, dwFlags); store->dirty = TRUE; @@ -129,7 +129,7 @@ static BOOL CRYPT_ReadBlobFromFile(HANDLE file, PCERT_BLOB blob) static BOOL WINAPI CRYPT_FileControl(HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara) { - PWINE_FILESTOREINFO store = (PWINE_FILESTOREINFO)hCertStore; + PWINE_FILESTOREINFO store = hCertStore; BOOL ret; TRACE("(%p, %08x, %d, %p)\n", hCertStore, dwFlags, dwCtrlType, @@ -292,7 +292,7 @@ PWINECRYPT_CERTSTORE CRYPT_FileNameOpenStoreW(HCRYPTPROV hCryptProv, DWORD dwFlags, const void *pvPara) { HCERTSTORE store = 0; - LPCWSTR fileName = (LPCWSTR)pvPara; + LPCWSTR fileName = pvPara; DWORD access, create; HANDLE file; @@ -376,7 +376,7 @@ PWINECRYPT_CERTSTORE CRYPT_FileNameOpenStoreW(HCRYPTPROV hCryptProv, CryptReleaseContext(hCryptProv, 0); } } - return (PWINECRYPT_CERTSTORE)store; + return store; } PWINECRYPT_CERTSTORE CRYPT_FileNameOpenStoreA(HCRYPTPROV hCryptProv, @@ -386,21 +386,21 @@ PWINECRYPT_CERTSTORE CRYPT_FileNameOpenStoreA(HCRYPTPROV hCryptProv, PWINECRYPT_CERTSTORE ret = NULL; TRACE("(%ld, %08x, %s)\n", hCryptProv, dwFlags, - debugstr_a((LPCSTR)pvPara)); + debugstr_a(pvPara)); if (!pvPara) { SetLastError(ERROR_FILE_NOT_FOUND); return NULL; } - len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pvPara, -1, NULL, 0); + len = MultiByteToWideChar(CP_ACP, 0, pvPara, -1, NULL, 0); if (len) { LPWSTR storeName = CryptMemAlloc(len * sizeof(WCHAR)); if (storeName) { - MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pvPara, -1, storeName, len); + MultiByteToWideChar(CP_ACP, 0, pvPara, -1, storeName, len); ret = CRYPT_FileNameOpenStoreW(hCryptProv, dwFlags, storeName); CryptMemFree(storeName); } diff --git a/reactos/dll/win32/crypt32/msg.c b/reactos/dll/win32/crypt32/msg.c index b04af9e630f..a16eef12cf8 100644 --- a/reactos/dll/win32/crypt32/msg.c +++ b/reactos/dll/win32/crypt32/msg.c @@ -109,7 +109,7 @@ static const BYTE empty_data_content[] = { 0x04,0x00 }; static void CDataEncodeMsg_Close(HCRYPTMSG hCryptMsg) { - CDataEncodeMsg *msg = (CDataEncodeMsg *)hCryptMsg; + CDataEncodeMsg *msg = hCryptMsg; if (msg->bare_content != empty_data_content) LocalFree(msg->bare_content); @@ -191,7 +191,7 @@ static BOOL CRYPT_EncodeDataContentInfoHeader(CDataEncodeMsg *msg, static BOOL CDataEncodeMsg_Update(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal) { - CDataEncodeMsg *msg = (CDataEncodeMsg *)hCryptMsg; + CDataEncodeMsg *msg = hCryptMsg; BOOL ret = FALSE; if (msg->base.state == MsgStateFinalized) @@ -320,7 +320,7 @@ static BOOL CRYPT_CopyParam(void *pvData, DWORD *pcbData, const void *src, static BOOL CDataEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData) { - CDataEncodeMsg *msg = (CDataEncodeMsg *)hCryptMsg; + CDataEncodeMsg *msg = hCryptMsg; BOOL ret = FALSE; switch (dwParamType) @@ -372,7 +372,7 @@ static HCRYPTMSG CDataEncodeMsg_Open(DWORD dwFlags, const void *pvMsgEncodeInfo, msg->bare_content_len = sizeof(empty_data_content); msg->bare_content = (LPBYTE)empty_data_content; } - return (HCRYPTMSG)msg; + return msg; } typedef struct _CHashEncodeMsg @@ -385,7 +385,7 @@ typedef struct _CHashEncodeMsg static void CHashEncodeMsg_Close(HCRYPTMSG hCryptMsg) { - CHashEncodeMsg *msg = (CHashEncodeMsg *)hCryptMsg; + CHashEncodeMsg *msg = hCryptMsg; CryptMemFree(msg->data.pbData); CryptDestroyHash(msg->hash); @@ -444,7 +444,7 @@ static BOOL CRYPT_EncodePKCSDigestedData(CHashEncodeMsg *msg, void *pvData, static BOOL CHashEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData) { - CHashEncodeMsg *msg = (CHashEncodeMsg *)hCryptMsg; + CHashEncodeMsg *msg = hCryptMsg; BOOL ret = FALSE; TRACE("(%p, %d, %d, %p, %p)\n", hCryptMsg, dwParamType, dwIndex, @@ -487,8 +487,7 @@ static BOOL CHashEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, break; } case CMSG_COMPUTED_HASH_PARAM: - ret = CryptGetHashParam(msg->hash, HP_HASHVAL, (BYTE *)pvData, pcbData, - 0); + ret = CryptGetHashParam(msg->hash, HP_HASHVAL, pvData, pcbData, 0); break; case CMSG_VERSION_PARAM: if (msg->base.state != MsgStateFinalized) @@ -512,7 +511,7 @@ static BOOL CHashEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, static BOOL CHashEncodeMsg_Update(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal) { - CHashEncodeMsg *msg = (CHashEncodeMsg *)hCryptMsg; + CHashEncodeMsg *msg = hCryptMsg; BOOL ret = FALSE; TRACE("(%p, %p, %d, %d)\n", hCryptMsg, pbData, cbData, fFinal); @@ -555,8 +554,7 @@ static HCRYPTMSG CHashEncodeMsg_Open(DWORD dwFlags, const void *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, PCMSG_STREAM_INFO pStreamInfo) { CHashEncodeMsg *msg; - const CMSG_HASHED_ENCODE_INFO *info = - (const CMSG_HASHED_ENCODE_INFO *)pvMsgEncodeInfo; + const CMSG_HASHED_ENCODE_INFO *info = pvMsgEncodeInfo; HCRYPTPROV prov; ALG_ID algID; @@ -592,7 +590,7 @@ static HCRYPTMSG CHashEncodeMsg_Open(DWORD dwFlags, const void *pvMsgEncodeInfo, msg = NULL; } } - return (HCRYPTMSG)msg; + return msg; } typedef struct _CMSG_SIGNER_ENCODE_INFO_WITH_CMS @@ -1086,7 +1084,7 @@ static BOOL CSignedMsgData_UpdateAuthenticatedAttributes( ret = CryptEncodeObjectEx(X509_ASN_ENCODING, PKCS_ATTRIBUTES, &msg_data->info->rgSignerInfo[i].AuthAttrs, - CRYPT_ENCODE_ALLOC_FLAG, NULL, (LPBYTE)&encodedAttrs, &size); + CRYPT_ENCODE_ALLOC_FLAG, NULL, &encodedAttrs, &size); if (ret) { ret = CryptHashData( @@ -1176,7 +1174,7 @@ typedef struct _CSignedEncodeMsg static void CSignedEncodeMsg_Close(HCRYPTMSG hCryptMsg) { - CSignedEncodeMsg *msg = (CSignedEncodeMsg *)hCryptMsg; + CSignedEncodeMsg *msg = hCryptMsg; DWORD i; CryptMemFree(msg->innerOID); @@ -1193,7 +1191,7 @@ static void CSignedEncodeMsg_Close(HCRYPTMSG hCryptMsg) static BOOL CSignedEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData) { - CSignedEncodeMsg *msg = (CSignedEncodeMsg *)hCryptMsg; + CSignedEncodeMsg *msg = hCryptMsg; BOOL ret = FALSE; switch (dwParamType) @@ -1301,7 +1299,7 @@ static BOOL CSignedEncodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, static BOOL CSignedEncodeMsg_Update(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal) { - CSignedEncodeMsg *msg = (CSignedEncodeMsg *)hCryptMsg; + CSignedEncodeMsg *msg = hCryptMsg; BOOL ret = FALSE; if (msg->base.state == MsgStateFinalized) @@ -1345,8 +1343,7 @@ static HCRYPTMSG CSignedEncodeMsg_Open(DWORD dwFlags, const void *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, PCMSG_STREAM_INFO pStreamInfo) { - const CMSG_SIGNED_ENCODE_INFO_WITH_CMS *info = - (const CMSG_SIGNED_ENCODE_INFO_WITH_CMS *)pvMsgEncodeInfo; + const CMSG_SIGNED_ENCODE_INFO_WITH_CMS *info = pvMsgEncodeInfo; DWORD i; CSignedEncodeMsg *msg; @@ -1510,7 +1507,7 @@ typedef struct _CDecodeMsg static void CDecodeMsg_Close(HCRYPTMSG hCryptMsg) { - CDecodeMsg *msg = (CDecodeMsg *)hCryptMsg; + CDecodeMsg *msg = hCryptMsg; if (msg->base.open_flags & CMSG_CRYPT_RELEASE_CONTEXT_FLAG) CryptReleaseContext(msg->crypt_prov, 0); @@ -1563,8 +1560,7 @@ static BOOL CDecodeMsg_DecodeDataContent(CDecodeMsg *msg, CRYPT_DER_BLOB *blob) DWORD size; ret = CryptDecodeObjectEx(X509_ASN_ENCODING, X509_OCTET_STRING, - blob->pbData, blob->cbData, CRYPT_DECODE_ALLOC_FLAG, NULL, (LPBYTE)&data, - &size); + blob->pbData, blob->cbData, CRYPT_DECODE_ALLOC_FLAG, NULL, &data, &size); if (ret) { ret = ContextPropertyList_SetProperty(msg->properties, @@ -1703,7 +1699,7 @@ static BOOL CDecodeMsg_DecodeContent(CDecodeMsg *msg, CRYPT_DER_BLOB *blob, ret = CryptDecodeObjectEx(X509_ASN_ENCODING, PKCS_CONTENT_INFO, msg->msg_data.pbData, msg->msg_data.cbData, CRYPT_DECODE_ALLOC_FLAG, - NULL, (LPBYTE)&info, &size); + NULL, &info, &size); if (ret) { if (!strcmp(info->pszObjId, szOID_RSA_data)) @@ -1802,7 +1798,7 @@ static BOOL CDecodeMsg_FinalizeSignedContent(CDecodeMsg *msg, ret = CryptDecodeObjectEx(X509_ASN_ENCODING, X509_OCTET_STRING, content->pbData, content->cbData, - CRYPT_DECODE_ALLOC_FLAG, NULL, (LPBYTE)&blob, &size); + CRYPT_DECODE_ALLOC_FLAG, NULL, &blob, &size); if (ret) { ret = CSignedMsgData_Update(&msg->u.signed_data, @@ -1839,7 +1835,7 @@ static BOOL CDecodeMsg_FinalizeContent(CDecodeMsg *msg, CRYPT_DER_BLOB *blob) static BOOL CDecodeMsg_Update(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal) { - CDecodeMsg *msg = (CDecodeMsg *)hCryptMsg; + CDecodeMsg *msg = hCryptMsg; BOOL ret = FALSE; TRACE("(%p, %p, %d, %d)\n", hCryptMsg, pbData, cbData, fFinal); @@ -1939,7 +1935,7 @@ static BOOL CDecodeHashMsg_GetParam(CDecodeMsg *msg, DWORD dwParamType, { ret = CRYPT_CopyParam(pvData, pcbData, blob.pbData, blob.cbData); if (ret && pvData) - CRYPT_FixUpAlgorithmID((CRYPT_ALGORITHM_IDENTIFIER *)pvData); + CRYPT_FixUpAlgorithmID(pvData); } else SetLastError(CRYPT_E_INVALID_MSG_TYPE); @@ -2136,7 +2132,7 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData, else { LPBYTE nextData = (BYTE *)pvData + sizeof(CMSG_SIGNER_INFO); - CMSG_SIGNER_INFO *out = (CMSG_SIGNER_INFO *)pvData; + CMSG_SIGNER_INFO *out = pvData; ret = TRUE; out->dwVersion = in->dwVersion; @@ -2206,7 +2202,7 @@ static BOOL CRYPT_CopyCMSSignerInfo(void *pvData, DWORD *pcbData, else { LPBYTE nextData = (BYTE *)pvData + sizeof(CMSG_CMS_SIGNER_INFO); - CMSG_CMS_SIGNER_INFO *out = (CMSG_CMS_SIGNER_INFO *)pvData; + CMSG_CMS_SIGNER_INFO *out = pvData; out->dwVersion = in->dwVersion; out->SignerId.dwIdChoice = in->SignerId.dwIdChoice; @@ -2265,7 +2261,7 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData, else { LPBYTE nextData = (BYTE *)pvData + sizeof(CERT_INFO); - CERT_INFO *out = (CERT_INFO *)pvData; + CERT_INFO *out = pvData; memset(out, 0, sizeof(CERT_INFO)); if (in->SignerId.dwIdChoice == CERT_ID_ISSUER_SERIAL_NUMBER) @@ -2306,7 +2302,7 @@ static BOOL CDecodeSignedMsg_GetParam(CDecodeMsg *msg, DWORD dwParamType, ret = CryptDecodeObjectEx(X509_ASN_ENCODING, X509_OCTET_STRING, msg->u.signed_data.info->content.Content.pbData, msg->u.signed_data.info->content.Content.cbData, - CRYPT_DECODE_ALLOC_FLAG, NULL, (LPBYTE)&blob, &size); + CRYPT_DECODE_ALLOC_FLAG, NULL, &blob, &size); if (ret) { ret = CRYPT_CopyParam(pvData, pcbData, blob->pbData, @@ -2453,7 +2449,7 @@ static BOOL CDecodeSignedMsg_GetParam(CDecodeMsg *msg, DWORD dwParamType, static BOOL CDecodeMsg_GetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData) { - CDecodeMsg *msg = (CDecodeMsg *)hCryptMsg; + CDecodeMsg *msg = hCryptMsg; BOOL ret = FALSE; switch (msg->type) @@ -2628,12 +2624,11 @@ static BOOL CDecodeSignedMsg_VerifySignatureEx(CDecodeMsg *msg, { case CMSG_VERIFY_SIGNER_PUBKEY: ret = CDecodeSignedMsg_VerifySignatureWithKey(msg, - para->hCryptProv, para->dwSignerIndex, - (PCERT_PUBLIC_KEY_INFO)para->pvSigner); + para->hCryptProv, para->dwSignerIndex, para->pvSigner); break; case CMSG_VERIFY_SIGNER_CERT: { - PCCERT_CONTEXT cert = (PCCERT_CONTEXT)para->pvSigner; + PCCERT_CONTEXT cert = para->pvSigner; ret = CDecodeSignedMsg_VerifySignatureWithKey(msg, para->hCryptProv, para->dwSignerIndex, &cert->pCertInfo->SubjectPublicKeyInfo); @@ -2650,7 +2645,7 @@ static BOOL CDecodeSignedMsg_VerifySignatureEx(CDecodeMsg *msg, static BOOL CDecodeMsg_Control(HCRYPTMSG hCryptMsg, DWORD dwFlags, DWORD dwCtrlType, const void *pvCtrlPara) { - CDecodeMsg *msg = (CDecodeMsg *)hCryptMsg; + CDecodeMsg *msg = hCryptMsg; BOOL ret = FALSE; switch (dwCtrlType) @@ -2743,7 +2738,7 @@ HCRYPTMSG WINAPI CryptMsgDuplicate(HCRYPTMSG hCryptMsg) if (hCryptMsg) { - CryptMsgBase *msg = (CryptMsgBase *)hCryptMsg; + CryptMsgBase *msg = hCryptMsg; InterlockedIncrement(&msg->ref); } @@ -2756,7 +2751,7 @@ BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg) if (hCryptMsg) { - CryptMsgBase *msg = (CryptMsgBase *)hCryptMsg; + CryptMsgBase *msg = hCryptMsg; if (InterlockedDecrement(&msg->ref) == 0) { @@ -2772,7 +2767,7 @@ BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg) BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData, DWORD cbData, BOOL fFinal) { - CryptMsgBase *msg = (CryptMsgBase *)hCryptMsg; + CryptMsgBase *msg = hCryptMsg; TRACE("(%p, %p, %d, %d)\n", hCryptMsg, pbData, cbData, fFinal); @@ -2782,7 +2777,7 @@ BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData, BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, DWORD dwIndex, void *pvData, DWORD *pcbData) { - CryptMsgBase *msg = (CryptMsgBase *)hCryptMsg; + CryptMsgBase *msg = hCryptMsg; TRACE("(%p, %d, %d, %p, %p)\n", hCryptMsg, dwParamType, dwIndex, pvData, pcbData); @@ -2792,7 +2787,7 @@ BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, BOOL WINAPI CryptMsgControl(HCRYPTMSG hCryptMsg, DWORD dwFlags, DWORD dwCtrlType, const void *pvCtrlPara) { - CryptMsgBase *msg = (CryptMsgBase *)hCryptMsg; + CryptMsgBase *msg = hCryptMsg; TRACE("(%p, %08x, %d, %p)\n", hCryptMsg, dwFlags, dwCtrlType, pvCtrlPara); diff --git a/reactos/dll/win32/crypt32/object.c b/reactos/dll/win32/crypt32/object.c index 202f4580655..e880f089090 100644 --- a/reactos/dll/win32/crypt32/object.c +++ b/reactos/dll/win32/crypt32/object.c @@ -108,11 +108,11 @@ static BOOL CRYPT_QueryContextObject(DWORD dwObjectType, const void *pvObject, /* Cert, CRL, and CTL contexts can't be "embedded" in a file, so * just read the file directly */ - ret = CRYPT_ReadBlobFromFile((LPCWSTR)pvObject, &fileBlob); + ret = CRYPT_ReadBlobFromFile(pvObject, &fileBlob); blob = &fileBlob; break; case CERT_QUERY_OBJECT_BLOB: - blob = (const CERT_BLOB *)pvObject; + blob = pvObject; ret = TRUE; break; default: @@ -198,11 +198,11 @@ static BOOL CRYPT_QuerySerializedContextObject(DWORD dwObjectType, /* Cert, CRL, and CTL contexts can't be "embedded" in a file, so * just read the file directly */ - ret = CRYPT_ReadBlobFromFile((LPCWSTR)pvObject, &fileBlob); + ret = CRYPT_ReadBlobFromFile(pvObject, &fileBlob); blob = &fileBlob; break; case CERT_QUERY_OBJECT_BLOB: - blob = (const CERT_BLOB *)pvObject; + blob = pvObject; ret = TRUE; break; default: @@ -287,7 +287,7 @@ static BOOL CRYPT_QuerySerializedStoreObject(DWORD dwObjectType, const void *pvObject, DWORD *pdwMsgAndCertEncodingType, DWORD *pdwContentType, HCERTSTORE *phCertStore, HCRYPTMSG *phMsg) { - LPCWSTR fileName = (LPCWSTR)pvObject; + LPCWSTR fileName = pvObject; HANDLE file; BOOL ret = FALSE; @@ -450,11 +450,11 @@ static BOOL CRYPT_QueryMessageObject(DWORD dwObjectType, const void *pvObject, /* This isn't an embedded PKCS7 message, so just read the file * directly */ - ret = CRYPT_ReadBlobFromFile((LPCWSTR)pvObject, &fileBlob); + ret = CRYPT_ReadBlobFromFile(pvObject, &fileBlob); blob = &fileBlob; break; case CERT_QUERY_OBJECT_BLOB: - blob = (const CERT_BLOB *)pvObject; + blob = pvObject; ret = TRUE; break; default: @@ -583,7 +583,7 @@ static BOOL CRYPT_QueryEmbeddedMessageObject(DWORD dwObjectType, GUID subject; BOOL ret = FALSE; - TRACE("%s\n", debugstr_w((LPCWSTR)pvObject)); + TRACE("%s\n", debugstr_w(pvObject)); if (dwObjectType != CERT_QUERY_OBJECT_FILE) { @@ -592,11 +592,11 @@ static BOOL CRYPT_QueryEmbeddedMessageObject(DWORD dwObjectType, SetLastError(E_INVALIDARG); return FALSE; } - file = CreateFileW((LPCWSTR)pvObject, GENERIC_READ, FILE_SHARE_READ, + file = CreateFileW(pvObject, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (file != INVALID_HANDLE_VALUE) { - ret = CryptSIPRetrieveSubjectGuid((LPCWSTR)pvObject, file, &subject); + ret = CryptSIPRetrieveSubjectGuid(pvObject, file, &subject); if (ret) { SIP_DISPATCH_INFO sip; @@ -614,7 +614,7 @@ static BOOL CRYPT_QueryEmbeddedMessageObject(DWORD dwObjectType, subjectInfo.cbSize = sizeof(subjectInfo); subjectInfo.pgSubjectType = &subject; subjectInfo.hFile = file; - subjectInfo.pwsFileName = (LPCWSTR)pvObject; + subjectInfo.pwsFileName = pvObject; ret = sip.pfGet(&subjectInfo, &encodingType, 0, &blob.cbData, NULL); if (ret) @@ -1623,7 +1623,7 @@ static BOOL WINAPI CRYPT_FormatAuthorityInfoAccess(DWORD dwCertEncodingType, else { *pcbFormat = bytesNeeded; - strcpyW((LPWSTR)pbFormat, infoNotAvailable); + strcpyW(pbFormat, infoNotAvailable); } } else @@ -2021,7 +2021,7 @@ static BOOL WINAPI CRYPT_FormatCRLDistPoints(DWORD dwCertEncodingType, else { *pcbFormat = bytesNeeded; - strcpyW((LPWSTR)pbFormat, infoNotAvailable); + strcpyW(pbFormat, infoNotAvailable); } } else diff --git a/reactos/dll/win32/crypt32/oid.c b/reactos/dll/win32/crypt32/oid.c index b4aae660521..0f36fd70f18 100644 --- a/reactos/dll/win32/crypt32/oid.c +++ b/reactos/dll/win32/crypt32/oid.c @@ -81,8 +81,9 @@ static const WCHAR ROOT[] = {'R','O','O','T',0}; static const WCHAR MY[] = {'M','Y',0}; static const WCHAR CA[] = {'C','A',0}; static const WCHAR ADDRESSBOOK[] = {'A','D','D','R','E','S','S','B','O','O','K',0}; -static const LPCWSTR LocalizedKeys[] = {ROOT,MY,CA,ADDRESSBOOK}; -static WCHAR LocalizedNames[4][256]; +static const WCHAR TRUSTEDPUBLISHER[] = {'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r',0}; +static const LPCWSTR LocalizedKeys[] = {ROOT,MY,CA,ADDRESSBOOK,TRUSTEDPUBLISHER}; +static WCHAR LocalizedNames[sizeof(LocalizedKeys)/sizeof(LocalizedKeys[0])][256]; static void free_function_sets(void) { @@ -122,7 +123,7 @@ HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, { if (!strcasecmp(pszFuncName, cursor->name)) { - ret = (HCRYPTOIDFUNCSET)cursor; + ret = cursor; break; } } @@ -150,7 +151,7 @@ HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, } LeaveCriticalSection(&funcSetCS); - return (HCRYPTOIDFUNCSET)ret; + return ret; } static char *CRYPT_GetKeyName(DWORD dwEncodingType, LPCSTR pszFuncName, @@ -193,7 +194,7 @@ BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList) { BOOL ret = TRUE; - struct OIDFunctionSet *set = (struct OIDFunctionSet *)hFuncSet; + struct OIDFunctionSet *set = hFuncSet; char *keyName; HKEY key; long rc; @@ -243,7 +244,7 @@ BOOL WINAPI CryptInstallOIDFunctionAddress(HMODULE hModule, TRACE("(%p, %d, %s, %d, %p, %08x)\n", hModule, dwEncodingType, debugstr_a(pszFuncName), cFuncEntry, rgFuncEntry, dwFlags); - set = (struct OIDFunctionSet *)CryptInitOIDFunctionSet(pszFuncName, 0); + set = CryptInitOIDFunctionSet(pszFuncName, 0); if (set) { DWORD i; @@ -385,7 +386,7 @@ BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, HCRYPTOIDFUNCADDR *phFuncAddr) { BOOL ret = FALSE; - struct OIDFunctionSet *set = (struct OIDFunctionSet *)hFuncSet; + struct OIDFunctionSet *set = hFuncSet; TRACE("(%p, %d, %s, %08x, %p, %p)\n", hFuncSet, dwEncodingType, debugstr_a(pszOID), dwFlags, ppvFuncAddr, phFuncAddr); @@ -440,7 +441,7 @@ BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr, */ if (hFuncAddr) { - struct FuncAddr *addr = (struct FuncAddr *)hFuncAddr; + struct FuncAddr *addr = hFuncAddr; CryptMemFree(addr->dllList); FreeLibrary(addr->lib); @@ -473,7 +474,7 @@ BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr, HCRYPTOIDFUNCADDR *phFuncAddr) { - struct OIDFunctionSet *set = (struct OIDFunctionSet *)hFuncSet; + struct OIDFunctionSet *set = hFuncSet; BOOL ret = FALSE; TRACE("(%p, %d, %s, %08x, %p, %p)\n", hFuncSet, dwEncodingType, @@ -508,7 +509,7 @@ BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, } else { - struct FuncAddr *addr = (struct FuncAddr *)*phFuncAddr; + struct FuncAddr *addr = *phFuncAddr; if (!addr) { @@ -1503,11 +1504,11 @@ PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey, { struct OIDInfo *info; - TRACE("CRYPT_OID_INFO_NAME_KEY: %s\n", debugstr_w((LPWSTR)pvKey)); + TRACE("CRYPT_OID_INFO_NAME_KEY: %s\n", debugstr_w(pvKey)); EnterCriticalSection(&oidInfoCS); LIST_FOR_EACH_ENTRY(info, &oidInfo, struct OIDInfo, entry) { - if (!lstrcmpW(info->info.pwszName, (LPWSTR)pvKey) && + if (!lstrcmpW(info->info.pwszName, pvKey) && (!dwGroupId || info->info.dwGroupId == dwGroupId)) { ret = &info->info; @@ -1520,7 +1521,7 @@ PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey, case CRYPT_OID_INFO_OID_KEY: { struct OIDInfo *info; - LPSTR oid = (LPSTR)pvKey; + LPSTR oid = pvKey; TRACE("CRYPT_OID_INFO_OID_KEY: %s\n", debugstr_a(oid)); EnterCriticalSection(&oidInfoCS); diff --git a/reactos/dll/win32/crypt32/provstore.c b/reactos/dll/win32/crypt32/provstore.c index 70dba644f39..795c8e1114b 100644 --- a/reactos/dll/win32/crypt32/provstore.c +++ b/reactos/dll/win32/crypt32/provstore.c @@ -43,7 +43,7 @@ typedef struct _WINE_PROVIDERSTORE static void WINAPI CRYPT_ProvCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { - PWINE_PROVIDERSTORE store = (PWINE_PROVIDERSTORE)hCertStore; + PWINE_PROVIDERSTORE store = hCertStore; TRACE("(%p, %08x)\n", store, dwFlags); @@ -69,7 +69,7 @@ static BOOL CRYPT_ProvAddCert(PWINECRYPT_CERTSTORE store, void *cert, { ret = TRUE; if (ps->provWriteCert) - ret = ps->provWriteCert(ps->hStoreProv, (PCCERT_CONTEXT)cert, + ret = ps->provWriteCert(ps->hStoreProv, cert, CERT_STORE_PROV_WRITE_ADD_FLAG); if (ret) ret = ps->memStore->certs.addContext(ps->memStore, cert, NULL, @@ -135,7 +135,7 @@ static BOOL CRYPT_ProvAddCRL(PWINECRYPT_CERTSTORE store, void *crl, { ret = TRUE; if (ps->provWriteCrl) - ret = ps->provWriteCrl(ps->hStoreProv, (PCCRL_CONTEXT)crl, + ret = ps->provWriteCrl(ps->hStoreProv, crl, CERT_STORE_PROV_WRITE_ADD_FLAG); if (ret) ret = ps->memStore->crls.addContext(ps->memStore, crl, NULL, @@ -202,7 +202,7 @@ static BOOL CRYPT_ProvAddCTL(PWINECRYPT_CERTSTORE store, void *ctl, { ret = TRUE; if (ps->provWriteCtl) - ret = ps->provWriteCtl(ps->hStoreProv, (PCCTL_CONTEXT)ctl, + ret = ps->provWriteCtl(ps->hStoreProv, ctl, CERT_STORE_PROV_WRITE_ADD_FLAG); if (ret) ret = ps->memStore->ctls.addContext(ps->memStore, ctl, NULL, @@ -250,7 +250,7 @@ static BOOL CRYPT_ProvDeleteCTL(PWINECRYPT_CERTSTORE store, void *ctl) static BOOL WINAPI CRYPT_ProvControl(HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara) { - PWINE_PROVIDERSTORE store = (PWINE_PROVIDERSTORE)hCertStore; + PWINE_PROVIDERSTORE store = hCertStore; BOOL ret = TRUE; TRACE("(%p, %08x, %d, %p)\n", hCertStore, dwFlags, dwCtrlType, diff --git a/reactos/dll/win32/crypt32/regstore.c b/reactos/dll/win32/crypt32/regstore.c index 7b9d67c34aa..296b0c9a5b9 100644 --- a/reactos/dll/win32/crypt32/regstore.c +++ b/reactos/dll/win32/crypt32/regstore.c @@ -319,7 +319,7 @@ static BOOL CRYPT_RegFlushStore(PWINE_REGSTOREINFO store, BOOL force) static void WINAPI CRYPT_RegCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %08x)\n", store, dwFlags); if (dwFlags) @@ -392,7 +392,7 @@ static BOOL CRYPT_RegDeleteContext(PWINE_REGSTOREINFO store, static BOOL WINAPI CRYPT_RegWriteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT cert, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %p, %d)\n", hCertStore, cert, dwFlags); @@ -402,7 +402,7 @@ static BOOL WINAPI CRYPT_RegWriteCert(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_RegDeleteCert(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %p, %08x)\n", store, pCertContext, dwFlags); @@ -413,7 +413,7 @@ static BOOL WINAPI CRYPT_RegDeleteCert(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_RegWriteCRL(HCERTSTORE hCertStore, PCCRL_CONTEXT crl, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %p, %d)\n", hCertStore, crl, dwFlags); @@ -423,7 +423,7 @@ static BOOL WINAPI CRYPT_RegWriteCRL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_RegDeleteCRL(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %p, %08x)\n", store, pCrlContext, dwFlags); @@ -434,7 +434,7 @@ static BOOL WINAPI CRYPT_RegDeleteCRL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_RegWriteCTL(HCERTSTORE hCertStore, PCCTL_CONTEXT ctl, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %p, %d)\n", hCertStore, ctl, dwFlags); @@ -444,7 +444,7 @@ static BOOL WINAPI CRYPT_RegWriteCTL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_RegDeleteCTL(HCERTSTORE hCertStore, PCCTL_CONTEXT pCtlContext, DWORD dwFlags) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; TRACE("(%p, %p, %08x)\n", store, pCtlContext, dwFlags); @@ -455,7 +455,7 @@ static BOOL WINAPI CRYPT_RegDeleteCTL(HCERTSTORE hCertStore, static BOOL WINAPI CRYPT_RegControl(HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara) { - PWINE_REGSTOREINFO store = (PWINE_REGSTOREINFO)hCertStore; + PWINE_REGSTOREINFO store = hCertStore; BOOL ret; TRACE("(%p, %08x, %d, %p)\n", hCertStore, dwFlags, dwCtrlType, diff --git a/reactos/dll/win32/crypt32/rootstore.c b/reactos/dll/win32/crypt32/rootstore.c index 116c9341139..a2ed6e55542 100644 --- a/reactos/dll/win32/crypt32/rootstore.c +++ b/reactos/dll/win32/crypt32/rootstore.c @@ -744,17 +744,6 @@ PWINECRYPT_CERTSTORE CRYPT_RootOpenStore(HCRYPTPROV hCryptProv, DWORD dwFlags) SetLastError(ERROR_ACCESS_DENIED); return NULL; } - switch (dwFlags & CERT_SYSTEM_STORE_LOCATION_MASK) - { - case CERT_SYSTEM_STORE_LOCAL_MACHINE: - case CERT_SYSTEM_STORE_CURRENT_USER: - break; - default: - TRACE("location %08x unsupported\n", - dwFlags & CERT_SYSTEM_STORE_LOCATION_MASK); - SetLastError(E_INVALIDARG); - return NULL; - } if (!CRYPT_rootStore) { HCERTSTORE root = create_root_store(); diff --git a/reactos/dll/win32/crypt32/serialize.c b/reactos/dll/win32/crypt32/serialize.c index 32a9ca0006f..2cc6ffdb5a1 100644 --- a/reactos/dll/win32/crypt32/serialize.c +++ b/reactos/dll/win32/crypt32/serialize.c @@ -627,7 +627,7 @@ static BOOL CRYPT_WriteSerializedStoreToFile(HANDLE file, HCERTSTORE store) static BOOL CRYPT_SavePKCSToMem(HCERTSTORE store, DWORD dwMsgAndCertEncodingType, void *handle) { - CERT_BLOB *blob = (CERT_BLOB *)handle; + CERT_BLOB *blob = handle; CRYPT_SIGNED_INFO signedInfo = { 0 }; PCCERT_CONTEXT cert = NULL; PCCRL_CONTEXT crl = NULL; @@ -767,7 +767,7 @@ struct MemWrittenTracker /* handle is a pointer to a MemWrittenTracker. Assumes its pointer is valid. */ static BOOL CRYPT_MemOutputFunc(void *handle, const void *buffer, DWORD size) { - struct MemWrittenTracker *tracker = (struct MemWrittenTracker *)handle; + struct MemWrittenTracker *tracker = handle; BOOL ret; if (tracker->written + size > tracker->cbData) @@ -797,7 +797,7 @@ static BOOL CRYPT_CountSerializedBytes(void *handle, const void *buffer, static BOOL CRYPT_SaveSerializedToMem(HCERTSTORE store, DWORD dwMsgAndCertEncodingType, void *handle) { - CERT_BLOB *blob = (CERT_BLOB *)handle; + CERT_BLOB *blob = handle; DWORD size = 0; BOOL ret; @@ -833,7 +833,7 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, { BOOL (*saveFunc)(HCERTSTORE, DWORD, void *); void *handle; - BOOL ret; + BOOL ret, closeFile = TRUE; TRACE("(%p, %08x, %d, %d, %p, %08x)\n", hCertStore, dwMsgAndCertEncodingType, dwSaveAs, dwSaveTo, pvSaveToPara, dwFlags); @@ -841,7 +841,16 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, switch (dwSaveAs) { case CERT_STORE_SAVE_AS_STORE: + if (dwSaveTo == CERT_STORE_SAVE_TO_MEMORY) + saveFunc = CRYPT_SaveSerializedToMem; + else + saveFunc = CRYPT_SaveSerializedToFile; + break; case CERT_STORE_SAVE_AS_PKCS7: + if (dwSaveTo == CERT_STORE_SAVE_TO_MEMORY) + saveFunc = CRYPT_SavePKCSToMem; + else + saveFunc = CRYPT_SavePKCSToFile; break; default: WARN("unimplemented for %d\n", dwSaveAs); @@ -852,25 +861,18 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, { case CERT_STORE_SAVE_TO_FILE: handle = pvSaveToPara; - saveFunc = dwSaveAs == CERT_STORE_SAVE_AS_STORE ? - CRYPT_SaveSerializedToFile : CRYPT_SavePKCSToFile; + closeFile = FALSE; break; case CERT_STORE_SAVE_TO_FILENAME_A: - handle = CreateFileA((LPCSTR)pvSaveToPara, GENERIC_WRITE, 0, NULL, + handle = CreateFileA(pvSaveToPara, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - saveFunc = dwSaveAs == CERT_STORE_SAVE_AS_STORE ? - CRYPT_SaveSerializedToFile : CRYPT_SavePKCSToFile; break; case CERT_STORE_SAVE_TO_FILENAME_W: - handle = CreateFileW((LPCWSTR)pvSaveToPara, GENERIC_WRITE, 0, NULL, + handle = CreateFileW(pvSaveToPara, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); - saveFunc = dwSaveAs == CERT_STORE_SAVE_AS_STORE ? - CRYPT_SaveSerializedToFile : CRYPT_SavePKCSToFile; break; case CERT_STORE_SAVE_TO_MEMORY: handle = pvSaveToPara; - saveFunc = dwSaveAs == CERT_STORE_SAVE_AS_STORE ? - CRYPT_SaveSerializedToMem : CRYPT_SavePKCSToMem; break; default: WARN("unimplemented for %d\n", dwSaveTo); @@ -878,6 +880,8 @@ BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, return FALSE; } ret = saveFunc(hCertStore, dwMsgAndCertEncodingType, handle); + if (closeFile) + CloseHandle(handle); TRACE("returning %d\n", ret); return ret; } diff --git a/reactos/dll/win32/crypt32/store.c b/reactos/dll/win32/crypt32/store.c index 3b42893d3dd..e04331548f9 100644 --- a/reactos/dll/win32/crypt32/store.c +++ b/reactos/dll/win32/crypt32/store.c @@ -273,7 +273,7 @@ static BOOL CRYPT_MemDeleteCtl(PWINECRYPT_CERTSTORE store, void *pCtlContext) static void WINAPI CRYPT_MemCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { - WINE_MEMSTORE *store = (WINE_MEMSTORE *)hCertStore; + WINE_MEMSTORE *store = hCertStore; TRACE("(%p, %08x)\n", store, dwFlags); if (dwFlags) @@ -329,26 +329,34 @@ static WINECRYPT_CERTSTORE *CRYPT_MemOpenStore(HCRYPTPROV hCryptProv, return (PWINECRYPT_CERTSTORE)store; } +static const WCHAR rootW[] = { 'R','o','o','t',0 }; + static PWINECRYPT_CERTSTORE CRYPT_SysRegOpenStoreW(HCRYPTPROV hCryptProv, DWORD dwFlags, const void *pvPara) { - static const WCHAR rootW[] = { 'R','o','o','t',0 }; static const WCHAR fmt[] = { '%','s','\\','%','s',0 }; - LPCWSTR storeName = (LPCWSTR)pvPara; + LPCWSTR storeName = pvPara; LPWSTR storePath; PWINECRYPT_CERTSTORE store = NULL; HKEY root; LPCWSTR base; TRACE("(%ld, %08x, %s)\n", hCryptProv, dwFlags, - debugstr_w((LPCWSTR)pvPara)); + debugstr_w(pvPara)); if (!pvPara) { SetLastError(E_INVALIDARG); return NULL; } - if (!lstrcmpiW(storeName, rootW)) + /* FIXME: In Windows, the root store (even the current user location) is + * protected: adding to it or removing from it present a user interface, + * and the keys are owned by the system process, not the current user. + * Wine's registry doesn't implement access controls, so a similar + * mechanism isn't possible yet. + */ + if ((dwFlags & CERT_SYSTEM_STORE_LOCATION_MASK) == + CERT_SYSTEM_STORE_LOCAL_MACHINE && !lstrcmpiW(storeName, rootW)) return CRYPT_RootOpenStore(hCryptProv, dwFlags); switch (dwFlags & CERT_SYSTEM_STORE_LOCATION_MASK) @@ -442,21 +450,21 @@ static PWINECRYPT_CERTSTORE CRYPT_SysRegOpenStoreA(HCRYPTPROV hCryptProv, PWINECRYPT_CERTSTORE ret = NULL; TRACE("(%ld, %08x, %s)\n", hCryptProv, dwFlags, - debugstr_a((LPCSTR)pvPara)); + debugstr_a(pvPara)); if (!pvPara) { SetLastError(ERROR_FILE_NOT_FOUND); return NULL; } - len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pvPara, -1, NULL, 0); + len = MultiByteToWideChar(CP_ACP, 0, pvPara, -1, NULL, 0); if (len) { LPWSTR storeName = CryptMemAlloc(len * sizeof(WCHAR)); if (storeName) { - MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pvPara, -1, storeName, len); + MultiByteToWideChar(CP_ACP, 0, pvPara, -1, storeName, len); ret = CRYPT_SysRegOpenStoreW(hCryptProv, dwFlags, storeName); CryptMemFree(storeName); } @@ -471,7 +479,7 @@ static PWINECRYPT_CERTSTORE CRYPT_SysOpenStoreW(HCRYPTPROV hCryptProv, BOOL ret; TRACE("(%ld, %08x, %s)\n", hCryptProv, dwFlags, - debugstr_w((LPCWSTR)pvPara)); + debugstr_w(pvPara)); if (!pvPara) { @@ -533,7 +541,7 @@ static PWINECRYPT_CERTSTORE CRYPT_SysOpenStoreW(HCRYPTPROV hCryptProv, CryptReleaseContext(hCryptProv, 0); } } - return (PWINECRYPT_CERTSTORE)store; + return store; } static PWINECRYPT_CERTSTORE CRYPT_SysOpenStoreA(HCRYPTPROV hCryptProv, @@ -543,21 +551,21 @@ static PWINECRYPT_CERTSTORE CRYPT_SysOpenStoreA(HCRYPTPROV hCryptProv, PWINECRYPT_CERTSTORE ret = NULL; TRACE("(%ld, %08x, %s)\n", hCryptProv, dwFlags, - debugstr_a((LPCSTR)pvPara)); + debugstr_a(pvPara)); if (!pvPara) { SetLastError(ERROR_FILE_NOT_FOUND); return NULL; } - len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pvPara, -1, NULL, 0); + len = MultiByteToWideChar(CP_ACP, 0, pvPara, -1, NULL, 0); if (len) { LPWSTR storeName = CryptMemAlloc(len * sizeof(WCHAR)); if (storeName) { - MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pvPara, -1, storeName, len); + MultiByteToWideChar(CP_ACP, 0, pvPara, -1, storeName, len); ret = CRYPT_SysOpenStoreW(hCryptProv, dwFlags, storeName); CryptMemFree(storeName); } @@ -661,7 +669,7 @@ static PWINECRYPT_CERTSTORE CRYPT_PKCSOpenStore(HCRYPTPROV hCryptProv, { HCRYPTMSG msg; PWINECRYPT_CERTSTORE store = NULL; - const CRYPT_DATA_BLOB *data = (const CRYPT_DATA_BLOB *)pvPara; + const CRYPT_DATA_BLOB *data = pvPara; BOOL ret; DWORD msgOpenFlags = dwFlags & CERT_STORE_NO_CRYPT_RELEASE_FLAG ? 0 : CMSG_CRYPT_RELEASE_CONTEXT_FLAG; @@ -704,7 +712,7 @@ static PWINECRYPT_CERTSTORE CRYPT_PhysOpenStoreW(HCRYPTPROV hCryptProv, FIXME("(%ld, %08x, %p): stub\n", hCryptProv, dwFlags, pvPara); else FIXME("(%ld, %08x, %s): stub\n", hCryptProv, dwFlags, - debugstr_w((LPCWSTR)pvPara)); + debugstr_w(pvPara)); return NULL; } @@ -787,7 +795,7 @@ HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, hCryptProv, dwFlags, pvPara); else hcs = openFunc(hCryptProv, dwFlags, pvPara); - return (HCERTSTORE)hcs; + return hcs; } HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, @@ -821,7 +829,7 @@ BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, PCCERT_CONTEXT *ppStoreContext) { - PWINECRYPT_CERTSTORE store = (PWINECRYPT_CERTSTORE)hCertStore; + PWINECRYPT_CERTSTORE store = hCertStore; BOOL ret = TRUE; PCCERT_CONTEXT toAdd = NULL, existing = NULL; @@ -936,7 +944,7 @@ BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore, PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, PCCERT_CONTEXT pPrev) { - WINECRYPT_CERTSTORE *hcs = (WINECRYPT_CERTSTORE *)hCertStore; + WINECRYPT_CERTSTORE *hcs = hCertStore; PCCERT_CONTEXT ret; TRACE("(%p, %p)\n", hCertStore, pPrev); @@ -964,8 +972,7 @@ BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext) } else { - PWINECRYPT_CERTSTORE hcs = - (PWINECRYPT_CERTSTORE)pCertContext->hCertStore; + PWINECRYPT_CERTSTORE hcs = pCertContext->hCertStore; if (hcs->dwMagic != WINE_CRYPTCERTSTORE_MAGIC) ret = FALSE; @@ -983,7 +990,7 @@ BOOL WINAPI CertAddCRLContextToStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, PCCRL_CONTEXT* ppStoreContext) { - PWINECRYPT_CERTSTORE store = (PWINECRYPT_CERTSTORE)hCertStore; + PWINECRYPT_CERTSTORE store = hCertStore; BOOL ret = TRUE; PCCRL_CONTEXT toAdd = NULL, existing = NULL; @@ -1103,8 +1110,7 @@ BOOL WINAPI CertDeleteCRLFromStore(PCCRL_CONTEXT pCrlContext) } else { - PWINECRYPT_CERTSTORE hcs = - (PWINECRYPT_CERTSTORE)pCrlContext->hCertStore; + PWINECRYPT_CERTSTORE hcs = pCrlContext->hCertStore; if (hcs->dwMagic != WINE_CRYPTCERTSTORE_MAGIC) ret = FALSE; @@ -1118,7 +1124,7 @@ BOOL WINAPI CertDeleteCRLFromStore(PCCRL_CONTEXT pCrlContext) PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, PCCRL_CONTEXT pPrev) { - WINECRYPT_CERTSTORE *hcs = (WINECRYPT_CERTSTORE *)hCertStore; + WINECRYPT_CERTSTORE *hcs = hCertStore; PCCRL_CONTEXT ret; TRACE("(%p, %p)\n", hCertStore, pPrev); @@ -1133,7 +1139,7 @@ PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore) { - WINECRYPT_CERTSTORE *hcs = (WINECRYPT_CERTSTORE *)hCertStore; + WINECRYPT_CERTSTORE *hcs = hCertStore; TRACE("(%p)\n", hCertStore); @@ -1144,7 +1150,7 @@ HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore) BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) { - WINECRYPT_CERTSTORE *hcs = (WINECRYPT_CERTSTORE *) hCertStore; + WINECRYPT_CERTSTORE *hcs = hCertStore; TRACE("(%p, %08x)\n", hCertStore, dwFlags); @@ -1168,7 +1174,7 @@ BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags) BOOL WINAPI CertControlStore(HCERTSTORE hCertStore, DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara) { - WINECRYPT_CERTSTORE *hcs = (WINECRYPT_CERTSTORE *)hCertStore; + WINECRYPT_CERTSTORE *hcs = hCertStore; BOOL ret; TRACE("(%p, %08x, %d, %p)\n", hCertStore, dwFlags, dwCtrlType, @@ -1191,7 +1197,7 @@ BOOL WINAPI CertControlStore(HCERTSTORE hCertStore, DWORD dwFlags, BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, void *pvData, DWORD *pcbData) { - PWINECRYPT_CERTSTORE store = (PWINECRYPT_CERTSTORE)hCertStore; + PWINECRYPT_CERTSTORE store = hCertStore; BOOL ret = FALSE; TRACE("(%p, %d, %p, %p)\n", hCertStore, dwPropId, pvData, pcbData); @@ -1255,7 +1261,7 @@ BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, BOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, DWORD dwFlags, const void *pvData) { - PWINECRYPT_CERTSTORE store = (PWINECRYPT_CERTSTORE)hCertStore; + PWINECRYPT_CERTSTORE store = hCertStore; BOOL ret = FALSE; TRACE("(%p, %d, %08x, %p)\n", hCertStore, dwPropId, dwFlags, pvData); @@ -1270,7 +1276,7 @@ BOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, default: if (pvData) { - const CRYPT_DATA_BLOB *blob = (const CRYPT_DATA_BLOB *)pvData; + const CRYPT_DATA_BLOB *blob = pvData; ret = ContextPropertyList_SetProperty(store->properties, dwPropId, blob->pbData, blob->cbData); @@ -1343,6 +1349,7 @@ BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara, BOOL ret = FALSE; LONG rc; HKEY key; + CERT_SYSTEM_STORE_INFO info = { sizeof(info) }; TRACE("(%08x, %p, %p, %p)\n", dwFlags, pvSystemStoreLocationPara, pvArg, pfnEnum); @@ -1351,7 +1358,6 @@ BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara, if (!rc) { DWORD index = 0; - CERT_SYSTEM_STORE_INFO info = { sizeof(info) }; ret = TRUE; do { @@ -1368,6 +1374,12 @@ BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara, } else SetLastError(rc); + /* Include root store for the local machine location (it isn't in the + * registry) + */ + if (ret && (dwFlags & CERT_SYSTEM_STORE_LOCATION_MASK) == + CERT_SYSTEM_STORE_LOCAL_MACHINE) + ret = pfnEnum(rootW, dwFlags, &info, NULL, pvArg); return ret; } @@ -1378,7 +1390,7 @@ BOOL WINAPI CertEnumPhysicalStore(const void *pvSystemStore, DWORD dwFlags, FIXME("(%p, %08x, %p, %p): stub\n", pvSystemStore, dwFlags, pvArg, pfnEnum); else - FIXME("(%s, %08x, %p, %p): stub\n", debugstr_w((LPCWSTR)pvSystemStore), + FIXME("(%s, %08x, %p, %p): stub\n", debugstr_w(pvSystemStore), dwFlags, pvArg, pfnEnum); return FALSE; diff --git a/reactos/include/psdk/wincrypt.h b/reactos/include/psdk/wincrypt.h index f574997ba8f..75017fee939 100644 --- a/reactos/include/psdk/wincrypt.h +++ b/reactos/include/psdk/wincrypt.h @@ -1957,6 +1957,9 @@ static const WCHAR MS_ENH_RSA_AES_PROV_W[] = { 'M','i','c','r','o','s' #define CRYPT_READ 0x0008 #define CRYPT_WRITE 0x0010 #define CRYPT_MAC 0x0020 +#define CRYPT_EXPORT_KEY 0x0040 +#define CRYPT_IMPORT_KEY 0x0080 +#define CRYPT_ARCHIVE 0x0100 /* Crypt*Key */ #define CRYPT_EXPORTABLE 0x00000001 @@ -3339,6 +3342,11 @@ typedef struct _CTL_FIND_SUBJECT_PARA #define CRYPT_ACQUIRE_COMPARE_KEY_FLAG 0x00000004 #define CRYPT_ACQUIRE_SILENT_FLAG 0x00000040 +/* flags for CryptFindCertificateKeyProvInfo */ +#define CRYPT_FIND_USER_KEYSET_FLAG 0x00000001 +#define CRYPT_FIND_MACHINE_KEYSET_FLAG 0x00000002 +#define CRYPT_FIND_SILENT_KEYSET_FLAG 0x00000040 + /* Chain engines and chains */ typedef HANDLE HCERTCHAINENGINE; #define HCCE_CURRENT_USER ((HCERTCHAINENGINE)NULL) @@ -3766,6 +3774,15 @@ typedef struct _CMSG_CMS_RECIPIENT_INFO { #define CMSG_ENCODED_SORTED_CTL_FLAG 0x1 #define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2 +/* PFXImportCertStore flags */ +#define CRYPT_USER_KEYSET 0x00001000 +#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 +/* PFXExportCertStore flags */ +#define REPORT_NO_PRIVATE_KEY 0x00000001 +#define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x00000002 +#define EXPORT_PRIVATE_KEYS 0x00000004 +#define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 + /* function declarations */ /* advapi32.dll */ WINADVAPI BOOL WINAPI CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD); @@ -4232,6 +4249,9 @@ BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert, DWORD dwFlags, void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProv, DWORD *pdwKeySpec, BOOL *pfCallerFreeProv); +BOOL WINAPI CryptFindCertificateKeyProvInfo(PCCERT_CONTEXT pCert, + DWORD dwFlags, void *pvReserved); + BOOL WINAPI CryptProtectData( DATA_BLOB* pDataIn, LPCWSTR szDataDescr, DATA_BLOB* pOptionalEntropy, PVOID pvReserved, CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut ); @@ -4386,6 +4406,17 @@ BOOL WINAPI CryptVerifyDetachedMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara, const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash, DWORD *pcbComputedHash); +/* PFX functions */ +HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, + DWORD dwFlags); +BOOL WINAPI PFXIsPFXBlob(CRYPT_DATA_BLOB *pPFX); +BOOL WINAPI PFXVerifyPassword(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, + DWORD dwFlags); +BOOL WINAPI PFXExportCertStoreEx(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, + LPCWSTR szPassword, void *pvReserved, DWORD dwFlags); +BOOL WINAPI PFXExportCertStore(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, + LPCWSTR szPassword, DWORD dwFlags); + /* cryptnet.dll functions */ BOOL WINAPI CryptCancelAsyncRetrieval(HCRYPTASYNC hAsyncRetrieval);