AES128

 view release on metacpan or  search on metacpan

AES128.xs  view on Meta::CPAN


		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];

AES128.xs  view on Meta::CPAN

		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

ppport.h  view on Meta::CPAN

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|||

ppport.h  view on Meta::CPAN

{
    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 )