求:关于CryptoAPI签名指导 求CryptoAPI签名所需要的步骤(非CryptSignMessage方法) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www.vckbase.com/document/viewdoc/?id=974http://www.vckbase.com/document/viewdoc/?id=975 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/seccrypto/security/cryptography_functions.asp 看了还是不解,现在我得问题是,我手上有p12格式的证书,怎么利用它签名(使用CryptSignHash,摘要已经得到了)但是怎么使用这个p12中的私钥进行签名呢,而且我用CryptGetUserKey(AT_SIGNATURE)总是返回false。希望大家帮忙 安装证书(即把证书导入了证书库)用CryptSignMessage在我看来用CRYPTOAPI只能这么做 我得情况比较特殊,不能使用CryptSignMessage,我现在的想法是首先获得CSP;然后创建key container;把p12证书中的私钥导入刚才的key container中;接着做摘要&签名。不知我得想法是否能实现,请大家给意见以及代码级支持 这种做法在CryptoAPI中不支持,但你可以用另一种做法,先创建一个内存中的证书库,然后把P12证书导入(PFXImportCertStore,文档说2000以上支持,但微软讨论组中说IE5.0以上就支持,你自己试试看吧)这个证书库中,接着就可以和用普通证书一样使用了。另外一种办法就是拆P12了,但CryptoAPI不支持拆开,可以用OpenSSL来拆,拆开的私钥是PKCS#1编码,可以导入到Key Container中。 回复: shimate(史马特) 你说的第一种方法还是使用CryptSignMessage方法吗?能不能解释一下CryptAcquireCertificatePrivateKey&CryptAcquireContext的各用处?我现在有一张自己的P12证书,使用CryptAcquireCertificatePrivateKey获得CSP句柄,可是CryptGetUserKey获取AT_SIGNATURE时总是错误,为什么?我有私钥啊 第一种办法无论是低级函数(直接生成签名信息)还是高级函数(生成PKCS#7签名)都支持,我忘了你说的API是哪个了。CryptAcquireCertificatePrivateKey也是调用CryptAcquireContext的,只不过后者需要自己去找容器名,前者帮你从证书的Context属性中取出私钥容器名。你要确定这张证书的私钥是签名用的还是加密用的,加密应该用AT_EXCHANGE。 能不能解释一下AT_EXCHANGE&AT_SIGNATURE,我从P12得到PCCERT_CONTEXT,通过CryptAcquireCertificatePrivateKey获得CSP句柄,照例说应该可以用AT_SIGNATURE获得hKey。可是每次都返回错误,不知道怎么实现使用现有P12签名(非CryptSignMessage) 再次提问:手头有P12格式文件,如何使用私钥签名(非CryptSignMessage)?最好有源码 怎么没人回答.我想再问个简单问题:我有P12文件,如何使用CryptVerifySignature验证?最好告诉步骤,谢谢 不能给大牛发私信,偶可怎么办呢。 求助,VC6.0调用Google Map的问题 treectrl的setcheck问题 我这种编程方法可以吗? 获取的文件长度有问题,请大侠指点,谢谢!!!! 获取设备Bus number, Device number, Function number的问题 CDialog问题 请教 想请教各位高手,如何知道各种文件的格式或算法? 学 C++ Stl 如何才能够 比较快上手? 用CSplitter把窗口分割后,怎么固定各个窗口的大小? 串口通讯问题
http://www.vckbase.com/document/viewdoc/?id=975
用CryptSignMessage
在我看来用CRYPTOAPI只能这么做
首先获得CSP;
然后创建key container;
把p12证书中的私钥导入刚才的key container中;
接着做摘要&签名。
不知我得想法是否能实现,请大家给意见以及代码级支持
另外一种办法就是拆P12了,但CryptoAPI不支持拆开,可以用OpenSSL来拆,拆开的私钥是PKCS#1编码,可以导入到Key Container中。
你说的第一种方法还是使用CryptSignMessage方法吗?
能不能解释一下CryptAcquireCertificatePrivateKey&CryptAcquireContext的各用处?我现在有一张自己的P12证书,使用CryptAcquireCertificatePrivateKey获得CSP句柄,可是CryptGetUserKey获取AT_SIGNATURE时总是错误,为什么?我有私钥啊
CryptAcquireCertificatePrivateKey也是调用CryptAcquireContext的,只不过后者需要自己去找容器名,前者帮你从证书的Context属性中取出私钥容器名。
你要确定这张证书的私钥是签名用的还是加密用的,加密应该用AT_EXCHANGE。