数字身份之VP验证源码解读

本文详细解析了数字身份验证过程,包括基础参数校验、VP解析、动态挑战生成、nonce替换以及签发者身份、DID文档、签名的有效性校验。此外,还讨论了如何处理不可披露的字段并确保VP的完整性和安全性。
摘要由CSDN通过智能技术生成

阅读此文,需要具备一定的DID数字身份体系专业知识。

上文中已经深度解析了VP的签发过程,本文将着重探讨VP验证过程。

1、基础参数校验、格式校验以及参数封装

//获取presentation即VP
presentationENode = functionArgNode.get(WeIdentityParamKeyConstant.PRESENTATION);
//获取可披露策略
presentationPolicyENode =     functionArgNode.get(WeIdentityParamKeyConstant.PRESENTATION_POLICY_E);
//获取签发者weid(presentationWeid)
weidNode = functionArgNode.get(WeIdentityParamKeyConstant.PRESENTATION_WEID);

2、解析VP

3、生成动态挑战

        基于weid和当前时间戳生成挑战码,这一步和生成vp里面的挑战码是一样的,指定一个随机的字母数字nonce, WeIdentity DID所有者将签署一个包含nonce的凭证,以证明该WeIdentity DID的所有权。依赖方应在挑战中包含随机字母数字(即nonce),以防止重放攻击。这也被称为动态挑战。

challenge = Challenge.create(weid, String.valueOf(System.currentTimeMillis()));
入参为weid和当前时间的毫秒时间戳
challenge = Challenge.create(WeId, currentTimeMillis)
这里的seed就是currentTimeMillis
生成随机种子=当前时间戳+uuid(字符串拼接)
String randomSeed = seed + DataToolUtils.getUuId32()
字符集将此randomSeed编码为字节序列,生成新的字节数组存储到Seed中。
random.setSe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值