--- Crypt-Spritz/Spritz.xs 2015/01/10 07:48:29 1.5 +++ Crypt-Spritz/Spritz.xs 2015/01/10 08:29:06 1.6 @@ -124,19 +124,38 @@ OUTPUT: RETVAL -MODULE = Crypt::Spritz PACKAGE = Crypt::Spritz::Cipher::XOR PREFIX = spritz_cipher_xor_ +MODULE = Crypt::Spritz PACKAGE = Crypt::Spritz::Cipher PREFIX = spritz_cipher_ SV * -crypt (Crypt::Spritz self, SV *I) +encrypt (Crypt::Spritz self, SV *I) + ALIAS: + encrypt = 0 + decrypt = 1 + Crypt::Spritz::Cipher::XOR::crypt = 2 + Crypt::Spritz::AEAD::encrypt = 3 + Crypt::Spritz::AEAD::decrypt = 4 + Crypt::Spritz::AEAD::XOR::crypt = 5 CODE: + static void (*f[])(spritz_state *s, const void *I, void *O, size_t len) = { + spritz_cipher_encrypt, + spritz_cipher_decrypt, + spritz_cipher_xor_crypt, + spritz_aead_encrypt, + spritz_aead_decrypt, + spritz_aead_xor_crypt + }; { STRLEN len; char *ptr = SvPVbyte (I, len); RETVAL = alloc_pv (len); - spritz_cipher_xor_crypt (self, ptr, SvPVX (RETVAL), len); + f[ix](self, ptr, SvPVX (RETVAL), len); } OUTPUT: RETVAL +MODULE = Crypt::Spritz PACKAGE = Crypt::Spritz::Cipher::XOR PREFIX = spritz_cipher_xor_ + +# crypt == Spritz::Cipher::crypt (xs-alias) + void crypt_inplace (Crypt::Spritz self, SV *I) CODE: @@ -175,31 +194,23 @@ # add == Spritz::HASH::add (inherit) # finish == Spritz::HASH::finish (inherit) -MODULE = Crypt::Spritz PACKAGE = Crypt::Spritz::AEAD PREFIX = spritz_aead_xor_ +MODULE = Crypt::Spritz PACKAGE = Crypt::Spritz::AEAD PREFIX = spritz_aead_ -# new == Spritz::MAC::new (inherit) -# nonce == absorb_and_stop (alias) -# associated_data == absorb_and_stop (alias) -# finish == Spritz::MAC::finish (alias) +# new == Spritz::MAC::new (inherit) +# nonce == absorb_and_stop (alias) +# associated_data == absorb_and_stop (alias) +# encrypt == Spritz::Cipher::crypt (xs-alias) +# decrypt == Spritz::Cipher::crypt (xs-alias) +# finish == Spritz::MAC::finish (alias) MODULE = Crypt::Spritz PACKAGE = Crypt::Spritz::AEAD::XOR PREFIX = spritz_aead_xor_ # new == Spritz::MAC::new (inherit) # nonce == Spritz::AEAD::nonce (inherit) # associated_data == Spritz::AEAD::associated_data (inherit) +# crypt == Spritz::Cipher::crypt (xs-alias) # finish == Spritz::AEAD::finish (inherit) -SV * -crypt (Crypt::Spritz self, SV *I) - CODE: -{ - STRLEN len; char *ptr = SvPVbyte (I, len); - RETVAL = alloc_pv (len); - spritz_aead_xor_crypt (self, ptr, SvPVX (RETVAL), len); -} - OUTPUT: - RETVAL - void crypt_inplace (Crypt::Spritz self, SV *I) CODE: