Skip to content

Commit

Permalink
Linked multi query (#67)
Browse files Browse the repository at this point in the history
* add linked multi query support
  • Loading branch information
volodymyr-basiuk committed Feb 22, 2024
1 parent 8e80505 commit 20d50f1
Show file tree
Hide file tree
Showing 15 changed files with 984 additions and 182 deletions.
142 changes: 130 additions & 12 deletions auth.go
Expand Up @@ -310,6 +310,83 @@ func CreateContractInvokeRequestWithMessage(
}
}

// ValidateAuthRequest verifies auth request message
func ValidateAuthRequest(request protocol.AuthorizationRequestMessage) error {
groupIDValidationMap := make(map[int][]pubsignals.Query)

for _, proofRequest := range request.Body.Scope {
proofRequestQuery, err := unmarshalQuery(proofRequest.Query)
if err != nil {
return err
}
groupID := proofRequestQuery.GroupID
if groupID != 0 {
existingQueries := groupIDValidationMap[groupID]

// Validate that all requests in the group have the same schema, issuer, and circuit
for _, existingQuery := range existingQueries {
if existingQuery.Type != proofRequestQuery.Type {
return errors.New("all requests in the group should have the same type")
}

if existingQuery.Context != proofRequestQuery.Context {
return errors.New("all requests in the group should have the same context")
}

allowedIssuers := proofRequestQuery.AllowedIssuers
existingRequestAllowedIssuers := existingQuery.AllowedIssuers
if !checkIssuersEquality(allowedIssuers, existingRequestAllowedIssuers) {
return errors.New("all requests in the group should have the same issuer")
}
}

groupIDValidationMap[groupID] = append(existingQueries, proofRequestQuery)
}
}

return nil
}

func unmarshalQuery(queryMap map[string]interface{}) (out pubsignals.Query, err error) {
// prepare query from request
queryBytes, err := json.Marshal(queryMap)
if err != nil {
return out, err
}
err = json.Unmarshal(queryBytes, &out)
if err != nil {
return out, err
}
return out, nil
}

func checkIssuersEquality(issuers1, issuers2 []string) bool {
if len(issuers1) != len(issuers2) {
return false
}

for _, issuer := range issuers1 {
found := false
for _, existingIssuer := range issuers2 {
if issuer == existingIssuer || existingIssuer == "*" {
found = true
break
}
}

if !found {
return false
}
}

return true
}

type linkIDRequestID struct {
linkID *big.Int
requestID uint32
}

