INNER CODE UNIT · C

k2

jlouis/enacl · c_src/enacl_ext.c:53

  ErlNifUInt64 k2 = uint64_unpack(k + 16);
  ErlNifUInt64 k3 = uint64_unpack(k + 24);
  ErlNifUInt64 sum = 0;
  ErlNifUInt64 delta = 0x9e3779b97f4a7c15;
  int i;
  for (i = 0; i < 32; ++i) {
    sum += delta;
    v0 += ((v1 << 7) + k0) ^ (v1 + sum) ^ ((v1 >> 12) + k1);
    v1 += ((v0 << 16) + k2) ^ (v0 + sum) ^ ((v0 >> 8) + k3);
  }
  uint64_pack(out + 0, v0);
  uint64_pack(out + 8, v1);

  return 0;
}

ERL_NIF_TERM enif_scramble_block_16(ErlNifEnv *env, int argc,
                                    ERL_NIF_TERM const argv[]) {

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…