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

Function cfrgImportKey

lib/internal/crypto/cfrg.js:117–188  ·  view source on GitHub ↗
(
  format,
  keyData,
  algorithm,
  extractable,
  usages)

Source from the content-addressed store, hash-verified

115}
116
117function cfrgImportKey(
118 format,
119 keyData,
120 algorithm,
121 extractable,
122 usages) {
123
124 const { name } = algorithm;
125 let handle;
126 const allowedUsages = kUsages[name];
127 const usagesSet = new SafeSet(usages);
128 switch (format) {
129 case 'KeyObjectHandle':
130 verifyAcceptableKeyUse(
131 name,
132 usagesSet,
133 keyData.getKeyType() === kKeyTypePublic ?
134 allowedUsages.public :
135 allowedUsages.private);
136 handle = keyData;
137 break;
138 case 'spki': {
139 verifyAcceptableKeyUse(name, usagesSet, allowedUsages.public);
140 handle = importDerKey(keyData, true);
141 break;
142 }
143 case 'pkcs8': {
144 verifyAcceptableKeyUse(name, usagesSet, allowedUsages.private);
145 handle = importDerKey(keyData, false);
146 break;
147 }
148 case 'jwk': {
149 const expectedUse = (name === 'X25519' || name === 'X448') ? 'enc' : 'sig';
150 validateJwk(keyData, 'OKP', extractable, usagesSet, expectedUse);
151
152 if (keyData.crv !== name)
153 throw lazyDOMException(
154 'JWK "crv" Parameter and algorithm name mismatch', 'DataError');
155
156 if (keyData.alg !== undefined && (name === 'Ed25519' || name === 'Ed448')) {
157 if (keyData.alg !== name && keyData.alg !== 'EdDSA')
158 throw lazyDOMException(
159 'JWK "alg" does not match the requested algorithm', 'DataError');
160 }
161
162 const isPublic = keyData.d === undefined;
163 verifyAcceptableKeyUse(
164 name,
165 usagesSet,
166 isPublic ? allowedUsages.public : allowedUsages.private);
167 handle = importJwkKey(isPublic, keyData);
168 break;
169 }
170 case 'raw': {
171 verifyAcceptableKeyUse(name, usagesSet, allowedUsages.public);
172 handle = importRawKey(true, keyData, kKeyFormatRawPublic, name);
173 break;
174 }

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…