_blake.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * Internal helpers for blake hash.
  3. * @module
  4. */
  5. import { rotr } from "./utils.js";
  6. /**
  7. * Internal blake variable.
  8. * For BLAKE2b, the two extra permutations for rounds 10 and 11 are SIGMA[10..11] = SIGMA[0..1].
  9. */
  10. // prettier-ignore
  11. export const BSIGMA = /* @__PURE__ */ Uint8Array.from([
  12. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
  13. 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
  14. 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
  15. 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
  16. 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
  17. 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
  18. 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11,
  19. 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10,
  20. 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5,
  21. 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0,
  22. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
  23. 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3,
  24. // Blake1, unused in others
  25. 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4,
  26. 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8,
  27. 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13,
  28. 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9,
  29. ]);
  30. // Mixing function G splitted in two halfs
  31. export function G1s(a, b, c, d, x) {
  32. a = (a + b + x) | 0;
  33. d = rotr(d ^ a, 16);
  34. c = (c + d) | 0;
  35. b = rotr(b ^ c, 12);
  36. return { a, b, c, d };
  37. }
  38. export function G2s(a, b, c, d, x) {
  39. a = (a + b + x) | 0;
  40. d = rotr(d ^ a, 8);
  41. c = (c + d) | 0;
  42. b = rotr(b ^ c, 7);
  43. return { a, b, c, d };
  44. }
  45. //# sourceMappingURL=_blake.js.map