如何使用微软标准CSP接口修改usbkey的PIN码?

esunzsq 2012-01-19 03:58:36
已知CryptSetProvParam可以验证ukey的PIN码,参数分别为:PP_SIGNATURE_PIN与PP_KEYEXCHANGE_PIN.

如何修改PIN码呢?
...全文
837 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
esunzsq 2012-09-05
  • 打赏
  • 举报
回复
使用p11接口解决问题,自己结贴
esunzsq 2012-09-05
  • 打赏
  • 举报
回复
使用p11接口解决问题,自己结贴
beautys101 2012-04-09
  • 打赏
  • 举报
回复
555,请帮忙啊,CryptSetProvParam这个函数返回FALSE,想用GetLastError()获取失败原因,可为什么GetLastError()的返回值是0呢?这样我怎么能知道CryptSetProvParam()失败的原因呢?
beautys101 2012-04-08
  • 打赏
  • 举报
回复
对了,请问您一下,您知道为什么pin码正确,却总是验证失败吗?最后就只能被锁了。
esunzsq 2012-01-19
  • 打赏
  • 举报
回复
自己顶!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
esunzsq 2012-01-19
  • 打赏
  • 举报
回复

user
wincrypt;

if not CryptAcquireContext(@hProv, nil, ProvName, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) then
if not CryptAcquireContext(@hProv, nil, ProvName, PROV_RSA_FULL, CRYPT_NEWKEYSET) then
Exit;

strPin := InputBox('PIN码检验', '请输入用户PIN码', '');
if strPin = '' then Exit;

ZeroMemory(@userPin[0], SizeOf(userPin));
DataLen := Length(strPin);
for iLp := 1 to DataLen do
userPin[iLp - 1] := Byte(strPin[iLp]);


if not CryptSetProvParam(hProv, PP_SIGNATURE_PIN, @userPin, 0) then
begin
ShowMessage('PIN验证失败');
Exit;
end else begin

end;

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