import { compressPoint } from "https://esm.town/v/vladimyr/libec";
import { bytesToMultibase, multibaseToBytes } from "https://esm.town/v/vladimyr/libmultibase";
import jcs from "npm:canonicalize";
import { base64url } from "npm:multiformats/bases/base64";
const jwk = {
kty: "EC",
crv: "P-256",
x: "MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4",
y: "4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM",
};
const compressed = compressPoint({
x: base64url.baseDecode(jwk.x),
y: base64url.baseDecode(jwk.y),
});
const publicKeyMultibase1 = bytesToMultibase(compressed, jwk.crv);
console.log(publicKeyMultibase1);
const canonicalizedJWK = jcs(jwk);
console.log(canonicalizedJWK);
const bytes = new TextEncoder().encode(canonicalizedJWK);
const publicKeyMultibase2 = bytesToMultibase(bytes, "JWK-JCS");
console.log(publicKeyMultibase2);
const extractedJWK = JSON.parse(
new TextDecoder().decode(
multibaseToBytes(publicKeyMultibase2).keyBytes,
),
);
console.log(JSON.stringify(extractedJWK));