6 SSLeay_add_all_digests();
10 MODULE = OpenSSL::MD PACKAGE = OpenSSL::MD PREFIX = p5_EVP_MD_
15 # OpenSSL::MD::new(name) name= md2, md5, sha, sha1, or mdc2
16 # md->name() - returns the name
17 # md->init() - reinitalises the digest
18 # md->update(data) - adds more data to digest
19 # digest=md->final() - returns digest
29 if ((items == 1) && SvPOK(ST(0)))
31 else if ((items == 2) && SvPOK(ST(1)))
34 croak("Usage: OpenSSL::MD::new(type)");
35 PUSHs(sv_newmortal());
36 md=EVP_get_digestbyname(name);
39 ctx=malloc(sizeof(EVP_MD_CTX));
40 EVP_DigestInit(ctx,md);
41 sv_setref_pv(ST(0), "OpenSSL::MD", (void*)ctx);
48 RETVAL.dptr=OBJ_nid2ln(EVP_MD_type(EVP_MD_CTX_type(ctx)));
49 RETVAL.dsize=strlen(RETVAL.dptr);
57 EVP_DigestInit(ctx,EVP_MD_CTX_type(ctx));
60 p5_EVP_MD_update(ctx, in)
64 EVP_DigestUpdate(ctx,in.dptr,in.dsize);
70 char md[EVP_MAX_MD_SIZE];
73 EVP_DigestFinal(ctx,md,&len);
80 p5_EVP_MD_DESTROY(ctx)