AES128
view release on metacpan or search on metacpan
output = (char *)malloc(text_size + padding_len);
memcpy(output, plain_text, text_size);
for(i = 0; i < padding_len; i++)
output[text_size + i] = padding_len;
AES_init_ctx_iv(&ctx, key, key + 16);
AES_CTR_xcrypt_buffer(&ctx, output, text_size + padding_len);
RETVAL = newSVpv(output, text_size + padding_len);
free(output);
OUTPUT:
RETVAL
SV *
AES128_CTR_decrypt(SV *sv_cipher_text, SV *sv_secret)
CODE:
STRLEN text_size, secret_size;
char *cipher_text, *secret;
struct AES_ctx ctx;
char key[32];
secret = (char *)SvPVbyte(sv_secret, secret_size);
if(text_size % 16 != 0)
croak("Corrupted cipher text!");
make_aes_key(key, secret, secret_size);
AES_init_ctx_iv(&ctx, key, key + 16);
AES_CTR_xcrypt_buffer(&ctx, cipher_text, text_size);
uint8_t padding_len = cipher_text[text_size -1];
RETVAL = newSVpv(cipher_text, text_size - padding_len);
OUTPUT:
RETVAL
PTR2ul|5.007001||p
PTRV|5.006000||p
PUSHMARK|||
PUSH_MULTICALL||5.024000|
PUSHi|||
PUSHmortal|5.009002||p
PUSHn|||
PUSHp|||
PUSHs|||
PUSHu|5.004000||p
PUTBACK|||
PadARRAY||5.024000|
PadMAX||5.024000|
PadlistARRAY||5.024000|
PadlistMAX||5.024000|
PadlistNAMESARRAY||5.024000|
PadlistNAMESMAX||5.024000|
PadlistNAMES||5.024000|
PadlistREFCNT||5.017004|
PadnameIsOUR|||
PadnameIsSTATE|||
{
dSP;
SV* sv = newSVpv(p, 0);
PUSHMARK(sp);
eval_sv(sv, G_SCALAR);
SvREFCNT_dec(sv);
SPAGAIN;
sv = POPs;
PUTBACK;
if (croak_on_error && SvTRUE(GvSV(errgv)))
croak(SvPVx(GvSV(errgv), na));
return sv;
}
#endif
#endif
( run in 0.251 second using v1.01-cache-2.11-cpan-d6f9594c0a5 )