Beispiel: Generierte Schlüssel aus einer Schlüsselsatzgruppe abrufen
Dieses Beispiel zeigt, wie Anwendungen mit der API com.ibm.websphere.crypto.KeySetHelper verwaltete Schlüssel aus KeySet- oder KeySetGroup-Konfigurationen abrufen können. Verwenden Sie die API com.ibm.websphere.crypto.KeySetHelper, um die neuesten Schlüssel oder alle Schlüssel aus dem KeySet- oder KeySetGroup-Objekt abzurufen.
Rufen Sie die neuesten Schlüssel ab, wenn Sie neue Verschlüsselungsoperationen ausführen möchten. Alle anderen im KeySet- oder KeySetGroup-Objekt definierten Schlüssel sind für die Validierung bereits ausgeführter Verschlüsselungsoperationen bestimmt.
Das folgende Beispiel enthält eine Methode, mit der eine Anwendung
die Schlüssel im zugeordneten
KeySetGroup-Objekt initialisieren könnte. Bei Bedarf kann die Anwendung die Schlüssel in zwei gesonderten Zuordnungen speichern, einer für Generierung und einer für Validierung.
Stellen Sie anhand der Dokumentation zur API KeySetHelper fest, welche
Java™-2-Sicherheitsanforderungen gelten.
/**
* Initialisiert die primäre und sekundäre Zuordnung für die Initialisierung der Schlüssel
*/
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);
/***
* Neueste Schlüssel: {
* 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());
}
}
// für eventuelle spätere Verwendung speichern
validationKeys = ksh.getAllKeysForKeySetGroup(keySetGroupName);
/***
* Alle Schlüssel: {
* 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.");
}
}