5. setPublicKey
基本信息
- 接口名称:com.webank.weid.rpc.WeIdService.setPublicKey
- 接口定义:ResponseData<Boolean> setPublicKey(SetPublicKeyArgs setPublicKeyArgs)
- 接口描述: 根据WeIdentity DID添加公钥。
接口入参: com.webank.weid.protocol.request.SetPublicKeyArgs
名称 | 类型 | 非空 | 说明 | 备注 |
---|---|---|---|---|
weId | String | Y | WeIdentity DID格式字符串 | 如:did:weid:1:0x…. |
owner | String | N | 所有者 | 默认为当前WeIdentity DID |
publicKey | String | Y | 数字公钥 | |
userWeIdPrivateKey | WeIdPrivateKey | Y | 交易私钥,后期鉴权使用,见下 |
com.webank.weid.protocol.base.WeIdPrivateKey
名称 | 类型 | 说明 | 备注 |
---|---|---|---|
privateKey | String | 私钥 | 使用十进制数字表示 |
接口返回: com.webank.weid.protocol.response.ResponseData<Boolean>;
名称 | 类型 | 说明 | 备注 |
---|---|---|---|
errorCode | Integer | 返回结果码 | |
errorMessage | String | 返回结果描述 | |
result | Boolean | 是否set成功 | |
transactionInfo | TransactionInfo | 交易信息 |
com.webank.weid.protocol.response.TransactionInfo
名称 | 类型 | 说明 | 备注 |
---|---|---|---|
blockNumber | BigInteger | 交易块高 | |
transactionHash | String | 交易hash | |
transactionIndex | BigInteger | 交易索引 |
此方法返回code
enum | code | desc |
---|---|---|
SUCCESS | 0 | 成功 |
WEID_INVALID | 100101 | 无效的WeIdentity DID |
WEID_PRIVATEKEY_INVALID | 100103 | 私钥格式非法 |
WEID_PRIVATEKEY_DOES_NOT_MATCH | 100106 | 私钥不与WeIdentity DID所对应 |
TRANSACTION_TIMEOUT | 160001 | 超时 |
TRANSACTION_EXECUTE_ERROR | 160002 | 交易错误 |
UNKNOW_ERROR | 160003 | 其他错误 |
ILLEGAL_INPUT | 160004 | 参数为空 |
调用示例
- WeIdService weIdService = new WeIdServiceImpl();
- SetPublicKeyArgs setPublicKeyArgs = new SetPublicKeyArgs();
- setPublicKeyArgs.setWeId("did:weid:101:0x39e5e6f663ef77409144014ceb063713b65600e7");
- setPublicKeyArgs.setPublicKey(
- "13161444623157635919577071263152435729269604287924587017945158373362984739390835280704888860812486081963832887336483721952914804189509503053687001123007342");
- WeIdPrivateKey weIdPrivateKey = new WeIdPrivateKey();
- weIdPrivateKey.setPrivateKey("60866441986950167911324536025850958917764441489874006048340539971987791929772");
- setPublicKeyArgs.setUserWeIdPrivateKey(weIdPrivateKey);
- ResponseData<Boolean> response = weIdService.setPublicKey(setPublicKeyArgs);
- 返回结果如下:
- result: true
- errorCode: 0
- errorMessage: success
- transactionInfo:(com.webank.weid.protocol.response.TransactionInfo)
- blockNumber: 30011
- transactionHash: 0xda4a1c64a3991170975475fdd6604bb2897512948ea491d3c88f24c4c3fd0028
- transactionIndex: 0
时序图
sequenceDiagramNote over 调用者:传入自己的WeIdentity DID及用作authentication的公私钥调用者->>WeIdentity SDK : 调用setPublicKey来添加公钥。WeIdentity SDK->>WeIdentity SDK:拿私钥来重新加载合约对象WeIdentity SDK->>区块链节点: 调用智能合约区块链节点->>区块链节点: 检查调用者的身份是否和WeIdentity DID匹配opt 身份校验不通过区块链节点—>>WeIdentity SDK:报错,提示私钥不匹配并退出WeIdentity SDK—>>调用者:报错退出end区块链节点->>区块链节点:将公钥和WeIdentity DID以及上次记录的块高写到属性事件中区块链节点->>区块链节点:记录最新块高区块链节点—>>WeIdentity SDK:返回WeIdentity SDK—>>调用者:返回调用结果