Извлечение ключа HSM AES

У меня есть Thales nShield HSM, в котором я создал (CKA_SENSATIVE, false) ключ AES, который я хочу извлечь, но я вообще не могу понять, как это сделать в java. Создание моего ключа выглядит так:

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)
    {
    }

person Joshua Faust    schedule 07.07.2017    source источник
comment
@zaph это nShield   -  person Joshua Faust    schedule 08.07.2017


Ответы (1)


Вам нужно прочитать атрибут CKA_VALUE сгенерированного ключевого объекта с помощью функции C_GetAttributeValue.

person jariq    schedule 07.07.2017
comment
Да, я видел этот ответ в предыдущем посте. Можно немного конкретнее? Я сделал: p11.C_GetAttributeValue(hSession, newAESKeyHandle, CKA_VALUE); которому я даю значение 1126. Не совсем уверен, что это такое. Я также сделал: CK_ATTRIBUTE[] KeyValue = new CK_ATTRIBUTE[] { new CK_ATTRIBUTE(CKA_VALUE, newAESKeyHandle)}; - person Joshua Faust; 08.07.2017