示例:从密钥集组中检索生成的密钥
此示例显示应用程序如何使用 com.ibm.websphere.crypto.KeySetHelper API 来从 KeySet 或 KeySetGroup 配置检索受管密钥。使用 com.ibm.websphere.crypto.KeySetHelper API 来获取 KeySet 或 KeySetGroup 对象中的最新一组密钥或所有密钥。
在执行任何新密码操作时使用最新密钥。KeySet 或 KeySetGroup 对象中定义的所有其他密钥用于验证先前执行的密码操作。
以下示例使用应用程序可能使用的方法来初始化关联
KeySetGroup 对象中的密钥。应用程序可能想要将密钥存储在两个不同映射中,一个用于生成密钥,一个用于验证密钥。请参阅
KeySetHelper API 的 API 文档以确定所需的 Java™ 2 安全性要求。
/**
* Initializes the primary and secondary Maps used for initializing the keys.
*/
public void initializeKeySetGroupKeys() throws com.ibm.websphere.crypto.KeyException
{
java.util.Map generationKeys = null;
java.util.Map validationKeys = null;
PublicKey tempPublicKey = null;
PrivateKey tempPrivateKey = null;
byte[] tempSharedKey = null;
keySetGroupName = "ApplicationKeySetGroup";
com.ibm.websphere.crypto.KeySetHelper ksh = com.ibm.websphere.crypto.KeySetHelper.getInstance();
generationKeys = ksh.getLatestKeysForKeySetGroup(keySetGroupName);
/***
* Latest keys: {
* KeyPair_3=com.ibm.websphere.crypto.KeyPair@64ec64ec,
* Secret_3=javax.crypto.spec.SecretKeySpec@fffe8aa7
* }
***/
if (generationKeys != null)
{
Iterator iKeySet = generationKeys.keySet().iterator();
while (iKeySet.hasNext())
{
String keyAlias = (String)iKeySet.next();
Object key = generationKeys.get(keyAlias);
if (key instanceof java.security.Key)
{
tempSharedKey = ((java.security.Key)key).getEncoded();
}
else if (key instanceof com.ibm.websphere.crypto.KeyPair)
{
java.security.Key publicKeyAsSecret =
((com.ibm.websphere.crypto.KeyPair)key).getPublicKey();
tempPublicKey = new PublicKey(publicKeyAsSecret.getEncoded());
java.security.Key privateKeyAsSecret =
((com.ibm.websphere.crypto.KeyPair)key).getPrivateKey();
tempPrivateKey = new PrivateKey(privateKeyAsSecret.getEncoded());
}
}
// save these for use later, if necessary
validationKeys = ksh.getAllKeysForKeySetGroup(keySetGroupName);
/***
* All keys: {
* version_1=
* {Secret_1=javax.crypto.spec.SecretKeySpec@178cf,
* KeyPair_1=com.ibm.websphere.crypto.KeyPair@1c121c12},
* version_2=
* {Secret_2=javax.crypto.spec.SecretKeySpec@17a77,
* KeyPair_2=com.ibm.websphere.crypto.KeyPair@182e182e},
* version_3=
* {Secret_3=javax.crypto.spec.SecretKeySpec@fffe8aa7,
* KeyPair_3=com.ibm.websphere.crypto.KeyPair@4da04da0}
* }
***/
}
else
{
throw new com.ibm.websphere.crypto.KeyException("Could not generateKeys.");
}
}