
В KeyStore Explorer, как показано на рисунке, каждая запись или каждая строка, связанная с ключом, тип алгоритма, включая симметричный и указаны асимметричный, AES, ... и длина ключа.
Поскольку библиотека OpenSSL имеет множество файлов, классов, переменных и функций, найти класс или переменную, относящуюся к нужной теме, непросто. В OpenSSL v3.x я получаю свойство дружественного имени следующим образом:
STACK_OF(PKCS7) *safes = PKCS12_unpack_authsafes(p12);
int n, m;
char *name = NULL;
if (safes == NULL) return NULL;
for (n = 0; n < sk_PKCS7_num(safes) && !name; n++) {
PKCS7 *safe = sk_PKCS7_value(safes, n);
STACK_OF(PKCS12_SAFEBAG) *bags;
if (OBJ_obj2nid(safe->type) != NID_pkcs7_data) continue;
bags = PKCS12_unpack_p7data(safe);
if (!bags) continue;
for (m = 0; m < sk_PKCS12_SAFEBAG_num(bags) && !name; m++) {
PKCS12_SAFEBAG *bag = sk_PKCS12_SAFEBAG_value(bags, m);
name = PKCS12_get_friendlyname(bag);
// algorithmName what to do?
// keySize what to do?
}
sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
}
sk_PKCS7_pop_free(safes, PKCS7_free);
По вашему мнению, как добавить механизм хранения имени алгоритма (например, AES, 3DES) и размера ключа для каждой записи (PKCS#12 SafeBag) в списке хранилищ ключей на основе OpenSSL версии 3 и выше с помощью кода C/C++?
Спасибо
Цель: внедрение механизма (например, добавление имени алгоритма шифрования и размера ключа) ) для хранения дополнительной информации для каждой записи (PKCS#12 SafeBag) списка хранилищ ключей с помощью C/C++ и создадим такую функцию:
int PKCS12_add_algorithmNameAndKeySize(PKCS12_SAFEBAG *bag, const char *localKeyID, const char *algorithmname, int keysize);
Подробнее здесь: https://stackoverflow.com/questions/793 ... size-for-e