1. createCredential

基本信息

  1. 接口名称:com.webank.weid.rpc.CredentialService.createCredential
  2. 接口定义:ResponseData<CredentialWrapper> createCredential(CreateCredentialArgs args)
  3. 接口描述: 创建电子凭证。

接口入参: com.webank.weid.protocol.request.CreateCredentialArgs

名称类型非空说明备注
cptIdIntegerYCPT编号
issuerStringY发行方WeIdentity DIDWeIdentity DID格式数据
expirationDateLongY到期日
claimMap<String, Object>YMap类型的claim数据凭证所需数据
weIdPrivateKeyWeIdPrivateKeyY 签名所用Issuer WeIdentity DID私钥,见下

com.webank.weid.protocol.base.WeIdPrivateKey

名称类型非空说明备注
privateKeyStringY私钥值使用十进制数字表示

接口返回: com.webank.weid.protocol.response.ResponseData<CredentialWrapper>;

名称类型说明备注
errorCodeInteger返回结果码
errorMessageString返回结果描述
resultCredentialWrapper 见下
transactionInfoTransactionInfo交易信息

com.webank.weid.protocol.response.TransactionInfo

名称类型说明备注
blockNumberBigInteger交易块高
transactionHashString交易hash
transactionIndexBigInteger交易索引

com.webank.weid.protocol.base.CredentialWrapper

名称类型非空说明备注
credentialCredentialY凭证信息具体见下
disclosureMap<String, Object>Y披露属性默认为全披露

com.webank.weid.protocol.base.Credential

名称类型非空说明备注
contextStringY版本默认为v1
idStringY证书ID
cptIdIntegerYcptId
issuerStringYWeIdentity DID
issuanceDateLongY创建日期
expirationDateLongY到期日期
claimMap<String, Object>YClaim数据
proofMap<String, Object>Y签名数据结构体

此方法返回code

enumcodedesc
SUCCESS0成功
CPT_JSON_SCHEMA_INVALID100301JsonSchema无效
CPT_ID_ILLEGAL100303cptId无效
CREDENTIAL_ERROR100400Credential标准错误
CREDENTIAL_CREATE_DATE_ILLEGAL100408创建日期格式非法
CREDENTIAL_EXPIRE_DATE_ILLEGAL100409到期日期无效
CREDENTIAL_CLAIM_NOT_EXISTS100410Claim数据不能为空
CREDENTIAL_CLAIM_DATA_ILLEGAL100411Claim数据无效
CREDENTIAL_PRIVATE_KEY_NOT_EXISTS100415私钥为空
CREDENTIAL_ISSUER_INVALID100418WeIdentity DID无效
ILLEGAL_INPUT160004参数为空

调用示例

  1. CredentialService credentialService = new CredentialServiceImpl();
  2.  
  3. HashMap<String, Object> claim = new HashMap<String, Object>(3);
  4. claim.put("name", "zhang san");
  5. claim.put("gender", "F");
  6. claim.put("age", 18);
  7.  
  8. CreateCredentialArgs createCredentialArgs = new CreateCredentialArgs();
  9. createCredentialArgs.setClaim(claim);
  10. createCredentialArgs.setCptId(1017);
  11. createCredentialArgs.setExpirationDate(1551448312461L);
  12. createCredentialArgs.setIssuer("did:weid:101:0x39e5e6f663ef77409144014ceb063713b65600e7");
  13.  
  14. WeIdPrivateKey weIdPrivateKey = new WeIdPrivateKey();
  15. weIdPrivateKey.setPrivateKey("60866441986950167911324536025850958917764441489874006048340539971987791929772");
  16.  
  17. createCredentialArgs.setWeIdPrivateKey(weIdPrivateKey);
  18.  
  19. ResponseData<CredentialWrapper> response = credentialService.createCredential(createCredentialArgs);
  1. 返回结果如:
  2. result:(com.webank.weid.protocol.base.CredentialWrapper)
  3. credential:(com.webank.weid.protocol.base.Credential)
  4. context: https://github.com/WeBankFinTech/WeIdentity/blob/master/context/v1
  5. id: f931b882-00ab-4cb0-9e83-d9bb57212e81
  6. cptId: 1017
  7. issuer: did:weid:101:0x39e5e6f663ef77409144014ceb063713b65600e7
  8. issuanceDate: 1560416978296
  9. expirationDate: 1551448312461
  10. claim:(java.util.HashMap)
  11. name: zhang san
  12. gender: F
  13. age: 18
  14. proof:(java.util.HashMap)
  15. creator: did:weid:101:0x39e5e6f663ef77409144014ceb063713b65600e7
  16. signature: HHQwJ9eEpyv/BgwtWDveFYAPsKOPtEEWt6ieb28PS76pDwlpFKtbh9Ygog8SUPIXUaWNYS2pLkk4E91hpP8IdbU=
  17. created: 1560416978296
  18. type: Secp256k1
  19. disclosure:(java.util.HashMap)
  20. name: 1
  21. gender: 1
  22. age: 1
  23. errorCode: 0
  24. errorMessage: success
  25. transactionInfo:null

时序图

sequenceDiagramparticipant 调用者participant CredentialService调用者->>CredentialService: 调用CreateCredential()CredentialService->>CredentialService: 入参非空、格式及合法性检查opt 入参校验失败CredentialService—>>调用者: 报错,提示参数不合法并退出endCredentialService->>CredentialService: 生成签发日期、生成数字签名CredentialService—>>调用者: 返回凭证