deno.land / std@0.166.0 / node / internal / crypto / hkdf.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
114
115
116
117
118
119
120
121
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.// Copyright Joyent, Inc. and Node.js contributors. All rights reserved. MIT license.
import { validateFunction, validateInteger, validateString,} from "../validators.mjs";import { ERR_INVALID_ARG_TYPE, ERR_OUT_OF_RANGE, hideStackFrames,} from "../errors.ts";import { toBuf, validateByteSource } from "./util.ts";import { createSecretKey, isKeyObject, KeyObject } from "./keys.ts";import type { BinaryLike } from "./types.ts";import { kMaxLength } from "../buffer.mjs";import { isAnyArrayBuffer, isArrayBufferView } from "../util/types.ts";import { notImplemented } from "../../_utils.ts";
const validateParameters = hideStackFrames((hash, key, salt, info, length) => { key = prepareKey(key); salt = toBuf(salt); info = toBuf(info);
validateString(hash, "digest"); validateByteSource(salt, "salt"); validateByteSource(info, "info");
validateInteger(length, "length", 0, kMaxLength);
if (info.byteLength > 1024) { throw new ERR_OUT_OF_RANGE( "info", "must not contain more than 1024 bytes", info.byteLength, ); }
return { hash, key, salt, info, length, };});
function prepareKey(key: BinaryLike | KeyObject) { if (isKeyObject(key)) { return key; }
if (isAnyArrayBuffer(key)) { return createSecretKey(new Uint8Array(key as unknown as ArrayBufferLike)); }
key = toBuf(key as string);
if (!isArrayBufferView(key)) { throw new ERR_INVALID_ARG_TYPE( "ikm", [ "string", "SecretKeyObject", "ArrayBuffer", "TypedArray", "DataView", "Buffer", ], key, ); }
return createSecretKey(key);}
export function hkdf( hash: string, key: BinaryLike | KeyObject, salt: BinaryLike, info: BinaryLike, length: number, callback: (err: Error | null, derivedKey: ArrayBuffer) => void,) { ({ hash, key, salt, info, length } = validateParameters( hash, key, salt, info, length, ));
validateFunction(callback, "callback");
notImplemented("crypto.hkdf");}
export function hkdfSync( hash: string, key: BinaryLike | KeyObject, salt: BinaryLike, info: BinaryLike, length: number,) { ({ hash, key, salt, info, length } = validateParameters( hash, key, salt, info, length, ));
notImplemented("crypto.hkdfSync");}
export default { hkdf, hkdfSync,};
std

Version Info

Tagged at
a year ago