Anonymous user
Main step of GOST 28147-89: Difference between revisions
Updated D entry
(Updated D entry) |
(Updated D entry) |
||
Line 124:
{{trans|C}}
{{trans|Go}}
<lang d>/// Rotate uint left.
<lang d>alias SBox = immutable ubyte[16][8]; // A 2D array of nibbles.▼
uint rol(in uint x, in uint nBits) @safe pure nothrow {
}
alias Nibble = ubyte; // 4 bits used.
private bool _validateSBox(in SBox data) @safe pure nothrow {
foreach (
foreach (
if (ub >= 16) // Verify it's a nibble.
return false;
Line 134 ⟶ 140:
}
struct GOST(
private static generate(ubyte k)() @safe pure nothrow {
//return iota(k87.length)
private static immutable ubyte[256] k87, k65, k43, k21;▼
// .array;
uint[k87.length] result; // ubytes[...] should suffice.
▲ k87[i] = ((s[7][i >> 4] << 4) & 0xFF) | s[6][i & 0xF];
▲ k21[i] = ((s[1][i >> 4] << 4) & 0xFF) | s[0][i & 0xF];
}
private
▲ return (x << y) | (x >> (32 - y));
k65 = generate!5,
k43 = generate!3,
k21 = generate!1;
// Endianess problems?
|