0
PKCS # 11을 통해 보안 카드에 ECC 키 쌍을 생성하려고합니다. 함수 2B 06 09 24 03 03 02 08 01 01 07C_GenerateKeyPair가 오류를 반환하는 이유는 무엇입니까 (PKCS # 11)?
인 곡선 BrainpoolP256r1한다 사용될 (1.3.36.3.3.2.8.1.1.7)는 상기 DER 인코딩된다
CK_RV create_ECC_key_pair()
{
CK_RV rv;
CK_OBJECT_HANDLE publicKey, privateKey;
CK_MECHANISM mechanism = {
CKM_EC_KEY_PAIR_GEN, NULL_PTR, 0
};
CK_BYTE subject[] = "myKey";
CK_BYTE id[] = {0xa1};
CK_BBOOL xtrue = CK_TRUE;
CK_BBOOL xfalse = CK_FALSE;
CK_BYTE ecparams[] = {0x06, 0x09, 0x2b, 0x24, 0x03, 0x03, 0x02, 0x08, 0x01, 0x01, 0x07};
CK_ATTRIBUTE publicKeyTemplate[] = {
{CKA_LABEL, subject, sizeof(subject)},
{CKA_TOKEN, &xtrue, sizeof(xtrue)},
{CKA_MODIFIABLE, &xfalse, sizeof(xfalse)},
{CKA_EC_PARAMS, &ecparams, sizeof(ecparams)}
};
CK_ATTRIBUTE privateKeyTemplate[] = {
{CKA_TOKEN, &xtrue, sizeof(xtrue)},
{CKA_MODIFIABLE, &xfalse, sizeof(xfalse)},
{CKA_LABEL, subject, sizeof(subject)}
};
rv = FunctionPtr->C_GenerateKeyPair(Session,
&mechanism,
publicKeyTemplate, 4,
privateKeyTemplate, 3,
&publicKey,
&privateKey);
if (rv != CKR_OK)
{
printf("Error C_GenerateKeyPair (ECC): 0x%X\n", rv);
return rv;
}
return CKR_OK;
}
C_GenerateKeyPair 호출은 0x13 = CKR_ATTRIBUTE_VALUE_INVALID를 반환합니다.
어떤 속성이 잘못 될 수 있는지 전혀 알지 못합니다. 나는 그 정보가 열악하다는 것을 알고 있지만, 나는 다른 것을 시도했고 여전히이 오류가있다. 근본적으로 잘못된 것이 있습니까?