2011-07-11 12 views
6

Hei、 質問はNcryptokiについてのものではありませんが、私は誰にも質問してもらえませんでした。PKCS#11 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); 

しかし、これは私にエラーを与える: はイムは、AESキーと私が今持っているものHERESにコードを生成するためにtryng

C_GenerateKey rv=0x62 - key size range 

誰がどこにここから行くために私にいくつかのアイデアを与えることができます

EDIT:私はSafeNet ProtectToolkitに付属しているjprovというJava PKCS#11ラッパーを使用してSafeNet HSMとIMを持っています。

+0

@ this.josh、CKA.VALUE_LENを変更しても何も変更されませんでした。まだ同じエラーが発生しています。 –

+0

'CKA.VALUE_LEN'はビットまたはバイトであるはずですか? – AviD

答えて

6

私はnew CK_ATTRIBUTE(CKA.VALUE_LEN, 32),、answereを発見し、そこでの32は、私がこれを行うときにCK_ULONG値である必要があります:

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である場合:

public class LongRef { 

    public long value; 

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

・ホープこれは誰かに役立ちます。

+0

@AviD、申し訳ありません。 2つの異なるコンピュータとthatsなぜ私は同じことを使用できませんでした。あなたがそれらをマージすることができればうれしいだろう。(t678に)ありがとう! –

関連する問題