@credo-ts/anoncreds 0.6.0-pr-2143-20250106173054 → 0.6.0-pr-2195-20250217183709
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/build/AnonCredsApi.js +7 -4
- package/build/AnonCredsApi.js.map +1 -1
- package/build/AnonCredsModuleConfig.js +2 -4
- package/build/AnonCredsModuleConfig.js.map +1 -1
- package/build/anoncreds-rs/AnonCredsDataIntegrityService.js +13 -14
- package/build/anoncreds-rs/AnonCredsDataIntegrityService.js.map +1 -1
- package/build/anoncreds-rs/AnonCredsRsHolderService.js +22 -28
- package/build/anoncreds-rs/AnonCredsRsHolderService.js.map +1 -1
- package/build/anoncreds-rs/AnonCredsRsIssuerService.js +23 -17
- package/build/anoncreds-rs/AnonCredsRsIssuerService.js.map +1 -1
- package/build/anoncreds-rs/AnonCredsRsVerifierService.js +6 -7
- package/build/anoncreds-rs/AnonCredsRsVerifierService.js.map +1 -1
- package/build/anoncreds-rs/utils.js +3 -3
- package/build/anoncreds-rs/utils.js.map +1 -1
- package/build/formats/AnonCredsCredentialFormat.d.ts +1 -1
- package/build/formats/AnonCredsCredentialFormatService.d.ts +3 -2
- package/build/formats/AnonCredsCredentialFormatService.js +26 -39
- package/build/formats/AnonCredsCredentialFormatService.js.map +1 -1
- package/build/formats/AnonCredsProofFormat.d.ts +1 -1
- package/build/formats/AnonCredsProofFormatService.d.ts +2 -1
- package/build/formats/AnonCredsProofFormatService.js +26 -27
- package/build/formats/AnonCredsProofFormatService.js.map +1 -1
- package/build/formats/DataIntegrityCredentialFormatService.d.ts +3 -2
- package/build/formats/DataIntegrityCredentialFormatService.js +82 -83
- package/build/formats/DataIntegrityCredentialFormatService.js.map +1 -1
- package/build/formats/LegacyIndyCredentialFormat.d.ts +1 -1
- package/build/formats/LegacyIndyCredentialFormatService.d.ts +3 -2
- package/build/formats/LegacyIndyCredentialFormatService.js +19 -32
- package/build/formats/LegacyIndyCredentialFormatService.js.map +1 -1
- package/build/formats/LegacyIndyProofFormat.d.ts +1 -1
- package/build/formats/LegacyIndyProofFormatService.d.ts +2 -1
- package/build/formats/LegacyIndyProofFormatService.js +28 -30
- package/build/formats/LegacyIndyProofFormatService.js.map +1 -1
- package/build/models/AnonCredsProofRequest.js +2 -3
- package/build/models/AnonCredsProofRequest.js.map +1 -1
- package/build/models/AnonCredsRequestedAttribute.js +1 -2
- package/build/models/AnonCredsRequestedAttribute.js.map +1 -1
- package/build/models/AnonCredsRequestedPredicate.js +1 -2
- package/build/models/AnonCredsRequestedPredicate.js.map +1 -1
- package/build/models/AnonCredsRestriction.js +2 -3
- package/build/models/AnonCredsRestriction.js.map +1 -1
- package/build/protocols/credentials/v1/V1CredentialProtocol.d.ts +4 -3
- package/build/protocols/credentials/v1/V1CredentialProtocol.js +159 -155
- package/build/protocols/credentials/v1/V1CredentialProtocol.js.map +1 -1
- package/build/protocols/credentials/v1/errors/V1CredentialProblemReportError.d.ts +2 -2
- package/build/protocols/credentials/v1/errors/V1CredentialProblemReportError.js +2 -2
- package/build/protocols/credentials/v1/errors/V1CredentialProblemReportError.js.map +1 -1
- package/build/protocols/credentials/v1/handlers/V1CredentialAckHandler.d.ts +1 -1
- package/build/protocols/credentials/v1/handlers/V1CredentialProblemReportHandler.d.ts +1 -1
- package/build/protocols/credentials/v1/handlers/V1IssueCredentialHandler.d.ts +2 -2
- package/build/protocols/credentials/v1/handlers/V1IssueCredentialHandler.js +2 -1
- package/build/protocols/credentials/v1/handlers/V1IssueCredentialHandler.js.map +1 -1
- package/build/protocols/credentials/v1/handlers/V1OfferCredentialHandler.d.ts +2 -2
- package/build/protocols/credentials/v1/handlers/V1OfferCredentialHandler.js +2 -2
- package/build/protocols/credentials/v1/handlers/V1OfferCredentialHandler.js.map +1 -1
- package/build/protocols/credentials/v1/handlers/V1ProposeCredentialHandler.d.ts +2 -2
- package/build/protocols/credentials/v1/handlers/V1ProposeCredentialHandler.js +2 -2
- package/build/protocols/credentials/v1/handlers/V1ProposeCredentialHandler.js.map +1 -1
- package/build/protocols/credentials/v1/handlers/V1RequestCredentialHandler.d.ts +2 -2
- package/build/protocols/credentials/v1/handlers/V1RequestCredentialHandler.js +2 -1
- package/build/protocols/credentials/v1/handlers/V1RequestCredentialHandler.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1CredentialAckMessage.d.ts +3 -3
- package/build/protocols/credentials/v1/messages/V1CredentialAckMessage.js +4 -4
- package/build/protocols/credentials/v1/messages/V1CredentialAckMessage.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1CredentialPreview.d.ts +3 -3
- package/build/protocols/credentials/v1/messages/V1CredentialPreview.js +8 -7
- package/build/protocols/credentials/v1/messages/V1CredentialPreview.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1CredentialProblemReportMessage.d.ts +3 -3
- package/build/protocols/credentials/v1/messages/V1CredentialProblemReportMessage.js +4 -4
- package/build/protocols/credentials/v1/messages/V1CredentialProblemReportMessage.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1IssueCredentialMessage.d.ts +2 -2
- package/build/protocols/credentials/v1/messages/V1IssueCredentialMessage.js +8 -10
- package/build/protocols/credentials/v1/messages/V1IssueCredentialMessage.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1OfferCredentialMessage.d.ts +2 -2
- package/build/protocols/credentials/v1/messages/V1OfferCredentialMessage.js +7 -8
- package/build/protocols/credentials/v1/messages/V1OfferCredentialMessage.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1ProposeCredentialMessage.d.ts +3 -3
- package/build/protocols/credentials/v1/messages/V1ProposeCredentialMessage.js +5 -6
- package/build/protocols/credentials/v1/messages/V1ProposeCredentialMessage.js.map +1 -1
- package/build/protocols/credentials/v1/messages/V1RequestCredentialMessage.d.ts +2 -2
- package/build/protocols/credentials/v1/messages/V1RequestCredentialMessage.js +7 -8
- package/build/protocols/credentials/v1/messages/V1RequestCredentialMessage.js.map +1 -1
- package/build/protocols/proofs/v1/V1ProofProtocol.d.ts +4 -3
- package/build/protocols/proofs/v1/V1ProofProtocol.js +147 -156
- package/build/protocols/proofs/v1/V1ProofProtocol.js.map +1 -1
- package/build/protocols/proofs/v1/errors/V1PresentationProblemReportError.d.ts +2 -2
- package/build/protocols/proofs/v1/errors/V1PresentationProblemReportError.js +2 -2
- package/build/protocols/proofs/v1/errors/V1PresentationProblemReportError.js.map +1 -1
- package/build/protocols/proofs/v1/handlers/V1PresentationAckHandler.d.ts +1 -1
- package/build/protocols/proofs/v1/handlers/V1PresentationHandler.d.ts +2 -2
- package/build/protocols/proofs/v1/handlers/V1PresentationHandler.js +2 -1
- package/build/protocols/proofs/v1/handlers/V1PresentationHandler.js.map +1 -1
- package/build/protocols/proofs/v1/handlers/V1PresentationProblemReportHandler.d.ts +1 -1
- package/build/protocols/proofs/v1/handlers/V1ProposePresentationHandler.d.ts +2 -2
- package/build/protocols/proofs/v1/handlers/V1ProposePresentationHandler.js +2 -2
- package/build/protocols/proofs/v1/handlers/V1ProposePresentationHandler.js.map +1 -1
- package/build/protocols/proofs/v1/handlers/V1RequestPresentationHandler.d.ts +2 -2
- package/build/protocols/proofs/v1/handlers/V1RequestPresentationHandler.js +2 -2
- package/build/protocols/proofs/v1/handlers/V1RequestPresentationHandler.js.map +1 -1
- package/build/protocols/proofs/v1/messages/V1PresentationAckMessage.d.ts +3 -3
- package/build/protocols/proofs/v1/messages/V1PresentationAckMessage.js +4 -4
- package/build/protocols/proofs/v1/messages/V1PresentationAckMessage.js.map +1 -1
- package/build/protocols/proofs/v1/messages/V1PresentationMessage.d.ts +2 -2
- package/build/protocols/proofs/v1/messages/V1PresentationMessage.js +9 -11
- package/build/protocols/proofs/v1/messages/V1PresentationMessage.js.map +1 -1
- package/build/protocols/proofs/v1/messages/V1PresentationProblemReportMessage.d.ts +3 -3
- package/build/protocols/proofs/v1/messages/V1PresentationProblemReportMessage.js +4 -4
- package/build/protocols/proofs/v1/messages/V1PresentationProblemReportMessage.js.map +1 -1
- package/build/protocols/proofs/v1/messages/V1ProposePresentationMessage.d.ts +2 -2
- package/build/protocols/proofs/v1/messages/V1ProposePresentationMessage.js +5 -6
- package/build/protocols/proofs/v1/messages/V1ProposePresentationMessage.js.map +1 -1
- package/build/protocols/proofs/v1/messages/V1RequestPresentationMessage.d.ts +2 -2
- package/build/protocols/proofs/v1/messages/V1RequestPresentationMessage.js +8 -10
- package/build/protocols/proofs/v1/messages/V1RequestPresentationMessage.js.map +1 -1
- package/build/protocols/proofs/v1/models/V1PresentationPreview.d.ts +1 -1
- package/build/protocols/proofs/v1/models/V1PresentationPreview.js +6 -6
- package/build/protocols/proofs/v1/models/V1PresentationPreview.js.map +1 -1
- package/build/repository/AnonCredsCredentialDefinitionPrivateRecord.js +6 -4
- package/build/repository/AnonCredsCredentialDefinitionPrivateRecord.js.map +1 -1
- package/build/repository/AnonCredsCredentialDefinitionRecord.js +11 -4
- package/build/repository/AnonCredsCredentialDefinitionRecord.js.map +1 -1
- package/build/repository/AnonCredsCredentialRecord.js +12 -4
- package/build/repository/AnonCredsCredentialRecord.js.map +1 -1
- package/build/repository/AnonCredsKeyCorrectnessProofRecord.js +6 -4
- package/build/repository/AnonCredsKeyCorrectnessProofRecord.js.map +1 -1
- package/build/repository/AnonCredsLinkSecretRecord.js +5 -3
- package/build/repository/AnonCredsLinkSecretRecord.js.map +1 -1
- package/build/repository/AnonCredsRevocationRegistryDefinitionPrivateRecord.js +8 -4
- package/build/repository/AnonCredsRevocationRegistryDefinitionPrivateRecord.js.map +1 -1
- package/build/repository/AnonCredsRevocationRegistryDefinitionRecord.js +7 -4
- package/build/repository/AnonCredsRevocationRegistryDefinitionRecord.js.map +1 -1
- package/build/repository/AnonCredsSchemaRecord.js +11 -4
- package/build/repository/AnonCredsSchemaRecord.js.map +1 -1
- package/build/services/tails/BasicTailsFileService.js +2 -3
- package/build/services/tails/BasicTailsFileService.js.map +1 -1
- package/build/updates/0.3.1-0.4/credentialExchangeRecord.d.ts +2 -1
- package/build/updates/0.3.1-0.4/credentialExchangeRecord.js +2 -2
- package/build/updates/0.3.1-0.4/credentialExchangeRecord.js.map +1 -1
- package/build/updates/0.3.1-0.4/linkSecret.js +2 -3
- package/build/updates/0.3.1-0.4/linkSecret.js.map +1 -1
- package/build/updates/0.4-0.5/anonCredsCredentialRecord.js +4 -4
- package/build/updates/0.4-0.5/anonCredsCredentialRecord.js.map +1 -1
- package/build/utils/bytesToBigint.d.ts +1 -0
- package/build/utils/bytesToBigint.js +14 -0
- package/build/utils/bytesToBigint.js.map +1 -0
- package/build/utils/composeAutoAccept.d.ts +1 -1
- package/build/utils/composeAutoAccept.js +3 -5
- package/build/utils/composeAutoAccept.js.map +1 -1
- package/build/utils/createRequestFromPreview.js +3 -4
- package/build/utils/createRequestFromPreview.js.map +1 -1
- package/build/utils/credential.d.ts +1 -1
- package/build/utils/credential.js +10 -10
- package/build/utils/credential.js.map +1 -1
- package/build/utils/credentialPreviewAttributes.d.ts +1 -1
- package/build/utils/credentialPreviewAttributes.js +1 -1
- package/build/utils/credentialPreviewAttributes.js.map +1 -1
- package/build/utils/getCredentialsForAnonCredsRequest.js +2 -3
- package/build/utils/getCredentialsForAnonCredsRequest.js.map +1 -1
- package/build/utils/getRevocationRegistries.js +13 -5
- package/build/utils/getRevocationRegistries.js.map +1 -1
- package/build/utils/indyIdentifiers.js +23 -12
- package/build/utils/indyIdentifiers.js.map +1 -1
- package/build/utils/proofRequest.js +7 -10
- package/build/utils/proofRequest.js.map +1 -1
- package/build/utils/w3cAnonCredsUtils.js +29 -21
- package/build/utils/w3cAnonCredsUtils.js.map +1 -1
- package/package.json +4 -5
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.V1ProofProtocol = void 0;
|
|
4
4
|
const core_1 = require("@credo-ts/core");
|
|
5
|
+
const didcomm_1 = require("@credo-ts/didcomm");
|
|
5
6
|
const utils_1 = require("../../../utils");
|
|
6
7
|
const errors_1 = require("./errors");
|
|
7
8
|
const handlers_1 = require("./handlers");
|
|
8
9
|
const messages_1 = require("./messages");
|
|
9
10
|
const V1PresentationProblemReportMessage_1 = require("./messages/V1PresentationProblemReportMessage");
|
|
10
11
|
const V1PresentationPreview_1 = require("./models/V1PresentationPreview");
|
|
11
|
-
class V1ProofProtocol extends
|
|
12
|
+
class V1ProofProtocol extends didcomm_1.BaseProofProtocol {
|
|
12
13
|
constructor({ indyProofFormat }) {
|
|
13
14
|
super();
|
|
14
15
|
/**
|
|
@@ -21,9 +22,9 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
21
22
|
/**
|
|
22
23
|
* Registers the protocol implementation (handlers, feature registry) on the agent.
|
|
23
24
|
*/
|
|
24
|
-
register(
|
|
25
|
+
register(messageHandlerRegistry, featureRegistry) {
|
|
25
26
|
// Register message handlers for the Issue Credential V1 Protocol
|
|
26
|
-
|
|
27
|
+
messageHandlerRegistry.registerMessageHandlers([
|
|
27
28
|
new handlers_1.V1ProposePresentationHandler(this),
|
|
28
29
|
new handlers_1.V1RequestPresentationHandler(this),
|
|
29
30
|
new handlers_1.V1PresentationHandler(this),
|
|
@@ -31,22 +32,21 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
31
32
|
new handlers_1.V1PresentationProblemReportHandler(this),
|
|
32
33
|
]);
|
|
33
34
|
// Register Present Proof V1 in feature registry, with supported roles
|
|
34
|
-
featureRegistry.register(new
|
|
35
|
+
featureRegistry.register(new didcomm_1.Protocol({
|
|
35
36
|
id: 'https://didcomm.org/present-proof/1.0',
|
|
36
37
|
roles: ['prover', 'verifier'],
|
|
37
38
|
}));
|
|
38
39
|
}
|
|
39
40
|
async createProposal(agentContext, { proofFormats, connectionRecord, comment, parentThreadId, autoAcceptProof, }) {
|
|
40
|
-
var _a, _b, _c;
|
|
41
41
|
this.assertOnlyIndyFormat(proofFormats);
|
|
42
|
-
const proofRepository = agentContext.dependencyManager.resolve(
|
|
43
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
42
|
+
const proofRepository = agentContext.dependencyManager.resolve(didcomm_1.ProofRepository);
|
|
43
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
44
44
|
if (!proofFormats.indy) {
|
|
45
45
|
throw new core_1.CredoError('Missing indy proof format in v1 create proposal call.');
|
|
46
46
|
}
|
|
47
47
|
const presentationProposal = new V1PresentationPreview_1.V1PresentationPreview({
|
|
48
|
-
attributes:
|
|
49
|
-
predicates:
|
|
48
|
+
attributes: proofFormats.indy?.attributes,
|
|
49
|
+
predicates: proofFormats.indy?.predicates,
|
|
50
50
|
});
|
|
51
51
|
// validate input data from user
|
|
52
52
|
core_1.MessageValidator.validateSync(presentationProposal);
|
|
@@ -60,53 +60,52 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
60
60
|
parentThreadId,
|
|
61
61
|
});
|
|
62
62
|
// Create record
|
|
63
|
-
const proofRecord = new
|
|
63
|
+
const proofRecord = new didcomm_1.ProofExchangeRecord({
|
|
64
64
|
connectionId: connectionRecord.id,
|
|
65
65
|
threadId: message.threadId,
|
|
66
|
-
parentThreadId:
|
|
67
|
-
state:
|
|
68
|
-
role:
|
|
66
|
+
parentThreadId: message.thread?.parentThreadId,
|
|
67
|
+
state: didcomm_1.ProofState.ProposalSent,
|
|
68
|
+
role: didcomm_1.ProofRole.Prover,
|
|
69
69
|
autoAcceptProof,
|
|
70
70
|
protocolVersion: 'v1',
|
|
71
71
|
});
|
|
72
72
|
await didCommMessageRepository.saveAgentMessage(agentContext, {
|
|
73
73
|
agentMessage: message,
|
|
74
74
|
associatedRecordId: proofRecord.id,
|
|
75
|
-
role:
|
|
75
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
76
76
|
});
|
|
77
77
|
await proofRepository.save(agentContext, proofRecord);
|
|
78
78
|
this.emitStateChangedEvent(agentContext, proofRecord, null);
|
|
79
79
|
return { proofRecord, message };
|
|
80
80
|
}
|
|
81
81
|
async processProposal(messageContext) {
|
|
82
|
-
var _a;
|
|
83
82
|
const { message: proposalMessage, connection, agentContext } = messageContext;
|
|
84
|
-
const proofRepository = agentContext.dependencyManager.resolve(
|
|
85
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
83
|
+
const proofRepository = agentContext.dependencyManager.resolve(didcomm_1.ProofRepository);
|
|
84
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
86
85
|
// TODO: with this method, we should update the credential protocol to use the ConnectionApi, so it
|
|
87
86
|
// only depends on the public api, rather than the internal API (this helps with breaking changes)
|
|
88
|
-
const connectionService = agentContext.dependencyManager.resolve(
|
|
87
|
+
const connectionService = agentContext.dependencyManager.resolve(didcomm_1.ConnectionService);
|
|
89
88
|
agentContext.config.logger.debug(`Processing presentation proposal with message id ${proposalMessage.id}`);
|
|
90
89
|
let proofRecord = await this.findByProperties(agentContext, {
|
|
91
90
|
threadId: proposalMessage.threadId,
|
|
92
|
-
role:
|
|
93
|
-
connectionId: connection
|
|
91
|
+
role: didcomm_1.ProofRole.Verifier,
|
|
92
|
+
connectionId: connection?.id,
|
|
94
93
|
});
|
|
95
94
|
// Proof record already exists, this is a response to an earlier message sent by us
|
|
96
95
|
if (proofRecord) {
|
|
97
96
|
agentContext.config.logger.debug('Proof record already exists for incoming proposal');
|
|
98
97
|
// Assert
|
|
99
|
-
proofRecord.assertState(
|
|
98
|
+
proofRecord.assertState(didcomm_1.ProofState.RequestSent);
|
|
100
99
|
proofRecord.assertProtocolVersion('v1');
|
|
101
100
|
const lastReceivedMessage = await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
102
101
|
associatedRecordId: proofRecord.id,
|
|
103
102
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
104
|
-
role:
|
|
103
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
105
104
|
});
|
|
106
105
|
const lastSentMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
107
106
|
associatedRecordId: proofRecord.id,
|
|
108
107
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
109
|
-
role:
|
|
108
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
110
109
|
});
|
|
111
110
|
await connectionService.assertConnectionOrOutOfBandExchange(messageContext, {
|
|
112
111
|
lastReceivedMessage,
|
|
@@ -117,27 +116,27 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
117
116
|
await didCommMessageRepository.saveOrUpdateAgentMessage(agentContext, {
|
|
118
117
|
agentMessage: proposalMessage,
|
|
119
118
|
associatedRecordId: proofRecord.id,
|
|
120
|
-
role:
|
|
119
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
121
120
|
});
|
|
122
|
-
await this.updateState(agentContext, proofRecord,
|
|
121
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.ProposalReceived);
|
|
123
122
|
}
|
|
124
123
|
else {
|
|
125
124
|
agentContext.config.logger.debug('Proof record does not exist yet for incoming proposal');
|
|
126
125
|
// Assert
|
|
127
126
|
await connectionService.assertConnectionOrOutOfBandExchange(messageContext);
|
|
128
127
|
// No proof record exists with thread id
|
|
129
|
-
proofRecord = new
|
|
130
|
-
connectionId: connection
|
|
128
|
+
proofRecord = new didcomm_1.ProofExchangeRecord({
|
|
129
|
+
connectionId: connection?.id,
|
|
131
130
|
threadId: proposalMessage.threadId,
|
|
132
|
-
parentThreadId:
|
|
133
|
-
state:
|
|
134
|
-
role:
|
|
131
|
+
parentThreadId: proposalMessage.thread?.parentThreadId,
|
|
132
|
+
state: didcomm_1.ProofState.ProposalReceived,
|
|
133
|
+
role: didcomm_1.ProofRole.Verifier,
|
|
135
134
|
protocolVersion: 'v1',
|
|
136
135
|
});
|
|
137
136
|
await didCommMessageRepository.saveOrUpdateAgentMessage(agentContext, {
|
|
138
137
|
agentMessage: proposalMessage,
|
|
139
138
|
associatedRecordId: proofRecord.id,
|
|
140
|
-
role:
|
|
139
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
141
140
|
});
|
|
142
141
|
// Save record
|
|
143
142
|
await proofRepository.save(agentContext, proofRecord);
|
|
@@ -146,29 +145,28 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
146
145
|
return proofRecord;
|
|
147
146
|
}
|
|
148
147
|
async acceptProposal(agentContext, { proofRecord, proofFormats, comment, autoAcceptProof, }) {
|
|
149
|
-
var _a, _b;
|
|
150
148
|
// Assert
|
|
151
149
|
proofRecord.assertProtocolVersion('v1');
|
|
152
|
-
proofRecord.assertState(
|
|
150
|
+
proofRecord.assertState(didcomm_1.ProofState.ProposalReceived);
|
|
153
151
|
if (proofFormats)
|
|
154
152
|
this.assertOnlyIndyFormat(proofFormats);
|
|
155
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
153
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
156
154
|
const proposalMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
157
155
|
associatedRecordId: proofRecord.id,
|
|
158
156
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
159
|
-
role:
|
|
157
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
160
158
|
});
|
|
161
|
-
const indyFormat = proofFormats
|
|
159
|
+
const indyFormat = proofFormats?.indy;
|
|
162
160
|
// Create a proof request from the preview, so we can let the messages
|
|
163
161
|
// be handled using the indy proof format which supports RFC0592
|
|
164
162
|
const requestFromPreview = (0, utils_1.createRequestFromPreview)({
|
|
165
163
|
attributes: proposalMessage.presentationProposal.attributes,
|
|
166
164
|
predicates: proposalMessage.presentationProposal.predicates,
|
|
167
|
-
name:
|
|
168
|
-
version:
|
|
165
|
+
name: indyFormat?.name ?? 'Proof Request',
|
|
166
|
+
version: indyFormat?.version ?? '1.0',
|
|
169
167
|
nonce: await agentContext.wallet.generateNonce(),
|
|
170
168
|
});
|
|
171
|
-
const proposalAttachment = new
|
|
169
|
+
const proposalAttachment = new didcomm_1.Attachment({
|
|
172
170
|
data: {
|
|
173
171
|
json: core_1.JsonTransformer.toJSON(requestFromPreview),
|
|
174
172
|
},
|
|
@@ -190,19 +188,19 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
190
188
|
await didCommMessageRepository.saveOrUpdateAgentMessage(agentContext, {
|
|
191
189
|
agentMessage: requestPresentationMessage,
|
|
192
190
|
associatedRecordId: proofRecord.id,
|
|
193
|
-
role:
|
|
191
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
194
192
|
});
|
|
195
193
|
// Update record
|
|
196
|
-
proofRecord.autoAcceptProof = autoAcceptProof
|
|
197
|
-
await this.updateState(agentContext, proofRecord,
|
|
194
|
+
proofRecord.autoAcceptProof = autoAcceptProof ?? proofRecord.autoAcceptProof;
|
|
195
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.RequestSent);
|
|
198
196
|
return { message: requestPresentationMessage, proofRecord };
|
|
199
197
|
}
|
|
200
198
|
async negotiateProposal(agentContext, { proofFormats, proofRecord, comment, autoAcceptProof, }) {
|
|
201
199
|
// Assert
|
|
202
200
|
proofRecord.assertProtocolVersion('v1');
|
|
203
|
-
proofRecord.assertState(
|
|
201
|
+
proofRecord.assertState(didcomm_1.ProofState.ProposalReceived);
|
|
204
202
|
this.assertOnlyIndyFormat(proofFormats);
|
|
205
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
203
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
206
204
|
// Create message
|
|
207
205
|
const { attachment } = await this.indyProofFormat.createRequest(agentContext, {
|
|
208
206
|
attachmentId: messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID,
|
|
@@ -220,26 +218,26 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
220
218
|
await didCommMessageRepository.saveOrUpdateAgentMessage(agentContext, {
|
|
221
219
|
agentMessage: requestPresentationMessage,
|
|
222
220
|
associatedRecordId: proofRecord.id,
|
|
223
|
-
role:
|
|
221
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
224
222
|
});
|
|
225
|
-
proofRecord.autoAcceptProof = autoAcceptProof
|
|
226
|
-
await this.updateState(agentContext, proofRecord,
|
|
223
|
+
proofRecord.autoAcceptProof = autoAcceptProof ?? proofRecord.autoAcceptProof;
|
|
224
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.RequestSent);
|
|
227
225
|
return { message: requestPresentationMessage, proofRecord };
|
|
228
226
|
}
|
|
229
227
|
async createRequest(agentContext, { proofFormats, connectionRecord, comment, parentThreadId, autoAcceptProof, }) {
|
|
230
228
|
this.assertOnlyIndyFormat(proofFormats);
|
|
231
|
-
const proofRepository = agentContext.dependencyManager.resolve(
|
|
232
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
229
|
+
const proofRepository = agentContext.dependencyManager.resolve(didcomm_1.ProofRepository);
|
|
230
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
233
231
|
if (!proofFormats.indy) {
|
|
234
232
|
throw new core_1.CredoError('Missing indy proof request data for v1 create request');
|
|
235
233
|
}
|
|
236
234
|
// Create record
|
|
237
|
-
const proofRecord = new
|
|
238
|
-
connectionId: connectionRecord
|
|
235
|
+
const proofRecord = new didcomm_1.ProofExchangeRecord({
|
|
236
|
+
connectionId: connectionRecord?.id,
|
|
239
237
|
threadId: core_1.utils.uuid(),
|
|
240
238
|
parentThreadId,
|
|
241
|
-
state:
|
|
242
|
-
role:
|
|
239
|
+
state: didcomm_1.ProofState.RequestSent,
|
|
240
|
+
role: didcomm_1.ProofRole.Verifier,
|
|
243
241
|
autoAcceptProof,
|
|
244
242
|
protocolVersion: 'v1',
|
|
245
243
|
});
|
|
@@ -262,25 +260,24 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
262
260
|
await didCommMessageRepository.saveAgentMessage(agentContext, {
|
|
263
261
|
agentMessage: message,
|
|
264
262
|
associatedRecordId: proofRecord.id,
|
|
265
|
-
role:
|
|
263
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
266
264
|
});
|
|
267
265
|
await proofRepository.save(agentContext, proofRecord);
|
|
268
266
|
this.emitStateChangedEvent(agentContext, proofRecord, null);
|
|
269
267
|
return { message, proofRecord };
|
|
270
268
|
}
|
|
271
269
|
async processRequest(messageContext) {
|
|
272
|
-
var _a;
|
|
273
270
|
const { message: proofRequestMessage, connection, agentContext } = messageContext;
|
|
274
|
-
const proofRepository = agentContext.dependencyManager.resolve(
|
|
275
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
271
|
+
const proofRepository = agentContext.dependencyManager.resolve(didcomm_1.ProofRepository);
|
|
272
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
276
273
|
// TODO: with this method, we should update the credential protocol to use the ConnectionApi, so it
|
|
277
274
|
// only depends on the public api, rather than the internal API (this helps with breaking changes)
|
|
278
|
-
const connectionService = agentContext.dependencyManager.resolve(
|
|
275
|
+
const connectionService = agentContext.dependencyManager.resolve(didcomm_1.ConnectionService);
|
|
279
276
|
agentContext.config.logger.debug(`Processing presentation request with id ${proofRequestMessage.id}`);
|
|
280
277
|
let proofRecord = await this.findByProperties(agentContext, {
|
|
281
278
|
threadId: proofRequestMessage.threadId,
|
|
282
|
-
role:
|
|
283
|
-
connectionId: connection
|
|
279
|
+
role: didcomm_1.ProofRole.Prover,
|
|
280
|
+
connectionId: connection?.id,
|
|
284
281
|
});
|
|
285
282
|
const requestAttachment = proofRequestMessage.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
286
283
|
if (!requestAttachment) {
|
|
@@ -291,16 +288,16 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
291
288
|
const lastReceivedMessage = await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
292
289
|
associatedRecordId: proofRecord.id,
|
|
293
290
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
294
|
-
role:
|
|
291
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
295
292
|
});
|
|
296
293
|
const lastSentMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
297
294
|
associatedRecordId: proofRecord.id,
|
|
298
295
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
299
|
-
role:
|
|
296
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
300
297
|
});
|
|
301
298
|
// Assert
|
|
302
299
|
proofRecord.assertProtocolVersion('v1');
|
|
303
|
-
proofRecord.assertState(
|
|
300
|
+
proofRecord.assertState(didcomm_1.ProofState.ProposalSent);
|
|
304
301
|
await connectionService.assertConnectionOrOutOfBandExchange(messageContext, {
|
|
305
302
|
lastReceivedMessage,
|
|
306
303
|
lastSentMessage,
|
|
@@ -313,20 +310,20 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
313
310
|
await didCommMessageRepository.saveOrUpdateAgentMessage(agentContext, {
|
|
314
311
|
agentMessage: proofRequestMessage,
|
|
315
312
|
associatedRecordId: proofRecord.id,
|
|
316
|
-
role:
|
|
313
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
317
314
|
});
|
|
318
|
-
await this.updateState(agentContext, proofRecord,
|
|
315
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.RequestReceived);
|
|
319
316
|
}
|
|
320
317
|
else {
|
|
321
318
|
// Assert
|
|
322
319
|
await connectionService.assertConnectionOrOutOfBandExchange(messageContext);
|
|
323
320
|
// No proof record exists with thread id
|
|
324
|
-
proofRecord = new
|
|
325
|
-
connectionId: connection
|
|
321
|
+
proofRecord = new didcomm_1.ProofExchangeRecord({
|
|
322
|
+
connectionId: connection?.id,
|
|
326
323
|
threadId: proofRequestMessage.threadId,
|
|
327
|
-
parentThreadId:
|
|
328
|
-
state:
|
|
329
|
-
role:
|
|
324
|
+
parentThreadId: proofRequestMessage.thread?.parentThreadId,
|
|
325
|
+
state: didcomm_1.ProofState.RequestReceived,
|
|
326
|
+
role: didcomm_1.ProofRole.Prover,
|
|
330
327
|
protocolVersion: 'v1',
|
|
331
328
|
});
|
|
332
329
|
await this.indyProofFormat.processRequest(agentContext, {
|
|
@@ -336,7 +333,7 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
336
333
|
await didCommMessageRepository.saveAgentMessage(agentContext, {
|
|
337
334
|
agentMessage: proofRequestMessage,
|
|
338
335
|
associatedRecordId: proofRecord.id,
|
|
339
|
-
role:
|
|
336
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
340
337
|
});
|
|
341
338
|
// Save in repository
|
|
342
339
|
await proofRepository.save(agentContext, proofRecord);
|
|
@@ -345,12 +342,11 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
345
342
|
return proofRecord;
|
|
346
343
|
}
|
|
347
344
|
async negotiateRequest(agentContext, { proofFormats, proofRecord, comment, autoAcceptProof, }) {
|
|
348
|
-
var _a, _b;
|
|
349
345
|
// Assert
|
|
350
346
|
proofRecord.assertProtocolVersion('v1');
|
|
351
|
-
proofRecord.assertState(
|
|
347
|
+
proofRecord.assertState(didcomm_1.ProofState.RequestReceived);
|
|
352
348
|
this.assertOnlyIndyFormat(proofFormats);
|
|
353
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
349
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
354
350
|
if (!proofRecord.connectionId) {
|
|
355
351
|
throw new core_1.CredoError(`No connectionId found for proof record '${proofRecord.id}'. Connection-less verification does not support negotiation.`);
|
|
356
352
|
}
|
|
@@ -358,8 +354,8 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
358
354
|
throw new core_1.CredoError('Missing indy proof format in v1 negotiate request call.');
|
|
359
355
|
}
|
|
360
356
|
const presentationProposal = new V1PresentationPreview_1.V1PresentationPreview({
|
|
361
|
-
attributes:
|
|
362
|
-
predicates:
|
|
357
|
+
attributes: proofFormats.indy?.attributes,
|
|
358
|
+
predicates: proofFormats.indy?.predicates,
|
|
363
359
|
});
|
|
364
360
|
// validate input data from user
|
|
365
361
|
core_1.MessageValidator.validateSync(presentationProposal);
|
|
@@ -371,40 +367,39 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
371
367
|
await didCommMessageRepository.saveOrUpdateAgentMessage(agentContext, {
|
|
372
368
|
agentMessage: message,
|
|
373
369
|
associatedRecordId: proofRecord.id,
|
|
374
|
-
role:
|
|
370
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
375
371
|
});
|
|
376
372
|
// Update record
|
|
377
|
-
proofRecord.autoAcceptProof = autoAcceptProof
|
|
378
|
-
await this.updateState(agentContext, proofRecord,
|
|
373
|
+
proofRecord.autoAcceptProof = autoAcceptProof ?? proofRecord.autoAcceptProof;
|
|
374
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.ProposalSent);
|
|
379
375
|
return { proofRecord, message: message };
|
|
380
376
|
}
|
|
381
377
|
async acceptRequest(agentContext, { proofRecord, proofFormats, autoAcceptProof, comment, }) {
|
|
382
|
-
var _a, _b;
|
|
383
378
|
// Assert
|
|
384
379
|
proofRecord.assertProtocolVersion('v1');
|
|
385
|
-
proofRecord.assertState(
|
|
386
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
380
|
+
proofRecord.assertState(didcomm_1.ProofState.RequestReceived);
|
|
381
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
387
382
|
const requestMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
388
383
|
associatedRecordId: proofRecord.id,
|
|
389
384
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
390
|
-
role:
|
|
385
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
391
386
|
});
|
|
392
387
|
const proposalMessage = await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
393
388
|
associatedRecordId: proofRecord.id,
|
|
394
389
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
395
|
-
role:
|
|
390
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
396
391
|
});
|
|
397
392
|
const requestAttachment = requestMessage.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
398
393
|
const indyProofRequest = requestMessage.indyProofRequest;
|
|
399
394
|
if (!requestAttachment || !indyProofRequest) {
|
|
400
|
-
throw new errors_1.V1PresentationProblemReportError(`Missing indy attachment in request message for presentation with thread id ${proofRecord.threadId}`, { problemCode:
|
|
395
|
+
throw new errors_1.V1PresentationProblemReportError(`Missing indy attachment in request message for presentation with thread id ${proofRecord.threadId}`, { problemCode: didcomm_1.PresentationProblemReportReason.Abandoned });
|
|
401
396
|
}
|
|
402
397
|
const proposalAttachment = proposalMessage
|
|
403
|
-
? new
|
|
398
|
+
? new didcomm_1.Attachment({
|
|
404
399
|
data: {
|
|
405
400
|
json: core_1.JsonTransformer.toJSON((0, utils_1.createRequestFromPreview)({
|
|
406
|
-
attributes:
|
|
407
|
-
predicates:
|
|
401
|
+
attributes: proposalMessage.presentationProposal?.attributes,
|
|
402
|
+
predicates: proposalMessage.presentationProposal?.predicates,
|
|
408
403
|
name: indyProofRequest.name,
|
|
409
404
|
nonce: indyProofRequest.nonce,
|
|
410
405
|
version: indyProofRequest.nonce,
|
|
@@ -427,27 +422,26 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
427
422
|
await didCommMessageRepository.saveAgentMessage(agentContext, {
|
|
428
423
|
agentMessage: message,
|
|
429
424
|
associatedRecordId: proofRecord.id,
|
|
430
|
-
role:
|
|
425
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
431
426
|
});
|
|
432
427
|
// Update record
|
|
433
|
-
proofRecord.autoAcceptProof = autoAcceptProof
|
|
434
|
-
await this.updateState(agentContext, proofRecord,
|
|
428
|
+
proofRecord.autoAcceptProof = autoAcceptProof ?? proofRecord.autoAcceptProof;
|
|
429
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.PresentationSent);
|
|
435
430
|
return { message, proofRecord };
|
|
436
431
|
}
|
|
437
432
|
async getCredentialsForRequest(agentContext, { proofRecord, proofFormats }) {
|
|
438
|
-
var _a, _b;
|
|
439
433
|
if (proofFormats)
|
|
440
434
|
this.assertOnlyIndyFormat(proofFormats);
|
|
441
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
435
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
442
436
|
const requestMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
443
437
|
associatedRecordId: proofRecord.id,
|
|
444
438
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
445
|
-
role:
|
|
439
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
446
440
|
});
|
|
447
441
|
const proposalMessage = await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
448
442
|
associatedRecordId: proofRecord.id,
|
|
449
443
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
450
|
-
role:
|
|
444
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
451
445
|
});
|
|
452
446
|
const requestAttachment = requestMessage.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
453
447
|
const indyProofRequest = requestMessage.indyProofRequest;
|
|
@@ -455,11 +449,11 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
455
449
|
throw new core_1.CredoError(`Missing indy attachment in request message for presentation with thread id ${proofRecord.threadId}`);
|
|
456
450
|
}
|
|
457
451
|
const proposalAttachment = proposalMessage
|
|
458
|
-
? new
|
|
452
|
+
? new didcomm_1.Attachment({
|
|
459
453
|
data: {
|
|
460
454
|
json: core_1.JsonTransformer.toJSON((0, utils_1.createRequestFromPreview)({
|
|
461
|
-
attributes:
|
|
462
|
-
predicates:
|
|
455
|
+
attributes: proposalMessage.presentationProposal?.attributes,
|
|
456
|
+
predicates: proposalMessage.presentationProposal?.predicates,
|
|
463
457
|
name: indyProofRequest.name,
|
|
464
458
|
nonce: indyProofRequest.nonce,
|
|
465
459
|
version: indyProofRequest.nonce,
|
|
@@ -480,19 +474,18 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
480
474
|
};
|
|
481
475
|
}
|
|
482
476
|
async selectCredentialsForRequest(agentContext, { proofRecord, proofFormats, }) {
|
|
483
|
-
var _a, _b;
|
|
484
477
|
if (proofFormats)
|
|
485
478
|
this.assertOnlyIndyFormat(proofFormats);
|
|
486
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
479
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
487
480
|
const requestMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
488
481
|
associatedRecordId: proofRecord.id,
|
|
489
482
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
490
|
-
role:
|
|
483
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
491
484
|
});
|
|
492
485
|
const proposalMessage = await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
493
486
|
associatedRecordId: proofRecord.id,
|
|
494
487
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
495
|
-
role:
|
|
488
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
496
489
|
});
|
|
497
490
|
const requestAttachment = requestMessage.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
498
491
|
const indyProofRequest = requestMessage.indyProofRequest;
|
|
@@ -500,11 +493,11 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
500
493
|
throw new core_1.CredoError(`Missing indy attachment in request message for presentation with thread id ${proofRecord.threadId}`);
|
|
501
494
|
}
|
|
502
495
|
const proposalAttachment = proposalMessage
|
|
503
|
-
? new
|
|
496
|
+
? new didcomm_1.Attachment({
|
|
504
497
|
data: {
|
|
505
498
|
json: core_1.JsonTransformer.toJSON((0, utils_1.createRequestFromPreview)({
|
|
506
|
-
attributes:
|
|
507
|
-
predicates:
|
|
499
|
+
attributes: proposalMessage.presentationProposal?.attributes,
|
|
500
|
+
predicates: proposalMessage.presentationProposal?.predicates,
|
|
508
501
|
name: indyProofRequest.name,
|
|
509
502
|
nonce: indyProofRequest.nonce,
|
|
510
503
|
version: indyProofRequest.nonce,
|
|
@@ -525,29 +518,28 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
525
518
|
};
|
|
526
519
|
}
|
|
527
520
|
async processPresentation(messageContext) {
|
|
528
|
-
var _a;
|
|
529
521
|
const { message: presentationMessage, connection, agentContext } = messageContext;
|
|
530
522
|
agentContext.config.logger.debug(`Processing presentation with message id ${presentationMessage.id}`);
|
|
531
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
523
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
532
524
|
// TODO: with this method, we should update the credential protocol to use the ConnectionApi, so it
|
|
533
525
|
// only depends on the public api, rather than the internal API (this helps with breaking changes)
|
|
534
|
-
const connectionService = agentContext.dependencyManager.resolve(
|
|
526
|
+
const connectionService = agentContext.dependencyManager.resolve(didcomm_1.ConnectionService);
|
|
535
527
|
const proofRecord = await this.getByProperties(agentContext, {
|
|
536
528
|
threadId: presentationMessage.threadId,
|
|
537
|
-
role:
|
|
529
|
+
role: didcomm_1.ProofRole.Verifier,
|
|
538
530
|
});
|
|
539
531
|
const proposalMessage = await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
540
532
|
associatedRecordId: proofRecord.id,
|
|
541
533
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
542
|
-
role:
|
|
534
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
543
535
|
});
|
|
544
536
|
const requestMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
545
537
|
associatedRecordId: proofRecord.id,
|
|
546
538
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
547
|
-
role:
|
|
539
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
548
540
|
});
|
|
549
541
|
// Assert
|
|
550
|
-
proofRecord.assertState(
|
|
542
|
+
proofRecord.assertState(didcomm_1.ProofState.RequestSent);
|
|
551
543
|
proofRecord.assertProtocolVersion('v1');
|
|
552
544
|
await connectionService.assertConnectionOrOutOfBandExchange(messageContext, {
|
|
553
545
|
lastReceivedMessage: proposalMessage,
|
|
@@ -559,28 +551,28 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
559
551
|
await connectionService.matchIncomingMessageToRequestMessageInOutOfBandExchange(messageContext, {
|
|
560
552
|
expectedConnectionId: proofRecord.connectionId,
|
|
561
553
|
});
|
|
562
|
-
proofRecord.connectionId = connection
|
|
554
|
+
proofRecord.connectionId = connection?.id;
|
|
563
555
|
}
|
|
564
556
|
const presentationAttachment = presentationMessage.getPresentationAttachmentById(messages_1.INDY_PROOF_ATTACHMENT_ID);
|
|
565
557
|
if (!presentationAttachment) {
|
|
566
558
|
proofRecord.errorMessage = 'Missing indy proof attachment';
|
|
567
|
-
await this.updateState(agentContext, proofRecord,
|
|
559
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.Abandoned);
|
|
568
560
|
throw new errors_1.V1PresentationProblemReportError(proofRecord.errorMessage, {
|
|
569
|
-
problemCode:
|
|
561
|
+
problemCode: didcomm_1.PresentationProblemReportReason.Abandoned,
|
|
570
562
|
});
|
|
571
563
|
}
|
|
572
564
|
const requestAttachment = requestMessage.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
573
565
|
if (!requestAttachment) {
|
|
574
566
|
proofRecord.errorMessage = 'Missing indy proof request attachment';
|
|
575
|
-
await this.updateState(agentContext, proofRecord,
|
|
567
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.Abandoned);
|
|
576
568
|
throw new errors_1.V1PresentationProblemReportError(proofRecord.errorMessage, {
|
|
577
|
-
problemCode:
|
|
569
|
+
problemCode: didcomm_1.PresentationProblemReportReason.Abandoned,
|
|
578
570
|
});
|
|
579
571
|
}
|
|
580
572
|
await didCommMessageRepository.saveAgentMessage(agentContext, {
|
|
581
573
|
agentMessage: presentationMessage,
|
|
582
574
|
associatedRecordId: proofRecord.id,
|
|
583
|
-
role:
|
|
575
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
584
576
|
});
|
|
585
577
|
let isValid;
|
|
586
578
|
try {
|
|
@@ -591,34 +583,34 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
591
583
|
});
|
|
592
584
|
}
|
|
593
585
|
catch (error) {
|
|
594
|
-
proofRecord.errorMessage =
|
|
586
|
+
proofRecord.errorMessage = error.message ?? 'Error verifying proof on presentation';
|
|
595
587
|
proofRecord.isVerified = false;
|
|
596
|
-
await this.updateState(agentContext, proofRecord,
|
|
588
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.Abandoned);
|
|
597
589
|
throw new errors_1.V1PresentationProblemReportError('Error verifying proof on presentation', {
|
|
598
|
-
problemCode:
|
|
590
|
+
problemCode: didcomm_1.PresentationProblemReportReason.Abandoned,
|
|
599
591
|
});
|
|
600
592
|
}
|
|
601
593
|
if (!isValid) {
|
|
602
594
|
proofRecord.errorMessage = 'Invalid proof';
|
|
603
595
|
proofRecord.isVerified = false;
|
|
604
|
-
await this.updateState(agentContext, proofRecord,
|
|
596
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.Abandoned);
|
|
605
597
|
throw new errors_1.V1PresentationProblemReportError('Invalid proof', {
|
|
606
|
-
problemCode:
|
|
598
|
+
problemCode: didcomm_1.PresentationProblemReportReason.Abandoned,
|
|
607
599
|
});
|
|
608
600
|
}
|
|
609
601
|
// Update record
|
|
610
602
|
proofRecord.isVerified = isValid;
|
|
611
|
-
await this.updateState(agentContext, proofRecord,
|
|
603
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.PresentationReceived);
|
|
612
604
|
return proofRecord;
|
|
613
605
|
}
|
|
614
606
|
async acceptPresentation(agentContext, { proofRecord }) {
|
|
615
607
|
agentContext.config.logger.debug(`Creating presentation ack for proof record with id ${proofRecord.id}`);
|
|
616
608
|
// Assert
|
|
617
609
|
proofRecord.assertProtocolVersion('v1');
|
|
618
|
-
proofRecord.assertState(
|
|
610
|
+
proofRecord.assertState(didcomm_1.ProofState.PresentationReceived);
|
|
619
611
|
// Create message
|
|
620
612
|
const ackMessage = new messages_1.V1PresentationAckMessage({
|
|
621
|
-
status:
|
|
613
|
+
status: didcomm_1.AckStatus.OK,
|
|
622
614
|
threadId: proofRecord.threadId,
|
|
623
615
|
});
|
|
624
616
|
ackMessage.setThread({
|
|
@@ -626,47 +618,47 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
626
618
|
parentThreadId: proofRecord.parentThreadId,
|
|
627
619
|
});
|
|
628
620
|
// Update record
|
|
629
|
-
await this.updateState(agentContext, proofRecord,
|
|
621
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.Done);
|
|
630
622
|
return { message: ackMessage, proofRecord };
|
|
631
623
|
}
|
|
632
624
|
async processAck(messageContext) {
|
|
633
625
|
const { message: presentationAckMessage, connection, agentContext } = messageContext;
|
|
634
626
|
agentContext.config.logger.debug(`Processing presentation ack with message id ${presentationAckMessage.id}`);
|
|
635
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
627
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
636
628
|
// TODO: with this method, we should update the credential protocol to use the ConnectionApi, so it
|
|
637
629
|
// only depends on the public api, rather than the internal API (this helps with breaking changes)
|
|
638
|
-
const connectionService = agentContext.dependencyManager.resolve(
|
|
630
|
+
const connectionService = agentContext.dependencyManager.resolve(didcomm_1.ConnectionService);
|
|
639
631
|
const proofRecord = await this.getByProperties(agentContext, {
|
|
640
632
|
threadId: presentationAckMessage.threadId,
|
|
641
|
-
role:
|
|
642
|
-
connectionId: connection
|
|
633
|
+
role: didcomm_1.ProofRole.Prover,
|
|
634
|
+
connectionId: connection?.id,
|
|
643
635
|
});
|
|
644
636
|
const lastReceivedMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
645
637
|
associatedRecordId: proofRecord.id,
|
|
646
638
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
647
|
-
role:
|
|
639
|
+
role: didcomm_1.DidCommMessageRole.Receiver,
|
|
648
640
|
});
|
|
649
641
|
const lastSentMessage = await didCommMessageRepository.getAgentMessage(agentContext, {
|
|
650
642
|
associatedRecordId: proofRecord.id,
|
|
651
643
|
messageClass: messages_1.V1PresentationMessage,
|
|
652
|
-
role:
|
|
644
|
+
role: didcomm_1.DidCommMessageRole.Sender,
|
|
653
645
|
});
|
|
654
646
|
// Assert
|
|
655
647
|
proofRecord.assertProtocolVersion('v1');
|
|
656
|
-
proofRecord.assertState(
|
|
648
|
+
proofRecord.assertState(didcomm_1.ProofState.PresentationSent);
|
|
657
649
|
await connectionService.assertConnectionOrOutOfBandExchange(messageContext, {
|
|
658
650
|
lastReceivedMessage,
|
|
659
651
|
lastSentMessage,
|
|
660
652
|
expectedConnectionId: proofRecord.connectionId,
|
|
661
653
|
});
|
|
662
654
|
// Update record
|
|
663
|
-
await this.updateState(agentContext, proofRecord,
|
|
655
|
+
await this.updateState(agentContext, proofRecord, didcomm_1.ProofState.Done);
|
|
664
656
|
return proofRecord;
|
|
665
657
|
}
|
|
666
658
|
async createProblemReport(_agentContext, { proofRecord, description }) {
|
|
667
659
|
const message = new V1PresentationProblemReportMessage_1.V1PresentationProblemReportMessage({
|
|
668
660
|
description: {
|
|
669
|
-
code:
|
|
661
|
+
code: didcomm_1.PresentationProblemReportReason.Abandoned,
|
|
670
662
|
en: description,
|
|
671
663
|
},
|
|
672
664
|
});
|
|
@@ -681,16 +673,16 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
681
673
|
}
|
|
682
674
|
async shouldAutoRespondToProposal(agentContext, options) {
|
|
683
675
|
const { proofRecord, proposalMessage } = options;
|
|
684
|
-
const proofsModuleConfig = agentContext.dependencyManager.resolve(
|
|
676
|
+
const proofsModuleConfig = agentContext.dependencyManager.resolve(didcomm_1.ProofsModuleConfig);
|
|
685
677
|
const autoAccept = (0, utils_1.composeProofAutoAccept)(proofRecord.autoAcceptProof, proofsModuleConfig.autoAcceptProofs);
|
|
686
678
|
// Handle always / never cases
|
|
687
|
-
if (autoAccept ===
|
|
679
|
+
if (autoAccept === didcomm_1.AutoAcceptProof.Always)
|
|
688
680
|
return true;
|
|
689
|
-
if (autoAccept ===
|
|
681
|
+
if (autoAccept === didcomm_1.AutoAcceptProof.Never)
|
|
690
682
|
return false;
|
|
691
683
|
// We are in the ContentApproved case. We need to make sure we've sent a request, and it matches the proposal
|
|
692
684
|
const requestMessage = await this.findRequestMessage(agentContext, proofRecord.id);
|
|
693
|
-
const requestAttachment = requestMessage
|
|
685
|
+
const requestAttachment = requestMessage?.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
694
686
|
if (!requestAttachment)
|
|
695
687
|
return false;
|
|
696
688
|
const rfc0592Proposal = core_1.JsonTransformer.toJSON((0, utils_1.createRequestFromPreview)({
|
|
@@ -702,7 +694,7 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
702
694
|
}));
|
|
703
695
|
return this.indyProofFormat.shouldAutoRespondToProposal(agentContext, {
|
|
704
696
|
proofRecord,
|
|
705
|
-
proposalAttachment: new
|
|
697
|
+
proposalAttachment: new didcomm_1.Attachment({
|
|
706
698
|
data: {
|
|
707
699
|
json: rfc0592Proposal,
|
|
708
700
|
},
|
|
@@ -712,12 +704,12 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
712
704
|
}
|
|
713
705
|
async shouldAutoRespondToRequest(agentContext, options) {
|
|
714
706
|
const { proofRecord, requestMessage } = options;
|
|
715
|
-
const proofsModuleConfig = agentContext.dependencyManager.resolve(
|
|
707
|
+
const proofsModuleConfig = agentContext.dependencyManager.resolve(didcomm_1.ProofsModuleConfig);
|
|
716
708
|
const autoAccept = (0, utils_1.composeProofAutoAccept)(proofRecord.autoAcceptProof, proofsModuleConfig.autoAcceptProofs);
|
|
717
709
|
// Handle always / never cases
|
|
718
|
-
if (autoAccept ===
|
|
710
|
+
if (autoAccept === didcomm_1.AutoAcceptProof.Always)
|
|
719
711
|
return true;
|
|
720
|
-
if (autoAccept ===
|
|
712
|
+
if (autoAccept === didcomm_1.AutoAcceptProof.Never)
|
|
721
713
|
return false;
|
|
722
714
|
const requestAttachment = requestMessage.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
723
715
|
if (!requestAttachment)
|
|
@@ -735,7 +727,7 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
735
727
|
});
|
|
736
728
|
return this.indyProofFormat.shouldAutoRespondToRequest(agentContext, {
|
|
737
729
|
proofRecord,
|
|
738
|
-
proposalAttachment: new
|
|
730
|
+
proposalAttachment: new didcomm_1.Attachment({
|
|
739
731
|
data: {
|
|
740
732
|
base64: core_1.JsonEncoder.toBase64(rfc0592Proposal),
|
|
741
733
|
},
|
|
@@ -745,19 +737,19 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
745
737
|
}
|
|
746
738
|
async shouldAutoRespondToPresentation(agentContext, options) {
|
|
747
739
|
const { proofRecord, presentationMessage } = options;
|
|
748
|
-
const proofsModuleConfig = agentContext.dependencyManager.resolve(
|
|
740
|
+
const proofsModuleConfig = agentContext.dependencyManager.resolve(didcomm_1.ProofsModuleConfig);
|
|
749
741
|
const autoAccept = (0, utils_1.composeProofAutoAccept)(proofRecord.autoAcceptProof, proofsModuleConfig.autoAcceptProofs);
|
|
750
742
|
// Handle always / never cases
|
|
751
|
-
if (autoAccept ===
|
|
743
|
+
if (autoAccept === didcomm_1.AutoAcceptProof.Always)
|
|
752
744
|
return true;
|
|
753
|
-
if (autoAccept ===
|
|
745
|
+
if (autoAccept === didcomm_1.AutoAcceptProof.Never)
|
|
754
746
|
return false;
|
|
755
747
|
const presentationAttachment = presentationMessage.getPresentationAttachmentById(messages_1.INDY_PROOF_ATTACHMENT_ID);
|
|
756
748
|
if (!presentationAttachment)
|
|
757
749
|
return false;
|
|
758
750
|
// We are in the ContentApproved case. We need to make sure we've sent a request, and it matches the presentation
|
|
759
751
|
const requestMessage = await this.findRequestMessage(agentContext, proofRecord.id);
|
|
760
|
-
const requestAttachment = requestMessage
|
|
752
|
+
const requestAttachment = requestMessage?.getRequestAttachmentById(messages_1.INDY_PROOF_REQUEST_ATTACHMENT_ID);
|
|
761
753
|
if (!requestAttachment)
|
|
762
754
|
return false;
|
|
763
755
|
// We are in the ContentApproved case. We need to make sure we've sent a proposal, and it matches the request
|
|
@@ -775,7 +767,7 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
775
767
|
proofRecord,
|
|
776
768
|
requestAttachment,
|
|
777
769
|
presentationAttachment,
|
|
778
|
-
proposalAttachment: new
|
|
770
|
+
proposalAttachment: new didcomm_1.Attachment({
|
|
779
771
|
data: {
|
|
780
772
|
json: rfc0592Proposal,
|
|
781
773
|
},
|
|
@@ -783,28 +775,27 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
783
775
|
});
|
|
784
776
|
}
|
|
785
777
|
async findProposalMessage(agentContext, proofRecordId) {
|
|
786
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
778
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
787
779
|
return await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
788
780
|
associatedRecordId: proofRecordId,
|
|
789
781
|
messageClass: messages_1.V1ProposePresentationMessage,
|
|
790
782
|
});
|
|
791
783
|
}
|
|
792
784
|
async findRequestMessage(agentContext, proofRecordId) {
|
|
793
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
785
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
794
786
|
return await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
795
787
|
associatedRecordId: proofRecordId,
|
|
796
788
|
messageClass: messages_1.V1RequestPresentationMessage,
|
|
797
789
|
});
|
|
798
790
|
}
|
|
799
791
|
async findPresentationMessage(agentContext, proofRecordId) {
|
|
800
|
-
const didCommMessageRepository = agentContext.dependencyManager.resolve(
|
|
792
|
+
const didCommMessageRepository = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageRepository);
|
|
801
793
|
return await didCommMessageRepository.findAgentMessage(agentContext, {
|
|
802
794
|
associatedRecordId: proofRecordId,
|
|
803
795
|
messageClass: messages_1.V1PresentationMessage,
|
|
804
796
|
});
|
|
805
797
|
}
|
|
806
798
|
async getFormatData(agentContext, proofRecordId) {
|
|
807
|
-
var _a, _b;
|
|
808
799
|
// TODO: we could looking at fetching all record using a single query and then filtering based on the type of the message.
|
|
809
800
|
const [proposalMessage, requestMessage, presentationMessage] = await Promise.all([
|
|
810
801
|
this.findProposalMessage(agentContext, proofRecordId),
|
|
@@ -812,8 +803,8 @@ class V1ProofProtocol extends core_1.BaseProofProtocol {
|
|
|
812
803
|
this.findPresentationMessage(agentContext, proofRecordId),
|
|
813
804
|
]);
|
|
814
805
|
let indyProposeProof = undefined;
|
|
815
|
-
const indyRequestProof =
|
|
816
|
-
const indyPresentProof =
|
|
806
|
+
const indyRequestProof = requestMessage?.indyProofRequest ?? undefined;
|
|
807
|
+
const indyPresentProof = presentationMessage?.indyProof ?? undefined;
|
|
817
808
|
if (proposalMessage && indyRequestProof) {
|
|
818
809
|
indyProposeProof = (0, utils_1.createRequestFromPreview)({
|
|
819
810
|
name: indyRequestProof.name,
|