geunkim / Metaverse

1 stars 5 forks source link

20230523_indy-sdk의 VP 형식 문제 #36

Open portalchu opened 1 year ago

portalchu commented 1 year ago

indy-sdk를 사용해 VP 전달 과정 중 각 속성 값에 대한 정보가 부족해 이해가 힘들어서 도움을 받고자 Issue에 올립니다. 아래는 Verifier가 Holder에게 검증을 위해 필요한 정보를 보내는 Proof Request 입니다. 이때 Holder는 속성 값 'name', 'date', 'degree', 'timestamp', 'birthdate_dateint'을 가지는 VC를 소유하고 있으며 Verifier는 그 중 'name', 'date', 'degree' 정보를 요구하기 위해 아래와 같은 요청 메시지를 보냅니다.

{
  "name": "Proof of Education",
  "version": "1.0",
  "requested_attributes": {
    "0_name_uuid": {
      "name": "name",
      "restrictions": [
        {
          "cred_def_id": "VV9pK5ZrLPRwYmotgACPkC:3:CL:11:default"
        }
      ]
    },
    "0_date_uuid": {
      "name": "date",
      "restrictions": [
        {
          "cred_def_id": "VV9pK5ZrLPRwYmotgACPkC:3:CL:11:default"
        }
      ]
    },
    "0_degree_uuid": {
      "name": "degree",
      "restrictions": [
        {
          "cred_def_id": "VV9pK5ZrLPRwYmotgACPkC:3:CL:11:default"
        }
      ]
    }
  },
  "requested_predicates": {

  },
  "nonce": "598764002857305756812746"
}

아래는 위의 Proof Request를 받은 Holder가 VC를 가공하여 VP로 만든 모습입니다. 이래 정보는 최종적으로 Verifier에게 전달됩니다.

