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

Function main

benchmark/crypto/kem.js:124–217  ·  view source on GitHub ↗
({ n, mode, keyFormat, keyType, op })

Source from the content-addressed store, hash-verified

122}
123
124function main({ n, mode, keyFormat, keyType, op }) {
125 const isEncapsulate = op === 'encapsulate';
126 const pemSource = isEncapsulate ?
127 keyFixtures[keyType].publicKey :
128 keyFixtures[keyType].privateKey;
129 const createKeyFn = isEncapsulate ? crypto.createPublicKey : crypto.createPrivateKey;
130 const pems = [...Buffer.alloc(n)].map(() => pemSource);
131 const keyObjects = pems.map(createKeyFn);
132
133 // Warm up OpenSSL's provider operation cache for each key object
134 if (isEncapsulate) {
135 for (const keyObject of keyObjects) {
136 crypto.encapsulate(keyObject);
137 }
138 } else {
139 const warmupCiphertext = crypto.encapsulate(keyObjects[0]).ciphertext;
140 for (const keyObject of keyObjects) {
141 crypto.decapsulate(keyObject, warmupCiphertext);
142 }
143 }
144
145 const asymmetricKeyType = keyObjects[0].asymmetricKeyType;
146 let key, keys, ciphertexts;
147
148 switch (keyFormat) {
149 case 'keyObject':
150 key = keyObjects[0];
151 break;
152 case 'pem':
153 key = pems[0];
154 break;
155 case 'jwk': {
156 key = { key: keyObjects[0].export({ format: 'jwk' }), format: 'jwk' };
157 break;
158 }
159 case 'der': {
160 const type = isEncapsulate ? 'spki' : 'pkcs8';
161 key = { key: keyObjects[0].export({ format: 'der', type }), format: 'der', type };
162 break;
163 }
164 case 'raw-public': {
165 const exportedKey = keyObjects[0].export({ format: 'raw-public' });
166 const keyOpts = { key: exportedKey, format: 'raw-public', asymmetricKeyType };
167 if (asymmetricKeyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve;
168 key = keyOpts;
169 break;
170 }
171 case 'raw-private': {
172 const exportedKey = keyObjects[0].export({ format: 'raw-private' });
173 const keyOpts = { key: exportedKey, format: 'raw-private', asymmetricKeyType };
174 if (asymmetricKeyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve;
175 key = keyOpts;
176 break;
177 }
178 case 'raw-seed': {
179 // raw-seed requires a private key to export from
180 const privateKeyObject = crypto.createPrivateKey(keyFixtures[keyType].privateKey);
181 key = {

Callers

nothing calls this directly

Calls 6

allocMethod · 0.80
measureSyncFunction · 0.70
measureAsyncFunction · 0.70
measureAsyncParallelFunction · 0.70
mapMethod · 0.65
exportMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…