2017-07-07 4 views
1

Ich habe ein Thales nShield HSM, in dem ich einen (CKA_SENSATIVE, false) AES-Schlüssel erstellt habe, den ich extrahieren möchte, aber ich kann nicht herausfinden, wie man es in Java überhaupt macht. My Key Schöpfung sieht genauso aus wie folgt aus:HSM AES-Schlüsselextraktion

CK_ATTRIBUTE[] aesKeyObject = new CK_ATTRIBUTE[14]; 

    try 
    { 
     aesKeyObject[0] = new CK_ATTRIBUTE(CKA_CLASS, CKO_SECRET_KEY); 
     aesKeyObject[1] = new CK_ATTRIBUTE(CKA_KEY_TYPE, CKK_AES); 
     aesKeyObject[2] = new CK_ATTRIBUTE(CKA_VALUE_LEN, 32); 
     aesKeyObject[3] = new CK_ATTRIBUTE(CKA_TOKEN, true); 
     aesKeyObject[4] = new CK_ATTRIBUTE(CKA_LABEL, "TestAES".getBytes()); 
     aesKeyObject[5] = new CK_ATTRIBUTE(CKA_PRIVATE, true); 
     aesKeyObject[6] = new CK_ATTRIBUTE(CKA_EXTRACTABLE, true); 
     aesKeyObject[7] = new CK_ATTRIBUTE(CKA_WRAP, true); 
     aesKeyObject[8] = new CK_ATTRIBUTE(CKA_UNWRAP, true); 
     aesKeyObject[9] = new CK_ATTRIBUTE(CKA_ENCRYPT, true); 
     aesKeyObject[10] = new CK_ATTRIBUTE(CKA_DECRYPT, true); 
     aesKeyObject[11] = new CK_ATTRIBUTE(CKA_TRUSTED, true); 
     aesKeyObject[12] = new CK_ATTRIBUTE(CKA_ID, 1550); 
     aesKeyObject[13] = new CK_ATTRIBUTE(CKA_SENSITIVE, false); 

     CK_MECHANISM mech = new CK_MECHANISM(CKM_AES_KEY_GEN); 

     long newAESKeyHandle = p11.C_GenerateKey(hSession, mech, aesKeyObject);  
    }catch(Exception e) 
    { 
    } 
+0

@zaph ist es das nShield –

Antwort

0

Sie benötigen Attribut des erzeugten Schlüsselobjekt mit C_GetAttributeValue Funktion zu lesen.

+0

Ja, ich sah diese Antwort in einem früheren Post. Kannst du etwas genauer sein? Ich habe getan: p11.C_GetAttributeValue (hSession, newAESKeyHandle, CKA_VALUE); zu dem ich mir einen Wert von 1126 gebe. Nicht wirklich sicher, was das ist. Ich habe auch getan: CK_ATTRIBUTE [] KeyValue = new CK_ATTRIBUTE [] { neu CK_ATTRIBUTE (CKA_VALUE, newAESKeyHandle) }; –

Verwandte Themen