热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PKCS#11数据加密国际标准解读对象

PKCS#11标准解读-对象,此为第三篇,介绍对象和属性。PKCS#11是使用非常普遍的密码设备接口,在实际应用中,国密的

PKCS#11标准解读-对象,此为第三篇,介绍对象和属性。

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机制对象类型

 

未完待续......

 


推荐阅读
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 纠正网上的错误:自定义一个类叫java.lang.System/String的方法
    本文纠正了网上关于自定义一个类叫java.lang.System/String的错误答案,并详细解释了为什么这种方法是错误的。作者指出,虽然双亲委托机制确实可以阻止自定义的System类被加载,但通过自定义一个特殊的类加载器,可以绕过双亲委托机制,达到自定义System类的目的。作者呼吁读者对网上的内容持怀疑态度,并带着问题来阅读文章。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • ***byte(字节)根据长度转成kb(千字节)和mb(兆字节)**parambytes*return*publicstaticStringbytes2kb(longbytes){ ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
author-avatar
hyl7758521_948
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有