UNPKG

@ceramicnetwork/common

Version:
66 lines 2.09 kB
export class CeramicSigner { constructor(reqs) { this.isAuthenticated = false; this.reqs = reqs; } get signer() { return this; } static invalid() { return new CeramicSigner(); } static fromDID(did) { const signer = new CeramicSigner(); signer.withDid(did); return signer; } withDid(did) { this.reqs = { createDagJWS: (payload, options) => did.createDagJWS(payload, options), createJWS: (payload, options) => did.createJWS(payload, options), verifyJWS: (payload, options) => did.verifyJWS(payload, options), async ensureAuthenticated() { if (!did.authenticated) { await did.authenticate(); } }, async asController() { return did.hasParent ? did.parent : did.id; }, }; } assertRequirements() { if (!this.reqs) { return Promise.reject('Requirements not met for signing. Was a DID set?'); } } async createJWS(payload, options) { await this.assertRequirements(); if (!this.isAuthenticated) { await this.reqs.ensureAuthenticated(); this.isAuthenticated = true; } return this.reqs.createJWS(payload, options); } async createDagJWS(payload, options) { await this.assertRequirements(); if (!this.isAuthenticated) { await this.reqs.ensureAuthenticated(); this.isAuthenticated = true; } return this.reqs.createDagJWS(payload, options); } async asController() { await this.assertRequirements(); if (!this.isAuthenticated) { await this.reqs.ensureAuthenticated(); this.isAuthenticated = true; } return this.reqs.asController(); } async verifyJWS(jws, options) { await this.assertRequirements(); return this.reqs.verifyJWS(jws, options); } } //# sourceMappingURL=ceramic-signer.js.map