return $c->encrypt($p);
}
+sub fill {
+ croak("Usage: Catacomb::CipherClass::fill(cc, k, [iv], len)")
+ if @_ < 3 || @_ > 4;
+ my ($cc, $k, $iv, $len) = @_;
+ if (@_ == 3) {
+ $len = $iv;
+ $iv = undef;
+ }
+ my $c = $cc->init($k);
+ $c->setiv($iv) if defined($iv);
+ return $c->fill($len);
+}
+
sub decrypt {
croak("Usage: Catacomb::CipherClass::decrypt(cc, k, [iv], cipher)")
if @_ < 3 || @_ > 4;
return $c->decrypt($p);
}
+sub filldecrypt {
+ croak("Usage: Catacomb::CipherClass::filldecrypt(cc, k, [iv], len)")
+ if @_ < 3 || @_ > 4;
+ my ($cc, $k, $iv, $len) = @_;
+ if (@_ == 3) {
+ $len = $iv;
+ $iv = undef;
+ }
+ my $c = $cc->init($k);
+ $c->setiv($iv) if defined($iv);
+ return $c->filldecrypt($len);
+}
+
package Catacomb::HashClass;
use Carp;
RETVAL
SV *
+fill(c, len)
+ gcipher *c
+ size_t len;
+ CODE:
+ RETVAL = NEWSV(0, len ? len : 1);
+ memset(SvPVX(RETVAL), 0, len);
+ c->ops->encrypt(c, SvPVX(RETVAL), SvPVX(RETVAL), len);
+ SvCUR_set(RETVAL, len);
+ SvPOK_on(RETVAL);
+ OUTPUT:
+ RETVAL
+
+SV *
decrypt(c, cipher)
gcipher *c
SV *cipher
RETVAL
SV *
+filldecrypt(c, len)
+ gcipher *c
+ size_t len;
+ CODE:
+ RETVAL = NEWSV(0, len ? len : 1);
+ memset(SvPVX(RETVAL), 0, len);
+ c->ops->decrypt(c, SvPVX(RETVAL), SvPVX(RETVAL), len);
+ SvCUR_set(RETVAL, len);
+ SvPOK_on(RETVAL);
+ OUTPUT:
+ RETVAL
+
+SV *
setiv(c, iv)
gcipher *c
SV *iv