summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/deps/picotls/deps/cifra/src/curve25519.tweetnacl.c
diff options
context:
space:
mode:
Diffstat (limited to 'debian/vendor-h2o/deps/picotls/deps/cifra/src/curve25519.tweetnacl.c')
-rw-r--r--debian/vendor-h2o/deps/picotls/deps/cifra/src/curve25519.tweetnacl.c235
1 files changed, 0 insertions, 235 deletions
diff --git a/debian/vendor-h2o/deps/picotls/deps/cifra/src/curve25519.tweetnacl.c b/debian/vendor-h2o/deps/picotls/deps/cifra/src/curve25519.tweetnacl.c
deleted file mode 100644
index c98c107..0000000
--- a/debian/vendor-h2o/deps/picotls/deps/cifra/src/curve25519.tweetnacl.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* This is based on tweetnacl. Some typedefs have been
- * replaced with their stdint equivalents.
- *
- * Original code was public domain. */
-
-#include <stdint.h>
-#include <stddef.h>
-
-#include "handy.h"
-
-typedef int64_t gf[16];
-
-static const uint8_t _0[16],
- _9[32] = {9};
-static const gf gf0,
- gf1 = {1},
- _121665 = {0xDB41, 1},
- D = {0x78a3, 0x1359, 0x4dca, 0x75eb,
- 0xd8ab, 0x4141, 0x0a4d, 0x0070,
- 0xe898, 0x7779, 0x4079, 0x8cc7,
- 0xfe73, 0x2b6f, 0x6cee, 0x5203},
- D2 = {0xf159, 0x26b2, 0x9b94, 0xebd6,
- 0xb156, 0x8283, 0x149a, 0x00e0,
- 0xd130, 0xeef3, 0x80f2, 0x198e,
- 0xfce7, 0x56df, 0xd9dc, 0x2406},
- X = {0xd51a, 0x8f25, 0x2d60, 0xc956,
- 0xa7b2, 0x9525, 0xc760, 0x692c,
- 0xdc5c, 0xfdd6, 0xe231, 0xc0a4,
- 0x53fe, 0xcd6e, 0x36d3, 0x2169},
- Y = {0x6658, 0x6666, 0x6666, 0x6666,
- 0x6666, 0x6666, 0x6666, 0x6666,
- 0x6666, 0x6666, 0x6666, 0x6666,
- 0x6666, 0x6666, 0x6666, 0x6666},
- I = {0xa0b0, 0x4a0e, 0x1b27, 0xc4ee,
- 0xe478, 0xad2f, 0x1806, 0x2f43,
- 0xd7a7, 0x3dfb, 0x0099, 0x2b4d,
- 0xdf0b, 0x4fc1, 0x2480, 0x2b83};
-
-static void set25519(gf r, const gf a)
-{
- size_t i;
- for (i = 0; i < 16; i++)
- r[i] = a[i];
-}
-
-static void car25519(gf o)
-{
- int64_t c;
- size_t i;
-
- for (i = 0; i < 16; i++)
- {
- o[i] += (1LL << 16);
- c = o[i] >> 16;
- o[(i + 1) * (i < 15)] += c - 1 + 37 * (c - 1) * (i == 15);
- o[i] -= c << 16;
- }
-}
-
-static void sel25519(gf p, gf q, int64_t b)
-{
- int64_t tmp, mask = ~(b-1);
- size_t i;
- for (i = 0; i < 16; i++)
- {
- tmp = mask & (p[i] ^ q[i]);
- p[i] ^= tmp;
- q[i] ^= tmp;
- }
-}
-
-static void pack25519(uint8_t out[32], const gf n)
-{
- size_t i, j;
- int b;
- gf m, t;
- set25519(t, n);
- car25519(t);
- car25519(t);
- car25519(t);
-
- for(j = 0; j < 2; j++)
- {
- m[0] = t[0] - 0xffed;
- for (i = 1; i < 15; i++)
- {
- m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);
- m[i - 1] &= 0xffff;
- }
- m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);
- b = (m[15] >> 16) & 1;
- m[14] &= 0xffff;
- sel25519(t, m, 1 - b);
- }
-
- for (i = 0; i < 16; i++)
- {
- out[2 * i] = t[i] & 0xff;
- out[2 * i + 1] = (uint8_t) (t[i] >> 8);
- }
-}
-
-
-
-static void unpack25519(gf o, const uint8_t *n)
-{
- size_t i;
- for (i = 0; i < 16; i++)
- o[i] = n[2 * i] + ((int64_t) n[2 * i + 1] << 8);
- o[15] &= 0x7fff;
-}
-
-static void add(gf o, const gf a, const gf b)
-{
- size_t i;
- for (i = 0; i < 16; i++)
- o[i] = a[i] + b[i];
-}
-
-static void sub(gf o, const gf a, const gf b)
-{
- size_t i;
- for (i = 0; i < 16; i++)
- o[i] = a[i] - b[i];
-}
-
-static void mul(gf o, const gf a, const gf b)
-{
- int64_t t[31];
- size_t i, j;
-
- for (i = 0; i < 31; i++)
- t[i] = 0;
-
- for (i = 0; i < 16; i++)
- for (j = 0; j < 16; j++)
- t[i + j] += a[i] * b[j];
-
- for (i = 0; i < 15; i++)
- t[i] += 38 * t[i + 16];
-
- for (i = 0; i < 16; i++)
- o[i] = t[i];
-
- car25519(o);
- car25519(o);
-}
-
-static void sqr(gf o, const gf a)
-{
- mul(o, a, a);
-}
-
-static void inv25519(gf o, const gf i)
-{
- gf c;
- int a;
- for (a = 0; a < 16; a++)
- c[a] = i[a];
-
- for (a = 253; a >= 0; a--)
- {
- sqr(c, c);
- if(a != 2 && a != 4)
- mul(c, c, i);
- }
-
- for (a = 0; a < 16; a++)
- o[a] = c[a];
-}
-
-
-void cf_curve25519_mul(uint8_t *q, const uint8_t *n, const uint8_t *p)
-{
- uint8_t z[32];
- gf x;
- gf a, b, c, d, e, f;
-
- {
- size_t i;
- for (i = 0; i < 31; i++)
- z[i] = n[i];
- z[31] = (n[31] & 127) | 64;
- z[0] &= 248;
-
- unpack25519(x, p);
-
- for(i = 0; i < 16; i++)
- {
- b[i] = x[i];
- d[i] = a[i] = c[i] = 0;
- }
- }
-
- a[0] = d[0] = 1;
-
- {int i;
- for (i = 254; i >= 0; i--)
- {
- int64_t r = (z[i >> 3] >> (i & 7)) & 1;
- sel25519(a, b, r);
- sel25519(c, d, r);
- add(e, a, c);
- sub(a, a, c);
- add(c, b, d);
- sub(b, b, d);
- sqr(d, e);
- sqr(f, a);
- mul(a, c, a);
- mul(c, b, e);
- add(e, a, c);
- sub(a, a, c);
- sqr(b, a);
- sub(c, d, f);
- mul(a, c, _121665);
- add(a, a, d);
- mul(c, c, a);
- mul(a, d, f);
- mul(d, b, x);
- sqr(b, e);
- sel25519(a, b, r);
- sel25519(c, d, r);
- }
- }
-
- inv25519(c, c);
- mul(a, a, c);
- pack25519(q, a);
-}
-
-void cf_curve25519_mul_base(uint8_t *q, const uint8_t *n)
-{
- cf_curve25519_mul(q, n, _9);
-}
-