symm/{chacha,salsa20}.[ch]: Compress systematic naming better in comments.
[catacomb] / symm / chacha.c
index 8fe50e1..d64b0d1 100644 (file)
@@ -62,26 +62,33 @@ const octet chacha_keysz[] = { KSZ_SET, 32, 16, 10, 0 };
  *             the feedforward step.
  */
 
-CPU_DISPATCH(static, (void),
-            void, core, (unsigned r, const chacha_matrix src,
-                         chacha_matrix dest),
-            (r, src, dest),
-            pick_core, simple_core);
+CPU_DISPATCH(static, (void), void, core,
+            (unsigned r, const chacha_matrix src, chacha_matrix dest),
+            (r, src, dest), pick_core, simple_core);
 
 static void simple_core(unsigned r, const chacha_matrix src,
                        chacha_matrix dest)
   { CHACHA_nR(dest, src, r); CHACHA_FFWD(dest, src); }
 
-#ifdef CPUFAM_X86
-extern core__functype chacha_core_x86_sse2;
+#if CPUFAM_X86 || CPUFAM_AMD64
+extern core__functype chacha_core_x86ish_sse2;
+#endif
+
+#if CPUFAM_ARMEL
+extern core__functype chacha_core_arm_neon;
 #endif
 
 static core__functype *pick_core(void)
 {
-#ifdef CPUFAM_X86
-  if (cpu_feature_p(CPUFEAT_X86_SSE2)) return chacha_core_x86_sse2;
+#if CPUFAM_X86 || CPUFAM_AMD64
+  DISPATCH_PICK_COND(chacha_core, chacha_core_x86ish_sse2,
+                    cpu_feature_p(CPUFEAT_X86_SSE2));
+#endif
+#if CPUFAM_ARMEL
+  DISPATCH_PICK_COND(chacha_core, chacha_core_arm_neon,
+                    cpu_feature_p(CPUFEAT_ARM_NEON));
 #endif
-  return simple_core;
+  DISPATCH_PICK_FALLBACK(chacha_core, simple_core);
 }
 
 /* --- @populate@ --- *
@@ -177,7 +184,7 @@ void chacha_setnonce(chacha_ctx *ctx, const void *nonce)
   chacha_seek(ctx, 0);
 }
 
-/* --- @chacha_seek@, @chacha_seeku64@ --- *
+/* --- @chacha_seek{,u64}@ --- *
  *
  * Arguments:  @chacha_ctx *ctx@ = pointer to context
  *             @unsigned long i@, @kludge64 i@ = new position to set
@@ -199,7 +206,7 @@ void chacha_seeku64(chacha_ctx *ctx, kludge64 i)
   ctx->bufi = CHACHA_OUTSZ;
 }
 
-/* --- @chacha_tell@, @chacha_tellu64@ --- *
+/* --- @chacha_tell{,u64}@ --- *
  *
  * Arguments:  @chacha_ctx *ctx@ = pointer to context
  *
@@ -211,9 +218,9 @@ unsigned long chacha_tell(chacha_ctx *ctx)
   { kludge64 i = chacha_tellu64(ctx); return (GET64(unsigned long, i)); }
 
 kludge64 chacha_tellu64(chacha_ctx *ctx)
-  { kludge64 i; SET64(i, ctx->a[9], ctx->a[8]); return (i); }
+  { kludge64 i; SET64(i, ctx->a[13], ctx->a[12]); return (i); }
 
-/* --- @chacha{,12,8}_encrypt@ --- *
+/* --- @chacha{20,12,8}_encrypt@ --- *
  *
  * Arguments:  @chacha_ctx *ctx@ = pointer to context
  *             @const void *src@ = source buffer (or null)
@@ -408,7 +415,7 @@ CHACHA_VARS(DEFXINIT)
   }
 CHACHA_VARS(DEFXNONCE)
 
-/* --- @xchacha{20,12,8}_seek@, @xchacha{20,12,8}_seeku64@ --- *
+/* --- @xchacha{20,12,8}_seek{,u64}@ --- *
  *
  * Arguments:  @xchachaR_ctx *ctx@ = pointer to context
  *             @unsigned long i@, @kludge64 i@ = new position to set
@@ -425,7 +432,7 @@ CHACHA_VARS(DEFXNONCE)
  *             different.
  */
 
-/* --- @xchacha{20,12,8}_tell@, @xchacha{20,12,8}_tellu64@ --- *
+/* --- @xchacha{20,12,8}_tell{,u64}@ --- *
  *
  * Arguments:  @chacha_ctx *ctx@ = pointer to context
  *
@@ -437,7 +444,7 @@ CHACHA_VARS(DEFXNONCE)
  *             different.
  */
 
-/* --- @xchacha{,12,8}_encrypt@ --- *
+/* --- @xchacha{20,12,8}_encrypt@ --- *
  *
  * Arguments:  @xchachaR_ctx *ctx@ = pointer to context
  *             @const void *src@ = source buffer (or null)
@@ -694,12 +701,12 @@ static void grdestroy(grand *r)
   static const grand_ops grops_rand_##rr = {                           \
     "chacha" #rr, GRAND_CRYPTO, 0,                                     \
     grmisc, grdestroy, grword,                                         \
-    grbyte, grword, grand_range, grfill                                        \
+    grbyte, grword, grand_defaultrange, grfill                         \
   };                                                                   \
                                                                        \
   grand *chacha##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;                                            \
     chacha_init(&g->ctx, k, ksz, n);                                   \
@@ -736,12 +743,12 @@ CHACHA_VARS(DEFGRAND)
   static const grand_ops grxops_rand_##rr = {                          \
     "xchacha" #rr, GRAND_CRYPTO, 0,                                    \
     grmisc, grxdestroy_##rr, grword,                                   \
-    grbyte, grword, grand_range, grfill                                        \
+    grbyte, grword, grand_defaultrange, grfill                         \
   };                                                                   \
                                                                        \
   grand *xchacha##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;                                           \
     XCHACHA_INIT(rr, &g->ctx, k, ksz, n);                              \