下面代码实现了调用CSP实现数据的签名和验签,函数中有些细节没有处理好,但总体流程上应该是没有问题的,测试通过:
//本程序通过调用CSP实现签名及验签功能
#include "stdafx.h"
#include <windows.h>
#include <wincrypt.h>
#define IN
#define OUT
/*****************************************************
*函数名:SignHash
*功 能:对一段数据进行哈稀签名,并导出公钥
*入 参:IN BYTE* pData, //欲进行哈稀签名的数据
IN DWORD dwDataLen, //数据长度
*出 参:OUT BYTE** pSignature, //哈稀签名数据的地址,使用完后由调用者释放
OUT DWORD* dwSigLen, //签名实际长度
OUT BYTE** pPublicKey, //公钥数据的地址,使用完后由调用者释放
OUT DWORD* dwPubKeyLen);//公钥实际长度
*返回值:BOOL,TRU为签名成功,FALSE为签名失败
******************************************************/
BOOL SignHash(IN BYTE* pData, IN DWORD dwDataLen, OUT BYTE** pSignature, OUT DWORD* dwSigLen, OUT BYTE** pPublicKey, OUT DWORD* dwPubKeyLen);
/************************************