PKCS11接口解析「建议收藏」

PKCS11接口解析「建议收藏」pkcs密码中间件位于上层应用和底层安全设备之间,应用基于PKCS#11标准接口开发各类应用程序。主要包括2个库主API库:提供给应用的PKCS11接口。 tokenDLL库:由主API库调用,完成从上向下到指定设备的套接。 安全密码设备:安全服务资源和实施的载体,完成具体安全功能支撑。表pkcs11函数接口 种类 函数 …

大家好,又见面了,我是你们的朋友全栈君。

pkcs密码中间件位于上层应用和底层安全设备之间,应用基于 PKCS#11 标准接口开发各类应用程序。主要包括2个库

  • 主API库:    提供给应用的PKCS11接口。
  • tokenDLL库:由主 API 库调用,完成从上向下到指定设备的套接。
  • 安全密码设备:安全服务资源和实施的载体,完成具体安全功能支撑。

表 pkcs11函数接口

种类

函数

描述

通用l

C_Initialize

初始化 Cryptoki

目的函数

C_Finalize

清除各种Cryptoki相关资源

 

C_GetInfo

获得关于Cryptoki的通用信息

 

C_GetFunctionList

获得Cryptoki 库函数的进入点

槽和令牌

C_GetSlotList

获得系统中槽的名单

管理

C_GetSlotInfo

获得关于特殊槽的信息

函数

C_GetTokenInfo

获得关于特殊令牌的信息

 

C_WaitForSlotEvent

等待槽事件(令牌插入,转移等) 的发生

 

C_GetMechanismList

获得由令牌支持的机制的名单

 

C_GetMechanismInfo

获得关于特殊机制的信息

 

C_InitToken

初始化一个令牌

 

C_InitPIN

初始化普通用户的 PIN

 

C_SetPIN

改变现在用户的PIN

会话管理函数

C_OpenSession

打开一个应用程序和特殊令牌之间的连接或安装一个应用程序呼叫返回令牌插入

 

C_CloseSession

关闭一个会话

 

C_CloseAllSessions

用令牌关闭所有的会话

 

C_GetSessionInfo

获得关于会话的信息

 

C_GetOperationState

获得会话的加密操作状态

 

C_SetOperationState

设置会话的加密操作状态

 

C_Login

注册一个令牌

 

C_Logout

从一个令牌注销

对象管理函数

C_CreateObject

建立一个对象

 

C_CopyObject

建立一个对象的拷贝

 

C_DestroyObject

销毁一个对象

 

C_GetObjectSize

获取字节中一个对象的大小

 

C_GetAttributeValue

获取一个对象的属性值

 

C_SetAttributeValue

改变一个对象的属性值

 

C_FindObjectsInit

初始化一个对象的搜索操作

 

C_FindObjects

继续一个对象搜索操作

 

C_FindObjectsFinal

完成一个对象搜索操作

加密

C_EncryptInit

初始化一个加密操作

函数

C_Encrypt

加密单部分数据

 

C_EncryptUpdate

继续一个多部分加密操作

 

C_EncryptFinal

完成一个多部分加密操作

解密

C_DecryptInit

初始化一个解密操作

函数

C_Decrypt

解密单部分加密数据

 

C_DecryptUpdate

继续一个多部分解密操作

 

C_DecryptFinal

完成一个多部分解密操作

消息

C_DigestInit

初始化一个消息摘要操作

解密

C_Digest

摘要单部分数据

函数

C_DigestUpdate

继续一个多部分摘要操作

 

C_DigestKey

摘要一个密钥

 

C_DigestFinal

完成一个多部分摘要操作

签名

C_SignInit

初始化一个签名操作

和MACing

C_Sign

签名单部分数据

函数

C_SignUpdate

继续一个多部分签名操作

 

C_SignFinal

完成一个多部分签名操作

 

C_SignRecoverInit

初始化一个签名操作,在操作中数据能从签名中恢复

 

C_SignRecover

签名单部分数据,在操作中数据能从签名中恢复

鉴定函数

C_VerifyInit

初始化一个鉴定操作

签名

C_Verify

在单部分数据上鉴定一个签名

和 MACs

C_VerifyUpdate

继续一个多部分鉴定操作

 

C_VerifyFinal

完成一个多部分鉴定操作

 

C_VerifyRecoverInit

初始化一个鉴定操作,在操作中数据能从签名中恢复

 

C_VerifyRecover

在单部分数据上鉴定一个签名,在操作中数据能从签名中恢复

双效加密

C_DigestEncryptUpdate

继续类似的多部分摘要和加密操作

函数

C_DecryptDigestUpdate

继续类似的多部分解密和摘要操作

 

C_SignEncryptUpdate

继续类似的多部分签名和加密操作

 

C_DecryptVerifyUpdate

继续类似的多部分解密和鉴定操作

密钥

C_GenerateKey

产生一个保密密钥

管理

C_GenerateKeyPair

产生一个公共/私钥对

函数

C_WrapKey

加密一个密钥

 

C_UnwrapKey

解密一个密钥

 

C_DeriveKey

从基础密钥派生一个密钥

随机数字生成

C_SeedRandom

把一个附加种子材料加入随机数字生成器

函数

