enable import/export raw ec-keys
armfazh opened this issue · 3 comments
armfazh commented
currently importKey
and exportKey
methods work only on public keys, but not on privateKeys.
microshine commented
Chrome doesn't support raw
format for EC private key.
Script
var keys = await crypto.subtle.generateKey({name: "ECDSA", namedCurve: "P-256"}, true, ["sign", "verify"]);
var raw = await crypto.subtle.exportKey("raw", keys.privateKey); // Error
var raw = await crypto.subtle.exportKey("raw", keys.publicKey);
console.log(raw);
@peculiar/webcrypto
throws AsnSchemaValidationError
. Maybe it should be better to use a custom error for that.
AsnSchemaValidationError: Data does not match to PublicKeyInfo ASN1 schema.
at Function.fromASN (/Users/microshine/github/pv/webcrypto/node_modules/@peculiar/asn1-schema/build/cjs/parser.js:56:23)
at Function.parse (/Users/microshine/github/pv/webcrypto/node_modules/@peculiar/asn1-schema/build/cjs/parser.js:29:26)
at Function.exportKey (/Users/microshine/github/pv/webcrypto/build/webcrypto.js:1449:60)
at EcdsaProvider.onExportKey (/Users/microshine/github/pv/webcrypto/build/webcrypto.js:1578:25)
at EcdsaProvider.exportKey (/Users/microshine/github/pv/webcrypto/node_modules/webcrypto-core/build/webcrypto-core.js:203:33)
at SubtleCrypto.exportKey (/Users/microshine/github/pv/webcrypto/node_modules/webcrypto-core/build/webcrypto-core.js:838:39)
at main (/Users/microshine/github/pv/webcrypto/test.ts:7:35) {
schemas: [ 'PublicKeyInfo' ]
}
@armfazh Do you have any ideas how EC private key raw must look like?
armfazh commented
Do you have any ideas how EC private key raw must look like?
For P-256, it's an arraybuffer of 32 bytes.
armfazh commented
after RTFM specification: https://www.w3.org/TR/WebCryptoAPI/#ecdsa-operations
Private keys cannot be exported in raw
format, but they can be exported as jwk
or pkcs8
.
closing.