问题标签 [wincrypt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
149 浏览

c# - CertOpenStore“内存”返回文件未找到

下面的代码曾经工作。我认为它在一些 .NET Framework 或 Windows 10 升级后坏了,但不确定。

它会打开一个临时证书存储以生成自签名证书。

输出是:

这是ERROR_FILE_NOT_FOUND。在 .NET4.54.5.2.

我可以做些什么来进一步诊断或修复?

0 投票
0 回答
426 浏览

c++ - 获取从 CryptDeriveKey() 生成的会话密钥

我正在使用加密库,并且正在尝试使用这些库创建一个简单的密码算法。我使用 MSDN 的Deriving a Session Key from a Password通过传入“用户名”来生成密钥,但我不确定如何取回密钥以针对我的算法进行测试。该算法采用上面传递的用户名和生成的密钥。我尝试使用CryptDeriveKeyCryptGetKeyParam但它没有返回密钥。

这还能如何实现?

0 投票
1 回答
507 浏览

c++ - 生成 RSA-2048 密钥(公共和私有)

我正在做简单的实现 RSA-2048。我在另一个论坛上找到了一些代码。

因此,加密\解密工作得非常好。我需要换钥匙。如何生成此代码的密钥?

我试过这个在线生成器,但它不起作用。 https://travistidwell.com/jsencrypt/demo/ 和其他在线生成器

0 投票
1 回答
65 浏览

c++ - 函数 CryptEncrypt 期间崩溃

我正在编写将生成 RSA 密钥对、导出\导入密钥和加密字符串的小程序。所以,我写了这段代码:

CryptEncrypt 以崩溃结束。我不知道我应该怎么做才能解决这个问题。

0 投票
1 回答
320 浏览

c - 验证签名的 PE 文件

(对不起我的英语不好。)我的代码有一些问题。所以我会尝试解释我的问题。我有一个带有签名(pkcs7)的简单 exe 文件。我想验证这个文件(没有互联网连接)。我不想使用WinVerifyTrust(),因为我想知道 windows 如何验证 PE 文件。我写了一些代码,首先CryptQueryObject()用 BLOB_DATA(映射的 pe 文件)调用,它工作正常。然后我可以获得证书信息:签名者、序列号等(带有CryptGetMsgParam()),它也可以正常工作;但是,当我去验证它时,CertGetCertificateChain()我得到了错误。那么,你能帮我解决这个问题吗,我认为是我没有CertGetCertificateChain()正确使用?

0 投票
1 回答
57 浏览

c++ - 无法为 AES 加密创建上下文。视窗

我已经制作了这样的代码,它将为 aes 加密创建上下文(支持 Win32API):

它在 Windows 7 或更高版本上运行良好,但是当我在 Windows XP 上启动它时,我没有收到任何错误,只是关闭了应用程序。没事了。怎么了?

0 投票
0 回答
36 浏览

c++ - 使用winapi函数生成密钥时数据泄漏

我有一个问题:当我尝试生成 AES 密钥 128 长度时,CryptGenKey我有数据泄漏?

下面的代码:

delete[] aes_key_dec;无法帮助我解决这个问题。怎么了 :/

0 投票
0 回答
146 浏览

c++ - Wincrypto (CNG):无法使用任何 CNG 算法创建证书

我正在编写一个可以在证书存储中创建证书的代码,并且我正在使用 CNG。其实不是真的在写,而是改编自 MSDN 的一个例子。我的代码可以编译,它为某些算法创建密钥,但这些密钥都不能用于创建证书。对于大多数人来说,它说“未知的密码算法”。

这是我的代码的一部分,它尝试所有可用的算法并为每个算法创建一个密钥和证书:

我从这里得到的算法列表。

以下是所有尝试过的算法的错误输出:

也许我只是在滥用新的 API?使用旧的 wincrypt32 时效果很好。

0 投票
0 回答
125 浏览

c++ - UWP 应用程序证书存储在哪里?我在 wincrypt 函数中看不到它们

我正在尝试从同一应用程序中的托管 C++ DLL 访问使用 C# UWP 应用程序创建的证书。但是我不能使用 C# 接口,因为我需要在这个套接字上支持 SNI(据我所知,UWP 不支持我可以找到的文档化方式的 SNI;相信我,我已经搜索过了。我应该另请注意,这是 TCP,而不是 HTTPS)。

我试图以“正常”wincrypt方式查找UWP创建的证书,即枚举证书存储(::CertEnumSystemStore)然后枚举证书(::CertEnumCertificatesInStore),以及查看certmgr和certutils,但不能在任何地方都可以找到证书。这让我相信每个应用程序的证书都被封锁在他们自己的孤岛中,并且只能通过 UWP API 访问,这不允许自定义控制 AcquireCredentialsHandle 的调用方式。

所以我的问题是,有没有办法使用标准操作系统加密调用访问使用 UWP 创建的证书?

0 投票
0 回答
599 浏览

c++ - Microsoft CryptoApi - 创建由根授权证书签名的新证书

我正在尝试通过临时根 CA 签署公钥/私钥对,接下来是以下步骤:

  1. 创建自签名根授权证书 ( CertCreateSelfSignCertificate) (完成)
  2. 生成公钥/私钥对 ( CryptGenKey) (完成)
  3. 通过根授权证书( TODO )签署公钥/私钥对(我一直在尝试使用CertCreateSelfSignCertificate函数,但似乎不可能......)

我一直在按照下一个链接中提到的步骤进行操作: link

使用 powershell 可以正常工作,但我不知道如何使用 Microsoft CryptoApi C++ 来实现它。示例 Powershell:

目前,我获得了没有私钥的证书,那么如何为我的签名证书分配私钥?我当前的代码如下所示:

有什么办法吗?