8 #include "crypto_core_salsa20.h"
10 #ifndef HAVE_AMD64_ASM
12 typedef unsigned int uint32
;
14 static const unsigned char sigma
[16] = {
15 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'
18 int crypto_stream_xor(
20 const unsigned char *m
,unsigned long long mlen
,
21 const unsigned char *n
,
22 const unsigned char *k
26 unsigned char block
[64];
32 for (i
= 0;i
< 8;++i
) in
[i
] = n
[i
];
33 for (i
= 8;i
< 16;++i
) in
[i
] = 0;
36 crypto_core_salsa20(block
,in
,k
,sigma
);
37 for (i
= 0;i
< 64;++i
) c
[i
] = m
[i
] ^ block
[i
];
40 for (i
= 8;i
< 16;++i
) {
41 u
+= (unsigned int) in
[i
];
52 crypto_core_salsa20(block
,in
,k
,sigma
);
53 for (i
= 0;i
< mlen
;++i
) c
[i
] = m
[i
] ^ block
[i
];