return @$x;
}
-open OUT, "> $ARGV[0]" or die "couldn't write `$ARGV[0].c': $!";
+open OUT, "> $ARGV[0]" or die "couldn't write `$ARGV[0]': $!";
print OUT <<EOF;
/* -*-c-*-
#include "catacomb-perl.h"
EOF
+print OUT cross("#include <catacomb/", \@cipher, ".h>\n"), "\n";
print OUT cross("#include <catacomb/", \@cipher, "-",
[qw(counter ofb)], ".h>\n"), "\n";
print OUT cross("#include <catacomb/", \@hash, "-mgf.h>\n"), "\n";
};
EOF
+foreach my $i (@cipher) {
+ my $I = uc($i);
+ print OUT <<EOF;
+
+static void init_$i(void *ctx, const void *k, size_t ksz) {
+ ${i}_init(ctx, k, ksz);
+}
+static void eblk_$i(const void *ctx, const void *in, void *out) {
+ uint32 w[${I}_BLKSZ / 4];
+ BLKC_LOAD(${I}, w, in);
+ ${i}_eblk(ctx, w, w);
+ BLKC_STORE(${I}, out, w);
+}
+static void dblk_$i(const void *ctx, const void *in, void *out) {
+ uint32 w[${I}_BLKSZ / 4];
+ BLKC_LOAD(${I}, w, in);
+ ${i}_dblk(ctx, w, w);
+ BLKC_STORE(${I}, out, w);
+}
+static PRPClass prp_$i = {
+ "$i",
+ ${i}_keysz, sizeof(${i}_ctx), ${I}_BLKSZ,
+ init_$i, eblk_$i, dblk_$i
+};
+EOF
+}
+
+print OUT <<EOF;
+
+PRPClass *const prptab[] = {
+EOF
+foreach my $i (@cipher) {
+ print OUT " &prp_$i,\n";
+}
+print OUT " 0\n};\n";
+
#----- That's all, folks ----------------------------------------------------