附录

CTCptService相关的参数类型描述

CTCptMapArgs

注册CPT所需的构建信息,包含CPT的必要信息。

CTCptMapArgs {
    private WeIdAuthentication weIdAuthentication;

    private CptType cptType = CptType.ORIGINAL;

    private String cptName;

    private String cptDescription;

    private String cptManagment;

    private Map<String, Object> credentialType;

    private String url;

    private String supervisable;

    private Map<String, Object> properties;;

    private String[] required = null;
}

Cpt

CPT的完整信息,包含构建CPT传入的内容和系统补全的内容比如CPT基本信息和一些元数据。

Cpt {
    /**
     * Base info of cpt.
     */
    protected CptBaseInfo cptBaseInfo = new CptBaseInfo();

    /**
     * The cpt json schema.
     */
    protected Map<String, Object> cptJsonSchema;

    /**
     * The meta data.
     */
    protected MetaData metaData = new MetaData();
}

其中cptJsonSchema主要是注册CPT时所传入的CTCptMapArgs的内容,元数据MetaData包含创建时间、过期时间、创建者信息和创建者的签名。

MetaData {
    /**
     * The weIdentity DID of the publisher who register this CPT.
     */
    private String cptPublisher;

    /**
     * The cpt signature for the weIdentity DID and json schema data in Base64.
     */
    private String cptSignature;

    /**
     * The cpt create timestamp.
     */
    private long created;

    /**
     * The cpt update timestamp.
     */
    private long updated;
}

CTCredentialService相关的参数类型描述

CTCreateCredentialPojoArgs

签发Credential所需的构建信息,包含所依据的CPT ID、Credential的必要内容和该CPT自定义业务属性的内容(claim部分)。

CTCreateCredentialPojoArgs {

    private static final Logger logger = LoggerFactory.getLogger(CTCreateCredentialPojoArgs.class);

    private WeIdAuthentication weIdAuthentication;

    private Integer cptId;

    private Long expirationDate;

    private String id = null;

    private Map<String, Object> claim;

    private Map<String, String> recipient = null;

    private CredentialType docType = CredentialType.ORIGINAL;
}

CTCredentialPojo

生成的Credential的完整信息,包含所依据的CPT的全部内容(CptBaseInfo、CTCptMapArgs和MetaData)、Credential的构建参数内容properties和系统自动补全的信息(Credential的签发时间和proof等等)。

CTCredentialPojo {

    private String $schema = JsonSchemaConstant.SCHEMA_VALUE;

    private String type = JsonSchemaConstant.DATA_TYPE_OBJECT;

    private CptBaseInfo cptBaseInfo = new CptBaseInfo();

    private CTCptMapArgs ctCptMapArgs = new CTCptMapArgs();

    private Cpt.MetaData metaData = new Cpt.MetaData();

    private Map<String, Object> properties;

    private String context;

    private List<String> docType;

    private Map<String, Object> proof;
}

其中proof中包含了签发者信息、签发时间、对应claim部分的哈希盐和签名,示例如下。

"proof":{
        "created":"2021-10-20T14:46:32Z",
        "creator":"did:weid:1:0x6b472e796f9819a65621ad3c1ce47f680294a917key-0",
        "salt":{
            "certificateNumber":"1ia5o",
            "exclusiveArea":"y2syZ",
            "gettingPrice":"2o4cC",
            "holder":"yOaBp",
            "landNumber":"0Wvvo",
            "landType":"vUjcB",
            "sharingArea":"7xnJj",
            "site":"NHidD",
            "totalArea":"Y7p9g",
            "useType":"hfb3A"
        },
        "signatureValue":"dv0TgTJti9L28qUjBcLKiNgz2Gh7EkOchD2n83A3rVIaXqNQaZVHWwy+D80Z52h9pbgfVwRAqHmSnBmjn0bNzAA=",
        "type":"Secp256k1"
    }

ClaimPolicy

ClaimPolicy是选择性披露的策略,针对Credential中的业务属性字段claim的内容,指定哪些属性需要披露和哪些属性需要隐藏(1表示披露,0表示隐藏),ClaimPolicy本质上是一个字符串。

ClaimPolicy {
    private String fieldsToBeDisclosed;
}

CTCredentialFomal

CTCredentialFomal是面向用户的具有规范格式的Credential,包含ChinaTrust Credential格式的必要信息。createCredential接口生成的CTCredentialPojo类型Credential可以直接通过内部方法转化成CTCredentialFomal,也可以由CTCredentialFomal转化成CTCredentialPojo。最后交给用户的也是CTCredentialFomal类型数据。

CTCredentialFomal {

    private String $schema = JsonSchemaConstant.SCHEMA_VALUE;

    private String type = JsonSchemaConstant.DATA_TYPE_OBJECT;

    private CptType cptType = CptType.ORIGINAL;

    private String context;

    private Integer cptId;

    private Integer cptVersion;

    private String cptName;

    private String cptDescription;

    private String cptManagment;

    private Map<String, Object> credentialType;

    private String url;

    private String supervisable;

    private String cptPublisher;

    private String cptSignature;

    private long created;

    private long updated;

    private Map<String, Object> properties;

    private Map<String, Object> proof;
}