X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/fac645f7780c7673775f09fe625651f600f7ee7b..0a847b11a73c8e270b8520e07bbc2b33b236c1fc:/symm/salsa20.c diff --git a/symm/salsa20.c b/symm/salsa20.c index 15e4d50e..3465ad9a 100644 --- a/symm/salsa20.c +++ b/symm/salsa20.c @@ -5,6 +5,26 @@ * (c) 2015 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" @@ -42,26 +62,32 @@ const octet salsa20_keysz[] = { KSZ_SET, 32, 16, 10, 0 }; * the feedforward step. */ -CPU_DISPATCH(static, (void), - void, core, (unsigned r, const salsa20_matrix src, - salsa20_matrix dest), - (r, src, dest), - pick_core, simple_core); +CPU_DISPATCH(static, (void), void, core, + (unsigned r, const salsa20_matrix src, salsa20_matrix dest), + (r, src, dest), pick_core, simple_core); static void simple_core(unsigned r, const salsa20_matrix src, salsa20_matrix dest) { SALSA20_nR(dest, src, r); SALSA20_FFWD(dest, src); } -#ifdef CPUFAM_X86 -extern core__functype salsa20_core_x86_sse2; +#if CPUFAM_X86 || CPUFAM_AMD64 +extern core__functype salsa20_core_x86ish_sse2; +#endif + +#if CPUFAM_ARMEL +extern core__functype salsa20_core_arm_neon; #endif static core__functype *pick_core(void) { -#ifdef CPUFAM_X86 - DISPATCH_PICK_COND(salsa20_core, salsa20_core_x86_sse2, +#if CPUFAM_X86 || CPUFAM_AMD64 + DISPATCH_PICK_COND(salsa20_core, salsa20_core_x86ish_sse2, cpu_feature_p(CPUFEAT_X86_SSE2)); #endif +#if CPUFAM_ARMEL + DISPATCH_PICK_COND(salsa20_core, salsa20_core_arm_neon, + cpu_feature_p(CPUFEAT_ARM_NEON)); +#endif DISPATCH_PICK_FALLBACK(salsa20_core, simple_core); } @@ -695,13 +721,13 @@ static void grdestroy(grand *r) static const grand_ops grops_rand_##rr = { \ SALSA20_NAME_##rr, GRAND_CRYPTO, 0, \ grmisc, grdestroy, grword, \ - grbyte, grword, grand_range, grfill \ + grbyte, grword, grand_defaultrange, grfill \ }; \ \ grand *SALSA20_DECOR(salsa20, rr, _rand) \ (const void *k, size_t ksz, const void *n) \ { \ - grctx *g = S_CREATE(g); \ + grctx *g = S_CREATE(grctx); \ g->r.r.ops = &grops_rand_##rr; \ g->r.ops = &grops_##rr; \ salsa20_init(&g->ctx, k, ksz, n); \ @@ -738,13 +764,13 @@ SALSA20_VARS(DEFGRAND) static const grand_ops grxops_rand_##rr = { \ "x" SALSA20_NAME_##rr, GRAND_CRYPTO, 0, \ grmisc, grxdestroy_##rr, grword, \ - grbyte, grword, grand_range, grfill \ + grbyte, grword, grand_defaultrange, grfill \ }; \ \ grand *SALSA20_DECOR(xsalsa20, rr, _rand) \ (const void *k, size_t ksz, const void *n) \ { \ - grxctx_##rr *g = S_CREATE(g); \ + grxctx_##rr *g = S_CREATE(grxctx_##rr); \ g->r.r.ops = &grxops_rand_##rr; \ g->r.ops = &grxops_##rr; \ XSALSA20_INIT(rr, &g->ctx, k, ksz, n); \