@swimmingkiim/trust-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/agent.d.ts +8 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +71 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/credentials/vc-handler.service.d.ts +10 -0
  6. package/dist/credentials/vc-handler.service.d.ts.map +1 -0
  7. package/dist/credentials/vc-handler.service.js +39 -0
  8. package/dist/credentials/vc-handler.service.js.map +1 -0
  9. package/dist/identity/did-manager.d.ts +6 -0
  10. package/dist/identity/did-manager.d.ts.map +1 -0
  11. package/dist/identity/did-manager.js +27 -0
  12. package/dist/identity/did-manager.js.map +1 -0
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +20 -0
  16. package/dist/index.js.map +1 -0
  17. package/package.json +41 -0
  18. package/src/agent.d.ts +7 -0
  19. package/src/agent.d.ts.map +1 -0
  20. package/src/agent.js +69 -0
  21. package/src/agent.js.map +1 -0
  22. package/src/agent.ts +72 -0
  23. package/src/credentials/vc-handler.d.ts +6 -0
  24. package/src/credentials/vc-handler.d.ts.map +1 -0
  25. package/src/credentials/vc-handler.js +30 -0
  26. package/src/credentials/vc-handler.js.map +1 -0
  27. package/src/credentials/vc-handler.service.ts +45 -0
  28. package/src/identity/did-manager.d.ts +6 -0
  29. package/src/identity/did-manager.d.ts.map +1 -0
  30. package/src/identity/did-manager.js +27 -0
  31. package/src/identity/did-manager.js.map +1 -0
  32. package/src/identity/did-manager.ts +25 -0
  33. package/src/index.d.ts +4 -0
  34. package/src/index.d.ts.map +1 -0
  35. package/src/index.js +20 -0
  36. package/src/index.js.map +1 -0
  37. package/src/index.ts +3 -0
  38. package/test/identity.security.test.ts +68 -0
  39. package/test/identity.test.ts +69 -0
  40. package/test/verify.ts +44 -0
  41. package/tsconfig.json +16 -0
  42. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,8 @@
