I don't know if it's the same thing, but http://instantbird.com/download-1.3.html says
SASL authentication is now supported, this is required for certain IP ranges or when using Tor and connecting to Freenode.
The uncompressed form is indicated by 0x04 ...
which means you need to do something like the following to get the string to set with nickserv,
{{{
crypto.subtle.exportKey("raw", kp.publicKey).then(function(ab) {
// the first byte of ab indicates the form
let v = new Uint8Array(ab);
let u = v.slice(0, 33); // +1 here for the compressed point
u[0] = 2 + (v[v.length - 1] & 1);
let s = String.fromCharCode.apply(null, u);
console.log(btoa(s));
});
}}}
(note, to retrieve the uncompressed point from a PEM, openssl ec -noout -text -conv_form uncompressed -in test.pem)
The returned signature from crypto.subtle.sign is a byte array of concatenated r,s values, but the protocol wants a base64 encoding of the DER formatted signature. A library like https://github.com/Brightspace/node-ecdsa-sig-formatter is useful, once you change the Buffer calls to use Uint8Array APIs.
To use it, take the tool linked to above and follow its readme. Then, do ecdsatool keyinfo test.pem and copy the priv hex pairs but remove the newlines and colons. Add the preference messenger.account.accountN.ecdsa in the Tor Messenger config editor, and connect.
There's a bug in the JavaScript in the wiki notes that drops the leading zero from any 0x0n byte when hex-encoding the private key. This explains the mystery of the broken keypairs raised on IRC.