文章目录


  • 前言
  • 智能密码钥匙介绍
  • 接口测试用例

前言

  • 本文主要参照国家密码行业标准GM/T 0016-2012《智能密码钥匙应用接口规范》。
  • 《规范》规定了基于PKI密码体制的智能密码要是密码应用接口,描述了密码应用接口的函数、数据类型、参数的定义和设备的安全要求。

智能密码钥匙介绍

术语和定义

层次关系

接口测试用例

代码如下(示例):

int _tmain(int argc, _TCHAR* argv[])
{//返回值ULONG ret = 0;//加载动态链接库HMODULE hModule;ret = Load(_T("***.dll"), &hModule);//loadlibraryif (ret != 0){printf("加载**库失败\n");getchar();return 0;}//设备面操作DEVHANDLE hDev= NULL;//设备句柄char szNameList[1000] = {0};ULONG ulSize = 1000;printf("\n..........枚举设备...........\n");ret = SKF_EnumDev(1,szNameList,&ulSize);if( ret != SAR_OK){printf("SKF_EnumDev失败,错误代码为:%02x",ret);getchar();return 0;}printf("枚举成功\n");printf("deviceName = %s;sLen=%d\n",szNameList,ulSize);printf("\n..........连接设备...........\n");ret = SKF_ConnectDev(sNameList, &hDev);if(ret != SAR_OK){ printf("连接设备出错,错误代码为:%02x",ret);getchar();return 0;}printf("\n..........获取设备信息...........\n");DEVINFO devInfo = {0};ret = SKF_GetDevInfo(hDev, &devInfo);if(ret != SAR_OK){ printf("获取设备信息,错误代码为:%02x",ret);getchar();return 0;}printf("deviceSN=%s\n", devInfo.SerialNumber);//应用面操作HAPPLICATION hApp = NULL;//应用句柄char szAppName[1000] = {0};ulSize = 1000;printf("\n..........枚举应用...........\n");szAppName = (char *)malloc(ulSize);memset(szAppName, 0 , ulSize);rv = SKF_EnumApplication(hDev,szAppName,&ulSize);if(ret != SAR_OK ){printf("枚举应用失败,错误代码为:%02x",ret);getchar();return 0;}//输出应用名字char* p = NULL;p = szAppName;while(*p != '\0'){printf("应用名称为:\n%s\n",p);//指向下一个p += strlen(p);p++;}printf("枚举应用成功,应用名称为:\n%s\n",szAppName);printf("\n..........打开应用...........\n");ret = SKF_OpenApplication(hDev,szAppName, &hApp);if(ret != SAR_OK ){printf("打开应用失败,错误代码为:%02x",ret);getchar();return 0;}printf("打开应用成功\n");printf("\n..........验证口令...........\n");char Pin[50]={0};ULONG ulRetryCount = 0;ret = SKF_VerifyPIN(hApp, 1, (LPSTR)"******", &ulRetryCount);if(ret != SAR_OK){printf("认证用户口令错误,错误代码为:%02x,重试次数:%d\n",rv,ulRetryCount);getchar();return 0;}printf("认证用户口令成功\n");printf("\n..........修改口令...........\n");ret = SKF_ChangePIN(hApp, USER_TYPE, (LPSTR)"**", (LPSTR)"***",&ulRetryCount);if(rv != SAR_OK){printf("SKF_ChangePIN错误,错误代码为:%02x,重试次数:%d\n",rv,ulRetryCount);getchar();return 0;}printf("修改口令成功\n");//容器面操作HCONTAINER hCon = NULL;//容器句柄char *szContainerList[1000] = {0};ulSize = 1000;printf("\n..........枚举容器...........\n");ret = SKF_EnumContainer(hApp, (LPSTR)szContainerList, &ulSize);if (ret != SAR_OK){printf("枚举容器失败,错误代码为:%02x",rv);getchar();return 0;}//输出容器名字char* p1 = NULL;p1 = szContainerList;while(*p1 != '\0'){printf("容器名称为:\n%s\n",p1);//指向下一个p1 += strlen(p1);p1++;}printf("\n..........打开容器zz...........\n");ret = SKF_OpenContainer(hApplication, "zz", &hCon);if (ret != SAR_OK){printf("打开容器失败,错误代码为:%02x",ret);return 0;}printf("打开zz容器成功\n");printf("\n..........导出容器zz中证书...........\n");BYTE pbCert[3000] = {0};ULONG ulCertLen = 3000;ret = SKF_ExportCertificate(hCon,1,pbCert,&ulCertLen);if (ret != 0){printf("导出证书失败,错误代码为:%02x",ret);getchar();return 0;}char B64Cert[3000] = {0};unsigned long B64CertLen = 3000;ret = B64ENCODE(pbCert, ulCertLen, B64Cert, &B64CertLen, 0);//BASE64格式转换printf("%s\n",B64Cert);getchar();return 0;
}

