⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 openssl_digest.xs

📁 一个用于点对点传输加密的工具包源码
💻 XS
字号:
#include "openssl.h"int boot_digest()	{	SSLeay_add_all_digests();	return(1);	}MODULE =  OpenSSL::MD	PACKAGE = OpenSSL::MD	PREFIX = p5_EVP_MD_PROTOTYPES: ENABLEVERSIONCHECK: DISABLE# OpenSSL::MD::new(name) name= md2, md5, sha, sha1, or mdc2#	md->name() - returns the name#	md->init() - reinitalises the digest#	md->update(data) - adds more data to digest#	digest=md->final() - returns digest#voidp5_EVP_MD_new(...)	PREINIT:		EVP_MD_CTX *ctx;		const EVP_MD *md;		char *name;	PPCODE:		if ((items == 1) && SvPOK(ST(0)))			name=SvPV(ST(0),na);		else if ((items == 2) && SvPOK(ST(1)))			name=SvPV(ST(1),na);		else			croak("Usage: OpenSSL::MD::new(type)");		PUSHs(sv_newmortal());		md=EVP_get_digestbyname(name);		if (md != NULL)			{			ctx=malloc(sizeof(EVP_MD_CTX));			EVP_DigestInit(ctx,md);			sv_setref_pv(ST(0), "OpenSSL::MD", (void*)ctx);			}datump5_EVP_MD_name(ctx)	EVP_MD_CTX *ctx	CODE:		RETVAL.dptr=OBJ_nid2ln(EVP_MD_type(EVP_MD_CTX_type(ctx)));		RETVAL.dsize=strlen(RETVAL.dptr);	OUTPUT:		RETVAL	voidp5_EVP_MD_init(ctx)	EVP_MD_CTX *ctx	CODE:		EVP_DigestInit(ctx,EVP_MD_CTX_type(ctx));voidp5_EVP_MD_update(ctx, in)	EVP_MD_CTX *ctx	datum in	CODE:		EVP_DigestUpdate(ctx,in.dptr,in.dsize);datump5_EVP_MD_final(ctx)	EVP_MD_CTX *ctx	PREINIT:		char md[EVP_MAX_MD_SIZE];		int len;	CODE:		EVP_DigestFinal(ctx,md,&len);		RETVAL.dptr=md;		RETVAL.dsize=len;	OUTPUT:		RETVALvoidp5_EVP_MD_DESTROY(ctx)	EVP_MD_CTX *ctx	CODE:	free((char *)ctx);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -