For the complete documentation index, see llms.txt. This page is also available as Markdown.

Generate ECDSA Key Pair

NOTE: Contact Quadrata via email to request submission of a new public key.

Generate an ECDSA DER key pair on the command line using OpenSSL


1) Generate a new private key and output to file as a PEM.

openssl ecparam -name prime256v1 -genkey -noout -out privkey.pem

2) Using your private key PEM, generate a private key DER and output to file.

openssl pkcs8 -topk8 -inform PEM -outform DER -in privkey.pem -out privkey.der -nocrypt

3) Using your private key DER, generate a public key DER and output to file.

openssl ec -inform der -in privkey.der -pubout -outform der -out pubkey.der

The keys generated from these commands, stored at privkey.der and pubkey.der are DER keys and will be in binary format. You will need to convert them to base64.

$ cat privkey.der | base64
$ cat pubkey.der | base64

Generate an ECDSA key pair with NodeJS

const buffer = require('buffer');
const crypto = require('crypto');

async function createEcdsaKeyPair() {	
    const keyPair = await crypto.subtle.generateKey(
        {
            name: 'ECDSA',
            namedCurve: 'P-256',
        },
        true,
        ['sign', 'verify'],
    );

    const publicKey = await crypto.subtle.exportKey('spki', keyPair.publicKey)
        .then((key) => {
            const publicKeyDer = String.fromCharCode
                .apply(null, new Uint8Array(key));
            const publicKey = Buffer.from(publicKeyDer, 'binary')
                .toString('base64');
            return publicKey;
        }
    );

    const privateKey = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey)
        .then((key) => {
            const privateKeyDer = String.fromCharCode
                .apply(null, new Uint8Array(key));
            const privateKey = Buffer.from(privateKeyDer, 'binary')
                .toString('base64');
            return privateKey;
        }
    );

    return { publicKey, privateKey };
}

Generate an ECDSA key pair with Python

Last updated