-
Notifications
You must be signed in to change notification settings - Fork 204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: check groupnames #638
Changes from 2 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -254,6 +254,9 @@ export class ProofService { | |||||||||||||||||||||||||||||||
comment?: string | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
): Promise<ProofProtocolMsgReturnType<RequestPresentationMessage>> { | ||||||||||||||||||||||||||||||||
// Check if Attribute names match Predicate names | ||||||||||||||||||||||||||||||||
this.checkAttributePredicateMatch(proofRequest) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
// Assert | ||||||||||||||||||||||||||||||||
proofRecord.assertState(ProofState.ProposalReceived) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
|
@@ -299,6 +302,9 @@ export class ProofService { | |||||||||||||||||||||||||||||||
): Promise<ProofProtocolMsgReturnType<RequestPresentationMessage>> { | ||||||||||||||||||||||||||||||||
this.logger.debug(`Creating proof request`) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
// Check if Attribute names match Predicate names | ||||||||||||||||||||||||||||||||
this.checkAttributePredicateMatch(proofRequest) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
// Assert | ||||||||||||||||||||||||||||||||
connectionRecord?.assertReady() | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
|
@@ -360,6 +366,9 @@ export class ProofService { | |||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
await validateOrReject(proofRequest) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
// Check if Attribute names match Predicate names | ||||||||||||||||||||||||||||||||
this.checkAttributePredicateMatch(proofRequest) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
this.logger.debug('received proof request', proofRequest) | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
try { | ||||||||||||||||||||||||||||||||
|
@@ -1037,6 +1046,16 @@ export class ProofService { | |||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
return credentialDefinitions | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
public checkAttributePredicateMatch(proofRequest: ProofRequest) { | ||||||||||||||||||||||||||||||||
for (const attribute of proofRequest.requestedAttributes.keys()) { | ||||||||||||||||||||||||||||||||
for (const predicate of proofRequest.requestedPredicates.keys()) { | ||||||||||||||||||||||||||||||||
if (attribute === predicate) { | ||||||||||||||||||||||||||||||||
throw new AriesFrameworkError(`The proof request contains attributes that match the predicates: ${attribute}`) | ||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For each key it will loop through the keys of the other array. Maybe we can use
Suggested change
|
||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
export interface ProofRequestTemplate { | ||||||||||||||||||||||||||||||||
|
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -331,4 +331,40 @@ describe('Present Proof', () => { | |||||
presentationMessage: expect.any(PresentationMessage), | ||||||
}) | ||||||
}) | ||||||
|
||||||
test('Faber starts with proof request to Alice, but the attributes match with the predicates', async () => { | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
// Age attribute | ||||||
const attributes = { | ||||||
age: new ProofAttributeInfo({ | ||||||
name: 'age', | ||||||
restrictions: [ | ||||||
new AttributeFilter({ | ||||||
credentialDefinitionId: credDefId, | ||||||
}), | ||||||
], | ||||||
}), | ||||||
} | ||||||
|
||||||
// Age predicate | ||||||
const predicates = { | ||||||
age: new ProofPredicateInfo({ | ||||||
name: 'age', | ||||||
predicateType: PredicateType.GreaterThanOrEqualTo, | ||||||
predicateValue: 50, | ||||||
restrictions: [ | ||||||
new AttributeFilter({ | ||||||
credentialDefinitionId: credDefId, | ||||||
}), | ||||||
], | ||||||
}), | ||||||
} | ||||||
|
||||||
await expect( | ||||||
faberAgent.proofs.requestProof(faberConnection.id, { | ||||||
name: 'test-proof-request', | ||||||
requestedAttributes: attributes, | ||||||
requestedPredicates: predicates, | ||||||
}) | ||||||
).rejects.toThrowError(`The proof request contains attributes that match the predicates: age`) | ||||||
}) | ||||||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This comment makes me believe we want them to match.
Maybe something like:
Not sure if doNotMatch is the best, but is is explicit