本文主要是介绍openssl3.2 - 官方demo学习 - cms - cms_dec.c,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- openssl3.2 - 官方demo学习 - cms - cms_dec.c
- 概述
- 笔记
- END
openssl3.2 - 官方demo学习 - cms - cms_dec.c
概述
对用证书加密的CMS数据进行解密(也需要加密时用的那个证书)
笔记
/*! \file cms_dec.c
* \note openssl3.2 - 官方demo学习 - cms - cms_dec.c
对用证书加密的CMS数据进行解密(也需要加密时用的那个证书)
*//** Copyright 2008-2023 The OpenSSL Project Authors. All Rights Reserved.** Licensed under the Apache License 2.0 (the "License"). You may not use* this file except in compliance with the License. You can obtain a copy* in the file LICENSE in the source distribution or at* https://www.openssl.org/source/license.html*//* Simple S/MIME decryption example */
#include <openssl/pem.h>
#include <openssl/cms.h>
#include <openssl/err.h>#include "my_openSSL_lib.h"int main(int argc, char **argv)
{BIO *in = NULL, *out = NULL, *tbio = NULL;X509 *rcert = NULL;EVP_PKEY *rkey = NULL;CMS_ContentInfo *cms = NULL;int ret = EXIT_FAILURE;OpenSSL_add_all_algorithms();ERR_load_crypto_strings();/* Read in recipient certificate and private key *//*! 读入收件人证书和私钥 */tbio = BIO_new_file("signer.pem", "r");if (!tbio)goto err;rcert = PEM_read_bio_X509(tbio, NULL, 0, NULL);BIO_reset(tbio);rkey = PEM_read_bio_PrivateKey(tbio, NULL, 0, NULL);if (!rcert || !rkey)goto err;/* Open S/MIME message to decrypt */in = BIO_new_file("smencr.txt", "r");if (!in)goto err;/* Parse message */cms = SMIME_read_CMS(in, NULL);if (!cms)goto err;out = BIO_new_file("decout.txt", "w");if (!out)goto err;/* Decrypt S/MIME message */if (!CMS_decrypt(cms, rkey, rcert, NULL, out, 0))goto err;printf("Decryption Successful\n");ret = EXIT_SUCCESS;err:if (ret != EXIT_SUCCESS) {fprintf(stderr, "Error Decrypting Data\n");ERR_print_errors_fp(stderr);}CMS_ContentInfo_free(cms);X509_free(rcert);EVP_PKEY_free(rkey);BIO_free(in);BIO_free(out);BIO_free(tbio);return ret;
}
END
这篇关于openssl3.2 - 官方demo学习 - cms - cms_dec.c的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!