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

Function mlDsaImportKey

lib/internal/crypto/ml_dsa.js:116–197  ·  view source on GitHub ↗
(
  format,
  keyData,
  algorithm,
  extractable,
  usages)

Source from the content-addressed store, hash-verified

114}
115
116function mlDsaImportKey(
117 format,
118 keyData,
119 algorithm,
120 extractable,
121 usages) {
122
123 const { name } = algorithm;
124 let handle;
125 const usagesSet = new SafeSet(usages);
126 switch (format) {
127 case 'KeyObjectHandle':
128 verifyAcceptableKeyUse(
129 name,
130 usagesSet,
131 keyData.getKeyType() === kKeyTypePublic ?
132 kUsages.public :
133 kUsages.private);
134 handle = keyData;
135 break;
136 case 'spki': {
137 verifyAcceptableKeyUse(name, usagesSet, kUsages.public);
138 handle = importDerKey(keyData, true);
139 break;
140 }
141 case 'pkcs8': {
142 verifyAcceptableKeyUse(name, usagesSet, kUsages.private);
143
144 const privOnlyLengths = {
145 '__proto__': null,
146 'ML-DSA-44': 2588,
147 'ML-DSA-65': 4060,
148 'ML-DSA-87': 4924,
149 };
150 if (keyData.byteLength === privOnlyLengths[name]) {
151 throw lazyDOMException(
152 'Importing an ML-DSA PKCS#8 key without a seed is not supported',
153 'NotSupportedError');
154 }
155
156 handle = importDerKey(keyData, false);
157 break;
158 }
159 case 'jwk': {
160 validateJwk(keyData, 'AKP', extractable, usagesSet, 'sig');
161
162 if (keyData.alg !== name)
163 throw lazyDOMException(
164 'JWK "alg" Parameter and algorithm name mismatch', 'DataError');
165
166 const isPublic = keyData.priv === undefined;
167 verifyAcceptableKeyUse(
168 name,
169 usagesSet,
170 isPublic ? kUsages.public : kUsages.private);
171 handle = importJwkKey(isPublic, keyData);
172 break;
173 }

Callers

nothing calls this directly

Calls 7

verifyAcceptableKeyUseFunction · 0.85
importDerKeyFunction · 0.85
lazyDOMExceptionFunction · 0.85
validateJwkFunction · 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…