PKCS#11与OpenSSLRSA加解密代码示例.docx
上传人:sy****28 上传时间:2024-09-14 格式:DOCX 页数:24 大小:43KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

PKCS#11与OpenSSLRSA加解密代码示例.docx

PKCS#11与OpenSSLRSA加解密代码示例.docx

预览

免费试读已结束,剩余 14 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HYPERLINK"http://blog.csdn.net/jinhill/archive/2010/12/16/6080855.aspx"viewplainHYPERLINK"http://blog.csdn.net/jinhill/archive/2010/12/16/6080855.aspx"copytoclipboardHYPERLINK"http://blog.csdn.net/jinhill/archive/2010/12/16/6080855.aspx"printHYPERLINK"http://blog.csdn.net/jinhill/archive/2010/12/16/6080855.aspx"?BOOL_ReadFile(LPCSTRFilePath,BYTE*FileContent,DWORD*FileLength){FILE*stream=NULL;DWORDContentLen=0;DWORDReadLen=0;if((FilePath==NULL)||(FileLength==NULL)){returnFALSE;}stream=fopen(FilePath,"rb");if(stream==NULL){returnFALSE;}fseek(stream,0,SEEK_END);ContentLen=ftell(stream);fseek(stream,0,SEEK_SET);if((FileContent==NULL)||(*FileLength<ContentLen)){*FileLength=ContentLen;fclose(stream);returnFALSE;}*FileLength=ContentLen;ReadLen=fread(FileContent,1,ContentLen,stream);fclose(stream);if(ReadLen!=ContentLen){returnFALSE;}returnTRUE;}BOOLOpenSession(CK_SESSION_HANDLE*Session){CK_RVResult=CKR_OK;CK_SESSION_HANDLETmpSession=0;if(Session==NULL){returnFALSE;}Result=C_Initialize(NULL_PTR);if(Result!=CKR_OK){returnFALSE;}Result=C_OpenSession(0,CKF_RW_SESSION|CKF_SERIAL_SESSION,NULL,NULL,&TmpSession);if(Result!=CKR_OK){C_Finalize(NULL_PTR);returnFALSE;}Result=C_Login(TmpSession,CKU_USER,(CK_UTF8CHAR_PTR)"12345678",8);if(Result!=CKR_OK){C_CloseSession(TmpSession);C_Finalize(NULL_PTR);returnFALSE;}*Session=TmpSession;returnTRUE;}BOOLCloseSession(CK_SESSION_HANDLESession){C_Logout(Session);C_CloseSession(Session);C_Finalize(NULL_PTR);returnTRUE;}BOOLImportPubKey(CK_SESSION_HANDLESession){BIO*PubFile=NULL;RSA*RSAPubKey=NULL;CK_RVResult=CKR_OK;CK_OBJECT_CLASSobjectclass=CKO_PUBLIC_KEY;CK_KEY_TYPEkeytype=CKK_RSA;CK_BYTEtruevalue=TRUE;CK_BYTEfalsevalue=FALSE;CK_BYTEpublab[]="PubKey";CK_VOID_PTRRSA_PUB_N=NULL;CK_VOID_PTRRSA_PUB_E=NULL;CK_OBJECT_HANDLEPubHandle=0;CK_ULONGObjCount=0;PubFile=BIO_new(BIO_s_file());if(PubFile==NULL){returnFALSE;}Result=BIO_read_filen