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

Function main

benchmark/crypto/oneshot-verify.js:106–177  ·  view source on GitHub ↗
({ n, mode, keyFormat, keyType })

Source from the content-addressed store, hash-verified

104}
105
106function main({ n, mode, keyFormat, keyType }) {
107 pems ||= [...Buffer.alloc(n)].map(() => keyFixtures[keyType].publicKey);
108 keyObjects ||= pems.map(crypto.createPublicKey);
109
110 // Warm up OpenSSL's provider operation cache for each key object
111 const warmupDigest = keyType === 'rsa' || keyType === 'ec' ? 'sha256' : null;
112 const warmupSig = crypto.sign(warmupDigest, data, keyFixtures[keyType].privateKey);
113 for (const keyObject of keyObjects) {
114 crypto.verify(warmupDigest, data, keyObject, warmupSig);
115 }
116
117 let publicKey, keys, digest;
118
119 switch (keyType) {
120 case 'rsa':
121 case 'ec':
122 digest = 'sha256';
123 break;
124 case 'ed25519':
125 case 'ml-dsa-44':
126 break;
127 default:
128 throw new Error('not implemented');
129 }
130
131 switch (keyFormat) {
132 case 'keyObject':
133 publicKey = keyObjects[0];
134 break;
135 case 'pem':
136 publicKey = pems[0];
137 break;
138 case 'jwk': {
139 publicKey = { key: keyObjects[0].export({ format: 'jwk' }), format: 'jwk' };
140 break;
141 }
142 case 'der': {
143 publicKey = { key: keyObjects[0].export({ format: 'der', type: 'spki' }), format: 'der', type: 'spki' };
144 break;
145 }
146 case 'raw-public': {
147 const exportedKey = keyObjects[0].export({ format: 'raw-public' });
148 const keyOpts = { key: exportedKey, format: 'raw-public', asymmetricKeyType: keyType };
149 if (keyType === 'ec') keyOpts.namedCurve = keyObjects[0].asymmetricKeyDetails.namedCurve;
150 publicKey = keyOpts;
151 break;
152 }
153 case 'keyObject.unique':
154 keys = keyObjects;
155 break;
156 default:
157 throw new Error('not implemented');
158 }
159
160
161 const { privateKey } = keyFixtures[keyType];
162 const signature = crypto.sign(digest, data, privateKey);
163

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…