@gleif-it/did-webs-ts
Version:
did-webs typescript library
16 lines (15 loc) • 850 B
JavaScript
import * as R from 'remeda';
import { isValidEd25519Cesr } from '../validators/isValidEd25519Cesr.js';
import { isValidSecp256k1Cesr } from '../validators/isValidSecp256k1Cesr.js';
import { base64UrlToBytes } from '../conversions/base64UrlToBytes.js';
import { bytesToBase64Url } from '../conversions/bytesToBase64Url.js';
const decodeWith = (code) => (rawBytes) => rawBytes.slice(code.length === 4 ? 0 : code.length);
const parseCode = (encoded) => encoded[0] === '1' ? encoded.slice(4) : encoded;
const decode = (code, encoded) => R.pipe(encoded, parseCode, base64UrlToBytes, decodeWith(code));
export const decodeKey = (key) => {
if (isValidEd25519Cesr(key))
return bytesToBase64Url(decode('D', key));
if (isValidSecp256k1Cesr(key))
return bytesToBase64Url(decode('1AAA', key));
throw new Error("Can't decode key");
};