2011-07-11 9 views
6

Hei, Pytanie nie dotyczy tak naprawdę Ncryptoki, ale nie wiedziałem nigdzie indziej, aby zapytać .. więc jeśli ktoś może pomóc, pomóż mi. Im tryng do generowania klucza AES i heres kodu co mam teraz:PKCS # 11 Wygeneruj klucz 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); 

Ale to daje mi błąd:

C_GenerateKey rv=0x62 - key size range 

Czy ktoś może dać mi jakiś pomysł, gdzie iść stąd rozwiązać to ..

EDYCJA: Tylko dla informacji - Mam SafeNet HSM i im przy użyciu opakowania Javy PKCS # 11 o nazwie jprov, co jest dostarczane z SafeNet ProtectToolkit.

+0

@ this.josh, zmiana CKA.VALUE_LEN nic nie zmieniła. Nadal dostaję ten sam błąd. –

+0

Czy 'CKA.VALUE_LEN' ma być w bitach lub bajtach? – AviD

Odpowiedz

6

znalazłem answere, new CK_ATTRIBUTE(CKA.VALUE_LEN, 32),, 32 tam musi być wartość CK_ULONG więc kiedy to zrobić:

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

LongRef Gdzie jest:

public class LongRef { 

    public long value; 

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

Nadzieja to pomaga kogoś.

+0

@AviD, przepraszam za to. Dwa różne komputery i dlatego nie mogłem użyć tego samego. Byłoby miło, gdybyście mogli je połączyć. (Do t678) Dzięki! –

Powiązane problemy