7 #include "crypto_core_salsa208.h"
8 #include "crypto_stream_salsa208.h"
11 int crypto_stream_salsa208_xor(
13 const unsigned char *m
,unsigned long long mlen
,
14 const unsigned char *n
,
15 const unsigned char *k
19 unsigned char block
[64];
20 unsigned char kcopy
[32];
26 for (i
= 0;i
< 32;++i
) kcopy
[i
] = k
[i
];
27 for (i
= 0;i
< 8;++i
) in
[i
] = n
[i
];
28 for (i
= 8;i
< 16;++i
) in
[i
] = 0;
31 crypto_core_salsa208(block
,in
,kcopy
,NULL
);
32 for (i
= 0;i
< 64;++i
) c
[i
] = m
[i
] ^ block
[i
];
35 for (i
= 8;i
< 16;++i
) {
36 u
+= (unsigned int) in
[i
];
47 crypto_core_salsa208(block
,in
,kcopy
,NULL
);
48 for (i
= 0;i
< (unsigned int) mlen
;++i
) c
[i
] = m
[i
] ^ block
[i
];
50 sodium_memzero(block
, sizeof block
);
51 sodium_memzero(kcopy
, sizeof kcopy
);