Key 接口和 KeySpec

类型为 PKDS 的专用硬件密钥的明确密钥材料永远不会返回到应用程序,并且永远无法传输到其他系统上使用。 因此,无法使用 java.security.Key 接口的实现来表示这些接口。

对 PKDS 类型的专用硬件密钥的软件引用不是密钥或密钥规范,而是可以指定给 IBMJCECCA 提供程序以代替密钥的标签。 可以使用下列其中一种方法来检索硬件密钥对的表示:
public byte [] getToken()
public byte [] getLabelString()

对于 DSA 密钥对, getLabelString() 返回表示 CCA 密钥存储区中存储的密钥的标签。

对于类型为 CLEAR 的 RSA 或 EC 密钥对,应使用 getToken() 来返回内部 CCA 令牌。 对于类型为 PKDS 的 RSA 或 EC 密钥对,应该使用 getLabelString() 来返回表示 CCA 密钥存储区中存储的密钥的标签。

KeyLabelKeySpec class

此类 (实现 KeySpec 接口) 指定存储在 CCA 密钥存储区中的 AES , DES 或 DESede 密钥的 CCA 标签。 如果将 KeyLabelKeySpec 传递到 AESKeyFactoryDESKeyFactoryDESedeKeyFactorygenerateSecret() 方法,那么返回的密钥对象表示已存储在 CCA 密钥存储区中的密钥。 请注意, generateSecret() 不会在 CCA 密钥存储区域中创建新密钥,也不会验证 CCA 密钥存储区域中是否存在此类条目。

此类还指定存储在系统密钥存储区中的 DSA , RSA 或 EC 密钥对的 CCA 密钥存储区标签。 如果将 KeyLabelKeySpec 传递到 RSAKeyFactoryECKeyFactorygeneratePrivate()generatePublic() 方法,或者传递到 DSAKeyFactorygeneratePrivate() 方法,那么返回的密钥对象表示已存储在 CCA 密钥存储区中的密钥对的相应密钥。 请注意, generatePublic()generatePrivate() 不会在 CCA 密钥存储区域中创建新密钥,也不会验证 CCA 密钥存储区域中当前是否存在此类条目。

此类具有以下方法:
public String getLabelString()
此方法返回密钥或密钥对的 CCA 标签。

DSAPrivateHWKeySpec

此类 (用于实现 KeySpec 接口) 指定 DSA 专用硬件密钥及其关联参数。 此类具有以下方法:
public byte[] getLabel()
此方法返回专用密钥标签。
public DSAKeyHWAttributes getAttributes()
此方法返回用于计算密钥的 DSA 算法参数。
public DSAParameterSpec getDSAParamSpec()
此方法返回与密钥关联的 DSA 硬件属性。

请参阅 Java™ API 文档,以了解与此类关联的特定方法,缺省值和限制。

RSAPrivateHWKeySpec

此类 (实现 KeySpec 接口) 指定 RSA 专用硬件密钥及其关联参数。 此类具有以下方法:

public byte[] getToken()
此方法返回专用密钥令牌,该令牌可以是内部 CCA 令牌或 CCA 密钥存储区密钥记录标签。
public RSAKeyHWAttributes getAttributes()
此方法返回与密钥关联的 RSA 硬件属性。

请参阅 Java API 文档以了解与此类关联的特定方法,缺省值和限制。

ECPrivateHWKeySpec

此类 (实现 KeySpec 接口) 指定 EC 专用硬件密钥及其关联参数。 此类具有以下方法:

public byte[] getToken()
此方法返回专用密钥令牌,该令牌可以是外部 CCA 令牌或 CCA 密钥存储区密钥记录标签。
public ECHWKeyAttributes getAttributes()
此方法返回与密钥关联的 EC 硬件属性。
public ECParameterSpec getParams()
此方法返回与键关联的椭圆曲线域参数。

请参阅 Java API 文档以了解与此类关联的特定方法,缺省值和限制。