7 #include "crypto_core_salsa2012.h"
8 #include "crypto_stream.h"
10 typedef unsigned int uint32
;
12 static const unsigned char sigma
[16] = "expand 32-byte k";
14 int crypto_stream_xor(
16 const unsigned char *m
,unsigned long long mlen
,
17 const unsigned char *n
,
18 const unsigned char *k
22 unsigned char block
[64];
28 for (i
= 0;i
< 8;++i
) in
[i
] = n
[i
];
29 for (i
= 8;i
< 16;++i
) in
[i
] = 0;
32 crypto_core_salsa2012(block
,in
,k
,sigma
);
33 for (i
= 0;i
< 64;++i
) c
[i
] = m
[i
] ^ block
[i
];
36 for (i
= 8;i
< 16;++i
) {
37 u
+= (unsigned int) in
[i
];
48 crypto_core_salsa2012(block
,in
,k
,sigma
);
49 for (i
= 0;i
< mlen
;++i
) c
[i
] = m
[i
] ^ block
[i
];