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

Function mlKemImportKey

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

Source from the content-addressed store, hash-verified

115}
116
117function mlKemImportKey(
118 format,
119 keyData,
120 algorithm,
121 extractable,
122 usages) {
123
124 const { name } = algorithm;
125 let handle;
126 const usagesSet = new SafeSet(usages);
127 switch (format) {
128 case 'KeyObjectHandle':
129 verifyAcceptableKeyUse(
130 name,
131 usagesSet,
132 keyData.getKeyType() === kKeyTypePublic ?
133 kUsages.public :
134 kUsages.private);
135 handle = keyData;
136 break;
137 case 'spki': {
138 verifyAcceptableKeyUse(name, usagesSet, kUsages.public);
139 handle = importDerKey(keyData, true);
140 break;
141 }
142 case 'pkcs8': {
143 verifyAcceptableKeyUse(name, usagesSet, kUsages.private);
144
145 const privOnlyLengths = {
146 '__proto__': null,
147 'ML-KEM-512': 1660,
148 'ML-KEM-768': 2428,
149 'ML-KEM-1024': 3196,
150 };
151 if (keyData.byteLength === privOnlyLengths[name]) {
152 throw lazyDOMException(
153 'Importing an ML-KEM PKCS#8 key without a seed is not supported',
154 'NotSupportedError');
155 }
156
157 handle = importDerKey(keyData, false);
158 break;
159 }
160 case 'raw-public':
161 case 'raw-seed': {
162 const isPublic = format === 'raw-public';
163 verifyAcceptableKeyUse(
164 name,
165 usagesSet,
166 isPublic ? kUsages.public : kUsages.private);
167 handle = importRawKey(isPublic, keyData, isPublic ? kKeyFormatRawPublic : kKeyFormatRawSeed, name);
168 break;
169 }
170 case 'jwk': {
171 validateJwk(keyData, 'AKP', extractable, usagesSet, 'enc');
172
173 if (keyData.alg !== name)
174 throw lazyDOMException(

Callers

nothing calls this directly

Calls 7

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