问题标签 [cng]
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.
certificate - 从 .NET 4.6 访问 CNG 证书的私钥 - 未找到 GetCngPrivateKey
我需要从 .NET 4.6 访问 CNG 证书的私钥。
在文档中,我找到了扩展方法GetCngPrivateKey,但此方法在 Visual Studio 2015 中对我不可用。
也许此方法已从 .NET 框架的最新版本中删除。
任何建议现在访问 CNG 证书的私钥的正确方法是什么。
cryptography - CNG 提供商,如何将 EC 密钥转换为 BCRYPT_ECCKEY_BLOB 结构?
我正在写一个 CNG 提供程序。具体来说,坚持实现NCryptExportKey
API。我正在尝试从硬件密钥管理器转换 EC 密钥(用于签名,ECDSA256)。硬件密钥管理器提供 ASN 格式的密钥。我参考了 MSDN 文档,提到公钥 X 和 Y 值(BCRYPT_ECCKEY_BLOB 结构)是大端格式。但是在关于 stackoverflow 的另一篇文章(从其他地方导入公钥到 CngKey?)中,Magic 值似乎也是大端格式。
我的问题是:
'magic' 和 'length' 值是否需要采用大端格式?
如何将大数 X 转换为 big-endian 格式?转换每个字节?
.net - .NET - 将 RSACryptoServiceProvider 移植到 CNG 以对数据进行签名
我正在尝试将用 C# 编写的 RSA 签名函数从(相对易于使用的)RSACryptoServiceProvider.SignHash方法移植到CNG API,以便使用特定的加密服务提供者。
这是原始(移植前)功能:
很简单,你不觉得吗?移植到 CNG 时,这是迄今为止我能做的最好的:
我可以成功将密钥导入CNG,但我不知道如何执行签名操作。欢迎任何帮助...
cryptography - CryptoAPI:CALG_* 和 BCRYPT_*_ALGORITHM 之间的区别
CALG_*
和有什么区别BCRYPT_*_ALGORITHM
例如:SHA_256 被定义为:
#define CALG_SHA_256 (ALG_CLASS_HASH|ALG_TYPE_ANY|ALG_SID_SHA_256)
和
#define BCRYPT_SHA256_ALGORITHM L"SHA256"
c++ - Microsoft Cryptographic API 可以允许从字节流创建 ECDSA 密钥吗?
因此,我正在考虑使用哪个加密 C++ 库(我已经想出了如何在 C# 中进行等效操作)来验证许可证文件签名哈希。
阅读有关 CNG 的 Microsoft 文档,似乎不可能从字节流中生成代码中的 ECDSA 密钥,尽管这对于 RSA 密钥是可能的(我认为,不是 100% 肯定)。
因为我想要生成代码字节流,所以我查看了 crypto++,我设法编译了测试套件,但是 cryptolib.lib 是一个超大的 90 兆字节,我正面临着一系列链接错误,只是试图做一些基本的事情。所以我现在不太热衷于加密++。
所以我想转而使用微软在其桌面 Windows 操作系统中提供的东西,但我又回到了我最初的问题,即没有代码字节流生成的密钥。
专家能否证实这真的不可能?此外,他们能否提出替代方案,我很高兴使用长(2048?)密钥回退到 RSA。
以下代码为我编译并运行。可以在MSDN 文章 - 使用 CNG 签名数据中找到它。我想知道它是否可以改编。此代码是否 (a) 即时创建 ECDSA 密钥 (b) 签署哈希 (c) 将密钥保存到证书存储 (d) 检索密钥并验证签名哈希。如果是这样,那么我猜它是演示代码。我需要的是一个硬编码 ECDSA 密钥的示例,而不是动态创建的。
为了清楚起见,我的目标是 384 位,为了与 OpenSsl 和 C# 兼容,曲线名称是 NIST 推荐的曲线secp384r1 – {1.3.132.0.34}
,我将使用两次 SHA256 哈希(就像比特币一样)。
c++ - STATUS_INVALID_PARAMETER 错误使用 BCryptImportKeyPair 导入 diffie hellman 公钥
我正在尝试将公钥添加到 Bcrypt 的 diffie Hellman 实现中。 建议创建和导出公钥的示例。就我而言,我已经从客户端获得了公钥。我正在尝试使用该公钥来生成共享会话密钥。当我尝试使用 BCryptImportKeyPair 时,我得到了 STATUS_INVALID_PARAMETER。我创建了 PBCRYPT_DH_KEY_BLOB 并手动添加了这些值。有没有其他方法可以做到这一点?将公共密钥从字符串导入 BCrypt 的示例将不胜感激。
提前致谢。请检查下面的代码。
c++11 - 当我尝试导入公钥时,BCryptImportKeyPair 返回 STATUS_INVALID_PARAMETER
我按照这个例子。我正在尝试将从服务器获得的公钥添加到密钥对中,并且我得到了 STATUS_INVALID_PARAMETER。
我得到以下输出。
我尝试打印 pubKeyBlobFromServer 的字节。公钥从第 8 个字节开始。前 8 个为 BCRYPT_DH_KEY_BLOB 保留。我不确定出了什么问题。请建议我犯错的地方。如果不是,请建议一个从字符串导入公钥的示例。提前致谢。
c# - 使用 AllowPlaintextExport 标志将 C# X509Certificate2 添加到 X509Store?
当我使用 CertUtil 将证书导入商店时,例如 ,certutil -f -v -user -privatekey -importPFX my mycert.p12
然后在 C# 中读取它,我看到它的导出策略是AllowExport | AllowPlaintextExport
.
但是,当使用该方法将同一个证书导入到同一个存储X509Store.Add()
区再读回时,导出策略只有AllowExport
;我X509KeyStorageFlags.Exportable
在将证书导入商店时使用该标志,例如:
我的问题是:有没有办法在 C# 中将 X509Certificate2 添加到 X509Store 中,以便证书的导出策略同时包含AllowExport
和AllowPlaintextExport
?X509KeyStorageFlags 似乎没有定义AllowPlaintextExport
标志;只有CngExportPolicies
确实。
仅供参考,我使用 .NET Framework 4.6.1 作为目标。
谢谢。
windows - windows dll调用的优化选项和使用
我正在为 Windows 构建一个 dll,使用 Makefile,使用 cl.exe。我正在使用VS2015 ..这个dll使用CNG(bcrypt)进行加密操作,并且bcryptr是使用loadlibrary调用动态加载的。
当我使用 /Od 选项构建以禁用优化时,我对任何功能都没有问题。但是如果我使用任何优化选项/O1、/O2、/Ox,我会看到最奇怪的事情发生。一旦我使用 GetProcAddress 检索 bcrypt 函数的地址,例如 BCryptGetFipsAlgorithmMode,然后我调用该函数ptr,调用堆栈消失。当调用函数尝试返回时,这会导致异常..看起来几乎就像当一个回调没有 CALLBACK 前缀时,但我没有看到连接..
该 bcrypt 函数的原型如下所示:
NTSTATUS WINAPI BCryptGetFipsAlgorithmMode( __out BOOLEAN *pfEnabled)
和 WINAPI 似乎被定义:
定义 WINAPI __stdcall
有什么我想念的吗?优化与此有什么关系?
任何帮助将不胜感激..谢谢!
继承人的代码:
跳过对_BCryptGetFipsAlgorithmMode()的调用,调用堆栈基本上被清除了。
c# - C# - 尝试使用导入方法从 .p8 文件创建 CngKey,抛出错误“编码或解码操作期间发生错误。”
我正在尝试使用Jose.JWT.encode(payload, secretKey, JwsAlgorithm.ES256, header)
(请参阅https://github.com/dvsekhvalnov/jose-jwt)生成 JWT 令牌,以与 Apple 新的基于令牌的 APNs 系统一起使用。
JWT 编码方法要求 secretKey 的CngKey
格式。这是我将 .p8 文件从 Apple 转换为CngKey
对象的代码:
但是,在最后一行,会引发以下错误。
输入的格式没有错误,因为有一个单独的错误(当我更改 blob 类型时出现)。
此代码在 .NET WebApi v4.6 中运行。
我已经搜索了高和低,但无法破译此错误所指的内容。任何帮助将不胜感激。谢谢你。