当前位置: 首页 > news >正文

网页设计论文答辩问题企业排名优化公司

网页设计论文答辩问题,企业排名优化公司,服务器网站打开慢,门户网站首页模板下载文章目录 openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c概述笔记END openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c 概述 DSA签名(摘要算法SHA256), DSA验签(摘要算法SHA256) 签名 : 用发送者的私钥进行签名. 验签 : 用发送者的公… 文章目录 openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c概述笔记END openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.c 概述 DSA签名(摘要算法SHA256), DSA验签(摘要算法SHA256) 签名 : 用发送者的私钥进行签名. 验签 : 用发送者的公钥进行验签. 看下API调用顺序就行, 自己弄的时候, 跟着demo的流程弄就行. 对于openssl3.2, 越看越眼熟了. 笔记 /*! \file EVP_DSA_Signature_demo.c \note openssl3.2 - 官方demo学习 - signature - EVP_DSA_Signature_demo.cDSA签名(摘要算法SHA256), DSA验签(摘要算法SHA256) 签名 : 用发送者的私钥进行签名. 验签 : 用发送者的公钥进行验签.看下API调用顺序就行, 自己弄的时候, 跟着demo的流程弄就行. 对于openssl3.2, 越看越眼熟了. *//*-* Copyright 2022-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*//** An example that uses the EVP_PKEY*, EVP_DigestSign* and EVP_DigestVerify** methods to calculate public/private DSA keypair and to sign and verify* two static buffers.*/#include string.h #include stdio.h #include openssl/err.h #include openssl/evp.h #include openssl/decoder.h #include openssl/dsa.h#include my_openSSL_lib.h/** This demonstration will calculate and verify a signature of data using* the soliloquy from Hamlet scene 1 act 3*/static const char *hamlet_1 To be, or not to be, that is the question,\nWhether tis nobler in the minde to suffer\nThe slings and arrowes of outragious fortune,\nOr to take Armes again in a sea of troubles,\n ; static const char *hamlet_2 And by opposing, end them, to die to sleep;\nNo more, and by a sleep, to say we end\nThe heart-ache, and the thousand natural shocks\nThat flesh is heir to? tis a consumation\n ;static const char ALG[] DSA; static const char DIGEST[] SHA256; static const int NUMBITS 2048; static const char * const PROPQUERY NULL;static int generate_dsa_params(OSSL_LIB_CTX *libctx,EVP_PKEY **p_params) {int ret 0;EVP_PKEY_CTX *pkey_ctx NULL;EVP_PKEY *params NULL;pkey_ctx EVP_PKEY_CTX_new_from_name(libctx, ALG, PROPQUERY);if (pkey_ctx NULL)goto end;if (EVP_PKEY_paramgen_init(pkey_ctx) 0)goto end;if (EVP_PKEY_CTX_set_dsa_paramgen_bits(pkey_ctx, NUMBITS) 0)goto end;if (EVP_PKEY_paramgen(pkey_ctx, params) 0)goto end;if (params NULL)goto end;ret 1; end:if(ret ! 1) {EVP_PKEY_free(params);params NULL;}EVP_PKEY_CTX_free(pkey_ctx);*p_params params;fprintf(stdout, Params:\n);EVP_PKEY_print_params_fp(stdout, params, 4, NULL);fprintf(stdout, \n);return ret; }static int generate_dsa_key(OSSL_LIB_CTX *libctx,EVP_PKEY *params,EVP_PKEY **p_pkey) {int ret 0;EVP_PKEY_CTX *ctx NULL;EVP_PKEY *pkey NULL;ctx EVP_PKEY_CTX_new_from_pkey(libctx, params,NULL);if (ctx NULL)goto end;if (EVP_PKEY_keygen_init(ctx) 0)goto end;if (EVP_PKEY_keygen(ctx, pkey) 0)goto end;if (pkey NULL)goto end;ret 1; end:if(ret ! 1) {EVP_PKEY_free(pkey);pkey NULL;}EVP_PKEY_CTX_free(ctx);*p_pkey pkey;fprintf(stdout, Generating public/private key pair:\n);EVP_PKEY_print_public_fp(stdout, pkey, 4, NULL);fprintf(stdout, \n);EVP_PKEY_print_private_fp(stdout, pkey, 4, NULL);fprintf(stdout, \n);EVP_PKEY_print_params_fp(stdout, pkey, 4, NULL);fprintf(stdout, \n);return ret; }static int extract_public_key(const EVP_PKEY *pkey,OSSL_PARAM **p_public_key) {int ret 0;OSSL_PARAM *public_key NULL;if (EVP_PKEY_todata(pkey, EVP_PKEY_PUBLIC_KEY, public_key) ! 1)goto end;ret 1; end:if (ret ! 1) {OSSL_PARAM_free(public_key);public_key NULL;}*p_public_key public_key;return ret; }static int extract_keypair(const EVP_PKEY *pkey,OSSL_PARAM **p_keypair) {int ret 0;OSSL_PARAM *keypair NULL;if (EVP_PKEY_todata(pkey, EVP_PKEY_KEYPAIR, keypair) ! 1)goto end;ret 1; end:if (ret ! 1) {OSSL_PARAM_free(keypair);keypair NULL;}*p_keypair keypair;return ret; }static int demo_sign(OSSL_LIB_CTX *libctx,size_t *p_sig_len, unsigned char **p_sig_value,OSSL_PARAM keypair[]) {int ret 0;size_t sig_len 0;unsigned char *sig_value NULL;EVP_MD_CTX *ctx NULL;EVP_PKEY_CTX *pkey_ctx NULL;EVP_PKEY *pkey NULL;pkey_ctx EVP_PKEY_CTX_new_from_name(libctx, ALG, PROPQUERY);if (pkey_ctx NULL)goto end;if (EVP_PKEY_fromdata_init(pkey_ctx) ! 1)goto end;if (EVP_PKEY_fromdata(pkey_ctx, pkey, EVP_PKEY_KEYPAIR, keypair) ! 1)goto end;ctx EVP_MD_CTX_create();if (ctx NULL)goto end;if (EVP_DigestSignInit_ex(ctx, NULL, DIGEST, libctx, NULL, pkey, NULL) ! 1)goto end;if (EVP_DigestSignUpdate(ctx, hamlet_1, sizeof(hamlet_1)) ! 1)goto end;if (EVP_DigestSignUpdate(ctx, hamlet_2, sizeof(hamlet_2)) ! 1)goto end;/* Calculate the signature size */if (EVP_DigestSignFinal(ctx, NULL, sig_len) ! 1)goto end;if (sig_len 0)goto end;sig_value OPENSSL_malloc(sig_len);if (sig_value NULL)goto end;/* Calculate the signature */if (EVP_DigestSignFinal(ctx, sig_value, sig_len) ! 1)goto end;ret 1; end:EVP_MD_CTX_free(ctx);if (ret ! 1) {OPENSSL_free(sig_value);sig_len 0;sig_value NULL;}*p_sig_len sig_len;*p_sig_value sig_value;EVP_PKEY_free(pkey);EVP_PKEY_CTX_free(pkey_ctx);fprintf(stdout, Generating signature:\n);BIO_dump_indent_fp(stdout, sig_value, (int)sig_len, 2);fprintf(stdout, \n);return ret; }static int demo_verify(OSSL_LIB_CTX *libctx,size_t sig_len, unsigned char *sig_value,OSSL_PARAM public_key[]) {int ret 0;EVP_MD_CTX *ctx NULL;EVP_PKEY_CTX *pkey_ctx NULL;EVP_PKEY *pkey NULL;pkey_ctx EVP_PKEY_CTX_new_from_name(libctx, ALG, PROPQUERY);if (pkey_ctx NULL)goto end;if (EVP_PKEY_fromdata_init(pkey_ctx) ! 1)goto end;if (EVP_PKEY_fromdata(pkey_ctx, pkey, EVP_PKEY_PUBLIC_KEY, public_key) ! 1)goto end;ctx EVP_MD_CTX_create();if(ctx NULL)goto end;if (EVP_DigestVerifyInit_ex(ctx, NULL, DIGEST, libctx, NULL, pkey, NULL) ! 1)goto end;if (EVP_DigestVerifyUpdate(ctx, hamlet_1, sizeof(hamlet_1)) ! 1)goto end;if (EVP_DigestVerifyUpdate(ctx, hamlet_2, sizeof(hamlet_2)) ! 1)goto end;if (EVP_DigestVerifyFinal(ctx, sig_value, sig_len) ! 1)goto end;ret 1; end:EVP_PKEY_free(pkey);EVP_PKEY_CTX_free(pkey_ctx);EVP_MD_CTX_free(ctx);return ret; }int main(void) {int ret EXIT_FAILURE;OSSL_LIB_CTX *libctx NULL;EVP_PKEY *params NULL;EVP_PKEY *pkey NULL;OSSL_PARAM *public_key NULL;OSSL_PARAM *keypair NULL;size_t sig_len 0;unsigned char *sig_value NULL;libctx OSSL_LIB_CTX_new();if (libctx NULL)goto end;if (generate_dsa_params(libctx, params) ! 1)goto end;if (generate_dsa_key(libctx, params, pkey) ! 1)goto end;if (extract_public_key(pkey, public_key) ! 1)goto end;if (extract_keypair(pkey, keypair) ! 1)goto end;/* The signer signs with his private key, and distributes his public key */if (demo_sign(libctx, sig_len, sig_value, keypair) ! 1)goto end;/* A verifier uses the signers public key to verify the signature */if (demo_verify(libctx, sig_len, sig_value, public_key) ! 1)goto end;ret EXIT_SUCCESS; end:if (ret ! EXIT_SUCCESS)ERR_print_errors_fp(stderr);OPENSSL_free(sig_value);EVP_PKEY_free(params);EVP_PKEY_free(pkey);OSSL_PARAM_free(public_key);OSSL_PARAM_free(keypair);OSSL_LIB_CTX_free(libctx);return ret; } END
http://www.hkea.cn/news/14271721/