密码学:商用密码应用(智能密码钥匙)相关推荐

  1. 商用密码产品认证实施细则智能密码钥匙

    1 适用范围 本细则依据<商用密码产品认证规则>(以下简称认证规则)编制,作为认证规则的配 套文件,与认证规则共同使用,适用于智能密码钥匙产品认证. 2 认证依据 GM/T 0027< ...

  2. 商用密码产品认证-智能IC卡

    商用密码产品认证-智能IC卡 产品概述 相关标准规范 应用要点 产品概述 智能IC卡是将一个或多个集成电路芯片嵌装于塑料基片上制成的卡片,卡内的集成电路具有数据存储.运算和判断功能,并能与外部进行数据 ...

  3. 【密码产品篇】智能密码钥匙密钥体系结构(非对称)

    [密码产品篇]智能密码钥匙密钥体系结构(非对称) 智能密码钥匙是一种具备密码运算.密钥管理能力,可提供密码服务的终端密码设备,其主要作用是"存储用户秘密信息(如私钥.数字证书),完成数据加解 ...

  4. 智能密码钥匙查看器UkeyViewer

    最近经常用到不同厂商生产的智能密码钥匙(在本文中将智能密码钥匙称为Ukey),厂商一般会提供 UKey 及其相应的在 Windows 平台上的驱动程序.驱动程序常见形式为 32 位的 dll 格式文件 ...

  5. 发布一个智能密码钥匙内部证书导出工具ExportCert

    在博文"智能密码钥匙查看器UkeyViewer"(http://blog.csdn.net/henter/article/details/54883746)中介绍过一个查看智能密码 ...

  6. 智能密码钥匙开发、USBKEY开发、智能卡开发、COS开发、CSP开发

    本人长期从事专业的cos开发工作,熟悉各种cos工作原理,愿意长期承接以下工作:  1.开发各种usb加密狗.usbkey开发,提供整套产品方案,设备支持(HID,CCID,USB MASS STOR ...

  7. 智能密码钥匙国密标准GMT0027-2014

    智能密码钥匙实现实现密码运算.密钥管理功能的终端密码设备,一般使用 USB 接口形态.相关认证依据及标准包括: (1)GM/T 0027-2014智能密码钥匙技术规范(密码产品类标准) (2)GM/T ...

  8. 标准规范概览——智能密码钥匙相关规范

    智能密码钥匙是实现密码运算.密钥管理功能的终端密码设备,使用USB接口形态,业内通 用的名称USBKey.UKey.U盾等.  国密标准中智能密码钥匙相关规范 01  |  GMT 0016-2012 ...

  9. 凯撒密码和栅栏密码 - 密码学01

    凯撒密码和栅栏密码 让编程改变世界 Change the world by program 我们将会学到什么?! 这相信是大家广泛关注的话题,因为如果一开始给大家一个强大而震撼的目录,然后就是一屁股的 ...

最新文章

  1. repo file=sys.stderr 错误解决
  2. 【Python基础】Python正则表达式入门到入魔
  3. 标准C函数库的使用方法
  4. JavaScript- 正则表达式匹配汉字
  5. T级图片数据Cache思路以及图片服务器搭建方法
  6. 算法提高 邮票面值设计 搜索 动态规划
  7. 02 | 日志系统:一条SQL更新语句是如何执行的? 笔记(转)
  8. 【c语言】定义一个指针数组,指向5个不同的char型数组
  9. 水逆的美团滴滴与头条
  10. python函数默认参数_Python中函数的默认参数问题
  11. 融入常识知识的生成式对话摘要
  12. 大碰撞!当Linux多线程遭遇Linux多进程
  13. tensorflow2 搭建LeNet5训练MINST手写数字数据集并用c++ opencv4.5.5 DNN加载模型预测结果
  14. java base64转Binary
  15. 从一个月2500没人要到大厂技术主管的编程之路|我的十年
  16. 测试硬盘或者存储设备的小巧工具-CrystalDiskMark提供下载
  17. python中plt.hist_关于python中plt.hist参数的使用详解
  18. 什么是源路由(source routing)?
  19. 计算机有哪些知识,电脑基本操作知识有哪些
  20. html创建一个四行三列表单,HTML(三)表格table与表单form的基本使用

热门文章

  1. java8新特性之Steam
  2. 高薪程序员面试题精讲系列101之如何对数据库进行优化(下)?
  3. [原创]react native 注意事项
  4. 用中颖SH79F3283进行项目中遇到的一些问题
  5. 解决上传图片时报错Uncaught (in promise) DOMException: Failed to execute ‘put‘ on ‘IDBObjectStore‘
  6. phpMyAdmin版本不同支持PHP版本不同的问题
  7. 关于C#中的并行处理
  8. 第九章 深入拨号方案
  9. vue avatar_Avatar para Vue.js组件
  10. 安卓ROM内置推广联盟赚钱 开发者联盟 精英助手 APP推广包获取 推广包渠道