@ajna-inc/openbadges 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.
- package/LICENSE +202 -0
- package/build/OpenBadgesModule.d.ts +10 -0
- package/build/OpenBadgesModule.js +75 -0
- package/build/OpenBadgesModule.js.map +1 -0
- package/build/OpenBadgesModuleConfig.d.ts +96 -0
- package/build/OpenBadgesModuleConfig.js +50 -0
- package/build/OpenBadgesModuleConfig.js.map +1 -0
- package/build/api/OpenBadgesApi.d.ts +48 -0
- package/build/api/OpenBadgesApi.js +81 -0
- package/build/api/OpenBadgesApi.js.map +1 -0
- package/build/api/index.d.ts +1 -0
- package/build/api/index.js +18 -0
- package/build/api/index.js.map +1 -0
- package/build/constants.d.ts +12 -0
- package/build/constants.js +27 -0
- package/build/constants.js.map +1 -0
- package/build/cryptosuites/EcdsaSd2023.d.ts +143 -0
- package/build/cryptosuites/EcdsaSd2023.js +518 -0
- package/build/cryptosuites/EcdsaSd2023.js.map +1 -0
- package/build/cryptosuites/EddsaRdfc2022.d.ts +112 -0
- package/build/cryptosuites/EddsaRdfc2022.js +356 -0
- package/build/cryptosuites/EddsaRdfc2022.js.map +1 -0
- package/build/cryptosuites/constants.d.ts +14 -0
- package/build/cryptosuites/constants.js +22 -0
- package/build/cryptosuites/constants.js.map +1 -0
- package/build/cryptosuites/contextPreprocessor.d.ts +24 -0
- package/build/cryptosuites/contextPreprocessor.js +127 -0
- package/build/cryptosuites/contextPreprocessor.js.map +1 -0
- package/build/cryptosuites/dataIntegrityV2Context.d.ts +144 -0
- package/build/cryptosuites/dataIntegrityV2Context.js +86 -0
- package/build/cryptosuites/dataIntegrityV2Context.js.map +1 -0
- package/build/cryptosuites/index.d.ts +11 -0
- package/build/cryptosuites/index.js +33 -0
- package/build/cryptosuites/index.js.map +1 -0
- package/build/http/OpenBadgesHttpModule.d.ts +9 -0
- package/build/http/OpenBadgesHttpModule.js +120 -0
- package/build/http/OpenBadgesHttpModule.js.map +1 -0
- package/build/http/OpenBadgesHttpModuleConfig.d.ts +55 -0
- package/build/http/OpenBadgesHttpModuleConfig.js +78 -0
- package/build/http/OpenBadgesHttpModuleConfig.js.map +1 -0
- package/build/http/endpoints/authorize.d.ts +3 -0
- package/build/http/endpoints/authorize.js +79 -0
- package/build/http/endpoints/authorize.js.map +1 -0
- package/build/http/endpoints/consent.d.ts +3 -0
- package/build/http/endpoints/consent.js +25 -0
- package/build/http/endpoints/consent.js.map +1 -0
- package/build/http/endpoints/credentials.d.ts +4 -0
- package/build/http/endpoints/credentials.js +85 -0
- package/build/http/endpoints/credentials.js.map +1 -0
- package/build/http/endpoints/did.d.ts +3 -0
- package/build/http/endpoints/did.js +48 -0
- package/build/http/endpoints/did.js.map +1 -0
- package/build/http/endpoints/introspect.d.ts +3 -0
- package/build/http/endpoints/introspect.js +37 -0
- package/build/http/endpoints/introspect.js.map +1 -0
- package/build/http/endpoints/jwks.d.ts +3 -0
- package/build/http/endpoints/jwks.js +46 -0
- package/build/http/endpoints/jwks.js.map +1 -0
- package/build/http/endpoints/profile.d.ts +4 -0
- package/build/http/endpoints/profile.js +58 -0
- package/build/http/endpoints/profile.js.map +1 -0
- package/build/http/endpoints/refresh.d.ts +15 -0
- package/build/http/endpoints/refresh.js +134 -0
- package/build/http/endpoints/refresh.js.map +1 -0
- package/build/http/endpoints/registration.d.ts +3 -0
- package/build/http/endpoints/registration.js +42 -0
- package/build/http/endpoints/registration.js.map +1 -0
- package/build/http/endpoints/revoke.d.ts +3 -0
- package/build/http/endpoints/revoke.js +38 -0
- package/build/http/endpoints/revoke.js.map +1 -0
- package/build/http/endpoints/serviceDescription.d.ts +3 -0
- package/build/http/endpoints/serviceDescription.js +52 -0
- package/build/http/endpoints/serviceDescription.js.map +1 -0
- package/build/http/endpoints/statusList.d.ts +10 -0
- package/build/http/endpoints/statusList.js +95 -0
- package/build/http/endpoints/statusList.js.map +1 -0
- package/build/http/endpoints/token.d.ts +3 -0
- package/build/http/endpoints/token.js +147 -0
- package/build/http/endpoints/token.js.map +1 -0
- package/build/http/middleware/auth.d.ts +5 -0
- package/build/http/middleware/auth.js +48 -0
- package/build/http/middleware/auth.js.map +1 -0
- package/build/http/router.d.ts +13 -0
- package/build/http/router.js +36 -0
- package/build/http/router.js.map +1 -0
- package/build/http/tenants.d.ts +2 -0
- package/build/http/tenants.js +20 -0
- package/build/http/tenants.js.map +1 -0
- package/build/http/util/auth.d.ts +8 -0
- package/build/http/util/auth.js +43 -0
- package/build/http/util/auth.js.map +1 -0
- package/build/index.d.ts +46 -0
- package/build/index.js +71 -0
- package/build/index.js.map +1 -0
- package/build/models/ClrCredential.d.ts +112 -0
- package/build/models/ClrCredential.js +52 -0
- package/build/models/ClrCredential.js.map +1 -0
- package/build/models/EndorsementCredential.d.ts +89 -0
- package/build/models/EndorsementCredential.js +11 -0
- package/build/models/EndorsementCredential.js.map +1 -0
- package/build/models/StatusListCredential.d.ts +81 -0
- package/build/models/StatusListCredential.js +28 -0
- package/build/models/StatusListCredential.js.map +1 -0
- package/build/models/index.d.ts +8 -0
- package/build/models/index.js +25 -0
- package/build/models/index.js.map +1 -0
- package/build/repository/OpenBadgeCredentialRecord.d.ts +44 -0
- package/build/repository/OpenBadgeCredentialRecord.js +46 -0
- package/build/repository/OpenBadgeCredentialRecord.js.map +1 -0
- package/build/repository/OpenBadgeCredentialRepository.d.ts +8 -0
- package/build/repository/OpenBadgeCredentialRepository.js +38 -0
- package/build/repository/OpenBadgeCredentialRepository.js.map +1 -0
- package/build/repository/OpenBadgesAuthCodeRecord.d.ts +35 -0
- package/build/repository/OpenBadgesAuthCodeRecord.js +28 -0
- package/build/repository/OpenBadgesAuthCodeRecord.js.map +1 -0
- package/build/repository/OpenBadgesAuthCodeRepository.d.ts +6 -0
- package/build/repository/OpenBadgesAuthCodeRepository.js +32 -0
- package/build/repository/OpenBadgesAuthCodeRepository.js.map +1 -0
- package/build/repository/OpenBadgesConsentRecord.d.ts +24 -0
- package/build/repository/OpenBadgesConsentRecord.js +23 -0
- package/build/repository/OpenBadgesConsentRecord.js.map +1 -0
- package/build/repository/OpenBadgesConsentRepository.d.ts +6 -0
- package/build/repository/OpenBadgesConsentRepository.js +32 -0
- package/build/repository/OpenBadgesConsentRepository.js.map +1 -0
- package/build/repository/OpenBadgesKeyBindingRecord.d.ts +24 -0
- package/build/repository/OpenBadgesKeyBindingRecord.js +32 -0
- package/build/repository/OpenBadgesKeyBindingRecord.js.map +1 -0
- package/build/repository/OpenBadgesKeyBindingRepository.d.ts +7 -0
- package/build/repository/OpenBadgesKeyBindingRepository.js +35 -0
- package/build/repository/OpenBadgesKeyBindingRepository.js.map +1 -0
- package/build/repository/OpenBadgesOAuthRecord.d.ts +35 -0
- package/build/repository/OpenBadgesOAuthRecord.js +25 -0
- package/build/repository/OpenBadgesOAuthRecord.js.map +1 -0
- package/build/repository/OpenBadgesOAuthRepository.d.ts +8 -0
- package/build/repository/OpenBadgesOAuthRepository.js +38 -0
- package/build/repository/OpenBadgesOAuthRepository.js.map +1 -0
- package/build/repository/OpenBadgesProfileRecord.d.ts +21 -0
- package/build/repository/OpenBadgesProfileRecord.js +22 -0
- package/build/repository/OpenBadgesProfileRecord.js.map +1 -0
- package/build/repository/OpenBadgesProfileRepository.d.ts +6 -0
- package/build/repository/OpenBadgesProfileRepository.js +32 -0
- package/build/repository/OpenBadgesProfileRepository.js.map +1 -0
- package/build/repository/OpenBadgesRevocationCacheRecord.d.ts +23 -0
- package/build/repository/OpenBadgesRevocationCacheRecord.js +23 -0
- package/build/repository/OpenBadgesRevocationCacheRecord.js.map +1 -0
- package/build/repository/OpenBadgesRevocationCacheRepository.d.ts +6 -0
- package/build/repository/OpenBadgesRevocationCacheRepository.js +32 -0
- package/build/repository/OpenBadgesRevocationCacheRepository.js.map +1 -0
- package/build/repository/OpenBadgesServiceDescriptionRecord.d.ts +21 -0
- package/build/repository/OpenBadgesServiceDescriptionRecord.js +22 -0
- package/build/repository/OpenBadgesServiceDescriptionRecord.js.map +1 -0
- package/build/repository/OpenBadgesServiceDescriptionRepository.d.ts +6 -0
- package/build/repository/OpenBadgesServiceDescriptionRepository.js +32 -0
- package/build/repository/OpenBadgesServiceDescriptionRepository.js.map +1 -0
- package/build/repository/OpenBadgesTokenRecord.d.ts +39 -0
- package/build/repository/OpenBadgesTokenRecord.js +36 -0
- package/build/repository/OpenBadgesTokenRecord.js.map +1 -0
- package/build/repository/OpenBadgesTokenRepository.d.ts +9 -0
- package/build/repository/OpenBadgesTokenRepository.js +45 -0
- package/build/repository/OpenBadgesTokenRepository.js.map +1 -0
- package/build/repository/StatusListRecord.d.ts +49 -0
- package/build/repository/StatusListRecord.js +47 -0
- package/build/repository/StatusListRecord.js.map +1 -0
- package/build/repository/StatusListRepository.d.ts +24 -0
- package/build/repository/StatusListRepository.js +52 -0
- package/build/repository/StatusListRepository.js.map +1 -0
- package/build/repository/index.d.ts +18 -0
- package/build/repository/index.js +35 -0
- package/build/repository/index.js.map +1 -0
- package/build/services/AchievementValidator.d.ts +158 -0
- package/build/services/AchievementValidator.js +238 -0
- package/build/services/AchievementValidator.js.map +1 -0
- package/build/services/ConsumerService.d.ts +24 -0
- package/build/services/ConsumerService.js +143 -0
- package/build/services/ConsumerService.js.map +1 -0
- package/build/services/ContextService.d.ts +14 -0
- package/build/services/ContextService.js +54 -0
- package/build/services/ContextService.js.map +1 -0
- package/build/services/DataIntegrityService.d.ts +51 -0
- package/build/services/DataIntegrityService.js +134 -0
- package/build/services/DataIntegrityService.js.map +1 -0
- package/build/services/DidCommLinkService.d.ts +7 -0
- package/build/services/DidCommLinkService.js +20 -0
- package/build/services/DidCommLinkService.js.map +1 -0
- package/build/services/DisplayMapper.d.ts +9 -0
- package/build/services/DisplayMapper.js +26 -0
- package/build/services/DisplayMapper.js.map +1 -0
- package/build/services/IssuerService.d.ts +38 -0
- package/build/services/IssuerService.js +225 -0
- package/build/services/IssuerService.js.map +1 -0
- package/build/services/JwtService.d.ts +19 -0
- package/build/services/JwtService.js +229 -0
- package/build/services/JwtService.js.map +1 -0
- package/build/services/KeyService.d.ts +102 -0
- package/build/services/KeyService.js +439 -0
- package/build/services/KeyService.js.map +1 -0
- package/build/services/OAuthClient.d.ts +26 -0
- package/build/services/OAuthClient.js +127 -0
- package/build/services/OAuthClient.js.map +1 -0
- package/build/services/ProofService.d.ts +15 -0
- package/build/services/ProofService.js +43 -0
- package/build/services/ProofService.js.map +1 -0
- package/build/services/RevocationService.d.ts +59 -0
- package/build/services/RevocationService.js +319 -0
- package/build/services/RevocationService.js.map +1 -0
- package/build/services/VerifyService.d.ts +17 -0
- package/build/services/VerifyService.js +54 -0
- package/build/services/VerifyService.js.map +1 -0
- package/build/services/crypto/CryptoDriver.d.ts +9 -0
- package/build/services/crypto/CryptoDriver.js +7 -0
- package/build/services/crypto/CryptoDriver.js.map +1 -0
- package/build/services/crypto/JsonLdCryptoDriver.d.ts +17 -0
- package/build/services/crypto/JsonLdCryptoDriver.js +45 -0
- package/build/services/crypto/JsonLdCryptoDriver.js.map +1 -0
- package/build/services/crypto/JwtCryptoDriver.d.ts +13 -0
- package/build/services/crypto/JwtCryptoDriver.js +42 -0
- package/build/services/crypto/JwtCryptoDriver.js.map +1 -0
- package/build/services/index.d.ts +12 -0
- package/build/services/index.js +29 -0
- package/build/services/index.js.map +1 -0
- package/build/utils/validate.d.ts +17 -0
- package/build/utils/validate.js +107 -0
- package/build/utils/validate.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ProofService = void 0;
|
|
16
|
+
const core_1 = require("@credo-ts/core");
|
|
17
|
+
const OpenBadgesModuleConfig_1 = require("../OpenBadgesModuleConfig");
|
|
18
|
+
const JsonLdCryptoDriver_1 = require("./crypto/JsonLdCryptoDriver");
|
|
19
|
+
const JwtCryptoDriver_1 = require("./crypto/JwtCryptoDriver");
|
|
20
|
+
let ProofService = class ProofService {
|
|
21
|
+
constructor(config, jsonld, jwt) {
|
|
22
|
+
this.driver = config.proofType === 'jwt' ? jwt : jsonld;
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
sign(agentContext, document, keyHint) {
|
|
26
|
+
return this.driver.sign(agentContext, document, keyHint);
|
|
27
|
+
}
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
verify(agentContext, input) {
|
|
30
|
+
return this.driver.verify(agentContext, input);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.ProofService = ProofService;
|
|
34
|
+
exports.ProofService = ProofService = __decorate([
|
|
35
|
+
(0, core_1.injectable)(),
|
|
36
|
+
__param(0, (0, core_1.inject)(OpenBadgesModuleConfig_1.OpenBadgesModuleConfig)),
|
|
37
|
+
__param(1, (0, core_1.inject)(JsonLdCryptoDriver_1.JsonLdCryptoDriver)),
|
|
38
|
+
__param(2, (0, core_1.inject)(JwtCryptoDriver_1.JwtCryptoDriver)),
|
|
39
|
+
__metadata("design:paramtypes", [OpenBadgesModuleConfig_1.OpenBadgesModuleConfig,
|
|
40
|
+
JsonLdCryptoDriver_1.JsonLdCryptoDriver,
|
|
41
|
+
JwtCryptoDriver_1.JwtCryptoDriver])
|
|
42
|
+
], ProofService);
|
|
43
|
+
//# sourceMappingURL=ProofService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProofService.js","sourceRoot":"","sources":["../../src/services/ProofService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAmD;AAEnD,sEAAkE;AAElE,oEAAgE;AAChE,8DAA0D;AAGnD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAGvB,YACkC,MAA8B,EAClC,MAA0B,EAC7B,GAAoB;QAE7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;IACzD,CAAC;IAED,8DAA8D;IACvD,IAAI,CAAC,YAA0B,EAAE,QAAa,EAAE,OAAa;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC1D,CAAC;IAED,8DAA8D;IACvD,MAAM,CAAC,YAA0B,EAAE,KAAU;QAClD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;CACF,CAAA;AApBY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,iBAAU,GAAE;IAKR,WAAA,IAAA,aAAM,EAAC,+CAAsB,CAAC,CAAA;IAC9B,WAAA,IAAA,aAAM,EAAC,uCAAkB,CAAC,CAAA;IAC1B,WAAA,IAAA,aAAM,EAAC,iCAAe,CAAC,CAAA;qCAFgB,+CAAsB;QAC1B,uCAAkB;QACxB,iCAAe;GANpC,YAAY,CAoBxB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
2
|
+
import { OpenBadgesRevocationCacheRepository } from '../repository/OpenBadgesRevocationCacheRepository';
|
|
3
|
+
import { StatusListRepository } from '../repository/StatusListRepository';
|
|
4
|
+
import { StatusListRecord } from '../repository/StatusListRecord';
|
|
5
|
+
import type { StatusListEntry, CreateStatusListInput, StatusListCredential } from '../models/StatusListCredential';
|
|
6
|
+
export declare class RevocationService {
|
|
7
|
+
private readonly cacheRepo;
|
|
8
|
+
private readonly statusListRepo;
|
|
9
|
+
constructor(cacheRepo: OpenBadgesRevocationCacheRepository, statusListRepo: StatusListRepository);
|
|
10
|
+
isRevoked(agentContext: AgentContext, credential: any): Promise<boolean>;
|
|
11
|
+
private getStatusListBits;
|
|
12
|
+
/**
|
|
13
|
+
* Create a new status list for credential revocation or suspension
|
|
14
|
+
*/
|
|
15
|
+
createStatusList(agentContext: AgentContext, input: CreateStatusListInput): Promise<StatusListRecord>;
|
|
16
|
+
/**
|
|
17
|
+
* Allocate the next available index in a status list for a credential
|
|
18
|
+
* Returns the allocated index
|
|
19
|
+
*/
|
|
20
|
+
allocateIndex(agentContext: AgentContext, listId: string, credentialId?: string): Promise<number>;
|
|
21
|
+
/**
|
|
22
|
+
* Set the status (revoked/suspended or active) for a specific index
|
|
23
|
+
*/
|
|
24
|
+
setStatus(agentContext: AgentContext, options: {
|
|
25
|
+
listId: string;
|
|
26
|
+
index: number;
|
|
27
|
+
status: boolean;
|
|
28
|
+
}): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Revoke a credential by its credential ID (if tracked)
|
|
31
|
+
*/
|
|
32
|
+
revokeByCredentialId(agentContext: AgentContext, listId: string, credentialId: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Get the status of a specific index
|
|
35
|
+
*/
|
|
36
|
+
getStatus(agentContext: AgentContext, listId: string, index: number): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Build an unsigned StatusList2021Credential for a status list
|
|
39
|
+
* This can then be signed using the ProofService
|
|
40
|
+
*/
|
|
41
|
+
buildStatusListCredential(record: StatusListRecord): StatusListCredential;
|
|
42
|
+
/**
|
|
43
|
+
* Create a StatusListEntry to add to a credential
|
|
44
|
+
*/
|
|
45
|
+
createStatusEntry(record: StatusListRecord, index: number, entryId?: string): StatusListEntry;
|
|
46
|
+
/**
|
|
47
|
+
* Add a credentialStatus field to a credential
|
|
48
|
+
* This should be called before signing the credential
|
|
49
|
+
*/
|
|
50
|
+
addCredentialStatus(credential: any, statusEntry: StatusListEntry): any;
|
|
51
|
+
/**
|
|
52
|
+
* Get a status list record by its ID
|
|
53
|
+
*/
|
|
54
|
+
getStatusList(agentContext: AgentContext, listId: string): Promise<StatusListRecord | null>;
|
|
55
|
+
/**
|
|
56
|
+
* Get all status lists for an issuer
|
|
57
|
+
*/
|
|
58
|
+
getStatusListsByIssuer(agentContext: AgentContext, issuerDid: string): Promise<StatusListRecord[]>;
|
|
59
|
+
}
|
|
@@ -0,0 +1,319 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
19
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
21
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
22
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
|
+
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
};
|
|
34
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
35
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.RevocationService = void 0;
|
|
39
|
+
const core_1 = require("@credo-ts/core");
|
|
40
|
+
const OpenBadgesRevocationCacheRepository_1 = require("../repository/OpenBadgesRevocationCacheRepository");
|
|
41
|
+
const StatusListRepository_1 = require("../repository/StatusListRepository");
|
|
42
|
+
const StatusListRecord_1 = require("../repository/StatusListRecord");
|
|
43
|
+
const constants_1 = require("../constants");
|
|
44
|
+
const StatusListCredential_1 = require("../models/StatusListCredential");
|
|
45
|
+
const zlib = __importStar(require("zlib"));
|
|
46
|
+
/**
|
|
47
|
+
* Convert base64url to bytes
|
|
48
|
+
*/
|
|
49
|
+
function b64ToBytes(b64) {
|
|
50
|
+
const pad = b64.length % 4 === 0 ? '' : '='.repeat(4 - (b64.length % 4));
|
|
51
|
+
const base64 = (b64 + pad).replace(/-/g, '+').replace(/_/g, '/');
|
|
52
|
+
return Buffer.from(base64, 'base64');
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Convert bytes to base64url
|
|
56
|
+
*/
|
|
57
|
+
function bytesToB64url(bytes) {
|
|
58
|
+
return Buffer.from(bytes).toString('base64url');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a bit is set at the given index
|
|
62
|
+
*/
|
|
63
|
+
function isBitSet(bytes, index) {
|
|
64
|
+
const byteIndex = Math.floor(index / 8);
|
|
65
|
+
const bitIndex = index % 8;
|
|
66
|
+
if (byteIndex >= bytes.length)
|
|
67
|
+
return false;
|
|
68
|
+
const mask = 1 << (7 - bitIndex);
|
|
69
|
+
return (bytes[byteIndex] & mask) !== 0;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Set or clear a bit at the given index
|
|
73
|
+
*/
|
|
74
|
+
function setBit(bytes, index, value) {
|
|
75
|
+
const byteIndex = Math.floor(index / 8);
|
|
76
|
+
const bitIndex = index % 8;
|
|
77
|
+
if (byteIndex >= bytes.length)
|
|
78
|
+
return;
|
|
79
|
+
const mask = 1 << (7 - bitIndex);
|
|
80
|
+
if (value) {
|
|
81
|
+
bytes[byteIndex] |= mask;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
bytes[byteIndex] &= ~mask;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Create an empty bitstring of the given capacity
|
|
89
|
+
*/
|
|
90
|
+
function createBitstring(capacity) {
|
|
91
|
+
return new Uint8Array(Math.ceil(capacity / 8));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* GZIP compress and base64url encode a bitstring
|
|
95
|
+
*/
|
|
96
|
+
function encodeStatusList(bitstring) {
|
|
97
|
+
const compressed = zlib.gzipSync(Buffer.from(bitstring));
|
|
98
|
+
return bytesToB64url(compressed);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Base64url decode and GZIP decompress a status list
|
|
102
|
+
*/
|
|
103
|
+
function decodeStatusList(encoded) {
|
|
104
|
+
const compressed = b64ToBytes(encoded);
|
|
105
|
+
const decompressed = zlib.gunzipSync(Buffer.from(compressed));
|
|
106
|
+
return new Uint8Array(decompressed);
|
|
107
|
+
}
|
|
108
|
+
let RevocationService = class RevocationService {
|
|
109
|
+
constructor(cacheRepo, statusListRepo) {
|
|
110
|
+
this.cacheRepo = cacheRepo;
|
|
111
|
+
this.statusListRepo = statusListRepo;
|
|
112
|
+
}
|
|
113
|
+
async isRevoked(agentContext, credential) {
|
|
114
|
+
const cs = credential?.credentialStatus;
|
|
115
|
+
const entries = Array.isArray(cs) ? cs : cs ? [cs] : [];
|
|
116
|
+
for (const entry of entries) {
|
|
117
|
+
const type = entry?.type;
|
|
118
|
+
if (type !== constants_1.ONE_EDTECH_REVOCATION_LIST && type !== 'StatusList2021Entry')
|
|
119
|
+
continue;
|
|
120
|
+
const index = typeof entry?.statusListIndex === 'number' ? entry.statusListIndex : parseInt(entry?.statusListIndex ?? '', 10);
|
|
121
|
+
const url = entry?.statusListCredential || entry?.statusListUrl || entry?.id;
|
|
122
|
+
if (!url || Number.isNaN(index))
|
|
123
|
+
continue;
|
|
124
|
+
const { bytes } = await this.getStatusListBits(agentContext, url);
|
|
125
|
+
if (isBitSet(bytes, index))
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
async getStatusListBits(agentContext, url) {
|
|
131
|
+
try {
|
|
132
|
+
const cached = await this.cacheRepo.findByStatusListUrl(agentContext, url);
|
|
133
|
+
if (cached?.bitstringBase64) {
|
|
134
|
+
return { bytes: b64ToBytes(cached.bitstringBase64) };
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
catch { }
|
|
138
|
+
const res = await fetch(url);
|
|
139
|
+
if (!res.ok)
|
|
140
|
+
throw new Error(`Failed to fetch status list: ${res.status}`);
|
|
141
|
+
const json = (await res.json());
|
|
142
|
+
// Try multiple shapes
|
|
143
|
+
const encodedList = json?.encodedList ?? json?.credentialSubject?.encodedList;
|
|
144
|
+
if (!encodedList)
|
|
145
|
+
throw new Error('encodedList not found in status list');
|
|
146
|
+
try {
|
|
147
|
+
const rec = await this.cacheRepo.findByStatusListUrl(agentContext, url);
|
|
148
|
+
if (rec) {
|
|
149
|
+
rec.bitstringBase64 = encodedList;
|
|
150
|
+
rec.lastUpdatedAt = new Date();
|
|
151
|
+
await this.cacheRepo.update(agentContext, rec);
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
await this.cacheRepo.save(agentContext, {
|
|
155
|
+
statusListUrl: url,
|
|
156
|
+
bitstringBase64: encodedList,
|
|
157
|
+
lastUpdatedAt: new Date(),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch { }
|
|
162
|
+
return { bytes: b64ToBytes(encodedList) };
|
|
163
|
+
}
|
|
164
|
+
// ========================================
|
|
165
|
+
// Issuer-side Status List Management
|
|
166
|
+
// ========================================
|
|
167
|
+
/**
|
|
168
|
+
* Create a new status list for credential revocation or suspension
|
|
169
|
+
*/
|
|
170
|
+
async createStatusList(agentContext, input) {
|
|
171
|
+
const capacity = input.capacity ?? StatusListCredential_1.DEFAULT_STATUS_LIST_CAPACITY;
|
|
172
|
+
const bitstring = createBitstring(capacity);
|
|
173
|
+
const record = new StatusListRecord_1.StatusListRecord({
|
|
174
|
+
listId: input.listId,
|
|
175
|
+
issuerDid: input.issuerDid,
|
|
176
|
+
purpose: input.purpose,
|
|
177
|
+
bitstringBase64: bytesToB64url(bitstring),
|
|
178
|
+
capacity,
|
|
179
|
+
nextIndex: 0,
|
|
180
|
+
credentialIndexMap: {},
|
|
181
|
+
baseUrl: input.baseUrl,
|
|
182
|
+
});
|
|
183
|
+
await this.statusListRepo.save(agentContext, record);
|
|
184
|
+
console.log('[OB][RevocationService] Created status list:', input.listId, 'capacity:', capacity);
|
|
185
|
+
return record;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Allocate the next available index in a status list for a credential
|
|
189
|
+
* Returns the allocated index
|
|
190
|
+
*/
|
|
191
|
+
async allocateIndex(agentContext, listId, credentialId) {
|
|
192
|
+
const record = await this.statusListRepo.findByListId(agentContext, listId);
|
|
193
|
+
if (!record) {
|
|
194
|
+
throw new Error(`Status list not found: ${listId}`);
|
|
195
|
+
}
|
|
196
|
+
if (record.nextIndex >= record.capacity) {
|
|
197
|
+
throw new Error(`Status list ${listId} is full (capacity: ${record.capacity})`);
|
|
198
|
+
}
|
|
199
|
+
const index = record.nextIndex;
|
|
200
|
+
record.nextIndex++;
|
|
201
|
+
if (credentialId) {
|
|
202
|
+
record.credentialIndexMap[credentialId] = index;
|
|
203
|
+
}
|
|
204
|
+
await this.statusListRepo.update(agentContext, record);
|
|
205
|
+
console.log('[OB][RevocationService] Allocated index:', index, 'for list:', listId);
|
|
206
|
+
return index;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Set the status (revoked/suspended or active) for a specific index
|
|
210
|
+
*/
|
|
211
|
+
async setStatus(agentContext, options) {
|
|
212
|
+
const record = await this.statusListRepo.findByListId(agentContext, options.listId);
|
|
213
|
+
if (!record) {
|
|
214
|
+
throw new Error(`Status list not found: ${options.listId}`);
|
|
215
|
+
}
|
|
216
|
+
if (options.index < 0 || options.index >= record.capacity) {
|
|
217
|
+
throw new Error(`Index ${options.index} out of range (0-${record.capacity - 1})`);
|
|
218
|
+
}
|
|
219
|
+
// Decode the bitstring
|
|
220
|
+
const bitstring = b64ToBytes(record.bitstringBase64);
|
|
221
|
+
// Set the bit
|
|
222
|
+
setBit(bitstring, options.index, options.status);
|
|
223
|
+
// Update the record
|
|
224
|
+
record.bitstringBase64 = bytesToB64url(bitstring);
|
|
225
|
+
await this.statusListRepo.update(agentContext, record);
|
|
226
|
+
console.log('[OB][RevocationService] Set status for index:', options.index, 'to:', options.status ? 'revoked' : 'active');
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Revoke a credential by its credential ID (if tracked)
|
|
230
|
+
*/
|
|
231
|
+
async revokeByCredentialId(agentContext, listId, credentialId) {
|
|
232
|
+
const record = await this.statusListRepo.findByListId(agentContext, listId);
|
|
233
|
+
if (!record) {
|
|
234
|
+
throw new Error(`Status list not found: ${listId}`);
|
|
235
|
+
}
|
|
236
|
+
const index = record.credentialIndexMap[credentialId];
|
|
237
|
+
if (index === undefined) {
|
|
238
|
+
throw new Error(`Credential ${credentialId} not found in status list ${listId}`);
|
|
239
|
+
}
|
|
240
|
+
await this.setStatus(agentContext, { listId, index, status: true });
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get the status of a specific index
|
|
244
|
+
*/
|
|
245
|
+
async getStatus(agentContext, listId, index) {
|
|
246
|
+
const record = await this.statusListRepo.findByListId(agentContext, listId);
|
|
247
|
+
if (!record) {
|
|
248
|
+
throw new Error(`Status list not found: ${listId}`);
|
|
249
|
+
}
|
|
250
|
+
const bitstring = b64ToBytes(record.bitstringBase64);
|
|
251
|
+
return isBitSet(bitstring, index);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Build an unsigned StatusList2021Credential for a status list
|
|
255
|
+
* This can then be signed using the ProofService
|
|
256
|
+
*/
|
|
257
|
+
buildStatusListCredential(record) {
|
|
258
|
+
const bitstring = b64ToBytes(record.bitstringBase64);
|
|
259
|
+
const encodedList = encodeStatusList(bitstring);
|
|
260
|
+
const credentialId = `${record.baseUrl}/status-list/${record.listId}`;
|
|
261
|
+
return {
|
|
262
|
+
'@context': [constants_1.VC_V2_CONTEXT, StatusListCredential_1.STATUS_LIST_2021_CONTEXT],
|
|
263
|
+
type: ['VerifiableCredential', 'StatusList2021Credential'],
|
|
264
|
+
id: credentialId,
|
|
265
|
+
issuer: record.issuerDid,
|
|
266
|
+
validFrom: new Date().toISOString(),
|
|
267
|
+
credentialSubject: {
|
|
268
|
+
id: `${credentialId}#list`,
|
|
269
|
+
type: 'StatusList2021',
|
|
270
|
+
statusPurpose: record.purpose,
|
|
271
|
+
encodedList,
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Create a StatusListEntry to add to a credential
|
|
277
|
+
*/
|
|
278
|
+
createStatusEntry(record, index, entryId) {
|
|
279
|
+
const statusListCredentialUrl = `${record.baseUrl}/status-list/${record.listId}`;
|
|
280
|
+
return {
|
|
281
|
+
id: entryId ?? `${statusListCredentialUrl}#${index}`,
|
|
282
|
+
type: 'StatusList2021Entry',
|
|
283
|
+
statusPurpose: record.purpose,
|
|
284
|
+
statusListIndex: String(index),
|
|
285
|
+
statusListCredential: statusListCredentialUrl,
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Add a credentialStatus field to a credential
|
|
290
|
+
* This should be called before signing the credential
|
|
291
|
+
*/
|
|
292
|
+
addCredentialStatus(credential, statusEntry) {
|
|
293
|
+
return {
|
|
294
|
+
...credential,
|
|
295
|
+
credentialStatus: statusEntry,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Get a status list record by its ID
|
|
300
|
+
*/
|
|
301
|
+
async getStatusList(agentContext, listId) {
|
|
302
|
+
return this.statusListRepo.findByListId(agentContext, listId);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get all status lists for an issuer
|
|
306
|
+
*/
|
|
307
|
+
async getStatusListsByIssuer(agentContext, issuerDid) {
|
|
308
|
+
return this.statusListRepo.findByIssuer(agentContext, issuerDid);
|
|
309
|
+
}
|
|
310
|
+
};
|
|
311
|
+
exports.RevocationService = RevocationService;
|
|
312
|
+
exports.RevocationService = RevocationService = __decorate([
|
|
313
|
+
(0, core_1.injectable)(),
|
|
314
|
+
__param(0, (0, core_1.inject)(OpenBadgesRevocationCacheRepository_1.OpenBadgesRevocationCacheRepository)),
|
|
315
|
+
__param(1, (0, core_1.inject)(StatusListRepository_1.StatusListRepository)),
|
|
316
|
+
__metadata("design:paramtypes", [OpenBadgesRevocationCacheRepository_1.OpenBadgesRevocationCacheRepository,
|
|
317
|
+
StatusListRepository_1.StatusListRepository])
|
|
318
|
+
], RevocationService);
|
|
319
|
+
//# sourceMappingURL=RevocationService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RevocationService.js","sourceRoot":"","sources":["../../src/services/RevocationService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
2
|
+
import { ContextService } from './ContextService';
|
|
3
|
+
import { ProofService } from './ProofService';
|
|
4
|
+
import { RevocationService } from './RevocationService';
|
|
5
|
+
export declare class VerifyService {
|
|
6
|
+
private readonly contextService;
|
|
7
|
+
private readonly revocations;
|
|
8
|
+
private readonly proofs;
|
|
9
|
+
constructor(contextService: ContextService, revocations: RevocationService, proofs: ProofService);
|
|
10
|
+
verify(agentContext: AgentContext, credentialOrJwt: any): Promise<{
|
|
11
|
+
isValidStructure: boolean;
|
|
12
|
+
issues: import("../utils/validate").ValidationIssue[];
|
|
13
|
+
status: string;
|
|
14
|
+
proofVerified: boolean;
|
|
15
|
+
}>;
|
|
16
|
+
private evaluateStatus;
|
|
17
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.VerifyService = void 0;
|
|
16
|
+
const core_1 = require("@credo-ts/core");
|
|
17
|
+
const validate_1 = require("../utils/validate");
|
|
18
|
+
const ContextService_1 = require("./ContextService");
|
|
19
|
+
const ProofService_1 = require("./ProofService");
|
|
20
|
+
const RevocationService_1 = require("./RevocationService");
|
|
21
|
+
let VerifyService = class VerifyService {
|
|
22
|
+
constructor(contextService, revocations, proofs) {
|
|
23
|
+
this.contextService = contextService;
|
|
24
|
+
this.revocations = revocations;
|
|
25
|
+
this.proofs = proofs;
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
+
async verify(agentContext, credentialOrJwt) {
|
|
29
|
+
const result = await this.proofs.verify(agentContext, credentialOrJwt);
|
|
30
|
+
const credential = result.credential ?? (typeof credentialOrJwt === 'string' ? undefined : credentialOrJwt);
|
|
31
|
+
const issues = credential ? (0, validate_1.validateObEnvelope)(credential) : [{ code: 'missing_vc_claim', message: 'VC missing' }];
|
|
32
|
+
const status = credential ? await this.evaluateStatus(agentContext, credential) : 'unknown';
|
|
33
|
+
return { isValidStructure: issues.length === 0, issues, status, proofVerified: !!result.verified };
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
36
|
+
async evaluateStatus(agentContext, credential) {
|
|
37
|
+
const now = Date.now();
|
|
38
|
+
const validUntil = credential?.validUntil ? Date.parse(credential.validUntil) : undefined;
|
|
39
|
+
const expired = validUntil != null && now > validUntil;
|
|
40
|
+
const revoked = await this.revocations.isRevoked(agentContext, credential);
|
|
41
|
+
return expired ? 'expired' : revoked ? 'revoked' : 'valid';
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.VerifyService = VerifyService;
|
|
45
|
+
exports.VerifyService = VerifyService = __decorate([
|
|
46
|
+
(0, core_1.injectable)(),
|
|
47
|
+
__param(0, (0, core_1.inject)(ContextService_1.ContextService)),
|
|
48
|
+
__param(1, (0, core_1.inject)(RevocationService_1.RevocationService)),
|
|
49
|
+
__param(2, (0, core_1.inject)(ProofService_1.ProofService)),
|
|
50
|
+
__metadata("design:paramtypes", [ContextService_1.ContextService,
|
|
51
|
+
RevocationService_1.RevocationService,
|
|
52
|
+
ProofService_1.ProofService])
|
|
53
|
+
], VerifyService);
|
|
54
|
+
//# sourceMappingURL=VerifyService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VerifyService.js","sourceRoot":"","sources":["../../src/services/VerifyService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,yCAAmD;AAEnD,gDAAsD;AACtD,qDAAiD;AACjD,iDAA6C;AAC7C,2DAAuD;AAGhD,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAC2C,cAA8B,EAC3B,WAA8B,EACnC,MAAoB;QAFlB,mBAAc,GAAd,cAAc,CAAgB;QAC3B,gBAAW,GAAX,WAAW,CAAmB;QACnC,WAAM,GAAN,MAAM,CAAc;IAC1D,CAAC;IAEJ,8DAA8D;IACvD,KAAK,CAAC,MAAM,CAAC,YAA0B,EAAE,eAAoB;QAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;QACtE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,CAAC,OAAO,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAC3G,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,6BAAkB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;QAClH,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;IACpG,CAAC;IAED,8DAA8D;IACtD,KAAK,CAAC,cAAc,CAAC,YAA0B,EAAE,UAAe;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,UAAU,GAAG,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzF,MAAM,OAAO,GAAG,UAAU,IAAI,IAAI,IAAI,GAAG,GAAG,UAAU,CAAA;QACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;QAC1E,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAA;IAC5D,CAAC;CACF,CAAA;AAxBY,sCAAa;wBAAb,aAAa;IADzB,IAAA,iBAAU,GAAE;IAGR,WAAA,IAAA,aAAM,EAAC,+BAAc,CAAC,CAAA;IACtB,WAAA,IAAA,aAAM,EAAC,qCAAiB,CAAC,CAAA;IACzB,WAAA,IAAA,aAAM,EAAC,2BAAY,CAAC,CAAA;qCAFoC,+BAAc;QACd,qCAAiB;QAC3B,2BAAY;GAJlD,aAAa,CAwBzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
2
|
+
export declare abstract class CryptoDriver {
|
|
3
|
+
abstract sign(agentContext: AgentContext, document: any, keyHint?: any): Promise<any>;
|
|
4
|
+
abstract verify(agentContext: AgentContext, input: any): Promise<{
|
|
5
|
+
verified: boolean;
|
|
6
|
+
credential?: any;
|
|
7
|
+
error?: string;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CryptoDriver.js","sourceRoot":"","sources":["../../../src/services/crypto/CryptoDriver.ts"],"names":[],"mappings":";;;AAEA,MAAsB,YAAY;CAKjC;AALD,oCAKC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
2
|
+
import { CryptoDriver } from './CryptoDriver';
|
|
3
|
+
import { DataIntegrityService } from '../DataIntegrityService';
|
|
4
|
+
export declare class JsonLdCryptoDriver extends CryptoDriver {
|
|
5
|
+
private readonly di;
|
|
6
|
+
constructor(di: DataIntegrityService);
|
|
7
|
+
sign(agentContext: AgentContext, document: any, keyHint?: any): Promise<any>;
|
|
8
|
+
verify(_agentContext: AgentContext, input: any): Promise<{
|
|
9
|
+
verified: boolean;
|
|
10
|
+
credential: any;
|
|
11
|
+
error?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
verified: boolean;
|
|
14
|
+
error: any;
|
|
15
|
+
credential?: undefined;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.JsonLdCryptoDriver = void 0;
|
|
16
|
+
const core_1 = require("@credo-ts/core");
|
|
17
|
+
const CryptoDriver_1 = require("./CryptoDriver");
|
|
18
|
+
const DataIntegrityService_1 = require("../DataIntegrityService");
|
|
19
|
+
let JsonLdCryptoDriver = class JsonLdCryptoDriver extends CryptoDriver_1.CryptoDriver {
|
|
20
|
+
constructor(di) {
|
|
21
|
+
super();
|
|
22
|
+
this.di = di;
|
|
23
|
+
}
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
async sign(agentContext, document, keyHint) {
|
|
26
|
+
return this.di.sign(agentContext, document, keyHint);
|
|
27
|
+
}
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
async verify(_agentContext, input) {
|
|
30
|
+
try {
|
|
31
|
+
const res = await this.di.verify(input);
|
|
32
|
+
return { verified: !!res.verified, credential: input };
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
return { verified: false, error: e?.message || String(e) };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
exports.JsonLdCryptoDriver = JsonLdCryptoDriver;
|
|
40
|
+
exports.JsonLdCryptoDriver = JsonLdCryptoDriver = __decorate([
|
|
41
|
+
(0, core_1.injectable)(),
|
|
42
|
+
__param(0, (0, core_1.inject)(DataIntegrityService_1.DataIntegrityService)),
|
|
43
|
+
__metadata("design:paramtypes", [DataIntegrityService_1.DataIntegrityService])
|
|
44
|
+
], JsonLdCryptoDriver);
|
|
45
|
+
//# sourceMappingURL=JsonLdCryptoDriver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonLdCryptoDriver.js","sourceRoot":"","sources":["../../../src/services/crypto/JsonLdCryptoDriver.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAmD;AAEnD,iDAA6C;AAC7C,kEAA8D;AAGvD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,2BAAY;IAClD,YAAkE,EAAwB;QACxF,KAAK,EAAE,CAAA;QADyD,OAAE,GAAF,EAAE,CAAsB;IAE1F,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,IAAI,CAAC,YAA0B,EAAE,QAAa,EAAE,OAAa;QACxE,OAAO,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;IACtD,CAAC;IAED,8DAA8D;IACvD,KAAK,CAAC,MAAM,CAAC,aAA2B,EAAE,KAAU;QACzD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;QACxD,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5D,CAAC;IACH,CAAC;CACF,CAAA;AAnBY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,iBAAU,GAAE;IAES,WAAA,IAAA,aAAM,EAAC,2CAAoB,CAAC,CAAA;qCAAsB,2CAAoB;GAD/E,kBAAkB,CAmB9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AgentContext } from '@credo-ts/core';
|
|
2
|
+
import { CryptoDriver } from './CryptoDriver';
|
|
3
|
+
import { JwtService } from '../JwtService';
|
|
4
|
+
export declare class JwtCryptoDriver extends CryptoDriver {
|
|
5
|
+
private readonly jwt;
|
|
6
|
+
constructor(jwt: JwtService);
|
|
7
|
+
sign(agentContext: AgentContext, document: any, keyHint?: any): Promise<any>;
|
|
8
|
+
verify(agentContext: AgentContext, input: any): Promise<{
|
|
9
|
+
verified: boolean;
|
|
10
|
+
credential: any;
|
|
11
|
+
error: string | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
}
|