1
+ import { IResolver, IDataStore, IKeyManager, IDIDManager, TAgent } from '@veramo/core';
2
+ import { ICredentialIssuer, ICredentialVerifier } from '@veramo/credential-w3c';
3
+ import { IDataStoreORM } from '@veramo/data-store';
4
+ import 'reflect-metadata';
5
+ export type Agent = TAgent<IDIDManager & IKeyManager & IDataStore & IDataStoreORM & IResolver & ICredentialIssuer & ICredentialVerifier>;
6
+ export declare const agent: Agent;
7
+ export declare const initAgent: () => Promise<Agent>;
8
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACnG,OAAO,EAAoB,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAOjG,OAAO,EAAiD,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAK1H,OAAO,kBAAkB,CAAA;AAEzB,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAA;AAaxI,eAAO,MAAM,KAAK,EAAE,KAoClB,CAAA;AAEF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,KAAK,CAK/C,CAAA"}
package/dist/agent.js ADDED
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initAgent = exports.agent = void 0;
4
+ const core_1 = require("@veramo/core");
5
+ const credential_w3c_1 = require("@veramo/credential-w3c");
6
+ const did_manager_1 = require("@veramo/did-manager");
7
+ const did_provider_ethr_1 = require("@veramo/did-provider-ethr");
8
+ const did_provider_key_1 = require("@veramo/did-provider-key");
9
+ const did_resolver_1 = require("@veramo/did-resolver");
10
+ const key_manager_1 = require("@veramo/key-manager");
11
+ const kms_local_1 = require("@veramo/kms-local");
12
+ const data_store_1 = require("@veramo/data-store");
13
+ const did_resolver_2 = require("did-resolver");
14
+ const ethr_did_resolver_1 = require("ethr-did-resolver");
15
+ const key_did_resolver_1 = require("key-did-resolver");
16
+ const typeorm_1 = require("typeorm");
17
+ require("reflect-metadata");
18
+ const DATABASE_FILE = '/tmp/database.sqlite';
19
+ const SECRET_KEY = '29739248cad1bd5a625441a0d8ba398e'; // TODO: Load from env
20
+ const dbConnection = new typeorm_1.DataSource({
21
+ type: 'sqlite',
22
+ database: DATABASE_FILE,
23
+ synchronize: true,
24
+ logging: false,
25
+ entities: data_store_1.Entities,
26
+ });
27
+ exports.agent = (0, core_1.createAgent)({
28
+ plugins: [
29
+ new key_manager_1.KeyManager({
30
+ store: new data_store_1.KeyStore(dbConnection),
31
+ kms: {
32
+ local: new kms_local_1.KeyManagementSystem(new data_store_1.PrivateKeyStore(dbConnection, new kms_local_1.SecretBox(SECRET_KEY))),
33
+ },
34
+ }),
35
+ new did_manager_1.DIDManager({
36
+ store: new data_store_1.DIDStore(dbConnection),
37
+ defaultProvider: 'did:key',
38
+ providers: {
39
+ 'did:ethr': new did_provider_ethr_1.EthrDIDProvider({
40
+ defaultKms: 'local',
41
+ network: 'base-sepolia',
42
+ rpcUrl: 'https://sepolia.base.org', // TODO: Load from env
43
+ }),
44
+ 'did:key': new did_provider_key_1.KeyDIDProvider({
45
+ defaultKms: 'local',
46
+ }),
47
+ },
48
+ }),
49
+ new did_resolver_1.DIDResolverPlugin({
50
+ resolver: new did_resolver_2.Resolver({
51
+ ...(0, ethr_did_resolver_1.getResolver)({
52
+ networks: [
53
+ { name: 'base-sepolia', rpcUrl: 'https://sepolia.base.org' }
54
+ ]
55
+ }),
56
+ ...(0, key_did_resolver_1.getResolver)(),
57
+ }),
58
+ }),
59
+ new credential_w3c_1.CredentialPlugin(),
60
+ new data_store_1.DataStore(dbConnection),
61
+ new data_store_1.DataStoreORM(dbConnection),
62
+ ],
63
+ });
64
+ const initAgent = async () => {
65
+ if (!dbConnection.isInitialized) {
66
+ await dbConnection.initialize();
67
+ }
68
+ return exports.agent;
69
+ };
70
+ exports.initAgent = initAgent;
71
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;AAAA,uCAAmG;AACnG,2DAAiG;AACjG,qDAAgD;AAChD,iEAA2D;AAC3D,+DAAyD;AACzD,uDAAwD;AACxD,qDAAgD;AAChD,iDAAkE;AAClE,mDAA0H;AAC1H,+CAAuC;AACvC,yDAAkE;AAClE,uDAAgE;AAChE,qCAAoC;AACpC,4BAAyB;AAIzB,MAAM,aAAa,GAAG,sBAAsB,CAAA;AAC5C,MAAM,UAAU,GAAG,kCAAkC,CAAA,CAAC,sBAAsB;AAE5E,MAAM,YAAY,GAAG,IAAI,oBAAU,CAAC;IAChC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,qBAAQ;CACrB,CAAC,CAAA;AAEW,QAAA,KAAK,GAAU,IAAA,kBAAW,EAA+G;IAClJ,OAAO,EAAE;QACL,IAAI,wBAAU,CAAC;YACX,KAAK,EAAE,IAAI,qBAAQ,CAAC,YAAY,CAAC;YACjC,GAAG,EAAE;gBACD,KAAK,EAAE,IAAI,+BAAmB,CAAC,IAAI,4BAAe,CAAC,YAAY,EAAE,IAAI,qBAAS,CAAC,UAAU,CAAC,CAAC,CAAC;aAC/F;SACJ,CAAC;QACF,IAAI,wBAAU,CAAC;YACX,KAAK,EAAE,IAAI,qBAAQ,CAAC,YAAY,CAAC;YACjC,eAAe,EAAE,SAAS;YAC1B,SAAS,EAAE;gBACP,UAAU,EAAE,IAAI,mCAAe,CAAC;oBAC5B,UAAU,EAAE,OAAO;oBACnB,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,0BAA0B,EAAE,sBAAsB;iBAC7D,CAAC;gBACF,SAAS,EAAE,IAAI,iCAAc,CAAC;oBAC1B,UAAU,EAAE,OAAO;iBACtB,CAAC;aACL;SACJ,CAAC;QACF,IAAI,gCAAiB,CAAC;YAClB,QAAQ,EAAE,IAAI,uBAAQ,CAAC;gBACnB,GAAG,IAAA,+BAAe,EAAC;oBACf,QAAQ,EAAE;wBACN,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,0BAA0B,EAAE;qBAC/D;iBACJ,CAAC;gBACF,GAAG,IAAA,8BAAc,GAAE;aACtB,CAAC;SACL,CAAC;QACF,IAAI,iCAAgB,EAAE;QACtB,IAAI,sBAAS,CAAC,YAAY,CAAC;QAC3B,IAAI,yBAAY,CAAC,YAAY,CAAC;KACjC;CACJ,CAAC,CAAA;AAEK,MAAM,SAAS,GAAG,KAAK,IAAoB,EAAE;IAChD,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;IACnC,CAAC;IACD,OAAO,aAAK,CAAA;AAChB,CAAC,CAAA;AALY,QAAA,SAAS,aAKrB"}
@@ -0,0 +1,10 @@
1
+ import { Agent } from '../agent';
2
+ import { VerifiableCredential } from '@veramo/core';
3
+ export declare class VCHandler {
4
+ private agent?;
5
+ constructor(agent?: Agent);
6
+ private getAgent;
7
+ createCredential(issuerDid: string, subjectDid: string, claims: Record<string, any>): Promise<VerifiableCredential>;
8
+ verifyCredential(vcJwt: string): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=vc-handler.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vc-handler.service.d.ts","sourceRoot":"","sources":["../../src/credentials/vc-handler.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,qBAAa,SAAS;IAClB,OAAO,CAAC,KAAK,CAAC,CAAO;gBAET,KAAK,CAAC,EAAE,KAAK;YAIX,QAAQ;IAKhB,gBAAgB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IAkB1B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAO1D"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VCHandler = void 0;
4
+ const agent_1 = require("../agent");
5
+ class VCHandler {
6
+ agent;
7
+ constructor(agent) {
8
+ this.agent = agent;
9
+ }
10
+ async getAgent() {
11
+ if (this.agent)
12
+ return this.agent;
13
+ return await (0, agent_1.initAgent)();
14
+ }
15
+ async createCredential(issuerDid, subjectDid, claims) {
16
+ const agent = await this.getAgent();
17
+ const credential = await agent.createVerifiableCredential({
18
+ credential: {
19
+ issuer: { id: issuerDid },
20
+ credentialSubject: {
21
+ id: subjectDid,
22
+ ...claims
23
+ }
24
+ },
25
+ proofFormat: 'jwt',
26
+ save: true
27
+ });
28
+ return credential;
29
+ }
30
+ async verifyCredential(vcJwt) {
31
+ const agent = await this.getAgent();
32
+ const result = await agent.verifyCredential({
33
+ credential: vcJwt
34
+ });
35
+ return result.verified;
36
+ }
37
+ }
38
+ exports.VCHandler = VCHandler;
39
+ //# sourceMappingURL=vc-handler.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vc-handler.service.js","sourceRoot":"","sources":["../../src/credentials/vc-handler.service.ts"],"names":[],"mappings":";;;AAAA,oCAA2C;AAG3C,MAAa,SAAS;IACV,KAAK,CAAQ;IAErB,YAAY,KAAa;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;IAEO,KAAK,CAAC,QAAQ;QAClB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAA;QACjC,OAAO,MAAM,IAAA,iBAAS,GAAE,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,SAAiB,EACjB,UAAkB,EAClB,MAA2B;QAE3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEnC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC;YACtD,UAAU,EAAE;gBACR,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACzB,iBAAiB,EAAE;oBACf,EAAE,EAAE,UAAU;oBACd,GAAG,MAAM;iBACZ;aACJ;YACD,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACnC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YACxC,UAAU,EAAE,KAAK;SACpB,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,QAAQ,CAAA;IAC1B,CAAC;CACJ;AAzCD,8BAyCC"}
@@ -0,0 +1,6 @@
1
+ export declare class IdentityManager {
2
+ createEphemeralDID(): Promise<import("@veramo/core").IIdentifier>;
3
+ createPersistentDID(alias?: string): Promise<import("@veramo/core").IIdentifier>;
4
+ resolveDID(did: string): Promise<import("did-resolver").DIDResolutionResult>;
5
+ }
6
+ //# sourceMappingURL=did-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-manager.d.ts","sourceRoot":"","sources":["../../src/identity/did-manager.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAClB,kBAAkB;IAQlB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM;IASlC,UAAU,CAAC,GAAG,EAAE,MAAM;CAI/B"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentityManager = void 0;
4
+ const agent_1 = require("../agent");
5
+ class IdentityManager {
6
+ async createEphemeralDID() {
7
+ const agent = await (0, agent_1.initAgent)();
8
+ const identifier = await agent.didManagerCreate({
9
+ provider: 'did:key'
10
+ });
11
+ return identifier;
12
+ }
13
+ async createPersistentDID(alias) {
14
+ const agent = await (0, agent_1.initAgent)();
15
+ const identifier = await agent.didManagerCreate({
16
+ provider: 'did:ethr',
17
+ alias
18
+ });
19
+ return identifier;
20
+ }
21
+ async resolveDID(did) {
22
+ const agent = await (0, agent_1.initAgent)();
23
+ return await agent.resolveDid({ didUrl: did });
24
+ }
25
+ }
26
+ exports.IdentityManager = IdentityManager;
27
+ //# sourceMappingURL=did-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-manager.js","sourceRoot":"","sources":["../../src/identity/did-manager.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAEpC,MAAa,eAAe;IACxB,KAAK,CAAC,kBAAkB;QACpB,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YAC5C,QAAQ,EAAE,SAAS;SACtB,CAAC,CAAA;QACF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAc;QACpC,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YAC5C,QAAQ,EAAE,UAAU;YACpB,KAAK;SACR,CAAC,CAAA;QACF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QACxB,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,OAAO,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAClD,CAAC;CACJ;AAtBD,0CAsBC"}
@@ -0,0 +1,4 @@
1
+ export * from './identity/did-manager';
2
+ export * from './credentials/vc-handler.service';
3
+ export * from './agent';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,kCAAkC,CAAA;AAChD,cAAc,SAAS,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./identity/did-manager"), exports);
18
+ __exportStar(require("./credentials/vc-handler.service"), exports);
19
+ __exportStar(require("./agent"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,mEAAgD;AAChD,0CAAuB"}
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "@swimmingkiim/trust-sdk",
3
+ "version": "0.1.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js",
10
+ "require": "./dist/index.js"
11
+ }
12
+ },
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "test": "echo \"Error: no test specified\" && exit 1"
16
+ },
17
+ "dependencies": {
18
+ "@veramo/core": "^6.0.2",
19
+ "@veramo/credential-w3c": "^6.0.2",
20
+ "@veramo/data-store": "^6.0.2",
21
+ "@veramo/did-manager": "^6.0.2",
22
+ "@veramo/did-provider-ethr": "^6.0.2",
23
+ "@veramo/did-provider-key": "^6.0.2",
24
+ "@veramo/did-resolver": "^6.0.2",
25
+ "@veramo/key-manager": "^6.0.2",
26
+ "@veramo/kms-local": "^6.0.2",
27
+ "did-jwt-vc": "^3.2.0",
28
+ "did-resolver": "^4.1.0",
29
+ "ethers": "^6.11.1",
30
+ "ethr-did-resolver": "^11.0.5",
31
+ "key-did-resolver": "^4.0.0",
32
+ "reflect-metadata": "^0.2.2",
33
+ "sqlite3": "^5.1.7",
34
+ "ts-node": "^10.9.2",
35
+ "typeorm": "^0.3.28"
36
+ },
37
+ "devDependencies": {
38
+ "tsx": "^4.21.0",
39
+ "typescript": "^5.3.3"
40
+ }
41
+ }
package/src/agent.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { IResolver, IDataStore, IKeyManager, IDIDManager, TAgent } from '@veramo/core';
2
+ import { IDataStoreORM } from '@veramo/data-store';
3
+ import 'reflect-metadata';
4
+ export type Agent = TAgent<IDIDManager & IKeyManager & IDataStore & IDataStoreORM & IResolver>;
5
+ export declare const agent: Agent;
6
+ export declare const initAgent: () => Promise<Agent>;
7
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAOnG,OAAO,EAAiD,aAAa,EAA2B,MAAM,oBAAoB,CAAA;AAK1H,OAAO,kBAAkB,CAAA;AAEzB,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC,CAAA;AAa9F,eAAO,MAAM,KAAK,EAAE,KAmClB,CAAA;AAEF,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,KAAK,CAK/C,CAAA"}
package/src/agent.js ADDED
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initAgent = exports.agent = void 0;
4
+ const core_1 = require("@veramo/core");
5
+ const did_manager_1 = require("@veramo/did-manager");
6
+ const did_provider_ethr_1 = require("@veramo/did-provider-ethr");
7
+ const did_provider_key_1 = require("@veramo/did-provider-key");
8
+ const did_resolver_1 = require("@veramo/did-resolver");
9
+ const key_manager_1 = require("@veramo/key-manager");
10
+ const kms_local_1 = require("@veramo/kms-local");
11
+ const data_store_1 = require("@veramo/data-store");
12
+ const did_resolver_2 = require("did-resolver");
13
+ const ethr_did_resolver_1 = require("ethr-did-resolver");
14
+ const key_did_resolver_1 = require("key-did-resolver");
15
+ const typeorm_1 = require("typeorm");
16
+ require("reflect-metadata");
17
+ const DATABASE_FILE = '/tmp/database.sqlite';
18
+ const SECRET_KEY = '29739248cad1bd5a625441a0d8ba398e'; // TODO: Load from env
19
+ const dbConnection = new typeorm_1.DataSource({
20
+ type: 'sqlite',
21
+ database: DATABASE_FILE,
22
+ synchronize: true,
23
+ logging: false,
24
+ entities: data_store_1.Entities,
25
+ });
26
+ exports.agent = (0, core_1.createAgent)({
27
+ plugins: [
28
+ new key_manager_1.KeyManager({
29
+ store: new data_store_1.KeyStore(dbConnection),
30
+ kms: {
31
+ local: new kms_local_1.KeyManagementSystem(new data_store_1.PrivateKeyStore(dbConnection, new kms_local_1.SecretBox(SECRET_KEY))),
32
+ },
33
+ }),
34
+ new did_manager_1.DIDManager({
35
+ store: new data_store_1.DIDStore(dbConnection),
36
+ defaultProvider: 'did:key',
37
+ providers: {
38
+ 'did:ethr': new did_provider_ethr_1.EthrDIDProvider({
39
+ defaultKms: 'local',
40
+ network: 'base-sepolia',
41
+ rpcUrl: 'https://sepolia.base.org', // TODO: Load from env
42
+ }),
43
+ 'did:key': new did_provider_key_1.KeyDIDProvider({
44
+ defaultKms: 'local',
45
+ }),
46
+ },
47
+ }),
48
+ new did_resolver_1.DIDResolverPlugin({
49
+ resolver: new did_resolver_2.Resolver({
50
+ ...(0, ethr_did_resolver_1.getResolver)({
51
+ networks: [
52
+ { name: 'base-sepolia', rpcUrl: 'https://sepolia.base.org' }
53
+ ]
54
+ }),
55
+ ...(0, key_did_resolver_1.getResolver)(),
56
+ }),
57
+ }),
58
+ new data_store_1.DataStore(dbConnection),
59
+ new data_store_1.DataStoreORM(dbConnection),
60
+ ],
61
+ });
62
+ const initAgent = async () => {
63
+ if (!dbConnection.isInitialized) {
64
+ await dbConnection.initialize();
65
+ }
66
+ return exports.agent;
67
+ };
68
+ exports.initAgent = initAgent;
69
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["agent.ts"],"names":[],"mappings":";;;AAAA,uCAAmG;AACnG,qDAAgD;AAChD,iEAA2D;AAC3D,+DAAyD;AACzD,uDAAwD;AACxD,qDAAgD;AAChD,iDAAkE;AAClE,mDAA0H;AAC1H,+CAAuC;AACvC,yDAAkE;AAClE,uDAAgE;AAChE,qCAAoC;AACpC,4BAAyB;AAIzB,MAAM,aAAa,GAAG,sBAAsB,CAAA;AAC5C,MAAM,UAAU,GAAG,kCAAkC,CAAA,CAAC,sBAAsB;AAE5E,MAAM,YAAY,GAAG,IAAI,oBAAU,CAAC;IAChC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,qBAAQ;CACrB,CAAC,CAAA;AAEW,QAAA,KAAK,GAAU,IAAA,kBAAW,EAAqE;IACxG,OAAO,EAAE;QACL,IAAI,wBAAU,CAAC;YACX,KAAK,EAAE,IAAI,qBAAQ,CAAC,YAAY,CAAC;YACjC,GAAG,EAAE;gBACD,KAAK,EAAE,IAAI,+BAAmB,CAAC,IAAI,4BAAe,CAAC,YAAY,EAAE,IAAI,qBAAS,CAAC,UAAU,CAAC,CAAC,CAAC;aAC/F;SACJ,CAAC;QACF,IAAI,wBAAU,CAAC;YACX,KAAK,EAAE,IAAI,qBAAQ,CAAC,YAAY,CAAC;YACjC,eAAe,EAAE,SAAS;YAC1B,SAAS,EAAE;gBACP,UAAU,EAAE,IAAI,mCAAe,CAAC;oBAC5B,UAAU,EAAE,OAAO;oBACnB,OAAO,EAAE,cAAc;oBACvB,MAAM,EAAE,0BAA0B,EAAE,sBAAsB;iBAC7D,CAAC;gBACF,SAAS,EAAE,IAAI,iCAAc,CAAC;oBAC1B,UAAU,EAAE,OAAO;iBACtB,CAAC;aACL;SACJ,CAAC;QACF,IAAI,gCAAiB,CAAC;YAClB,QAAQ,EAAE,IAAI,uBAAQ,CAAC;gBACnB,GAAG,IAAA,+BAAe,EAAC;oBACf,QAAQ,EAAE;wBACN,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,0BAA0B,EAAE;qBAC/D;iBACJ,CAAC;gBACF,GAAG,IAAA,8BAAc,GAAE;aACtB,CAAC;SACL,CAAC;QACF,IAAI,sBAAS,CAAC,YAAY,CAAC;QAC3B,IAAI,yBAAY,CAAC,YAAY,CAAC;KACjC;CACJ,CAAC,CAAA;AAEK,MAAM,SAAS,GAAG,KAAK,IAAoB,EAAE;IAChD,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,YAAY,CAAC,UAAU,EAAE,CAAA;IACnC,CAAC;IACD,OAAO,aAAK,CAAA;AAChB,CAAC,CAAA;AALY,QAAA,SAAS,aAKrB"}
package/src/agent.ts ADDED
@@ -0,0 +1,72 @@
1
+ import { createAgent, IResolver, IDataStore, IKeyManager, IDIDManager, TAgent } from '@veramo/core'
2
+ import { CredentialPlugin, ICredentialIssuer, ICredentialVerifier } from '@veramo/credential-w3c'
3
+ import { DIDManager } from '@veramo/did-manager'
4
+ import { EthrDIDProvider } from '@veramo/did-provider-ethr'
5
+ import { KeyDIDProvider } from '@veramo/did-provider-key'
6
+ import { DIDResolverPlugin } from '@veramo/did-resolver'
7
+ import { KeyManager } from '@veramo/key-manager'
8
+ import { KeyManagementSystem, SecretBox } from '@veramo/kms-local'
9
+ import { Entities, KeyStore, DIDStore, PrivateKeyStore, IDataStoreORM, DataStore, DataStoreORM } from '@veramo/data-store'
10
+ import { Resolver } from 'did-resolver'
11
+ import { getResolver as ethrDidResolver } from 'ethr-did-resolver'
12
+ import { getResolver as keyDidResolver } from 'key-did-resolver'
13
+ import { DataSource } from 'typeorm'
14
+ import 'reflect-metadata'
15
+
16
+ export type Agent = TAgent<IDIDManager & IKeyManager & IDataStore & IDataStoreORM & IResolver & ICredentialIssuer & ICredentialVerifier>
17
+
18
+ const DATABASE_FILE = '/tmp/database.sqlite'
19
+ const SECRET_KEY = '29739248cad1bd5a625441a0d8ba398e' // TODO: Load from env
20
+
21
+ const dbConnection = new DataSource({
22
+ type: 'sqlite',
23
+ database: DATABASE_FILE,
24
+ synchronize: true,
25
+ logging: false,
26
+ entities: Entities,
27
+ })
28
+
29
+ export const agent: Agent = createAgent<IDIDManager & IKeyManager & IDataStore & IDataStoreORM & IResolver & ICredentialIssuer & ICredentialVerifier>({
30
+ plugins: [
31
+ new KeyManager({
32
+ store: new KeyStore(dbConnection),
33
+ kms: {
34
+ local: new KeyManagementSystem(new PrivateKeyStore(dbConnection, new SecretBox(SECRET_KEY))),
35
+ },
36
+ }),
37
+ new DIDManager({
38
+ store: new DIDStore(dbConnection),
39
+ defaultProvider: 'did:key',
40
+ providers: {
41
+ 'did:ethr': new EthrDIDProvider({
42
+ defaultKms: 'local',
43
+ network: 'base-sepolia',
44
+ rpcUrl: 'https://sepolia.base.org', // TODO: Load from env
45
+ }),
46
+ 'did:key': new KeyDIDProvider({
47
+ defaultKms: 'local',
48
+ }),
49
+ },
50
+ }),
51
+ new DIDResolverPlugin({
52
+ resolver: new Resolver({
53
+ ...ethrDidResolver({
54
+ networks: [
55
+ { name: 'base-sepolia', rpcUrl: 'https://sepolia.base.org' }
56
+ ]
57
+ }),
58
+ ...keyDidResolver(),
59
+ }),
60
+ }),
61
+ new CredentialPlugin(),
62
+ new DataStore(dbConnection),
63
+ new DataStoreORM(dbConnection),
64
+ ],
65
+ })
66
+
67
+ export const initAgent = async (): Promise<Agent> => {
68
+ if (!dbConnection.isInitialized) {
69
+ await dbConnection.initialize()
70
+ }
71
+ return agent
72
+ }
@@ -0,0 +1,6 @@
1
+ import { VerifiableCredential } from '@veramo/core';
2
+ export declare class VCHandler {
3
+ createCredential(issuerDid: string, subjectDid: string, claims: Record<string, any>): Promise<VerifiableCredential>;
4
+ verifyCredential(vcJwt: string): Promise<boolean>;
5
+ }
6
+ //# sourceMappingURL=vc-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vc-handler.d.ts","sourceRoot":"","sources":["vc-handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,qBAAa,SAAS;IACZ,gBAAgB,CAClB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,oBAAoB,CAAC;IAkB1B,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAO1D"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VCHandler = void 0;
4
+ const agent_1 = require("../agent");
5
+ class VCHandler {
6
+ async createCredential(issuerDid, subjectDid, claims) {
7
+ const agent = await (0, agent_1.initAgent)();
8
+ const credential = await agent.createVerifiableCredential({
9
+ credential: {
10
+ issuer: { id: issuerDid },
11
+ credentialSubject: {
12
+ id: subjectDid,
13
+ ...claims
14
+ }
15
+ },
16
+ proofFormat: 'jwt',
17
+ save: true
18
+ });
19
+ return credential;
20
+ }
21
+ async verifyCredential(vcJwt) {
22
+ const agent = await (0, agent_1.initAgent)();
23
+ const result = await agent.verifyCredential({
24
+ credential: vcJwt
25
+ });
26
+ return result.verified;
27
+ }
28
+ }
29
+ exports.VCHandler = VCHandler;
30
+ //# sourceMappingURL=vc-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vc-handler.js","sourceRoot":"","sources":["vc-handler.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAGpC,MAAa,SAAS;IAClB,KAAK,CAAC,gBAAgB,CAClB,SAAiB,EACjB,UAAkB,EAClB,MAA2B;QAE3B,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAE/B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,0BAA0B,CAAC;YACtD,UAAU,EAAE;gBACR,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACzB,iBAAiB,EAAE;oBACf,EAAE,EAAE,UAAU;oBACd,GAAG,MAAM;iBACZ;aACJ;YACD,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,IAAI;SACb,CAAC,CAAA;QAEF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAa;QAChC,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YACxC,UAAU,EAAE,KAAK;SACpB,CAAC,CAAA;QACF,OAAO,MAAM,CAAC,QAAQ,CAAA;IAC1B,CAAC;CACJ;AA9BD,8BA8BC"}
@@ -0,0 +1,45 @@
1
+ import { initAgent, Agent } from '../agent'
2
+ import { VerifiableCredential } from '@veramo/core'
3
+
4
+ export class VCHandler {
5
+ private agent?: Agent
6
+
7
+ constructor(agent?: Agent) {
8
+ this.agent = agent
9
+ }
10
+
11
+ private async getAgent(): Promise<Agent> {
12
+ if (this.agent) return this.agent
13
+ return await initAgent()
14
+ }
15
+
16
+ async createCredential(
17
+ issuerDid: string,
18
+ subjectDid: string,
19
+ claims: Record<string, any>
20
+ ): Promise<VerifiableCredential> {
21
+ const agent = await this.getAgent()
22
+
23
+ const credential = await agent.createVerifiableCredential({
24
+ credential: {
25
+ issuer: { id: issuerDid },
26
+ credentialSubject: {
27
+ id: subjectDid,
28
+ ...claims
29
+ }
30
+ },
31
+ proofFormat: 'jwt',
32
+ save: true
33
+ })
34
+
35
+ return credential
36
+ }
37
+
38
+ async verifyCredential(vcJwt: string): Promise<boolean> {
39
+ const agent = await this.getAgent()
40
+ const result = await agent.verifyCredential({
41
+ credential: vcJwt
42
+ })
43
+ return result.verified
44
+ }
45
+ }
@@ -0,0 +1,6 @@
1
+ export declare class IdentityManager {
2
+ createEphemeralDID(): Promise<import("@veramo/core", { with: { "resolution-mode": "import" } }).IIdentifier>;
3
+ createPersistentDID(alias?: string): Promise<import("@veramo/core", { with: { "resolution-mode": "import" } }).IIdentifier>;
4
+ resolveDID(did: string): Promise<import("did-resolver", { with: { "resolution-mode": "import" } }).DIDResolutionResult>;
5
+ }
6
+ //# sourceMappingURL=did-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-manager.d.ts","sourceRoot":"","sources":["did-manager.ts"],"names":[],"mappings":"AAEA,qBAAa,eAAe;IAClB,kBAAkB;IAQlB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM;IASlC,UAAU,CAAC,GAAG,EAAE,MAAM;CAI/B"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentityManager = void 0;
4
+ const agent_1 = require("../agent");
5
+ class IdentityManager {
6
+ async createEphemeralDID() {
7
+ const agent = await (0, agent_1.initAgent)();
8
+ const identifier = await agent.didManagerCreate({
9
+ provider: 'did:key'
10
+ });
11
+ return identifier;
12
+ }
13
+ async createPersistentDID(alias) {
14
+ const agent = await (0, agent_1.initAgent)();
15
+ const identifier = await agent.didManagerCreate({
16
+ provider: 'did:ethr',
17
+ alias
18
+ });
19
+ return identifier;
20
+ }
21
+ async resolveDID(did) {
22
+ const agent = await (0, agent_1.initAgent)();
23
+ return await agent.resolveDid({ didUrl: did });
24
+ }
25
+ }
26
+ exports.IdentityManager = IdentityManager;
27
+ //# sourceMappingURL=did-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-manager.js","sourceRoot":"","sources":["did-manager.ts"],"names":[],"mappings":";;;AAAA,oCAAoC;AAEpC,MAAa,eAAe;IACxB,KAAK,CAAC,kBAAkB;QACpB,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YAC5C,QAAQ,EAAE,SAAS;SACtB,CAAC,CAAA;QACF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,KAAc;QACpC,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC;YAC5C,QAAQ,EAAE,UAAU;YACpB,KAAK;SACR,CAAC,CAAA;QACF,OAAO,UAAU,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAW;QACxB,MAAM,KAAK,GAAG,MAAM,IAAA,iBAAS,GAAE,CAAA;QAC/B,OAAO,MAAM,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IAClD,CAAC;CACJ;AAtBD,0CAsBC"}
@@ -0,0 +1,25 @@
1
+ import { initAgent } from '../agent'
2
+
3
+ export class IdentityManager {
4
+ async createEphemeralDID() {
5
+ const agent = await initAgent()
6
+ const identifier = await agent.didManagerCreate({
7
+ provider: 'did:key'
8
+ })
9
+ return identifier
10
+ }
11
+
12
+ async createPersistentDID(alias?: string) {
13
+ const agent = await initAgent()
14
+ const identifier = await agent.didManagerCreate({
15
+ provider: 'did:ethr',
16
+ alias
17
+ })
18
+ return identifier
19
+ }
20
+
21
+ async resolveDID(did: string) {
22
+ const agent = await initAgent()
23
+ return await agent.resolveDid({ didUrl: did })
24
+ }
25
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from './identity/did-manager';
2
+ export * from './credentials/vc-handler';
3
+ export * from './agent';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,SAAS,CAAA"}
package/src/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./identity/did-manager"), exports);
18
+ __exportStar(require("./credentials/vc-handler"), exports);
19
+ __exportStar(require("./agent"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC;AACtC,2DAAwC;AACxC,0CAAuB"}
package/src/index.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './identity/did-manager'
2
+ export * from './credentials/vc-handler.service'
3
+ export * from './agent'