В библиотеке openssl я вижу два способа записи открытого ключа в файл:
int PEM_write_RSAPublicKey(FILE *fp, RSA *x);
int PEM_write_RSA_PUBKEY(FILE *fp, RSA *x);
В документации я вижу:
Функции RSAPublicKey обрабатывают открытый ключ RSA с использованием RSA
состав. Открытый ключ кодируется с использованием PKCS # 1 RSAPublicKey
состав.Функции RSA_PUBKEY также обрабатывают открытый ключ RSA с использованием RSA
состав. Однако открытый ключ кодируется с использованием
SubjectPublicKeyInfo структура и возникает ошибка, если открытый ключ
это не RSA
Но я не понимаю, что это
SubjectPublicKeyInfo
И в чем принципиальные отличия двух методов!
SubjectPublicKeyInfo — структура ASN1 для открытых ключей, которая описана в rfc 3280 (инфраструктура открытых ключей Internet X.509). Этот формат фактически содержит идентификатор алгоритма открытого ключа и самого открытого ключа. И в этом случае этот открытый ключ форматируется в соответствии со стандартом pkcs1. Таким образом, формат X.509 является более высокоуровневым форматом, он описывает не только открытый ключ RSA, но и общий ключ в целом.
Других решений пока нет …