@ledgerhq/ledger-cal-service
Version:
Ledger CAL service client
60 lines • 1.68 kB
JavaScript
import network from "@ledgerhq/live-network";
import { DEFAULT_OPTION, getCALDomain } from "./common";
import { getEnv } from "@ledgerhq/live-env";
const DeviceModel = {
blue: "blue",
nanoS: "nanos",
nanoSP: "nanosp",
nanoX: "nanox",
stax: "stax",
/** Ledger Flex ("europa" is the internal name) */
europa: "flex",
flex: "flex",
apex: "apex",
};
function publicKeyIdOf(usage) {
switch (usage) {
case "trusted_name":
return "domain_metadata_key";
case "coin_meta":
return "token_metadata_key";
}
}
/**
* Retrieve PKI certificate
* @param device
*/
export async function getCertificate(device, usage, version = "latest", { env = "prod", signatureKind = "prod", ref = getEnv("CAL_REF") || undefined, } = DEFAULT_OPTION) {
let params = {
output: "id,target_device,not_valid_after,public_key_usage,certificate_version,descriptor",
target_device: DeviceModel[device],
public_key_usage: usage,
public_key_id: publicKeyIdOf(usage),
ref,
};
if (version === "latest") {
params = {
...params,
latest: true,
};
}
else {
params = {
...params,
not_valid_after: version,
};
}
const { data } = await network({
method: "GET",
url: `${getCALDomain(env)}/v1/certificates`,
params,
});
if (data.length === 0) {
throw new Error("Empty result");
}
return {
descriptor: data[0].descriptor.data,
signature: data[0].descriptor.signatures[signatureKind],
};
}
//# sourceMappingURL=certificate.js.map