C_GenerateRandom

生成随机数据

并行功能管理函数

C_GetFunctionStatus

经常返回 CKR_FUNCTION_NOT_PARALLEL的遗产函数

 

C_CancelFunction

经常返回 CKR_FUNCTION_NOT_PARALLEL的遗产函数

呼叫返回函数

 

Cryptoki中应用程序提供的处理通知的函数

 

 

导入对象

 

 

删除对象

 

 

导出对象

C_Initialize:        初始化所有slot,通过配置文件读取所有的tokendll,并初始化各个token,初始化信息包括填充tokeninfo,slotinfo,flag等,将以上slotData信息添加到SlotTtable数组中,slotID按顺序依次以1,2,3,4….表示。
C_GetSlotList:     获取slot count和count个slotID。
C_OpenSession: 根据输入slotID打开一个会话,并获取各个token的所有对象属性数据;
在打开会话的基础上调用以下接口:
C_CreateObject:创建对象。根据属性模板创建一个秘钥或证书对象,返回对象句柄,该对象被添加到会话的对象列表中;
C_EncryptInit:     加密初始化操作。传入当前会话句柄和秘钥句柄;
C_Encrypt:          传入会话句柄和待加密数据;
C_GenerateKeyPair:传入公钥和私钥模板,返回公私钥句柄;
C_DestroyObject:销毁对象。从会话的对象列表中移除该对象;

C_CloseSession:关闭会话 

C_Finalize:          清除cryptki相关资源,即清除slotTable中特定slotID的slotData数据,和C_Initialize对应。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141898.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 计算机网络 — HTTP协议 和 HTTPS[通俗易懂]

    计算机网络 — HTTP协议 和 HTTPS[通俗易懂]1.了解HTTP协议1.1HTTP是什么HTTP(HyperTextTransferProtocol,超文本传输协议)是一种应用非常广泛的应用层协议.所谓“超文本”的含义,就是传输的内容不仅仅是文本(比如html,css这个就是文本),还可以是一些其他的资源,比如图片,视频,音频等二进制的数据1.2抓包工具的使用1.Fiddler的下载①可以直接在官网下载Fiddler官网地址②也可以直接进入fiddler搜索页2.Fiddl

    2022年10月16日
  • java单例模式代码实现方式_java单例模式实现方式

    java单例模式代码实现方式_java单例模式实现方式JAVA常见的设计模式之单例模式 懒汉模式 懒汉式是典型的时间换空间,也就是每次获取实例都会进行判断,看是否需要创建实例,浪费判断的时间。当然,如果一直没有人使用的话,那就不会创建实例,则节约内存空间(搬运工)。标准的懒汉模式classLazySingleton{//私有成员属性privateLazySingletonlazySingleton;//私有构造方法privateLazySingleto…

  • 手机版mt4如何操作_安卓不能下载MT4

    手机版mt4如何操作_安卓不能下载MT4新手客户按照本文操作流程操作几遍,对MT4手机软件基本上就会非常熟练了。导航目录1.下载显示隐藏重新排序简单/高级视图新建图表行情周期添加/删除指标APP手机端MT4软件的功能模块一、软件下载登录1.下载通过无佣网开户的客户,下载对应APP手机版MT4软件后,手机桌面会有该交易商的软件图标,类似如下:2.登录点击MT4图标打开软件,点击软件左上角,进入“管理账户”里添加交易账户。已添加的交易账户,…

  • 快速排序quicksort_快速排序的原理

    快速排序quicksort_快速排序的原理一、简介快速排序是(Quicksort)是对冒泡排序的一种改进,是非常重要且应用比较广泛的一种高效率排序算法。二、算法思路快速排序是通过多次比较和交换来实现排序,在一趟排序中把将要排序的数据分成两个独立的部分,对这两部分进行排序使得其中一部分所有数据比另一部分都要小,然后继续递归排序这两部分,最终实现所有数据有序。大致步骤如下:首先设置一个分界值也就是基准值又是也称为监视哨,通过该分界值将数据分割成两部分。将大于或等于分界值的数据集中到右边,小于分界值的数据集中到左边。一趟排序过后,左边部

  • QCustomPlot运用

    QCustomPlot运用日常记录学习QCustomPlot的配置和编码过程。1.结构QCustomPlot类的命名规则是QCP加xxx。类的组织有很强的区分性,就如图Qt中的模块分类。  Class Name QCPPlotTitle 图表标题 QCPAxis 坐标轴、上下左右四个坐标轴 …

    2022年10月17日
  • 小程序常用的生命周期_小程序组件的生命周期

    小程序常用的生命周期_小程序组件的生命周期小程序的生命周期说白了就是指程序从创建、到开始、暂停、唤起、停止、卸载的过程。我们大概从三个角度看一下小程序的生命周期。(1):应用生命周期(2):页面生命周期(3):应用生命周期影响页面生命周期一:应用生命周期放一张从网上找的图:1:用户首次打开小程序,触发onLaunch(全局只触发一次)。:2:小程序初始化完成后,触发onShow方法,监听小程序显示。3:小程序从前台进入后台,触发onHide方法。:4:小程序从后台进入前台显示,触发onShow方法。5:小程序后台运行一

    2022年10月25日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号