按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我需要使用MicrosoftCryptoAPI编写自己的SSL套接字(CSocketansestor)以及服务器端证书验证。你能告诉我哪本书对我有帮助(或任何其他用户友好的信息来源)吗?
我的问题是:应用调用CSP进行签名等加密操作时,CSP如何分别找到证书的私钥?如果导入到证书存储的证书私钥不在本地计算机上(在USBtoken、外部存储,例如移动设备上),它能找到吗? 最佳答案 当您将证书导入系统存储时,Windows会创建一个包含编码证书本身及其属性的BLOB结构。BLOB具有以下结构:property1_id(4bytes)reserved=0x00000001property1_length(4bytes)property1_data[property1_length]...cert_property_id=
我正在尝试编写自己的CSP。我正在尝试通过实现一个dll文件来做到这一点,但我不确定我的方法是否正确。我发现了这样的东西:加密服务提供商开发人员工具包(CSPDK)有CSPAPI的示例CPAcquireContextCPGenKey……等(它看起来像一个旧的api或winCE的api)我的问题来了,我应该实现哪些功能来为Windows7和XP提供新的CSP。我的计划好吗?-我应该实现简单的DLL并将她的引用放在寄存器中吗?还是我遗漏了什么? 最佳答案 您可能缺少CNG这是MSCryptoAPI的(长期)替代品。您也可以为此创建模块。
当我将公共(public)/私有(private)对导入Windows证书存储区时,Windows不需要任何类型的密码来加密key。由此我得出结论,如果它是用户的商店,它会使用用户的密码(或者可能是用户的散列密码)来加密私钥,如果是本地机器商店,它可能是某种用于加密私钥的基于硬件的key。我做对了吗???如果我这样做了,如果我可以解密key,那么不可导出key的意义何在???最后一个问题-如果我到此为止,还有哪些选择? 最佳答案 正如“SLanks”链接所解释的那样,私钥是用用户密码或机器密码加密的(取决于key在商店中的位置)。因
我试图充分利用MSCAPI,并陷入了一个巨大的恶作剧......SunMSCapi提供者只有,嗯,提供,因为缺乏更好的词,至少对于签名,以下算法:MD2withRSAMD5与RSASHA1与RSA而且我并不急于使用BouncyCaSTLe制作的GOST3411withECGOST3410或RIPEMD128withRSA等算法使用,但它会很好,在这种特殊情况下,即使不是必需的,也非常重要,至少能够登录SHA256withRSA算法...(512等和ECDSA加密,将是一个很大的优势,但我不期望那么多)。我正在尝试寻找替代方案,但只找到了thiswrapper,看起来不错,但我必须再深入
我正在纠结如何将来自TSA服务器的响应添加到我的CryptSignMessage?使用PKCS#7。我目前有我的消息摘要,并且我使用来自cryptoapi的CryptSignMessage成功地对其进行了签名。像这样://Initializethesignaturestructure.CRYPT_SIGN_MESSAGE_PARASigParams;SigParams.cbSize=sizeof(CRYPT_SIGN_MESSAGE_PARA);SigParams.dwMsgEncodingType=MY_ENCODING_TYPE;SigParams.pSigningCert=hCo
我遇到的问题是,我能够使用用于加密数据的相同RSA2048位公钥来解密数据。在我看来,如果公钥可以解密数据,这首先会破坏加密数据的全部目的。此时我唯一可以考虑的是,当我认为我正在生成非对称对时,我正在生成对称key交换对。最终用户这样做的目的是,当我无法从域中的工作站使用他们缓存的凭据时,稍后使用它来传输用户凭据以在办公室外使用应用程序时进行身份验证。理论上,我可以仅私钥来解密这些凭据。我制作了一个简单的测试类和代码来重现我的问题。我正在采取的步骤如下:获取MicrosoftEnhancedCryptographicProviderv1.0的上下文生成公钥/私钥对。将公钥和私钥BLOB
我有一个CERT_CONTEXT我通过CryptoAPI从Windows上的智能卡中提取的结构。我需要将此结构转换为与OpenSSL一致的DER编码字节数组。到目前为止我得到的最接近的匹配是通过CryptEncodeObject使用X509_ASN_ENCODING和采用CERT_INFO的X509_CERT_TO_BE_SIGNED修饰符结构作为输入。问题是它与OpenSSLi2d_X509生成的输出不匹配功能。使用2048位x509证书作为输入,OpenSSL产生1789字节的编码输出,而WindowsCryptoAPI产生1638字节的编码输出。我能看到的唯一选项是使用CERT_
我在Windowskeystore中创建了RSAkey对。我成功加密数据(对称key):HCERTSTOREhstore=::CertOpenSystemStore(NULL,L"TestStore");PCCERT_CONTEXTpctxt=::CertFindCertificateInStore(hstore,X509_ASN_ENCODING,NULL,CERT_FIND_SUBJECT_STR,L"MyTestKeys",NULL);HCRYPTPROVhprovider=NULL;if(!::CryptAcquireContext(&hprovider,NULL,MS_ENH
我正在使用MicrosoftCryptoAPI来处理SSL连接。与支持TLS1.0或更高版本的服务器通信时,一切正常,但当我尝试处理仅支持SSL3.0的服务器时InitializeSecurityContext()失败,错误代码为0x80090331(SEC_E_ALGORITHM_MISMATCH).我尝试使用作为pAuthData参数传递给AcquireCredentialsHandle()的SCHANNEL_CRED结构。特别是它有字段grbitEnabledProtocols应该控制支持的协议(protocol)集。当我设置grbitEnabledProtocols=SP_PR