MCPcopy Index your code
hub / github.com/nodejs/node / check

Function check

lib/internal/crypto/argon2.js:138–185  ·  view source on GitHub ↗

* @param {'argon2d' | 'argon2i' | 'argon2id'} algorithm * @param {object} parameters * @param {ArrayBufferLike} parameters.message * @param {ArrayBufferLike} parameters.nonce * @param {number} parameters.parallelism * @param {number} parameters.tagLength * @param {number} parameters.memory *

(algorithm, parameters)

Source from the content-addressed store, hash-verified

136 * @returns {object}
137 */
138function check(algorithm, parameters) {
139 if (Argon2Job === undefined)
140 throw new ERR_CRYPTO_ARGON2_NOT_SUPPORTED();
141
142 validateString(algorithm, 'algorithm');
143 validateOneOf(algorithm, 'algorithm', ['argon2d', 'argon2i', 'argon2id']);
144
145 const type = {
146 '__proto__': null,
147 'argon2d': kTypeArgon2d,
148 'argon2i': kTypeArgon2i,
149 'argon2id': kTypeArgon2id,
150 }[algorithm];
151
152 validateObject(parameters, 'parameters');
153
154 const { parallelism, tagLength, memory, passes } = parameters;
155 const MAX_POSITIVE_UINT_32 = MathPow(2, 32) - 1;
156
157 const message = getArrayBufferOrView(parameters.message, 'parameters.message');
158 validateInteger(message.byteLength, 'parameters.message.byteLength', 0, MAX_POSITIVE_UINT_32);
159
160 const nonce = getArrayBufferOrView(parameters.nonce, 'parameters.nonce');
161 validateInteger(nonce.byteLength, 'parameters.nonce.byteLength', 8, MAX_POSITIVE_UINT_32);
162
163 validateInteger(parallelism, 'parameters.parallelism', 1, MathPow(2, 24) - 1);
164 validateInteger(tagLength, 'parameters.tagLength', 4, MAX_POSITIVE_UINT_32);
165 validateInteger(memory, 'parameters.memory', 8 * parallelism, MAX_POSITIVE_UINT_32);
166 validateUint32(passes, 'parameters.passes', true);
167
168 let secret;
169 if (parameters.secret === undefined) {
170 secret = new Uint8Array(0);
171 } else {
172 secret = getArrayBufferOrView(parameters.secret);
173 validateInteger(secret.byteLength, 'parameters.secret.byteLength', 0, MAX_POSITIVE_UINT_32);
174 }
175
176 let associatedData;
177 if (parameters.associatedData === undefined) {
178 associatedData = new Uint8Array(0);
179 } else {
180 associatedData = getArrayBufferOrView(parameters.associatedData);
181 validateInteger(associatedData.byteLength, 'parameters.associatedData.byteLength', 0, MAX_POSITIVE_UINT_32);
182 }
183
184 return { message, nonce, secret, associatedData, tagLength, passes, parallelism, memory, type };
185}
186
187function validateArgon2DeriveBitsLength(length) {
188 if (length === null)

Callers 2

argon2Function · 0.70
argon2SyncFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…