
В 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);
Спасибо
Цель: внедрение механизма (например, добавления имени алгоритма шифрования и размера ключа) для хранения дополнительной информации для каждую запись списка хранилища ключей по Си/С++
Подробнее здесь: https://stackoverflow.com/questions/793 ... size-for-e