三、在ledger保存schema和credential定义
0、
0.1 作为设置,Steward(已在分类帐中)将Trust Anchor添加到分类帐。
0.2 Steward构建SCHEMA请求以将新schema添加到分类帐。
一旦成功,Trust Anchor将使用匿名凭据为Steward添加的schema发布和存储定义。
1-8、 同(一)1-8
我们需要为SDK提供一些处理indy分类帐所需的上下文。 这要求我们将SDK指向一些创世纪交易,告诉SDK如何联系网络上的分类账,以及如何相信它所联系的节点拥有适当的密钥。 我们还需要创建一个钱包,以便SDK可以存储DID以及我们将要使用的密钥材料。 此外,我们需要创建一个信任锚标识,该标识具有创建模式和凭证定义的权限。
9、现在我们需要创建和定义一个模式schema。 indy中的模式是非常简单的JSON文档,它们指定了它们的名称和版本,并列出了将出现在凭证credential中的属性。 今天,它们没有描述数据类型,重复规则,嵌套和其他复杂的结构。
构建SCHEMA请求以将新模式作为Steward添加到分类帐

*Schema data*:
{'attrNames': ['age', 'sex', 'height', 'name'],'id': '1','name': 'gvt','ver': '1.0','version': '1.0'}
*Schema*:
{'data': {'attrNames': ['age', 'sex', 'height', 'name'],'id': '1','name': 'gvt','ver': '1.0','version': '1.0'},'dest': '$(Steward DID)','seqNo': 1}
*Schema request*:
{'identifier': '$(Steward DID)','operation': {'data': {'attr_names': ['height', 'sex', 'age', 'name'],'name': 'gvt','version': '1.0'},'type': '101'},'protocolVersion': 2,'reqId': 1547705470104372004}

10、将SCHEMA请求发送到分类帐

*Schema response*:
{'op': 'REPLY','result': {'auditPath': ['3cQgnDAZFZLbzxrAxQLeBXDnczLBoXQebYXq6QBUY69X','3i3FMwaYKSTDRRn4M3cKZPrXQRm8XyQ9G2NcHYLTKBRm','AcctzGMWr4TrdWtcAfdr2h8NsxCepyg99k5yxkScG9F7'],'reqSignature': {'type': 'ED25519','values': [{'from': '$(Steward DID)','value': 'FEPpzMFxhGLW9mzZRU1mm9DWrao5wpVEiorzVgFQh1scNHwUjfwYMFGM8sy1TpKbtM6Eymgy2ZoPd6nHEcAaAXZ'}]},'rootHash': 'EKLGW5YWYyW8swwEeWFkV6F9n5qXY8JNnRKkTVEEfBMJ','txn': {'data': {'data': {'attr_names': ['height','sex','age','name'],'name': 'gvt','version': '1.0'}},'metadata': {'digest': '25929fb2becde460a365c91628c6e38e3860c4f8f333155c71d9273dfd02cf6a','from': '$(Steward DID)','reqId': 1547705470104372004},'protocolVersion': 2,'type': '101'},'txnMetadata': {'seqNo': 20,'txnId': '$(Steward DID):2:gvt:1.0','txnTime': 1547705471},'ver': '1'}}

