openssl之EVP系列之11---EVP_Verify系列函数介绍

    ---依据openssl doc/crypto/EVP_VerifyInit.pod翻译和自己的理解写成

    (作者:DragonKing, Mail: wzhah@263.net ,公布于:http://openssl.126.com之openssl专业论坛,版本号:openssl-0.9.7)

    跟EVP_Sign系列函数一样,EVP_Verify系列函数的前两步(初始化和信息摘要处理)跟信息摘要算法是一样的,由于签名验证的过程就是先对信息进行信息摘要,然后再将发来的摘要信息解密后进行比較的过程,其定义例如以下(openssl/evp.h):

     int EVP_VerifyInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);

     int EVP_VerifyUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);

     int EVP_VerifyFinal(EVP_MD_CTX *ctx,unsigned char *sigbuf, unsigned int siglen,EVP_PKEY *pkey);

    

     int EVP_VerifyInit(EVP_MD_CTX *ctx, const EVP_MD *type);

    【EVP_VerifyInit_ex】

    该函数是一个宏定义函数,事实上际定义例如以下:

    #define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c)

    所以,其功能和用法跟前面介绍的EVP_DigestInit_ex函数是一样的。

该函数使用參数impl所提供的算法库对验证结构ctx进行设置。在调用本函数之前。參数ctx必须经过调用EVP_MD_CTX_init进行初始化。成功返回1。失败返回0。

【EVP_VerifyUpdate】

    该函数也是一个宏定义函数,事实上际定义例如以下:

    #define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)

    所以,其功能和用法跟前面介绍的EVP_DigestUpdate函数是同样的。

该函数将參数d中的cnt字节数据经过信息摘要计算后保存到ctx中。该函数能够进行多次调用,以处理很多其它的数据。

成功调用返回1,失败返回0。

    【EVP_VerifyFinal】

    该函数使用公钥pkey和ctx结构里面的信息验证sigbuf里面的数据的签名。其实。该函数先调用EVP_MD_CTX_copy_ex函数将原来的ctx拷贝一份,然后调用EVP_DigestFinal_ex函数完毕拷贝的ctx的信息摘要计算。最后才使用公钥进行签名的验证工作。

    由于该函数实际上处理的是原来ctx函数的一个拷贝,所以原来的ctx结构还能够调用EVP_VerifyUpdate和EVP_VerifyFinal函数进行很多其它的数据处理和签名验证工作。

在使用完之后,ctx必须使用EVP_MD_CTX_cleanup函数释放内存。否则就会导致内存泄漏。

此外,至于信息摘要算法和签名算法的关联的关系,请參照信息摘要算法部分的说明。

    该函数调用成功返回1。失败则返回0或-1。

    【EVP_VerifyInit】

    该函数使用缺省的实现算法对ctx结构进行初始化。也是一个宏定义函数,其定义例如以下:

    #define EVP_VerifyInit(a,b) EVP_DigestInit(a,b)

    所以跟EVP_DigestInit函数功能和使用方法是一样的。

openssl之EVP系列之11---EVP_Verify系列函数介绍的更多相关文章

  1. JMeter36个内置函数及11个新增函数介绍

    JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试.了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴. J ...

  2. JavaWeb网上图书商城完整项目--11.项目所需jquery函数介绍

    1.下载jquery的函数包 2.强函数包添加到工程的web-root目录下 3.在jsp文件中加载js文件 <script type="text/javascript" s ...

  3. openssl之EVP系列之1---算法封装

    openssl之EVP系列之1---算法封装     ---依据openssl doc/crypto/EVP.pod翻译和自己的理解写成     (作者:DragonKing, Mail: wzhah ...

  4. openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例

    openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例     ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay. ...

  5. openssl之EVP系列之13---EVP_Open系列函数介绍

    openssl之EVP系列之13---EVP_Open系列函数介绍     ---依据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成     (作者:Dra ...

  6. openssl之EVP系列之9---EVP_Digest系列函数的一个样例

    openssl之EVP系列之9---EVP_Digest系列函数的一个样例     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译     (作者:Drago ...

  7. openssl之EVP系列之8---EVP_Digest系列函数具体解释

    openssl之EVP系列之8---EVP_Digest系列函数具体解释     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作 ...

  8. openssl之EVP系列之7---信息摘要算法结构概述

    openssl之EVP系列之7---信息摘要算法结构概述     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作者:Dragon ...

  9. openssl之EVP系列之12---EVP_Seal系列函数介绍

    openssl之EVP系列之12---EVP_Seal系列函数介绍     ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成     (作者:Dra ...

随机推荐

  1. C语言的文件处理

    所谓“文件”一般指存储在外部介质上数据的集合.根据数据的组织形式,可分为ASCII文件和二进制文件.ASCII文件,又称为文本文件,它的每一个字节存放一个ASCII代码,代表一个字符.二进制文件是把内 ...

  2. [git 学习篇]远程创库

    实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交. 完全 ...

  3. Flowerpot(单调队列)

    描述 Farmer John has been having trouble making his plants grow, and needs your help to water them pro ...

  4. Wannafly挑战赛9

    链接:https://www.nowcoder.com/acm/contest/71/A来源:牛客网 找一找 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5 ...

  5. Swift 3:新的访问控制fileprivate和open

    在swift 3中新增加了两种访问控制权限 fileprivate和 open.下面将对这两种新增访问控制做详细介绍. fileprivate 在原有的swift中的 private其实并不是真正的私 ...

  6. 【Luogu】P3746组合数问题(矩阵)

    题目链接 哇我一个活人的智商被题目碾压了 可以把问题转化为有nk个物品,问拿i件物品的方案数有多少种,其中i%k=r. 然后矩阵乘法加速DP即可. #include<cstdio> #in ...

  7. java面试题之如何判断一个对象是否应该被回收

    常用的有两种办法: 引用计数法:(无法解决对象循环引用的问题,导致对象无法被回收) 可达性分析:

  8. 区间合并 POJ3667+HDU4553

    两道题都是线段树的区间合并 lsum, rsum分别表示左/右端点 开始向右/左 符合条件的元素的最长连续长度 sum表示这个区间的符合条件的元素的最长连续长度 所以pushUp可写: void pu ...

  9. Linux System Programming 学习笔记(十一) 时间

    1. 内核提供三种不同的方式来记录时间 Wall time (or real time):actual time and date in the real world Process time:the ...

  10. poj 1410 Intersection 线段相交

    题目链接 题意 判断线段和矩形是否有交点(矩形的范围是四条边及内部). 思路 判断线段和矩形的四条边有无交点 && 线段是否在矩形内. 注意第二个条件. Code #include & ...