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

Function rsaImportKey

lib/internal/crypto/rsa.js:170–245  ·  view source on GitHub ↗
(
  format,
  keyData,
  algorithm,
  extractable,
  usages)

Source from the content-addressed store, hash-verified

168}
169
170function rsaImportKey(
171 format,
172 keyData,
173 algorithm,
174 extractable,
175 usages) {
176 const allowedUsages = kUsages[algorithm.name];
177 const usagesSet = new SafeSet(usages);
178 let handle;
179 switch (format) {
180 case 'KeyObjectHandle':
181 verifyAcceptableKeyUse(
182 algorithm.name,
183 usagesSet,
184 keyData.getKeyType() === kKeyTypePublic ?
185 allowedUsages.public :
186 allowedUsages.private);
187 handle = keyData;
188 break;
189 case 'spki': {
190 verifyAcceptableKeyUse(
191 algorithm.name, usagesSet, allowedUsages.public);
192 handle = importDerKey(keyData, true);
193 break;
194 }
195 case 'pkcs8': {
196 verifyAcceptableKeyUse(
197 algorithm.name, usagesSet, allowedUsages.private);
198 handle = importDerKey(keyData, false);
199 break;
200 }
201 case 'jwk': {
202 const expectedUse = algorithm.name === 'RSA-OAEP' ? 'enc' : 'sig';
203 validateJwk(keyData, 'RSA', extractable, usagesSet, expectedUse);
204
205 if (keyData.alg !== undefined) {
206 const expected =
207 normalizeHashName(algorithm.hash.name,
208 algorithm.name === 'RSASSA-PKCS1-v1_5' ? normalizeHashName.kContextJwkRsa :
209 algorithm.name === 'RSA-PSS' ? normalizeHashName.kContextJwkRsaPss :
210 normalizeHashName.kContextJwkRsaOaep);
211
212 if (expected && keyData.alg !== expected)
213 throw lazyDOMException(
214 'JWK "alg" does not match the requested algorithm',
215 'DataError');
216 }
217
218 const isPublic = keyData.d === undefined;
219 verifyAcceptableKeyUse(
220 algorithm.name,
221 usagesSet,
222 isPublic ? allowedUsages.public : allowedUsages.private);
223 handle = importJwkKey(isPublic, keyData);
224 break;
225 }
226 default:
227 return undefined;

Callers

nothing calls this directly

Calls 7

verifyAcceptableKeyUseFunction · 0.85
importDerKeyFunction · 0.85
validateJwkFunction · 0.85
normalizeHashNameFunction · 0.85
lazyDOMExceptionFunction · 0.85
importJwkKeyFunction · 0.85
getUsagesMaskFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…