wallet-storage
Version:
BRC100 conforming wallet, wallet storage and wallet signer components
45 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.proveCertificate = proveCertificate;
const index_client_1 = require("../../index.client");
async function proveCertificate(wallet, auth, vargs) {
const lcargs = {
partial: {
type: vargs.type,
serialNumber: vargs.serialNumber,
certifier: vargs.certifier,
subject: vargs.subject,
revocationOutpoint: vargs.revocationOutpoint,
signature: vargs.signature,
},
certifiers: [],
types: [],
limit: 2,
offset: 0,
privileged: false
};
const lcr = await wallet.storage.listCertificates(lcargs);
if (lcr.certificates.length != 1)
throw new index_client_1.sdk.WERR_INVALID_PARAMETER('args', `a unique certificate match`);
const storageCert = lcr.certificates[0];
let proveWallet = wallet;
if (storageCert.subject != wallet.identityKey) {
// Certificate must have been issued to privileged identity
if (!wallet.privilegedKeyManager)
throw new index_client_1.sdk.WERR_INVALID_OPERATION('Wallet is not privileged. proveCertificate fails.');
proveWallet = wallet.privilegedKeyManager;
}
const co = await index_client_1.sdk.CertOps.fromCounterparty(proveWallet, {
certificate: { ...storageCert },
keyring: storageCert.keyring,
counterparty: storageCert.verifier || storageCert.subject
});
const e = await co.exportForCounterparty(vargs.verifier, vargs.fieldsToReveal);
const pr = {
certificate: e.certificate,
verifier: e.counterparty,
keyringForVerifier: e.keyring
};
return pr;
}
//# sourceMappingURL=proveCertificate.js.map