PKCS#11是使用非常普遍的密码设备接口,在实际应用中,国密的密码设备应用接口规范GMT0018与之作用相同,在技术体系架构中处于类似的位置。
在密码产品的开发中,按照PKCS#11或者GMT0018接口规范提供相应的接口封装,应用程序无需改动或者微小改动就可以更换底层密码设备。
PKCS#11的标准内容比较多,v2-20版本有400页,相应的,PKCS#11的标准解读,将按照概念及常用接口、角色、会话、对象、机制分别进行,最后介绍应用的调用流程,串起各个概念和接口。
此为第三篇,介绍Cryptoki的对象及其属性。
一、对象属性层次结构
Cryptoki可以识别一系列的对象。一个对象包含一个属性集,每个属性都有给定的一个值。
下图展示Cryptoki的对象层次结构以及支持的一些属性。
Cryptoki提供了对象管理的系列函数。一些密钥运算接口函数也会创建Key对象来保存结果。
一个对象总是包含所有必须的属性。一个令牌可以保存多个相同的对象。
二、对象的创建、修改、拷贝
所有创建、修改、拷贝对象的函数都使用一个模板作为参数之一,模板指定了具体的属性值。
加密函数创建对象时也可能添加额外的它们自己的属性值,具体取决于加密机制。
某一个对象类所需的属性没有默认值时,必须在创建的时候通过函数或模板指定。
在创建对象时,以下情况会导致创建失败:
1)、提供的模板给一个无效的属性指定值。
2)、给一个有效地属性指定一个非法的值。
3)、赋值给一个只读的属性。
4)、模板中指定的属性和值不足以创建一个对象。
5)、模板中指定的属性值有冲突,尽管独立来看是满足接口规范的,但是不满足特定令牌的需求。
6)、重复为一个特定的属性指定相同的值。
在对象创建之后,可以通过C_SetAttributeValue来修改属性值。
需要关注的是有些接口规范中表示为可修改的属性,对于特定的token可能不支持修改。
可以通过C_CopyObject来拷贝对象,拷贝对象的时候也可以通过一个应用提供的模板修改对象副本的属性。
除了Cryptoki指定的可修改属性,CKA_TOKEN、CKA_PRIVATE、CKA_MODIFIABLE也可以在拷贝过程中修改。
需要注意一个特定的令牌可能不支持某些属性的修改。
三、对象及属性
1、所有对象的通用属性。
Attribute |
Data Type |
Meaning |
CKA_CLASS |
CK_OBJECT_CLASS |
Object class(type) |
CKA_CLASS必须在创建对象时指定。
2、硬件功能对象
CKO_HW_FEATURE代表设备的功能。他们提供了一种易于扩展的方法将新的价值特性引入到Cryptoki接口中。
除非在CKA_CLASS属性中指定CKO_HW_FEATURE这个值,否则在使用C_FindObjectInit和C_FindObjects查找对象时不会返回硬件功能对象。
Attribute |
Data Type |
Meaning |
CKA_HW_FEATURE_TYPE |
CK_HW_FEATURE |
Hardware feature(type) |
CKA_HW_FEATURE_TYPE需要在创建对象时指定。
3、时钟
属性CKA_HW_FEATURE_TYPE值为CKH_CLOCK代表时钟对象。时钟对象代表设备上的实时时钟。
这代表的是与 CK_TOKEN_INFO 结构中的 utcTime 字段相同的时钟源。时钟对象有如下属性:
Attribute |
Data Type |
Meaning |
CKA_VALUE |
CK_CHAR[16] |
长度为 16 的字符串表示当前时间, 格式为:YYYYMMDDhhmmssxx (最后 2 个保留‘0’字符)。 |
设备允许的话可以通过C_SetAttributeValue来设置该属性,设备可能要求SO用户来修改时间。
4、单调计数器对象
属性CKA_HW_FEATURE_TYPE值为CKH_MONOTONIC_COUNTER代表单调计数器对象。
单调计数器对象表示设备上存在的硬件计数器。这个计数器保证在每次读取其值时增加,但不一定增加1。
应用程序可能会使用它来生成序列号,以确保令牌的唯一性。
单调计数器对象属性:
Attribute |
Data Type |
Meaning |
CKA_RESET_ON_INIT |
CK_BBOOL |
使用C_InitializeToken初始化时,计数器将复位到一个先前的返回值。 |
CKA_HAS_RESET |
CK_BBOOL |
计数器的值在某些点已经被及时复位至少一次。 |
CKA_VALUE |
Byte Array |
单调计数器的当前版本,以大字节序返回。 |
注意单调计数器的这几个属性都是只读的,客户端无法设置。
5、用户接口对象
属性CKA_HW_FEATURE_TYPE值为CKH_USER_INTERFACE代表用户接口对象。
用户接口对象代表了设备的交互能力。
Attribute |
Data Type |
Meaning |
CKA_PIXEL_X |
CK_ULONG |
屏幕分辨率-X轴 |
CKA_PIXEL_Y |
CK_ULONG |
屏幕分辨率-Y轴 |
CKA_RESOLUTION |
CK_ULONG |
DPI,每英寸像素值 |
CKA_CHAR_ROWS |
CK_ULONG |
面向字符的显示,字符行数 |
CKA_CHAR_COLUMNS |
CK_ULONG |
面向字符的现实,字符列数 |
CKA_COLOR |
CK_BBOOL |
彩色支持 |
CKA_BITS_PER_PIXEL |
CK_ULONG |
色位或每像素灰度信息 |
CKA_CHAR_SETS |
RFC 2279 string |
字符集 |
CKA_ENCODING_METHODS |
RFC 2279 string |
编码方式 |
CKA_MIME_TYPES |
RFC 2279 string |
MIME类型 |
6、存储对象
存储对象并非一个具体的对象类,不需要CKO定义。它是一种具有以下对象类的公共属性的对象类。
Attribute |
Data Type |
Meaning |
CKA_TOKEN |
CK_BBOOL |
默认CK_FALSE, 会话对象为CK_FALSE 令牌对象为CK_TRUE |
CKA_PRIVATE |
CK_BBOOL |
Private对象为CK_TRUE Public对象为CK_FALSE 默认值由令牌定义,可能取决于其他属性值。 |
CKA_MODIFIABLE |
CK_BBOOL |
默认为CK_TRUE |
CKA_LABEL |
RFC2279 string |
对象描述,默认为空。 |
7、数据对象
CKA_CLASS属性为CKO_DATA。数据对象用来保存应用程序定义的信息。
Cryptoki仅提供此对象的访问,对于内容没有任何特殊的定义。
Attribute | Data Type | Meaning |
CKA_APPLICATION |
RFC2279 string |
管理该对象的应用程序的说明。默认为空。 |
CKA_OBJECT_ID |
Byte Array |
DER编码的对象标识符,默认为空。 |
CKA_VALUE |
Byte Array | 对象值 |
8、证书对象
CKA_CLASS属性为CKO_CERTIFICATE。证书对象持有公钥或者属性证书。Cryptoki仅提供证书的访问,不附加任何特殊的意义。
Attribute |
Data Type |
Meaning |
CKA_CERTIFICATE_TYPE |
CK_CERTIFICATE_TYPE |
证书类型(对象创建时指定) |
CKA_TRUSTED |
CK_BBOOL |
证书对于所建立的应用是否可信 (只能由SO设置为CK_TRUE) |
CKA_CERTIFICATE_CATEGORY |
CK_ULONG |
证书的分类: 0=未指定(默认值) 1=令牌用户, 2=机构, 3=其他实体 |
CKA_CHECK_VALUE |
Byte array |
校验和 |
CKA_START_DATE |
CK_DATE |
起始日期 |
CKA_END_DATE |
CK_DATE |
终止日期 |
1)X.509公钥证书对象
证书类型为CKC_X_509,用于保存X.509公钥证书。除了通用的证书对象属性,还有如下属性:
Attribute |
Data Type |
Meaning |
CKA_SUBJECT |
Byte array |
DER编码的证书主题名称,必须在对象创建时指定 |
CKA_ID |
Byte array |
公私钥对的标识符,默认为空。必须在对象创建时指定。 CKA_URL为空时,这个值必须为非空。 |
CKA_ISSUER |
Byte array |
DER编码的证书发行机构名,默认为空。 |
CKA_SERIAL_NUMBER |
Byte array |
DER编码的证书序列号,默认为空。 |
CKA_VALUE |
Byte array |
证书的BER编码,必须在对象创建时指定。 |
CKA_URL |
RFC2279 string |
非空时,给出完整的可获取证书的URL。 CKA_VALUE为空时,此值必须非空。 |
CKA_HASH_OF_SUBJECT_PUBLIC_KEY |
Byte array |
主题公钥的SHA-1哈希,默认为空。 CKA_URL为空,只能为空。 |
CKA_HASH_OF_ISSUER_PUBLIC_KEY |
Byte array |
发行机构公钥的SHA-1哈希,默认为空。 CKA_URL为空,只能为空。 |
CKA_JAVA_MIDP_SECURITY_DOMAIN |
CK_ULONG |
Java MIDP安全域: 0=未指定(默认值), 1=制造商, 2=操作员, 3=第三方 |
在对象创建之后,只有CKA_ID,CKA_ISSUER,CKA_SERIAL_NUMBER属性可以修改。
CKA_ID用于区分同一主体持有的多个公私钥对,不管是否存储在相同的令牌上。
密钥是通过主体名称和标识符来区分的,所以不同主体的密钥可能有相同的CKA_ID值。
2)WTLS公钥证书对象
证书类型为CKC_WTLS,保存WTLS公钥证书。
Attribute | Data Type | Meaning |
CKA_SUBJECT |
Byte array |
证书主体的WTLS编码,必须在对象创建时指定。 CKA_VALUE为空时,此值只能为空。 |
CKA_ISSUER |
Byte array |
WTLS编码的证书发行机构名,默认为空。 |
CKA_VALUE |
Byte array |
WTLS的证书编码,必须在对象创建时指定。 CKA_URL为空时,必须非空。 |
CKA_URL |
RFC2279 string |
非空时,给出完整的可获取证书的URL。 CKA_VALUE为空时,此值必须非空。 |
CKA_HASH_OF_SUBJECT_PUBLIC_KEY |
Byte array |
主题公钥的SHA-1哈希,默认为空。 CKA_URL为空,只能为空。 |
CKA_HASH_OF_ISSUER_PUBLIC_KEY |
Byte array |
发行机构公钥的SHA-1哈希,默认为空。 CKA_URL为空,只能为空。 |
在对象创建之后,只有CKA_ISSUER属性可以修改。
2)X.509属性证书对象
证书类型为CKC_X_509_ATTR_CERT,保存X.509属性证书。
Attribute |
Data Type |
Meaning |
CKA_OWNER |
Byte array |
属性证书主体字段的DER编码,必须在对象创建时指定。 与CKC_X_509证书中的CKA_SUBJECT属性不同,因为ASN.1语法和编码是不同的。 |
CKA_AC_ISSUER |
Byte array |
属性证书机构字段的DER编码。 |
CKA_SERIAL_NUMBER |
Byte array |
证书序列号的DER编码,默认为空。 |
CKA_ATTR_TYPES |
Byte array |
对应证书中属性类型的对象标识符值序列的BER编码。默认为空。 应用程序无需获取和解析证书就可以查找特定的属性证书。 |
CKA_VALUE |
Byte array |
证书的BER编码,必须在对象创建时指定。 |
在对象创建之后,只有 CKA_AC_ISSUER, CKA_SERIAL_NUMBER ,CKA_ATTR_TYPES属性可以修改。
9、密钥对象
不存在基础的密钥对象,而是根据密钥类型来区分定义了 CKO_PUBLIC_KEY, CKO_PRIVATE_KEY 和CKO_SECRET_KEY三种密钥对象。
密钥对象存储加密或认证密钥,可以是公钥、私钥、加密密钥。
以下是一些公共的密钥对象属性。
Attribute |
Data Type |
Meaning |
CKA_KEY_TYPE |
CK_KEY_TYPE |
KEY类型。 C_CreateObject创建对象时指定。 |
CKA_ID |
Byte array |
密钥ID,默认为空。 对象创建后可以通过属性设置接口函数或者在拷贝对象过程中修改。 有的令牌可能不支持拷贝中修改。 公私钥对的ID应该相同。如果有对应证书,证书中的ID也要相同。 对于加密密钥,该属性的含义取决于应用。 |
CKA_START_DATE |
CK_DATE |
开始日期,默认为空。 对象创建后可以通过属性设置接口函数或者在拷贝对象过程中修改。 有的令牌可能不支持拷贝中修改。 |
CKA_END_DATE |
CK_DATE |
结束日期,默认为空。 对象创建后可以通过属性设置接口函数或者在拷贝对象过程中修改。 有的令牌可能不支持拷贝中修改。 |
CKA_DERIVE |
CK_BBOOL |
如果支持KEY派生则为CK_TRUE 对象创建后可以通过属性设置接口函数或者在拷贝对象过程中修改。 有的令牌可能不支持拷贝中修改。 |
CKA_LOCAL |
CK_BBOOL |
仅当密钥 •通过C_GenerateKey或C_GenerateKeyPair调用本地生成(即在令牌上生成) •使用C_CopyObject接口创建一个CKA_LOCAL属性为CK_TRUE的密钥的副本时。 值为CK_TRUE. 用C_CreateObject、C_GenerateKey、C_GenerateKeyPair创建对象时不能指定。 C_UnwrapKey拆包时也不能指定。 |
CKA_KEY_GEN_MECHANISM |
CK_MECHANISM_TYPE |
生成密钥的机制标识。 用C_CreateObject、C_GenerateKey、C_GenerateKeyPair创建对象时不能指定。 C_UnwrapKey拆包时也不能指定。 仅当CKA_LOCAL为CK_TRUE时是合法值, 否则该属性值为CK_UNAVAILABLE_INFORMATION |
CKA_ALLOWED_MECHANISMS |
CK_MECHANISM_TYPE_PTR类型的指针, 指向一个CK_MECHANISM_TYPE 类型的数组 |
当前KEY能使用的一个机制列表。 列表中的机制数量是属性中的ulValueLen成员除以CK_MECHANISM_TYPE结构的大小。 |
1)、公钥对象
对象类型为CKO_PUBLIC_KEY。除密钥对象的公共属性外,还有如下这些属性:
Attribute |
Data Type |
Meaning |
CKA_SUBJECT |
Byte array |
密钥主体名称的DER编码。默认为空。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_ENCRYPT |
CK_BBOOL |
如果密钥支持加密,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 |
CKA_VERIFY |
CK_BBOOL |
如果密钥支持验证,则为CK_TRUE,其中签名是数据的附录。 默认值由令牌定义,也许取决于其他属性值。 |
CKA_VERIFY_RECOVER |
CK_BBOOL |
如果密钥支持从签名恢复数据的验证,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 |
CKA_WRAP |
CK_BBOOL |
如果密钥支持打包,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 |
CKA_TRUSTED |
CK_BBOOL |
对于创建密钥的应用来说,密钥是可信的。 打包密钥的CKA_WRAP_WITH_TRUSTED设置为CK_TRUE时,可用来打包密钥。 仅可以被SO用户设置为CK_TRUE。 |
CKA_WRAP_TEMPLATE |
CK_ATTRIBUTE_PTR |
用来打包密钥。 与使用此打包密钥打包的任何密钥匹配的属性模板。 不匹配的密钥不能打包。 列表中的属性数量是属性中的ulValueLen成员除以CK_ATTRIBUTE的大小。 |
2)、私钥对象
对象类型为CKO_PRIVATE_KEY,用来存储私钥对象。
Attribute |
Data Type |
Meaning |
CKA_SUBJECT |
Byte array |
证书主体名称的DER编码。默认为空。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_SENSITIVE |
CK_BBOOL |
如果密钥是敏感的,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 一旦设置为CK_TRUE,属性变为只读,不能再修改。 |
CKA_DECRYPT |
CK_BBOOL |
如果密钥支持解密,则为CK_TRUE 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_SIGN |
CK_BBOOL |
如果密钥支持签名,则为CK_TRUE,签名是数据附录。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_SIGN_RECOVER |
CK_BBOOL |
密钥支持签名且签名能够从数据中恢复,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_UNWRAP |
CK_BBOOL |
如果密钥支持拆包,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_EXTRACTABLE |
CK_BBOOL |
如果密钥可提取和打包,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 一旦设置为CK_FALSE,属性变为只读,不能再修改。 |
CKA_ALWAYS_SENSITIVE |
CK_BBOOL |
如果密钥始终将CKA_SENSITIVE属性设置为CK_TRUE时,该属性为CK_TRUE。 用C_CreateObject、C_GenerateKey、C_GenerateKeyPair创建对象时不能指定。 C_UnwrapKey拆包时也不能指定。 |
CKA_NEVER_EXTRACTABLE |
CK_BBOOL |
当密钥始终未将CKA_EXTRACTABLE属性设置为CK_TRUE,则为CK_TRUE。 |
CKA_WRAP_WITH_TRUSTED |
CK_BBOOL |
如果密钥仅能被一个属性CKA_TRUSTED设置为CK_TRUE的打包密钥打包,则为CK_TRUE。 |
CKA_UNWRAP_TEMPLATE |
CK_ATTRIBUTE_PTR |
用来解包密钥。 属性模板应用到任何使用此密钥解包的密钥上。 任何用户提供的模板都将在此模板之后应用,就像对象已经创建一样。 列表中的属性数量是属性中的ulValueLen成员除以CK_ATTRIBUTE的大小。 |
CKA_ALWAYS_AUTHENTICATE |
CK_BBOOL |
默认为CK_FALSE。如果设置为TRUE,用户每次使用密钥必须提供PIN。 |
出于交互性的考虑,主体名和密钥ID应该与对应的证书和公钥中相同。
当CKA_SENSITIVE设置为CK_TRUE,或者CKA_EXTRACTABLE属性设置为CK_FALSE,私钥特定属性的明文不应该出现在令牌之外。
3)、秘密密钥对象
对象类型为CKO_SECRET_KEY,用来存储秘密密钥。
Attribute |
Data Type |
Meaning |
CKA_SENSITIVE |
CK_BBOOL |
如果密钥是敏感的,则为CK_TRUE。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 一旦设置为CK_TRUE,属性变为只读,不能再修改。 |
CKA_ENCRYPT8 |
CK_BBOOL |
如果密钥支持加密则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_DECRYPT8 |
CK_BBOOL |
如果密钥支持解密,则为CK_TRUE 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_SIGN8 |
CK_BBOOL |
如果密钥支持签名,则为CK_TRUE,签名是数据附录。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_VERIFY8 |
CK_BBOOL |
如果密钥支持验证,则为CK_TRUE,其中签名是数据的附录。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_WRAP8 |
CK_BBOOL |
如果密钥支持打包,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 |
CKA_UNWRAP8 |
CK_BBOOL |
如果密钥支持拆包,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 |
CKA_EXTRACTABLE8,12 |
CK_BBOOL |
如果密钥可提取和打包,则为CK_TRUE。 默认值由令牌定义,也许取决于其他属性值。 对象创建后可以通过属性设置接口修改。 也可以在拷贝对象过程中修改,取决于具体的令牌。 一旦设置为CK_FALSE,属性变为只读,不能再修改。 |
CKA_ALWAYS_SENSITIVE2,4,6 |
CK_BBOOL |
如果密钥始终将CKA_SENSITIVE属性设置为CK_TRUE时,该属性为CK_TRUE。 用C_CreateObject、C_GenerateKey、C_GenerateKeyPair创建对象时不能指定。 C_UnwrapKey拆包时也不能指定。 |
CKA_NEVER_EXTRACTABLE2,4,6 |
CK_BBOOL |
当密钥始终未将CKA_EXTRACTABLE属性设置为CK_TRUE,则为CK_TRUE。 用C_CreateObject、C_GenerateKey、C_GenerateKeyPair创建对象时不能指定。 C_UnwrapKey拆包时也不能指定。 |
CKA_CHECK_VALUE |
Byte array |
密钥校验和 |
CKA_WRAP_WITH_TRUSTED11 |
CK_BBOOL |
如果密钥仅能被一个属性CKA_TRUSTED设置为CK_TRUE的打包密钥打包,则为CK_TRUE。 默认为CK_FALSE。 一旦设置为CK_TRUE,则不能再修改。 |
CKA_TRUSTED10 |
CK_BBOOL |
打包KEY可用于打包CKA_WRAP_WITH_TRUSTED 属性设置为CK_TRUE。 仅能被SO用户设置为CK_TRUE。 |
CKA_WRAP_TEMPLATE |
CK_ATTRIBUTE_PTR |
用来打包密钥。 与使用此打包密钥打包的任何密钥匹配的属性模板。 不匹配的密钥不能打包。 列表中的属性数量是属性中的ulValueLen成员除以CK_ATTRIBUTE的大小。 |
CKA_UNWRAP_TEMPLATE |
CK_ATTRIBUTE_PTR |
用来解包密钥。 属性模板应用到任何使用此密钥解包的密钥上。 任何用户提供的模板都将在此模板之后应用,就像对象已经创建一样。 列表中的属性数量是属性中的ulValueLen成员除以CK_ATTRIBUTE的大小。 |
当CKA_SENSITIVE设置为CK_TRUE,或者CKA_EXTRACTABLE属性设置为CK_FALSE,私钥特定属性的明文不应该出现在令牌之外。
要调用的对称密钥对象的密钥检查值(KCV)属性CKA_CHECK_VALUE,类型为字节数组,长度为3字节,操作类似于指纹,或密钥的校验和。
它们针对共享同一密钥的其他系统的对称密钥进行交叉检查,并作为手动操作后的有效性检查密钥输入或从备份还原。
10、域参数对象
对象类型CKO_DOMAIN_PARAMETERS,用来存储公共域参数对象。
此对象类是为了支持存储某些特定算法的扩展参数。DSA和DH都在密钥对生成步骤中使用域参数。
要使用域参数对象,必须将属性提取到模板中,然后将它们(仍在模板中)提供给相应的密钥对生成函数。
Attribute |
Data Type |
Meaning |
CKA_KEY_TYPE |
CK_KEY_TYPE |
需要使用域参数来生成密钥的密钥类型。 必须在创建对象时指定。 |
CKA_LOCAL2,4 |
CK_BBOOL |
CK_TRUE仅当域参数 •本地(即在令牌上)用C_GenerateKey生成。 •使用C_CopyObject调用创建 一个CKA_LOCAL属性为CK_TRUE域参数对象的副本。 使用C_CreateObject、C_GenerateKey或者C_GenerateKeyPair创建时不能指定值。 |
11、机制对象
对象类型为CKO_MECHANISM,提供设备支持的机制信息。
使用C_FindObjectsInit和C_FindObjects搜索对象时,除非模板中的CKA_CLASS属性具有CKO_MECHANISM值,机制对象不会返回。
Attribute |
Data Type |
Meaning |
CKA_MECHANISM_TYPE |
CK_MECHANISM_TYPE | 机制对象类型 |
未完待续......