相关文章:

  • 宝安区做外贸网站的公司成品网站建设哪家好
  • 网站品牌推广设计佛山网站建设公司3lue
  • 销售网站页面特点自己做的小说网站要交税吗
  • ru后缀的网站网站的建设
  • 网站 迁移外贸网络营销的优势
  • 佛山网站建设咨询wordpress在哪里看访客
  • 肇庆建网站二级域名查询
  • 济南微信网站开发广西网站怎么制作
  • 保险业网站建设北京网站建设排名浩森宇特
  • 广州市网站设计红酒网站建设策划书
  • 郑州网站怎么推广黄页网
  • 上海做网站制作网站后台管理页面模板
  • 网站建设wordpress比较商标设计logo图案软件免费
  • 个人网站转企业网站富文本的内容怎么做
  • 克拉玛依市建设局网站苏州优秀网站设计公司
  • 免费的网站制作平台如何做网站赚
  • 专业网站建设网站价格大连网站排名优化价格
  • 物流行业网站建设市场分析西安个人建网站
  • 小程序开发 网站建设出台网站集约化建设通知
  • 做僾免费观看网站自己建设一个网站软件
  • 网站引导页在线做wordpress 图片无法上传
  • 国外做微课的网站怎么建设自己个人网站
  • 免费免费网站模板下载学网站建设去什么学校
  • 成都网站建设学习地方网站定位
  • 做网站素材在哪里找app下载量统计查询
  • 大气网络公司网站模板做网站就是做点击率
  • 国外网站 国内做镜像wordpress3.4.2漏洞
  • 网站备案证书在哪里下载做网站建设的企业
  • 北京网站备案的地址设计一站式服务
  • 做网站时已做好了ps怎么倒入简洁大气传媒公司名字