blake2.d.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import { Hash, type CHashO, type Input } from './utils.ts';
  2. /** Blake hash options. dkLen is output length. key is used in MAC mode. salt is used in KDF mode. */
  3. export type Blake2Opts = {
  4. dkLen?: number;
  5. key?: Input;
  6. salt?: Input;
  7. personalization?: Input;
  8. };
  9. /** Class, from which others are subclassed. */
  10. export declare abstract class BLAKE2<T extends BLAKE2<T>> extends Hash<T> {
  11. protected abstract compress(msg: Uint32Array, offset: number, isLast: boolean): void;
  12. protected abstract get(): number[];
  13. protected abstract set(...args: number[]): void;
  14. abstract destroy(): void;
  15. protected buffer: Uint8Array;
  16. protected buffer32: Uint32Array;
  17. protected finished: boolean;
  18. protected destroyed: boolean;
  19. protected length: number;
  20. protected pos: number;
  21. readonly blockLen: number;
  22. readonly outputLen: number;
  23. constructor(blockLen: number, outputLen: number);
  24. update(data: Input): this;
  25. digestInto(out: Uint8Array): void;
  26. digest(): Uint8Array;
  27. _cloneInto(to?: T): T;
  28. clone(): T;
  29. }
  30. export declare class BLAKE2b extends BLAKE2<BLAKE2b> {
  31. private v0l;
  32. private v0h;
  33. private v1l;
  34. private v1h;
  35. private v2l;
  36. private v2h;
  37. private v3l;
  38. private v3h;
  39. private v4l;
  40. private v4h;
  41. private v5l;
  42. private v5h;
  43. private v6l;
  44. private v6h;
  45. private v7l;
  46. private v7h;
  47. constructor(opts?: Blake2Opts);
  48. protected get(): [
  49. number,
  50. number,
  51. number,
  52. number,
  53. number,
  54. number,
  55. number,
  56. number,
  57. number,
  58. number,
  59. number,
  60. number,
  61. number,
  62. number,
  63. number,
  64. number
  65. ];
  66. protected set(v0l: number, v0h: number, v1l: number, v1h: number, v2l: number, v2h: number, v3l: number, v3h: number, v4l: number, v4h: number, v5l: number, v5h: number, v6l: number, v6h: number, v7l: number, v7h: number): void;
  67. protected compress(msg: Uint32Array, offset: number, isLast: boolean): void;
  68. destroy(): void;
  69. }
  70. /**
  71. * Blake2b hash function. 64-bit. 1.5x slower than blake2s in JS.
  72. * @param msg - message that would be hashed
  73. * @param opts - dkLen output length, key for MAC mode, salt, personalization
  74. */
  75. export declare const blake2b: CHashO;
  76. export type Num16 = {
  77. v0: number;
  78. v1: number;
  79. v2: number;
  80. v3: number;
  81. v4: number;
  82. v5: number;
  83. v6: number;
  84. v7: number;
  85. v8: number;
  86. v9: number;
  87. v10: number;
  88. v11: number;
  89. v12: number;
  90. v13: number;
  91. v14: number;
  92. v15: number;
  93. };
  94. export declare function compress(s: Uint8Array, offset: number, msg: Uint32Array, rounds: number, v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number, v8: number, v9: number, v10: number, v11: number, v12: number, v13: number, v14: number, v15: number): Num16;
  95. export declare class BLAKE2s extends BLAKE2<BLAKE2s> {
  96. private v0;
  97. private v1;
  98. private v2;
  99. private v3;
  100. private v4;
  101. private v5;
  102. private v6;
  103. private v7;
  104. constructor(opts?: Blake2Opts);
  105. protected get(): [number, number, number, number, number, number, number, number];
  106. protected set(v0: number, v1: number, v2: number, v3: number, v4: number, v5: number, v6: number, v7: number): void;
  107. protected compress(msg: Uint32Array, offset: number, isLast: boolean): void;
  108. destroy(): void;
  109. }
  110. /**
  111. * Blake2s hash function. Focuses on 8-bit to 32-bit platforms. 1.5x faster than blake2b in JS.
  112. * @param msg - message that would be hashed
  113. * @param opts - dkLen output length, key for MAC mode, salt, personalization
  114. */
  115. export declare const blake2s: CHashO;
  116. //# sourceMappingURL=blake2.d.ts.map