Я хотел бы знать, можно ли произвести вывод ключа с помощью механизма AES_CMAC.
У меня есть главный ключ (ключ) AES, и я хочу сгенерировать ключ AES: key2 = AES_CMAC (ключ, данные). И, конечно же, я хочу получить только держатель key2, а не ценность.
когда мне это нравится:
public long derive_key(long key, byte[] data, String label) {
long p_key = -1L;
CK_MECHANISM mec = new CK_MECHANISM();
mec.mechanism = PKCS11Constants.CKM_AES_CMAC;
SecretKey keyTemplate = new AESSecretKey();
fill(keyTemplate, label);
((AESSecretKey) keyTemplate).getValueLen().setLongValue(16L);
((AESSecretKey) keyTemplate).getValue().setByteArrayValue(data);
CK_ATTRIBUTE[] attr = iaik.pkcs.pkcs11.objects.Object.getSetAttributes(keyTemplate);
return cryptoki.C_DeriveKey(ckiSession, mec, key, attr, true);
Я получаю ошибку CKR_MECHANISM_INVALID.
И я не могу использовать cryptoki.C_Sign (...), потому что он выводит значение ключа.
Спасибо!