{
  "proof": {
    "proofs": [
      {
        "primary_proof": {
          "eq_proof": {
            "revealed_attrs": {
              "date": "23402637423876324098256519317695433196813217785795317220680415812348801086586",
              "degree": "460273229220408542178729328948548235132905393400001582342944147813984660772",
              "name": "62816810226936654797779705000772968058283780124309077049681734835796332704413"
            },
            "a_prime": "40989562386163754636408932618992178513298836227855308767820631664869310282337780637306678737531865004525706410744296679199250396737277652196812412218673335444730753037377080068638520491503507698496445170545352492332437865309984863269873856168567317972407851219316463891905335384266518225263098964093855301149735298726991889910657594614053850186134110564562737208529433373557229444531180157042954068432434842331808779846417130934492403013900526301068098621035352255071934091034000795185585436374557009628384927049737500786282604942902609588602563575062930612540803132694668946559970457741499951870213204688210091754627",
            "e": "45059917615175393704170948834371870174675156036421818679038489755546244172692317704399731939123051403592932573778591457192978207383018495",
            "v": "1412760581604797364759435064581028864508796578776035373327822543481961946200743614443909341973043808492180736338842373218919380574047944987496533148680514966427275034586858411512252306929613227913202402709988702123967899919201078918179883723121225898736475898841387745216471075667997026313271901915340188232383506029005266056372448760237844462474170386204935520161805925431092804685163669651943649102538984908165027292806397152043462068393485301334130480848991952492289837348244967125674124583649311300536506522278007881287730948299831639291776167527586126286821059103390701109666913887544017084713462168416701960955472071219590142657109933218287362362979940016787134316495183121258363349513652999894915588586559953839448596784707239813097384170072298140606587802517833769213769475020171198389298826184263604141267316418613723034917946239495421080784012657655962136394864231397398782059198973287029144760548456530358093368",
            "m": {
              "timestamp": "662150620684951170301646226625048877267794041228973803609673790582707568456880178038684124226761742669955862315901867162213706771508661277249702735446145621606429291865225094180",
              "birthdate_dateint": "6835038068657731758980677979008307576253377703468578992826309692058270541227752388022109345141491449567611606717164675665178927660042330863048403346175578726982924776573778212298",
              "master_secret": "11103863335718937803187356283275720483651254334983842364389615307871083442241313807636571351498008827485671535160830648423415974869839952045129413408786349145051431097091005690133"
            },
            "m2": "6927606359112118662934168693481156552898444048953301666549356295074836125034039067595298379908560756598496632661794957575057775541576731100875696967892600475690249725718857435677"
          },
          "ge_proofs": [

          ]
        },
        "non_revoc_proof": null
      }
    ],
    "aggregated_proof": {
      "c_hash": "99191089924287589957195573358954533848195495980850811558075004126665228030779",
      "c_list": [
        [
1,68,179,43,74,70,177,17,182,119,55,244,162,112,160,203,63,28,134,204,57,121,194,80,38,240,18,21,243,157,130,225,150,53,174,7,94,109,65,99,177,123,170,5,177,148,93,106,165,197,224,204,225,171,241,218,225,251,182,73,51,244,94,92,243,38,193,32,121,100,99,36,115,31,216,147,32,82,249,130,18,130,245,100,227,167,158,197,42,103,99,133,31,21,154,250,182,131,74,205,208,124,49,194,197,187,160,70,203,171,64,9,131,84,68,80,165,78,135,19,251,5,145,191,233,36,171,84,162,179,175,229,190,162,93,234,20,92,210,49,53,122,33,131,6,170,77,209,55,2,205,50,224,18,221,24,221,55,62,92,146,20,15,156,64,125,89,115,82,239,237,99,11,85,220,24,214,54,145,195,166,162,122,183,90,121,18,228,129,64,183,0,79,184,241,49,76,17,171,212,19,8,72,227,178,212,229,188,47,179,253,65,108,147,101,134,136,70,220,79,91,132,94,241,65,67,156,96,45,106,43,60,135,168,56,1,237,152,87,76,76,106,131,254,143,246,32,5,230,253,101,202,67,29,46,196,131
        ]
      ]
    }
  },
  "requested_proof": {
    "revealed_attrs": {
      "0_date_uuid": {
        "sub_proof_index": 0,
        "raw": "2018-05-28",
        "encoded": "23402637423876324098256519317695433196813217785795317220680415812348801086586"
      },
      "0_name_uuid": {
        "sub_proof_index": 0,
        "raw": "Alice Smith",
        "encoded": "62816810226936654797779705000772968058283780124309077049681734835796332704413"
      },
      "0_degree_uuid": {
        "sub_proof_index": 0,
        "raw": "Maths",
        "encoded": "460273229220408542178729328948548235132905393400001582342944147813984660772"
      }
    },
    "self_attested_attrs": {

    },
    "unrevealed_attrs": {

    },
    "predicates": {

    }
  },
  "identifiers": [
    {
      "schema_id": "VV9pK5ZrLPRwYmotgACPkC:2:prefs:1.0",
      "cred_def_id": "VV9pK5ZrLPRwYmotgACPkC:3:CL:11:default",
      "rev_reg_id": null,
      "timestamp": null
    }
  ]
}

indy-sdk 문서 상 위 VP에 대한 내용이 부족하여 이를 이해하기 힘들었습니다. 혹시 위 내용에 대한 문서가 있다면 공유 부탁드립니다.

geunkim commented 1 year ago
  1. VC에 대한 정보는 어디에 있어서 분석인 된 것인지 더 추가를 해주고. VC의 각 속성에 대한 설명을 추가하고, W3C의 VP에 대한 속성과 분석한 내용을 추가해라.

  2. 사용한 속성과 VC 형식 확인한 내용, Proof Request 정보를 정리해라.

  3. indy-sdk코드와 메시지 정보 문서에서 확인한 부분과 함수를 명시해주고 (네가 받던 부분을 이야기 해주어 다른 사람들이 검토를 할 때니까.. 아니면 코드를 모두 다 봐야하니..)

  4. 그리고 윤진이와 진주가 작성한 문서를 검색해 보라.

  5. 그리고 VP에서 어느 것을 분석이 된 것이고 무엇인 분석이 되지 않은 것인지 명시를 해주고.