From b39fadb608dd52cbd6fc8a11001661083d8d078b Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Fri, 2 Nov 2018 22:15:14 +0000 Subject: [PATCH] symm/ocb1.h, symm/pmac1.h, ...: Implement PMAC1 and OCB1. Also bump the required mLib version to 2.3.0, for . --- configure.ac | 2 +- debian/control | 2 +- symm/Makefile.am | 7 +- symm/ocb.c | 73 ++++++ symm/ocb.h | 117 +++++++++ symm/ocb1-def.h | 670 ++++++++++++++++++++++++++++++++++++++++++++++++++ symm/ocb1.h | 345 ++++++++++++++++++++++++++ symm/pmac1-def.h | 371 ++++++++++++++++++++++++++++ symm/pmac1.h | 119 +++++++++ symm/t/blowfish | 222 +++++++++++++++++ symm/t/cast128 | 222 +++++++++++++++++ symm/t/cast256.local | 222 +++++++++++++++++ symm/t/des | 114 +++++++++ symm/t/des3 | 222 +++++++++++++++++ symm/t/desx | 222 +++++++++++++++++ symm/t/idea | 60 +++++ symm/t/mars.local | 222 +++++++++++++++++ symm/t/noekeon | 60 +++++ symm/t/rc2 | 222 +++++++++++++++++ symm/t/rc5 | 222 +++++++++++++++++ symm/t/rijndael.local | 431 ++++++++++++++++++++++++++++++++ symm/t/rijndael192 | 222 +++++++++++++++++ symm/t/rijndael256 | 222 +++++++++++++++++ symm/t/safer | 114 +++++++++ symm/t/safersk | 114 +++++++++ symm/t/serpent.local | 222 +++++++++++++++++ symm/t/skipjack | 60 +++++ symm/t/square | 168 +++++++++++++ symm/t/tea | 222 +++++++++++++++++ symm/t/twofish.local | 222 +++++++++++++++++ symm/t/xtea | 222 +++++++++++++++++ utils/advmodes | 139 ++++++++++- 32 files changed, 6068 insertions(+), 6 deletions(-) create mode 100644 symm/ocb.c create mode 100644 symm/ocb.h create mode 100644 symm/ocb1-def.h create mode 100644 symm/ocb1.h create mode 100644 symm/pmac1-def.h create mode 100644 symm/pmac1.h diff --git a/configure.ac b/configure.ac index a2af5bf2..db098dc1 100644 --- a/configure.ac +++ b/configure.ac @@ -403,7 +403,7 @@ dnl Set the master libraries we need. AC_SUBST([CATACOMB_LIBS]) dnl Necessary support libraries. -PKG_CHECK_MODULES([mLib], [mLib >= 2.2.2.1]) +PKG_CHECK_MODULES([mLib], [mLib >= 2.3.0]) AM_CFLAGS="$AM_CFLAGS $mLib_CFLAGS" dnl-------------------------------------------------------------------------- diff --git a/debian/control b/debian/control index 52437a93..4401de17 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: catacomb Section: libs Priority: extra Build-Depends: debhelper (>= 9), python, valgrind, pkg-config, - mlib-dev (>= 2.2.2.1) + mlib-dev (>= 2.3.0) Maintainer: Mark Wooding Standards-Version: 3.1.1 diff --git a/symm/Makefile.am b/symm/Makefile.am index 1aa18c0a..887cbf4d 100644 --- a/symm/Makefile.am +++ b/symm/Makefile.am @@ -317,11 +317,12 @@ BLKCCIPHERMODES += cbc cfb ecb ofb BLKCCIPHERMODES += counter ## CMAC mode. -BLKCMACMODES += cmac +BLKCMACMODES += cmac pmac1 ## Various AEAD modes. -BLKCAEADMODES += ccm eax gcm -libsymm_la_SOURCES += ccm.c gcm.c +pkginclude_HEADERS += ocb.h +BLKCAEADMODES += ccm eax gcm ocb1 +libsymm_la_SOURCES += ccm.c gcm.c ocb.c ###-------------------------------------------------------------------------- ### Hash functions. diff --git a/symm/ocb.c b/symm/ocb.c new file mode 100644 index 00000000..1c97215b --- /dev/null +++ b/symm/ocb.c @@ -0,0 +1,73 @@ +/* -*-c-*- + * + * Common definitions for OCB and related modes + * + * (c) 2018 Straylight/Edgeware + */ + +/*----- Licensing notice --------------------------------------------------* + * + * This file is part of Catacomb. + * + * Catacomb is free software: you can redistribute it and/or modify it + * under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Catacomb is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with Catacomb. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +/*----- Header files ------------------------------------------------------*/ + +#include "config.h" + +#include "ocb.h" + +/*----- Main code ---------------------------------------------------------*/ + +/* --- @ocb_ctz@, @ocb_ctzl@ --- * + * + * Arguments: @unsigned i@ or @unsigned long i@ = operand, assumed nonzero + * + * Returns: The number of trailing zero bits in @i@, or nonsense if + * %$i = 0$%. + */ + +unsigned ocb_ctz(unsigned i) +{ + unsigned n = 0; + + if (!(i&0x00ff)) { n += 8; i >>= 8; } + if (!(i&0x000f)) { n += 4; i >>= 4; } + if (!(i&0x0003)) { n += 2; i >>= 2; } + if (!(i&0x0001)) { n += 1; i >>= 1; } + return (n); +} + +unsigned ocb_ctzl(unsigned long i) +{ + unsigned n = 0; + +#if ULONG_BITS > 64 + while (!(i&0xfffffffffffffffful)) { n += 64; i >>= 64; } +#endif +#if ULONG_BITS > 32 + if (!(i&0xffffffff)) { n += 32; i >>= 32; } +#endif + if (!(i&0xffff)) { n += 16; i >>= 16; } + if (!(i&0x00ff)) { n += 8; i >>= 8; } + if (!(i&0x000f)) { n += 4; i >>= 4; } + if (!(i&0x0003)) { n += 2; i >>= 2; } + if (!(i&0x0001)) { n += 1; i >>= 1; } + return (n); +} + +/*----- That's all, folks -------------------------------------------------*/ diff --git a/symm/ocb.h b/symm/ocb.h new file mode 100644 index 00000000..d87aed35 --- /dev/null +++ b/symm/ocb.h @@ -0,0 +1,117 @@ +/* -*-c-*- + * + * Common definitions for OCB and related modes + * + * (c) 2018 Straylight/Edgeware + */ + +/*----- Licensing notice --------------------------------------------------* + * + * This file is part of Catacomb. + * + * Catacomb is free software: you can redistribute it and/or modify it + * under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Catacomb is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with Catacomb. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#ifndef CATACOMB_OCB_H +#define CATACOMB_OCB_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*----- Header files ------------------------------------------------------*/ + +#include + +#include +#include + +/*----- Constants ---------------------------------------------------------*/ + +/* The number of offsets to maintain. Rather than calculate and store all + * possible offset values in advance, or calculate new ones on demand (and + * have to allocate space for them), we calculate a number in advance, and + * determine any others every time they're needed. If we calculate the first + * %$n$% offsets only, then we spend %$i - n + 1$% time calculating offset + * %$L_i$% when %$i \ge n$%. But the offset %$L_i$% is used only for a + * %$2^{-i-1}$% fraction of the blocks. Summing up this geometric series + * shows us that we add only a small constant overhead, and save storage + * space for many offsets. + */ +#define OCB_NCALC 16 +#define OCB_CALCMASK ((1ul << OCB_NCALC) - 1) + +/*----- Functions provided ------------------------------------------------*/ + +/* --- @ocb_ctz@, @ocb_ctzl@ --- * + * + * Arguments: @unsigned i@ or @unsigned long i@ = operand, assumed nonzero + * + * Returns: The number of trailing zero bits in @i@, or nonsense if + * %$i = 0$%. + */ + +extern unsigned ocb_ctz(unsigned /*i*/); +extern unsigned ocb_ctzl(unsigned long /*i*/); + +#if GCC_VERSION_P(3, 4) +# define OCB_CTZ(i) __builtin_ctz(i) +# define OCB_CTZL(i) __builtin_ctzl(i) +#else +# define OCB_CTZ(i) ocb_ctz(i) +# define OCB_CTZL(i) ocb_ctzl(i) +#endif + +/* --- @OCB_OFFSET@ --- * + * + * Arguments: @PRE@ = block cipher prefix + * @uint32 *o@ = pointer to offset accumulator + * @uint32 (*l)[PRE_BLKSZ]@ = pointer to offset mask table + * @unsigned long i@ = block index + * + * Returns: --- + * + * Use: Update the per-block offset for Grey-code-based OCB + * variants. On entry, @o@ is assumed to hold the offset for + * block @i - 1@; on exit @o@ is updated to hold the offset for + * block @i@. + */ + +#define OCB_OFFSET(PRE, o, l, i) do { \ + uint32 (*_l)[PRE##_BLKSZ/4] = (l); \ + uint32 *_o = (o); \ + unsigned long _i = (i); \ + unsigned _j; \ + \ + if (_i&OCB_CALCMASK) { \ + _j = OCB_CTZ(_i); \ + BLKC_XMOVE(PRE, _o, _l[_j]); \ + } else { \ + uint32 _t[PRE##_BLKSZ]; \ + _j = OCB_CTZL(_i) - OCB_NCALC; \ + BLKC_BLSHIFT(PRE, IRRED, _t, _l[OCB_NCALC - 1]); \ + while (_j--) BLKC_BLSHIFT(PRE, IRRED, _t, _t); \ + BLKC_XMOVE(PRE, _t, _l[_j]); \ + } \ +} while (0) + +/*----- That's all, folks -------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/symm/ocb1-def.h b/symm/ocb1-def.h new file mode 100644 index 00000000..7c7eb295 --- /dev/null +++ b/symm/ocb1-def.h @@ -0,0 +1,670 @@ +/* -*-c-*- + * + * The OCB1 authenticated encryption mode + * + * (c) 2018 Straylight/Edgeware + */ + +/*----- Licensing notice --------------------------------------------------* + * + * This file is part of Catacomb. + * + * Catacomb is free software: you can redistribute it and/or modify it + * under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Catacomb is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with Catacomb. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#ifndef CATACOMB_OCB1_DEF_H +#define CATACOMB_OCB1_DEF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*----- Header files ------------------------------------------------------*/ + +#include + +#include +#include + +#ifndef CATACOMB_ARENA_H +# include "arena.h" +#endif + +#ifndef CATACOMB_BLKC_H +# include "blkc.h" +#endif + +#ifndef CATACOMB_CT_H +# include "ct.h" +#endif + +#ifndef CATACOMB_KEYSZ_H +# include "keysz.h" +#endif + +#ifndef CATACOMB_PARANOIA_H +# include "paranoia.h" +#endif + +/*----- Macros ------------------------------------------------------------*/ + +/* --- @OCB1_DEF@ --- * + * + * Arguments: @PRE@, @pre@ = prefixes for the underlying block cipher + * + * Use: Creates an implementation for the OCB1 authenticated- + * encryption mode. + */ + +#define OCB1_DEF(PRE, pre) OCB1_DEFX(PRE, pre, #pre, #pre) + +#define OCB1_DEFX(PRE, pre, name, fname) \ + \ +const octet \ + pre##_ocb1noncesz[] = { KSZ_SET, PRE##_BLKSZ, 0 }, \ + pre##_ocb1tagsz[] = { KSZ_RANGE, PRE##_BLKSZ, 0, PRE##_BLKSZ, 1 }; \ + \ +/* --- @pre_ocb1init@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 context \ + * @const pre_ocb1key *key@ = pointer to key block \ + * @const void *n@ = pointer to nonce \ + * @size_t nsz@ = size of nonce \ + * \ + * Returns: Zero on success, @-1@ if the nonce length is bad. \ + * \ + * Use: Initialize an OCB1 operation context with a given key. \ + * \ + * The original key needn't be kept around any more. \ + */ \ + \ +int pre##_ocb1init(pre##_ocb1ctx *ctx, const pre##_ocb1key *k, \ + const void *n, size_t nsz) \ + { ctx->k = *k; return (pre##_ocb1reinit(ctx, n, nsz)); } \ + \ +/* --- @pre_ocb1reinit@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 context \ + * @const void *n@ = pointer to nonce \ + * @size_t nsz@ = size of nonce \ + * \ + * Returns: Zero on success, @-1@ if the nonce length is bad. \ + * \ + * Use: Reinitialize an OCB1 operation context, changing the \ + * nonce. \ + */ \ + \ +int pre##_ocb1reinit(pre##_ocb1ctx *ctx, const void *n, size_t nsz) \ +{ \ + if (nsz != PRE##_BLKSZ) return (-1); \ + ctx->off = 0; BLKC_ZERO(PRE, ctx->a); \ + BLKC_LOAD(PRE, ctx->o, n); BLKC_XMOVE(PRE, ctx->o, ctx->k.lmask[0]); \ + pre##_eblk(&ctx->k.ctx, ctx->o, ctx->o); ctx->i = 1; \ + return (0); \ +} \ + \ +/* --- @pre_ocb1encrypt@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 operation context \ + * @const void *src@ = pointer to plaintext message chunk \ + * @size_t sz@ = size of the plaintext \ + * @buf *dst@ = a buffer to write the ciphertext to \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Encrypts a chunk of a plaintext message, writing a \ + * chunk of ciphertext to the output buffer and updating \ + * the operation state. \ + * \ + * Note that OCB1 delays output if its input is not a \ + * whole number of blocks. This means that the output \ + * might be smaller or larger the input by up to the block \ + * size. \ + */ \ + \ +int pre##_ocb1encrypt(pre##_ocb1ctx *ctx, \ + const void *src, size_t sz, buf *dst) \ +{ \ + rsvr_state st; \ + size_t osz; \ + uint32 t[PRE##_BLKSZ/4]; \ + const octet *p; \ + octet *q; \ + \ + /* Figure out what we're going to do. */ \ + rsvr_setup(&st, &pre##_ocb1policy, ctx->b, &ctx->off, src, sz); \ + \ + /* Determine the output size and verify that there is enough \ + * space. \ + */ \ + osz = st.plan.from_rsvr + st.plan.from_input; \ + if (!osz) q = 0; \ + else { q = buf_get(dst, osz); if (!q) return (-1); } \ + \ + /* Process the input in whole blocks at a time. */ \ + RSVR_DO(&st) while ((p = RSVR_NEXT(&st, PRE##_BLKSZ)) != 0) { \ + OCB_OFFSET(PRE, ctx->o, ctx->k.lmask, ctx->i++); \ + BLKC_LOAD(PRE, t, p); BLKC_XMOVE(PRE, ctx->a, t); \ + BLKC_XMOVE(PRE, t, ctx->o); pre##_eblk(&ctx->k.ctx, t, t); \ + BLKC_XSTORE(PRE, q, t, ctx->o); q += PRE##_BLKSZ; \ + } \ + \ + /* Done. */ \ + return (0); \ +} \ + \ +/* --- @pre_ocb1decrypt@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 operation context \ + * @const void *src@ = pointer to ciphertext message chunk \ + * @size_t sz@ = size of the ciphertext \ + * @buf *dst@ = a buffer to write the plaintext to \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Decrypts a chunk of a ciphertext message, writing a \ + * chunk of plaintext to the output buffer and updating \ + * the operation state. \ + * \ + * Note that OCB1 delays output if its input is not a \ + * whole number of blocks. This means that the output \ + * might be smaller or larger the input by up to the block \ + * size. \ + */ \ + \ +int pre##_ocb1decrypt(pre##_ocb1ctx *ctx, \ + const void *src, size_t sz, buf *dst) \ +{ \ + rsvr_state st; \ + size_t osz; \ + uint32 t[PRE##_BLKSZ/4]; \ + const octet *p; \ + octet *q; \ + \ + /* Figure out what we're going to do. */ \ + rsvr_setup(&st, &pre##_ocb1policy, ctx->b, &ctx->off, src, sz); \ + \ + /* Determine the output size and verify that there is enough \ + * space. \ + */ \ + osz = st.plan.from_rsvr + st.plan.from_input; \ + if (!osz) q = 0; \ + else { q = buf_get(dst, osz); if (!q) return (-1); } \ + \ + /* Process the input in whole blocks at a time. */ \ + RSVR_DO(&st) while ((p = RSVR_NEXT(&st, PRE##_BLKSZ)) != 0) { \ + OCB_OFFSET(PRE, ctx->o, ctx->k.lmask, ctx->i++); \ + BLKC_LOAD(PRE, t, p); \ + BLKC_XMOVE(PRE, t, ctx->o); pre##_dblk(&ctx->k.ctx, t, t); \ + BLKC_XMOVE(PRE, t, ctx->o); BLKC_XMOVE(PRE, ctx->a, t); \ + BLKC_STORE(PRE, q, t); q += PRE##_BLKSZ; \ + } \ + \ + /* Done. */ \ + return (0); \ +} \ + \ +/* --- @pre_ocb1encdecfinal@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to an OCB1 context \ + * @const pre_ocb1aadctx *aad@ = pointer to AAD context, \ + * or null \ + * @buf *dst@ = buffer for remaining ciphertext \ + * @int encp@ = nonzero if we're encrypting \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Common end-of-message handling for encryption and \ + * decryption. The full-length tag is left in the \ + * context's buffer. \ + */ \ + \ +static int pre##_ocb1encdecfinal(pre##_ocb1ctx *ctx, \ + const pre##_ocb1aadctx *aad, buf *dst, \ + int encp) \ +{ \ + octet *q; \ + \ + /* Arrange space for the final output (if any). */ \ + if (!ctx->off) { q = 0; if (!BOK(dst)) return (-1); } \ + else { q = buf_get(dst, ctx->off); if (!q) return (-1); } \ + \ + /* Calculate the final offset. Mix it into the checksum before it \ + * gets clobbered. \ + */ \ + OCB_OFFSET(PRE, ctx->o, ctx->k.lmask, ctx->i++); \ + BLKC_XMOVE(PRE, ctx->a, ctx->o); \ + \ + /* Mix the magic final mask and tail length into the offset. */ \ + BLKC_XMOVE(PRE, ctx->o, ctx->k.lxinv); \ + ctx->o[PRE##_BLKSZ/4 - 1] ^= BLKC_BWORD(PRE, 8*ctx->off); \ + \ + /* If we're decrypting, then trim the end of the plaintext and fold \ + * that into the checksum. \ + */ \ + if (!encp) { \ + memset(ctx->b + ctx->off, 0, PRE##_BLKSZ - ctx->off); \ + BLKC_XLOAD(PRE, ctx->a, ctx->b); \ + } \ + \ + /* Cycle the block cipher for the last plaintext block. */ \ + pre##_eblk(&ctx->k.ctx, ctx->o, ctx->o); \ + \ + /* Fold this mask into the checksum before it gets clobbered. */ \ + BLKC_XMOVE(PRE, ctx->a, ctx->o); \ + \ + /* Encrypt the message tail. */ \ + BLKC_XLOAD(PRE, ctx->o, ctx->b); \ + BLKC_STORE(PRE, ctx->b, ctx->o); \ + if (ctx->off) memcpy(q, ctx->b, ctx->off); \ + \ + /* If we're encrypting, then trim the end of the ciphertext and fold \ + * that into the checksum. \ + */ \ + if (encp) { \ + memset(ctx->b + ctx->off, 0, PRE##_BLKSZ - ctx->off); \ + BLKC_XLOAD(PRE, ctx->a, ctx->b); \ + } \ + \ + /* Encrypt the checksum to produce a tag. */ \ + pre##_eblk(&ctx->k.ctx, ctx->a, ctx->a); \ + \ + /* If there's AAD then mix the PMAC tag in too. */ \ + if (aad && aad->off) \ + { pre##_ocb1aadtag(aad, ctx->o); BLKC_XMOVE(PRE, ctx->a, ctx->o); } \ + \ + /* Write the final tag. */ \ + BLKC_STORE(PRE, ctx->b, ctx->a); \ + \ + /* Done. */ \ + return (0); \ +} \ + \ +/* --- @pre_ocb1encryptdone@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to an OCB1 context \ + * @const pre_ocb1aadctx *aad@ = pointer to AAD context, \ + * or null \ + * @buf *dst@ = buffer for remaining ciphertext \ + * @void *tag@ = where to write the tag \ + * @size_t tsz@ = length of tag to store \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Completes an OCB1 encryption operation. The @aad@ \ + * pointer may be null if there is no additional \ + * authenticated data. OCB1 delays output, so this will \ + * cause any remaining buffered plaintext to be encrypted \ + * and written to @dst@. Anyway, the function will fail \ + * if the output buffer is broken. \ + */ \ + \ +int pre##_ocb1encryptdone(pre##_ocb1ctx *ctx, \ + const pre##_ocb1aadctx *aad, buf *dst, \ + void *tag, size_t tsz) \ +{ \ + assert(tsz <= PRE##_BLKSZ); \ + if (pre##_ocb1encdecfinal(ctx, aad, dst, 1)) return (-1); \ + memcpy(tag, ctx->b, tsz); \ + return (0); \ +} \ + \ +/* --- @pre_ocb1decryptdone@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to an OCB1 context \ + * @const pre_ocb1aadctx *aad@ = pointer to AAD context, \ + * or null \ + * @buf *dst@ = buffer for remaining plaintext \ + * @const void *tag@ = tag to verify \ + * @size_t tsz@ = length of tag \ + * \ + * Returns: @+1@ for complete success; @0@ if tag verification \ + * failed; @-1@ for other kinds of errors. \ + * \ + * Use: Completes an OCB1 decryption operation. The @aad@ \ + * pointer may be null if there is no additional \ + * authenticated data. OCB1 delays output, so this will \ + * cause any remaining buffered ciphertext to be decrypted \ + * and written to @dst@. Anyway, the function will fail \ + * if the output buffer is broken. \ + */ \ + \ +int pre##_ocb1decryptdone(pre##_ocb1ctx *ctx, \ + const pre##_ocb1aadctx *aad, buf *dst, \ + const void *tag, size_t tsz) \ +{ \ + assert(tsz <= PRE##_BLKSZ); \ + if (pre##_ocb1encdecfinal(ctx, aad, dst, 0)) return (-1); \ + else if (ct_memeq(tag, ctx->b, tsz)) return (+1); \ + else return (0); \ +} \ + \ +/* --- Generic AEAD interface --- */ \ + \ +typedef struct gactx { \ + gaead_aad a; \ + pre##_ocb1aadctx aad; \ +} gactx; \ + \ +static gaead_aad *gadup(const gaead_aad *a) \ + { gactx *aad = S_CREATE(gactx); *aad = *(gactx *)a; return (&aad->a); } \ + \ +static void gahash(gaead_aad *a, const void *h, size_t hsz) \ + { gactx *aad = (gactx *)a; pre##_ocb1aadhash(&aad->aad, h, hsz); } \ + \ +static void gadestroy(gaead_aad *a) \ + { gactx *aad = (gactx *)a; BURN(*aad); S_DESTROY(aad); } \ + \ +static const gaead_aadops gaops = \ + { &pre##_ocb1, gadup, gahash, gadestroy }; \ + \ +static gaead_aad *gaad(const pre##_ocb1key *k) \ +{ \ + gactx *aad = S_CREATE(gactx); \ + aad->a.ops = &gaops; \ + pre##_ocb1aadinit(&aad->aad, k); \ + return (&aad->a); \ +} \ + \ +typedef struct gectx { \ + gaead_enc e; \ + pre##_ocb1ctx ctx; \ +} gectx; \ + \ +static gaead_aad *geaad(gaead_enc *e) \ + { gectx *enc = (gectx *)e; return (gaad(&enc->ctx.k)); } \ + \ +static int gereinit(gaead_enc *e, const void *n, size_t nsz, \ + size_t hsz, size_t msz, size_t tsz) \ +{ \ + gectx *enc = (gectx *)e; \ + return (pre##_ocb1reinit(&enc->ctx, n, nsz)); \ +} \ + \ +static int geenc(gaead_enc *e, const void *m, size_t msz, buf *b) \ +{ \ + gectx *enc = (gectx *)e; \ + return (pre##_ocb1encrypt(&enc->ctx, m, msz, b)); \ +} \ + \ +static int gedone(gaead_enc *e, const gaead_aad *a, \ + buf *b, void *t, size_t tsz) \ +{ \ + gectx *enc = (gectx *)e; gactx *aad = (gactx *)a; \ + assert(!a || a->ops == &gaops); \ + return (pre##_ocb1encryptdone(&enc->ctx, a ? &aad->aad : 0, b, t, tsz)); \ +} \ + \ +static void gedestroy(gaead_enc *e) \ + { gectx *enc = (gectx *)e; BURN(*enc); S_DESTROY(enc); } \ + \ +static const gaead_encops geops = \ + { &pre##_ocb1, geaad, gereinit, geenc, gedone, gedestroy }; \ + \ +typedef struct gdctx { \ + gaead_dec d; \ + pre##_ocb1ctx ctx; \ +} gdctx; \ + \ +static gaead_aad *gdaad(gaead_dec *d) \ + { gdctx *dec = (gdctx *)d; return (gaad(&dec->ctx.k)); } \ + \ +static int gdreinit(gaead_dec *d, const void *n, size_t nsz, \ + size_t hsz, size_t csz, size_t tsz) \ +{ \ + gdctx *dec = (gdctx *)d; \ + return (pre##_ocb1reinit(&dec->ctx, n, nsz)); \ +} \ + \ +static int gddec(gaead_dec *d, const void *c, size_t csz, buf *b) \ +{ \ + gdctx *dec = (gdctx *)d; \ + return (pre##_ocb1decrypt(&dec->ctx, c, csz, b)); \ +} \ + \ +static int gddone(gaead_dec *d, const gaead_aad *a, \ + buf *b, const void *t, size_t tsz) \ +{ \ + gdctx *dec = (gdctx *)d; gactx *aad = (gactx *)a; \ + assert(!a || a->ops == &gaops); \ + return (pre##_ocb1decryptdone(&dec->ctx, a ? &aad->aad : 0, b, t, tsz)); \ +} \ + \ +static void gddestroy(gaead_dec *d) \ + { gdctx *dec = (gdctx *)d; BURN(*dec); S_DESTROY(dec); } \ + \ +static const gaead_decops gdops = \ + { &pre##_ocb1, gdaad, gdreinit, gddec, gddone, gddestroy }; \ + \ +typedef struct gkctx { \ + gaead_key k; \ + pre##_ocb1key key; \ +} gkctx; \ + \ +static gaead_aad *gkaad(const gaead_key *k) \ + { gkctx *key = (gkctx *)k; return (gaad(&key->key)); } \ + \ +static gaead_enc *gkenc(const gaead_key *k, const void *n, size_t nsz, \ + size_t hsz, size_t msz, size_t tsz) \ +{ \ + gkctx *key = (gkctx *)k; \ + gectx *enc = S_CREATE(gectx); \ + \ + enc->e.ops = &geops; \ + if (pre##_ocb1init(&enc->ctx, &key->key, n, nsz)) \ + { gedestroy(&enc->e); return (0); } \ + return (&enc->e); \ +} \ + \ +static gaead_dec *gkdec(const gaead_key *k, const void *n, size_t nsz, \ + size_t hsz, size_t csz, size_t tsz) \ +{ \ + gkctx *key = (gkctx *)k; \ + gdctx *dec = S_CREATE(gdctx); \ + \ + dec->d.ops = &gdops; \ + if (pre##_ocb1init(&dec->ctx, &key->key, n, nsz)) \ + { gddestroy(&dec->d); return (0); } \ + return (&dec->d); \ +} \ + \ +static void gkdestroy(gaead_key *k) \ + { gkctx *key = (gkctx *)k; BURN(*key); S_DESTROY(key); } \ + \ +static const gaead_keyops gkops = \ + { &pre##_ocb1, gkaad, gkenc, gkdec, gkdestroy }; \ + \ +static gaead_key *gckey(const void *k, size_t ksz) \ +{ \ + gkctx *key = S_CREATE(gkctx); \ + key->k.ops = &gkops; \ + pre##_ocb1setkey(&key->key, k, ksz); \ + return (&key->k); \ +} \ + \ +const gcaead pre##_ocb1 = { \ + name "-ocb1", \ + pre##_keysz, pre##_ocb1noncesz, pre##_ocb1tagsz, \ + PRE##_BLKSZ, PRE##_BLKSZ, 0, 0, \ + gckey \ +}; \ + \ +OCB1_TESTX(PRE, pre, name, fname) + +/*----- Test rig ----------------------------------------------------------*/ + +#define OCB1_TEST(PRE, pre) OCB1_TESTX(PRE, pre, #pre, #pre) + +/* --- @OCB1_TEST@ --- * + * + * Arguments: @PRE, pre@ = prefixes for the underlying block cipher + * + * Use: Standard test rig for OCB1 functions. + */ + +#ifdef TEST_RIG + +#include + +#include +#include +#include + +#define OCB1_TESTX(PRE, pre, name, fname) \ + \ +static int ocb1verify(dstr *v) \ +{ \ + pre##_ocb1key key; \ + pre##_ocb1aadctx aad; \ + pre##_ocb1ctx ctx; \ + int ok = 1, win; \ + int i; \ + octet *p; \ + int szs[] = { 1, 7, 192, -1, 0 }, *ip; \ + size_t hsz, msz; \ + dstr d = DSTR_INIT, t = DSTR_INIT; \ + buf b; \ + \ + dstr_ensure(&d, v[4].len > v[3].len ? v[4].len : v[3].len); \ + dstr_ensure(&t, v[5].len); t.len = v[5].len; \ + \ + pre##_ocb1setkey(&key, v[0].buf, v[0].len); \ + \ + for (ip = szs; *ip; ip++) { \ + \ + pre##_ocb1init(&ctx, &key, (octet *)v[1].buf, v[1].len); \ + \ + i = *ip; \ + hsz = v[2].len; \ + if (i == -1) i = hsz; \ + if (i > hsz) continue; \ + p = (octet *)v[2].buf; \ + pre##_ocb1aadinit(&aad, &key); \ + while (hsz) { \ + if (i > hsz) i = hsz; \ + pre##_ocb1aadhash(&aad, p, i); \ + p += i; hsz -= i; \ + } \ + \ + buf_init(&b, d.buf, d.sz); \ + i = *ip; \ + msz = v[3].len; \ + if (i == -1) i = msz; \ + if (i > msz) continue; \ + p = (octet *)v[3].buf; \ + while (msz) { \ + if (i > msz) i = msz; \ + if (pre##_ocb1encrypt(&ctx, p, i, &b)) { \ + puts("!! ocb1encrypt reports failure"); \ + goto fail_enc; \ + } \ + p += i; msz -= i; \ + } \ + \ + if (pre##_ocb1encryptdone(&ctx, &aad, &b, (octet *)t.buf, t.len)) { \ + puts("!! ocb1encryptdone reports failure"); \ + goto fail_enc; \ + } \ + d.len = BLEN(&b); \ + \ + if (d.len != v[4].len || \ + memcmp(d.buf, v[4].buf, v[4].len) != 0 || \ + memcmp(t.buf, v[5].buf, v[5].len) != 0) { \ + fail_enc: \ + printf("\nfail encrypt:\n\tstep = %i", *ip); \ + fputs("\n\tkey = ", stdout); type_hex.dump(&v[0], stdout); \ + fputs("\n\tnonce = ", stdout); type_hex.dump(&v[1], stdout); \ + fputs("\n\theader = ", stdout); type_hex.dump(&v[2], stdout); \ + fputs("\n\tmessage = ", stdout); type_hex.dump(&v[3], stdout); \ + fputs("\n\texp ct = ", stdout); type_hex.dump(&v[4], stdout); \ + fputs("\n\tcalc ct = ", stdout); type_hex.dump(&d, stdout); \ + fputs("\n\texp tag = ", stdout); type_hex.dump(&v[5], stdout); \ + fputs("\n\tcalc tag = ", stdout); type_hex.dump(&t, stdout); \ + putchar('\n'); \ + ok = 0; \ + } \ + \ + pre##_ocb1init(&ctx, &key, (octet *)v[1].buf, v[1].len); \ + \ + buf_init(&b, d.buf, d.sz); \ + i = *ip; \ + msz = v[4].len; \ + if (i == -1) i = msz; \ + if (i > msz) continue; \ + p = (octet *)v[4].buf; \ + while (msz) { \ + if (i > msz) i = msz; \ + if (pre##_ocb1decrypt(&ctx, p, i, &b)) { \ + puts("!! ocb1decrypt reports failure"); \ + win = 0; goto fail_dec; \ + } \ + p += i; msz -= i; \ + } \ + \ + win = pre##_ocb1decryptdone(&ctx, &aad, &b, \ + (octet *)v[5].buf, v[5].len); \ + if (win < 0) { \ + puts("!! ocb1decryptdone reports failure"); \ + goto fail_dec; \ + } \ + d.len = BLEN(&b); \ + \ + if (d.len != v[3].len || !win || \ + memcmp(d.buf, v[3].buf, v[3].len) != 0) { \ + fail_dec: \ + printf("\nfail decrypt:\n\tstep = %i", *ip); \ + fputs("\n\tkey = ", stdout); type_hex.dump(&v[0], stdout); \ + fputs("\n\tnonce = ", stdout); type_hex.dump(&v[1], stdout); \ + fputs("\n\theader = ", stdout); type_hex.dump(&v[2], stdout); \ + fputs("\n\tciphertext = ", stdout); type_hex.dump(&v[4], stdout); \ + fputs("\n\texp pt = ", stdout); type_hex.dump(&v[3], stdout); \ + fputs("\n\tcalc pt = ", stdout); type_hex.dump(&d, stdout); \ + fputs("\n\ttag = ", stdout); type_hex.dump(&v[5], stdout); \ + printf("\n\tverify %s", win ? "ok" : "FAILED"); \ + putchar('\n'); \ + ok = 0; \ + } \ + } \ + \ + dstr_destroy(&d); dstr_destroy(&t); \ + return (ok); \ +} \ + \ +static test_chunk aeaddefs[] = { \ + { name "-ocb1", ocb1verify, \ + { &type_hex, &type_hex, &type_hex, &type_hex, \ + &type_hex, &type_hex, 0 } }, \ + { 0, 0, { 0 } } \ +}; \ + \ +int main(int argc, char *argv[]) \ +{ \ + ego(argv[0]); \ + test_run(argc, argv, aeaddefs, SRCDIR"/t/" fname); \ + return (0); \ +} + +#else +# define OCB1_TESTX(PRE, pre, name, fname) +#endif + +/*----- That's all, folks -------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/symm/ocb1.h b/symm/ocb1.h new file mode 100644 index 00000000..42cfb81b --- /dev/null +++ b/symm/ocb1.h @@ -0,0 +1,345 @@ +/* -*-c-*- + * + * The OCB1 authenticated encryption mode + * + * (c) 2018 Straylight/Edgeware + */ + +/*----- Licensing notice --------------------------------------------------* + * + * This file is part of Catacomb. + * + * Catacomb is free software: you can redistribute it and/or modify it + * under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Catacomb is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with Catacomb. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +/*----- Notes on OCB1 -----------------------------------------------------* + * + * OCB was designed in 2001 by Phillip Rogaway, with Mihir Bellare and John + * Black, as a blockcipher-based authenticated encryption scheme which can + * operate on multiple message blocks in parallel and requires only a single + * blockcipher application per message block. It refines Charanjit Jutla's + * earlier IAPM, which was the first such mode to be proven secure. This + * version implements the `OCB.PMAC' mode described by Rogaway in 2002, which + * combines the original OCB with PMAC (Rogaway and Black, 2002) into a + * single authenticated-encryption with associated-data (AEAD) scheme. + * + * The patent situation on these efficient authenticated encryption schemes + * is fraught. IBM hold two patents on Jutla's pioneering work on `IACBC' + * and `IAPM' which can apply (a third was filed at least six years too + * late), and Virgil Gligor and Pompiliu Donescu hold patents on their `XECB' + * and `XCBC' modes; these may or may not apply to OCB. Rogaway himself + * holds US patents on various versions of OCB, but has issued free licences + * for free (`open source') software, and for all non-military use. I think + * Catacomb's implementation of OCB falls within the scope of the former + * licence. + * + * Confusingly, Rogaway's 2004 paper `Efficient Instantiations of Tweakable + * Blockciphers and Refinements to Modes OCB and PMAC' named the new versions + * of those modes `OCB1' and `PMAC1'. The 2011 paper by Krovetz and Rogaway, + * `The Software Performance of Authenticated-Encryption Modes' renamed the + * original 2001 version of OCB as `OCB1', and the 2004 version `OCB2', and + * introduced a new `OCB3'. I've decided to follow and extend the 2011 + * naming, so `OCB1' refers to the 2001 OCB; the 2004 version would be + * `OCB2'. + * + * The OCB specification is clear about how OCB applies to arbitrary block + * sizes. + * + * OCB1 is a fairly well-behaved AEAD mode. It doesn't require + * precommentment to any lengths, and allows header data to be processed + * independently of any message. On the other hand, it only accepts nonces + * the same size as the underlying blockcipher's block size, and it buffers + * up to a whole block's worth of data internally, which somewhat complicates + * streaming. + */ + +#ifndef CATACOMB_OCB1_H +#define CATACOMB_OCB1_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*----- Header files ------------------------------------------------------*/ + +#include + +#include +#include + +#ifndef CATACOMB_GAEAD_H +# include "gaead.h" +#endif + +#ifndef CATACOMB_OCB_H +# include "ocb.h" +#endif + +#ifndef CATACOMB_RSVR_H +# include "rsvr.h" +#endif + +/*----- Macros ------------------------------------------------------------*/ + +/* --- @OCB1_DECL@ --- * + * + * Arguments: @PRE@, @pre@ = prefixes for the underlying block cipher + * + * Use: Creates declarations for OCB1 message-authentication mode. + */ + +#define OCB1_STRUCTS(PRE, pre, keyty, aadty) \ + \ +typedef struct keyty { \ + pre##_ctx ctx; /* Underlying cipher context */ \ + uint32 lxinv[PRE##_BLKSZ/4]; /* Final-block mask */ \ + uint32 lmask[OCB_NCALC][PRE##_BLKSZ/4]; /* Precalculated masks */ \ +} keyty; \ + \ +typedef struct aadty { \ + keyty k; /* Processed key material */ \ + uint32 o[PRE##_BLKSZ/4]; /* Current offset */ \ + uint32 a[PRE##_BLKSZ/4]; /* Accumulator state */ \ + octet b[PRE##_BLKSZ]; /* Input buffer */ \ + unsigned long i; /* Block counter */ \ + unsigned off; /* Offset into buffered data */ \ +} aadty; + +#define OCB1_DECL(PRE, pre) \ + \ +OCB1_STRUCTS(PRE, pre, pre##_ocb1key, pre##_ocb1aadctx) \ + \ +typedef struct pre##_ocb1ctx { \ + /* This is the same as @pre_ocb1aadctx@ above, but the two are \ + * logically distinct and shouldn't be muddled up. \ + */ \ + \ + pre##_ocb1key k; /* Processed key material */ \ + uint32 o[PRE##_BLKSZ/4]; /* Current offset */ \ + uint32 a[PRE##_BLKSZ/4]; /* Accumulator state */ \ + octet b[PRE##_BLKSZ]; /* Input buffer */ \ + unsigned long i; /* Block counter */ \ + unsigned off; /* Offset into buffered data */ \ +} pre##_ocb1ctx; \ + \ +extern const rsvr_policy pre##_ocb1policy; \ + \ +extern const octet pre##_ocb1noncesz[], pre##_ocb1tagsz[]; \ + \ +/* --- @pre_ocb1setkey@ --- * \ + * \ + * Arguments: @pre_ocb1key *key@ = pointer to key block to fill in \ + * @const void *k@ = pointer to key material \ + * @size_t ksz@ = size of key material \ + * \ + * Returns: --- \ + * \ + * Use: Initializes an OCB1 key block. \ + */ \ + \ +extern void pre##_ocb1setkey(pre##_ocb1key */*key*/, \ + const void */*k*/, size_t /*ksz*/); \ + \ +/* --- @pre_ocb1aadinit@ --- * \ + * \ + * Arguments: @pre_ocb1aadctx *aad@ = pointer to AAD context \ + * @const pre_ocb1key *key@ = pointer to key block \ + * \ + * Returns: --- \ + * \ + * Use: Initializes an OCB1 AAD (`additional authenticated \ + * data') context associated with a given key. AAD \ + * contexts can be copied and/or reused, saving time if \ + * the AAD for number of messages has a common prefix. \ + * \ + * The @key@ doesn't need to be kept around, though \ + * usually there'll at least be another copy in some OCB1 \ + * operation context because the AAD on its own isn't much \ + * good. \ + */ \ + \ +extern void pre##_ocb1aadinit(pre##_ocb1aadctx */*aad*/, \ + const pre##_ocb1key */*key*/); \ + \ +/* --- @pre_ocb1aadhash@ --- * \ + * \ + * Arguments: @pre_ocb1aadctx *aad@ = pointer to AAD context \ + * @const void *p@ = pointer to AAD material \ + * @size_t sz@ = length of AAD material \ + * \ + * Returns: --- \ + * \ + * Use: Feeds AAD into the context. \ + */ \ + \ +extern void pre##_ocb1aadhash(pre##_ocb1aadctx */*aad*/, \ + const void */*p*/, size_t /*sz*/); \ + \ +/* --- @pre_ocb1aadtag@ --- * \ + * \ + * Arguments: @const pre_ocb1aadctx *aad@ = pointer to context block \ + * @uint32 *u@ = where to write the tag \ + * \ + * Returns: --- \ + * \ + * Use: Finishes processing AAD and produces a tag which can be \ + * mixed with an OCB1 checksum. This function is exposed \ + * for internal reasons and is not expected to be \ + * generally useful. \ + */ \ + \ +extern void pre##_ocb1aadtag(const pre##_ocb1aadctx */*aad*/, \ + uint32 */*t*/); \ + \ +/* --- @pre_ocb1init@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 context \ + * @const pre_ocb1key *key@ = pointer to key block \ + * @const void *n@ = pointer to nonce \ + * @size_t nsz@ = size of nonce \ + * \ + * Returns: Zero on success, @-1@ if the nonce length is bad. \ + * \ + * Use: Initialize an OCB1 operation context with a given key. \ + * \ + * The original key needn't be kept around any more. \ + */ \ + \ +extern int pre##_ocb1init(pre##_ocb1ctx */*ctx*/, \ + const pre##_ocb1key */*k*/, \ + const void */*n*/, size_t /*nsz*/); \ + \ +/* --- @pre_ocb1reinit@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 context \ + * @const void *n@ = pointer to nonce \ + * @size_t nsz@ = size of nonce \ + * \ + * Returns: Zero on success, @-1@ if the nonce length is bad. \ + * \ + * Use: Reinitialize an OCB1 operation context, changing the \ + * nonce. \ + */ \ + \ +extern int pre##_ocb1reinit(pre##_ocb1ctx */*ctx*/, \ + const void */*n*/, size_t /*nsz*/); \ + \ +/* --- @pre_ocb1encrypt@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 operation context \ + * @const void *src@ = pointer to plaintext message chunk \ + * @size_t sz@ = size of the plaintext \ + * @buf *dst@ = a buffer to write the ciphertext to \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Encrypts a chunk of a plaintext message, writing a \ + * chunk of ciphertext to the output buffer and updating \ + * the operation state. \ + * \ + * Note that OCB1 delays output if its input is not a \ + * whole number of blocks. This means that the output \ + * might be smaller or larger the input by up to the block \ + * size. \ + */ \ + \ +extern int pre##_ocb1encrypt(pre##_ocb1ctx */*ctx*/, \ + const void */*src*/, size_t /*sz*/, \ + buf */*dst*/); \ + \ +/* --- @pre_ocb1decrypt@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to OCB1 operation context \ + * @const void *src@ = pointer to ciphertext message chunk \ + * @size_t sz@ = size of the ciphertext \ + * @buf *dst@ = a buffer to write the plaintext to \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Decrypts a chunk of a ciphertext message, writing a \ + * chunk of plaintext to the output buffer and updating \ + * the operation state. \ + * \ + * Note that OCB1 delays output if its input is not a \ + * whole number of blocks. This means that the output \ + * might be smaller or larger the input by up to the block \ + * size. \ + */ \ + \ +extern int pre##_ocb1decrypt(pre##_ocb1ctx */*ctx*/, \ + const void */*src*/, size_t /*sz*/, \ + buf */*dst*/); \ + \ +/* --- @pre_ocb1encryptdone@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to an OCB1 context \ + * @const pre_ocb1aadctx *aad@ = pointer to AAD context, \ + * or null \ + * @buf *dst@ = buffer for remaining ciphertext \ + * @void *tag@ = where to write the tag \ + * @size_t tsz@ = length of tag to store \ + * \ + * Returns: Zero on success; @-1@ on failure. \ + * \ + * Use: Completes an OCB1 encryption operation. The @aad@ \ + * pointer may be null if there is no additional \ + * authenticated data. OCB1 delays output, so this will \ + * cause any remaining buffered plaintext to be encrypted \ + * and written to @dst@. Anyway, the function will fail \ + * if the output buffer is broken. \ + */ \ + \ +extern int pre##_ocb1encryptdone(pre##_ocb1ctx */*ctx*/, \ + const pre##_ocb1aadctx */*aad*/, \ + buf */*dst*/, \ + void */*tag*/, size_t /*tsz*/); \ + \ +/* --- @pre_ocb1decryptdone@ --- * \ + * \ + * Arguments: @pre_ocb1ctx *ctx@ = pointer to an OCB1 context \ + * @const pre_ocb1aadctx *aad@ = pointer to AAD context, \ + * or null \ + * @buf *dst@ = buffer for remaining plaintext \ + * @const void *tag@ = tag to verify \ + * @size_t tsz@ = length of tag \ + * \ + * Returns: @+1@ for complete success; @0@ if tag verification \ + * failed; @-1@ for other kinds of errors. \ + * \ + * Use: Completes an OCB1 decryption operation. The @aad@ \ + * pointer may be null if there is no additional \ + * authenticated data. OCB1 delays output, so this will \ + * cause any remaining buffered ciphertext to be decrypted \ + * and written to @dst@. Anyway, the function will fail \ + * if the output buffer is broken. \ + */ \ + \ +extern int pre##_ocb1decryptdone(pre##_ocb1ctx */*ctx*/, \ + const pre##_ocb1aadctx */*aad*/, \ + buf */*dst*/, \ + const void */*tag*/, size_t /*tsz*/); \ + \ +/* --- Generic AEAD interface --- */ \ + \ +extern const gcaead pre##_ocb1; + +/*----- That's all, folks -------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/symm/pmac1-def.h b/symm/pmac1-def.h new file mode 100644 index 00000000..4b0da048 --- /dev/null +++ b/symm/pmac1-def.h @@ -0,0 +1,371 @@ +/* -*-c-*- + * + * The PMAC1 message authentication mode + * + * (c) 2018 Straylight/Edgeware + */ + +/*----- Licensing notice --------------------------------------------------* + * + * This file is part of Catacomb. + * + * Catacomb is free software: you can redistribute it and/or modify it + * under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Catacomb is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with Catacomb. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#ifndef CATACOMB_PMAC1_DEF_H +#define CATACOMB_PMAC1_DEF_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*----- Header files ------------------------------------------------------*/ + +#include + +#include +#include + +#ifndef CATACOMB_ARENA_H +# include "arena.h" +#endif + +#ifndef CATACOMB_BLKC_H +# include "blkc.h" +#endif + +#ifndef CATACOMB_PARANOIA_H +# include "paranoia.h" +#endif + +#ifndef CATACOMB_RSVR_H +# include "rsvr.h" +#endif + +/*----- Macros ------------------------------------------------------------*/ + +/* --- @PMAC1_DEF@ --- * + * + * Arguments: @PRE@, @pre@ = prefixes for the underlying block cipher + * + * Use: Creates an implementation for the PMAC1 message- + * authentication mode. + */ + +#define PMAC1_DEF(PRE, pre) PMAC1_DEFX(PRE, pre, #pre, #pre) + +#define PMAC1_DEFX(PRE, pre, name, fname) \ + \ +OCB1_DECL(PRE, pre) \ + \ +const rsvr_policy pre##_ocb1policy = \ + { RSVRF_FULL, PRE##_BLKSZ, PRE##_BLKSZ }; \ + \ +/* --- @pre_ocb1setkey@, @pre_pmac1setkey@ --- * \ + * \ + * Arguments: @pre_ocb1key *key@ = pointer to OCB1/PMAC1 key block \ + * @ocnst void *k@ = pointer to key material \ + * @size_t ksz@ = size of key material \ + * \ + * Returns: --- \ + * \ + * Use: Initializes a OCB1/PMAC1 key. This can be used for \ + * several encryption and/or MAC operations. \ + */ \ + \ +void pre##_ocb1setkey(pre##_ocb1key *key, const void *k, size_t ksz) \ +{ \ + unsigned i; \ + \ + pre##_init(&key->ctx, k, ksz); \ + BLKC_ZERO(PRE, key->lmask[0]); \ + pre##_eblk(&key->ctx, key->lmask[0], key->lmask[0]); \ + BLKC_BRSHIFT(PRE, IRRED, key->lxinv, key->lmask[0]); \ + for (i = 1; i < OCB_NCALC; i++) \ + BLKC_BLSHIFT(PRE, IRRED, key->lmask[i], key->lmask[i - 1]); \ +} \ +void pre##_pmac1setkey(pre##_pmac1key *key, const void *k, size_t ksz) \ + { pre##_ocb1setkey((pre##_ocb1key *)key, k, ksz); } \ + \ +/* --- @pre_ocb1aadinit@, @pre_pmac1init --- * \ + * \ + * Arguments: @pre_ocb1aadctx *aad@ = pointer to context block \ + * @pre_ocb1key *k@ = key block \ + * \ + * Returns: --- \ + * \ + * Use: Initializes an OCB1 AAD (`additional authenticated \ + * data') or PMAC1 context associated witha a given key. \ + * AAD contexts can be copied and/or reused, saving time \ + * if the AAD for a number of messages has a common \ + * prefix. \ + * \ + * The @key@ doesn't need to be kept around. \ + */ \ + \ +void pre##_ocb1aadinit(pre##_ocb1aadctx *aad, const pre##_ocb1key *k) \ +{ \ + aad->k = *k; \ + aad->off = 0; aad->i = 1; \ + BLKC_ZERO(PRE, aad->a); \ + BLKC_ZERO(PRE, aad->o); \ +} \ +void pre##_pmac1init(pre##_pmac1ctx *ctx, const pre##_pmac1key *k) \ + { pre##_ocb1aadinit((pre##_ocb1aadctx *)ctx, (pre##_ocb1key *)k); } \ + \ +/* --- @pre_ocb1aadhash@, @pre_pmac1hash@ --- * \ + * \ + * Arguments: @pre_ocb1aadctx *aad@ = pointer to context block \ + * @ocnst void *p@ = pointer to message buffer \ + * @size_t sz@ = size of message buffer \ + * \ + * Returns: --- \ + * \ + * Use: Hashes some AAD input data. \ + */ \ + \ +void pre##_ocb1aadhash(pre##_ocb1aadctx *aad, const void *p, size_t sz) \ +{ \ + rsvr_state st; \ + uint32 t[PRE##_BLKSZ/4]; \ + const octet *q; \ + \ + rsvr_setup(&st, &pre##_ocb1policy, aad->b, &aad->off, p, sz); \ + RSVR_DO(&st) while ((q = RSVR_NEXT(&st, PRE##_BLKSZ)) != 0) { \ + OCB_OFFSET(PRE, aad->o, aad->k.lmask, aad->i++); \ + BLKC_LOAD(PRE, t, q); BLKC_XMOVE(PRE, t, aad->o); \ + pre##_eblk(&aad->k.ctx, t, t); \ + BLKC_XMOVE(PRE, aad->a, t); \ + } \ +} \ +void pre##_pmac1hash(pre##_pmac1ctx *ctx, const void *p, size_t sz) \ + { pre##_ocb1aadhash((pre##_ocb1aadctx *)ctx, p, sz); } \ + \ +/* --- @pre_ocb1aadtag@ --- * \ + * \ + * Arguments: @const pre_ocb1aadctx *aad@ = pointer to context block \ + * @uint32 *u@ = where to write the tag \ + * \ + * Returns: --- \ + * \ + * Use: Finishes processing AAD and produces a tag which can be \ + * mixed with an OCB1 checksum. This function is exposed \ + * for internal reasons and is not expected to be \ + * generally useful. \ + */ \ + \ +void pre##_ocb1aadtag(const pre##_ocb1aadctx *aad, uint32 *t) \ +{ \ + octet b[PRE##_BLKSZ]; \ + \ + BLKC_MOVE(PRE, t, aad->a); \ + if (aad->off == PRE##_BLKSZ) { \ + BLKC_XLOAD(PRE, t, aad->b); \ + BLKC_XMOVE(PRE, t, aad->k.lxinv); \ + } else { \ + memcpy(b, aad->b, aad->off); b[aad->off] = 0x80; \ + memset(b + aad->off + 1, 0, PRE##_BLKSZ - aad->off - 1); \ + BLKC_XLOAD(PRE, t, b); \ + } \ + pre##_eblk(&aad->k.ctx, t, t); \ +} \ + \ +/* --- @pre_pmac1done@ --- * \ + * \ + * Arguments: @pre_pmac1ctx *ctx@ = pointer to context block \ + * @void *t@ = where to write the tag \ + * \ + * Returns: --- \ + * \ + * Use: Finishes a MAC operation and produces the tag. The \ + * context is clobbered and can't be used for anything \ + * useful any more. \ + */ \ + \ +void pre##_pmac1done(pre##_pmac1ctx *ctx, void *t) \ +{ \ + uint32 u[PRE##_BLKSZ]; \ + pre##_ocb1aadtag((pre##_ocb1aadctx *)ctx, u); BLKC_STORE(PRE, t, u); \ +} \ + \ +/* --- Generic MAC interface --- */ \ + \ +static const gmac_ops gkops; \ +static const ghash_ops gops; \ + \ +typedef struct gkctx { \ + gmac m; \ + pre##_pmac1key k; \ +} gkctx; \ + \ +typedef struct gctx { \ + ghash h; \ + pre##_pmac1ctx c; \ + octet buf[PRE##_BLKSZ]; \ +} gctx; \ + \ +static ghash *gkinit(gmac *m) \ +{ \ + gkctx *gk = (gkctx *)m; \ + gctx *g = S_CREATE(gctx); \ + g->h.ops = &gops; \ + pre##_pmac1init(&g->c, &gk->k); \ + return (&g->h); \ +} \ + \ +static gmac *gkey(const void *k, size_t sz) \ +{ \ + gkctx *gk = S_CREATE(gkctx); \ + gk->m.ops = &gkops; \ + pre##_pmac1setkey(&gk->k, k, sz); \ + return (&gk->m); \ +} \ + \ +static void ghhash(ghash *h, const void *p, size_t sz) \ + { gctx *g = (gctx *)h; pre##_pmac1hash(&g->c, p, sz); } \ + \ +static octet *ghdone(ghash *h, void *buf) \ +{ \ + gctx *g = (gctx *)h; \ + if (!buf) buf = g->buf; \ + pre##_pmac1done(&g->c, buf); \ + return (buf); \ +} \ + \ +static ghash *ghcopy(ghash *h) \ +{ \ + gctx *g = (gctx *)h; \ + gctx *gg = S_CREATE(gctx); \ + memcpy(gg, g, sizeof(gctx)); \ + return (&gg->h); \ +} \ + \ +static void ghdestroy(ghash *h) \ + { gctx *g = (gctx *)h; BURN(*g); S_DESTROY(g); } \ + \ +static void gkdestroy(gmac *m) \ + { gkctx *gk = (gkctx *)m; BURN(*gk); S_DESTROY(gk); } \ + \ +static ghash *ghinit(void) \ +{ \ + assert(((void)"Attempt to instantiate an unkeyed MAC", 0)); \ + return (0); \ +} \ + \ +const gcmac pre##_pmac1 = \ + { name "-pmac1", PRE##_BLKSZ, pre##_keysz, gkey }; \ +static const gmac_ops gkops = { &pre##_pmac1, gkinit, gkdestroy }; \ +static const gchash gch = { name "-pmac1", PRE##_BLKSZ, ghinit }; \ +static const ghash_ops gops = \ + { &gch, ghhash, ghdone, ghdestroy, ghcopy }; \ + \ +PMAC1_TESTX(PRE, pre, name, fname) + +#define PMAC1_TEST(PRE, pre) HMAC_TESTX(PRE, pre, #pre, #pre) + +/* --- @PMAC1_TEST@ --- * + * + * Arguments: @PRE@, @pre@ = prefixes for the underlying block cipher + * + * Use: Standard test rig for PMAC1 functions. + */ + +#ifdef TEST_RIG + +#include + +#include +#include +#include + +#define PMAC1_TESTX(PRE, pre, name, fname) \ + \ +static int macverify(dstr *v) \ +{ \ + pre##_pmac1ctx cctx; \ + pre##_pmac1key ckey; \ + int ok = 1; \ + int i; \ + octet *p; \ + int szs[] = { 1, 7, 192, -1, 0 }, *ip; \ + size_t csz; \ + dstr d; \ + \ + dstr_create(&d); \ + dstr_ensure(&d, PRE##_BLKSZ); \ + d.len = PRE##_BLKSZ; \ + \ + pre##_pmac1setkey(&ckey, v[0].buf, v[0].len); \ + \ + for (ip = szs; *ip; ip++) { \ + i = *ip; \ + csz = v[1].len; \ + if (i == -1) \ + i = csz; \ + if (i > csz) \ + continue; \ + p = (octet *)v[1].buf; \ + pre##_pmac1init(&cctx, &ckey); \ + while (csz) { \ + if (i > csz) \ + i = csz; \ + pre##_pmac1hash(&cctx, p, i); \ + p += i; \ + csz -= i; \ + } \ + pre##_pmac1done(&cctx, d.buf); \ + if (memcmp(d.buf, v[2].buf, PRE##_BLKSZ) != 0) { \ + printf("\nfail:\n\tstep = %i\n\tkey = ", *ip); \ + type_hex.dump(&v[0], stdout); \ + fputs("\n\tinput = ", stdout); \ + type_hex.dump(&v[1], stdout); \ + fputs("\n\texpected = ", stdout); \ + type_hex.dump(&v[2], stdout); \ + fputs("\n\tcomputed = ", stdout); \ + type_hex.dump(&d, stdout); \ + putchar('\n'); \ + ok = 0; \ + } \ + } \ + \ + dstr_destroy(&d); \ + return (ok); \ +} \ + \ +static test_chunk macdefs[] = { \ + { name "-pmac1", macverify, \ + { &type_hex, &type_hex, &type_hex, 0 } }, \ + { 0, 0, { 0 } } \ +}; \ + \ +int main(int argc, char *argv[]) \ +{ \ + ego(argv[0]); \ + test_run(argc, argv, macdefs, SRCDIR"/t/" fname); \ + return (0); \ +} + +#else +# define PMAC1_TESTX(PRE, pre, name, fname) +#endif + +/*----- That's all, folks -------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/symm/pmac1.h b/symm/pmac1.h new file mode 100644 index 00000000..88827bbe --- /dev/null +++ b/symm/pmac1.h @@ -0,0 +1,119 @@ +/* -*-c-*- + * + * The PMAC1 message authentication mode + * + * (c) 2018 Straylight/Edgeware + */ + +/*----- Licensing notice --------------------------------------------------* + * + * This file is part of Catacomb. + * + * Catacomb is free software: you can redistribute it and/or modify it + * under the terms of the GNU Library General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * Catacomb is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with Catacomb. If not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +/*----- Notes on PMAC1 ----------------------------------------------------* + * + * PMAC was designed in 2002 by John Black and Phillip Rogaway as a + * blockcipher-based MAC which can operate on multiple message blocks in + * parallel. Unfortunately, Rogaway applied for patents on PMAC, and as a + * result it saw limited adoption. Rogaway has since abandoned the patent + * applications, and PMAC is free for all uses. + * + * Confusingly, Rogaway's 2004 paper `Efficient Instantiations of Tweakable + * Blockciphers and Refinements to Modes OCB and PMAC' named the new versions + * of those modes `OCB1' and `PMAC1'. The 2011 paper by Krovetz and Rogaway, + * `The Software Performance of Authenticated-Encryption Modes' renamed the + * original 2001 version of OCB as `OCB1', and the 2004 version `OCB2', and + * introduced a new `OCB3', but does not mention PMAC. (PMAC is used as-is + * in the 2001 and 2004 versions of OCB, to process header data; the header + * processing in the 2011 version of OCB is not a secure standalone MAC, so + * there is no PMAC3.) I've decided to follow and extend the 2011 naming, so + * `PMAC1' refers to the 2002 PMAC; the 2004 version would be `PMAC2'. + * + * This implementation does not currently attempt to process blocks in + * parallel, though this is a possible future improvement. + */ + +#ifndef CATACOMB_PMAC1_H +#define CATACOMB_PMAC1_H + +#ifdef __cplusplus + extern "C" { +#endif + +/*----- Header files ------------------------------------------------------*/ + +#include + +#include + +#ifndef CATACOMB_GMAC_H +# include "gmac.h" +#endif + +#ifndef CATACOMB_OCB1_H +# include "ocb1.h" +#endif + +/*----- Macros ------------------------------------------------------------*/ + +/* --- @PMAC1_DECL@ --- * + * + * Arguments: @PRE@, @pre@ = prefixes for the underlying block cipher + * + * Use: Creates declarations for PMAC1 message-authentication mode. + * + * Most of these are aliases for OCB1 operations: see + * for their documentation. + */ + +#define PMAC1_DECL(PRE, pre) \ + \ +OCB1_STRUCTS(PRE, pre, pre##_pmac1key, pre##_pmac1ctx) \ + \ +extern void pre##_pmac1setkey(pre##_pmac1key */*key*/, \ + const void */*k*/, size_t /*ksz*/); \ + \ +extern void pre##_pmac1init(pre##_pmac1ctx */*ctx*/, \ + const pre##_pmac1key */*k*/); \ + \ +extern void pre##_pmac1hash(pre##_pmac1ctx */*ctx*/, \ + const void */*p*/, size_t /*sz*/); \ + \ +/* --- @pre_pmac1done@ --- * \ + * \ + * Arguments: @pre_pmac1ctx *ctx@ = pointer to PMAC1 context block \ + * @void *t@ = where to write the tag \ + * \ + * Returns: --- \ + * \ + * Use: Finishes a MAC operation and produces the tag. \ + */ \ + \ +extern void pre##_pmac1done(pre##_pmac1ctx */*ctx*/, void */*t*/); \ + \ +/* --- Generic MAC interface --- */ \ + \ +extern const gcmac pre##_pmac1; + +/*----- That's all, folks -------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/symm/t/blowfish b/symm/t/blowfish index dcc38346..778a7f2b 100644 --- a/symm/t/blowfish +++ b/symm/t/blowfish @@ -609,3 +609,225 @@ blowfish-gcm { 3bf9da6973a8dc56cebcb99962a74dc8638d11f4cb1d932162cd63136e ff4072c9c5180f17; } + +blowfish-ocb1 { + 60d7bcda163547d348b7551195e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa906 + 0d2d4b6003062365 + "" + "" + "" + 5f3f51e08130263d; + b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d + 27a4ba234085406a + 61 + "" + "" + 8de51300e0d17d9d; + 36512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbd + a3b3e9878731ebfe + "" + dd + 11 + 1baa12d5cdfeeee5; + 4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa45072 + 7a9b542cde52ebfd + "" + a19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030 + c1901311bcbe5d48115af605ce28802572f30dff577e27ec + 330d726cadffef1c; + 370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306f + ed54154f8f28523c + 03d4de1600157846b710ee72807a2219bfb474fd71d891f2 + 4bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df + 0a2dd79bb802baad38fb7e60e979c30bbbbcae5e5bfe515d + 0ee0e2a8987f11b4; + 9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac + 8b0a22260c571b4a + "" + 42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c03 + 0f42a8f34bf068232057195d449b9414f3bb33a692bff50f90f86b2d83 + 6cfb2c8b4b3ac1f8; + 7ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff3b + cd211499268878db + f30f1dad89d4b9b12012e4713df46795630e79 + 52d22bb02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa + eda7fb91f70e24d3ac9751e7132f6b104e41392dac28bf4f0e5daaa2b6 + 04f7c455e5d023ab; + 921451dcd1af5813b70d30 + ce2f1fef6ef315d0 + "" + "" + "" + 4a33cb478b8f393b; + 798391805da08da3aefc5f + 8584b7c5e617669c + 0f + "" + "" + 8745d6a0c38b7bb0; + 16e39815d4e9cfce3ed1ec + df3d264a7f16cb16 + "" + c2 + 3c + 20ab4fe539c6b1ef; + e815f422cdf0c8e30308be + 3c31e6bc58c0b7ca + "" + dcb658b970e47479a684b5aefa69a4cd52147ed12ca98698 + bc0a5d98e5825c5e804c67213a1d820e29ef7dfddab70a5f + 40854bd91c065d0d; + 1a874498ad0abef8bc4fcb + 70e27e98ef1f0446 + b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9f4 + ae985511265febd11c164720eef9eb1c8dd0b00951f28464 + 1a2ad5ef98fce431c6e9e85fdd057e59d2954f8e96bbadc8 + 979de99c867f2951; + 9016ed00456331854bc78b + f43966eb0cfa9138 + "" + ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d1 + 78687a94824bb12dfe6e650544f042524ead2780a8bb4dde09d3621ec4 + d8dd93d379eb140f; + 26b807e6daa089c3f9099c + 5ffb824173d7634c + 04226f30cbb7f0e4a973a8cd190107314717a7 + 7456f3ff669c732b58db8f48af65f7cc9e3fb90e1721b730374ffc9bc5 + b58e5fed2f88013418795c660e6e4b5ae3262382a534d79656c02a42f1 + 7391763bfa5e91d1; + 97f56ccbb2 + f294b38766fc69f6 + "" + "" + "" + de47841b0e181038; + a9f2c0945f + fd505003cc0cae9c + e0 + "" + "" + 9e1855698acdf3f7; + 21a5f1fa4f + fa91544485f1a125 + "" + 8b + 46 + 279f95fd345d8d07; + 2b9b8f0911 + e32d65cc1770a18c + "" + bfe6effd1ff6778554acf1270485b203a3c1c4c967c0a458 + 6abecbf72aed482a6f80d57b236c40d316e20362f5561ff6 + cc8e958357592f6f; + cb948bdd40 + 9b687fa3a6827b48 + 0aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e + 8128f8743d16687b7bb8deb9bd205b70e04c091d205cdad9 + 322b60b89783b356ffcddc812e11459c1841d1540a91057d + 48feb980547cfd06; + e9a79b1abf + 91b0851e5ca605ac + "" + 8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65 + 735b81e7bf11cb6e02de6657d638e735c41336f7d021d1e6b07c8aaa69 + f21aba6b029d81a5; + bad397abfa + f529ee41cf9a05c7 + efedef3401539c51d2a90bbf7f1bfc338ab0ef + 5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1 + 094621285cf10b55b5c7ac0287f2267a8b4f9fecdd2e4107a88c16bd91 + 0a2c24953366e55d; + f5c054b2d983514605ec590294a319b9802068a9f891bc + 5ba5afabf8c3122d + "" + "" + "" + c9a161d460c36f70; + 12d7ff3c41122d70d17d4569eaff59a332ba58d5d5589b + fe079753ee1a957e + b6 + "" + "" + 60dd373e888b983a; + d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7ab + c8ad68daac90cfe2 + "" + 2d + 34 + f2b20b2e78622af4; + 2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d98 + 0398bd94e66eb456 + "" + 3d405e51881e99027b8ab9aea3ccf860b0009740763d9683 + 1d2773587c73b701d3cc8beb604ce8f285046e6879e5c0e5 + ba34965f7a472a8f; + 6c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e + 86041c1b9fc214e9 + ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c + 36800d9645563a308ba60076817523bd2abf1261b089d8f2 + b0d06d7557017e3cd08c88a3a3d744ec0d7d964e72197911 + 9de86854fdf00689; + 3a9c2835076a23faac2cdd67771cc667a8331f0a170b66 + 283e4f834a06148f + "" + 302c3973accd56f6f24e33958b8c2e2352fd61e4fa8fec816ac861a8b3 + f91ee277a3c2b93ce6c8df23263fd829225d66ff7f8bba9612230e8bf1 + d2c7d587cbddcddd; + 3779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2 + b94b0820cab383a8 + cffeea7c486315799dc875fba578c8ec483789 + 8a92142b5b0677da1ac273117b45bcfff5d5f8b6fde2893232a9f81d14 + 00e25b2c5fdee0b87cd2c66474f852256a4e3b6239ef6ba512af0f74c0 + 5711f23d4b34df7f; +} + +blowfish-pmac1 { + 60d7bcda163547d348b7551195e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa906 + "" + db56f7585ef1b3ea; + 0d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d + 1f + fe51530be20f5059; + 337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e + 6057acc87638f508046733d9ff61cdbda3b3e9878731ebfe + 370a72ba02c69145; + dd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450 + 727a9b542cde52ebfda19d0ccc520f215eb57b + b31c99831d7ad455; + b3a4f3ebbbb18ac6c95a97 + "" + 41939f3db560fdb4; + a48030370c33d090c54215 + ab + d56476908d8efe7a; + d6b3ad54efc9a38378c5b9 + 3bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac + 7f864cbc1bee3343; + 26afa3349829b94586306f + ed54154f8f28523c03d4de1600157846b710ee + a344715c78dc0063; + 72807a2219 + "" + 78e276b95d095a71; + bfb474fd71 + d8 + 9b5c25004d486060; + 91f24bb65d + 1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbac + 1d4dbe26bc70c6bc; + a48b77dba1 + 89196d1ebba10b0467cb9fc2712a199e533fa9 + 3b97fb336799efbd; + 156308cdec3f768281e040a9b9a222bd689aef66f5306c + "" + cc20b90115cd712c; + eb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb + 0b + eb75059c3f5ccc65; + ad7d95214ade49cb3b6f5fe8368131115c037ba323fe1d + c8151784873f0eb5b647da6794c18b5337685a96ed65b9ac + f0576e12bc1af195; + a338527ef19b09c063c46f88de9fd41e72d7b97e23e6ea + bdff3bcd211499268878dbf30f1dad89d4b9b1 + e193575442a800ab; +} diff --git a/symm/t/cast128 b/symm/t/cast128 index aef585a6..e871e0c4 100644 --- a/symm/t/cast128 +++ b/symm/t/cast128 @@ -505,3 +505,225 @@ cast128-gcm { 3c6ea417e98fd5ed2874ef3b1d8b512fbbe5449541a8912afce6b85441 6c1dcdd2eef63a3e; } + +cast128-ocb1 { + 60d7bcda163547d348b7551195 + e77022907dd1dff7 + "" + "" + "" + 35fcd5e38e3b51ae; + dac5c9941d26d0c6eb14ad568f + 86edd1dc9268eeee + 53 + "" + "" + 9750a7c045cb5fa6; + 3285a6ed810c9b689daaa9060d + 2d4b6003062365b0 + "" + a5 + 70 + 2007ad9ceaa910e8; + 4364c76c160f11896c4794846e + cfa14a7130c9f137 + "" + 120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d + 1d6fefbc39046f96c95a8e6a1b9dee24838ae0538c73cc2b + 367e4bd46fea6528; + 1f337f29549e6b0d27a4ba2340 + 85406a6136512061 + f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a + 21635c6d62c9269029df3e6057acc87638f508046733d9ff + 0754a41170bb62612e1224d955d5c65fb33c4331487b17fc + bf7b46ca9365175f; + 61cdbda3b3e9878731ebfedd47 + 05e505da1435dcea + "" + a7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb6 + 491c578a12863680495817bbb1be6bb5cd068da6c097a4d7454c4e8da0 + d255ace5711af8ae; + 21b7f65b000961040ef2f9b2fc + 5fa450727a9b542c + de52ebfda19d0ccc520f215eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b9 + 97a20b90075f6b8cd05b2c101043d92167fd921a71668f63a3c1115b0f + 202da1820f237005; + 3bf4f2aad2605f + aee2b03fb648e27f + "" + "" + "" + 31e566cec6e241d7; + ff63102758fe2b + 69ac26afa3349829 + b9 + "" + "" + ca2c2e57da61fa0b; + 4586306fed5415 + 4f8f28523c03d4de + "" + 16 + 5d + 85b6fa491dfc6955; + 00157846b710ee + 72807a2219bfb474 + "" + fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d + 737de7976152fc336878cbbb9ede5469e5cc5d970933fd65 + 8f8227129780dd53; + 42f70800df9fcb + aca48b77dba18919 + 6d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f76 + 8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22 + f2320eca3b003b64b91066ab2de93cdd408517d8a9728db9 + 538a1fa6a7597e50; + 260c571b4a42bb + 8fdb233bfa6a5cfb + "" + 0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc815178487 + 20c12e9ba584a56f7768fe92d9111a7eae80e149386c93d17f7904a41a + 48e10cd0a8be13c9; + 3f0eb5b647da67 + 94c18b5337685a96 + ed65b9aca338527ef19b09c063c46f88de9fd4 + 1e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012 + 55e5fad364bb32f3fa056d496f84874281576e690d72fa33be655966e4 + a0b5a442a7297a49; + e4713df46795630e7952 + d22bb02d7100b8b6 + "" + "" + "" + 940a9694d41abe63; + 49377d20a8f083455b66 + 3e4ee1315f3c8f2a + eb + "" + "" + 7b6cad447bf0e593; + fa921451dcd1af5813b7 + 0d30ce2f1fef6ef3 + "" + 15 + 30 + 536c60f6f1d83c94; + d0798391805da08da3ae + fc5f8584b7c5e617 + "" + 669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e8 + 1c485850e9c9b37abb599a800973920b660fd62c31d374a4 + 3b5a7524db68ca3d; + 15f422cdf0c8e30308be + 3c31e6bc58c0b7ca + dcb658b970e47479a684b5aefa69a4cd52147ed12ca98698 + 1a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d4 + 097c9f86dc5ed84b2c4302fa4b10719337a1ee8feed7d101 + 8f642bc221b793b9; + 4b6d00f06dc188d472a7 + 84e0c6f21195a3b9 + "" + f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00 + 98a5dafa75c301e74727ecbba6a5047ed29491a660cef05ba70e74eaf4 + eb2ef400c45349a9; + 456331854bc78bf43966 + eb0cfa9138ddc399 + 08445608fe95e81c2533e31c9c1a9851bc2810 + d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f + b43644eaaa9f3060a3a2d0eb7b10f8829f2769eb4ceaed6b712550e71c + fb0381cb9425f488; + 30cbb7f0e4a973a8cd + 190107314717a774 + "" + "" + "" + a084a9815a7601a4; + 56f3ff669c732b58db + 8f48af65f7cc9e3f + b9 + "" + "" + 2ee2f881784c0227; + 0e1721b730374ffc9b + c597f56ccbb2f294 + "" + b3 + 05 + 683231980af7d491; + 8766fc69f6a9f2c094 + 5ffd505003cc0cae + "" + 9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65 + e4f05c8136721b99369335ba402941018889f1fe75f9cb76 + 88de859ee4e6c912; + cc1770a18cbfe6effd + 1ff6778554acf127 + 0485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b + 480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a + db871dcb9e6624a931cef6ffcbe61ebc77c8b60f19550476 + a74df4d69c389e3e; + 3e8128f8743d16687b + 7bb8deb9bd205b70 + "" + e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677 + 922755c3a636a359fcf8fbeda42c8de7d32d109c3d1e2bc6b7f7094e9b + f18c36d8b0f0d64b; + 508a15dde524af3e2b + ee0646541a42c2ec + ccb44d65bad397abfaf529ee41cf9a05c7efed + ef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a + c06849ccf2b34ffd7b497fd8936add1cb570227aa304c345092739d18b + 326e341574bedb1f; +} + +cast128-pmac1 { + 60d7bcda163547d348b7551195 + "" + 9908603f8e4ed537; + e77022907dd1dff7dac5c9941d + 26 + ab2e2df52a4ffd51; + d0c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0 + 3400ed5412e2c9f7; + a54364c76c160f11896c479484 + 6ecfa14a7130c9f137120634c9519848a877ff + 0f106ec05825e141; + 77bf79192a5b50 + "" + 536bca927005ffd1; + ade5d9cd739a3d + 1f + f69b33db8f802d6e; + 337f29549e6b0d + 27a4ba234085406a6136512061f7080cc07df0591d8fa21f + 0b99429b96428cb3; + 2dd88374d8cde8 + e160ad10997a21635c6d62c9269029df3e6057 + 0098d1d07d912367; + acc87638f508046733d9 + "" + da9779d1609cb9e1; + ff61cdbda3b3e9878731 + eb + 00096e5430e6e2bd; + fedd4705e505da1435dc + eaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533 + a91e29d999936af2; + 966f27043eb621b7f65b + 000961040ef2f9b2fc5fa450727a9b542cde52 + 1df06f8b2c0f4c39; + ebfda19d0ccc520f21 + "" + 78b9f4bb116ef26b; + 5eb57bb3a4f3ebbbb1 + 8a + 57afa587a9a123d5; + c6c95a97a48030370c + 33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad260 + d32f3f141a62efe1; + 5faee2b03fb648e27f + ff63102758fe2b69ac26afa3349829b9458630 + cab1db46326dab8b; +} diff --git a/symm/t/cast256.local b/symm/t/cast256.local index 2768387b..c2d6067e 100644 --- a/symm/t/cast256.local +++ b/symm/t/cast256.local @@ -467,3 +467,225 @@ cast256-gcm { 992b8af618edee3cfc8554dff63c15cb2767f995be01271c2cfd8fd552ba9736e3b40674bd386359c6ad649bd6ec0259891bdfdfcd b50c46ca1142d5d4c72930495fa48515; } + +cast256-ocb1 { + 60d7bcda163547d348b7551195 + e77022907dd1dff7dac5c9941d26d0c6 + "" + "" + "" + f4e4aa5505f37af61a5a972c9fddc162; + eb14ad568f86edd1dc9268eeee + 533285a6ed810c9b689daaa9060d2d4b + 60 + "" + "" + 584463e75d3ac1157672be951d0055a0; + 03062365b0a54364c76c160f11 + 896c4794846ecfa14a7130c9f1371206 + "" + 34 + 5c + b394bb4ab2b10e6e8cf2367e54a31532; + c9519848a877ff77bf79192a5b + 50ade5d9cd739a3d1f337f29549e6b0d + "" + 27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e + 5e5c6671bcd32b508fcdf1290a9270f30ac874189f9e647431527ad1e4ff12bd82060a376c2668bbaa4716e80bbc9884 + baeb21b394d13ec32b91057c7bf09405; + 6057acc87638f508046733d9ff + 61cdbda3b3e9878731ebfedd4705e505 + da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5f + a450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54 + 04f1f1082ac15c13cce9ec3c1fcbe8691ac8c736973073538f54a2cbc387064256e8add5a710c2102f0230773d54e1a7 + 6e9c01e8e1cb63e1e545a84f84280577; + efc9a38378c5b93bf4f2aad260 + 5faee2b03fb648e27fff63102758fe2b + "" + 69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9e + ffd476af7d1a5f68a96ecdfb466048936ba4d8c91e81057b23305c0d3120a0f30bfa23abcb7d3497912ceb161471933582a715b3ab + 1d3aa8cb71b538852d3e674e5bf3615d; + b53b571ea629c54d57dd2d42f7 + 0800df9fcbaca48b77dba189196d1ebb + a10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b + 0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da67 + 4d82601ad1a7e07573bed65ed8da86942029c74dc50df0e0f80b00bf3745f4266652f1e017340a07e94f96333f3333d61d0d940e5a + 34184bf2c44520892ed7e493d2af584a; + 94c18b5337685a96ed65b9ac + a338527ef19b09c063c46f88de9fd41e + "" + "" + "" + 09b578e0b6e9577963d2995dcd8f0bd5; + 72d7b97e23e6eabdff3bcd21 + 1499268878dbf30f1dad89d4b9b12012 + e4 + "" + "" + 80b1ce3d1a2d08a260dcffd4a9f16abf; + 713df46795630e7952d22bb0 + 2d7100b8b649377d20a8f083455b663e + "" + 4e + ce + afd445d169a181a0d3ab494c21e853e0; + e1315f3c8f2aebfa921451dc + d1af5813b70d30ce2f1fef6ef315d079 + "" + 8391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e303 + 4e1f0bbef82b78b779df16313c391c02bd6f7345ce682a14b23b2abb89a2096e54a1de1109e918c370716ebdc875b2d4 + dffb8a8a04a9255086211180d478d1b7; + 08be3c31e6bc58c0b7cadcb6 + 58b970e47479a684b5aefa69a4cd5214 + 7ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9 + f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908 + 499f455e969ad8bc52698430481a1c43a6cb786edb33fcde2407be7a18c6477d35d59eee05c523f870918e68500b78cd + 0d448fdf7f32a1b4ea521a182677dd36; + 445608fe95e81c2533e31c9c + 1a9851bc2810d858cbbc8424d126b807 + "" + e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3f + 5d96f90a43251e531c7932bb2bd9b281f8281589ba1c490ddf3c57a32516eba4bd0eb418af024566da98156a0f83def4b51b2bb90f + 43fecf4cb095b89844141707fd0d2643; + b90e1721b730374ffc9bc597 + f56ccbb2f294b38766fc69f6a9f2c094 + 5ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff6 + 778554acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f + ca44fbee713e258d9aea6a41b419530669e861a4c0beadc5653841d50680ab7fed4ad201ed83833d26e8afa66b8a91173eae53bc59 + 82a696e7b8a54d2cbdceedfae2d7182b; + 9a3e8128f8743d16 + 687b7bb8deb9bd205b70e04c091d205c + "" + "" + "" + d92ad5b9acbcf8fb954dbb262344b172; + dad9e9a79b1abf91 + b0851e5ca605ac845139958701167750 + 8a + "" + "" + e5e0cdba48ea323b69c3fd7873c61ac8; + 15dde524af3e2bee + 0646541a42c2ecccb44d65bad397abfa + "" + f5 + 29 + 989ebeaeb57f545955d5c2b8a76a5457; + 29ee41cf9a05c7ef + edef3401539c51d2a90bbf7f1bfc338a + "" + b0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b980 + f5017b00265a7b059589fe8549cd0d622805099dcf5d466a35dff3c0acbf40c1116ca692ec2388ec1fdbffdbfcc727f1 + e00724826deae7efecaff58c6ff8dc4f; + 2068a9f891bc5ba5 + afabf8c3122d12d7ff3c41122d70d17d + 4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad68 + daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9 + 38e8e939b456444e7a6dd8dd56c53376dfa8896e37a9cd10b16c5a5a2daa0ee885a2d3df7925fe71b8ad09d35e722a8c + 81f8c645830a84009214a06300fc2feb; + aea3ccf860b00097 + 40763d96836c5f87b95460938de1288c + "" + 69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d9645563a308b + a7e718049be63223f6fcf229b7f907650bf6e10e8f53425f395df8b8aedf0658b001e1b1e717e75ba1b3750c9fa03714dbc5efeffa + e9fb84545896f7a672652dab4176b86b; + a60076817523bd2a + bf1261b089d8f23a9c2835076a23faac + 2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd56f6f24e33958b8c2e2352fd61e4fa + 8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578 + e8f501b22016ada9cbfef68407a289863b7d3880603c3da8ea796352253441971cdd0171e8b57dcb32c58a078d439d523f36e17889 + 2b2a2e481234b511a0fee70c0924f67c; + c8ec4837898a92142b5b0677da1ac27311 + 7b45bcfff5d5f8b6fde2893232a9f81d + "" + "" + "" + c1cab79fe94cbf28ab64b07b34396c84; + 14517ffae475f6b94a43a67b3d380d2f9a + aafe2dd721c0095c8808847689211450 + ba + "" + "" + 743df0e8509186cfb6ce313315f591df; + 8095ffab1eaadf66fd22ac1976063e113a + b61f813e28a1397a7974a1d7f4220c78 + "" + 5f + 26 + 503f2efabf0d67ef1e3ad58f79d6f17d; + e426a5a0e80f678d404147842941feeffd + c2eb44dc8c0d5e8f444f7f4e0c893959 + "" + b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e2414ebf47970e560475cff206877de69146acc3 + 1e06a0e13fc9f0db0a30711b19af2ec7eaa3927ec5338711ceb30b6610c76e473b7a3668ece81dc0f73253a516413982 + 53954399118d5578d98e208d426b0366; + ab6cf8556b7aa776945948d1b8834df219 + 6c92ec1718dcdeee0d52d9539726d281 + 0391b3f9d10c39b07ae8f08ce7cee4758a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa + 4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1cccada8c1a0 + a4d6895902d47c9ef748ad8517e2d12561e2c068f16250af0fed5f2e2ae5afbd7f207ba0511039c9ae5562d230a2fac4 + 1ead7569ca82cb5cfd6b06fe6956c91e; + a9aabb6c4e3c3554f8fb1ef61614c27029 + 5dfc0ca6551ca4bdb75359f91cb9d921 + "" + 056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cda98ad6cf2bacf6f9fd3f821330c43f3d + 0a97b9588a0aff4d72af4e22c74f318a40355d94e0e0b200a0f8d06d5bd9d54728665f613e0bba43618f384303c3332e7bb746ec9c + 99bb95cd33b76350d1b7de4543001f0e; + f6c2b3fac7cbcf96523d4723f91801325e + b8553236651c96788d73d192ee53b3f3 + ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f16f64b837 + bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b5 + a3a36df6117ba70650188e6b240237f97b545f08ad010f9eff2cc0a7ced297c38c495ac0f293cd4a6d9f56d96e31b17f64c7bcf949 + 6bab5e7330a0c1f6a651f0a33e17327f; +} + +cast256-pmac1 { + 60d7bcda163547d348b7551195 + "" + e8bbe6976040b637c5730cead91a9243; + e77022907dd1dff7dac5c9941d + 26 + afcd96681e4a0ed5af47bb8b17d41497; + d0c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f1371206 + b584d84fe844382627cede2f7c6e5299; + 34c9519848a877ff77bf79192a + 5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd8 + b232cc4c44afe1700f942c996e05e589; + 8374d8cde8e160ad10997a21 + "" + f0389f03e4cfb0f88b4016b8a96703bb; + 635c6d62c9269029df3e6057 + ac + 754f863997eb465cc5ada5e2febd22a7; + c87638f508046733d9ff61cd + bda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb6 + 407841bdebb8eb02d282ef5890f76dbf; + 21b7f65b000961040ef2f9b2 + fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c5 + 0ee25678e76d4bfd0bd892417f3a4aeb; + 4215abd6b3ad54ef + "" + d31ba003e87b06c6f0eb3c9e93090855; + c9a38378c5b93bf4 + f2 + cd4ec1c2080823a36b6a223b15c6f9db; + aad2605faee2b03f + b648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219 + 8c621081c3ad80573f0003d5ed7b7ca8; + bfb474fd71d891f2 + 4bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9f + a61047ab500558a62e494702a55f0426; + c2712a199e533fa9156308cdec3f768281 + "" + d7db14580abbffd94087bd893c44bb9c; + e040a9b9a222bd689aef66f5306ceb0c6b + 08 + f30bab211ce253887d48d7788411a8fd; + ac8b0a22260c571b4a42bb8fdb233bfa6a + 5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65 + e7cb4245e3ce926311a964eaff43f853; + b9aca338527ef19b09c063c46f88de9fd4 + 1e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d + 37e48b490fc5476f6a317210987af58c; +} diff --git a/symm/t/des b/symm/t/des index e3eee4ab..6b2c1b02 100644 --- a/symm/t/des +++ b/symm/t/des @@ -312,3 +312,117 @@ des-gcm { c34cf61443b0c83d4120ed5e4ffd2469382732dfb776bc2ce6771cfaf6 346dc157ce8660d5; } + +des-ocb1 { + bef260d7bcda1635 + 47d348b7551195e7 + "" + "" + "" + 1e777d9a35a9e879; + 7022907dd1dff7da + c5c9941d26d0c6eb + 14 + "" + "" + 90dff887c781b59b; + ad568f86edd1dc92 + 68eeee533285a6ed + "" + 81 + 55 + 5c9be7f28d9f3021; + 0c9b689daaa9060d + 2d4b6003062365b0 + "" + a54364c76c160f11896c4794846ecfa14a7130c9f1371206 + 98fabe1568fd4a31b60b6b90cc58dee9852314abdf9f4d89 + 32bf6f1f094d55d1; + 34c9519848a877ff + 77bf79192a5b50ad + e5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136 + 512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad + ec6d227abc440c6ece3ba42013676031c0fb2960d0d65985 + 485047e83b3b11af; + 10997a21635c6d62 + c9269029df3e6057 + "" + acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da14 + 1b7100307ae4b3ca2e3f973e2ccd11be6245f9b081a36cc023801d9a8f + 5e2e02663e595bc7; + 35dceaa7b1cc49ae + 1d50c38201a89447 + 6b3f102b752eb9529533966f27043eb621b7f6 + 5b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f21 + 23ba63682d64c1e2ed3c14de44c492cf82ac3c63b1e85ae1d5905c1577 + a2786c37e5b03355; + 5eb57bb3a4f3eb + bbb18ac6c95a97a4 + "" + "" + "" + 846708610518ffc4; + 8030370c33d090 + c54215abd6b3ad54 + ef + "" + "" + 152246d59c398d68; + c9a38378c5b93b + f4f2aad2605faee2 + "" + b0 + 79 + d74b0529249254f2; + 3fb648e27fff63 + 102758fe2b69ac26 + "" + afa3349829b94586306fed54154f8f28523c03d4de160015 + 90d6861b964eed693b629e01188d4e50fcd236e71ccdc734 + 0611bd11e7649655; + 7846b710ee7280 + 7a2219bfb474fd71 + d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f7 + 0800df9fcbaca48b77dba189196d1ebba10b0467cb9fc271 + 9fb915d584569a6bc699706d225c9f131bed57d39b7bb4e3 + fdc4da4d6d428967; + 2a199e533fa915 + 6308cdec3f768281 + "" + e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb + 78e88cc7c809ee0d77e4550e3ba943fa3390b0e035bb4569fff7bc58ce + 821ba4f7ffd7cc02; + 8fdb233bfa6a5c + fb0bad7d95214ade + 49cb3b6f5fe8368131115c037ba323fe1dc815 + 1784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09 + e6b1c822199a5821020dea58a059635e7ceaa997c3bf8338bade196e39 + 417dceee9a662328; +} + +des-pmac1 { + bef260d7bcda1635 + "" + 87398f9b84eacbd3; + 47d348b7551195e7 + 70 + c4a6d220ebf7ce9e; + 22907dd1dff7dac5 + c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed + 9847df50037cb1ba; + 810c9b689daaa906 + 0d2d4b6003062365b0a54364c76c160f11896c + fe45499fb92b19ae; + 4794846ecfa14a + "" + c7fc008258249c34; + 7130c9f1371206 + 34 + 5d742a297938a8a1; + c9519848a877ff + 77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4 + 7cfba1467a3d156a; + ba234085406a61 + 36512061f7080cc07df0591d8fa21f2dd88374 + 0b547da65d93cc08; +} diff --git a/symm/t/des3 b/symm/t/des3 index 32945cbc..868dfd05 100644 --- a/symm/t/des3 +++ b/symm/t/des3 @@ -560,3 +560,225 @@ des3-gcm { fc2c1515c5fc3f727fb3e98ba249a076c3da8668f5e89db6e7956de064 a2411e499cacffef; } + +des3-ocb1 { + 60d7bcda163547d348b7551195e7 + 7022907dd1dff7da + "" + "" + "" + cbd24ffb264f16ad; + c5c9941d26d0c6eb14ad568f86ed + d1dc9268eeee5332 + 85 + "" + "" + a6e1ad4b16d8d99b; + a6ed810c9b689daaa9060d2d4b60 + 03062365b0a54364 + "" + c7 + a2 + df1618790e682c74; + 6c160f11896c4794846ecfa14a71 + 30c9f137120634c9 + "" + 519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29 + 51d9c953558e88ed892717edb5839471bab17ebda859fa2d + 673b34362686d614; + 549e6b0d27a4ba234085406a6136 + 512061f7080cc07d + f0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62 + c9269029df3e6057acc87638f508046733d9ff61cdbda3b3 + 9e9db1333c288d89f1d852453679fd4a9df932ee424b56e6 + 0e15cfad6c6299f4; + e9878731ebfedd4705e505da1435 + dceaa7b1cc49ae1d + "" + 50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b0009 + 79f213b6e9d3b4a233652364a0741f0a3905112cdcc65fc6a1f02b20e1 + fb385d47f056ea7a; + 61040ef2f9b2fc5fa450727a9b54 + 2cde52ebfda19d0c + cc520f215eb57bb3a4f3ebbbb18ac6c95a97a4 + 8030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605f + 1b7e1e5164841c4478deb10a87cc07f70db15af1b12790fb9f8ea16d79 + e0d1715f5e9373c7; + aee2b03fb648e27f + ff63102758fe2b69 + "" + "" + "" + 4b884a39fbc7c745; + ac26afa3349829b9 + 4586306fed54154f + 8f + "" + "" + d445ece0ef590e55; + 28523c03d4de1600 + 157846b710ee7280 + "" + 7a + 0e + 020e28ecb1a51fd3; + 2219bfb474fd71d8 + 91f24bb65d156325 + "" + 9f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77 + a683ff420e8f9ea9467dd595afc344a0d25d20ea01c93b21 + 2748703cfe3e8226; + dba189196d1ebba1 + 0b0467cb9fc2712a + 199e533fa9156308cdec3f768281e040a9b9a222bd689aef + 66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa + aad5b6cbb6216005d17943984bb41bc4b6ba873ca43cb46b + d2c66cd04f05868e; + 6a5cfb0bad7d9521 + 4ade49cb3b6f5fe8 + "" + 368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b533768 + db8d34944ff3c0cdda5436416fb627c58f9b02d925b59a9b68fbbeda2a + 06b84a7b2c9665a4; + 5a96ed65b9aca338 + 527ef19b09c063c4 + 6f88de9fd41e72d7b97e23e6eabdff3bcd2114 + 99268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d + db5cd9c16b245b3b5078d900f5d270cb81567d73703c2c95925a7237d3 + eef56cad5b7f2ed2; + 7100b8b649377d20a8f083455b663e4e + e1315f3c8f2aebfa + "" + "" + "" + 56ad76ec7f013571; + 921451dcd1af5813b70d30ce2f1fef6e + f315d0798391805d + a0 + "" + "" + 6542ea8693b8cd18; + 8da3aefc5f8584b7c5e617669c0f16e3 + 9815d4e9cfce3ed1 + "" + ec + 35 + 90d173ba8349a22b; + df3d264a7f16cb16c2e815f422cdf0c8 + e30308be3c31e6bc + "" + 58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed1 + 64348fc5f46a28edab91b5d41e27ab352fa8ca90d322b603 + b894f7a0cf918ae2; + 2ca986981a874498ad0abef8bc4fcb70 + e27e98ef1f0446b4 + 2fb144d44b6d00f06dc188d472a784e0c6f21195a3b9f4ae + 985511265febd11c164720eef9eb1c8dd0b00951f2846490 + dc70ae429c73fd871a49ab5aea8ed37196a151ad8d09dc3c + f76847ab0c01c5bd; + 16ed00456331854bc78bf43966eb0cfa + 9138ddc399084456 + "" + 08fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa0 + 7fcb46d49d63ecf4d49c4578841b1cc435362eb989098c8729fa7c8b7c + 170621267d144a86; + 89c3f9099c5ffb824173d7634c04226f + 30cbb7f0e4a973a8 + cd190107314717a77456f3ff669c732b58db8f + 48af65f7cc9e3fb90e1721b730374ffc9bc597f56ccbb2f294b38766fc + b0ecb19f5804122fb10b38ce2354dd1b9001c8e4f96d9f3a8b054ef79b + e3cfbcf2b101c897; + 69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4f + fa91544485f1a125 + "" + "" + "" + efc673f15d727525; + 8b2b9b8f0911e32d65cc1770a18cbfe6effd1ff677 + 8554acf1270485b2 + 03 + "" + "" + 4be4ef9aa08e493e; + a3c1c4c967c0a458cb948bdd409b687fa3a6827b48 + 0aa3a4c84cef64f6 + "" + c9 + 60 + 3c76403cf147a5a0; + b53bf8f957f4b03cf43e89957f9a3e8128f8743d16 + 687b7bb8deb9bd20 + "" + 5b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac84 + 6a5f5444d206a359b01efa29f51c6d3f13c050b663f1ea32 + 4ed8de43ccd151ef; + 51399587011677508a15dde524af3e2bee0646541a + 42c2ecccb44d65ba + d397abfaf529ee41cf9a05c7efedef3401539c51d2a90bbf + 7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a5718fd2501 + db5dbdd217bb8761aea78de2a51b9ab2bcb9559bfae22dfa + 002834c8f3b3d2f1; + 4107c8e7d715a92add9589d1f5c054b2d983514605 + ec590294a319b980 + "" + 2068a9f891bc5ba5afabf8c3122d12d7ff3c41122d70d17d4569eaff59 + 9a6b4f24093acdff2a03f9a40494e1e6dd2ed10be75cdf9fb4381f7a1e + c492487046c80434; + a332ba58d5d5589bfe079753ee1a957eb6d6699e6b + 7ea2725cb2dac07e + cde95759ac46fee6dda7abc8ad68daac90cfe2 + 2d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e6 + 14bc7ec21221fab0d0a55be9d505c315ef5ef5a01c9a5d8c71c6a8a569 + 598c7a7659a4ece7; +} + +des3-pmac1 { + 60d7bcda163547d348b7551195e7 + "" + 4ee97adb08a4f1ca; + 7022907dd1dff7dac5c9941d26d0 + c6 + 9280792119f1c90a; + eb14ad568f86edd1dc9268eeee53 + 3285a6ed810c9b689daaa9060d2d4b6003062365b0a54364 + d3b9cda12ef855c9; + c76c160f11896c4794846ecfa14a + 7130c9f137120634c9519848a877ff77bf7919 + ccb225988c72647f; + 2a5b50ade5d9cd73 + "" + 29b6cbd6a39de3ea; + 9a3d1f337f29549e + 6b + a44255ba14c7c82e; + 0d27a4ba23408540 + 6a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8 + 4ae6eee38bf7dfc3; + e160ad10997a2163 + 5c6d62c9269029df3e6057acc87638f5080467 + de786269abfb7dce; + 33d9ff61cdbda3b3e9878731ebfedd47 + "" + 8e4e4d58688d0661; + 05e505da1435dceaa7b1cc49ae1d50c3 + 82 + 1eb3af80bd877e09; + 01a894476b3f102b752eb9529533966f + 27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b54 + ba1f17ab53c77f9c; + 2cde52ebfda19d0ccc520f215eb57bb3 + a4f3ebbbb18ac6c95a97a48030370c33d090c5 + 614b8997f580de04; + 4215abd6b3ad54efc9a38378c5b93bf4f2aad2605f + "" + 79469a20ba34f900; + aee2b03fb648e27fff63102758fe2b69ac26afa334 + 98 + 69f377b3ea8e925c; + 29b94586306fed54154f8f28523c03d4de16001578 + 46b710ee72807a2219bfb474fd71d891f24bb65d1563259f + 6e0adaf190bd2ea1; + 9eb53b571ea629c54d57dd2d42f70800df9fcbaca4 + 8b77dba189196d1ebba10b0467cb9fc2712a19 + 129deaeec0e03d30; +} diff --git a/symm/t/desx b/symm/t/desx index 14b8e311..bbc1f67b 100644 --- a/symm/t/desx +++ b/symm/t/desx @@ -512,3 +512,225 @@ desx-gcm { e6bc35974509d938a953ad32ae829a5cced3f2846e756fbc99247ae1d5 623e465c7913e6b2; } + +desx-ocb1 { + 60d7bcda163547d348b7551195e770 + 22907dd1dff7dac5 + "" + "" + "" + caa9db9c2fd96b20; + c9941d26d0c6eb14ad568f86edd1dc + 9268eeee533285a6 + ed + "" + "" + e3f19e04d004771a; + 810c9b689daaa9060d2d4b60030623 + 65b0a54364c76c16 + "" + 0f + ce + 274fa8d10ec38416; + 11896c4794846ecfa14a7130c9f137 + 120634c9519848a8 + "" + 77ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d + 286bf711ca2f9d9e6e3ea11390d46225834d56c3cadef9f3 + 8a3e9e27a8bd1267; + 27a4ba234085406a6136512061f708 + 0cc07df0591d8fa2 + 1f2dd88374d8cde8e160ad10997a21635c6d62c9269029df + 3e6057acc87638f508046733d9ff61cdbda3b3e9878731eb + e9a1c82381cb138e2b635f58ec9ad77e81eee97cb9b725cf + 2c08bbda5c67ae28; + fedd4705e505da1435dceaa7b1cc49 + ae1d50c38201a894 + "" + 476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2 + 77c71af12f7e75599be17868608c1e66a767d5324a43d136777c8298f2 + da3b49f25c22648f; + fc5fa450727a9b542cde52ebfda19d + 0ccc520f215eb57b + b3a4f3ebbbb18ac6c95a97a48030370c33d090 + c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e2 + e93425b446b6e0ee7622d56eb8781430e61c0b79fbf75b5129e66be0df + aaae9e5df22ffd66; + 7fff63102758fe2b + 69ac26afa3349829 + "" + "" + "" + 2454c6d4af0543c6; + b94586306fed5415 + 4f8f28523c03d4de + 16 + "" + "" + 57f09f05b22aed2a; + 00157846b710ee72 + 807a2219bfb474fd + "" + 71 + 07 + 98a03e06427d6c6e; + d891f24bb65d1563 + 259f9eb53b571ea6 + "" + 29c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebb + 79bc018164ccf90123ed426c5e261171c67c69512e8f41b1 + d83eb8863b890872; + a10b0467cb9fc271 + 2a199e533fa91563 + 08cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b + 08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95 + 2b050493ae97a338a539cf0a46f443a137a90bce681c3cf7 + cca806fe40ecdf0d; + 214ade49cb3b6f5f + e8368131115c037b + "" + a323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca3 + 49d25f8e34f3dfac53f8409552f42c89167889d2cbe2af5ba0ba4c2dfc + 7051575c9d170e37; + 38527ef19b09c063 + c46f88de9fd41e72 + d7b97e23e6eabdff3bcd211499268878dbf30f + 1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d + bfe9acab806680bdc205fdaf72e274eeec6698801454fc94a8c0c16262 + 4f53c9ecfbb5f758; + 20a8f083455b663e4ee1315f3c8f2aeb + fa921451dcd1af58 + "" + "" + "" + 0230f537d84fad83; + 13b70d30ce2f1fef6ef315d079839180 + 5da08da3aefc5f85 + 84 + "" + "" + 03faa4ac602dc7ed; + b7c5e617669c0f16e39815d4e9cfce3e + d1ecdf3d264a7f16 + "" + cb + 18 + a514a198a9c98049; + 16c2e815f422cdf0c8e30308be3c31e6 + bc58c0b7cadcb658 + "" + b970e47479a684b5aefa69a4cd52147ed12ca986981a8744 + 7fb1ffb913b75f8d4c7ea6e84a9f2fc911380d1b8ee343f6 + 2a496d014b16a40a; + 98ad0abef8bc4fcb70e27e98ef1f0446 + b42fb144d44b6d00 + f06dc188d472a784e0c6f21195a3b9f4ae985511265febd1 + 1c164720eef9eb1c8dd0b00951f284649016ed0045633185 + 722aa22fa02f13d32187730cb051fa3b49fcd9a308a9d453 + c59459ba824bc1a5; + 4bc78bf43966eb0cfa9138ddc3990844 + 5608fe95e81c2533 + "" + e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb + 86c1f74d4db77a90398574f168f83e6de15e6a2b7b2afa621590dc0404 + 4543ce1f721609f4; + 824173d7634c04226f30cbb7f0e4a973 + a8cd190107314717 + a77456f3ff669c732b58db8f48af65f7cc9e3f + b90e1721b730374ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945f + cfa9cfeddbc593bd6812352a35fa31e2a53b1840ea430ee8e2085d60da + 90bfab3707b05a6a; + fd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b + 2b9b8f0911e32d65 + "" + "" + "" + 7a861a7d3af428f9; + cc1770a18cbfe6effd1ff6778554acf1270485b203a3c1 + c4c967c0a458cb94 + 8b + "" + "" + ff1c4c7bc330ef39; + dd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f9 + 57f4b03cf43e8995 + "" + 7f + d2 + b1cb7d2102d5c32c; + 9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d20 + 5cdad9e9a79b1abf + "" + 91b0851e5ca605ac8451399587011677508a15dde524af3e + 9bdb27bbfc7389090471f3cb7051cb8d1fd530005e21a93f + 3bd9da825a402482; + 2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf + 9a05c7efedef3401 + 539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f + 7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d9 + b569d836ce07d26017bdecdc06938abe11f29988e2ee4eaa + 7c12ae284dab4140; + 83514605ec590294a319b9802068a9f891bc5ba5afabf8 + c3122d12d7ff3c41 + "" + 122d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d669 + c893ff49cfec7dfa04b6c966ff8e2de2dbca702ed6cd0416b4d1e12b2a + 4f6e8bdaed610893; + 9e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad + 68daac90cfe22d2f + 1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6 + 254d980398bd94e66eb4563d405e51881e99027b8ab9aea3ccf860b000 + e5977138d0d737d7b616047aa523dc1b7d5b5fb6fd20e26831a2f34bb8 + 6e42e08c54165845; +} + +desx-pmac1 { + 60d7bcda163547d348b7551195e770 + "" + 4af29214a7b8f451; + 22907dd1dff7dac5c9941d26d0c6eb + 14 + 497e34853501b17c; + ad568f86edd1dc9268eeee533285a6 + ed810c9b689daaa9060d2d4b6003062365b0a54364c76c16 + be4cb7dd9428ff3f; + 0f11896c4794846ecfa14a7130c9f1 + 37120634c9519848a877ff77bf79192a5b50ad + bd394b556e88691a; + e5d9cd739a3d1f33 + "" + cf37166cf40c5a63; + 7f29549e6b0d27a4 + ba + 36f50dc5278f6d48; + 234085406a613651 + 2061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10 + afa0c00f1d78a165; + 997a21635c6d62c9 + 269029df3e6057acc87638f508046733d9ff61 + 0cb5b03ffdf32b7e; + cdbda3b3e9878731ebfedd4705e505da + "" + 12307602abf4cd83; + 1435dceaa7b1cc49ae1d50c38201a894 + 47 + 7b6c2a63bc1599df; + 6b3f102b752eb9529533966f27043eb6 + 21b7f65b000961040ef2f9b2fc5fa450727a9b542cde52eb + ec16536d65cbf867; + fda19d0ccc520f215eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6 + b0548570d2b43e37; + b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648 + "" + 1e5b6857738e4db7; + e27fff63102758fe2b69ac26afa3349829b94586306fed + 54 + 3739adab4d52a786; + 154f8f28523c03d4de1600157846b710ee72807a2219bf + b474fd71d891f24bb65d1563259f9eb53b571ea629c54d57 + 54f3e5fc1458f0a3; + dd2d42f70800df9fcbaca48b77dba189196d1ebba10b04 + 67cb9fc2712a199e533fa9156308cdec3f7682 + 462473f2102f3c1d; +} diff --git a/symm/t/idea b/symm/t/idea index a77126ba..0ab91400 100644 --- a/symm/t/idea +++ b/symm/t/idea @@ -156,3 +156,63 @@ idea-gcm { 8508e77f69eba79e7dd8b644ed31dba2f0eba90d09b1170ec17caf72ee 6c86db8654126e19; } + +idea-ocb1 { + e4bef260d7bcda163547d348b7551195 + e77022907dd1dff7 + "" + "" + "" + 6c1f67d06c352235; + dac5c9941d26d0c6eb14ad568f86edd1 + dc9268eeee533285 + a6 + "" + "" + 461d68824249a125; + ed810c9b689daaa9060d2d4b60030623 + 65b0a54364c76c16 + "" + 0f + a4 + f29d06f84026383d; + 11896c4794846ecfa14a7130c9f13712 + 0634c9519848a877 + "" + ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27 + 02d1b52db3743fe74199d2d47c7b9a5b40be540fd3305c63 + 95db9f9e14cc4137; + a4ba234085406a6136512061f7080cc0 + 7df0591d8fa21f2d + d88374d8cde8e160ad10997a21635c6d62c9269029df3e60 + 57acc87638f508046733d9ff61cdbda3b3e9878731ebfedd + 16241a876ecaa1787050ae161dc95e08b3c9f3f32f4c28e6 + 4c3a1cbf28420f74; + 4705e505da1435dceaa7b1cc49ae1d50 + c38201a894476b3f + "" + 102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa4 + fc37976d31a17e5c9184a761ade81acb146791248da7073854564e80e2 + 69afdd038f3f443c; + 50727a9b542cde52ebfda19d0ccc520f + 215eb57bb3a4f3eb + bbb18ac6c95a97a48030370c33d090c54215ab + d6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff6310 + ca23f10e82cad6a83e29296f3040d728e2c19d8a70da3c85bfd6392e83 + 13a82d59cedb63ae; +} + +idea-pmac1 { + e4bef260d7bcda163547d348b7551195 + "" + 487cb8bbd49fdf9f; + e77022907dd1dff7dac5c9941d26d0c6 + eb + 61e71d184211ae2e; + 14ad568f86edd1dc9268eeee533285a6 + ed810c9b689daaa9060d2d4b6003062365b0a54364c76c16 + 2a59b4037636f6e9; + 0f11896c4794846ecfa14a7130c9f137 + 120634c9519848a877ff77bf79192a5b50ade5 + 64b5b29952d302fd; +} diff --git a/symm/t/mars.local b/symm/t/mars.local index 2b0dcb47..a5977585 100644 --- a/symm/t/mars.local +++ b/symm/t/mars.local @@ -491,3 +491,225 @@ mars-gcm { 9f02629363a56a6e8067f76d0df265f5d1d4774c129186fd96e0826e4d5a6fd643b6fc7e484caa72575f7774f8d7d55529c816b3a8 77d7548dfeed0ca41810c69586ef999d; } + +mars-ocb1 { + 60d7bcda163547d348b75511 + 95e77022907dd1dff7dac5c9941d26d0 + "" + "" + "" + 4653e79c83c9692f680b6ab67aa4cb1c; + c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d + 2d + "" + "" + 9cf228b3a0a873d910ef08325178c9ce; + 4b6003062365b0a54364c76c + 160f11896c4794846ecfa14a7130c9f1 + "" + 37 + 7f + 3194ce1f7b3c055b5c465e9449713d73; + 120634c9519848a877ff77bf + 79192a5b50ade5d9cd739a3d1f337f29 + "" + 549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c926 + da19eb03799876ac0c7f25bbb54e051149623d839822c5305b2348306fb687a95debfb6d8463b8f61eff55879a8e4854 + c9315ab551796c3230de8d1b783e41c6; + 9029df3e6057acc87638f508 + 046733d9ff61cdbda3b3e9878731ebfe + dd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040e + f2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215 + e6fffaeff62574ca11871e98539b5d6252724476ceaf2e6f7649e25df4c7fa2d1168bc6913bfcabbeb65cc7673d64445 + aba7309b9f99d4d595029cb68eb9dfef; + abd6b3ad54efc9a38378c5b9 + 3bf4f2aad2605faee2b03fb648e27fff + "" + 63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb6 + 41d2c5f2747177da8fb403142b15976849d6092a1f30a00a7dd86dfeae5e9a4d37a2b63ab07ee4ef461bb0c5a0ccce42767d08bf87 + a5990263e713d60c619a4c8e15b6b3c4; + 5d1563259f9eb53b571ea629 + c54d57dd2d42f70800df9fcbaca48b77 + dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f530 + 6ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc815178487 + 996f3de0c448f6bcc7a05966caf6b55b9a6e89038b7b1dcf0e227940a481c7d01a8deb9ab18c66e6e40f77673084abf2237348d737 + 12639c6038c9de5dac44e56672cb55aa; + 3f0eb5b647da6794c18b5337685a96ed65b9aca3 + 38527ef19b09c063c46f88de9fd41e72 + "" + "" + "" + 2a302865877be6802bf265563679f4a6; + d7b97e23e6eabdff3bcd211499268878dbf30f1d + ad89d4b9b12012e4713df46795630e79 + 52 + "" + "" + e504301acfb3dd72388b857ee7030835; + d22bb02d7100b8b649377d20a8f083455b663e4e + e1315f3c8f2aebfa921451dcd1af5813 + "" + b7 + ae + e2242b2d76d0f58177d422c14007837b; + 0d30ce2f1fef6ef315d0798391805da08da3aefc + 5f8584b7c5e617669c0f16e39815d4e9 + "" + cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4 + 289ee6d05f1e2afadef55a9be57142c9434db665577e5e471466dcf0cd8dcee27b8337966c5f1a45a88f87801fc4ec61 + de6956f5723d140cb3147978cdaaded2; + cd52147ed12ca986981a874498ad0abef8bc4fcb + 70e27e98ef1f0446b42fb144d44b6d00 + f06dc188d472a784e0c6f21195a3b9f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed0045633185 + 4bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3 + 6887543c971afe587132ed940556ec6275f8e92d4f94bcc8f31ed297ebaa6757c4353fdc1f6bdb1a870c22336f825a96 + abce9a9e9c6f5d09e99c93d7eadfede3; + f9099c5ffb824173d7634c04226f30cbb7f0e4a9 + 73a8cd190107314717a77456f3ff669c + "" + 732b58db8f48af65f7cc9e3fb90e1721b730374ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1 + f449b1339ac9985a1c4b342d1b0a5c41f15b8b2aca90c12846c792ae42057b3fd7b41111c8db756adf5a2ef5e1546e57fa0243cfb7 + ba66681acccec14ef865b02f3c39b3f6; + fa4ffa91544485f1a1258b2b9b8f0911e32d65cc + 1770a18cbfe6effd1ff6778554acf127 + 0485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf4 + 3e89957f9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677508a + 7e1008b868fc1e9839963cd536e425796a5a83fbabd727f72bdf86fef8cf16929a5d491a4657a4228a19e366a213f820cda50268b2 + 3f0cd60dee1bf4bedd8415232e0e5a2f; + 15dde524af3e2bee + 0646541a42c2ecccb44d65bad397abfa + "" + "" + "" + 158bc7dac7095b407e95a345ec6362d3; + f529ee41cf9a05c7 + efedef3401539c51d2a90bbf7f1bfc33 + 8a + "" + "" + 8bef95789b98fffc2e3a3324237b03c4; + b0ef5746ea8fdccc + d213e33f7e8a5718fd25014107c8e7d7 + "" + 15 + bd + a88cd72e0e1e676c5c011dcbc14d2e46; + a92add9589d1f5c0 + 54b2d983514605ec590294a319b98020 + "" + 68a9f891bc5ba5afabf8c3122d12d7ff3c41122d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e + 6ed48f6abe15219da489442825e579452118ad3fef19d76292398eaea3a27d2cf358a5a1dfc1810c68b5e17db646d4d3 + b19f3b616690535f642ae58f4263880c; + 6b7ea2725cb2dac0 + 7ecde95759ac46fee6dda7abc8ad68da + ac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9ae + a3ccf860b0009740763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1 + f5c8dd655912fff44348c17cc0a0178fc55bbb12f4af3a017bc8db8b27c168d1feb19bcdd00b8f738adb541425412da2 + 820fbdee601293312a0756571cdd2389; + f6a7a3aa7e740da9 + 67828e3604b35b15ffaa6c36800d9645 + "" + 563a308ba60076817523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c39 + 201b87f6e406e13217b302fb759395dc0aa43b22b175472f45de5349ad46fd04c6fe85eb5c553432dd49fc279f668562f705ca3aa3 + f7b7990d4d35c703d03b18b009bd6a6c; + 73accd56f6f24e33 + 958b8c2e2352fd61e4fa8fec816ac861 + a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc8 + 75fba578c8ec4837898a92142b5b0677da1ac273117b45bcfff5d5f8b6fde2893232a9f81d14517ffae475f6b94a43a67b3d380d2f + 1bc1cc2a9d971ffd42de07dfe98a00df3e83baf24c8a7b658eaaad1b61726d6b9aa527fadebb284414e9d75eadd23274710de7818f + 294968c6ea337be16fa4b02cdfa33e50; + 9aaafe2dd721c0095c8808847689211450ba8095ffab1eaadf66fd22ac1976063e113ab6 + 1f813e28a1397a7974a1d7f4220c785f + "" + "" + "" + 91db1563a8a1d0f60253be719e1e41f1; + e426a5a0e80f678d404147842941feeffdc2eb44dc8c0d5e8f444f7f4e0c893959b74dc2 + 3a7bb40e7e0013e5150686d2301b43a1 + 5a + "" + "" + 83e94ddd60fb2b811905035945907c5d; + 84e81d7f5cedaa49e2414ebf47970e560475cff206877de69146acc3ab6cf8556b7aa776 + 945948d1b8834df2196c92ec1718dcde + "" + ee + b2 + 0d56aa6e43ad24239efcfcd726927fc1; + 0d52d9539726d2810391b3f9d10c39b07ae8f08ce7cee4758a386a9943e97dedfbe61e73 + 7882cd09c2b9a80f34c0fde11c2481b1 + "" + 1fc76bfa4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1ccc + b8b85de994a54ef5dbcbd85f5eaa88e2b2464262a53859300232029741b167876b6d3195c95957d5600e31de5f275da6 + e69278334c8133c3710564526e2016f0; + ada8c1a0a9aabb6c4e3c3554f8fb1ef61614c270295dfc0ca6551ca4bdb75359f91cb9d9 + 21056b7de74fc9a9b37154ce6c0b3961 + 79d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cda98ad6cf2bacf6f9fd3f821330c43f3df6c2b3fac7cbcf96523d + 4723f91801325eb8553236651c96788d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59e + 9e1e7295f6bb0cf520a77dc6bf4cae9411c79bf4d9e6a2a862efd982f4525bdd026b7ce5bb28b46bdf4bc4eb3e8e9675 + d5ca1cd9e51f5441912d15626930b798; + d034a867642d25d54756fa5c47f16f64b837bb4926214211a1c696ba172010abb433922a + 22d9fd881519165eb9d85197a21cc34a + "" + c0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b54fd9d70c70e117bf1cae71b3a56f0e7d839ea59cc783443d64f2ed6a29b96856beca + 33c0fb24bcc9948f79e7257d8816767fd83a862643e0e31b1ecde6dfc39523dbb29b396435eae70c7658cbb9442c457805713c45da + b0b7b3760231dd8ddd9a6378e27fadc0; + 34fd6544bcf86b799e2a1681160ccf055f0fd3001da597a1406d465b7b1419ea51cf858f + 938f6daafbd656445a09898eaa96ffc3 + d1d2e31e4e34c94b8bfae64825ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099f47166edf54538 + e88fbf433a7ff212085179e79771f6eee7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a95 + da25756b3f6d874af5fc62eb4d23153e0f42f476f6ef83622e6b704eac2b1c0ffe419780e789c457c51fddfda8c999b9a4eba0ae59 + 8c06ff6ecbcc83696b7a3ceb00819fef; +} + +mars-pmac1 { + 60d7bcda163547d348b75511 + "" + 88349068f0361feb5ab861422204a1fb; + 95e77022907dd1dff7dac5c9 + 94 + 68e53c106eac08332168b9710686bde0; + 1d26d0c6eb14ad568f86edd1 + dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f1 + e73b3d7d64f57c88e3d08c79531304db; + 37120634c9519848a877ff77 + bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8f + 155e94d935999190f3c4707830a1627b; + a21f2dd88374d8cde8e160ad10997a21635c6d62 + "" + 25767cba62b028dc2b28890f20b71457; + c9269029df3e6057acc87638f508046733d9ff61 + cd + 8e847f813725a45c86f09bbdf9d3984f; + bda3b3e9878731ebfedd4705e505da1435dceaa7 + b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b54 + 0f6d60ece48580fae8d7914ab7194ccd; + 2cde52ebfda19d0ccc520f215eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e2 + 922c357cc72223d59ef79018aa0fce6d; + 7fff63102758fe2b + "" + 0b46ed47aa8b8d1c15b9a1be5116955a; + 69ac26afa3349829 + b9 + 779d971e639e3f8c5e8d280d78a56a14; + 4586306fed54154f + 8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42 + 9594bd5550eddba1050516976565ee32; + f70800df9fcbaca4 + 8b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66 + 3f3100f026a9b5c53df1ef563f2e2b96; + f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b + "" + a9fdd55b4c5ff6687cd49667d60d525e; + 6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65 + b9 + 09210b235e15e9984f6d728f4d266cc3; + aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff3bcd211499268878dbf3 + 0f1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa92 + 1ea465d576f919265add525cc88c6cca; + 1451dcd1af5813b70d30ce2f1fef6ef315d0798391805da08da3aefc5f8584b7c5e61766 + 9c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb6 + b4e1b487ca7856e1a27ae343a761962f; +} diff --git a/symm/t/noekeon b/symm/t/noekeon index 91fd76a0..0ab37b9a 100644 --- a/symm/t/noekeon +++ b/symm/t/noekeon @@ -140,3 +140,63 @@ noekeon-gcm { 3e98ad97b1901fa089ddb06696ad688a3de2274b81d49c3198c17b2c1bd19556d0679d64d61f034880c89f111631bf78c4512599d7 5942a749a90e4af467a8a5782590dc69; } + +noekeon-ocb1 { + e4bef260d7bcda163547d348b7551195 + e77022907dd1dff7dac5c9941d26d0c6 + "" + "" + "" + 5081208cd2d5472d061211afba47e43a; + eb14ad568f86edd1dc9268eeee533285 + a6ed810c9b689daaa9060d2d4b600306 + 23 + "" + "" + e7162034dc92f809d9d9e7e41d9018bc; + 65b0a54364c76c160f11896c4794846e + cfa14a7130c9f137120634c9519848a8 + "" + 77 + 59 + fb7d568a9d2b0d8d33ca41930bd73d3f; + ff77bf79192a5b50ade5d9cd739a3d1f + 337f29549e6b0d27a4ba234085406a61 + "" + 36512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f50804 + 86ec994914704bd64a4a2b519d43c2efd4554cd0e7cc41a91f25137ac94218e5622df9670340515ef947f90cfe6c0484 + e72bacd856c8262a0d0bfc10ffb9fdd4; + 6733d9ff61cdbda3b3e9878731ebfedd + 4705e505da1435dceaa7b1cc49ae1d50 + c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda1 + 9d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2 + 83eac3304197940d9942306411887d6809d9f04a4bdcea111a877f2579779bbb9dcc0738ea8e05cfd3aa48823ca8abd8 + 76d9c5343a98b1a9e90c8ce4978efd2b; + 605faee2b03fb648e27fff63102758fe + 2b69ac26afa3349829b94586306fed54 + "" + 154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800 + 18adeeddc2d0656141002e939240aa51080969442d958a78b499fb587f585c6688fed54c528603e75c756c490fa9f1486775a01514 + 1974d395a27da8b706de45c0821c6e68; + df9fcbaca48b77dba189196d1ebba10b + 0467cb9fc2712a199e533fa9156308cd + ec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0b + ad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b + 8c38ca85e4711e354e2662ff977da8ed51aca92d50c1fc40e21fde2e481f93e5c9fc454881eea55c8b6758ce6bf6adff18e01825af + cbe1c75a2354cf5dc1df8a6eb6ede687; +} + +noekeon-pmac1 { + e4bef260d7bcda163547d348b7551195 + "" + 12679e29381d4258973a3d59f3405ec9; + e77022907dd1dff7dac5c9941d26d0c6 + eb + a8cf4e78783c841939afff131c3b0b42; + 14ad568f86edd1dc9268eeee533285a6 + ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a8 + 1b01bbe2a8cbae52485e4d410f94ce1e; + 77ff77bf79192a5b50ade5d9cd739a3d + 1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10 + 35b9675a79680b83422e4282cc260583; +} diff --git a/symm/t/rc2 b/symm/t/rc2 index 476eec3e..46200b29 100644 --- a/symm/t/rc2 +++ b/symm/t/rc2 @@ -503,3 +503,225 @@ rc2-gcm { a1a0fe6856d107a0b49d164b72c0102a06bfc6ea17723f7587fab4808c d797a4abd2ac973e; } + +rc2-ocb1 { + 60d7bcda163547d348b7551195e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268ee + ee533285a6ed810c + "" + "" + "" + 1a9b5d9930de70b3; + 9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9 + 519848a877ff77bf + 79 + "" + "" + c8a18423542f2476; + 192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8f + a21f2dd88374d8cd + "" + e8 + 65 + 1ad7745b69b0db1f; + e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfe + dd4705e505da1435 + "" + dceaa7b1cc49ae1d50c38201a894476b3f102b752eb95295 + 702a8f6236f63b37d12754e285b48acd278a5dd319781c47 + 4aed0840ec1cbc36; + 33966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb5 + 7bb3a4f3ebbbb18a + c6c95a97a48030370c33d090c54215abd6b3ad54efc9a383 + 78c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe + 63872e8fa08cbc02a9b67199cf4f8e805df8021d7dc7b857 + 7dc44cfa7b6a75c1; + 2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474 + fd71d891f24bb65d + "" + 1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba1 + 0e8b2f665c8e05920b18889a94a59262da8d5511e504ff00740151570d + aa8fbbd1631944b9; + 89196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f530 + 6ceb0c6b08ac8b0a + 22260c571b4a42bb8fdb233bfa6a5cfb0bad7d + 95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5 + fa9b97df764582e8b06700b70f488912e52bb40512b7e82546c98beea3 + 6125dbe65becfe77; + b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d07983 + 91805da08da3aefc + "" + "" + "" + 201550d036fd21c4; + 5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9f4ae9855 + 11265febd11c1647 + 20 + "" + "" + 980aada67611e269; + eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3fb90e17 + 21b730374ffc9bc5 + "" + 97 + a0 + 772be2781de4d5f1; + f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff6778554acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d + 16687b7bb8deb9bd + "" + 205b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac + 935c1246b3c54e88b1612b1ae91add5d006c1da2eee504bf + cb750259096356be; + 8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf9a05c7efedef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b9802068a9f891bc5ba5afabf8c3 + 122d12d7ff3c4112 + 2d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a95 + 7eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7 + e934e27dfd22901f7dee3fbdbd8380d67e381b1b0a969ef5 + 00818ef2133898d7; + abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa + 6c36800d9645563a + "" + 308ba60076817523bd2abf1261b089d8f23a9c2835076a23faac2cdd67 + 2d45ecd08b4263bcdcde76394694aadf336f30ba6b70a6109cc0c01041 + e1d92d792d66bbd0; + 771cc667a8331f0a170b66283e4f834a06148f302c3973accd56f6f24e33958b8c2e2352fd61e4fa8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a92142b5b0677da1ac273117b45bcfff5d5f8b6fd + e2893232a9f81d14 + 517ffae475f6b94a43a67b3d380d2f9aaafe2d + d721c0095c8808847689211450ba8095ffab1eaadf66fd22ac1976063e + 801610881c1b88c3db1db411c93abbac039ff78a579e99226ebecc9b95 + 21d1073d1325dd61; + 113ab61f813e28a1397a7974a1d7f4220c785f + e426a5a0e80f678d + "" + "" + "" + 4366d16a510e7a2d; + 404147842941feeffdc2eb44dc8c0d5e8f444f + 7f4e0c893959b74d + c2 + "" + "" + 71128105ccb95e0c; + 3a7bb40e7e0013e5150686d2301b43a15a84e8 + 1d7f5cedaa49e241 + "" + 4e + 7b + 2f6c2965368d5936; + bf47970e560475cff206877de69146acc3ab6c + f8556b7aa7769459 + "" + 48d1b8834df2196c92ec1718dcdeee0d52d9539726d28103 + 3ab97a491b334616b5320f00b70e5e3620d36e5286b74ca3 + d3584dde26228442; + 91b3f9d10c39b07ae8f08ce7cee4758a386a99 + 43e97dedfbe61e73 + 7882cd09c2b9a80f34c0fde11c2481b11fc76bfa4dbf710a + 9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d + d9fe5001eec9f51d5650f640a1acd392b3eb4cb1edde5d31 + b9c26d9e3edb786f; + 87d13b07398a1458c2c6b61dbdbc1cccada8c1 + a0a9aabb6c4e3c35 + "" + 54f8fb1ef61614c270295dfc0ca6551ca4bdb75359f91cb9d921056b7d + 3a35872aae6ecc5f2db7d75ba96b45d22646c61c41ecaa1be26c4685d0 + 9f54725515309904; + e74fc9a9b37154ce6c0b396179d31f06a1dd59 + 82cbc0d7cb23841d + a1ae8f4ae480cda98ad6cf2bacf6f9fd3f8213 + 30c43f3df6c2b3fac7cbcf96523d4723f91801325eb8553236651c9678 + 595e1b17cf4e6f603f4f37c5cc9f95960010ab062be907ea011276f6cc + 6cd3322bc4f3e0ec; + 8d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601 + 562d90a9b59ed034 + "" + "" + "" + 39204a02c689b225; + a867642d25d54756fa5c47f16f64b837bb4926214211a1c696ba17 + 2010abb433922a22 + d9 + "" + "" + 050a3b74030d78b6; + fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b + 1372a5aa47b54fd9 + "" + d7 + f7 + c80142d220c7ce79; + 0c70e117bf1cae71b3a56f0e7d839ea59cc783443d64f2ed6a29b9 + 6856beca34fd6544 + "" + bcf86b799e2a1681160ccf055f0fd3001da597a1406d465b + a317166b0030c8c02542e56149c7169f92667fa0f1825571 + e1f6c6acb9532013; + 7b1419ea51cf858f938f6daafbd656445a09898eaa96ffc3d1d2e3 + 1e4e34c94b8bfae6 + 4825ecd75a66d88eedb969ffe07669845ebb7a24c69f13d0 + 99f47166edf54538e88fbf433a7ff212085179e79771f6ee + bf9a3249cfaef471b99720132fe379a074cc10927ed689fc + f60b7355eb51cac1; + e7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e + 771702fb1901ecfc + "" + 8a959cb8e75079bb018ccc8c54f31b450e88f8e9002926ad0284c738f4 + 287fa9c3540fc7adbfaf8a35cb932dbf3ec8be9b1c40ab18d34b1f82bf + a1789324aa8ffae5; + cb0f58a1e34c8b15ad930c1b627235a2cb84241986c251f5b70be2 + 367f047265264e0d + a72efe8995e6c932a17eab511eddb8e4ba463c + 663035a6ae8a7a899e4279d54d03f0e0f3e961dcfd40088d5be74088e4 + f2433dd6f072fe804e258d6facf08e8798a615510c1cd0f1283f7b172b + b4cee725242787cd; +} + +rc2-pmac1 { + 60d7bcda163547d348b7551195e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268ee + "" + 0e2341b111c8fa18; + ee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a71 + 30 + 73e15def05b8727d; + c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085 + 406a6136512061f7080cc07df0591d8fa21f2dd88374d8cd + 9a5cf16bab880541; + e8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731eb + fedd4705e505da1435dceaa7b1cc49ae1d50c3 + 0573bcdf6c429f04; + 8201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa33498 + "" + 5fc03971d7234498; + 29b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a + 22 + d334d7d0dd6b420b; + 260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22b + b02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2a + 51b4652c5715fba8; + ebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abef8bc4fcb70e27e98 + ef1f0446b42fb144d44b6d00f06dc188d472a7 + c288ffba6c151611; + 84e0c6f21195a3b9f4ae985511265febd11c16 + "" + 2787117c93c78272; + 4720eef9eb1c8dd0b00951f284649016ed0045 + 63 + b9f64461b055f56d; + 31854bc78bf43966eb0cfa9138ddc399084456 + 08fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126 + dec9356cff25fd20; + b807e6daa089c3f9099c5ffb824173d7634c04 + 226f30cbb7f0e4a973a8cd190107314717a774 + f7be51b3498189d3; + 56f3ff669c732b58db8f48af65f7cc9e3fb90e1721b730374ffc9b + "" + 69b721838992f955; + c597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9c + e0 + 27583a3b6ce6eca6; + 21a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18c + bfe6effd1ff6778554acf1270485b203a3c1c4c967c0a458 + 03e79dfa55f427b3; + cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957 + f4b03cf43e89957f9a3e8128f8743d16687b7b + 2eb16505976b0bf1; +} diff --git a/symm/t/rc5 b/symm/t/rc5 index f574d6b6..a70cc1ba 100644 --- a/symm/t/rc5 +++ b/symm/t/rc5 @@ -505,3 +505,225 @@ rc5-gcm { 7a28b08624230f3c25eac43abc77e6525efd4ccf45b72033af74c47021 70cf57e5e7d02c97; } + +rc5-ocb1 { + 60d7bcda163547d348b7551195e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057 + acc87638f5080467 + "" + "" + "" + aa54e91505bc3ec6; + 33d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de + 1600157846b710ee + 72 + "" + "" + 5e23eb9cc063fb52; + 807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f + 88de9fd41e72d7b9 + "" + 7e + 14 + 8086d6e7472314d3; + 23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498 + ad0abef8bc4fcb70 + "" + e27e98ef1f0446b42fb144d44b6d00f06dc188d472a784e0 + ace115dc9234795ceda92323b7555d9b7088d5f03851f5a8 + ad07550f521cb01d; + c6f21195a3b9f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3fb90e1721b730374ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003 + cc0cae9ce021a5f1 + fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18c + bfe6effd1ff6778554acf1270485b203a3c1c4c967c0a458 + 9ef4ec1d3bd29e3da733811d8d32183a38e0c77c4fa209f4 + e2244052d820e90f; + cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf9a05c7efedef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2 + d983514605ec5902 + "" + 94a319b9802068a9f891bc5ba5afabf8c3122d12d7ff3c41122d70d17d + 568ebf6a8b3c3aa4bb11dfe4794a9b2dce157fc51ea99119a0b680fba6 + a7720c81e5980c76; + 4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d96 + 45563a308ba60076 + 817523bd2abf1261b089d8f23a9c2835076a23 + faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973ac + b3118f057e88cb0db02cdb8fac8f78723937c596e56beeda7f56cc4098 + 90496eb2b1214b4c; + cd56f6f24e33958b8c2e2352fd61e4fa8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a92142b5b0677da1ac273117b45bcfff5d5f8b6fde2893232a9f81d14517ffae475f6b94a43a67b3d380d2f9aaafe2dd721c0095c8808847689211450ba8095ffab1eaadf66fd22ac1976063e113ab61f813e28a1397a7974a1d7f4220c785fe426a5a0e80f678d404147842941feeffdc2eb44dc8c0d5e8f444f7f4e0c893959b74dc23a7bb40e7e0013e5150686d2301b43 + a15a84e81d7f5ced + "" + "" + "" + c80dc735b4b0d91c; + aa49e2414ebf47970e560475cff206877de69146acc3ab6cf8556b7aa776945948d1b8834df2196c92ec1718dcdeee0d52d9539726d2810391b3f9d10c39b07ae8f08ce7cee4758a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1cccada8c1a0a9aabb6c4e3c3554f8fb1ef61614c270295dfc0ca6551ca4bdb75359f91cb9d921056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cd + a98ad6cf2bacf6f9 + fd + "" + "" + e90954047fa57813; + 3f821330c43f3df6c2b3fac7cbcf96523d4723f91801325eb8553236651c96788d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f16f64b837bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b54fd9d70c70e117bf1cae71b3a56f0e7d839ea59cc783443d64f2ed6a29b96856beca34fd6544bcf86b799e2a1681160ccf055f0fd3001da597a1406d465b7b1419ea51cf858f938f6daafbd656445a09898eaa96ff + c3d1d2e31e4e34c9 + "" + 4b + b5 + baf615ac4d6842ea; + 8bfae64825ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099f47166edf54538e88fbf433a7ff212085179e79771f6eee7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a959cb8e75079bb018ccc8c54f31b450e88f8e9002926ad0284c738f4cb0f58a1e34c8b15ad930c1b627235a2cb84241986c251f5b70be2367f047265264e0da72efe8995e6c932a17eab511eddb8e4ba463c663035a6ae8a7a899e4279d54d03f0e0f3e961dcfd40088d5be74088e4097efb0368c7e2f431ee6988cf2a0e9ebeb3de79c4f86c + 9e4fba61339d6d90 + "" + 7eab7707ca48ff5ba1ae93d16225d469de5747bc1addf574 + 757d492944cb37a370da05afd0734e35c6bc4a0f970843ed + 33e2b21461d5dd3d; + 8729720a320fe14fd29cfc59314fe2079c0a2535ded56112d6e3d33dcf7c71cd7d130323794e3da84a9df69703a9caf02d2a8f57ac71e554a6850d55882f8c7ae6994fc8528bd18c374fc43581d2f72a89584a2404a059f7f99c7241a0c879d6d4455b382a9ce757b3e7a1d07585ad9d7ea9c7c9cf54f3bc6d94238ab56d738e02abd651477cd726d6f3ebcd6fadeab50906642a7de6496247060e7be3632ed9bd94bb42f45a8733b2cd2df9d1d905cfdb29983050d6bcdb686a0c897031ad09a5b8fa687ec3bad8e18dc2ad361f1e226e78876cd35f86c639733c5cd8 + 4aed8aaebabb7e0f + 24edfd9710b7bca91b612ea37fc5cc09f7f62f66b423fcd2 + dec5de24d264f2c839839c1b06319f687dbc68d9f07fd41c + aefcbff3659b393a7cf6952eb2fd4ad464d1be5c0c13b79b + 1ba057a604a1b599; + cb4f8cde8de201ec2680332bbded4883deea0b58b54bdd13c17ef292b0ded3caeb5e57fd21df10bc6186265ee6ea45907de6cb822fb2ef953aea358a03e0fce2e1b9511bd332c86e67f123377a8f0256b8dcc73ae1b3c6cd3f104e3cb24284cfed17811d64d492d39ea7496993a25b072945d83f923e66b0a6689cf0969c003a8fca80e322a4b1bf050c1220450433efb6b6d8a2d820cf27a64b9d47f636845dac557bb3e75f3a18fb8e173416867fcd0ee78ddd9236beec76d55ed58b10f91d07a037791ab96e83c4bf2fb5b205e592c172a5cbc19456c95c1bea6079 + f3867e52d663cb38 + "" + 84b2a0a8ff825df752423f3179bfeb89eca385f20ddce5f1f23564672e + 19b818cf69f0e92cd5a9f539f91e73dc543141acde903d98a24e1234c8 + a41bbb9bbe7c82db; + 370ffc37d400a31e8aac1d426ce10df73c5ee478b3b63d91024780e974a8a2a0e7a36f84ab1286b627e7d01b38a84a6de738721ed80fd0d7f69fa658abb5a440d304128719b541a9451cead18e4c61d93d1f8fcc53574427767396322b3bf7d02cec05093696cec07591ada462271b1d1519eedde0df37a330fe8c22ebd77705917b7e32ae88f45a34a8ba3037235e19a394be4d26ce47317d8087684456b4cfc5555e925e3e7b2ebc829b2d0505ea617b0ca9531bcdb96040d39040e632d562643ccb64286303040fcaf679e914eaddc05af8843ce6a427b99a5dc266 + de31c09165237eee + fe4b58cc034b9f099f04678c2a9da898b39324 + cd3087a651014f6796f9c4881d89e127e62221e47e57badd678d490c2f + f2bc32f9e6d98d55aa5631671de574e5b6e0e0e17a59f20f418d3555f8 + 6a92cb246769b913; + 320ff8fb1c42761bd439f3e96dc0ed1d5b2169912af1a4e2c533c52ba3e8c71c23a089e231480a + a63c484fb34bd522 + "" + "" + "" + 6dcc9a87c6b58479; + 397f102cb8ecf4f64e329884fe73be257a753b38200bc23f94a079bde2dd98d813655dafa15b85 + 419d15c41a5153cc + e5 + "" + "" + 62692c7d1e45c739; + d0e8c8702db2ba11927589678d4f7b8fcfad4818c411f15f452300903874f9a532ee46496ae753 + a2340af7b91f9632 + "" + fc + e3 + bd2bbcb67cb7a71b; + 5ae71ae18b40de751ab6b6761ca16434a9935e466e11c1cb072f32a59c313dba3db646ae909a09 + 6697d9a7b0556463 + "" + ff1126ebc43263391424d02739d0787e804d8f1dccf6c897 + 4a7b3da4e48db3ad461bce3fa4e1eb8bfe3d5415b80884f8 + e8e7fdcdb5bd4809; + a8a48431324324041b5302ccd501b538bd03d5cb5c90d1fd3f7d2be187a787032c79ed900764ee + 4ce1d3fc042c084f + 7d8c0c48ad7d6f1eabd0fd1ec24a88f26734d5c8d92dbd87 + 3a8fe113090d401bea4d28ff49f10ff593adc258e091abd3 + 7f77bf26d0ccc5527ce3a51a3802d09ea7817507df9dbaeb + 64cd828bd8c60820; + 1b62dd1735158f98765970acc6602da063aae01a2a199d3a4f37a5f062d216d2053a83b5d3a048 + 8ab0d2df631b2892 + "" + cdfcf9fdd0f37de9ed67179aeae82fe00009428b297b553230a6d917fa + 220fc76c73b6b558f327d88b2ceb3c28b23e09ab5b15757d041a66548f + 99c4bfbe566dbede; + 0c1a233c9ebc8a4cba45b20543c540fc1b9dbce078b87a1534acf03897b95a3f372e9f6c5a5f2a + e44a7dbce9ba43a3 + 9089de20de70d0544b5151db0a16e9769e8f2f + c12c7f839fab269a0056284a697ffd4113a1cf43b5d5bdce2d86dead83 + 129f452d3b69b5c33ce6507970c4f36352a7c4bf4e3d621185fa8ef09a + c7267b667c9d44bd; + f5a356e9106bedf908db61f1119f9700260ea9379cc7232184d217158fee8ca42e75614739e9007f234fbcd86b0ad8f641a0449b6d9b0f99d1cb4a57a4d6f987feb0ade90aa1d81c4f497b3734 + be301da3e25fe692 + "" + "" + "" + d59834fe604f12e2; + 629db57311f422f3a1573f9e0553a23e96265e4326fa532d7136863e5b4bc6c99ade3d4eb23cacdf6e42ad8ca13187eba1532920ba31582b3793b05fa65e9f80c5814b91f4d3c581c7b16c46b4 + 84859c6d19eebaf1 + 24 + "" + "" + 0c9a3b106bc9bca6; + 681aa3be9943307fa4ef095ef8e7e50b703dc0420e74227c9351366ef8e98e1e24b48aa989dbb8d0f10471ae5428a6012fbe4f5cb2dab2863e574842cc0b3774e00dcfa63b0db1716c7e916a26 + fc2e198f8db63ab5 + "" + 99 + 87 + 2b28f9babe659513; + 55989497782f16c5816270ef3fbe4ea22f484ddc12ec8f4bdbd6ebdfbafb21fcf5427dbee5f95b53a0b4cb6d7c128b79f4657895f4b0ba518dd61436140f20d40224baac3a602da83cb254a7e0 + 3f052c63c1f3f00f + "" + 301cc944a1789133bb8048f07dc123f2ca7e20c83988e4bf + 8be72ebd52cb194d6b0e4fc423bb898f655d938d11985432 + 0564db4049183242; + ea6d561ab5aea542db544a14376d5d52f7265c7a8d2fc4feef99b9dba89eb472f71d8eb5affe900d776e4cf74e52b6c86db981143082735c6473a86a5da3d2e8cbb8602ebbaf08bf9315fba15f + 46714bfd2c8312fb + 5744dfe84615ddb93f15360161f2efb1fc39b8b6ad97427d + caa0435bee7f3a5c11fd01b9c120aa6004f84bcba838a1c3 + 49ac4c21db7bcf9453e935aadb85d304afe6fa4bb10002a0 + 9a90ed7bab6f9d86; + 3beb4087719135b355dce9ffd6fd639f192e4c2c9a2752bf74a3f63408d3b27df51f44ed5537bfb0162f05edbad1b2c36ceec1dc407475b8e05fcb5ee66c7205f21804c3b73451dc9a3aed7667 + c6342c8355ff66b9 + "" + 1eeffa115cf118eef301f2c93fda303878f7987116dba62d93a7da7027 + a3c938b621c4032adbd7b5bfeedff1eaa471ddefb2f396290902c00d59 + d682d2ff660fa862; + 4ffe5a6506e4e1439de76cc9d332ab03510df3c7d35dc526b5b7785400f53d34b5d55fcac5fbeadd81456bbe6bcedb015be40bfbda656483b32fc4d0a9dc2d7a68b134919d79de5268d7d2ce37 + 2a8a386aa718d09e + 19612f3d10fe569863bbd3ad42903905058b93 + 4eb213aa037de4e26cd4ceff7490353b5e7621d67ee3ddfb2584e1e12d + c494267b5ee0e2bd32b3c4e93b70ddfef6985a4d8360ed32e45209192f + 32e85181b5d1d655; +} + +rc5-pmac1 { + 60d7bcda163547d348b7551195e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057 + "" + 25f3e24d8ae10215; + acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed5415 + 4f + f7da3d0334f4ad55; + 8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a + 96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b9 + 5d24a4c29b90fa71; + 7e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a8744 + 98ad0abef8bc4fcb70e27e98ef1f0446b42fb1 + ca50a7dd104238aa; + 44d44b6d00f06dc188d472a784e0c6f21195a3b9f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3fb90e1721b730374ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff677 + "" + dfde25eb32b74a23; + 8554acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf9a05c7efedef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b9802068a9f891bc5ba5afabf8c3122d12d7ff3c41122d70d1 + 7d + 58afcfd1b2ec5cca; + 4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d9645563a308ba60076817523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c + 3973accd56f6f24e33958b8c2e2352fd61e4fa8fec816ac8 + 3a50ecc246becae2; + 61a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a92142b5b0677da1ac273117b45bcfff5d5f8b6fde2893232a9f81d14517ffae475f6b94a43a67b3d380d2f9aaafe2dd721c0095c8808847689211450ba8095ffab1eaadf66fd22ac1976063e113ab61f813e28a1397a7974a1d7f4220c785fe426a5a0e80f678d404147842941feeffdc2eb44dc8c0d5e8f444f7f4e0c893959b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e2414ebf47970e560475cf + f206877de69146acc3ab6cf8556b7aa7769459 + ce6c1f810be61bf6; + 48d1b8834df2196c92ec1718dcdeee0d52d9539726d2810391b3f9d10c39b07ae8f08ce7cee475 + "" + 497b2f55a33bed03; + 8a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa4dbf710a9e544e + 0c + 616706b07020fd1b; + 536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1cccada8c1 + a0a9aabb6c4e3c3554f8fb1ef61614c270295dfc0ca6551c + af712aca3c532277; + a4bdb75359f91cb9d921056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb2384 + 1da1ae8f4ae480cda98ad6cf2bacf6f9fd3f82 + d47974ebfc5228ef; + 1330c43f3df6c2b3fac7cbcf96523d4723f91801325eb8553236651c96788d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f1 + "" + ee84e75847026484; + 6f64b837bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b54fd9d70c70e117bf1cae71b3a56f0e7d839ea59c + c7 + 5605efcbb6e07489; + 83443d64f2ed6a29b96856beca34fd6544bcf86b799e2a1681160ccf055f0fd3001da597a1406d465b7b1419ea51cf858f938f6daafbd656445a09898eaa96ffc3d1d2e31e4e34c94b8bfae648 + 25ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099 + 6182d51653af224a; + f47166edf54538e88fbf433a7ff212085179e79771f6eee7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a959cb8e75079bb018ccc8c54f31b450e88f8 + e9002926ad0284c738f4cb0f58a1e34c8b15ad + 27da50a416aca31c; +} diff --git a/symm/t/rijndael.local b/symm/t/rijndael.local index 3060c55e..d0b337a0 100644 --- a/symm/t/rijndael.local +++ b/symm/t/rijndael.local @@ -1138,3 +1138,434 @@ rijndael-gcm { 502ab4639cc0336813c1e56e627ca9fd05ae8a04bb2b5a5dd7c03a5a4fc64ec1b9222fb965ee6c675f52bf3815a88d8a0ab837ad7b 66578408dd93abb230ea3124f859308d; } + +rijndael-ocb1 { + ## Rogaway's tests, from http://web.cs.ucdavis.edu/~rogaway/ocb/ocb-test.htm + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + "" + "" + 15d37dd7c890d5d6acab927bc0dc60ee; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + 000102 + fcd37d + 02254739a5e3565ae2dcd62c659746ba; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f + 37df8ce15b489bf31d0fc44da1faf6d6 + dfb763ebdb5f0e719c7b4161808004df; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f10111213 + 01a075f0d815b1a4e9c881a1bcffc3eb7003eb55 + 753084144eb63b770b063c2e23cda0bb; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 01a075f0d815b1a4e9c881a1bcffc3eb4afcbb7fedc08ca8654c6d304d1612fa + c14cbf2c1a1f1c3c137eadea1f2f2fcf; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021 + 01a075f0d815b1a4e9c881a1bcffc3ebd4903dd0025ba4aa837c74f121b0260fa95d + cf8341bb10820ccf14bdec56b8d7d6ab; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000001 + "" + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 4c9b676705ff2df05503872aa3d9e9b122c6b0ec060819146d9c887bad494417b63b4b2b3d9c3a4cd156856564c4a31be812a95d43e76ccf9811cc3a7613b0567bbcabf1a0f64f5245098c239ca7935765a7d402b01b671f1c600bc9a6823025c370a32da44a86911dce981ccaa7e3e720552bf8dd83918d8688e2347ba8691457bc25ab99a51a4388c3c7fad8a71e0c25fa185d2aa710dd9bb93cf2185ac950380732eef63549adcd451e70a0275b070fe1f9e338321aa57de832e1893f5febc0b2f0a6221d1aa187b9f152d20c259ed105c1a4be374993f4963074ef2676621109a03e628286124aefc8a3038b65103aa628f3e6bd6e1659ea0508185679d9a03b0794b914850cb4528293f7e992895a3e80337c23dbc95be1d3502cb9f8961e7dbe22898dc97b75fefaa75b4b3115969af05f54850489e007ce003d8023f490e37845f54d3c6dc3521fae9c34365091393f21139c96be6101a2bdc9dbc36902b5bd19686768154b011270157882f32dfef2a272be3cbf7e5d90ec1b6e374b4a4b806d83913e3df933e8caf5e02b1093b2a2991b34f98a41824a15b26a04a18f287024240d5347a2f3501546aac9c5b6e3f5010d9e2036c415d093892303050eaea499256eb83cba3ad4249537cbc250505024fe413965db1c41a77456711d50933249c63bd006716c4cc6ebf59c03c25a3ac3d06d7713c752f415f9ef59571885f38468c3f11bfd8111f839f080f544cb0c5ab9f87606287e314afe655510ceb8a62abcaef4e65e314f45b10e9858a175207356e9a8ac093f469ee587c18396f8965ce52e894b0bd29011b22f1e67abc16dcb948be141693fe31db635487285eeb4f8b4d5d13e511218759941850cd71fc898f8ba4cf1a4c23b3588dbf1e3e7c86efb113c8820e338a5d90d30c7d854a9ad7582d853d39cd3649cb67e3308c70bc75b732ae744aa126811034ff893829e554af51c83e1f004c3b7c9d0432978be459beaef6824b9cc5f370aa47b8d9edf583c3c84ef695705c95d59a428a675c5c788339ca737f2ec1cb6e83288b5bbfb6d1f81f47659f8f44118d76e900bdbc8094baa4bd950647abe22516a50bc85ea94410f985519076e34696b238262a00ebe889d58b09b81ee1f0b31f864a26978046ac24f1332559b6c5edc24748407e19f169c32d5d3f8ca6f71e4a5c2f72add2185857fde5749d5fd63f5b3658daa3dbaa1b0844fea3c8d2eb5e17febcfbfe44f4cf931129431ff51d6acce7e05107d6c055ad27beb185f7349ea060440a508b40186ec9732f84d21ae158969b671ac0d2ab823399220d75ec7cb50c29de3df974ae1e8c2465e3ecc207160c593443e424a57aaaee3c884632d979ccd0b6a239e1c3fdf777aa556a3c8815c2f8d1496a60048e2b971 + ab335f725475e33e90ab8c1e4891596d; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + "" + "" + b6e92be21127830a690f443f5ce8546d; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + 000102 + c21ef1 + 09474d786d4640e823f52ff63ec5359a; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f + 3a709f22daf4c1bcf09cf1c2a0f5beff + 98d49eb3468988d06d7cb32c438f1f23; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f10111213 + 8e951e2a2fb4ede0397cec6ba5dad5b22137f07d + 305767a31bc9e344f7f79843d1a268b1; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 8e951e2a2fb4ede0397cec6ba5dad5b247ff19f214fd464e821c63c26e4a11e9 + 63cea28204ef06e5a21a8780ea05050d; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021 + 8e951e2a2fb4ede0397cec6ba5dad5b235e6b8a5dcb0bd0017bfe98111352d3edf3a + dfec4b4ed2f95c305d59d79edbf62833; + + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000001 + "" + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 1c97d826583970d083cca433773b02c34c0e6b7127d2258435bac13100c8672db6084c02171ba72b9937b1daccd14d0db1c322c708cc2da13486d772d82d93d12b69874a220573fc25fc05922700228c475ddeae653855a2c6d5f563f6e0724b7b2fe0fa066cba3223e010c5d1a51301a2ae1047409ae88c2779967283d50aa40ebb93e07dbde704f39c76c20cd1e1970bab196eacebab67b076bf901b4ed6f6ff066e230b540737d6856472ac02dce8b7a92aaa8890a47a13fc01bbce7ff902e3a7ede4685cd9bb926fecc27e915ad900f248d7ddd3cb9bff1b589196740c35ecf330e3812a6e0fcd2fd32212b0f0515629e7165cfe64857ec5ca2ad5c6eed654e27508a2c012b726e6931c4edc1fc00dd1d609f8659b24c0b4157f43fc33761d0a9b1fb1389068b600ce2f04cf475fb4483d32902b559cc40a589e97a82417241b92199595c6597dbd0e8dc08db9b6c0323a1d07812908be90c7785c66d1b295ab772793dc7e9725ef19da40b935c6ce10e404165388db6437621ffb08246f32b85a7ee9ca8bec10e3e973136c0b99552d8713bc6c892938ad72f79341f16eaaa7c8adfe45e2c627314c256bf0554dc1651ca77a80d79603cec892ffa58b092b5134c61d6dfba2a2132c75ce56db8cb1d852330a5c4a615645281457c2020391351f8dfa1297d45da234c0549991046d888b52175e1ed2ed3619474b5b270d6b5dcdd94e1a3f20594da51c8bd564e9694cb8b498eedd7a83569da5a209ba34e0fb29c43793097437fecc07e7709c8d64f15197b241ee930652872558c7ccb8c2a0e61e40637d1d587422d5f9f8f8eb25e44f7997058c051c4288356e5dd47e6022176f83c963eac7512cabc7fc8c408d448177e1b1671c82569a2318db142f8b94a60fe5b581c6895e03397a4d9b6f117fb534ad644ef7fafab3fe34c36b5d1544df4567fa94ba7a501ed20032d567bfea10f943170e5bf9b1aac21c0e25ae5f9b98272c75a401ba0185e46ff0c9b29caeb2314a507e2664df2208beb8a5c78563f68b49c3b59b650d18eb75a22296d06943b99239521c59736a10404d458e80ed9288879545c1f9b997036b9eb76c5d75afcd494736971dd27c3f0cbdc15e8cf8337c63417f861a15c324b44fc8b3e4ef6a1924f470aefd0abb6a965451d13835e8a8d9ef94add1d2a41f42c6ebc55045d7a1c6bb0ea3af9560220180fa7b623cc2c44d5cace341746e80289e0b7321178d770e2043a5b02560328c1a01ec4ab64ff98de111c5be5516657cff2f88d3a02643a587903f28a7f9d76cceca8a03671eeecdb2aa81e59de1171e5aaae08415533ceee30aa3ec4fbd551990c074d05c390dfbb1e5d1318e869be9e8417d49ccdaf801ebd42b0309718c36deb2965311710b6d26494a + d28b89f5339444767d637e8f1687d204; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + "" + "" + 796b5fd2716b066932371c17993dcb5a; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + 000102 + a214d8 + e31b3449bd1b85b257b404a76b5b86f2; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f + 8ed0923f5b2c650f31a5dd422463377f + 794904f519ab5376a30cf7771548e319; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f10111213 + 6512529248df82feb506a7aeab3874f7201b6f79 + 042ac0fd6956c2b0b4205dba0b889699; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 6512529248df82feb506a7aeab3874f7742c85da9d0d6cc91293ce0b333e0343 + 6a91a07cb0bf508fee08b27b5fd9f80d; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021 + 6512529248df82feb506a7aeab3874f7ae809e2f4f88d6a6088f8d0122a7b9e723a5 + 3ba0661c8a716b550150c9effe3b773c; + + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000001 + "" + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 1464d49f9ead864d5e77ed99198302409e459f2af179c73d2f0d0855d51591cbd9555d9a8542014e2b995e5399c1f804addaff1a2c4b5afe07fd88b7095d1129cbf93f9dad20c625fab0e63788ec4634f0ae06b6fc5c56bfe1b05860e03dc3284d7e2b3190eacee799f523677f942dee5192cfc6b5dddf09a16e2ae13055e9d1ee1d159b7fcea386133de34b92743caddef8c457884a7c5034a53ee23e08aa90086824401c25646561af0d594114b1ccb6627bff630fb17a6021b4f54942ed06f06326e54408019caba8f7231200d30dc548f8ec2c80e06b13d8ebe462c1cdf1c54065afabdb97ac8d8e5a1d065c59795fb55336f01e35a6f7cf8ddbf944e31a24717977c2f9f89aba3ca1ab7559a4f732d301b678ac63c9d5388665b1f9bc56bd67b80fe21f0d6ce4973c078213456b23700725174037fe8426503b0170ce5adda0dedc80f1e5d6701384951bbed58e6ec5912cd20429c5d85c61484136caa00c5f92763414e9f1bb50efc59c834142e5fbbab07f624f28fdee284c2b7322cf3e0682731f764a049fedf2ee8486e60bbd11de998f1dfde848999c806ef779bab0468b674d395883400cc6c05cdf5b51c5fbb181690502914edc42cd4752d9c5fb524adb37149c3199f2329ecaa92006047761f01581eafb96003491fef9ccdbf637c972842645b052ece338e02b6417e25f4f93aa808ec44d8b6efdd774ebac19a1756014a9bb71da38e7743d1617e44bae076f3183c7e50f5c0fd5488cb325edd500ad5e794c469b83a4655c95289dc520797f94cd04e834b1842f769236522cf79ae63ad4664b4745316142bc74ab27be915194eff2a2a1d740c83bffe28b8fe6cd1382ca8de806365275ed05baca90484b03ee87624f072905b69587c05be58aefd4e367257aa95ce3a6d0f65a5e7221c8f729727e3bd66f3d9e33f0d7b8f03ad31e62c837599e062a4c8681ec3276c31d58f2f3f2dd018b3c579fe50d7f911f8665bc064a08ae8ff6d87440e088b2162733ea6066ac70309600819f3f429232bb26376303fc82cd198dfc92382cfb3c8bc245984b845c51e6b5da8a9669e1d961f7182d0bb9757a99c0d72d4c037df2ca29661faf0db89fdce75bfb67031522096ce88f1ca6740f3dbbfd65fdf674a547d82d331abaaf1c5f0742a25c6f5ee0cfe288fb93e76d2fab4fde4904c2967303fcf2adb8bbd333b33728aca04b60dabdd08e0acafaffa97b02cb011db94687afa7bed3157d3a90814eb00e55b39cabfe9ef35bae62c80ad225cc34a0d7cce13c55ac107d00d7b37562222ac5d94cb73ff20d8947fb8ec63735280c0ce31aaca8fee02666f7a6fb2b44f1ebe0f090050f1036877ddb6705b1b622dbd1742f8ed2d985a5aeab4cd2a0e68d1ec3c6c1fec66446150d44 + 826d7f68f3ce28e1e98191e92b23ab0a; + + ## Homemade tests made with my toy implementation. + 60d7bcda163547d348b7551195e77022 + 907dd1dff7dac5c9941d26d0c6eb14ad + "" + "" + "" + bbdd78ab7b6ed33bfbaf8438bf9df7ee; + 568f86edd1dc9268eeee533285a6ed81 + 0c9b689daaa9060d2d4b6003062365b0 + a5 + "" + "" + f7922af46325a139e69abfbb9b999c4f; + 4364c76c160f11896c4794846ecfa14a + 7130c9f137120634c9519848a877ff77 + "" + bf + 98 + 8c5a791452eb9c1f37d7ab1bf637c432; + 79192a5b50ade5d9cd739a3d1f337f29 + 549e6b0d27a4ba234085406a61365120 + "" + 61f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9 + bed87d0e2b6ab736c20081f2041691cdcaedfff9cdb08f5ff2b443fbb4990690a9bb03b8b801d3562f037c61c6d40929 + bd5b4d2c9aeae8e9dd6baf02c53cc96d; + ff61cdbda3b3e9878731ebfedd4705e5 + 05da1435dceaa7b1cc49ae1d50c38201 + a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc + 520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605fae + b6cbe859f09a407e4a0e376a41b18a84eb07874e1b280fa3cdffa733c207c4b67ace2b90a406b1df6a2389593134796d + f370bf6c86cae4c4248040d74c191392; + e2b03fb648e27fff63102758fe2b69ac + 26afa3349829b94586306fed54154f8f + "" + 28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcb + 2ca95a4a033cd358788f8ffd43bbf820dc0982dfee8583eead310d571cb87e4472331362ff6820abf76cab3b4f405b41ad167f864d + e20d6b13e4691b43b82d5e16f77366b9; + aca48b77dba189196d1ebba10b0467cb + 9fc2712a199e533fa9156308cdec3f76 + 8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95 + 214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063 + 8c3ebaaf931dd282e77df4bf8c242a81593282df72cf91df24dc0bd8f6559f404058b9885529821083839944713def901330eebe75 + 2d965094a4c93d801be22ba3faa198d9; + c46f88de9fd41e72d7b97e23e6eabdff3bcd2114 + 99268878dbf30f1dad89d4b9b12012e4 + "" + "" + "" + 8d524a5f17704ae5983de23c8c09fe82; + 713df46795630e7952d22bb02d7100b8b649377d + 20a8f083455b663e4ee1315f3c8f2aeb + fa + "" + "" + 9ea050885c272134d9056a4a94dba2dc; + 921451dcd1af5813b70d30ce2f1fef6ef315d079 + 8391805da08da3aefc5f8584b7c5e617 + "" + 66 + 93 + 813637682fa8878156badce86a0243fa; + 9c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb + 16c2e815f422cdf0c8e30308be3c31e6 + "" + bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446 + dd538bb0839a0a7925c5a2aaf2cac28de820d307023f2ab4f2ffa04cef224b155ab948ad399e65a9ea8477aea35f29e2 + e00806f1d623829ca51eeda7493528e9; + b42fb144d44b6d00f06dc188d472a784e0c6f211 + 95a3b9f4ae985511265febd11c164720 + eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a + 9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd1901073147 + 4a2e9698c0d7ac74177739a07570f0f6afd2e3f3b6e9badbdbd95fdfc747dbbc7c1c8bceb40e423e1b2fa560ed2da50d + f13efea41ebf09ce14655687cb20a908; + 17a77456f3ff669c732b58db8f48af65f7cc9e3f + b90e1721b730374ffc9bc597f56ccbb2 + "" + f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd + 672edb9395d87cc48fab9727017091e7a6d09f7977fbbfe77f9669485aaeca7a4d54662565aae03033ae925528e9880d33766cafcf + a8ff24657308e7d34115b33ff27ff795; + 1ff6778554acf1270485b203a3c1c4c967c0a458 + cb948bdd409b687fa3a6827b480aa3a4 + c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205c + dad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41 + 367a16e4adbc471e15eed3d0415714c61a67e93f44b5890d17f9d29991bae8406d317e7064c765278d7370f6534462f6eb2db66b23 + 79a7bbc9be788ebb4b94fe94f3f74439; + cf9a05c7efedef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdc + ccd213e33f7e8a5718fd25014107c8e7 + "" + "" + "" + 12f235dbf2dc24a51ec9211ba16494bd; + d715a92add9589d1f5c054b2d983514605ec590294a319b9802068a9 + f891bc5ba5afabf8c3122d12d7ff3c41 + 12 + "" + "" + eb5d7e61788af1e2d62a0023cbee8ce8; + 2d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d669 + 9e6b7ea2725cb2dac07ecde95759ac46 + "" + fe + 65 + 80cbf647b155069f455e35ce699db1b6; + e6dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9 + cf44bbc8c6254d980398bd94e66eb456 + "" + 3d405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de1288c69d80ea12ff4bb5f069b8a2e86 + 5b2913b5bd5d4155174de957631d366c398a890cdcdef62c8a7882229522d3b944a1b0cc2d958910469f001ff60f4d05 + fd4cff3dc0c58f0743b0bd9bc4e7b346; + 041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15 + ffaa6c36800d9645563a308ba6007681 + 7523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd + 56f6f24e33958b8c2e2352fd61e4fa8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b + 79b025b6d15120b9cc79ceb62cfe0479248b47f4b6318deeffe7ff11688460479331326370bac61dbec32ba5571d65d8 + ce1ea3a0bfda4a072c98376f259ed0d3; + 0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a9214 + 2b5b0677da1ac273117b45bcfff5d5f8 + "" + b6fde2893232a9f81d14517ffae475f6b94a43a67b3d380d2f9aaafe2dd721c0095c8808847689211450ba8095ffab1eaadf66fd22 + 42075fba1b912e07c6f10e6356f6ccc84c60f34ea054dec4e4cdc39eb8f5066218b61d9cd799d28281e84d2d5f0138c944f1074b2a + 2889c19baf58c2061aa386bb60bf5c94; + ac1976063e113ab61f813e28a1397a7974a1d7f4220c785fe426a5a0 + e80f678d404147842941feeffdc2eb44 + dc8c0d5e8f444f7f4e0c893959b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e241 + 4ebf47970e560475cff206877de69146acc3ab6cf8556b7aa776945948d1b8834df2196c92ec1718dcdeee0d52d9539726d2810391 + b270a45c7bb349e1dfbc9226da556d1916cb8eee0acc23671a875ba1bab176be7067e6ac38c492bef6c908881eed86e3fa34ba13bf + dd48047480fa2218d080933718dfa7dc; + b3f9d10c39b07ae8f08ce7ce + e4758a386a9943e97dedfbe61e737882 + "" + "" + "" + aec3dd3d7d4d41c121f6da813bc52c6f; + cd09c2b9a80f34c0fde11c24 + 81b11fc76bfa4dbf710a9e544e0c536c + a1 + "" + "" + 1fb81cfb59ee9a075fc17a01fb0acb9e; + e040f9ad5b04140d98edabe0 + 8485290a4d87d13b07398a1458c2c6b6 + "" + 1d + cc + 2efc465c99ba1057c7dce6bf82f04a7d; + bdbc1cccada8c1a0a9aabb6c + 4e3c3554f8fb1ef61614c270295dfc0c + "" + a6551ca4bdb75359f91cb9d921056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae4 + c5b165d12e4f62edf355fad299ca25ee317c7c65deea43e27c93f43f66d87364b7dc60d20d5bcfde11e982c9275b2ebc + 5536fc1ce20b189e094233fed7a3da05; + 80cda98ad6cf2bacf6f9fd3f + 821330c43f3df6c2b3fac7cbcf96523d + 4723f91801325eb8553236651c96788d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59e + d034a867642d25d54756fa5c47f16f64b837bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197 + 03cf2190ef314c60a1b51ab9c6d6cf1613779e05cb1f6dd1b54b16f1cebf6b964ee6f21a606b72e5751723d5ad6e284b + 7eb35f7458437efd2a95c97817396485; + a21cc34ac0d5ae7be8dbf98e + 4ffed2cf6b1372a5aa47b54fd9d70c70 + "" + e117bf1cae71b3a56f0e7d839ea59cc783443d64f2ed6a29b96856beca34fd6544bcf86b799e2a1681160ccf055f0fd3001da597a1 + 8a8f9e2516855b74721de0ee915f1759ae9aa036c52d9cbe43111de9015eb6bd353bef5bb4df325f466d8e2bd09303f912bc0576be + c67bc656ea1b155208501e080120205b; + 406d465b7b1419ea51cf858f + 938f6daafbd656445a09898eaa96ffc3 + d1d2e31e4e34c94b8bfae64825ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099f47166edf54538 + e88fbf433a7ff212085179e79771f6eee7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a95 + 15d8d8bfdd4b5fbe0885d060fc15bb2763c2d4aad2d18df548ed258db51d9cfd866b4e7798650061e447291f45ebe5da37635d468d + 329d67984dc92e926bf2c0698fba9e2b; +} + +rijndael-pmac1 { + ## Rogaway's tests, from http://web.cs.ucdavis.edu/~rogaway/ocb/pmac-test.htm + 000102030405060708090a0b0c0d0e0f + "" + 4399572cd6ea5341b8d35876a7098af7; + 000102030405060708090a0b0c0d0e0f + 000102 + 256ba5193c1b991b4df0c51f388a9e27; + 000102030405060708090a0b0c0d0e0f + 000102030405060708090a0b0c0d0e0f + ebbd822fa458daf6dfdad7c27da76338; + 000102030405060708090a0b0c0d0e0f + 000102030405060708090a0b0c0d0e0f10111213 + 0412ca150bbf79058d8c75a58c993f55; + 000102030405060708090a0b0c0d0e0f + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + e97ac04e9e5e3399ce5355cd7407bc75; + 000102030405060708090a0b0c0d0e0f + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021 + 5cba7d5eb24f7c86ccc54604e53d5512; + 000102030405060708090a0b0c0d0e0f + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + c2c9fa1d9985f6f0d2aff915a0e8d910; + 000102030405060708090a0b0c0d0e0f1011121314151617 + "" + 0d63b2b2c276de9306b2f37e36dabe49; + 000102030405060708090a0b0c0d0e0f1011121314151617 + 000102 + 5b1cbc4340752742d8828a7aa2c3197d; + 000102030405060708090a0b0c0d0e0f1011121314151617 + 000102030405060708090a0b0c0d0e0f + 0787415737989bc1a2e124c991e400e1; + 000102030405060708090a0b0c0d0e0f1011121314151617 + 000102030405060708090a0b0c0d0e0f10111213 + 156a7c21121cc773a731e05ab618c6bb; + 000102030405060708090a0b0c0d0e0f1011121314151617 + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 654a145904dc97da9f68318b180970b9; + 000102030405060708090a0b0c0d0e0f1011121314151617 + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021 + b5ff2016878e834438aa1ff624bfa09c; + 000102030405060708090a0b0c0d0e0f1011121314151617 + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + d3aec29036298bc11a2905f53773ff50; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + "" + e620f52fe75bbe87ab758c0624943d8b; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 000102 + ffe124cc152cfb2bf1ef5409333c1c9a; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 000102030405060708090a0b0c0d0e0f + 853fdbf3f91dcd36380d698a64770bab; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 000102030405060708090a0b0c0d0e0f10111213 + 7711395fbe9dec19861aeb96e052cd1b; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 08fa25c28678c84d383130653e77f4c0; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021 + edd8a05f4b66761f9eee4feb4ed0c3a1; + 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f + 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + 69aa77f231eb0cdff960f5561d29a96e; + + ## Homemade tests made with my toy implementation. + 60d7bcda163547d348b7551195e77022 + "" + f179b2c8e7020f9992e161128568d833; + 907dd1dff7dac5c9941d26d0c6eb14ad + 56 + 335ab1737aaadac9f7d949ab7dc22fb5; + 8f86edd1dc9268eeee533285a6ed810c + 9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77 + bb8edccea3819962f3207d2494d63229; + bf79192a5b50ade5d9cd739a3d1f337f + 29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21 + 2ecd8200722cfe2378e956131b67d64e; + 635c6d62c9269029df3e6057acc87638f5080467 + "" + 5defdf6083418cf3d45824aa490a4d81; + 33d9ff61cdbda3b3e9878731ebfedd4705e505da + 14 + 6c60b9db748a6bdda7823422ed13e4cb; + 35dceaa7b1cc49ae1d50c38201a894476b3f102b + 752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3 + c20cac43be40631325f8d7c9e65991ad; + a4f3ebbbb18ac6c95a97a48030370c33d090c542 + 15abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829 + 3c963d5d3230ef4dc33ebd19f63965d9; + b94586306fed54154f8f28523c03d4de1600157846b710ee72807a22 + "" + 050092b5cc9a2d131ea4450c057bbf3d; + 19bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d + 42 + 16501f8ba884f8ace15138cefd2639a7; + f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e + 533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5c + 9738377d0ead6012bac60ae10ac4e5f7; + fb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc81517 + 84873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6 + 709f56ce90034a8882bebbfe453452c7; + eabdff3bcd211499268878db + "" + 697879320c2ee020acf13693df75c31d; + f30f1dad89d4b9b12012e471 + 3d + 453c840a1c34bfeff73a653ad97150b4; + f46795630e7952d22bb02d71 + 00b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da0 + aef316f092694e691d9fba0324d8397a; + 8da3aefc5f8584b7c5e61766 + 9c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb6 + 0638371148ba4e00b0cf138e026a7740; +} diff --git a/symm/t/rijndael192 b/symm/t/rijndael192 index 248cbc36..e4f98a7e 100644 --- a/symm/t/rijndael192 +++ b/symm/t/rijndael192 @@ -3374,3 +3374,225 @@ rijndael192-gcm { 0b9e340c141493f9676c99eaa36b0463639b3db40dce5e2bb48c3222a1b82595be0ae12890f61bdc22f71a07b8ad0136d395221c57e12ca7f8184d3adbf82497f5c6ac105b1545d433a9baf50f b24035d9900bc75dc879617502f0f9891a2428fa9d6d472d; } + +rijndael192-ocb1 { + 60d7bcda163547d348b7551195e77022 + 907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268 + "" + "" + "" + 13b24e23a3819cb4d7bf3ca036241de7b3420a061b6d62d3; + eeee533285a6ed810c9b689daaa9060d + 2d4b6003062365b0a54364c76c160f11896c4794846ecfa1 + 4a + "" + "" + cdea5e7be1867fe4017045e85df90d80eab16117019cb8d6; + 7130c9f137120634c9519848a877ff77 + bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba + "" + 23 + 82 + b32646848740cec0d5c5a20e2d56c34d455d9574159fc509; + 4085406a6136512061f7080cc07df059 + 1d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c926 + "" + 9029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b00 + 5f7a353fa6c23af6ae6afcd8fae5637d8ac4edb01faa216d94a8b31628140de88e741c1acd085a5e98d64f69090556f641d8f1c813fb1b3675a35aad57f6f48ebb0b7a8270df4216 + 76df452b066d18894a564d78abd6d0c649602bc325f73595; + 0961040ef2f9b2fc5fa450727a9b542c + de52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a + 97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600 + 157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa91563 + 6ed78c4004e5960f34017f9272ef3f237d5fd83076668683183dbc0b62201d1223550af95841dc4ac72f0bc0ce36f014237d026518a6b1bd0ce01e56e87bfa9c42f4651365f65b8c + dbfa943531e52ab36828c47f5e21fb22ea0452f0a45395ac; + 08cdec3f768281e040a9b9a222bd689a + ef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233b + "" + fa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff + 74751fe7898b6a9c7e28c4e3132fccaf4b9af8ceb80ceebc88672c05c49d5286724ddc6bd3dee79921cdf0a0265277d43048c588e5d707488d1dfd90808d6b74337d1e88aac9618ddf181c1653 + dd9c6625bb9d22266087655b51efc0a2d8cb642f6c40c6d7; + 3bcd211499268878dbf30f1dad89d4b9 + b12012e4713df46795630e7952d22bb02d7100b8b649377d + 20a8f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ec + df3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b + bfecbe5ee869f7c5b4bcc3282963ed6dae5755c25a070c40b4d6a8dfb74670bc440d0af7abc018642d36a946d8488aaab9eabc0c7cf4ec6d2f8a9a738c131188af47d7e791c3f7e6a34d26724d + 5dfee1b1d0a1ebd94737ef267a755fddd2092bfd35e7a238; + 6d00f06dc188d472a784e0c6f21195a3b9f4ae98 + 5511265febd11c164720eef9eb1c8dd0b00951f284649016 + "" + "" + "" + 6c1ae06b473969bf8d4abf8890f91ccba11f094b316d82cf; + ed00456331854bc78bf43966eb0cfa9138ddc399 + 08445608fe95e81c2533e31c9c1a9851bc2810d858cbbc84 + 24 + "" + "" + 7025cfe14177506ac341239746234c80533c6fac1b94afd8; + d126b807e6daa089c3f9099c5ffb824173d7634c + 04226f30cbb7f0e4a973a8cd190107314717a77456f3ff66 + "" + 9c + f2 + 91c9a9506104ca20249008a5210a18e972aa0865d8c083c7; + 732b58db8f48af65f7cc9e3fb90e1721b730374f + fc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd5050 + "" + 03cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff6778554acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3 + 5c8a44ab82a0c2efc66e6e039e7c70a611991b5901b7578c55f4716fb7bd37f55c4bdc962f7f1ed93e14804b4d41695d639b3b5b1725c9129a47ae9542d11787064051cffca20611 + acb050737b017b0b4c10a120a4d740a2ef33d5e26e7251bf; + a4c84cef64f6c9b53bf8f957f4b03cf43e89957f + 9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205c + dad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf9a05c7efedef3401539c51d2a90bbf7f1bfc + 338ab0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b9802068a9f891bc5ba5afabf8c3122d12d7ff3c41122d70 + 77b5382bf3a2e0f3545f398ec08d94825572da0ec6bee8d16a98d42f246eaaa8d049499dcbb872e5d751e700b3d2edff7264c1eaf2f0a0c8987932a53e171e62c2364212f3ef3405 + 87c558d944a7c325965931188213f6a37719581ade0d0561; + d17d4569eaff59a332ba58d5d5589bfe079753ee + 1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6 + "" + dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de128 + 0f50a0d3b7e41c19a9ed4c679ae42b4ba5055d3e9c60652c07daa390cea5c499787ffd7dbb1cdcfe095ac7549db82c3068e053bb2fe3fd8a5749d653be84a5ffadbc1dcfa6a400006f6badaa62 + 14270e56d692e540aa7cb92b1b285eaf00c6e183c6f03341; + 8c69d80ea12ff4bb5f069b8a2e86041c1b9fc214 + e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa + 6c36800d9645563a308ba60076817523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd56f6f24e33 + 958b8c2e2352fd61e4fa8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a92142b5b0677da1a + d9933fb77ae951691f9b11b7eb9a949191c1a39d09e4bc78a0be75bc8c101ad281eff87a1f5da724d79235e949a589b39125d0a91025a9e126054d980307b934a590687c64e457991a88895367 + 03e5dddeb49ab69f6a062242f8c1a0d1d2efb55895e03a83; + c273117b45bcfff5d5f8b6fde2893232a9f81d14517ffae475f6b94a + 43a67b3d380d2f9aaafe2dd721c0095c8808847689211450 + "" + "" + "" + ccc44a234758478dbf8787d423d646f61b0cda1598fca3bc; + ba8095ffab1eaadf66fd22ac1976063e113ab61f813e28a1397a7974 + a1d7f4220c785fe426a5a0e80f678d404147842941feeffd + c2 + "" + "" + 49e97ec66094c4bc5ab035aeaf6cc43dacae0f582021e584; + eb44dc8c0d5e8f444f7f4e0c893959b74dc23a7bb40e7e0013e51506 + 86d2301b43a15a84e81d7f5cedaa49e2414ebf47970e5604 + "" + 75 + 48 + 8128cb7db1a943e0cca309d9204164fbd9c34ca6c07f784c; + cff206877de69146acc3ab6cf8556b7aa776945948d1b8834df2196c + 92ec1718dcdeee0d52d9539726d2810391b3f9d10c39b07a + "" + e8f08ce7cee4758a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b0739 + f8e281d776b2fe8726809be7abdd62c22c4b523b7613a5858be2a07021ed3dee1945f62bb37cc0be1de3b1e475ed5828ba13a26f34e2651da980ca02602c5e58c8834ba9e8cb5e5d + 97fb24449e5402189c30187aedf9627577f0397158331735; + 8a1458c2c6b61dbdbc1cccada8c1a0a9aabb6c4e3c3554f8fb1ef616 + 14c270295dfc0ca6551ca4bdb75359f91cb9d921056b7de7 + 4fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cda98ad6cf2bacf6f9fd3f821330c43f3df6c2b3fac7cbcf96523d4723f91801325eb8553236651c + 96788d73d192ee53b3f3ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f16f64b837bb4926214211a1c696ba172010abb433922a22 + bcfa139e6fdf6e5bcf96a5c29f8e0145c1d613edd25b9653bf6772d21bc6ae69fa71eae2029716605cf398247b7f2e5a97c5886d94fd674c40b5d42218c2adc7f84770e7288fab36 + c92aa7646695a597df47a2c686ba2abe2b0d20caa4052185; + d9fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b + 1372a5aa47b54fd9d70c70e117bf1cae71b3a56f0e7d839e + "" + a59cc783443d64f2ed6a29b96856beca34fd6544bcf86b799e2a1681160ccf055f0fd3001da597a1406d465b7b1419ea51cf858f938f6daafbd656445a09898eaa96ffc3d1d2e31e4e34c94b8b + 2cc3069cc00db4c51fb54ccb6ed44217a5169eeba4d3fae16878af2b0f969d5ed42da3fe8901645369768e0ca33cdec8cd422a0442c798d8a214fdbec4564b09d70666884ced9a0e64bc9eb3d5 + d9a32a67db1fefa016cd7961df3e0a9e9949168242a2181a; + fae64825ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099f4 + 7166edf54538e88fbf433a7ff212085179e79771f6eee728 + 3ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a959cb8e75079bb018ccc8c54f31b450e88f8e9002926ad0284c738f4cb0f58a1e3 + 4c8b15ad930c1b627235a2cb84241986c251f5b70be2367f047265264e0da72efe8995e6c932a17eab511eddb8e4ba463c663035a6ae8a7a899e4279d54d03f0e0f3e961dcfd40088d5be74088 + c077af8264ca4bd0902dfe7c6f43dc4232c619bae8d151f9be98caf39527e373efec0dc9fa55b62f207b533724b78935255a608e9ac32da258e8f4549d473b95b9057900b2f715425d19804801 + 125a60f3f7f0913f203632d93f4f2cc70e76ca59cfda9a57; + e4097efb0368c7e2f431ee69 + 88cf2a0e9ebeb3de79c4f86c9e4fba61339d6d907eab7707 + "" + "" + "" + d040e427a7ea51019b49c65a9c38a803bdffe3635357b8e3; + ca48ff5ba1ae93d16225d469 + de5747bc1addf5748729720a320fe14fd29cfc59314fe207 + 9c + "" + "" + 2bd8090e45ccb18c92e3c133a19e0a3d3bca6dcdc4f5d591; + 0a2535ded56112d6e3d33dcf + 7c71cd7d130323794e3da84a9df69703a9caf02d2a8f57ac + "" + 71 + fb + bdb4cda8932cacfa59b5e1635a394ffae6a03ba034759e86; + e554a6850d55882f8c7ae699 + 4fc8528bd18c374fc43581d2f72a89584a2404a059f7f99c + "" + 7241a0c879d6d4455b382a9ce757b3e7a1d07585ad9d7ea9c7c9cf54f3bc6d94238ab56d738e02abd651477cd726d6f3ebcd6fadeab50906642a7de6496247060e7be3632ed9bd94 + b29f37bc84835d3cead667fda5bcaef6a0b93a0e1e79169f94d0111d28e0374fe7cc4a2f9ac274c3f31121d2a1058094b6ac1707f92c87a45301cc2451eebd8501d63a8f561d2f86 + 40f807380b82f25a620597ef741e74638ccb5a7a58e4bad4; + bb42f45a8733b2cd2df9d1d9 + 05cfdb29983050d6bcdb686a0c897031ad09a5b8fa687ec3 + bad8e18dc2ad361f1e226e78876cd35f86c639733c5cd84aed8aaebabb7e0f24edfd9710b7bca91b612ea37fc5cc09f7f62f66b423fcd2dec5de24d264f2c839839c1b06319f687d + bc68d9f07fd41ccb4f8cde8de201ec2680332bbded4883deea0b58b54bdd13c17ef292b0ded3caeb5e57fd21df10bc6186265ee6ea45907de6cb822fb2ef953aea358a03e0fce2e1 + d3445b37b2ee6f261baf94fd09ba0121b1ef9a8dacddacff5ed3bf46c36cfd1f2a5e9a1e35b73299bd31137a2a7746c8b46eeda7fec1662842934d0d1b41d240a40886e17f3733d1 + 2f65d5e606ea39bd566246b137733278aa2942ace8edc2fb; + b9511bd332c86e67f123377a + 8f0256b8dcc73ae1b3c6cd3f104e3cb24284cfed17811d64 + "" + d492d39ea7496993a25b072945d83f923e66b0a6689cf0969c003a8fca80e322a4b1bf050c1220450433efb6b6d8a2d820cf27a64b9d47f636845dac557bb3e75f3a18fb8e173416867fcd0ee7 + 65bb74fac682e5422c376f255b91a383334486c836f5f5d578b276ef240206a1761e2dc66109d2b11c4b2d25411c5e0a86316501a1a22a779ed2be816b7b84ebbf1c0cbb41a332dcc43a8d0912 + 0023df18856b33924dbab9d86440a7fd289d314aa17a282c; + 8ddd9236beec76d55ed58b10 + f91d07a037791ab96e83c4bf2fb5b205e592c172a5cbc194 + 56c95c1bea6079f3867e52d663cb3884b2a0a8ff825df752423f3179bfeb89eca385f20ddce5f1f23564672e370ffc37d400a31e8aac1d426ce10df73c5ee478b3b63d + 91024780e974a8a2a0e7a36f84ab1286b627e7d01b38a84a6de738721ed80fd0d7f69fa658abb5a440d304128719b541a9451cead18e4c61d93d1f8fcc53574427767396322b3bf7d02cec0509 + b58b1c9dc465be8b7159c9f7c4b8ce39c251d39792eda3da5be8ef7b887114bc1b5af143be79983b37a11a0d96082c924d0308999a39734d0d6eee63e651be9a2cb1cb2fc8aa6db22bb146ee53 + 210b175366af46c07715847dfd494cbad171f2d8ea711f9c; +} + +rijndael192-pmac1 { + 60d7bcda163547d348b7551195e77022 + "" + a2de3f1a78f51e79b270024ef181a3c7866c4901882d8f2b; + 907dd1dff7dac5c9941d26d0c6eb14ad + 56 + a69a6414d3476b1fe006cd01597794cdd6f335aa776941db; + 8f86edd1dc9268eeee533285a6ed810c + 9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba + 8cadcc0f2b6f103713f1875836da1fec0d2492e592969018; + 234085406a6136512061f7080cc07df0 + 591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49 + 5fb116908156463f1b1f698e9cecf1e6ba99c5292359e8ce; + ae1d50c38201a894476b3f102b752eb952953396 + "" + 9590db354fa1be8edc4f4464d0e292ddc6c38614cd7a8d9f; + 6f27043eb621b7f65b000961040ef2f9b2fc5fa4 + 50 + d4354854bd0f842a2d7d2d1ba28362a1ceea024ee706eb41; + 727a9b542cde52ebfda19d0ccc520f215eb57bb3 + a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f + 979f0fbf31f2afcafed5d59414bbbc8629c5c1451ca52f3b; + 8f28523c03d4de1600157846b710ee72807a2219 + bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f7682 + 9b980aca9bdbb8333cacfd8a76c8bd57e1862136831e194a; + 81e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a + "" + 2e46bc43892089f8eba2108812c2cc5c4ec74ae390223bac; + 42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c + 03 + e7cf293a42d599e87773781f8abd4a303f2967de3a36b17b; + 7ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9 + aca338527ef19b09c063c46f88de9fd41e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f083455b + c190a80eb16dea538d732bad5c1d06decbc09ee1a4eee891; + 663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef3 + 15d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e4 + 54fde6333577613aebc01d5de58556aec8dc6911983a136f; + 7479a684b5aefa69a4cd5214 + "" + 1d0a9120f17311d23b4babcdb18d1225ec90fa3276f35054; + 7ed12ca986981a874498ad0a + be + 34750cd4fc57273de4b5858c39bf05da2b0156496adec2b3; + f8bc4fcb70e27e98ef1f0446 + b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc3990844 + 22e6ac9f6fa50e49f0e24e710d62c83fdb6ade50f102bc31; + 5608fe95e81c2533e31c9c1a + 9851bc2810d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e + d3653df2ff5ca70439d6f154551ba9ff27c5ead8db7af2a9; +} diff --git a/symm/t/rijndael256 b/symm/t/rijndael256 index a4cd638f..fc5a33e9 100644 --- a/symm/t/rijndael256 +++ b/symm/t/rijndael256 @@ -3387,3 +3387,225 @@ rijndael256-gcm { 4c8ecebea3c8b010464c18f765a3e100014f564146cfb6382d1e60f5727f37bcfd18f0227c1cc3817fdac6aa202fb93606338616cd140f999d57c36cbfcfd3eb38fb4c4cf5e34a9f0a16b703d268c428e4b3a2b26b4d3a19b08b5468632020ae7cf98a5b6a 305e9c670143f7d88cefabee533e27ad48988b607be91f0aa2f17649d629b688; } + +rijndael256-ocb1 { + 60d7bcda163547d348b7551195e77022 + 907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed81 + "" + "" + "" + ed3e1a85a9f92797e1fecc6ea6840a3e0474ce6a9698a720d3df978f3528e06b; + 0c9b689daaa9060d2d4b6003062365b0 + a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff + 77 + "" + "" + dfb76cec6a750934ea46b81a7e789faca6d7dfb9da0476a03762f15639df77d3; + bf79192a5b50ade5d9cd739a3d1f337f + 29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd883 + "" + 74 + c4 + d5bf8b3be61be60645f84da4eeaf832f082a8c0d6ffc3cc3dcbe0b59bee9de13; + d8cde8e160ad10997a21635c6d62c926 + 9029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e5 + "" + 05da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad + a0403a115ebc9ec954f8e240c84a2c9c41241258c510be90585ac99233ae5283d3761b07c48c4c6ed2d445d16d5db78c50e54f9866ba1d5259a887eed0f2efd3c93d77945b1c03f8cb8e30ac431175dbb47f03d3643708aae7f0a329eb433b58 + a26972939b8f37a37fbb8444db5fe6689b857b639d7b54246144435926e265a7; + 54efc9a38378c5b93bf4f2aad2605fae + e2b03fb648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f + 28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689a + ef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c46f88de9fd41e72d7b97e + dcdb20cd5e1952a7585ea1a5982f5f52fa76a949f615460c564c1f19106a7d06c5b1b194d64d000a368d353e255edb34e405639298630f6dd09210b7218ddbd701c8d29996da07df9ea188c3a58f8f924cae99a9a04822d148b39e396eae384d + 4e7b366cc5683e7f8687281003d4c70f2167371aa3cedb3aea7c7b8a3a4bb8c5; + 23e6eabdff3bcd211499268878dbf30f + 1dad89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f0 + "" + 83455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f1fef6ef315d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a6 + 158feb4340d051637c994afa715876f75eb2f49e832bf4a3d8e7f2d7268f4050406b13952ec6aa85123767375335c65e2651fb803c3399c5f51278c0381b942c575470ef2f2d7a3a003fc174d62c38d4eabcb7108adf2e2eaaf6c74e13b759f37fead1fdcc + aaee630716b5f9a791a7941b640408defde3f1747b50bdecde2bf82723fbe523; + 84b5aefa69a4cd52147ed12ca986981a + 874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b6d00f06dc188d472 + a784e0c6f21195a3b9f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3f9 + 099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3fb90e1721b730374ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b + 374a36cca45ec0f3ea9cc9bc1fb67b6c07a8ab781d118ce9d56988904518f853d2f7551f61b0d87e5afc19c5e732dc0c7d7aea114bb3d7af88cbcd21cb7d06a22eea30921d1277e4e4577152497ff59ff72e55156262bdde9729721c2dc467afb977e5ee63 + ccbfaf10e2aeade3c72d7f465c271105ca36369bb2644d6da6706702fc8601bf; + 8f0911e32d65cc1770a18cbfe6effd1ff6778554 + acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c8 + "" + "" + "" + acf282a61dd79a7e99740e531b665b12c199e0f66bc3f11f4a08d8fcee8fb713; + 4cef64f6c9b53bf8f957f4b03cf43e89957f9a3e + 8128f8743d16687b7bb8deb9bd205b70e04c091d205cdad9e9a79b1abf91b085 + 1e + "" + "" + 86c6f639096f603555766a0a95549f99fd21ee543f9fad5b44d644c96114e172; + 5ca605ac8451399587011677508a15dde524af3e + 2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf9a05c7efedef340153 + "" + 9c + 8f + 51df0841f87c0475e6a8995ff30422fcebc313107123f17dba67767e0dcff519; + 51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213 + e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec59 + "" + 0294a319b9802068a9f891bc5ba5afabf8c3122d12d7ff3c41122d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad68daac90cfe22d2f1f2968cc42fa8b669ed3bb + 0a74784147a1986b028e29a9b9ab25645be3d7cb0774e9e5acfbaba28742a47196bb5297b70ddfbf10ce5f1517abddcb29d0fd5b715601a795af85d5503033a19bd63c2533fd50f3bab3c18fbbd7894242f15adad0f1583a5a63ab9745dc712a + 9f1f55ba4cb8865c9b9f839183519a3b3c0bb4ecc294e1ea248be64aa7f48f08; + 3542a9cf44bbc8c6254d980398bd94e66eb4563d + 405e51881e99027b8ab9aea3ccf860b0009740763d96836c5f87b95460938de1 + 288c69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d9645563a308ba60076817523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f + 834a06148f302c3973accd56f6f24e33958b8c2e2352fd61e4fa8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578c8ec4837898a92142b5b0677da1ac27311 + 882bc55429939372f9123390b69f5ce58d26d439fef94063f8b2e96ee4dd8fabd4e9d886e1a1362ea2f95e6e9691c0ddced94c5ecc54893643ed0e75660d43a19a2dff771b1154c860b40d50d68f514c94ee102a17dd347f81954c6ba2266cfd + dff24d1115cd7f5f41e72a4709896297a9cc05dade73cb71ae7b26254faf70da; + 7b45bcfff5d5f8b6fde2893232a9f81d14517ffa + e475f6b94a43a67b3d380d2f9aaafe2dd721c0095c8808847689211450ba8095 + "" + ffab1eaadf66fd22ac1976063e113ab61f813e28a1397a7974a1d7f4220c785fe426a5a0e80f678d404147842941feeffdc2eb44dc8c0d5e8f444f7f4e0c893959b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e2414ebf47970e56 + d96d78f641edc2bf6b208202b51ec76d956f5df89026a9f64d9266a2353dbb708b28e63a6999c6adcc265ff3d348d648196d3583e5af294a9bfb31e310f151d70ba5c9735224d768ec4f9400aafcad9aaecf25fd4cd392e35e7c00fe2fd8787deb07f44d00 + 94837daba7fa8fd70cb03d138e2f493e3db5c9388cadc8e5a6612075fe49b300; + 0475cff206877de69146acc3ab6cf8556b7aa776 + 945948d1b8834df2196c92ec1718dcdeee0d52d9539726d2810391b3f9d10c39 + b07ae8f08ce7cee4758a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1cccada8c1a0a9aa + bb6c4e3c3554f8fb1ef61614c270295dfc0ca6551ca4bdb75359f91cb9d921056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cda98ad6cf2bacf6f9fd3f821330c43f3df6c2b3fac7cbcf96523d4723f91801325e + af41f07118ec731dca9ce6df290baa0e5000c68a380a9572679c32437509525919c9b04362bece8721d10aaf0fa8dd9a5fa9f3770c5d5ec1a0deae996255b61fb81f894a521f939cca36fbd9f730ab0d0c17d0689f8c1ee78d4707a36c219a0a60c3fa2def + db0e21f651cb6892563f22ec7d4e04c8ab46c22221819f3060f64c5736ee06a6; + b8553236651c96788d73d192ee53b3f3ebd66ddd98cedbe88e245de2 + 5b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f16f64b837bb + "" + "" + "" + 9f736b72141985c5a64c5888c112a3c872497e54cb822ec3790fc73055d5ee58; + 4926214211a1c696ba172010abb433922a22d9fd881519165eb9d851 + 97a21cc34ac0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b54fd9d70c70e117bf + 1c + "" + "" + e7b0f52d7adf83fe817103f61ac846a02e957786c5e605057e41fe4dfa552948; + ae71b3a56f0e7d839ea59cc783443d64f2ed6a29b96856beca34fd65 + 44bcf86b799e2a1681160ccf055f0fd3001da597a1406d465b7b1419ea51cf85 + "" + 8f + 2c + c93c329ab8f440bb37247f60a5370b34d34ad7decec8e6b2d160acd4c1d12410; + 938f6daafbd656445a09898eaa96ffc3d1d2e31e4e34c94b8bfae648 + 25ecd75a66d88eedb969ffe07669845ebb7a24c69f13d099f47166edf54538e8 + "" + 8fbf433a7ff212085179e79771f6eee7283ab178ef2b800d7b969da05780ffc1ba78c70dda7a4ca2a25e771702fb1901ecfc8a959cb8e75079bb018ccc8c54f31b450e88f8e9002926ad0284c738f4cb0f58a1e34c8b15ad930c1b627235a2cb + a213a44a04d450838aa1eff21b53902349c2af2ef7e104af43fcc781b42c9ba22cf484ff71dec347a3f15c73eb2e644fd119297807f96eb604e32bfc76a2dfc2ad53c2ea3842a06e625954689df48ee180d465a55d5df9f2caf89ff7583e6a6e + d09e13109159cbee4f1a32379ea1daf61be14ef11778514d79a403df22b3873b; + 84241986c251f5b70be2367f047265264e0da72efe8995e6c932a17e + ab511eddb8e4ba463c663035a6ae8a7a899e4279d54d03f0e0f3e961dcfd4008 + 8d5be74088e4097efb0368c7e2f431ee6988cf2a0e9ebeb3de79c4f86c9e4fba61339d6d907eab7707ca48ff5ba1ae93d16225d469de5747bc1addf5748729720a320fe14fd29cfc59314fe2079c0a2535ded56112d6e3d33dcf7c71cd7d1303 + 23794e3da84a9df69703a9caf02d2a8f57ac71e554a6850d55882f8c7ae6994fc8528bd18c374fc43581d2f72a89584a2404a059f7f99c7241a0c879d6d4455b382a9ce757b3e7a1d07585ad9d7ea9c7c9cf54f3bc6d94238ab56d738e02abd6 + fcc7943e60d8714fb6070f0bf3db4215b5bad60d25f36aec66ad4ab1c8512b26e5075077d4685495da25e954e00972df8f01ee3e9a6a29ee9d27f45bef2a2d975fa0e2736b59f7273df0489bc440883bdfdf55cceb03bbaac41c4b92bfe099c7 + 72230dfc699fa95374349b8ab1e55f95234d8f8ffb80eb193157746d5e28f670; + 51477cd726d6f3ebcd6fadeab50906642a7de6496247060e7be3632e + d9bd94bb42f45a8733b2cd2df9d1d905cfdb29983050d6bcdb686a0c897031ad + "" + 09a5b8fa687ec3bad8e18dc2ad361f1e226e78876cd35f86c639733c5cd84aed8aaebabb7e0f24edfd9710b7bca91b612ea37fc5cc09f7f62f66b423fcd2dec5de24d264f2c839839c1b06319f687dbc68d9f07fd41ccb4f8cde8de201ec2680332bbded48 + 1c4d9a95f9cf85283b59197b0449fa65429a7de12cfb25453f01b0f7afcc5534fd6faa80ecbfc8607fe7980370d3042421385d7c684ccf71d4170db54359fcb4cff4d2d6126b587fd6b2b50279ca190f605c740546b2a0a75055c0cb2cae2506a5fd23be2c + fccd1e6489cf18fed4f745338cb06d0a61a6c692d72bbab24b3fa0ee9e9e2a88; + 83deea0b58b54bdd13c17ef292b0ded3caeb5e57fd21df10bc618626 + 5ee6ea45907de6cb822fb2ef953aea358a03e0fce2e1b9511bd332c86e67f123 + 377a8f0256b8dcc73ae1b3c6cd3f104e3cb24284cfed17811d64d492d39ea7496993a25b072945d83f923e66b0a6689cf0969c003a8fca80e322a4b1bf050c1220450433efb6b6d8a2d820cf27a64b9d47f636845dac557bb3e75f + 3a18fb8e173416867fcd0ee78ddd9236beec76d55ed58b10f91d07a037791ab96e83c4bf2fb5b205e592c172a5cbc19456c95c1bea6079f3867e52d663cb3884b2a0a8ff825df752423f3179bfeb89eca385f20ddce5f1f23564672e370ffc37d400a31e8a + 277fd76c5b58942c48687f4153c8d8aa6521902cff09bab07145801225bb2823fe4e112fcd11726bc62da7864baa800905c9392017a574d966aca87da54d481e320934c4d5b8858bb53c9f91170e96edf3e3b6a583677e2eb0f6e876162ebc2d9f9d5f59d9 + af850a26c1eaa2af0c507d84542fd2a5dfda7ad3f6bbd94d7202716f0bd83b66; + ac1d426ce10df73c5ee478b3 + b63d91024780e974a8a2a0e7a36f84ab1286b627e7d01b38a84a6de738721ed8 + "" + "" + "" + 1a65a7de04f027cc7ee41a321985a03044b009409ea0a04a6ef4f268a40d647c; + 0fd0d7f69fa658abb5a440d3 + 04128719b541a9451cead18e4c61d93d1f8fcc53574427767396322b3bf7d02c + ec + "" + "" + 2257228003251d6931be43f6f65654859ae865666736fc80b7ce6feb69cf8c4d; + 05093696cec07591ada46227 + 1b1d1519eedde0df37a330fe8c22ebd77705917b7e32ae88f45a34a8ba303723 + "" + 5e + 44 + d4ef8d10bc4dfc028117bf6b79fadd4498eee972464c390c38cdd44837eb3a8c; + 19a394be4d26ce47317d8087 + 684456b4cfc5555e925e3e7b2ebc829b2d0505ea617b0ca9531bcdb96040d390 + "" + 40e632d562643ccb64286303040fcaf679e914eaddc05af8843ce6a427b99a5dc266de31c09165237eeefe4b58cc034b9f099f04678c2a9da898b39324cd3087a651014f6796f9c4881d89e127e62221e47e57badd678d490c2f320ff8fb1c42 + 2702a4cc524f8c7eaad3198222eb31272dcbd5885798ecd2767a8e9292550feef8f1a6ce4c615967cc154def805d429a2964b5202955972c106deee2444df7dc0a3ba8940bff435cde364f1a43e4e5081d6bc4296ffcc3f907152b1e01e892ea + 37ede9a353c66446268a96e3101e6716b5a0875413bf2cc714720277885cf14d; + 761bd439f3e96dc0ed1d5b21 + 69912af1a4e2c533c52ba3e8c71c23a089e231480aa63c484fb34bd522397f10 + 2cb8ecf4f64e329884fe73be257a753b38200bc23f94a079bde2dd98d813655dafa15b85419d15c41a5153cce5d0e8c8702db2ba11927589678d4f7b8fcfad4818c411f15f452300903874f9a532ee46496ae753a2340af7b91f9632fc5ae71a + e18b40de751ab6b6761ca16434a9935e466e11c1cb072f32a59c313dba3db646ae909a096697d9a7b0556463ff1126ebc43263391424d02739d0787e804d8f1dccf6c897a8a48431324324041b5302ccd501b538bd03d5cb5c90d1fd3f7d2be1 + f03d990fa20cea58d5d15c20a6a8479f8a2650c245da7d5e8505e2e32c924d6332b7e8cb40139bb17a2b6b95a200c1f4cbf967ec5ca8bbd04db6f70a767067d46fcbc066aeac04f2a3f9e647b290d31f3de21a9dd0e757274c1623319d1f98bb + 129dc99b2b2d0335f5453ba882fa4469e4617169fa9f3394fbfeb4a9fb68925a; + 87a787032c79ed900764ee4c + e1d3fc042c084f7d8c0c48ad7d6f1eabd0fd1ec24a88f26734d5c8d92dbd873a + "" + 8fe113090d401bea4d28ff49f10ff593adc258e091abd31b62dd1735158f98765970acc6602da063aae01a2a199d3a4f37a5f062d216d2053a83b5d3a0488ab0d2df631b2892cdfcf9fdd0f37de9ed67179aeae82fe00009428b297b553230a6d917fa0c1a + 7e3a6085662512c823d6d9929dbcca2e1833f6589a38fba924c2e16d6a1d050b7442fbbc2dfd750c76235c96aef4d0d9388c457c5c368c58325aa09623297e6c4a5f19b668ec3ace50bad6c64824ccbb0ba3c72fdc5041ec93d3f231321f687906e3ebd93b + 54e6538ecb2b4903cb6f375cb5956c92de38b1584b08cff45916a3c4b1f5ac84; + 233c9ebc8a4cba45b20543c5 + 40fc1b9dbce078b87a1534acf03897b95a3f372e9f6c5a5f2ae44a7dbce9ba43 + a39089de20de70d0544b5151db0a16e9769e8f2fc12c7f839fab269a0056284a697ffd4113a1cf43b5d5bdce2d86dead83f5a356e9106bedf908db61f1119f9700260ea9379cc7232184d217158fee8ca42e75614739e9007f234f + bcd86b0ad8f641a0449b6d9b0f99d1cb4a57a4d6f987feb0ade90aa1d81c4f497b3734be301da3e25fe692629db57311f422f3a1573f9e0553a23e96265e4326fa532d7136863e5b4bc6c99ade3d4eb23cacdf6e42ad8ca13187eba1532920ba31582b3793 + c65596e9c53e56de712143c2be771a3707bce914410b2e32fe484f74a6210d6ccc48122d4df80f2fdf5b3da056b8742ef07b5ed7c038d18d61da0f5e6584c6af306d1e11ed69ced0594202b10cde788cfe963d38846daa71158909e5fc051dcd0b11b2a8c3 + e450cf5a72fbfbc72c1249de355a6c3fd6efbb4bf28f68c48b286266a7a2ec6e; +} + +rijndael256-pmac1 { + 60d7bcda163547d348b7551195e77022 + "" + 932f0d9371e20b910a772eabeed12feef4f4859c0c0d15200b2060df6a3cb6a2; + 907dd1dff7dac5c9941d26d0c6eb14ad + 56 + 9a97ebc929e438b9781ce3263e5f78f07fc74cf685c00cc7e16977985459a03d; + 8f86edd1dc9268eeee533285a6ed810c + 9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd883 + 27ce94c2d0af1899c43ec264b5ae7ead31b2dd65f45f3fe0e95cc0ac6576f672; + 74d8cde8e160ad10997a21635c6d62c9 + 269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a9b542cde52 + 571b59ffd88f5aac558bf81218c3cb2fdd9e800b3326401c649e53bd5a406f57; + ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6 + "" + 2efae48af6eabef0778e76390430974fbaaf244c3fc6bbdb1e58b13bcb580fb7; + c95a97a48030370c33d090c54215abd6b3ad54ef + c9 + 4aee747efed92d046967d15c7fa52ad582133e03a0a177ac602ab5666e5c23cb; + a38378c5b93bf4f2aad2605faee2b03fb648e27f + ff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2 + e5afbb13c8243b7c984eeaa0307277e7092658217292fbf05e8d0a56e3fc1b21; + 712a199e533fa9156308cdec3f768281e040a9b9 + a222bd689aef66f5306ceb0c6b08ac8b0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b09c063c4 + 913f5198775e26d1e0f6c2a2d05e26b280f7ddcf117f19afaba1ee0da1426e70; + 6f88de9fd41e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad + "" + 1f93abf128d33b355c0a88df509ac50535f22ab4fb12799f703517544aa9acb9; + 89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20 + a8 + 3f86edb2b064d7d351daf60764c151d2f8759968ece6d3f000b792f6c3c92faf; + f083455b663e4ee1315f3c8f2aebfa921451dcd1af5813b70d30ce2f + 1fef6ef315d0798391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb658b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abe + 27080744f866bf654524ac485f602841ee45bda2e22542f55ebee2e275952bff; + f8bc4fcb70e27e98ef1f0446b42fb144d44b6d00f06dc188d472a784 + e0c6f21195a3b9f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc2810d858cbbc8424d126b807e6daa089c3f9099c + 17313b005c8ed5153fe443e60220e8f21373fccd865532655f15d74393767da0; + 5ffb824173d7634c04226f30 + "" + f4a17475609b3057cf1af06d015538a527b56fb849c986850c224ace1775cbab; + cbb7f0e4a973a8cd19010731 + 47 + 74a4cd7ca684aa5015445562c68f2c4dbdf63d4ac5fb0f392eaf16b533fb0304; + 17a77456f3ff669c732b58db + 8f48af65f7cc9e3fb90e1721b730374ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff6778554acf1270485b203a3c1c4c967c0a4 + 83b54ce5e25f2c786bf25fe30336fd71900040f048dba6e99d175ac195510fac; + 58cb948bdd409b687fa3a682 + 7b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a3e8128f8743d16687b7bb8deb9bd205b70e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d + 631ff4d45f8f6536dbc36c29a857d440c7769e87829b468e051e0de73f82940a; +} diff --git a/symm/t/safer b/symm/t/safer index c4abf0bc..67359283 100644 --- a/symm/t/safer +++ b/symm/t/safer @@ -263,3 +263,117 @@ safer-gcm { cac8eef1be089b75a8ddb79ca8588436e6e9bac025a6d89bac100dc284 d41ff215540bd48c; } + +safer-ocb1 { + bef260d7bcda163547d348b7551195e7 + 7022907dd1dff7da + "" + "" + "" + e2e419f8cec4dcb3; + c5c9941d26d0c6eb14ad568f86edd1dc + 9268eeee533285a6 + ed + "" + "" + aba50e2dfc553b0e; + 810c9b689daaa9060d2d4b6003062365 + b0a54364c76c160f + "" + 11 + c4 + 4586e65f8c86dd50; + 896c4794846ecfa14a7130c9f1371206 + 34c9519848a877ff + "" + 77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4 + 07f19e04df183fe463e0f8d408918e4e90d5fa7c1fcbf997 + 8248b794a7bd1a4e; + ba234085406a6136512061f7080cc07d + f0591d8fa21f2dd8 + 8374d8cde8e160ad10997a21635c6d62c9269029df3e6057 + acc87638f508046733d9ff61cdbda3b3e9878731ebfedd47 + 4f53021f22a68a8d47c855e163a27226b624dd712fab3e2a + ff7aaeba71e97e88; + 05e505da1435dceaa7b1cc49ae1d50c3 + 8201a894476b3f10 + "" + 2b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450 + 34d295b915f6715a7aac820be272519ed925b11bf0f86145df35751dae + 9f185db0d5f8cc21; + 727a9b542cde52ebfda19d0ccc520f21 + 5eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6 + b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff631027 + 2efe1a659d7d670d28fbe822b399e07290be6934f6cec51e8eb0362c7d + f9c31f6c694772d0; + 58fe2b69ac26afa3 + 349829b94586306f + "" + "" + "" + 88301767ee937c29; + ed54154f8f28523c + 03d4de1600157846 + b7 + "" + "" + e4b7676fbd808aa7; + 10ee72807a2219bf + b474fd71d891f24b + "" + b6 + a2 + fab55a01a7ce028e; + 5d1563259f9eb53b + 571ea629c54d57dd + "" + 2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb + b690481d25e3f847a804a19814c1290205ce9cbb4b61c233 + 87e5815156bfa03b; + 9fc2712a199e533f + a9156308cdec3f76 + 8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22 + 260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb + dc2c2adba08e9ba7418ffc99171134a1581b124c03877cd1 + 220cc3fa8f48fdd3; + 3b6f5fe836813111 + 5c037ba323fe1dc8 + "" + 151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b + b8aefb9157f020717f5afd56802e8c489aa69a4ebbfd1a5c4e05ee4dca + 91762112616e9ad2; + 09c063c46f88de9f + d41e72d7b97e23e6 + eabdff3bcd211499268878dbf30f1dad89d4b9 + b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f08345 + 236430169ce67a46cf7a2b31e20aff1d656863550b2cbed9feb213bebd + 641bc761257b4572; +} + +safer-pmac1 { + bef260d7bcda163547d348b7551195e7 + "" + 061d742fa0b5e9fb; + 7022907dd1dff7dac5c9941d26d0c6eb + 14 + 496f756150b24f97; + ad568f86edd1dc9268eeee533285a6ed + 810c9b689daaa9060d2d4b6003062365b0a54364c76c160f + 659f6109ebea03e4; + 11896c4794846ecfa14a7130c9f13712 + 0634c9519848a877ff77bf79192a5b50ade5d9 + 169f91020e2bfa02; + cd739a3d1f337f29 + "" + bcb4bfd69665cfac; + 549e6b0d27a4ba23 + 40 + 1e041b274662fca9; + 85406a6136512061 + f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a + 8b6e6d10707bb048; + 21635c6d62c92690 + 29df3e6057acc87638f508046733d9ff61cdbd + 8ca64eea215c495b; +} diff --git a/symm/t/safersk b/symm/t/safersk index 92cddeb7..c58739ee 100644 --- a/symm/t/safersk +++ b/symm/t/safersk @@ -251,3 +251,117 @@ safersk-gcm { 0d4082f666ad6a4d337a93564bc648f4b09e2332d656aeebefd722a7ec 4322ea279fd752dc; } + +safersk-ocb1 { + bef260d7bcda163547d348b7551195e7 + 7022907dd1dff7da + "" + "" + "" + 02524b8ee7329780; + c5c9941d26d0c6eb14ad568f86edd1dc + 9268eeee533285a6 + ed + "" + "" + aa1f6928e1b81e20; + 810c9b689daaa9060d2d4b6003062365 + b0a54364c76c160f + "" + 11 + 07 + cc863f9f86e79df5; + 896c4794846ecfa14a7130c9f1371206 + 34c9519848a877ff + "" + 77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4 + 0a622ec626cf3be0c96a8fcabfa824949c81cf57656e3fcc + 4b897d5463f508df; + ba234085406a6136512061f7080cc07d + f0591d8fa21f2dd8 + 8374d8cde8e160ad10997a21635c6d62c9269029df3e6057 + acc87638f508046733d9ff61cdbda3b3e9878731ebfedd47 + ceaa0608044abe172e762b8a66a026b6aa231a60e32b8852 + 383b6f426f78e95d; + 05e505da1435dceaa7b1cc49ae1d50c3 + 8201a894476b3f10 + "" + 2b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450 + e9d6111a98647e1da68ba0bdfb386b3575c20aba3fff9bb7d5e52e5717 + f432ded708b7e826; + 727a9b542cde52ebfda19d0ccc520f21 + 5eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6 + b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff631027 + 58a7612db1435cc3b8b7ab586fd3475674faa6192c47cf940061b38ad0 + ee64360a85eb7957; + 58fe2b69ac26afa3 + 349829b94586306f + "" + "" + "" + bffcea16dd9830d2; + ed54154f8f28523c + 03d4de1600157846 + b7 + "" + "" + 9d9d3268ed1e6af0; + 10ee72807a2219bf + b474fd71d891f24b + "" + b6 + 55 + 7cc85e98d653ac98; + 5d1563259f9eb53b + 571ea629c54d57dd + "" + 2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb + 69fd708caa761fa04396ba9f94bb916e5a11679b3bad9cf0 + 8c94cf5b2249afa6; + 9fc2712a199e533f + a9156308cdec3f76 + 8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22 + 260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb + c9e3275788dcac045ae1478a44aac8061f02bc7e56e516cc + 8adfde6b3cd647c5; + 3b6f5fe836813111 + 5c037ba323fe1dc8 + "" + 151784873f0eb5b647da6794c18b5337685a96ed65b9aca338527ef19b + f1493455c6ef6dfb73ba4b35b25ecef1d967614169fd0db3162575f20c + 533087817a013891; + 09c063c46f88de9f + d41e72d7b97e23e6 + eabdff3bcd211499268878dbf30f1dad89d4b9 + b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f08345 + f89081f88fa58ddd7f1974ffc3fb676fc8855e74c7b85d6e308e2c3096 + b0c2845962f040ff; +} + +safersk-pmac1 { + bef260d7bcda163547d348b7551195e7 + "" + 6dd75ab7922413b1; + 7022907dd1dff7dac5c9941d26d0c6eb + 14 + 7f4d03871ad27bda; + ad568f86edd1dc9268eeee533285a6ed + 810c9b689daaa9060d2d4b6003062365b0a54364c76c160f + 3f48cfbe20527417; + 11896c4794846ecfa14a7130c9f13712 + 0634c9519848a877ff77bf79192a5b50ade5d9 + 25fb410e71c6553d; + cd739a3d1f337f29 + "" + af55847d75152f93; + 549e6b0d27a4ba23 + 40 + b24dc9bbdbe4b417; + 85406a6136512061 + f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a + 9e119f41d7bf7b13; + 21635c6d62c92690 + 29df3e6057acc87638f508046733d9ff61cdbd + 9f8f71cddf2bf6dd; +} diff --git a/symm/t/serpent.local b/symm/t/serpent.local index 30f40064..42eb27ab 100644 --- a/symm/t/serpent.local +++ b/symm/t/serpent.local @@ -555,3 +555,225 @@ serpent-gcm { 100ee38a4070af0c2e7ea43836fcfa78a65278a09ab122bdcdba11d93b63c2965341b19ff4be55ced558fa76d5c3fcb0227e037572 cec6a5923cedad5ad0bc6551a039ed2d; } + +serpent-ocb1 { + 60d7bcda163547d348b7551195 + e77022907dd1dff7dac5c9941d26d0c6 + "" + "" + "" + 686b0aac51a25d6f2878b1e50e2badbe; + eb14ad568f86edd1dc9268eeee + 533285a6ed810c9b689daaa9060d2d4b + 60 + "" + "" + 2811539055c7b5c0e10cabfd66d63d09; + 03062365b0a54364c76c160f11 + 896c4794846ecfa14a7130c9f1371206 + "" + 34 + b7 + 736d9cb5d0427f0eea7a387136323745; + c9519848a877ff77bf79192a5b + 50ade5d9cd739a3d1f337f29549e6b0d + "" + 27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e + c3b13eaa510c580acba8cba253b30f944b369f12002ddefee96ff13f3e7daa0e9836f355b08a055f75839883f3ae65a3 + 81f7d94ad9ffd90dbfaef2d3643f1470; + 6057acc87638f508046733d9ff + 61cdbda3b3e9878731ebfedd4705e505 + da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5f + a450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54 + 6f6ee0f2bfb91b2eaafde0609efb27f9df091d396cc5932c67c3989439a21fd0528a27da02e746de3bd96e6692f8bfc8 + 05aeefe7a4a38c082ec19f1ab2404541; + efc9a38378c5b93bf4f2aad260 + 5faee2b03fb648e27fff63102758fe2b + "" + 69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9e + 2fa135d2df5aa9ed43e094bba67d692edefd217d7d8f2c64a0f8a2c728176ddd7e699e8ff6681e2508ab05b1014bf461fc21d13f14 + ba576b55bfc099c9cf4db5c28e90b761; + b53b571ea629c54d57dd2d42f7 + 0800df9fcbaca48b77dba189196d1ebb + a10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b + 0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da67 + ee27f377eff38f2464b289b25dee0a73b9a803fbf821ec328a488dce759e240625a7b3103d49c590858da2771988d0c66c21f12884 + 54ef913069c3dd1c9685f2472b7fc3f4; + 94c18b5337685a96ed65b9ac + a338527ef19b09c063c46f88de9fd41e + "" + "" + "" + c4b88fee21ecbc1ffbf6ea083a080716; + 72d7b97e23e6eabdff3bcd21 + 1499268878dbf30f1dad89d4b9b12012 + e4 + "" + "" + 8e5107d4d70c8a727e44b79fbce267ef; + 713df46795630e7952d22bb0 + 2d7100b8b649377d20a8f083455b663e + "" + 4e + f2 + fade84801d77de290eb960862c98d943; + e1315f3c8f2aebfa921451dc + d1af5813b70d30ce2f1fef6ef315d079 + "" + 8391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e303 + 48a4a77a5651db3c1dd8baae2ce157c1411d1e70c22826da41446890d00ef14467c0439f1f0d10ed95ab8ee0f624f64c + d2c05303138ae9ec11f3320c4a9fc1fa; + 08be3c31e6bc58c0b7cadcb6 + 58b970e47479a684b5aefa69a4cd5214 + 7ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9 + f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908 + 402444f7ccf9e0aa13173b33afe0bb1e38c233ade7ff56f92a24bd8d17cb137ad49475b39cf3c34a56d074faa7449405 + 67924f31b67c3fc19ed79b5df55e286a; + 445608fe95e81c2533e31c9c + 1a9851bc2810d858cbbc8424d126b807 + "" + e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3f + 5fee9263e96affb3166ef4f393ad28c9baac39c0bcd021025d930e9c4ae105ed386f4664d28857b8d29c83f377590385c8252bbbac + 3ec53f10d421ae13299f734e4c33c5c4; + b90e1721b730374ffc9bc597 + f56ccbb2f294b38766fc69f6a9f2c094 + 5ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff6 + 778554acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f + 613d48844e3ff8fd0fa43fe6356b519c8e851d8b70f90d4bbb82905ac14e77e4ce53fb727b8c408bda29425856f06d722308628b27 + 2e3f1daa8e87557852dbb4d5a9f0e978; + 9a3e8128f8743d16 + 687b7bb8deb9bd205b70e04c091d205c + "" + "" + "" + 595360839f7632d4470fad88b88bcb17; + dad9e9a79b1abf91 + b0851e5ca605ac845139958701167750 + 8a + "" + "" + 446bce84dfdd94177e90e9bae6bfc1c5; + 15dde524af3e2bee + 0646541a42c2ecccb44d65bad397abfa + "" + f5 + d6 + 1c8be9521e25a947fb8bcea3f3e095cb; + 29ee41cf9a05c7ef + edef3401539c51d2a90bbf7f1bfc338a + "" + b0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b980 + 3f68fd5d2677fb15a8c99b65baf1e8aedb5a71b8756fd5326567128473762ae4498809325d9f2d1a031e58b9f181266f + 723cde60d1e536a1e076650f3261f473; + 2068a9f891bc5ba5 + afabf8c3122d12d7ff3c41122d70d17d + 4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad68 + daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9 + 9f5e2d1dd5454687873145ef6970fe06636195562fabbad9a3a76bf0dce03732a32ed87a326e3e8e9b1c5d0f41bcda54 + 802ccadfb7baaf0b6cf6579eca51f720; + aea3ccf860b00097 + 40763d96836c5f87b95460938de1288c + "" + 69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d9645563a308b + fb81a3b2a097da78f981bbb53b2623f6271fd097fb6d126851ff942038904f0fb2cf4e265448c30df6a94559ae260d00a81af76545 + d9290c98d01f6032bf110b61657e165d; + a60076817523bd2a + bf1261b089d8f23a9c2835076a23faac + 2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd56f6f24e33958b8c2e2352fd61e4fa + 8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578 + cee153d3db504d8bb1d7050124952705e0eb9150cd5806e0b40f104eb15167512699f11b129604f7f36915159f592171dbb89b5604 + 5c96b8868aafbcb195e23f9335d73535; + c8ec4837898a92142b5b0677da1ac27311 + 7b45bcfff5d5f8b6fde2893232a9f81d + "" + "" + "" + b71d7a6b4f83e6276400173ddaeb0be8; + 14517ffae475f6b94a43a67b3d380d2f9a + aafe2dd721c0095c8808847689211450 + ba + "" + "" + 7c5df02df2e106fed4414626ae5b5315; + 8095ffab1eaadf66fd22ac1976063e113a + b61f813e28a1397a7974a1d7f4220c78 + "" + 5f + 86 + 6a7d0527c06c781aea0a6b0389048b08; + e426a5a0e80f678d404147842941feeffd + c2eb44dc8c0d5e8f444f7f4e0c893959 + "" + b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e2414ebf47970e560475cff206877de69146acc3 + b6c017318dda6d2389ab13ae89849c2944a151d982f0490074e38594c6f6a819c3ed133cca4493d84434228645dd47f7 + 6eebac1b2230b2fca6daefff666d4cd3; + ab6cf8556b7aa776945948d1b8834df219 + 6c92ec1718dcdeee0d52d9539726d281 + 0391b3f9d10c39b07ae8f08ce7cee4758a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa + 4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1cccada8c1a0 + b1493269b6bc9b0c2a95e3b26c0df50fd48c5505c85d0f1cc545cb8ee4b9aa1917e71d2f8628a3b38d6282fa23d4021d + a6fe44618a21904fb885560b2dca9e2f; + a9aabb6c4e3c3554f8fb1ef61614c27029 + 5dfc0ca6551ca4bdb75359f91cb9d921 + "" + 056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cda98ad6cf2bacf6f9fd3f821330c43f3d + 5ad848d7910c43775ad95850550e36ed4f51a9180a1558752ef9043d53d15b7328f82cf31dd6e89fde07890019b7cba632600d6c87 + 58f508482940235912a6955d16d75ac4; + f6c2b3fac7cbcf96523d4723f91801325e + b8553236651c96788d73d192ee53b3f3 + ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f16f64b837 + bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b5 + 8450286f64f58e3f5cd1d62c28db59591ddf05384d3eaf824acdd8febc6f56595d91eb32d608beabe8f31117a5b42e8d38863be19d + cd0ddc15fdb0b43ab9c1da27dab961e9; +} + +serpent-pmac1 { + 60d7bcda163547d348b7551195 + "" + 86802543a1d8ca8f65b1bb3e0d31d221; + e77022907dd1dff7dac5c9941d + 26 + dbe75897dbb97ea7a0545fe684170ede; + d0c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f1371206 + 13c3430e93df53d7da7833282eee3c25; + 34c9519848a877ff77bf79192a + 5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd8 + 3af04cadceba44ec5a6897e499e82f51; + 8374d8cde8e160ad10997a21 + "" + 1d72b61bfec2412d29f3f0ecad5d04c8; + 635c6d62c9269029df3e6057 + ac + 3441e6813346f41a8f780f9921ccf0ea; + c87638f508046733d9ff61cd + bda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb6 + 297ec48558af83ac8ebcb3e442fcfc8d; + 21b7f65b000961040ef2f9b2 + fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c5 + 1c6db42246e98e9eaa43a287e5c7161c; + 4215abd6b3ad54ef + "" + e79dc50690f53356f567c3fe1845e31f; + c9a38378c5b93bf4 + f2 + 01c74df5d34de8442b6e0dea2f43cfcd; + aad2605faee2b03f + b648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219 + e36a0ed637bc357b41d7ca57834fe1cd; + bfb474fd71d891f2 + 4bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9f + 1f2abc9e954b1e7d282ef8c3ee00fea4; + c2712a199e533fa9156308cdec3f768281 + "" + b498a64086f85b98d362950e079b3624; + e040a9b9a222bd689aef66f5306ceb0c6b + 08 + febb2df39da1126d67fa08e337c430d1; + ac8b0a22260c571b4a42bb8fdb233bfa6a + 5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65 + 7f8f5f88f99a29146523eec2910448f5; + b9aca338527ef19b09c063c46f88de9fd4 + 1e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d + 0c21a0dd3a264c1ef7cfeebd6aa8c2c8; +} diff --git a/symm/t/skipjack b/symm/t/skipjack index 50531295..d544da12 100644 --- a/symm/t/skipjack +++ b/symm/t/skipjack @@ -231,3 +231,63 @@ skipjack-gcm { b96e1e6d2db5000c5bbbd06e86ab26c3a2a060b3eeeb1899793a743bc9 74694b07f5866d80; } + +skipjack-ocb1 { + e4bef260d7bcda163547 + d348b7551195e770 + "" + "" + "" + 28afba7b57208bb2; + 22907dd1dff7dac5c994 + 1d26d0c6eb14ad56 + 8f + "" + "" + 62f000b7bdb0d1dc; + 86edd1dc9268eeee5332 + 85a6ed810c9b689d + "" + aa + 84 + c92bec4a841eab50; + a9060d2d4b6003062365 + b0a54364c76c160f + "" + 11896c4794846ecfa14a7130c9f137120634c9519848a877 + 50d328a84a166d75e1574aafc3a6847451f766a4e5b1d506 + c155363b2c86bd70; + ff77bf79192a5b50ade5 + d9cd739a3d1f337f + 29549e6b0d27a4ba234085406a6136512061f7080cc07df0 + 591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9 + b9f8bca7a0f1024a232217f4d9acd0187997bdb2348287f9 + d8d3f45231b59769; + 269029df3e6057acc876 + 38f508046733d9ff + "" + 61cdbda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c3 + 3b5a6606907f297d26827ab95798171debff551df36e0ae8f6f29026f8 + 24734c1d6c3da996; + 8201a894476b3f102b75 + 2eb9529533966f27 + 043eb621b7f65b000961040ef2f9b2fc5fa450 + 727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a + 694a1412b0ab1b6fb698a9eb920fd2910c7625b68558fbe9ffda426f55 + 19c658ead145b558; +} + +skipjack-pmac1 { + e4bef260d7bcda163547 + "" + b663da5674ffc5d1; + d348b7551195e7702290 + 7d + 554a2fb9de2d30ae; + d1dff7dac5c9941d26d0 + c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689d + 0318df96a103a2f1; + aaa9060d2d4b60030623 + 65b0a54364c76c160f11896c4794846ecfa14a + b3a737b39bf1c95d; +} diff --git a/symm/t/square b/symm/t/square index de1c6dbb..d9c5fb84 100644 --- a/symm/t/square +++ b/symm/t/square @@ -893,3 +893,171 @@ square-gcm { 58a997404e629f9e9d5652bd076188c9bd4a631d3e2486a944151f3cf29edbfc62e3910c0b341052b475d623f2339488c9983e0990 1762e398f8582d72954ed718af4f677a; } + +square-ocb1 { + f260d7bc + da163547d348b7551195e77022907dd1 + "" + "" + "" + 4ec5c312526c730e41458aca324ae0a0; + dff7dac5 + c9941d26d0c6eb14ad568f86edd1dc92 + 68 + "" + "" + d0cc24f9084261cdaf4393e7b250701b; + eeee5332 + 85a6ed810c9b689daaa9060d2d4b6003 + "" + 06 + 72 + 1e1671f47f5bd8b32ebb09c019105281; + 2365b0a5 + 4364c76c160f11896c4794846ecfa14a + "" + 7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a613651 + 11e134a63441fc0951b37098764822d6eaa47187fe96a2f3658563cc612c857f0dd5d4e056c820a3670828dd7f5a9d1c + 86893621402b0a64fded1b34d47504fb; + 2061f708 + 0cc07df0591d8fa21f2dd88374d8cde8 + e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd4705e505da14 + 35dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450 + 1599b31480519c999bbc9fd4fb1a24676071040c16ff4a6834cdaf46c51ccbb9522cfde0e2df2867871cabd4aa73c33a + e8e411a4ac803610a4f2a8e1b6aabba9; + 727a9b54 + 2cde52ebfda19d0ccc520f215eb57bb3 + "" + a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758 + 384781d5a43f9e0d692787efd9cbbff3f8cc6e154544695653e495e63b3da9730b781b214f5c8f6d940542c76c24f0acacfcf099c0 + 5fa2cade7fa22e8df91b9f91593f9d3a; + fe2b69ac + 26afa3349829b94586306fed54154f8f + 28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9eb53b571ea629c54d + 57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689a + 4c8c3874f73c8504b64bbe612589c103a462720d244c3092221b6c7b31a162aebefaea934d2ac8eb9e03f8f480aa1407d58a8a8e0f + 03fa1ede942984e0ae4f30946f7e0201; + ef66f5306ceb0c6b08ac8b0a + 22260c571b4a42bb8fdb233bfa6a5cfb + "" + "" + "" + ae26bcd1fc7065f659ec2e37cdbb4d06; + 0bad7d95214ade49cb3b6f5f + e8368131115c037ba323fe1dc8151784 + 87 + "" + "" + 9f5a8cdf70fc430a52be4efbe40903b5; + 3f0eb5b647da6794c18b5337 + 685a96ed65b9aca338527ef19b09c063 + "" + c4 + b1 + 5358be539c81b8af364ee06a6d510baf; + 6f88de9fd41e72d7b97e23e6 + eabdff3bcd211499268878dbf30f1dad + "" + 89d4b9b12012e4713df46795630e7952d22bb02d7100b8b649377d20a8f083455b663e4ee1315f3c8f2aebfa921451dc + 6a33c5e3320001aceef2ddb9eb101bc7a44cbbbe05a3a4fffe25cc658d1a5834701a2fd135d964d2aafa112d45c44727 + a1b70c95ccff432cd7ffac9fcfc36d4b; + d1af5813b70d30ce2f1fef6e + f315d0798391805da08da3aefc5f8584 + b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e30308be3c31e6bc58c0b7cadcb6 + 58b970e47479a684b5aefa69a4cd52147ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b6d + 92a2d4564bf2ce07ddfc07a4c61b642f82e07603156c3e67a21fc29958ae1ab0f11689b5361185a5e36e11f8764939c2 + f4f96b643edc928c53440ca84037253d; + 00f06dc188d472a784e0c6f2 + 1195a3b9f4ae985511265febd11c1647 + "" + 20eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908445608fe95e81c2533e31c9c1a9851bc28 + 6850774629192af796f0a661a429cfd5a235499b4f839206ab9a23dbeed0566217317c51538556edf394c8d83dffedfa381222d7f6 + bf6ea195e668f32372ecce468c963344; + 10d858cbbc8424d126b807e6 + daa089c3f9099c5ffb824173d7634c04 + 226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3fb90e1721b73037 + 4ffc9bc597f56ccbb2f294b38766fc69f6a9f2c0945ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65 + 5016f4b0746fe26e4c8ff63a0fb3a3af5070ba789900e4b69b90c42331d2bef65a6d520ed660c6b8b21180a3e0706e57b6f8e99680 + 5336c139328f5e30663524991bca106e; + cc1770a18cbfe6ef + fd1ff6778554acf1270485b203a3c1c4 + "" + "" + "" + 68289e95ba9adc986ec25334e9821681; + c967c0a458cb948b + dd409b687fa3a6827b480aa3a4c84cef + 64 + "" + "" + c3fd1e84842901c9030c844f1cf2a037; + f6c9b53bf8f957f4 + b03cf43e89957f9a3e8128f8743d1668 + "" + 7b + 4d + 65211e0de7d279e5ecde8793097d5217; + 7bb8deb9bd205b70 + e04c091d205cdad9e9a79b1abf91b085 + "" + 1e5ca605ac8451399587011677508a15dde524af3e2bee0646541a42c2ecccb44d65bad397abfaf529ee41cf9a05c7ef + 8cdbd696f4e8b357c8077fd749e4bb0a0f24c8b95deebd0174708f13d6656315c47a9fe9cf561d4afb4e48ab68249248 + ba46b27e9799540b1f2fed90f8404169; + edef3401539c51d2 + a90bbf7f1bfc338ab0ef5746ea8fdccc + d213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b9802068a9f891bc5ba5 + afabf8c3122d12d7ff3c41122d70d17d4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2da + f227e7487fe14220150b10fa5456bf655b53c2b3cd2200ee882b912d9ad71146f8a937eae0ac4fbdcc99602783caf769 + 0d78408bce85318de6bcfd8cdc7579ff; + c07ecde95759ac46 + fee6dda7abc8ad68daac90cfe22d2f1f + "" + 2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9aea3ccf860b0009740763d9683 + 88e08b26d8c6c245d09dedb7a2b2482f0a5816940b89e87ed5c3a0ca573d2b8be39e18d252d84b4d9aad35fc54dbc57306c45676c9 + 2d9921c55910b5fd930615d61dde717a; + 6c5f87b95460938d + e1288c69d80ea12ff4bb5f069b8a2e86 + 041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d9645563a308ba60076 + 817523bd2abf1261b089d8f23a9c2835076a23faac2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd56f6f24e + a450198ec39d53163f8db0c90b59a3b5d02dd4ae0c5c800e9b30bb747082e383ffaf85cae517a18ce337b064f74286cf8d843e0696 + 5a40990ae1dfae2c5cd30d9b32c794c5; +} + +square-pmac1 { + f260d7bc + "" + aec43cacfa9e76ed9f6c0176974d1111; + da163547 + d3 + 38e2ce3d69f8fb21ed28599d77607fe8; + 48b75511 + 95e77022907dd1dff7dac5c9941d26d0c6eb14ad568f86edd1dc9268eeee533285a6ed810c9b689daaa9060d2d4b6003 + 7c8785ab3dcb7d71ba3d6fcf7ba32376; + 062365b0 + a54364c76c160f11896c4794846ecfa14a7130c9f137120634c9519848a877ff77bf79192a5b50ade5d9cd + b21eb39143554c29a104eb7ca8d10ca8; + 739a3d1f337f29549e6b0d27 + "" + 8a5016e4834fa9fe8ef64746a89189ce; + a4ba234085406a6136512061 + f7 + 21e70bad22188fa3845c86a33d466528; + 080cc07df0591d8fa21f2dd8 + 8374d8cde8e160ad10997a21635c6d62c9269029df3e6057acc87638f508046733d9ff61cdbda3b3e9878731ebfedd47 + fdb16c9e5914268aa7dca6ee20efb72e; + 05e505da1435dceaa7b1cc49 + ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5fa450727a + c69607969a66a1f0e09c40a8b8e7b303; + 9b542cde52ebfda1 + "" + 718839aeaf776c252d578376fe739e46; + 9d0ccc520f215eb5 + 7b + 4830cb31ec114ff8704f183f95d06200; + b3a4f3ebbbb18ac6 + c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad2605faee2b03fb648e27fff63102758fe2b + c5aa56a0bf29d192de4e3db9174b1b9a; + 69ac26afa3349829 + b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d156325 + e6d24bd14f25e2fe8909354cdac337f5; +} diff --git a/symm/t/tea b/symm/t/tea index a7d03d58..9d8e5522 100644 --- a/symm/t/tea +++ b/symm/t/tea @@ -564,3 +564,225 @@ tea-gcm { ee503d12aef7e05140a33551f93a02eb6631e56e47a61f61b5357a4636 4f584686113ded23; } + +tea-ocb1 { + 60d7bcda163547d348b7551195 + e77022907dd1dff7 + "" + "" + "" + 0282d13eb3775978; + dac5c9941d26d0c6eb14ad568f + 86edd1dc9268eeee + 53 + "" + "" + 9b0cdcfa8c04a747; + 3285a6ed810c9b689daaa9060d + 2d4b6003062365b0 + "" + a5 + 3b + cdfabcc04b5d33e6; + 4364c76c160f11896c4794846e + cfa14a7130c9f137 + "" + 120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d + 68cf0d4fc52e5f441683c80bdaac28743382b75271027f73 + 10e9f17c3d7446da; + 1f337f29549e6b0d27a4ba2340 + 85406a6136512061 + f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a + 21635c6d62c9269029df3e6057acc87638f508046733d9ff + f5899357e4d68a1947927de3a88c20b0a372611945f68d3a + 172008bf86d64904; + 61cdbda3b3e9878731ebfedd47 + 05e505da1435dcea + "" + a7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb6 + 1871ca08dc9d4856d3181c8a16b9a5284e727cc4c21ee458e65a7ede72 + 400b866405f8cca1; + 21b7f65b000961040ef2f9b2fc + 5fa450727a9b542c + de52ebfda19d0ccc520f215eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b9 + 8845244bc553c66cbcd7398a529004c22b7bc44b8c12ee1cdae4b9964f + 11437ce8e831d965; + 3bf4f2aad2605f + aee2b03fb648e27f + "" + "" + "" + b24fea9cbe55c7cf; + ff63102758fe2b + 69ac26afa3349829 + b9 + "" + "" + 172ba721b939b9e3; + 4586306fed5415 + 4f8f28523c03d4de + "" + 16 + 56 + 8f3914c03d77623e; + 00157846b710ee + 72807a2219bfb474 + "" + fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d + 1f489e532c4895221fb87757559418ebdbb80731a4d433ca + aee9886723bcf8c2; + 42f70800df9fcb + aca48b77dba18919 + 6d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f76 + 8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22 + 003b1897c5b5c2a68a1061f67ab282ba4f5bc1d5b69dff33 + d5d03c8ceb5dedad; + 260c571b4a42bb + 8fdb233bfa6a5cfb + "" + 0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc815178487 + 616c9b723ce2dbf6582926c0082396983b36136650dbe54d4034e80c81 + f272e48012ecedb1; + 3f0eb5b647da67 + 94c18b5337685a96 + ed65b9aca338527ef19b09c063c46f88de9fd4 + 1e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012 + 61107d0d71b63c91fc60d6981a7b027175f951198ead98054f3c891a56 + f0b7270b5db81fec; + e4713df46795630e7952 + d22bb02d7100b8b6 + "" + "" + "" + 8ec34345774654fe; + 49377d20a8f083455b66 + 3e4ee1315f3c8f2a + eb + "" + "" + 9752407ae0186131; + fa921451dcd1af5813b7 + 0d30ce2f1fef6ef3 + "" + 15 + 81 + 1beb2958c9f181a1; + d0798391805da08da3ae + fc5f8584b7c5e617 + "" + 669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e8 + 76b4c7ff71df213ad4bacdd80c69f7e6dea704bfc63d27ba + dbdc98bafb6d3cd3; + 15f422cdf0c8e30308be + 3c31e6bc58c0b7ca + dcb658b970e47479a684b5aefa69a4cd52147ed12ca98698 + 1a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d4 + aff8e168c9ca00f7a3686535f2c3a87b87554ef97829cfdc + 5a0258fedb40c24f; + 4b6d00f06dc188d472a7 + 84e0c6f21195a3b9 + "" + f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00 + b9d9161aaec022635a134ed7847aec38d0c8903ef455fa741bf671369b + 625dbf5d69c3e31e; + 456331854bc78bf43966 + eb0cfa9138ddc399 + 08445608fe95e81c2533e31c9c1a9851bc2810 + d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f + 8a2521cc4a159578267a2501822161dab72ff8663eeb7c0216e8e372cb + 74098a7f405219bd; + 30cbb7f0e4a973a8cd + 190107314717a774 + "" + "" + "" + ea4da20a4cb1c61f; + 56f3ff669c732b58db + 8f48af65f7cc9e3f + b9 + "" + "" + 0db86f6d6832d301; + 0e1721b730374ffc9b + c597f56ccbb2f294 + "" + b3 + 32 + 7275eb9aee00342a; + 8766fc69f6a9f2c094 + 5ffd505003cc0cae + "" + 9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65 + d09b91ddba2620cd1a4a7fe88de8c22ef06be7a9b1627b4b + b37e8c04b73654d2; + cc1770a18cbfe6effd + 1ff6778554acf127 + 0485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b + 480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a + 962273e83ac507e225ed07a9fce44bf2dbaad409592ebd49 + 0a77a4eaf298a242; + 3e8128f8743d16687b + 7bb8deb9bd205b70 + "" + e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677 + 795b6ec2108ac4cbda8b87ede294541cfdb7240cfae8ff7a4d9a474ea5 + 798360c72cf9d7d0; + 508a15dde524af3e2b + ee0646541a42c2ec + ccb44d65bad397abfaf529ee41cf9a05c7efed + ef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a + f0d9c8a507a51d66a13e9cd477b177773ff6f94dbda67dbf07003162ab + 70ddae5e6ffa478f; +} + +tea-pmac1 { + 60d7bcda163547d348b7551195 + "" + 25bca2fe99e75c4b; + e77022907dd1dff7dac5c9941d + 26 + 5b87dc7b2acac1be; + d0c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0 + 6889c9fb6030676d; + a54364c76c160f11896c479484 + 6ecfa14a7130c9f137120634c9519848a877ff + 453581670da49ebe; + 77bf79192a5b50 + "" + 613c5d3427421aa4; + ade5d9cd739a3d + 1f + 39649926ad4cd68d; + 337f29549e6b0d + 27a4ba234085406a6136512061f7080cc07df0591d8fa21f + 24043405966f7f84; + 2dd88374d8cde8 + e160ad10997a21635c6d62c9269029df3e6057 + 8242433c45487ffe; + acc87638f508046733d9 + "" + f24ce66e0a3a63d2; + ff61cdbda3b3e9878731 + eb + 8bdfb1992aed4edf; + fedd4705e505da1435dc + eaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533 + ee6d2bd9a43a054a; + 966f27043eb621b7f65b + 000961040ef2f9b2fc5fa450727a9b542cde52 + 936eb156c9146198; + ebfda19d0ccc520f21 + "" + c33c9c35b8f3836e; + 5eb57bb3a4f3ebbbb1 + 8a + ac3f52785c36bf6f; + c6c95a97a48030370c + 33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad260 + 1a935b87b899b277; + 5faee2b03fb648e27f + ff63102758fe2b69ac26afa3349829b9458630 + df79e3c4601f609a; +} diff --git a/symm/t/twofish.local b/symm/t/twofish.local index b8c6ebd5..f840c2e0 100644 --- a/symm/t/twofish.local +++ b/symm/t/twofish.local @@ -491,3 +491,225 @@ twofish-gcm { 365bec4034b390949b707acfee0545eb79e0b47d87cdb901af6c3e964a997fe8c0faa678fa214c8ec5887e250c0d3007b2f1e29a93 2fc6d2d214bcad3f502b9bf292029e1c; } + +twofish-ocb1 { + 60d7bcda163547d348b7551195 + e77022907dd1dff7dac5c9941d26d0c6 + "" + "" + "" + 8d1cfee1984c2e05a4a9b88de25d0b03; + eb14ad568f86edd1dc9268eeee + 533285a6ed810c9b689daaa9060d2d4b + 60 + "" + "" + 71a0344b8fa6bcb38a5dcd91fe1ea7f4; + 03062365b0a54364c76c160f11 + 896c4794846ecfa14a7130c9f1371206 + "" + 34 + 79 + 7ad05aa4fccea98135597fed29e12041; + c9519848a877ff77bf79192a5b + 50ade5d9cd739a3d1f337f29549e6b0d + "" + 27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a21635c6d62c9269029df3e + bd4d3d7b5c177d602a76b0d30f94b746925a97ac08dbed466c21f623133b3b4a07a0cb3122bb409131b91e4891b4ad23 + 8184dd419c0d7f3c10ae44312fdf5223; + 6057acc87638f508046733d9ff + 61cdbda3b3e9878731ebfedd4705e505 + da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb621b7f65b000961040ef2f9b2fc5f + a450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c54215abd6b3ad54 + 90126eb72fa9923afc3d8381c787206cc21e1c0310b3aed18859d30dcccbebf00a040d6dc4127e8993eabc5d302aea03 + 2b753135ff0238a472730691c382446b; + efc9a38378c5b93bf4f2aad260 + 5faee2b03fb648e27fff63102758fe2b + "" + 69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219bfb474fd71d891f24bb65d1563259f9e + 261413d3a72447a6d5ffce0583f1b4af32e7203b82f5d6e8686ab8c21873e4741a9dff70ab872edffdbe7a795a7b4b7f469f3a6de5 + eb7184fda3922f373e8bcd6ca37d4042; + b53b571ea629c54d57dd2d42f7 + 0800df9fcbaca48b77dba189196d1ebb + a10b0467cb9fc2712a199e533fa9156308cdec3f768281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b + 0a22260c571b4a42bb8fdb233bfa6a5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da67 + c7a8156ec4894b7015e422efd4f9030c74e9e217ff1f15c02897a105a5c154391dac634298996cc30a8b383964cee203325787172e + 646143dc04f96fe66f7b7e10e2d956c2; + 94c18b5337685a96ed65b9ac + a338527ef19b09c063c46f88de9fd41e + "" + "" + "" + 0298067ddb8e8ad3a35c06d9aaa23012; + 72d7b97e23e6eabdff3bcd21 + 1499268878dbf30f1dad89d4b9b12012 + e4 + "" + "" + 26caf5aed4068af4fcdbf0aab49387c5; + 713df46795630e7952d22bb0 + 2d7100b8b649377d20a8f083455b663e + "" + 4e + de + 147491a865a55479e7820b48d65cfe86; + e1315f3c8f2aebfa921451dc + d1af5813b70d30ce2f1fef6ef315d079 + "" + 8391805da08da3aefc5f8584b7c5e617669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e815f422cdf0c8e303 + a9ba8b1b3a7f68575146960578aaec63e43366c7ae57e481739749d32bddde3c33c7b4c5e096c8c0a96e2cbf5adecd17 + 0eab7b499f15026215627b43e0b9c17a; + 08be3c31e6bc58c0b7cadcb6 + 58b970e47479a684b5aefa69a4cd5214 + 7ed12ca986981a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d44b6d00f06dc188d472a784e0c6f21195a3b9 + f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00456331854bc78bf43966eb0cfa9138ddc39908 + 0dee60335c90fde30d3e167df72c778839a69219947fcafa74f9bc6c21e32904b4298c20484c010e3aee5a032e33d3c9 + 9a199af39e93cb1225d112e9c0f01d61; + 445608fe95e81c2533e31c9c + 1a9851bc2810d858cbbc8424d126b807 + "" + e6daa089c3f9099c5ffb824173d7634c04226f30cbb7f0e4a973a8cd190107314717a77456f3ff669c732b58db8f48af65f7cc9e3f + e2a3d6365b19a3761fd7be55731c5b3dbce322f528a322b8c5b24453cb6a22656c944a6e304f5b3fb4b7cffdd5f87e17fe54664f5e + 8af45bd468a49b9fb4af7dee23301b73; + b90e1721b730374ffc9bc597 + f56ccbb2f294b38766fc69f6a9f2c094 + 5ffd505003cc0cae9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65cc1770a18cbfe6effd1ff6 + 778554acf1270485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f + 9736fd0b0e9860bfb50e7d81301a7cec617bb1783e531a6708db5c790c5ffc287ce2e0f79d9a763bfff28182787061828fc2ed02fc + a00c4e76ab4c35fd8801455c627d2b9a; + 9a3e8128f8743d16 + 687b7bb8deb9bd205b70e04c091d205c + "" + "" + "" + 5f6ea6b0475400a164944c4a31a7547f; + dad9e9a79b1abf91 + b0851e5ca605ac845139958701167750 + 8a + "" + "" + e55c85fb82289b89250fd9f463b50b74; + 15dde524af3e2bee + 0646541a42c2ecccb44d65bad397abfa + "" + f5 + 98 + 82d904459d8811b4f0907618d0215d93; + 29ee41cf9a05c7ef + edef3401539c51d2a90bbf7f1bfc338a + "" + b0ef5746ea8fdcccd213e33f7e8a5718fd25014107c8e7d715a92add9589d1f5c054b2d983514605ec590294a319b980 + ff802a1e6113b0aac88c7a76f0338e3c95fc70c98801be1476af39a21b8bc15f5cfdf6c5643a716ab23091a187014eb2 + 3b80083b38ba73e4d4bab2799e93b59b; + 2068a9f891bc5ba5 + afabf8c3122d12d7ff3c41122d70d17d + 4569eaff59a332ba58d5d5589bfe079753ee1a957eb6d6699e6b7ea2725cb2dac07ecde95759ac46fee6dda7abc8ad68 + daac90cfe22d2f1f2968cc42fa8b669ed3bb3542a9cf44bbc8c6254d980398bd94e66eb4563d405e51881e99027b8ab9 + e0d20e66b71e3a13aedd139a71c5823d4fbee0d3a59e3c6414b562999b2948ee764542cfa3e846d92d2afc1f4374034d + 379db2c942b5aae433f382256bec565e; + aea3ccf860b00097 + 40763d96836c5f87b95460938de1288c + "" + 69d80ea12ff4bb5f069b8a2e86041c1b9fc214e9ca2186ddf1f6a7a3aa7e740da967828e3604b35b15ffaa6c36800d9645563a308b + be3aa26f73e11ecc3bc58559bcdb8b6e1fa772bf51cddfbcf1bda58fa77945b735ede1d04f1b0b3d9b732ce7852082e8ed98b9e63c + f5d209e5468ccc2e7988a33924daf18f; + a60076817523bd2a + bf1261b089d8f23a9c2835076a23faac + 2cdd67771cc667a8331f0a170b66283e4f834a06148f302c3973accd56f6f24e33958b8c2e2352fd61e4fa + 8fec816ac861a8b33779f09e7a10fc02a8f48afa3080ee119a52a9a817e4f2b94b0820cab383a8cffeea7c486315799dc875fba578 + 4bfc4201c557734332bd6162fcc0527136cd4ba9b3ea9dd265a3901551abc061862e1e1643a6fa6ae23cfce273204557d56e9e05ca + 8c085a22b651c7c3e54710d958570722; + c8ec4837898a92142b5b0677da1ac27311 + 7b45bcfff5d5f8b6fde2893232a9f81d + "" + "" + "" + cc01d47fcdd2ebfd7fc167351b89c25c; + 14517ffae475f6b94a43a67b3d380d2f9a + aafe2dd721c0095c8808847689211450 + ba + "" + "" + b604e266d82e05f040dfa3e55dca1544; + 8095ffab1eaadf66fd22ac1976063e113a + b61f813e28a1397a7974a1d7f4220c78 + "" + 5f + 68 + 87c774626abd1daca5cddd7c8dcba032; + e426a5a0e80f678d404147842941feeffd + c2eb44dc8c0d5e8f444f7f4e0c893959 + "" + b74dc23a7bb40e7e0013e5150686d2301b43a15a84e81d7f5cedaa49e2414ebf47970e560475cff206877de69146acc3 + 1f0dfa5f0c07208cf7d6e19d3b49c4335b63416bdf67eb3667d2642bcf8d8639f03c58ab865cce0f068b222eac1b3ad8 + f580549f5cce1fae5e1df61bfd49c97a; + ab6cf8556b7aa776945948d1b8834df219 + 6c92ec1718dcdeee0d52d9539726d281 + 0391b3f9d10c39b07ae8f08ce7cee4758a386a9943e97dedfbe61e737882cd09c2b9a80f34c0fde11c2481b11fc76bfa + 4dbf710a9e544e0c536ca1e040f9ad5b04140d98edabe08485290a4d87d13b07398a1458c2c6b61dbdbc1cccada8c1a0 + 0efa3388b0f1344526b97696cd61d5974dd9339a37fdfd020ef6687384208deb99fb2c79a91bfcf57135ad36f60aeabd + 12c3060b6d5cd360d29a9f8ee62bb1cb; + a9aabb6c4e3c3554f8fb1ef61614c27029 + 5dfc0ca6551ca4bdb75359f91cb9d921 + "" + 056b7de74fc9a9b37154ce6c0b396179d31f06a1dd5982cbc0d7cb23841da1ae8f4ae480cda98ad6cf2bacf6f9fd3f821330c43f3d + e2c8468063ab076373bf2c088a0a7a9acc80937ac2f29036a733b089f5214311bf48de59cca31051ad6eeca19f34154412d3e4acbb + 887f83fd9a8db0d28cd849e7ec0cd72d; + f6c2b3fac7cbcf96523d4723f91801325e + b8553236651c96788d73d192ee53b3f3 + ebd66ddd98cedbe88e245de25b1593b70f8601562d90a9b59ed034a867642d25d54756fa5c47f16f64b837 + bb4926214211a1c696ba172010abb433922a22d9fd881519165eb9d85197a21cc34ac0d5ae7be8dbf98e4ffed2cf6b1372a5aa47b5 + 6ce7de9f52ff4f4fc21a63423b6d084752f7f7dc7b4e2c7d781a7fc6c468d2ad5a694156b41e8033ef66a59606919b13435453b037 + ef0d9a53c0eadbb12806aab80d24d67d; +} + +twofish-pmac1 { + 60d7bcda163547d348b7551195 + "" + b9898ea028d9c1fb8192e585467aeff7; + e77022907dd1dff7dac5c9941d + 26 + d2547a3fa161edf4427ac2523c0e12f4; + d0c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0a54364c76c160f11896c4794846ecfa14a7130c9f1371206 + 629a79b85d3c132fa98b11bd247ae22a; + 34c9519848a877ff77bf79192a + 5b50ade5d9cd739a3d1f337f29549e6b0d27a4ba234085406a6136512061f7080cc07df0591d8fa21f2dd8 + 78a88c6c5a799d4bf7276ef82681502b; + 8374d8cde8e160ad10997a21 + "" + 142ab85c8da67eb03c02351267ac528f; + 635c6d62c9269029df3e6057 + ac + 97ef82a6ab463b32b3c6de3b8858e703; + c87638f508046733d9ff61cd + bda3b3e9878731ebfedd4705e505da1435dceaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb6 + 13e0efe3390a5696584ff6f095c9d866; + 21b7f65b000961040ef2f9b2 + fc5fa450727a9b542cde52ebfda19d0ccc520f215eb57bb3a4f3ebbbb18ac6c95a97a48030370c33d090c5 + 550b74f7ec72626368a2c58ce23bb008; + 4215abd6b3ad54ef + "" + f5dd9becdd3d3fbecc3dee067bb06ff6; + c9a38378c5b93bf4 + f2 + 51c108d4abf0343491d7ec7b74e35736; + aad2605faee2b03f + b648e27fff63102758fe2b69ac26afa3349829b94586306fed54154f8f28523c03d4de1600157846b710ee72807a2219 + 1939152c1f82c19cc084a681ccdfbd3e; + bfb474fd71d891f2 + 4bb65d1563259f9eb53b571ea629c54d57dd2d42f70800df9fcbaca48b77dba189196d1ebba10b0467cb9f + cdd10d315afef9594ea2d5be06e2e839; + c2712a199e533fa9156308cdec3f768281 + "" + ba9d8b182c751b42b9796bae5985d048; + e040a9b9a222bd689aef66f5306ceb0c6b + 08 + b504bad203181c0281e60284b1e93cd3; + ac8b0a22260c571b4a42bb8fdb233bfa6a + 5cfb0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc8151784873f0eb5b647da6794c18b5337685a96ed65 + a23f906ae8ec8b99ff2344d2f22c953c; + b9aca338527ef19b09c063c46f88de9fd4 + 1e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012e4713df46795630e7952d22bb02d + e8dc0b7392f193529199018bd6939012; +} diff --git a/symm/t/xtea b/symm/t/xtea index a9b1ab3d..76ac4ac2 100644 --- a/symm/t/xtea +++ b/symm/t/xtea @@ -560,3 +560,225 @@ xtea-gcm { ae7ea2a80ef6b2ec3b48f32be277ce5f984f50af216261f69bc2e65c2c db4d7130d6508aa8; } + +xtea-ocb1 { + 60d7bcda163547d348b7551195 + e77022907dd1dff7 + "" + "" + "" + 07bef2af9ee05be5; + dac5c9941d26d0c6eb14ad568f + 86edd1dc9268eeee + 53 + "" + "" + f772f8da875c6c16; + 3285a6ed810c9b689daaa9060d + 2d4b6003062365b0 + "" + a5 + 09 + ae03c614cee35738; + 4364c76c160f11896c4794846e + cfa14a7130c9f137 + "" + 120634c9519848a877ff77bf79192a5b50ade5d9cd739a3d + 667c317875cb68a2df759151a2340d3b90c7652e0a4cfcb1 + 93e92f0eef1160fb; + 1f337f29549e6b0d27a4ba2340 + 85406a6136512061 + f7080cc07df0591d8fa21f2dd88374d8cde8e160ad10997a + 21635c6d62c9269029df3e6057acc87638f508046733d9ff + 6f5d6a11b04cb03f734de83608675ca8cbb718197d5e6dae + e69dd7ec56052187; + 61cdbda3b3e9878731ebfedd47 + 05e505da1435dcea + "" + a7b1cc49ae1d50c38201a894476b3f102b752eb9529533966f27043eb6 + b2404d623b8994262e27a6e4e735dee18349a90f530e2a3f636d7c5f71 + ef92c0c42a1911fb; + 21b7f65b000961040ef2f9b2fc + 5fa450727a9b542c + de52ebfda19d0ccc520f215eb57bb3a4f3ebbb + b18ac6c95a97a48030370c33d090c54215abd6b3ad54efc9a38378c5b9 + b3c350ff78424273c10f103bbda2de658e037d6a35632be78052c55b53 + 131383b16016457a; + 3bf4f2aad2605f + aee2b03fb648e27f + "" + "" + "" + 7080c42bba62492f; + ff63102758fe2b + 69ac26afa3349829 + b9 + "" + "" + a4e5b67ccd313289; + 4586306fed5415 + 4f8f28523c03d4de + "" + 16 + 00 + d86ee5c4829dba67; + 00157846b710ee + 72807a2219bfb474 + "" + fd71d891f24bb65d1563259f9eb53b571ea629c54d57dd2d + 5a963f2a946fc9b06c9c9949f50eb85c1f3b54e009ea3950 + 43d5535e5b6fc923; + 42f70800df9fcb + aca48b77dba18919 + 6d1ebba10b0467cb9fc2712a199e533fa9156308cdec3f76 + 8281e040a9b9a222bd689aef66f5306ceb0c6b08ac8b0a22 + fc5846409e369e01687535ae0373827734da2375afab9ad3 + fb2bf11df41a072f; + 260c571b4a42bb + 8fdb233bfa6a5cfb + "" + 0bad7d95214ade49cb3b6f5fe8368131115c037ba323fe1dc815178487 + b7abf514a519880bcf9a1dd906236193181274945f26eeea26de9a4480 + 0a4c5b3dea189c9f; + 3f0eb5b647da67 + 94c18b5337685a96 + ed65b9aca338527ef19b09c063c46f88de9fd4 + 1e72d7b97e23e6eabdff3bcd211499268878dbf30f1dad89d4b9b12012 + abb5a85ee34c20c9ac26d5b84fb2079b949508c3a6c248aef713c7e3c8 + 66f1833b4afd2bd8; + e4713df46795630e7952 + d22bb02d7100b8b6 + "" + "" + "" + be24074b27f49059; + 49377d20a8f083455b66 + 3e4ee1315f3c8f2a + eb + "" + "" + ee190cc6ecad475c; + fa921451dcd1af5813b7 + 0d30ce2f1fef6ef3 + "" + 15 + bb + 5a83e24c3f3d84e9; + d0798391805da08da3ae + fc5f8584b7c5e617 + "" + 669c0f16e39815d4e9cfce3ed1ecdf3d264a7f16cb16c2e8 + a573de0fdef866acaa2ebd0be9a101af7f8e4ce6d9f33a2a + f3acd5608b4d8863; + 15f422cdf0c8e30308be + 3c31e6bc58c0b7ca + dcb658b970e47479a684b5aefa69a4cd52147ed12ca98698 + 1a874498ad0abef8bc4fcb70e27e98ef1f0446b42fb144d4 + acb6678d5dcfe7373c937b1b743ac60d7b039ee405cc184d + 426f814ef7af424d; + 4b6d00f06dc188d472a7 + 84e0c6f21195a3b9 + "" + f4ae985511265febd11c164720eef9eb1c8dd0b00951f284649016ed00 + 6b9981f8864012346d4faa801dc7d0aa35703d3a19fcbfd65c79509cc1 + 4b2c765518bd12b4; + 456331854bc78bf43966 + eb0cfa9138ddc399 + 08445608fe95e81c2533e31c9c1a9851bc2810 + d858cbbc8424d126b807e6daa089c3f9099c5ffb824173d7634c04226f + ade2fa7115805e2fe9464340d7b5a7c97c093ded512f5c7cec815ff278 + af6dddac99d6a024; + 30cbb7f0e4a973a8cd + 190107314717a774 + "" + "" + "" + 1bf75ebfe2f2c874; + 56f3ff669c732b58db + 8f48af65f7cc9e3f + b9 + "" + "" + b5e6cebf8f565eb4; + 0e1721b730374ffc9b + c597f56ccbb2f294 + "" + b3 + 18 + feee3b50ee01bc04; + 8766fc69f6a9f2c094 + 5ffd505003cc0cae + "" + 9ce021a5f1fa4ffa91544485f1a1258b2b9b8f0911e32d65 + e918a45ec5088f385ab211351a06495693bfb81dcd0d7749 + 9a6e716945055b00; + cc1770a18cbfe6effd + 1ff6778554acf127 + 0485b203a3c1c4c967c0a458cb948bdd409b687fa3a6827b + 480aa3a4c84cef64f6c9b53bf8f957f4b03cf43e89957f9a + b25ea7ed37027181c51ab3d374c9f2cf8dc6a5c275c93b11 + 6b72bcad7a2cc4a4; + 3e8128f8743d16687b + 7bb8deb9bd205b70 + "" + e04c091d205cdad9e9a79b1abf91b0851e5ca605ac8451399587011677 + 45c3c8686b2cd92247a8afc0ca13a832de78417abbd11d3e7a687bc4cc + 6247cc4284c11080; + 508a15dde524af3e2b + ee0646541a42c2ec + ccb44d65bad397abfaf529ee41cf9a05c7efed + ef3401539c51d2a90bbf7f1bfc338ab0ef5746ea8fdcccd213e33f7e8a + be2975c04e206859c47b5380c0e22d177563ce76c47538d89ae0be19f9 + 9cc636850cbc148f; +} + +xtea-pmac1 { + 60d7bcda163547d348b7551195 + "" + 5afaac6a8b1d8747; + e77022907dd1dff7dac5c9941d + 26 + 586ad5dfb39d35c5; + d0c6eb14ad568f86edd1dc9268 + eeee533285a6ed810c9b689daaa9060d2d4b6003062365b0 + e6a7ee16109f3b0d; + a54364c76c160f11896c479484 + 6ecfa14a7130c9f137120634c9519848a877ff + 320631d3f31f8840; + 77bf79192a5b50 + "" + eeb3c7cb0d072322; + ade5d9cd739a3d + 1f + 377efb6339f47074; + 337f29549e6b0d + 27a4ba234085406a6136512061f7080cc07df0591d8fa21f + 23266ff9052777ea; + 2dd88374d8cde8 + e160ad10997a21635c6d62c9269029df3e6057 + 387edca755c71aa8; + acc87638f508046733d9 + "" + f88c2d9748aafff6; + ff61cdbda3b3e9878731 + eb + 5502443fc2d9e373; + fedd4705e505da1435dc + eaa7b1cc49ae1d50c38201a894476b3f102b752eb9529533 + 722b4728cbe72195; + 966f27043eb621b7f65b + 000961040ef2f9b2fc5fa450727a9b542cde52 + c4d4788b5aaaba15; + ebfda19d0ccc520f21 + "" + df7b7666d395d55c; + 5eb57bb3a4f3ebbbb1 + 8a + 28c63dbfb924352f; + c6c95a97a48030370c + 33d090c54215abd6b3ad54efc9a38378c5b93bf4f2aad260 + df15e66620945a9d; + 5faee2b03fb648e27f + ff63102758fe2b69ac26afa3349829b9458630 + 5017699c228b645c; +} diff --git a/utils/advmodes b/utils/advmodes index 62b4cde3..e0dd3868 100755 --- a/utils/advmodes +++ b/utils/advmodes @@ -522,6 +522,140 @@ def eaxgen(bc): (bc.blksz - 1, 3*bc.blksz - 5, 3*bc.blksz + 5)] ###-------------------------------------------------------------------------- +### PMAC. + +def ocb_masks(E): + blksz = E.__class__.blksz + p = poly(8*blksz) + x = C.GF(2); xinv = p.modinv(x) + z = Z(blksz) + L = E.encrypt(z) + Lxinv = mul_blk_gf(L, xinv, p) + Lgamma = 66*[L] + for i in xrange(1, len(Lgamma)): + Lgamma[i] = mul_blk_gf(Lgamma[i - 1], x, p) + return Lgamma, Lxinv + +def dump_ocb(E): + Lgamma, Lxinv = ocb_masks(E) + print 'L x^-1 = %s' % hex(Lxinv) + for i, lg in enumerate(Lgamma[:16]): + print 'L x^%d = %s' % (i, hex(lg)) + +def pmac1(E, m): + blksz = E.__class__.blksz + Lgamma, Lxinv = ocb_masks(E) + a = o = Z(blksz) + i = 0 + v, tl = blocks(m, blksz) + for x in v: + i += 1 + b = ntz(i) + o ^= Lgamma[b] + a ^= E.encrypt(x ^ o) + if VERBOSE: + print 'Z[%d]: %d -> %s' % (i, b, hex(o)) + print 'A[%d]: %s' % (i, hex(a)) + if len(tl) == blksz: a ^= tl ^ Lxinv + else: a ^= pad10star(tl, blksz) + return E.encrypt(a) + +def pmac1_pub(E, m): + if VERBOSE: dump_ocb(E) + return pmac1(E, m), + +def pmacgen(bc): + return [(0,), (1,), + (3*bc.blksz,), + (3*bc.blksz - 5,)] + +###-------------------------------------------------------------------------- +### OCB. + +def ocb1enc(E, n, h, m, tsz = None): + ## This is OCB1.PMAC1 from Rogaway's `Authenticated-Encryption with + ## Associated-Data'. + blksz = E.__class__.blksz + if VERBOSE: dump_ocb(E) + Lgamma, Lxinv = ocb_masks(E) + if tsz is None: tsz = blksz + a = Z(blksz) + o = E.encrypt(n ^ Lgamma[0]) + if VERBOSE: print 'R = %s' % hex(o) + i = 0 + y = C.WriteBuffer() + v, tl = blocks(m, blksz) + for x in v: + i += 1 + b = ntz(i) + o ^= Lgamma[b] + a ^= x + if VERBOSE: + print 'Z[%d]: %d -> %s' % (i, b, hex(o)) + print 'A[%d]: %s' % (i, hex(a)) + y.put(E.encrypt(x ^ o) ^ o) + i += 1 + b = ntz(i) + o ^= Lgamma[b] + n = len(tl) + if VERBOSE: + print 'Z[%d]: %d -> %s' % (i, b, hex(o)) + print 'LEN = %s' % hex(C.MP(8*n).storeb(blksz)) + yfinal = E.encrypt(C.MP(8*n).storeb(blksz) ^ Lxinv ^ o) + cfinal = tl ^ yfinal[:n] + a ^= o ^ (tl + yfinal[n:]) + y.put(cfinal) + t = E.encrypt(a) + if h: t ^= pmac1(E, h) + return C.ByteString(y), C.ByteString(t[:tsz]) + +def ocb1dec(E, n, h, y, t): + ## This is OCB1.PMAC1 from Rogaway's `Authenticated-Encryption with + ## Associated-Data'. + blksz = E.__class__.blksz + if VERBOSE: dump_ocb(E) + Lgamma, Lxinv = ocb_masks(E) + a = Z(blksz) + o = E.encrypt(n ^ Lgamma[0]) + if VERBOSE: print 'R = %s' % hex(o) + i = 0 + m = C.WriteBuffer() + v, tl = blocks(y, blksz) + for x in v: + i += 1 + b = ntz(i) + o ^= Lgamma[b] + if VERBOSE: + print 'Z[%d]: %d -> %s' % (i, b, hex(o)) + print 'A[%d]: %s' % (i, hex(a)) + u = E.decrypt(x ^ o) ^ o + m.put(u) + a ^= u + i += 1 + b = ntz(i) + o ^= Lgamma[b] + n = len(tl) + if VERBOSE: + print 'Z[%d]: %d -> %s' % (i, b, hex(o)) + print 'LEN = %s' % hex(C.MP(8*n).storeb(blksz)) + yfinal = E.encrypt(C.MP(8*n).storeb(blksz) ^ Lxinv ^ o) + mfinal = tl ^ yfinal[:n] + a ^= o ^ (mfinal + yfinal[n:]) + m.put(mfinal) + u = E.encrypt(a) + if h: u ^= pmac1(E, h) + if t == u[:len(t)]: return C.ByteString(m), + else: return None, + +def ocbgen(bc): + w = bc.blksz + return [(w, 0, 0), (w, 1, 0), (w, 0, 1), + (w, 0, 3*w), + (w, 3*w, 3*w), + (w, 0, 3*w + 5), + (w, 3*w - 5, 3*w + 5)] + +###-------------------------------------------------------------------------- ### Main program. class struct (object): @@ -537,7 +671,10 @@ MODEMAP = { 'eax-enc': (eaxgen, 3*[binarg] + [intarg], eaxenc), 'ccm-dec': (dummygen, 4*[binarg], ccmdec), 'cmac': (cmacgen, [binarg], cmac), 'gcm-enc': (gcmgen, 3*[binarg] + [intarg], gcmenc), - 'gcm-dec': (dummygen, 4*[binarg], gcmdec) } + 'gcm-dec': (dummygen, 4*[binarg], gcmdec), + 'ocb1-enc': (ocbgen, 3*[binarg] + [intarg], ocb1enc), + 'ocb1-dec': (dummygen, 4*[binarg], ocb1dec), + 'pmac1': (pmacgen, [binarg], pmac1_pub) } mode = argv[1] bc = None -- 2.11.0