learncrypto/source/cipher.d

23 lines
472 B
D
Raw Normal View History

2016-02-14 11:00:28 +01:00
module cipher;
private import std.range : isInputRange, ElementType, chooseAmong;
2016-02-14 11:00:28 +01:00
private import salsa20;
private import chacha20;
import std.stdio;
2016-02-14 11:00:28 +01:00
public:
enum Cipher
{
2016-02-14 11:00:28 +01:00
salsa20,
chacha20
}
auto cipherFunction(R)(R range, ubyte[32] key, ubyte[8] nonce, Cipher cipher)
if(isInputRange!R && is(ElementType!R : ubyte))
{
return chooseAmong(cipher,
range.salsa20Cipher(key, nonce),
range.chacha20Cipher(key, nonce));
2016-02-14 11:00:28 +01:00
}