chiark / gitweb /
Add fill for encryption schemes.
authormdw <mdw>
Sun, 21 Nov 2004 03:32:32 +0000 (03:32 +0000)
committermdw <mdw>
Sun, 21 Nov 2004 03:32:32 +0000 (03:32 +0000)
Catacomb/Crypto.pm
algorithms.xs

index c4e886d2f1f25b0aadce4a74ad18fdb05a6feb2b..85c7a3cf78b064b080f0a87a8cdfad192d34475a 100644 (file)
@@ -78,6 +78,19 @@ sub encrypt {
   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;
@@ -91,6 +104,19 @@ sub decrypt {
   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;
 
index 6a01f15b0a9d79163179697551f91a4627594071..1c9f5f16941ddc3c3aaaa7467eaf1f281dad994c 100644 (file)
@@ -226,6 +226,19 @@ encrypt(c, plain)
        OUTPUT:
        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
@@ -242,6 +255,19 @@ decrypt(c, cipher)
        OUTPUT:
        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