void SHATransform(uint[] output, byte[] data, uint[] init)
{
OpenSSL.Core.SHA256 sha = new OpenSSL.Core.SHA256();
byte[] swapped = new byte[data.Length];
int count = data.Length / 4;
for (int i = 0; i < count; i++)
{
int byidx = i * 4;
swapped[byidx + 0] = data[byidx + 3];
swapped[byidx + 1] = data[byidx + 2];
swapped[byidx + 2] = data[byidx + 1];
swapped[byidx + 3] = data[byidx + 0];
}
Array.Copy(init, sha.ctx.h, 8);
sha.Update(swapped);
Array.Copy(sha.ctx.h, output, 8);
}