Ejemplo: Recuperación de las claves generadas a partir de un grupo de conjuntos de claves
En este ejemplo se muestra cómo las aplicaciones pueden utilizar la API com.ibm.websphere.crypto.KeySetHelper para recuperar claves gestionadas de las configuraciones KeySet o KeySetGroup. Utilice la API com.ibm.websphere.crypto.KeySetHelper para obtener el conjunto de claves más reciente o todas las claves del objeto KeySet o KeySetGroup.
Utilice las claves más recientes cuando realice cualquier operación criptográfica. Todas las demás claves definidas en el objeto KeySet o KeySetGroup sirven para la validación de las operaciones criptográficas realizadas previamente.
El ejemplo siguiente utiliza un método que puede utilizar un aplicación para inicializar las claves en el objeto
KeySetGroup asociado. Es posible que la aplicación desee almacenar las claves en dos correlaciones separadas, una para generación y una para validación.
Consulte la documentación de la API KeySetHelper para determinar qué requisitos de Java™ 2 Security son necesarios.
/**
* Inicializa las correlaciones primarias y secundarias para inicializar las claves.
*/
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());
}
}
// guardarlas para utilizarlas posteriormente, si es necesario
validationKeys = ksh.getAllKeysForKeySetGroup(keySetGroupName);
/***
* Todas las claves: {
* 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.");
}
}