-
Notifications
You must be signed in to change notification settings - Fork 9
/
kdfInterface.ts
113 lines (104 loc) · 3.03 KB
/
kdfInterface.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import type { KdfId } from "@hpke/common";
/**
* The KDF interface.
*/
export interface KdfInterface {
/** The KDF identifier. */
readonly id: KdfId;
/** The output size of the extract() function in bytes (Nh). */
readonly hashSize: number;
/**
* Initializes the instance by setting a `suite_id` defined in RFC9180.
*
* @param suiteId A `suite_id` defined in RFC9180.
*/
init(suiteId: Uint8Array): void;
/**
* Builds a labeled input keying material.
*
* @param label A byte string indicating the cryptographic context/operation.
* @param info An additional byte string.
* @returns An input keying material as bytes.
*/
buildLabeledIkm(label: Uint8Array, ikm: Uint8Array): Uint8Array;
/**
* Builds a labeled info string.
*
* @param label A byte string indicating the cryptographic context/operation.
* @param info An additional byte string.
* @param len The length of the output byte string.
* @returns An info string as bytes.
*/
buildLabeledInfo(
label: Uint8Array,
info: Uint8Array,
len: number,
): Uint8Array;
/**
* Extracts a pseudorandom key of fixed length (Nh) bytes.
*
* @param salt An additional random byte string.
* @param ikm An input keying material
* @returns A pseudorandom key as bytes.
*/
extract(
salt: ArrayBuffer,
ikm: ArrayBuffer,
): Promise<ArrayBuffer>;
/**
* Expands a pseudorandom key `prk`.
*
* @param prk A pseudorandom key.
* @param info An additional byte string.
* @param len The length in bytes of the output keying material.
* @returns An output keying material as bytes.
*/
expand(
prk: ArrayBuffer,
info: ArrayBuffer,
len: number,
): Promise<ArrayBuffer>;
/**
* Extracts a pseudorandom key and expand it to a specified length keying material.
*
* @param salt An additional random byte string.
* @param ikm An input keying material
* @param info An additional byte string.
* @param len The length in bytes of the output keying material.
* @returns An output keying material as bytes.
*/
extractAndExpand(
salt: ArrayBuffer,
ikm: ArrayBuffer,
info: ArrayBuffer,
len: number,
): Promise<ArrayBuffer>;
/**
* Extracts a pseudorandom key with label.
*
* @param salt An additional random byte string.
* @param label A byte string indicating the cryptographic context/operation.
* @param ikm An input keying material
* @returns A pseudorandom key as bytes.
*/
labeledExtract(
salt: ArrayBuffer,
label: Uint8Array,
ikm: Uint8Array,
): Promise<ArrayBuffer>;
/**
* Extracts a pseudorandom key with label.
*
* @param prk A pseudorandom key.
* @param label A byte string indicating the cryptographic context/operation.
* @param info An additional byte string.
* @param len The length in bytes of the output keying material.
* @returns An output keying material as bytes.
*/
labeledExpand(
prk: ArrayBuffer,
label: Uint8Array,
info: Uint8Array,
len: number,
): Promise<ArrayBuffer>;
}