问题标签 [mscapi]
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.
c# - 使用 Mono 安全 API 在 C# 中生成证书策略扩展
我很感激我能在这个问题上提供的任何建议,它一直让我发疯,我找不到任何文档。我目前正在尝试使用满足某些要求(RSA 2048、SHA256 等)的单声道安全 API 在 C# 中生成自签名根证书。我已经成功地生成了一个满足所有这些要求的证书,但只有一个。
我正在尝试添加一个 CertificatePoliciesExtension 这些扩展通常在 X509 证书中格式化如下
我的代码如下:
我知道生成这些扩展是可能的,因为我在其他证书中看到过它们。有没有人有任何经验或建议?如果有人知道如何在 C# 中使用 MSCAPI 生成这些扩展,我对 API 也很灵活,例如这也是一个可接受的解决方案。预先感谢您的任何帮助。
c# - C# 使用 certenroll.dll 在没有 CA 的情况下生成非自签名客户端 CX509Certificate 请求
我有一个使用 CERTENROLL.dll 的 CX509CertificateRequest 证书功能在 C# 中生成的自签名根证书。
我想编写一个函数,使用相同的 API 生成由我的 root 签名的客户端证书。但是,我能找到的唯一不生成自签名证书的 CertEnroll 选项需要经过身份验证的 CA。
似乎有一个用于设置 SignerCertificate 的标志,但它总是无法初始化。
有谁知道我如何生成由我的根签名的客户端 CX509CertificateRequest?
任何帮助或建议将不胜感激。
windows - 在 Windows Crypto API 中跟踪 CSP 调用
我正在使用 Windows Server 2008 R2 证书颁发机构处理私钥存档。在客户端,我有兴趣了解当客户端请求启用存档的证书时 Windows 进程进行了哪些 Crypto API 函数调用。特别是,我的重点是跟踪此处列出的函数调用, http: //msdn.microsoft.com/en-us/library/aa922849.aspx,存在于 Advapi32.dll 中。
我在这里尝试了 windbg/cdb 脚本(http://blogs.msdn.com/b/alejacma/archive/2007/10/31/cryptoapi-tracer.aspx)。我在提出证书请求时将其附加到 mmc.exe,但在此过程中我无法检测到任何 CSP 调用。我还尝试通过 certreq.exe 请求证书,但 windbg 无法跟踪任何 CSP 调用。我还尝试了其他形式的跟踪,如标题为“监控应用程序对 DLL 的调用”的 stackoverflow 线程中所述
请告诉我需要附加到哪个 Windows 进程/服务,以便了解这些调用是如何进行的。是否可以在进行函数调用时进行跟踪,而不管是哪个进程调用的?
非常欢迎任何有关如何跟踪这些 CSP 调用的建议!
debugging - 调试智能卡微型驱动程序
我目前正在研究 CNG 智能卡微型驱动程序。
为了测试一些我想makecert
用来将私钥导入智能卡的功能。
不幸的是,对于我所做的每一次更改,我都必须将其复制minidriver.dll
到 system32 目录。但是一旦我makecert
第一次调用,minidriver.dll 就会被使用,除非我重新启动我的电脑,否则我无法覆盖它(老实说这需要太多时间..)
有没有办法在不重新启动的情况下覆盖它?
我的第二次尝试是使用 Visual Studio 并makecert
从 Visual Studio 开始对其进行调试。但是会提示:断点当前不会被命中。没有为此文档加载任何符号。
有没有办法在 Visual Studio 中调试 minidriver.dll 使用makecert.exe
?
谢谢你的帮助。
java - 使用 SunMSCAPI JCE 提供程序加密散列数据
我想用 RSA 和 SHA-1 对我的数据进行签名,但是我的数据太大了。
我参考了这个线程:Using SHA1 and RSA with java.security.Signature vs. MessageDigest and Cipher,我正在尝试加密散列数据。
当我使用PKCS12或PKCS11提供程序加载我的私钥时,这很好。签名和加密数据是一样的。但是我在使用SunMSCAPI提供程序时遇到了麻烦,我得到了不同的结果。
这是我的代码:
byteArray2Hex 方法:
这是我的结果:
请帮助我,非常感谢!
c# - 使用 C# 使用 Microsoft Crypto API 解密字符串
所以在我的工作场所,我有一个基于 .NET 的 Web 应用程序,它必须在查询字符串中获取一个加密参数。
提供加密字符串的人是外部承包商,他们更喜欢使用微软的 Crypto API 来加密字符串(几乎是需求。虽然不能改变承包商,但高层决定这些东西......)。
好吧,很公平,AFAIK 我可以用 C# 解密它,但经过无休止的搜索,我仍然不知道它是如何工作的。
这意味着我什至无法提供示例代码,并且我被困在这个绑定中,直到我可以解密这个字符串。
我所拥有的是:
我有他们加密的通用密码,我必须用它来解密它。
加密设置为:“CALC_AES_128”哈希:“CALC_MD5”。字符串被加密,然后散列。
所以我想取消它,并解密它。
我知道有很多问题要问,但我该怎么做呢?
c# - IKVM - NoSuchProviderException - 没有这样的提供者:SunMSCAPI
我是使用 IKVM 的新手。我正在使用 .NET 开发项目,但它的某些功能在 Java 中更容易实现。我需要使用几个 java Jars(来自 WSS4J 和 Axis)。我使用 jar2ikvmc 生成 script.cmd 文件。我运行这个文件并从 jar 中获取 dll。但是当我在我的 C# 项目中引用这些 dll 并使用它们时,我得到了这个 NoSuchProviderException。
这是来自异常的stackTrace:
v sun.security.jca.GetInstance.getService(字符串类型,字符串算法,字符串提供者)
v sun.security.jca.GetInstance.getInstance(String type, Class clazz, String algorithm, >String provider)
v java.security.Security.getImpl(字符串,字符串,字符串)
v java.security.KeyStore.getInstance(字符串类型,字符串提供者)
v cz.praktik.vzpmodul.b2b.B2BSluzby.nactiAlias(字符串)
v cz.praktik.vzpmodul.b2b.B2BSluzby..ctor(字符串 serioveCisloKlice)
v VzpModulTest.Program.Main(String[] args) v C:\Users\florian\Documents\Visual Studio >2008\Projects\VzpModulTest\VzpModulTest\Program.cs:řádek 21
v System.AppDomain._nExecuteAssembly(程序集程序集,String[] args)
v System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据 assemblySecurity,>String[] args)
v Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
v System.Threading.ThreadHelper.ThreadStart_Context(对象状态)
v System.Threading.ExecutionContext.Run(ExecutionContext executionContext, >ContextCallback callback, Object state)
v System.Threading.ThreadHelper.ThreadStart()
知道如何解决这个问题吗?Java 中的项目对我来说工作得很好。我有 Windows7 32b。
谢谢你。
windows - Cryptoapi 签名/验证在 Windows 8.1 上不起作用
我们有一个使用 CryptoApi 使用 SHA1 哈希对消息进行签名和验证的应用程序。它在 WindowsXP 到 Windows 8 下已经完美运行多年。它不再在 Windows 8.1 上运行。CryptSignHash 失败,错误代码为 87(无效参数)。CryptVerifySignature 不会失败,但会返回 NTE_BAD_SIGNATURE(对于在 Windows 8 上创建的有效签名)。我们已经测试了我们能做的一切......它在 Windows 8 及更低版本上运行,在 Windows 8.1 上失败。
您对如何进一步调试有任何想法吗?我们再次导出导入的公钥和私钥,并验证它们是正确的。我们跳过了使用“我们的”密钥并生成了新密钥 -> 签名也失败并出现错误 87 我们生成了新密钥并使用 RSA_FULL 和 DES 加密/解密了一条消息 -> 没问题,按预期工作。我们检查了 RSA_FULL 提供程序的版本。它在 Windows 8 和 Windows 8.1 上都是 2.0。我们尝试明确指定提供程序名称:Microsoft Base Cryptographic Provider v1.0
在 Windows 8.1 上签名对你们中的任何人都有效吗?
Windows 8.1 上还有其他新功能吗?这可能会阻止签名工作?我们应该知道的提供者或算法是否发生了变化?
该应用程序是用 Delphi 编写的,大致使用以下流程:
delphi - 使用 MS cryptoAPI 和 Delphi 签署文档
我试图在 Delphi 中找到一些关于如何使用 Microsoft CryptoAPI 对数据进行签名的完整示例。在网上我发现主要是片段和伪代码,但没有具体的例子来说明如何做到这一点。
据我了解,在花了一天时间寻找代码和信息之后,您可以根据公钥创建文档/文件的哈希(如果您自己生成一对,或者由钥匙串上的证书提供)。然后将此哈希编码到加密的输出文件(容器部分)中,并且可以由持有私钥的接收者验证和解码。
如果不存在 Delphi 示例,是否有任何免费的命令行程序可以用来签署文件/文档?
我找到了用于 MD5/SHA1 散列的代码,以及使用密码字符串加密文件的代码(从动态生成的 keypar 派生散列)。但遗憾的是没有签署流或文件。谷歌上最接近的匹配是 Turbopower (LockBox) 的旧产品,但我不知道生成的输出是否与 MS cryptoAPI (?)
更新:这是我正在寻找的东西,但用 C 语言编写:http: //blogs.msdn.com/b/alejacma/archive/2008/01/23/how-to-sign-and-验证与cryptoapi-and-a-user-certificate.aspx
此外,当您将问题降级时 - 足以描述您这样做的原因。对于您在大型企业应用程序中面临的问题,对于 Delphi 来说这是一个完全有效的问题。
cryptoapi - Microsoft CryptoAPI 文件加密示例中的这个未记录的标志是什么?
在使用 CryptoAPI 对文件进行 RC4 加密的 Microsoft C示例代码中,函数CryptGenKey和CryptDeriveKey被传递了一个未记录的标志
CryptoAPI 头文件中没有定义该值的标志wincrypt.h
。离开它似乎没有任何害处。事实上,当我将算法从 RC4 更改为 AES 时,使用此标志会导致ERROR_INVALID_PARAMETER
.
它有什么用?