Tag: cryptoapi

如何查询根证书?

我有一个文件。 此文件使用我们的公司证书进行数字签名。 此证书具有签名(例如Microsoft)。 但是,此证书还具有证书路径,其中顶部有根证书(如Symantec),在此之下是另一个证书(如Symantec代码签名),在此之下是我们的公司证书。 我找到了这个链接,并重写了它,所以我可以查询我需要的一切。 好几乎一切。 我无法弄清楚,我如何查询有关根证书的信息? 它的名字还是什么? 明显我错过了什么,但我不知道是什么。 有人可以帮帮我吗? 提前致谢!

MS CryptoAPI – 机器密钥库,错误0x80090016(NTE_BAD_KEYSET),带有certreq创建的密钥

摘要 我使用certreq创建了一个PKCS#10 CSR,并设置了Exportable=TRUE选项。 这在REQUEST位置下成功创建了一个密钥。 我还有一个有效的证书,钥匙在MY 。 如果我尝试访问其中任何一个,CryptoAPI报告错误代码0x80090016 。 到目前为止,在不同的访问权限下运行无法解决此问题。 目标 我的目标是获得MY和REQUEST两个键。 如果我在其中任何一个上调用CryptAcquireContextA() ,它就会失败。 系统 Windows 7 x64 示例源代码 我的完整代码如下所示: hStore = CertOpenStore(CERT_STORE_PROV_SYSTEM_A, 0, 0, CERT_SYSTEM_STORE_LOCAL_MACHINE, “REQUEST”); pCert = CertFindCertificateInStore(hStore, X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR_A, “CERTIFICATE_SUBJECT”, NULL); CertGetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, NULL, &len); pinfo = (CRYPT_KEY_PROV_INFO *) malloc(len); CertGetCertificateContextProperty(pCert, CERT_KEY_PROV_INFO_PROP_ID, pinfo, &len); provname = wide_to_asc(pinfo->pwszProvName); contname = wide_to_asc(pinfo->pwszContainerName); if(!CryptAcquireContextA(&hCryptProv, contname, […]

是否可以使用wincrypt进行HMAC?

我一直在尝试使用wincrypt / cryptoapi / Cryptography API执行直接的SHA256 HMAC:下一代(CNG),我真的很挣扎。 我的目标是Windows 8。 我找不到正确的方法或在任何地方找到任何例子。 我希望在C / C ++中执行以下操作,这在下面的C#中进行了演示 HMAC hashMaker = new HMACSHA256(Encoding.ASCII.GetBytes(“SecretKey”)); byte[] hash = hashMaker.ComputeHash(Encoding.ASCII.GetBytes(“”)); string hashStr = BitConverter.ToString(hash); 它返回哈希:B2-42-48-67-5A-B8-03-87-5B-00-D7-8C-65-5A-AE-B7-92-E3-F9-27-40-C1-01 -A5-37-74-E1-65-51-9F-F6-6A。 有没有人成功使用cryptoapi执行直接HMAC?

MD5加密API为某些明文返回错误的哈希值

我正在尝试使用Microsoft加密API来计算MD5哈希值,但是我得到的哈希值不正确: #include #include #include char* HashMD5(char* data, DWORD *result) { DWORD dwStatus = 0; DWORD cbHash = 16; int i = 0; HCRYPTPROV cryptProv; HCRYPTHASH cryptHash; BYTE hash[16]; char *hex = “01234567879abcdef”; char *strHash = “00000000000000000000000000000000”; if(!CryptAcquireContext(&cryptProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) { dwStatus = GetLastError(); printf(“CryptAcquireContext failed: %d\n”, dwStatus); *result = dwStatus; return NULL; } […]