UNPKG

did-key-creator

Version:

This is a library for converting public keys to the did:key format

45 lines 1.67 kB
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