2011-07-11 20 views
6

Hei, La pregunta no es realmente acerca de Ncryptoki, pero no sabía en ningún otro lugar para preguntar ... así que si alguien puede ayudar, por favor, ayúdenme. Im tryng para generar clave AES y aquí el código de lo que tengo en este momento:PKCS # 11 Generar clave AES

CK_MECHANISM keyGenMech = new CK_MECHANISM(CKM.AES_KEY_GEN); 

CK_ATTRIBUTE[] template = 
{ 
    new CK_ATTRIBUTE(CKA.CLASS, CKO.SECRET_KEY), 
    new CK_ATTRIBUTE(CKA.TOKEN, CK_BBOOL.TRUE), 
    new CK_ATTRIBUTE(CKA.SENSITIVE, CK_BBOOL.TRUE), 
    new CK_ATTRIBUTE(CKA.VALUE_LEN, 32), 
    new CK_ATTRIBUTE(CKA.KEY_TYPE, CKK.AES), 
    new CK_ATTRIBUTE(CKA.LABEL, "testAES".getBytes()), 
    new CK_ATTRIBUTE(CKA.PRIVATE, new CK_BBOOL(bPrivate)) 
}; 
CryptokiEx.C_GenerateKey(session, keyGenMech, template, template.length, wrappingKey); 

Pero esto me da un error:

C_GenerateKey rv=0x62 - key size range 

¿Alguien puede dar alguna idea de dónde ir desde aquí hasta resuelve esto ..

EDITAR: Solo para información - Tengo SafeNet HSM y estoy utilizando java PKCS # 11 envoltorio llamado jprov lo que viene con SafeNet ProtectToolkit.

+0

@ this.josh, cambiar el CKA.VALUE_LEN no cambió nada. Sigue recibiendo el mismo error. –

+0

¿Se supone que 'CKA.VALUE_LEN' está en bits o bytes? – AviD

Respuesta

6

he encontrado el answere, new CK_ATTRIBUTE(CKA.VALUE_LEN, 32),, el 32 en que tiene que haber valor CK_ULONG así que cuando hago esto:

LongRef l = new LongRef((long)32); 

CK_ATTRIBUTE[] template = 
{ 
    new CK_ATTRIBUTE(CKA.CLASS,  CKO.SECRET_KEY), 
    new CK_ATTRIBUTE(CKA.TOKEN,  CK_BBOOL.TRUE), 
    new CK_ATTRIBUTE(CKA.SENSITIVE, CK_BBOOL.TRUE), 
    new CK_ATTRIBUTE(CKA.VALUE_LEN, l.value), 
    //new CK_ATTRIBUTE(CKA.VALUE,  key), 
    new CK_ATTRIBUTE(CKA.KEY_TYPE, CKK.AES), 
    new CK_ATTRIBUTE(CKA.LABEL,  "testAES".getBytes()), 
    new CK_ATTRIBUTE(CKA.PRIVATE, new CK_BBOOL(bPrivate)) 
}; 

Dónde LongRef es:

public class LongRef { 

    public long value; 

    public LongRef(long l) { 
     //compiled code 
     throw new RuntimeException("Compiled Code"); 
    } 
} 

Espero que esto ayude a alguien.

+0

@AviD, lo siento por eso. Dos computadoras diferentes y es por eso que no pude usar lo mismo. Sería bueno si pudieras unirlos. (Al t678) ¡Gracias! –

Cuestiones relacionadas