remove unused code from tweetnacl
This commit is contained in:
parent
819656a12f
commit
3957c22e28
@ -31,22 +31,6 @@ static const gf
|
||||
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 u32 L32(u32 x,int c) { return (x << c) | ((x&0xffffffff) >> (32 - c)); }
|
||||
|
||||
static u32 ld32(const u8 *x)
|
||||
{
|
||||
u32 u = x[3];
|
||||
u = (u<<8)|x[2];
|
||||
u = (u<<8)|x[1];
|
||||
return (u<<8)|x[0];
|
||||
}
|
||||
|
||||
sv st32(u8 *x,u32 u)
|
||||
{
|
||||
int i;
|
||||
FOR(i,4) { x[i] = u; u >>= 8; }
|
||||
}
|
||||
|
||||
static int vn(const u8 *x,const u8 *y,int n)
|
||||
{
|
||||
int i;
|
||||
@ -55,116 +39,11 @@ static int vn(const u8 *x,const u8 *y,int n)
|
||||
return (1 & ((d - 1) >> 8)) - 1;
|
||||
}
|
||||
|
||||
int crypto_verify_16(const u8 *x,const u8 *y)
|
||||
{
|
||||
return vn(x,y,16);
|
||||
}
|
||||
|
||||
int crypto_verify_32(const u8 *x,const u8 *y)
|
||||
{
|
||||
return vn(x,y,32);
|
||||
}
|
||||
|
||||
sv core(u8 *out,const u8 *in,const u8 *k,const u8 *c,int h)
|
||||
{
|
||||
u32 w[16],x[16],y[16],t[4];
|
||||
int i,j,m;
|
||||
|
||||
FOR(i,4) {
|
||||
x[5*i] = ld32(c+4*i);
|
||||
x[1+i] = ld32(k+4*i);
|
||||
x[6+i] = ld32(in+4*i);
|
||||
x[11+i] = ld32(k+16+4*i);
|
||||
}
|
||||
|
||||
FOR(i,16) y[i] = x[i];
|
||||
|
||||
FOR(i,20) {
|
||||
FOR(j,4) {
|
||||
FOR(m,4) t[m] = x[(5*j+4*m)%16];
|
||||
t[1] ^= L32(t[0]+t[3], 7);
|
||||
t[2] ^= L32(t[1]+t[0], 9);
|
||||
t[3] ^= L32(t[2]+t[1],13);
|
||||
t[0] ^= L32(t[3]+t[2],18);
|
||||
FOR(m,4) w[4*j+(j+m)%4] = t[m];
|
||||
}
|
||||
FOR(m,16) x[m] = w[m];
|
||||
}
|
||||
|
||||
if (h) {
|
||||
FOR(i,16) x[i] += y[i];
|
||||
FOR(i,4) {
|
||||
x[5*i] -= ld32(c+4*i);
|
||||
x[6+i] -= ld32(in+4*i);
|
||||
}
|
||||
FOR(i,4) {
|
||||
st32(out+4*i,x[5*i]);
|
||||
st32(out+16+4*i,x[6+i]);
|
||||
}
|
||||
} else
|
||||
FOR(i,16) st32(out + 4 * i,x[i] + y[i]);
|
||||
}
|
||||
|
||||
int crypto_core_salsa20(u8 *out,const u8 *in,const u8 *k,const u8 *c)
|
||||
{
|
||||
core(out,in,k,c,0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int crypto_core_hsalsa20(u8 *out,const u8 *in,const u8 *k,const u8 *c)
|
||||
{
|
||||
core(out,in,k,c,1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const u8 sigma[16] = "expand 32-byte k";
|
||||
|
||||
int crypto_stream_salsa20_xor(u8 *c,const u8 *m,u64 b,const u8 *n,const u8 *k)
|
||||
{
|
||||
u8 z[16],x[64];
|
||||
u32 u,i;
|
||||
if (!b) return 0;
|
||||
FOR(i,16) z[i] = 0;
|
||||
FOR(i,8) z[i] = n[i];
|
||||
while (b >= 64) {
|
||||
crypto_core_salsa20(x,z,k,sigma);
|
||||
FOR(i,64) c[i] = (m?m[i]:0) ^ x[i];
|
||||
u = 1;
|
||||
for (i = 8;i < 16;++i) {
|
||||
u += (u32) z[i];
|
||||
z[i] = u;
|
||||
u >>= 8;
|
||||
}
|
||||
b -= 64;
|
||||
c += 64;
|
||||
if (m) m += 64;
|
||||
}
|
||||
if (b) {
|
||||
crypto_core_salsa20(x,z,k,sigma);
|
||||
FOR(i,b) c[i] = (m?m[i]:0) ^ x[i];
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int crypto_stream_salsa20(u8 *c,u64 d,const u8 *n,const u8 *k)
|
||||
{
|
||||
return crypto_stream_salsa20_xor(c,0,d,n,k);
|
||||
}
|
||||
|
||||
int crypto_stream(u8 *c,u64 d,const u8 *n,const u8 *k)
|
||||
{
|
||||
u8 s[32];
|
||||
crypto_core_hsalsa20(s,n,k,sigma);
|
||||
return crypto_stream_salsa20(c,d,n+16,s);
|
||||
}
|
||||
|
||||
int crypto_stream_xor(u8 *c,const u8 *m,u64 d,const u8 *n,const u8 *k)
|
||||
{
|
||||
u8 s[32];
|
||||
crypto_core_hsalsa20(s,n,k,sigma);
|
||||
return crypto_stream_salsa20_xor(c,m,d,n+16,s);
|
||||
}
|
||||
|
||||
sv set25519(gf r, const gf a)
|
||||
{
|
||||
int i;
|
||||
|
Loading…
Reference in New Issue
Block a user