// VerifyAuthResponse performs verification of auth response based on auth request
func (v *Verifier) VerifyAuthResponse(
ctx context.Context,
Expand All @@ -326,7 +403,23 @@ func (v *Verifier) VerifyAuthResponse(
return errors.Errorf("sender of the request is not a target of response - expected %s, given %s", request.From, response.To)
}

if response.From == "" {
return errors.Errorf("proof response doesn't contain from field")
}

err := ValidateAuthRequest(request)
if err != nil {
return err
}

groupIDToLinkIDMap := make(map[int][]linkIDRequestID)
for _, proofRequest := range request.Body.Scope {
// prepare query from request
query, err := unmarshalQuery(proofRequest.Query)
if err != nil {
return err
}

proofResponse := findProofByRequestID(response.Body.Scope, proofRequest.ID)
if proofResponse == nil {
return errors.Errorf("proof for zk request id %v is presented not found", proofRequest.ID)
Expand All @@ -349,17 +442,6 @@ func (v *Verifier) VerifyAuthResponse(
return errors.Wrap(err, fmt.Sprintf("circuit with id %s is not supported by library", proofRequest.CircuitID))
}

// prepare query from request
queryBytes, err := json.Marshal(proofRequest.Query)
if err != nil {
return err
}
var query pubsignals.Query
err = json.Unmarshal(queryBytes, &query)
if err != nil {
return err
}

// verify proof author

err = cv.VerifyIDOwnership(response.From, big.NewInt(int64(proofResponse.ID)))
Expand All @@ -384,7 +466,7 @@ func (v *Verifier) VerifyAuthResponse(
}
proofRequest.Params[pubsignals.ParamNameVerifierDID] = verifierDID

err = cv.VerifyQuery(ctx, query, v.documentLoader, rawMessage, proofRequest.Params, opts...)
verifyResult, err := cv.VerifyQuery(ctx, query, v.documentLoader, rawMessage, proofRequest.Params, opts...)
if err != nil {
return err
}
Expand All @@ -394,8 +476,44 @@ func (v *Verifier) VerifyAuthResponse(
return err
}

err = verifyGroupIDMathch(verifyResult.LinkID, query.GroupID, proofResponse.ID, groupIDToLinkIDMap)
if err != nil {
return err
}

}

return nil
}

func verifyGroupIDMathch(linkID *big.Int, groupID int, requestID uint32, groupIDToLinkIDMap map[int][]linkIDRequestID) error {
if groupID == 0 {
return nil
}

if linkID == nil {
return errors.Errorf("Link id is not found for groupID %d", groupID)
}

if existingLinks, exists := groupIDToLinkIDMap[groupID]; exists {
linkIDMap := linkIDRequestID{linkID: linkID, requestID: requestID}
groupIDToLinkIDMap[groupID] = append(existingLinks, linkIDMap)
} else {
linkIDMap := linkIDRequestID{linkID: linkID, requestID: requestID}
groupIDToLinkIDMap[groupID] = []linkIDRequestID{linkIDMap}
}
// verify grouping links
for groupIDfromMap, metas := range groupIDToLinkIDMap {
// Check that all linkIDs are the same
if len(metas) > 1 {
firstLinkID := metas[0].linkID
for _, meta := range metas[1:] {
if meta.linkID.Cmp(firstLinkID) != 0 {
return errors.Errorf("Link id validation failed for group %d, request linkID to requestIds info: %v", groupIDfromMap, metas)
}
}
}
}
return nil
}

Expand Down
80 changes: 80 additions & 0 deletions auth_test.go
Expand Up @@ -1140,3 +1140,83 @@ func TestVerifyV3MessageWithMtpProof_Merkalized(t *testing.T) {
require.Nil(t, err)
schemaLoader.assert(t)
}

func TestFullVerifyLinkedProofsVerification(t *testing.T) {
verifierID := "did:iden3:polygon:mumbai:wzokvZ6kMoocKJuSbftdZxTD6qvayGpJb3m4FVXth"
callbackURL := "https://test.com/callback"
reason := "test"

request := CreateAuthorizationRequestWithMessage(reason, "mesage", verifierID, callbackURL)

var mtpProofRequest1 protocol.ZeroKnowledgeProofRequest
mtpProofRequest1.ID = 1
mtpProofRequest1.CircuitID = string(circuits.AtomicQueryV3CircuitID)
opt := false
mtpProofRequest1.Optional = &opt
mtpProofRequest1.Query = map[string]interface{}{
"allowedIssuers": []string{"*"},
"credentialSubject": map[string]interface{}{
"documentType": map[string]interface{}{
"$eq": 99,
},
},
"context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-nonmerklized.jsonld",
"type": "KYCAgeCredential",
"proofType": "BJJSignature2021",
}

var mtpProofRequest2 protocol.ZeroKnowledgeProofRequest
mtpProofRequest2.ID = 2
mtpProofRequest2.CircuitID = string(circuits.LinkedMultiQuery10CircuitID)
mtpProofRequest2.Optional = &opt
mtpProofRequest2.Query = map[string]interface{}{
"groupId": 1,
"allowedIssuers": []string{"*"},
"credentialSubject": map[string]interface{}{
"documentType": map[string]interface{}{
"$eq": 1,
},
"position": map[string]interface{}{
"$eq": "boss",
"$ne": "employee",
},
},
"context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v101.json-ld",
"type": "KYCEmployee",
"proofType": "Iden3SparseMerkleTreeProof",
}

var mtpProofRequest3 protocol.ZeroKnowledgeProofRequest
mtpProofRequest3.ID = 3
mtpProofRequest3.CircuitID = string(circuits.AtomicQueryV3CircuitID)
mtpProofRequest3.Optional = &opt
mtpProofRequest3.Query = map[string]interface{}{
"groupId": 1,
"allowedIssuers": []string{"*"},
"credentialSubject": map[string]interface{}{
"hireDate": map[string]interface{}{
"$eq": "2023-12-11",
},
},
"context": "https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v101.json-ld",
"type": "KYCEmployee",
"proofType": "BJJSignature2021",
}
request.Body.Scope = append(append(append(request.Body.Scope, mtpProofRequest1), mtpProofRequest2), mtpProofRequest3)

schemaLoader := &mockJSONLDSchemaLoader{
schemas: map[string]string{
"https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-v101.json-ld": loadSchema("kyc-v101.json-ld"),
"https://raw.githubusercontent.com/iden3/claim-schema-vocab/main/schemas/json-ld/kyc-nonmerklized.jsonld": loadSchema("kyc-nonmerklized.jsonld"),
},
}
authInstance, err := NewVerifier(verificationKeyloader, stateResolvers,
WithDocumentLoader(schemaLoader))
require.NoError(t, err)

tokenString := "eyJhbGciOiJncm90aDE2IiwiY2lyY3VpdElkIjoiYXV0aFYyIiwiY3JpdCI6WyJjaXJjdWl0SWQiXSwidHlwIjoiYXBwbGljYXRpb24vaWRlbjMtemtwLWpzb24ifQ.eyJpZCI6IjUxMmRhMWVlLWQwODctNGEwMC1hMGYzLTZjNmZmYjI0Zjc5NyIsInR5cCI6ImFwcGxpY2F0aW9uL2lkZW4zLXprcC1qc29uIiwidHlwZSI6Imh0dHBzOi8vaWRlbjMtY29tbXVuaWNhdGlvbi5pby9hdXRob3JpemF0aW9uLzEuMC9yZXNwb25zZSIsInRoaWQiOiJmNWJjZGZjOS0zODE5LTQwNTItYWQ5Ny1jMDU5MTE5ZTU2M2MiLCJib2R5Ijp7Im1lc3NhZ2UiOiJtZXNhZ2UiLCJzY29wZSI6W3siaWQiOjEsImNpcmN1aXRJZCI6ImNyZWRlbnRpYWxBdG9taWNRdWVyeVYzLWJldGEuMCIsInByb29mIjp7InBpX2EiOlsiMzQxMzAwMzkwODI2MDM4MTU5MDE1NTM0Mzg4NjE2NjE0NDkxMzc2NTIyMDc1NTg2MzU1NjkyODI0Mzk1ODEzMDAxNzk5Mzg1NDM0OCIsIjE1MTQ3MDY1Mjk0ODU1Nzk2MTkzMTU3ODA0MzE5MDA1MTkyNzUyODEyNTIzOTIyMTg1ODQ5NjQ3MTY1NDUyNjQyNzc4NTYzMjE1NDgiLCIxIl0sInBpX2IiOltbIjE0NzU2MjM2MzIzNDQzMzU0OTE5MTA5MzMwNDIzMTAzMDE4ODQ4MjIwMDc1ODMyNzMwNDg4MzU0NTYzNjg5Njk1MDgxNjE2MzY4MzM5IiwiMTM1MTQyODk2NTg3NDM0MTk1NDYyNTQ3MzM1NDA5NzM0NjUzMjY5MTYyNzI3ODQ2MjUxMzE0NTE5MzEzOTM1MTE4MTU3MzA1NjMxMTEiXSxbIjgzOTQzODkxMzY2MTI1NTYxNDgzMzA3NDUyMjg3MTE3NTg4NDU4MTE0NjE4MTU4NDM2NzY0MDc4NzA2MTg3ODUzMzEwMDE5NzI3MzkiLCI1MTY0NjI0OTc0OTg4NDMwMDI3OTk2MjM3MDQyOTYyNDI2NzA3Mjc0Nzc3Mzg2ODU2NTY0Njk5MDU5MTU0NzA2MzQ1OTI1MjY3MjE5Il0sWyIxIiwiMCJdXSwicGlfYyI6WyI3NDI3NTQ4ODA3ODI1ODU1MDU3NjI1MTIxMjM4OTQxNjEzMjA4NDAzNTc5MzEwOTY3MDY4Mjk2OTMxNzQ3MTQ5Njc5NzA3ODg0OTEiLCIxNzI5ODE3NTY2NzMzNTMyNDk4ODM4NzM0Nzk3MTIxNDY1MzMxOTQwNjY1NzA1MDI5NjExMTg2NTc2MjQzMzAzMjAzMzQ2OTU1MTU0NiIsIjEiXSwicHJvdG9jb2wiOiJncm90aDE2IiwiY3VydmUiOiJibjEyOCJ9LCJwdWJfc2lnbmFscyI6WyIwIiwiMjE1NjgyMjU0Njk4ODk0NTgzMDU5MTQ4NDE0OTAxNzUyODAwOTM1NTUwMTUwNzEzMjk3ODczNzU2NDE0MzEyNjI1MDkyMDgwNjUiLCI0NDg3Mzg2MzMyNDc5NDg5MTU4MDAzNTk3ODQ0OTkwNDg3OTg0OTI1NDcxODEzOTA3NDYyNDgzOTA3MDU0NDI1NzU5NTY0MTc1MzQxIiwiMCIsIjAiLCIwIiwiMSIsIjEiLCIyNTE5MTY0MTYzNDg1Mzg3NTIwNzAxODM4MTI5MDQwOTMxNzg2MDE1MTU1MTMzNjEzMzU5NzI2NzA2MTcxNTY0MzYwMzA5NjA2NSIsIjEiLCI0NDg3Mzg2MzMyNDc5NDg5MTU4MDAzNTk3ODQ0OTkwNDg3OTg0OTI1NDcxODEzOTA3NDYyNDgzOTA3MDU0NDI1NzU5NTY0MTc1MzQxIiwiMTcwNTYwMDE0OCIsIjE5ODI4NTcyNjUxMDY4ODIwMDMzNTIwNzI3MzgzNjEyMzMzODY5OSIsIjEiLCIwIiwiMyIsIjEiLCI5OSIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIl19LHsiaWQiOjIsImNpcmN1aXRJZCI6ImxpbmtlZE11bHRpUXVlcnkxMC1iZXRhLjAiLCJwcm9vZiI6eyJwaV9hIjpbIjE1MzY2OTk0OTcyNzMzNTM0MTA2ODUwOTk5MDI2MjgzODkwMTgyMjcyOTQyNjQxNzUyMzc1MDM4ODcwMjc3Mzg4MDIxNTI5MDk0MDMiLCIxMTE1ODIyMzYwNTY3NTg2NTgyNTc3ODU4ODM2MTk1Nzc5MzMxMDg5MDA1MTkwNTg0NDk4MTM4MzA5OTcxNDA1NjY1Mjg4MjU2MTEzNCIsIjEiXSwicGlfYiI6W1siMTAxODU0OTk2NTE1MzUxODUzMDI5MzEwMjI4NTA5MTM1NTkyOTU5MDQ1ODIwNDY5NzkzNDQyMjQ4MDA1MTQyNTM1NTE3MDA5MTM0NTUiLCIyMTMxMzYwNDY4Mzk4MjY3MDA0MzUyMzE3ODg4NzQ3OTI4NDc3MjczOTkxMDEzNTUwNDE1ODcxODM5NjczMjAxOTI4ODE4MzIzMTM2MCJdLFsiMTM1MTYxNTAyNDI5NzEyMDYzOTEzNzMzNTEyMzMxMjg3NjE3OTg3MDExOTYzNzI0MjE1NTk1NDMzNzY3MjgwOTI4OTI2NzQ5MTU4OTciLCIyMDkxMzI4MzY1MTk3NjkzMjQ4MzQyNTQ3NDQyNzE1ODQ1MzA1OTU0MzExMjA3MTEzNTc1Mjc2MjE0OTMzODI3NDMzNzUxNTI5NTgyMCJdLFsiMSIsIjAiXV0sInBpX2MiOlsiMTY1OTg2NDcwNzIyMTczMjMzNDQzMTYzNjcwMjk0Mzc3MDE5ODA2MDU1NDg0MTExOTIwODQ1OTYzNDQ1NDkwNzA1MzU1MDcyNjIxOTQiLCIzMTUxMzY4NDcyNzA2NDA0MDY2NzgxMTgyODQyNzM1Mzk3NDQyNjE0MTgyMjc4NzM2NDA4NzExMTI5MTI2MzEwNDQ4NTg5ODU3NDYyIiwiMSJdLCJwcm90b2NvbCI6Imdyb3RoMTYiLCJjdXJ2ZSI6ImJuMTI4In0sInB1Yl9zaWduYWxzIjpbIjYxMjA0MzM3MDM3NzE4MjE2NjUyOTkxMjI4NjM4MTA2NjIzNTg0NzA1OTMzOTMxMDA2NDI2NjkzMjEyOTY0MzM0OTE0MTEwNjA4NjgiLCIxIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjEwMzQxNTc0NDQ4Mzg2NDg1MzM4MTI2MjEyNjk0Nzg5MjI0Njc2MjYxNzk4MTQwMTMyMDQ2NDk2MjA0NzMwNDQyNzQ2NzA3NzQzMzUwIiwiMTQ0NjA3Njc5OTUwMjA0NzgwOTM1MzMxNDE2MzExODMwNjM4MTMyMTk4Njk1OTI0NDcwMzgzODE1MTE4ODEyMzM3NjA2MjIyMDg3MiIsIjM2NDI3NzM5NDA2MDE5NzI0MDg2NzI5OTM0ODE0MDU2MjgxNjE4Mjc1MTE2MjI3MDE1ODAxNDIyNDI2OTExMjcwMjExMTk4MTA1OTYiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMSIsIjEiLCIxIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCJdfSx7ImlkIjozLCJjaXJjdWl0SWQiOiJjcmVkZW50aWFsQXRvbWljUXVlcnlWMy1iZXRhLjAiLCJwcm9vZiI6eyJwaV9hIjpbIjIxMTgyODU0ODU2MDM1Mzc4NjU2NTQwNzI0ODM2MDk1NTcxMzQxNjg1OTg4NDU2NjI1OTgwNjQxNzE2OTA0NDYwMjY0MjYzODg3Nzc0IiwiMTM3NDk1NDgyMjUzODgxMzQzNjU5NDE1MTAxNjIwNzI2NzU0MTQ0NDcyMDIyOTU2MzAwNTczMDE1ODM3NTg1MTc2NjA0NDk3MjY5MjgiLCIxIl0sInBpX2IiOltbIjE1MTY4NjIwNTc0NTI5OTQ2Mjg2OTkyOTQwOTkwMTc4Mjg0NzMzNjIxODYxNDYzMDA5ODk0OTY1MjcyMDI1MDY0NzU0NjM3NTM2MDc5IiwiMTM2ODUwOTA1MzU4Nzk2OTY0MTk3OTk1MjIzODIzMTU5NzY4NjIwNDg0NzI1NjU4OTg4MzE5MDY0MjkwNzY2MTI2MTg5NDg1MjIzNDEiXSxbIjEwNzA1MzI1MzQyMjA4NzU2NjIxMDUzNTEyODI3OTM5MzAzMTQwNjMxMDUxMjY2MjQ1MTQ3NDYwNDc5NzYxNjY5MTg0NDEzMzYzMDciLCIxOTcwODUxMDAzNjUzNDU4ODA2OTg2NTY0OTM2NjA3Mjk1ODA2OTE2NjA5Mjc0OTYwNDI4Njc0MzkzMDA0OTY3ODMwNzY5OTA5NzU3NyJdLFsiMSIsIjAiXV0sInBpX2MiOlsiMTE3ODg3MjY5MDE3ODMzNTY1ODI2MDY5NjQ0NDkzNzM1MDU5NzMyOTU1MTM4MTUzNDg4NTE5NzMzNjI2MzY0NzExNjU0NTk3MjMxNTkiLCIxODczNzU1MTI2Nzg0NTUxMjgxMzY0MDY4MzcwNTY3MTEzODM2MDM1MDgwNDE5NTc4MzE3NzM1NDEzOTc3OTg0OTE3NTIyODE5NjI3MyIsIjEiXSwicHJvdG9jb2wiOiJncm90aDE2IiwiY3VydmUiOiJibjEyOCJ9LCJwdWJfc2lnbmFscyI6WyIxIiwiMjE1NjgyMjU0Njk4ODk0NTgzMDU5MTQ4NDE0OTAxNzUyODAwOTM1NTUwMTUwNzEzMjk3ODczNzU2NDE0MzEyNjI1MDkyMDgwNjUiLCI0NDg3Mzg2MzMyNDc5NDg5MTU4MDAzNTk3ODQ0OTkwNDg3OTg0OTI1NDcxODEzOTA3NDYyNDgzOTA3MDU0NDI1NzU5NTY0MTc1MzQxIiwiNjEyMDQzMzcwMzc3MTgyMTY2NTI5OTEyMjg2MzgxMDY2MjM1ODQ3MDU5MzM5MzEwMDY0MjY2OTMyMTI5NjQzMzQ5MTQxMTA2MDg2OCIsIjAiLCIwIiwiMSIsIjMiLCIyNTE5MTY0MTYzNDg1Mzg3NTIwNzAxODM4MTI5MDQwOTMxNzg2MDE1MTU1MTMzNjEzMzU5NzI2NzA2MTcxNTY0MzYwMzA5NjA2NSIsIjEiLCI0NDg3Mzg2MzMyNDc5NDg5MTU4MDAzNTk3ODQ0OTkwNDg3OTg0OTI1NDcxODEzOTA3NDYyNDgzOTA3MDU0NDI1NzU5NTY0MTc1MzQxIiwiMTcwNTYwMDE3MSIsIjIxOTU3ODYxNzA2NDU0MDAxNjIzNDE2MTY0MDM3NTc1NTg2NTQxMiIsIjAiLCIxMjk2MzUxNzU4MjY5MDYxMTczMzE3MTA1MDQxOTY4MDY3MDc3NDUxOTE0Mzg2MDg2MjIyOTMxNTE2MTk5MTk0OTU5ODY5NDYzODgyIiwiMCIsIjEiLCIxNzAyMjUyODAwMDAwMDAwMDAwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiLCIwIiwiMCIsIjAiXX1dfSwiZnJvbSI6ImRpZDppZGVuMzpwb2x5Z29uOm11bWJhaTp3dXc1dHlkWjdBQWQzZWZ3RXFQcHJucWppTkhSMjRqcXJ1U1BLbVYxViIsInRvIjoiZGlkOmlkZW4zOnBvbHlnb246bXVtYmFpOnd6b2t2WjZrTW9vY0tKdVNiZnRkWnhURDZxdmF5R3BKYjNtNEZWWHRoIn0.eyJwcm9vZiI6eyJwaV9hIjpbIjQyOTY1NTE0NjUxMDkzODE5NjQ2MDgzOTYwNDcyMDA2MDc1NjQ5MzgwODE4NjA0NjQ0MTIwMDEzOTE4MjYyMTM4NTU0MjMyNTc4OCIsIjIwODAxMjYwNTAyNzg2MTM4MDA3MjY1NDY1MjI3MjkzNzIyNDQ3ODkzNDEwMzYxODk4MzYxNTg4NTMyODU2MTg4NTM2NTI0NzE3NzciLCIxIl0sInBpX2IiOltbIjczNDIyNDI5NDI4NzE5Njc3NTc5NDg5ODIzMzE2MDgwMjk4OTkwMjg1OTM5NDgwMTExMzA4MjY3NzU4NjA0MTExMTUxMTYwMjkxMiIsIjE5NTcxMTQxMTAzOTIzMTg0ODMxNjUzMTI2MDAzNTg5MTI2NjcwMjIyNjg3Mzk3MTU0NjEyMzkxMDQzMjY3ODk5MDUyNTEwOTg3ODU1Il0sWyIyOTYyNDc2MDY4MTYwNzIzNzQ1MTE1Mjk4MDM0NDMxOTE5OTA4MzcyNDI1ODgwMjAzMjY0MTU2NjM5NDY0NzE3NjM4MDI2MTQwMTIyIiwiMTE3MzgyMTk0NDEwNzI1OTEzODY0NzAwMDQ4ODMzNDcwNDc2MDg2NDQ2MjM5OTI3NTI0NTg3NzYyNjgwOTIyMDQ1MDA0MDU5OTE0NzAiXSxbIjEiLCIwIl1dLCJwaV9jIjpbIjE5MDQ0MjA1NDU2OTM1NDYwNDE1NDE1MzQ0MTE5ODAzMjM1Mjc4MDQ3NzEwMTczODQyNzk0ODU4MDE4Mzg2NzQ2MDg4MzgwMTIyODk0IiwiNjk4MjExMjI1ODEyMzY4OTU4NjE0MDgzNzkxMzkzMTc5NzM1NDY2ODQwMTU4NzEyMTIyMjY3NzExMTQ1NzYxNzI3Mjc4NTk2ODM5OSIsIjEiXSwicHJvdG9jb2wiOiJncm90aDE2IiwiY3VydmUiOiJibjEyOCJ9LCJwdWJfc2lnbmFscyI6WyIyMTU2ODIyNTQ2OTg4OTQ1ODMwNTkxNDg0MTQ5MDE3NTI4MDA5MzU1NTAxNTA3MTMyOTc4NzM3NTY0MTQzMTI2MjUwOTIwODA2NSIsIjM1Mzk1NDg1NTE2OTc5MzEyNzQzMzU0OTg0NTU3NDYyMTcyMTczMDI0OTc3NTUyNjM4OTMzNjY2Mzk1NDU0NTk0ODQzODUxMzA1MDciLCIwIl19"
returnMsg, err := authInstance.FullVerify(context.Background(), tokenString, request, pubsignals.WithAcceptedProofGenerationDelay(proofGenerationDelay))
require.Nil(t, err)
require.NotNil(t, returnMsg)
schemaLoader.assert(t)
}
8 changes: 4 additions & 4 deletions go.mod
Expand Up @@ -8,12 +8,13 @@ require (
github.com/golang/mock v1.6.0
github.com/google/uuid v1.3.0
github.com/iden3/contracts-abi/state/go/abi v1.0.0-beta.3
github.com/iden3/go-circuits/v2 v2.0.1
github.com/iden3/go-circuits/v2 v2.0.2-0.20240131165639-deb061a1b3e6
github.com/iden3/go-iden3-core/v2 v2.0.3
github.com/iden3/go-iden3-crypto v0.0.15
github.com/iden3/go-jwz/v2 v2.0.1
github.com/iden3/go-rapidsnark/types v0.0.3
github.com/iden3/go-rapidsnark/verifier v0.0.5
github.com/iden3/go-schema-processor/v2 v2.1.1
github.com/iden3/go-schema-processor/v2 v2.3.1
github.com/iden3/iden3comm/v2 v2.1.0
github.com/ipfs/go-ipfs-api v0.7.0
github.com/piprate/json-gold v0.5.1-0.20230111113000-6ddbe6e6f19f
Expand All @@ -39,7 +40,6 @@ require (
github.com/goccy/go-json v0.10.2 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect
github.com/iden3/go-iden3-crypto v0.0.15 // indirect
github.com/iden3/go-merkletree-sql/v2 v2.0.4 // indirect
github.com/iden3/go-rapidsnark/prover v0.0.10 // indirect
github.com/iden3/go-rapidsnark/witness/v2 v2.0.0 // indirect
Expand Down Expand Up @@ -78,7 +78,7 @@ require (
github.com/tklauser/numcpus v0.6.0 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
golang.org/x/crypto v0.12.0 // indirect
golang.org/x/sys v0.11.0 // indirect
golang.org/x/sys v0.15.0 // indirect
google.golang.org/protobuf v1.30.0 // indirect
gopkg.in/go-jose/go-jose.v2 v2.6.1 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
Expand Down

0 comments on commit 20d50f1

Please sign in to comment.