11、接下来,我们创建一个credential定义。 这引用了我们刚刚添加的模式,并宣布了谁将要发布具有该模式的凭证(在本例中为我们的信任锚标识),他们计划使用什么类型的签名方法(“CL”=“Camenisch Lysyanskya” ,indy用于零知识证明的默认方法,它们如何计划处理撤销,等等。

使用anoncred作为信任锚来创建和存储CRED DEFINITION,用于给定的Schema。

{'id': '$(Trust anchor DID):3:CL:1:cred_def_tag','schemaId': '1','tag': 'cred_def_tag','type': 'CL','value': {'primary': {'n': '79310241650606152057559266926426261928114154483729036050683313574784409652062025066806824090336602018198711458673561374866126168113782161660827876929700609615492509494876453689438261351281389802293215359821400251276211430779291227627994495974176691504996406687103068262168023475540877612192742089721371452241600965881325014795325558615520468904965111281665951836545184291668236073931490091706635763405289073198182463427370186634243288947077422339913068813410137392327375365792229119826406458480292427029641267299661485841793804068585892577723574727563611096133521736575509265259370186593052350456839301604021613675297','r': {'age': '36746685679029309158070213227365346158206758313153238043517394594716925962884028095946576783302110004006262457811100648321284300367745111735936074879893109481947203507966179402968806874180222793662433353018144021579368311635063724438449816757693821317607938907088355832151065216547810093650020405162665856112769656744917799588585406170700307587592916558916819674058407630313739495716920897012030885596364172643256810380741361675834173405966451053253184994047969773198313683343779041653925601450924631090990833313414892175351225827081625121303587765808824141755666938408241183372392246114835966424715382136203812732951','height': '69372565822986746182751086591783373183164900433566353067843213027483731280672832487932364755231557207564864172050216810484713584126852133136520411437358196685864375269958886972109251761463067800541524405961926351489089673500130556954587076889772002517686012751826213307274208771841861469012222340287482463667249297658880242869749773444198344857983495247353087172442000475163796037478685872043964474731139079745903045467952226632881286765977280197507249895446762031468835161271821535017220325538726753307195644604562553799995832689240456866321846885541579863357182399783260476611232880587936509140300603504068611966896','master_secret': '23552872724495065310821725693036468826542686349934588140823723467719742873671984965999080804724219321687637797641574862962706318812601145446324405018887576975927577355513609083014232581104969010816095504522019145698436124549444108440177319413665156338998910852607008000008166995695740891148609517434252691226079900360768453057905077114344805752746036103509594199789090795815508994568406524531589634496879787117442893044710902869968210579314994283724211651237635299945169757413052552978452342595508235870957707166666794213961527673744915290436407330284213764793376582965103439005857107843767331359299060498820582772099','name': '65687266652641137472419078064964358874116480328070600811894886006114380600859659692356821486584848885968619038738838260996001652799332581187647527573877396924251805747132754110293277875387629977805316312239236093868187695304421756825299975678217101025151511254323905398589127663438661396421665270990808368447876116639591114086667180589922950385658746018428937267616242214968513540362188725355365814337546261681400786320380818540219486968117798290710457859159974432119313556199327153566495815699393337803075684166557313325179449772349644417891532655171101739568231542811708912104530772648949257318347071629491695305492','sex': '73299004155691877455450384704963860852065594653902958993009225675580808087404182729894913349757417158196882196411058525729383479353041304222074525052136084760308470481285893859265832449754499618623197027355540861609680847251343538743429153112405318944304167297901354724937936922988032341230375061117109752148292304394563549888690139991920739418508568254559810136966659195553507777598945761907402140779595312343793730297982605129570910802105334988893727325105223672843810654749338669890018882560540004703875319776109498022743671721450025428061836304680780576118642551933251589462594277144211073445112763321081582959352'},'rctxt': '32209450973421621802510556184283437345036327028204004585485818710797654642665993585997551304367513935506273976685143946321388312530719519667672885384322724558469573855561142139405421800967392709812044833994699127954666767248295735350426145795787793765992520155213088821587893423169082004077379630678794966059508080859761930282829285376738042990805234441511380196318847441592363309756271314348658888224630908442589123774499477023724827894730419317290621237948892067293552277615875287893526464520343363548291592237225225542190989117971584470425002280523205012272742232486918617095370360266016258855693014161932981736902','s': '5162172743011484140304796702025798829951905633394271253752932041692661898605453671270199922755756471483841394066610134858679535743920252260358649739699410747470398763225241169579021346206511299079336636818071201688608006460020490139985742558255052867238154246593802532935395373782420188334982577206561327827421517041306891272217508068952047861606680769972515834285429705270629924227296316994366133544077353950389961309681373743844378919329509389034941401042540043446305455558159176658035456154564363825671818291066039265218332165593048169778708601822012210640654436277827537783459686955414023232780288572584407280463','z': '9244275509447139953557167001393607943672873727041561492933461101967674169860363369206651857331077526065763512784373571699066997762771868359532794426221736423211669264026223398601375084575837850116372514324912303606976403335621847067800172875268413711143135758289736582088711651690114067613311848689459514142248879502867078706315024828733437518565828525457802179118694989421683452155763308830963849582883606828502955628562071692031963290370149778281662240411207159514910168496658103755169514106259543097207273418491389091698652586417187169350197218630971369387453880209107217264074918033137524484511549698031477232354'}},

四、发行凭证
显示如何将凭证作为信任锚发布,该信任锚已为现有架构创建了信用定义。
在Trust Anchor使用匿名凭据成功创建并存储Cred定义之后,
Prover的钱包已创建并打开,用于生成Prover的主密钥。
之后,Trust Anchor为给定的Cred定义生成Credential Offer,使用Prover的DID Prover使用Credential Offer创建Credential Request
然后,Trust Anchor使用Prover的凭证请求来颁发凭证。
最后,Prover将Credential存放在钱包里。
1-11 同(三)1-11
10、
```
Schema response:
{‘identifier’: ‘Th7MpTaRZVRYnPiabds81Y’,
‘op’: ‘REJECT’,
‘reason’: 'client request invalid: ’
“InvalidClientRequest(‘Th7MpTaRZVRYnPiabds81Y can have one and only "
"one SCHEMA with name gvt and version 1.0’,)”,
‘reqId’: 1547718461791291005}

12、到目前为止,我们已经创建了一个可用于颁发凭据的标识。 现在,我们需要另一个可用于在颁发凭证后保留凭据。
创建Prover钱包并打开它以获取句柄
13、Prover创造Master Secret
14、
[此时,发行者和接收凭证的人(称为持有者)参与导致发行的交互协议。
首先,发行人提供凭证。 这一步是可选的; 我们将它包括在内以保证完整性 接下来,持有者请求凭证,提供将它绑定到它们的盲法链接秘密。 最后,发行人生成凭证并将其交给持有人。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190117150821766.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h0dHAxODgxODg=,size_16,color_FFFFFF,t_70)
这三个步骤体现了在许多indy交互中使用的协商模式(例如,在证明中)。 任何一方都可以开始; 另一方承认并接受 - 或提出反建议。 对于反建议,新的谈判周期开始; 在更简单的情况下,谈判成功结束。 在凭证发行期间可以使用谈判来协商对凭证的更改(例如,纠正错字或要求发行者包括或省略他们最初未提出的数据); 但是,我们不会在此处介绍该高级工作流程。]发行人 (Trust Anchor) 为 证明人Prover创建 Credential Offer

Credential Offer:
{‘cred_def_id’: ‘$(Credential definition id)’,
‘key_correctness_proof’: {‘c’: ‘24431823888456419811910928350610176845394020598725999377437960393737022664041’,
‘xr_cap’: [[‘height’,
‘276195973841910508728901955456603312881573985269077860858538813616347634365458784356963620699901359733112855207988329155667145333595577839822500118362184872539947183958978903922380677592084985532616666313894622598225022752140725310109360365487183203582102446438619548995289407996782933016208372858434425114741422883233185535815610952365586523835029543671558998640940361161311269562840211759413823895669554129726414522600786866629494771884999216284061895432156131435920079037524842364475442551362268564536256004223855971161799938691762038715359873200026992649078236584052875859780427472559805095443664142085205839126400141075701140361882662033979049397446638351735693096341219217809516433906650’],
[‘sex’,
‘34186938256071606300502061371191649019141227050349062799437392956533200386139266772880672082054659155893455897810253806788210053765323610216882059636280882019972795411330378999166490901874936500113737593910272741035527655434781105101630254313655138151297238814000818201894740602027923231006185329260138028615203197954581362265658652133652370533802905799935195568059377708732512307953976042111795714279942642004537143907687984441781448109445459330873691453529657214465964926740471989569219780735179373719133530478582392372606790722770884143196460801680941977858430639664537543004192191956477984439943429069790284482046125107630405995234640698649691999138313133657365218612135930657443728465943’],
[‘age’,
‘566179124791556324043697531954414793479764935854907744366169230457328960559321654984168587997547504007714425914514509888147490739049002482210608863955996081317278997759655456004346562056316774343839290844162147416023526251877585973782834301276326532234900997897913278459689845151452334042145989389383745611360680279438184173423074236210823464225035898312229993914580762181111938536269857380288146208550377503147445598613010943481622252584140018911427358016394876359887631522018797847373992399885433653896973813227340573484598962797285023027490365314596488251234411353767566833184893628734419775665330310220217169965981897086780609700443932545221336743582534064518254209201049165282574527925972’],
[‘name’,
‘560775840008164166816313195974835957113802170213947974841473536194218609180539521658929818975377194033151970033666418046827110314737238401671812757767048660507941460474241383978582205153341433035613550335865584014885234776112278738717001448497036496566582867081258440658866558460940798242085356516354609536531485307118519305322151632381729889473943816347691067894303361325329814760617163529541709606915864878307199958007384143672634928848148462574240112874118069916178092128329332749562742470257182937985249404211340796375060783902726843208226129173164040742108302552548513645661226691931834500968181110034004963447759250109635104196805802406227113477902044189593492477386156708273530235246574’],
[‘master_secret’,
‘524107686495845473921200697502678509786834786214155370863481918951024889644429726431577568595672668075497702908155357941809420157174315928144271668440667408110845997070832449960174032002704668417991356400249102367611868683984106167028192071993313982851612566265384339837604697052115656419573995523792387342289307955776937681601389329180687824708807826656639070877987663618801249091542196645875952214191106417544145351931476430621314061680502016838843764300188014413491951982461175290202661315567903553542985087790469929684465032086545484895032215828561131081128373846881183783529128934164454600066568672435981721072567713277692138848900063420348120339758431510440816185061131090365296595730615’]],
‘xz_cap’: ‘332917886562335299274180027866797663930866563821315861323962344914954336058991455317047563634062995343880491233587313456002090231265237933089118966696452571937344952640807169815100161174357623463206528481986365603503184430101587314874170254657699315105055773120494069671085674148725928518518092851424071662321594780694898289872637681329045394408187120583825596271557423718112713112348118383338566386569193248488565332414842968744129696897292109288601901709891980037305791623407188890398991492005638052083494036522689718424800163498154812497711472852839584063561198116881912963879164170559310351170261112249599962454597671682879358093147819195575822136216076807861862047836906419064786995723088’},
‘nonce’: ‘829931018822260014383905’,
‘schema_id’: ‘1’}

15、Prover 创建Credential 请求 对于给定的 credential offer

{‘blinded_ms’: {‘committed_attributes’: {},
‘hidden_attributes’: [‘master_secret’],
‘u’: ‘49757726005964920438614004587438815559784260796471861041864149922134285571587912758994586182925281077394442817336101003366159907579513436159596747370592570405852644061552734465094636433035986059618293660152196190626918992426739023184910225389544232291499923431051594364348927832439838818754505313261654501564905336530561445920359090328774390162747260154035492379445456150551816923672393311207480087863318561956118297878635300963720169136293125417744485315427568324872433121179285315250267025378997985712502672012322031887935916577545028702727795186623629216288524940815760548782616689498710281093854608368475738059136’,
‘ur’: None},
‘blinded_ms_correctness_proof’: {‘c’: ‘105920773147603722457541891994290678201807323900424295651621053656814172767248’,
‘m_caps’: {‘master_secret’: ‘22838231575512296888239941077420199812013520431001144691116478934136370979584709107715517298987612569404935024497108279911508654533689210581657449166363216952714105568258677214721’},
‘r_caps’: {},
‘v_dash_cap’: ‘3510947780743230439744581239107913433669549542117352766909821438583951092291790410549544939252375988049243431371458024421317825531166958338919537825181908853109146118270758511426082413064138983161225012892922385569764465184466493767782991032194492196840528750874447689275542860101865375276800252106817920140998885801214211560348763415255243905267752319957725230577101826434936969411152654865000428703047018816933511360125438428392048042726123669025764799673441968056125179022272148563998778097912422748439839061791089772006820781876662027723885375396128973382260418789205221484306946827848818779866589966506851358122889863105790646524260273085212258306151043859537643642836339498621421317234700623308629120233459520782’},
‘cred_def_id’: ‘$(Credential definition id) 9M5xMzjVmyfxE7RJzvMUN4:3:CL:1:cred_def_tag’,
‘nonce’: ‘232279728588766005645699’,
‘prover_did’: ‘VsKV7grR1BUE29mG2Fm2kX’}

16、Issuer(Trust Anchor)为凭证请求创建凭证

Credential:
{‘cred_def_id’: ‘$(Credential definition id) 9M5xMzjVmyfxE7RJzvMUN4:3:CL:1:cred_def_tag’,
‘rev_reg’: None,
‘rev_reg_id’: None,
‘schema_id’: ‘1’,
‘signature’: {‘p_credential’: {‘a’: ‘56432813301334303356367446855918735504950110701893541152968859931888616221628182270150548477451472339819589552837029554497741416485176251028183205612717976129947731890185049498887184075761108298934396089313254234136874945485801231168805696826144901809334777792908933746791851892984556505821622302837773884375027913742306979433527205940062287034297127509505891658265935314176334566220654117232013714047279110050958397833298592147562395252263214247698389431979513024846233580503638348659579502491668392261123601801792370279724062775140481632837309259588845411748593958524805970342976028143066999721793753351304480476793’,
‘e’: ‘259344723055062059907025491480697571938277889515152306249728583105665800713306759149981690559193987143012367913206299323899696942213235956742929731076337722935263941317431791663759’,
‘m_2’: ‘87933324484247736755432182254530234578539725681347360397600269871642228431291’,
‘v’: ‘6069182766442528844681283096164308836398468942896241866108040862256712934731183656544675612025574144628243600869046957609648426184503877259047845107581270657377522683363722358599552831548681937354871237292237322307951584282674720272554379164995303783557883901445269065875568147941794366562746045237415907659675894469708059612397735719327782255221560105584831150214644641734008092084457772298190637058032674195201411675806463701805267463410825047890183179221133152074295793314628185223010343663521894848630838083858260886952873864896017479251277716332319271664018965869544242334592341593808000432214670095652631539340511011106151679720155857197142821126884990590798223993104921099049915344212167177350467253769879055003551486696149717215249342177820294844128787063816587886039489921247687886180090569266988860236349653194’},
‘r_credential’: None},
‘signature_correctness_proof’: {‘c’: ‘89014097783699979368034669322104775542078992115522677098431352259297036386497’,
‘se’: ‘4095256482706653810024973947215501821939588852368400523959249780612871537856709314182296630828261327291720808975763282605013399988279359029566778367893859470236194742185534207775076936313725104898270572284962482445815012081925412570005182826722273429480854608986932649728698480636312390292467454042593044571702701627501355426417729721974102009643975135178294133434223649284485406172414340361215095977331137475005926474581645300677957068925621582526726632566291654273509634618916333986942961163269401288968982596136550506651715942511784717583730254453391920566790047902591158281461849648114341698249719257705841912447’},
‘values’: {‘age’: {‘encoded’: ‘28’, ‘raw’: ‘28’},
‘height’: {‘encoded’: ‘175’, ‘raw’: ‘175’},
‘name’: {‘encoded’: ‘1139481716457488690172217916278103335’,
‘raw’: ‘Alex’},
‘sex’: {‘encoded’: ‘5944657099558967239210949258394887428692050081607692519917050011144233115103’,
‘raw’: ‘male’}},
‘witness’: None}

17、证明流程并存储凭证
prover_store_credential(prover_wallet_handle, None, $(Credential Request)cred_req_metadata_json, $(Credential), $(Credential definition), None)
18-20、clean up
![保存模式和凭证定义、发行凭证](https://img-blog.csdnimg.cn/20190118095852941.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h0dHAxODgxODg=,size_16,color_FFFFFF,t_70)

indy-sdk tutorials数字身份认证(二)相关推荐

  1. 一种基于区块链的数字身份认证方案

    一种基于区块链的数字身份认证方案 0 摘要 1 概要介绍 1.1 企业化 1.2 联盟式 1.3 用户中心化 1.4 本文创新点 2 方案基础知识介绍 2.1 密码学工具与算法 2.1.1 随机数 2 ...

  2. 网易区块链打造可信数字身份认证应用新场景,赋能科技峰会

    这也是网易首支词曲编唱全链路AI音乐作品,上线网易云音乐的同时,也已嵌入网易区块链团队为大会量身定制的NFT门票中,一键点击.随时收听,成为"未来通行证"新的亮点. 目前,&quo ...

  3. 数字身份认证已经成为数字身份的关键命题

    中国处在转型升级的历史节点,在企业互联网化.数字化.智能化.全球化的发展背景下,数字身份认证与管理及用户隐私保护已成为数字身份发展不可回避的核心问题. 我们知道,数字身份并不是用户真实身份,它是依靠加 ...

  4. 区块链系统之《基于区块链的数字身份认证》

    1. 架构图 2. 流程说明 step1.APP创建数字身份 1.1. 把创建身份请求和所必要的信息发给Sever. 1.2 在区块链上创建数字身份. step2.声明属性 2.1. 用户声明属性(如 ...

  5. 对数字身份认证安全,是企业的责任还是个人的责任?

    随着个人身份识别在公共场合的普遍应用,民众已经逐渐习惯了通过刷证(身份证件).刷脸(人脸识别)办理业务,消费者对在线欺诈和身份盗窃的担忧日益加剧,希望企业能够利用新技术在线保护他们.根据Trulioo ...

  6. Hyperledger Indy项目(开源去中心化身份平台)、去中心化身份(DID)、分布式数字身份项目

    文章目录 一.Hyperledger Indy 1. 什么是Hyperledger Indy 2. 名词概念 3. Indy实现独立的数字身份 4. Indy如何验证数字身份 5. 使用案例 Kiva ...

  7. 基于 Token 的多平台身份认证架构设计

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 一点一滴的Beer 来源 | https:// ...

  8. App后台开发运维和架构实践学习总结(12)——基于token的多平台身份认证架构设计

    分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!点击浏览教程 一.概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情.随着移动互联网时 ...

  9. WebApi_基于token的多平台身份认证架构设计(Z)

    1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格局 . 不同的客户端产生了不同的用户使用 ...

最新文章

  1. 深入浅出神经网络原理
  2. Linux_Samba详解
  3. 反射获取成员变量并改值
  4. request内置对象
  5. Sql Server之旅——第六站 为什么都说状态少的字段不能建索引
  6. linux 显卡转码,ffmpeg用GPU转码
  7. python tablewidget 颜色_更改QTableWidget的默认选择颜色,并使其半透明
  8. 解决Weblogic与Hibernate的jar冲突
  9. RF-接口自动化测试-「Body Data格式」
  10. Face3D学习笔记(3)3DMM示例源码解析【上】准备工作
  11. 通用数据权限管理系统设计
  12. H5制作平台开发游戏成本解析
  13. [电影]《指环王》新老三部曲完全赏析(五军之战)
  14. SATA电源线和数据线接口定义
  15. 爱了爱了!丰巢智能政务柜真的太实用了
  16. 固态硬盘原理与ASS SSD Benchmark
  17. 整理的一篇iOS面试题大全
  18. HTML+CSS小实例(进度条)
  19. 运维老兵对运维中常见技术类问题剖析
  20. win10利用miracast进行无线投屏,双屏扩展

热门文章

  1. 奇偶校验器真值表_奇偶校验器
  2. 《龙的传人》问世40年 原唱:两岸多了解才更友善
  3. ffmpeg 集成aom av1, 封装avif
  4. HTTP协议状态码查询,详解(200、206、500、416、403、404)
  5. 《数学之美》---笔记006
  6. html首行缩进怎么弄,css首行缩进怎么弄
  7. 查看网页源代码 / 查看框架源代码
  8. python的input添加变量_在python中如何定义一个全局变量raw_input() 与 input()的区别...
  9. 北京现共享男友 盘点那些奇葩的共享物品---众智云
  10. php微信退款回调通知,微信退款异步回调通知