Digest-GOST
view release on metacpan or search on metacpan
ret = result;
break;
case 2:
len = base64_encode(result, src, len);
ret = result;
break;
}
return sv_2mortal(newSVpv(ret, len));
}
typedef gost_ctx *Digest__GOST;
typedef gost_ctx *Digest__GOST__CryptoPro;
MODULE = Digest::GOST PACKAGE = Digest::GOST
PROTOTYPES: ENABLE
void
gost (...)
ALIAS:
gost = 0
gost_hex = 1
gost_base64 = 2
PREINIT:
gost_ctx ctx;
int i;
unsigned char *data;
unsigned char result[32];
STRLEN len;
CODE:
rhash_gost_init(&ctx);
for (i = 0; i < items; i++) {
data = (unsigned char *)(SvPV(ST(i), len));
rhash_gost_update(&ctx, data, len);
}
rhash_gost_final(&ctx, result);
ST(0) = make_mortal_sv(aTHX_ result, 32, ix);
XSRETURN(1);
Digest::GOST
new (class)
SV *class
CODE:
Newx(RETVAL, 1, gost_ctx);
rhash_gost_init(RETVAL);
OUTPUT:
RETVAL
Digest::GOST
clone (self)
Digest::GOST self
CODE:
Newx(RETVAL, 1, gost_ctx);
Copy(self, RETVAL, 1, gost_ctx);
OUTPUT:
RETVAL
void
reset (self)
Digest::GOST self
PPCODE:
rhash_gost_init(self);
XSRETURN(1);
void
add (self, ...)
Digest::GOST self
PREINIT:
int i;
unsigned char *data;
STRLEN len;
PPCODE:
for (i = 1; i < items; i++) {
data = (unsigned char *)(SvPV(ST(i), len));
rhash_gost_update(self, data, len);
}
XSRETURN(1);
void
digest (self)
Digest::GOST self
ALIAS:
digest = 0
hexdigest = 1
b64digest = 2
PREINIT:
unsigned char result[32];
CODE:
rhash_gost_final(self, result);
rhash_gost_init(self);
ST(0) = make_mortal_sv(aTHX_ result, 32, ix);
XSRETURN(1);
void
DESTROY (self)
Digest::GOST self
CODE:
Safefree(self);
MODULE = Digest::GOST PACKAGE = Digest::GOST::CryptoPro
void
gost (...)
ALIAS:
gost = 0
gost_hex = 1
gost_base64 = 2
PREINIT:
gost_ctx ctx;
int i;
unsigned char *data;
unsigned char result[32];
STRLEN len;
CODE:
rhash_gost_cryptopro_init(&ctx);
for (i = 0; i < items; i++) {
data = (unsigned char *)(SvPV(ST(i), len));
rhash_gost_update(&ctx, data, len);
}
rhash_gost_final(&ctx, result);
ST(0) = make_mortal_sv(aTHX_ result, 32, ix);
XSRETURN(1);
Digest::GOST::CryptoPro
new (class)
SV *class
CODE:
Newx(RETVAL, 1, gost_ctx);
rhash_gost_cryptopro_init(RETVAL);
OUTPUT:
RETVAL
void
reset (self)
Digest::GOST::CryptoPro self
PPCODE:
rhash_gost_cryptopro_init(self);
XSRETURN(1);
void
digest (self)
Digest::GOST::CryptoPro self
ALIAS:
digest = 0
hexdigest = 1
b64digest = 2
PREINIT:
unsigned char result[32];
CODE:
rhash_gost_final(self, result);
rhash_gost_cryptopro_init(self);
ST(0) = make_mortal_sv(aTHX_ result, 32, ix);
XSRETURN(1);
( run in 2.100 seconds using v1.01-cache-2.11-cpan-71847e10f99 )