14.2 HTTP API
1.接入参数
序号 | 参数 | 含义 | 参数值 |
---|---|---|---|
1 | url | 网关地址 | https://didservice.bsngate.com:18602 |
2 | projectId | 项目ID | 8320935187 |
3 | token | 项目KEY | 3wxYHXwAm57grc9JUr2zrPHt9HC |
2.公共参数
公共请求头参数 | ||
序号 | 参数 | 参数说明 |
---|---|---|
1 | token | 3wxYHXwAm57grc9JUr2zrPHt9HC |
2 | projectId | 8320935187 |
3 | Content-Type | application/json |
公共请求参数 | ||||
序号 | 参数 | 类型 | 必传 | 参数含义 |
---|---|---|---|---|
1 | RequestParam<T> | 是 | 公共参数 | |
RequestParam | ||||
1 | projectId | String | 是 | 项目ID |
2 | did | String | 是 | DID标识 |
3 | data | T | 是 | 任意类型数据 |
4 | sign | String | 是 | Secp256k1签名 |
公共响应参数 | |||
序号 | 参数 | 类型 | 参数含义 |
---|---|---|---|
1 | ResultData<T> | 公共响应数据 | |
ResultData | |||
1 | code | Integer | 返回码 |
2 | msg | String | 提示信息 |
3 | data | T | 任意类型数据 |
3.创建DID过程介绍
创建DID的过程中会生成公私钥信息,为了避免私钥的远程传输,BSN数字身份服务不提供创建DID的过程,开发者可按下述介绍本地完成开发,或者可以使用、参考SDK内的实现过程。
1)通过椭圆曲线算法Secp256k1生成两对公私钥信息;
2)保存私钥,指定主备公钥拼装Base DID Document,其内容如下示例:
{
"@context": "https://w3id.org/did/v1",
"authentication":
{
"type": "Secp256k1",
"publicKey": "28986472722394106073871327423452879123214061743224210681401278929598807211140001274507530324221923795865447680836742348963337343510229880669968499735858"
}
"recovery":
{
"type": "Secp256k1",
"publicKey": "9251971168042915941551574641987721503984542761641852064853964541181378832746959340151297908312616596971625573967556676367696067937171601766581709843378481"
}
}
3)通过base58(ripemd160(sha256(
did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC
4)拼装DID Document内容,如下示例:
{
"did": "did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC",
"version": 1,
"created": "2021-05-20T16:02:20Z",
"updated": "2021-05-20T16:02:20Z",
"authentication":
{
"type": "Secp256k1",
"publicKey": "28986472722394106073871327423452879123214061743224210681401278929598807211140001274507530324221923795865447680836742348963337343510229880669968499735858"
}
"recovery":
{
"type": "Secp256k1",
"publicKey": "9251971168042915941551574641987721503984542761641852064853964541181378832746959340151297908312616596971625573967556676367696067937171601766581709843378481"
}
}
5)使用主私钥对DID Document内容进行Secp256k1签名,最终形成带有签名属性的DID Document,如下示例:
{
"did": "did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC",
"version": 1,
"created": "2021-05-20T16:02:20Z",
"updated": "2021-05-20T16:02:20Z",
"authentication":
{
"type": "Secp256k1",
"publicKey": "28986472722394106073871327423452879123214061743224210681401278929598807211140001274507530324221923795865447680836742348963337343510229880669968499735858"
}
"recovery":
{
"type": "Secp256k1",
"publicKey": "9251971168042915941551574641987721503984542761641852064853964541181378832746959340151297908312616596971625573967556676367696067937171601766581709843378481"
}
"proof":
{
"type": "Secp256k1",
"creator": "did:bsn:3wxYHXwAm57grc9JUr2zrPHt9HC",
"signatureValue": "zD5nt+P/Ga/CRG2hJU/SMRXy210CLdvATsxQdPxTEy9Mc9Y0OSFpE3Yu5k2+OjQKVOtu5of9VFbgO3Zljw/vQxs="
}
}