(key)
| 74 | } |
| 75 | |
| 76 | function assertPrivateKey(key) { |
| 77 | assertKey(key); |
| 78 | assert.strictEqual(key.type, 'private'); |
| 79 | assertPublicKey(createPublicKey(key)); |
| 80 | key.export({ format: 'der', type: 'pkcs8' }); |
| 81 | assert.strictEqual(key.export({ format: 'pem', type: 'pkcs8' }), keys.private); |
| 82 | const jwk = key.export({ format: 'jwk' }); |
| 83 | assertPrivateJwk(jwk); |
| 84 | assert.strictEqual(key.equals(createPrivateKey({ format: 'jwk', key: jwk })), true); |
| 85 | assert.ok(createPublicKey({ format: 'jwk', key: jwk })); |
| 86 | |
| 87 | // Raw format round-trip |
| 88 | const rawPriv = key.export({ format: 'raw-private' }); |
| 89 | assert(Buffer.isBuffer(rawPriv)); |
| 90 | const importedPriv = createPrivateKey({ |
| 91 | key: rawPriv, format: 'raw-private', asymmetricKeyType, |
| 92 | }); |
| 93 | assert.strictEqual(importedPriv.equals(key), true); |
| 94 | assert.throws(() => createPrivateKey({ |
| 95 | key: rawPriv, format: 'raw-seed', asymmetricKeyType, |
| 96 | }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); |
| 97 | assert.throws(() => createPublicKey({ |
| 98 | key: rawPriv, format: 'raw-seed', asymmetricKeyType, |
| 99 | }), { code: 'ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS' }); |
| 100 | } |
| 101 | |
| 102 | if (!hasOpenSSL(3, 5)) { |
| 103 | assert.throws(() => createPublicKey(keys.public), { |
no test coverage detected