did-key-creator
Version:
This is a library for converting public keys to the did:key format
45 lines • 1.67 kB
JavaScript
import * as u8a from "uint8arrays";
import multicodec from "multicodec";
import { base58btc } from "multiformats/bases/base58";
export function ECPointCompress(x, y) {
const out = new Uint8Array(x.length + 1);
out[0] = 2 + (y[y.length - 1] & 1);
out.set(x, 1);
return out;
}
export function compressedKeyInHexfromRaw(publicKeyHex) {
const xHex = publicKeyHex.slice(0, publicKeyHex.length / 2);
const yHex = publicKeyHex.slice(publicKeyHex.length / 2, publicKeyHex.length);
const xOctet = u8a.fromString(xHex, "base16");
const yOctet = u8a.fromString(yHex, "base16");
const compressedPoint = ECPointCompress(xOctet, yOctet);
const compressedPointHex = u8a.toString(compressedPoint, "base16");
return compressedPointHex;
}
export function uncompressedKeyInHexfromRaw(publicKeyHex) {
return "04" + publicKeyHex;
}
export function rawKeyInHexfromUncompressed(publicKeyHex) {
return publicKeyHex.slice(2);
}
export function pubKeyHexToUint8Array(publicKeyHex) {
if (publicKeyHex == null) {
throw new TypeError("input cannot be null or undefined.");
}
if (publicKeyHex.length % 2 === 0) {
return u8a.fromString(publicKeyHex, "base16");
}
else {
return u8a.fromString("0" + publicKeyHex, "base16");
}
}
export function didKeyIDtoPubKeyHex(didKeyID) {
const buf = base58btc.decode(didKeyID);
const bufwoPrefix = multicodec.rmPrefix(buf);
return u8a.toString(bufwoPrefix, "base16");
}
export function didKeyURLtoPubKeyHex(didKeyURL) {
const didKeyID = didKeyURL.split(":")[2];
return didKeyIDtoPubKeyHex(didKeyID);
}
//# sourceMappingURL=did_key_utils.js.map