(key, hasSeed)
| 74 | } |
| 75 | |
| 76 | function assertPrivateKey(key, hasSeed) { |
| 77 | assertKey(key); |
| 78 | assert.strictEqual(key.type, 'private'); |
| 79 | assertPublicKey(createPublicKey(key)); |
| 80 | key.export({ format: 'der', type: 'pkcs8' }); |
| 81 | if (hasSeed) { |
| 82 | assert.strictEqual(key.export({ format: 'pem', type: 'pkcs8' }), keys.private_seed_only); |
| 83 | const jwk = key.export({ format: 'jwk' }); |
| 84 | assertPrivateJwk(jwk); |
| 85 | assert.strictEqual(key.equals(createPrivateKey({ format: 'jwk', key: jwk })), true); |
| 86 | assert.ok(createPublicKey({ format: 'jwk', key: jwk })); |
| 87 | |
| 88 | // Raw seed round-trip |
| 89 | const rawSeed = key.export({ format: 'raw-seed' }); |
| 90 | assert(Buffer.isBuffer(rawSeed)); |
| 91 | assert.strictEqual(rawSeed.byteLength, 32); |
| 92 | const importedPriv = createPrivateKey({ |
| 93 | key: rawSeed, format: 'raw-seed', asymmetricKeyType, |
| 94 | }); |
| 95 | assert.strictEqual(importedPriv.equals(key), true); |
| 96 | } else { |
| 97 | assert.strictEqual(key.export({ format: 'pem', type: 'pkcs8' }), keys.private_priv_only); |
| 98 | assert.throws(() => key.export({ format: 'jwk' }), |
| 99 | { code: 'ERR_CRYPTO_OPERATION_FAILED', message: 'key does not have an available seed' }); |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | if (!hasOpenSSL(3, 5) && !process.features.openssl_is_boringssl) { |
| 104 | assert.throws(() => createPublicKey(keys.public), { |
no test coverage detected
searching dependent graphs…