У меня есть архив, который я хочу подписать, и я хочу проверить его на C с OpenSSL.Как использовать OpenSSL для проверки подписи * .SF/* .RSA, созданной Jarsigner
Чтобы подписать архив, jarsigner казался хорошей идеей, учитывая, что мне не нужно было что-то создавать самостоятельно, и, похоже, он отлично работает. С OpenSSL я могу проверить различные значения дайджеста, но я не могу заставить его проверить подпись * .SF * .RSA.
шаги я взял:
Создание хранилища ключей
$ keytool -genkeypair -alias <alias> -keystore <keystore> -validity 360 -keyalg RSA -keysize 2048 -sigalg SHA256withRSA
Подписать архив
$ jarsigner -keystore <keystore> -signedjar <signedFile>.zip <fileToSign>.zip <alias>
отрезала кода проверки C
BIO *in = NULL, *indata = NULL;
PKCS7 *p7 = NULL;
int flags = PKCS7_DETACHED;
flags |= PKCS7_NOVERIFY;
flags |= PKCS7_BINARY;
OpenSSL_add_all_algorithms();
/* load *.RSA (PKCS7) file */
if (!(in = BIO_new_file(path, "r"))) {
printf ("Can't open input file %s\n", path);
status = FAILURE;
}
if (!(p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL))) {
printf ("Error in reading PKCS7 PEM file.\n");
status = FAILURE;
}
/* load *.SF file */
if (!(indata = BIO_new_file(path, "r"))) {
printf("Can't read content file %s\n", path);
status = FAILURE;
}
/* validate signature */
if (PKCS7_verify(p7, NULL, NULL, indata, NULL, flags))
printf("Signature verification successful!\n");
else {
printf("Signature verification failed!\n");
status = FAILURE;
}
Ошибка
Он терпит неудачу в "PEM_read_bio_PKCS7 (...)".
Я ищу либо способ проверки его в терминале, либо с помощью C с использованием OpenSSL. C является предпочтительным;), но я всегда могу преобразовать команду в код, если вы знаете только, как это сделать вручную.