Как загрузить открытый ключ RSA в HSM (используя библиотеку PKCS#11)?

Я довольно новичок в использовании библиотеки PKCS#11, так что, возможно, кто-то с большим опытом может разобраться.

Я хочу сделать следующее:

  1. загрузить в HSM существующий открытый ключ RSA (созданный на ПК)
  2. и позже используйте этот загруженный ключ, чтобы обернуть симметричный ключ, сгенерированный в HSM.

Я знаю, как создать симметричный ключ, но как загрузить существующий открытый ключ RSA?

Возможно ли это даже с помощью библиотеки PKCS#11?

Похоже, что аналогичный вопрос возникает при переносе секретного ключа с открытым ключом с использованием PKCS#11, но в нем используется пара ключей RSA, созданная в HSM. Мне нужно загрузить открытый ключ RSA в HSM.

1 ответ

Мы можем использовать функцию C_CreateObject PKCS#11 для импорта открытого ключа в HSM. Это можно найти из

Функции RSA PKCS#11-> Функции управления объектами -> C_CreateObject

Также есть пример загрузки открытого ключа. Но для этого требуется поддержка токена для загрузки открытого ключа из библиотеки криптоки.

CK_SESSION_HANDLE hSession;
CK_OBJECT_HANDLE hKey;
CK_OBJECT_CLASS keyClass = CKO_PUBLIC_KEY;
CK_KEY_TYPE keyType = CKK_RSA;
CK_BYTE modulus[] = {... };
CK_BYTE exponent[] = {... };
CK_ATTRIBUTE keyTemplate[] = {
    {CKA_CLASS, &keyClass, sizeof(keyClass)}
    ,
    {CKA_KEY_TYPE, &keyType, sizeof(keyType)}
    ,
    {CKA_WRAP, &true, sizeof(true)}
    ,
    {CKA_MODULUS, modulus, sizeof(modulus)}
    ,
    {CKA_PUBLIC_EXPONENT, exponent, sizeof(exponent)}
};

CK_RV rv;

/* Create an RSA public key object */
rv = C_CreateObject(hSession, &keyTemplate, 5, &hKey);
if (rv == CKR_OK) {
.
.
}
Другие вопросы по тегам