嘿,这个问题其实不是关于Ncryptoki的,但我不知道还有其他地方可以问..所以如果有人能帮上忙请帮帮我。我正在尝试生成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);但这给了我一个错误:
C_GenerateKey rv=0x62 - key size range谁能给我一些建议来解决这个问题..
编辑:仅供参考-我有SafeNet HSM和即时通信工具,使用的是名为jprov的java PKCS#11包装器,它与SafeNet ProtectToolkit一起提供。
发布于 2011-07-12 13:38:01
我找到了answere,new CK_ATTRIBUTE(CKA.VALUE_LEN, 32),,其中的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");
}
}希望这对某些人有帮助。
https://stackoverflow.com/questions/6661329
复制相似问题