openssl之EVP系列之11---EVP_Verify系列函数介绍
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系列函数介绍的更多相关文章
- JMeter36个内置函数及11个新增函数介绍
JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试.了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴. J ...
- JavaWeb网上图书商城完整项目--11.项目所需jquery函数介绍
1.下载jquery的函数包 2.强函数包添加到工程的web-root目录下 3.在jsp文件中加载js文件 <script type="text/javascript" s ...
- openssl之EVP系列之1---算法封装
openssl之EVP系列之1---算法封装 ---依据openssl doc/crypto/EVP.pod翻译和自己的理解写成 (作者:DragonKing, Mail: wzhah ...
- openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例
openssl之EVP系列之6---EVP_Encrypt系列函数编程架构及样例 ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay. ...
- openssl之EVP系列之13---EVP_Open系列函数介绍
openssl之EVP系列之13---EVP_Open系列函数介绍 ---依据openssl doc/crypto/EVP_OpenInit.pod翻译和自己的理解写成 (作者:Dra ...
- openssl之EVP系列之9---EVP_Digest系列函数的一个样例
openssl之EVP系列之9---EVP_Digest系列函数的一个样例 ---依据openssl doc/crypto/EVP_DigestInit.pod翻译 (作者:Drago ...
- openssl之EVP系列之8---EVP_Digest系列函数具体解释
openssl之EVP系列之8---EVP_Digest系列函数具体解释 ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成 (作 ...
- openssl之EVP系列之7---信息摘要算法结构概述
openssl之EVP系列之7---信息摘要算法结构概述 ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成 (作者:Dragon ...
- openssl之EVP系列之12---EVP_Seal系列函数介绍
openssl之EVP系列之12---EVP_Seal系列函数介绍 ---依据openssl doc/crypto/EVP_SealInit.pod翻译和自己的理解写成 (作者:Dra ...
随机推荐
- Leetcode 421.数组中两数的最大异或值
数组中两数的最大异或值 给定一个非空数组,数组中元素为 a0, a1, a2, … , an-1,其中 0 ≤ ai < 231 . 找到 ai 和aj 最大的异或 (XOR) 运算结果,其中0 ...
- [python][oldboy]字符串 format
#coding=utf8 def format(self, *args, **kwargs): # known special case of str.format """ ...
- csa Round #70
Digit Holes Time limit: 1000 msMemory limit: 256 MB When writing digits, some of them are consider ...
- javascript图片放大镜效果展示
javascript图片放大镜效果展示 <!DOCTYPE html> <html> <head lang="en"> <meta cha ...
- P3285 松鼠的新家 (树链剖分)
题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在”树“上. 松鼠想邀请小熊维尼前 ...
- java面试题之如何判断一个对象是否应该被回收
常用的有两种办法: 引用计数法:(无法解决对象循环引用的问题,导致对象无法被回收) 可达性分析:
- testng依赖
Testng提供了两种依赖实现 1.强制依赖:某个测试用例之前需要执行的依赖链中如果有一个失败,那么接下来所有的测试都不会被执行 2.顺序依赖(软依赖):顺序依赖的用处更多是用来检测一个测试链是否按照 ...
- 单线程实现并发——协程,gevent模块
一 并发的本质 1 切换 2 保存状态 二 协程的概念 协程,又称微线程,纤程.英文名Coroutine.单线程下实现并发,用户从应用程序级别控制单线程下任务的切换,注意一定是遇到I/O才切. 协程的 ...
- 使用docker Maven插件本地构建docker镜像并发布到远程服务器
1.登录网站https://start.spring.io/,生成一个基本的SpringBoot应用. 2.将应用导入Eclipse IDE并创建Application类.目录结构如下: Applic ...
- luogu 1004 方格取数 dp
题目链接 题意 设有N*N的方格图(N<=9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0.如下图所示: A 0 0 0 0 0 0 0 0 0 0 13 0 0 6 0 0 ...