# CISS提供的接口【提供给应用服务端】
提供给应用后台的接口 会对IP进行限制认证, 对接时应用需要提供出网IP, 对接时应用需要提供出网IP
# CISS平台验签接口【提供给应用服务端】
- 接口定义:
| > | 验签接口 |
|---|---|
| 接口名称 | verify |
| 接口描述 | U盾平台验签接口 ,仅用于测试和验证,需要应用直接调用CA提供的验签接口 |
| 接口协议 | http+json |
| 承载协议 | http |
| HTTP请求方式 | POST+ HttpServletRequest |
| 请求参数格式 | JSON |
| 承载网络 | Internet |
| 主要使用者 | 应用后台 |
| 接口URL | 测试地址 https://version.simkey.tech/skfinterface/third/verifySign/verify |
- 请求参数
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| appId | 应用的设备号 | String | - | N |
| param | 参数加密串。 UrlEncode(Base64(SM4(CBC_Encrypt({ "phoneNumber":"xxxx", "userName":"xxxx", "signData":"xxxx", "srcData":"xxxx", "signCert":"xxxx", "timestamp":"xxxx", "signature":"xxxx"}))) key为appid对应的 | String | - | N |
param参数明文明细
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| phoneNumber | 用户手机号 | String | 11位 | N |
| signData | 签名值 16进制格式 | String | - | N |
| srcData | 原文 base64格式 | String | - | N |
| signCert | 证书16进制 | String | - | N |
| userName | 用户姓名 | String | - | |
| timestamp | 当前终端时间,格式yyyyMMddHHmmss | String | - | n |
| signature | 请求签名 0-9-A-Z升序排序不区分大小写 用于鉴别发送者。 取值= Sm3WithSM4Base64(appId+ phoneNumber + signCert + signData + srcData + timestamp+ userName) ,SM4采用ciss平台颁发给调用方系统的Key为密钥 | String | - | N |
- 应答消息:
| 名称 | 说明 | 数据类型 | 长度(字节) | 可空 |
|---|---|---|---|---|
| statusCode | 200:成功 其他:失败 | Int | - | N |
| returnObj | 返回的描述信息 | Object | - | Y |
除了状态码212 "接入信息不存在" 为明文外其余returnObj 都为密文使用 加密方式为
UrlEncode(Base64(SM4(CBC_Encrypt(
"timestamp":"xxxxxxxxx",
"resultDesc":"xxxxxxxxx",
"signature":"xxxxxxxxx",)))
1
2
3
4
2
3
4
| > | > | returnObj 明文信息如下 | ||
|---|---|---|---|---|
| timestamp | 响应时间戳。格式:yyyyMMddHHmmss | String | - | N |
| resultDesc | 异常信息描述 | String | - | N |
| signature | 请求签名 用于鉴别发送者。 0-9-A-Z升序排序不区分大小写。 取值= Sm3WithSM4Base64(resultDesc +timestamp) ,签名值的key 为 appId 对应的key | String | - | N |
入参: 最终入参样例:
{
"appId": "xxxxxx",
"param": "zdHsf6uyVW%2bNLpsfPHUra3kpGVoqHQ46Ym4WnL1r8tLTicmkvuGO10EAukJjGZDLvkaKJDqWGJPEQYoJPpiR4LZKu%2fhftlUdGLj2BM2kbZ6E1tdJ8t%2by4xCx0Y54a45k%2bz5htTOd%2bpm4COQvvrQZfCjWPwMl2x0dUpdnKhx7ZQZOH65nKJJs42zyyJS9LPXG4CJcgcxu92ykLVsxIJGtUNKU%2fB%2fOUG68WfJyGTSsR1Aytgz2x2oiY7%2f9XQnVJ1JA8T%2bKS%2fbRJsTVQsjvtJu6LQ%3d%3d"
}
1
2
3
4
2
3
4
请求参数明文样例:
{
"phoneNumber": "13333333333",
"signCert": "308203DD30820382A003020102020869E3001E000FA2CF300C06082A811CCF5501837505003076310B300906035504061302434E310E300C06035504080C05416E487569310E300C06035504070C05486546656931263024060355040A0C1D416E4875692043657274696669636174696F6E20417574686F72697479310D300B060355040B0C04414843413110300E06035504030C0741484341534D32301E170D3138313132383136303030305A170D3139313132393135353935395A304C310B300906035504061302434E311B3019060355040A0C12333430383235313938393131313134383134310C300A060355040B0C033332333112301006035504030C09E8B5B5E7A68FE8BEBE3059301306072A8648CE3D020106082A811CCF5501822D03420004ECA0EF26D0CE2F1BBF0188A80787FED3F2EC947D1942D2D1B8C336EE51BC4E1C84AA62245A5ED2583E647F447DE3D17812331FE910A025EBEAB9285048C518C0A38202203082021C300C0603551D1304053003010100301D0603551D250416301406082B0601050507030206082B06010505070304300B0603551D0F0404030200C0301F0603551D230418301680144699BC6162E2BA53A90C88D2CD5D96C0C830BACF3081CA0603551D1F0481C23081BF3081BCA081B9A081B686818E6C6461703A2F2F6C6461702E61686563612E636E3A3338392F434E3D41484341534D322C434E3D41484341534D322C204F553D43524C44697374726962757465506F696E74732C206F3D616863613F63657274696669636174655265766F636174696F6E4C6973743F626173653F6F626A656374636C6173733D63524C446973747269627574696F6E506F696E748623687474703A2F2F7777772E61686563612E636E2F63726C2F41484341534D322E63726C3081D206082B060105050701010481C53081C230818B06082B06010505073002867F6C6461703A2F2F6C6461702E61686563612E636E3A3338392F434E3D41484341534D322C434E3D41484341534D322C204F553D63414365727469666963617465732C206F3D616863613F634143657274696669636174653F626173653F6F626A656374436C6173733D63657274696669636174696F6E417574686F72697479303206082B060105050730028626687474703A2F2F7777772E61686563612E636E2F6361636572742F41484341534D322E636572301D0603551D0E04160414EED2C7C4DF9EF4C33B6F8856202EACCE0D739687300C06082A811CCF550183750500034700304402206F0AA216D1FE3DB9BE2533B3320C62D947665E1FE43E4902A845369455479D87022014069CF6AAB21E0AC0AC839D66493DC1C4D0903CE5E27C864F3C0FF45546741C",
"srcData": "NKz0qyisRqWqa",
"signData": "1CAE5E0F4F82E79619F586C9853DF5ADDDEB4FE4B3885B5D25696BF0A62A9A67D39C7727394EDBB6AF3ADFD26073382B665FC51027F3E1C0B311FC64D19FA900",
"userName": "张三",
"timestamp": "20180402121212",
"signature": "JaI7tC82wRZohSlUnNKz0qyisRqWqavw"
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
返回参数 成功版
{
"statusCode": 200,
"returnObj": "4VII%2FkgNbyfXmcrDqOVFybMipnm3nb2bq68HqlBOyMxpsiVF68aGs3OgabMp0y3ipboN%2FrmgL%2FIpjlBf%2FO%2F62q2QqJOKcvf2WQPEGs9SjGpHsfNpjKWrUlnQpx0%2FJVtaNjw6wj68leYdV8JoNb7OFA%3D%3D"
}
1
2
3
4
2
3
4
返回参数 失败版1
{
"statusCode": 212,
"returnObj": "接入信息不存在"
}
1
2
3
4
2
3
4
返回参数 失败版2
{
"statusCode": 209,
"returnObj": "Hrx6XwobsbEXwDzBegbsk82MMKDrBrM8%2F9NVAVxvF352doz472OglmdhCxE6f3HDQiCzDLlccRy0kjapn0xgxYHC7471CnmL5V%2BN%2B9R%2BiTRw8jICexFoLqcYbtZMu5Nt%2BjmOyF7faPG6Qrm3DCQpNpPoFr%2Fg6KiO4c%2FCTAiF28YvZexEoRotjwfDtfNm9Opb"
}
1
2
3
4
2
3
4
例子: appKey 为 : C849EDABEF8D64F215D2ECE126A12A1B
signature原文拼接为: 101000000000000741272619800302000710199000000072019-06-06 10:22:12A1A1F01CFDA58B75929D01蓝牙测试卡7
signature经过Sm3WithSM4Base64为:
6S08dyL4cLuCTo+jzxmVsDnZL1gf258+RTz/Uoy60jw=
备注:
- param 参数UrlEncode前先要将空格去掉 然后进行UTF-8编码
- 验签的原文信息要携带年月日时分秒和6位随机数,然后整体获取私钥签名 例如: 张三CA登录20181219154340123456 ,转base64后得到接口文档中的 srcData
# 重置PIN码接口【提供给应用服务端】
- 接口定义:
| > | 重置PIN码接口 |
|---|---|
| 接口名称 | resetUserPin |
| 接口描述 | 用户可以对用户PIN码进行重置授权 |
| 接口协议 | http+json |
| 承载协议 | http |
| HTTP请求方式 | POST |
| 请求参数格式 | JSON |
| 承载网络 | Internet |
| 主要使用者 | 应用后台 |
| 接口URL | 测试地址 https://version.simkey.tech/skfinterface/third/pin/resetUserPin |
- 请求参数
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| appId | 应用的设备号 | String | - | N |
| param | 参数加密串。 UrlEncode(Base64(SM4(CBC_Encrypt({ "phoneNumber":"xxxx", "userName":"xxxx", "idType":"xxxx", "idCode":"xxxx", "timestamp":"xxxx", "signature":"xxxx"}))) key为appid对应的 | String | - | N |
param请求消息明文明细
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| phoneNumber | 用户手机号 | String | 11位 | N |
| userName | 用户姓名 | String | - | N |
| idType | 证件类型;10:身份证,11:护照,12:军人证,13:学生证 | String | - | N |
| idCode | 证件号码 | String | - | N |
| timestamp | 当前终端时间,格式yyyyMMddHHmmss | String | - | n |
| signature | 请求签名 0-9-A-Z升序排序不区分大小写 用于鉴别发送者。 取值= Sm3WithSM4Base64(appId+idCode+idType+phoneNumber+timestamp +userName) ,SM4采用ciss平台颁发给调用方系统的Key为密钥 | String | - | N |
- 应答消息:
| 名称 | 说明 | 数据类型 | 长度(字节) | 可空 |
|---|---|---|---|---|
| statusCode | 200:成功 | Int | - | N |
| returnObj | 返回的描述信息 | String | - | Y |
除了状态码212 "接入信息不存在" 为明文外其余returnObj 都为密文使用 加密方式为
UrlEncode(Base64(SM4(CBC_Encrypt(
"timestamp":"xxxxxxxxx",
"resultDesc":"xxxxxxxxx",
"signature":"xxxxxxxxx",)))
1
2
3
4
2
3
4
| > | > | returnObj 明文信息如下 | ||
|---|---|---|---|---|
| timestamp | 响应时间戳。格式:yyyyMMddHHmmss | String | - | N |
| resultDesc | 异常信息描述 | String | - | N |
| signature | 请求签名 用于鉴别发送者。 0-9-A-Z升序排序不区分大小写。 取值= Sm3WithSM4Base64(resultDesc +timestamp) ,签名值的key 为 appId 对应的key | String | - | N |
入参: 最终请求参数样例:
{
"appId": "1010000000000007",
"param": "j%2FfiqGTDfBO57g%2Bk9%2FhVrzfVL0NSMmUh27wQ1VTO6KA4ikj3GCo2GABILbxi246XNawulqUlFyh4HNarPNDhX%2FnFdl%2FznWGUe6LkQbwAjRL2b6zDCWDUD%2BXTRWGxpbk2wxN7WRjImyyV0n0uwIhiAZgbHe2Tto5yS7ZjvH4RGIxuVhG3VAICBsqaLaKl9Uvx%2FAfZNiB2ic9301BfGNk%2BwcAYg6j7pRaxG0W%2FH210h6Uw1nhQZRrOd8VVTkXyJlp5mpmz8OfVHOh%2FaNQ2y%2FhToNm7kY%2BYEDBNvCsgFupVW%2Fl325gGhwPlL9rJWUyFolPB"
}
1
2
3
4
2
3
4
请求参数param 明文样例:
{
"userName": "蓝牙测试卡7",
"phoneNumber": "19900000007",
"idType": "10",
"idCode": "412726198003020007",
"uKeyId": "A1A1F01CFDA58B75929D01",
"timestamp": "2019-06-06 09:37:44",
"signature": "5VpgJO0h4AAafTMpLm/+vKAfoe92yKN633XCXcMeFCw="
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
signature 原文和密文例子参考上一个接口
返回参数 成功版
{
"statusCode": 200,
"returnObj": "4VII%2FkgNbyfXmcrDqOVFybMipnm3nb2bq68HqlBOyMxpsiVF68aGs3OgabMp0y3ipboN%2FrmgL%2FIpjlBf%2FO%2F62q2QqJOKcvf2WQPEGs9SjGpHsfNpjKWrUlnQpx0%2FJVtaNjw6wj68leYdV8JoNb7OFA%3D%3D"
}
1
2
3
4
2
3
4
返回参数 失败版1
{
"statusCode": 212,
"returnObj": "接入信息不存在"
}
1
2
3
4
2
3
4
返回参数 失败版2
{
"statusCode": 209,
"returnObj": "Hrx6XwobsbEXwDzBegbsk82MMKDrBrM8%2F9NVAVxvF352doz472OglmdhCxE6f3HDQiCzDLlccRy0kjapn0xgxYHC7471CnmL5V%2BN%2B9R%2BiTRw8jICexFoLqcYbtZMu5Nt%2BjmOyF7faPG6Qrm3DCQpNpPoFr%2Fg6KiO4c%2FCTAiF28YvZexEoRotjwfDtfNm9Opb"
}
1
2
3
4
2
3
4
# 动态口令认证接口【提供给应用服务端】
- 接口定义:
| > | 动态口令认证 |
|---|---|
| 接口名称 | resetUserPin |
| 接口描述 | 用户通过SDK生成OTP码,服务器端进行校验 |
| 接口协议 | http+json |
| 承载协议 | http |
| HTTP请求方式 | POST |
| 请求参数格式 | JSON |
| 承载网络 | Internet |
| 主要使用者 | 应用平台 |
| 接口URL | 测试地址 https://version.simkey.tech/skfinterface/third/otp/authentication |
- 请求参数
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| appId | 应用的设备号 | String | - | N |
| param | 参数加密串。 UrlEncode(Base64(SM4(CBC_Encrypt({ "phoneNumber":"xxxx", "otpCode":"xxxx", "otpTime":"xxxx", "otpPeriod":"xxxx", "incidentDivisor":"xxxx", "challengeCode":"xxxx", "timestamp":"xxxx", "signature":"xxxx"}))) key为appid对应的 | String | - | N |
param请求消息明文明细
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| phoneNumber | 用户手机号 | String | 11位 | N |
| otpCode | OTP码 | String | - | N |
| otpTime | OTP生成时间(取System.currentTimeMillis()/1000,或者使用认证服务器当前时间时该值设为:-1) | Long | - | Y |
| otpPeriod | 以秒为单位的口令变化周期(一般设置30秒,不小于1秒) | Int | - | N |
| incidentDivisor | 事件因子,SDK获取OTP没有使用默认填 0 | StriIntng | - | Y |
| challengeCode | 参与运算的挑战码,使用ASCII表示,最小长度为4字节(例如:8919)没有默认填空 | String | - | Y |
| timestamp | 当前终端时间,格式yyyyMMddHHmmss | String | - | n |
| signature | 请求签名 请求签名用于鉴别发送者。 取值= SM4(Sm3WithSM4Base64 (appId+param 键按照A-Z,将值排序后拼接) ,SM4采用ciss平台颁发给调用方系统的Key为密钥 | String | - | N |
- 应答消息:
| 名称 | 说明 | 数据类型 | 长度(字节) | 可空 |
|---|---|---|---|---|
| statusCode | 200:成功 | Int | - | N |
| returnObj | 返回的描述信息 | String | - | Y |
除了状态码212 "接入信息不存在" 为明文外其余returnObj 都为密文使用 加密方式为
UrlEncode(Base64(SM4(CBC_Encrypt(
"timestamp":"xxxxxxxxx",
"resultDesc":"xxxxxxxxx",
"signature":"xxxxxxxxx")))
1
2
3
4
2
3
4
| > | > | returnObj 明文信息如下 | ||
|---|---|---|---|---|
| timestamp | 响应时间戳。格式:yyyyMMddHHmmss | String | - | N |
| resultDesc | 异常信息描述 | String | - | N |
| signature | 请求签名 用于鉴别发送者。 0-9-A-Z升序排序不区分大小写。 取值= Sm3WithSM4Base64(resultDesc +timestamp) ,签名值的key 为 appId 对应的key | String | - | N |
入参: 最终请求参数样例:
{
"appId": "1010000000000007",
"param": "j%2FfiqGTDfBO57g%2Bk9%2FhVrzfVL0NSMmUh27wQ1VTO6KA4ikj3GCo2GABILbxi246XNawulqUlFyh4HNarPNDhX%2FnFdl%2FznWGUe6LkQbwAjRL2b6zDCWDUD%2BXTRWGxpbk2wxN7WRjImyyV0n0uwIhiAZgbHe2Tto5yS7ZjvH4RGIxuVhG3VAICBsqaLaKl9Uvx%2FAfZNiB2ic9301BfGNk%2BwcAYg6j7pRaxG0W%2FH210h6Uw1nhQZRrOd8VVTkXyJlp5mpmz8OfVHOh%2FaNQ2y%2FhToNm7kY%2BYEDBNvCsgFupVW%2Fl325gGhwPlL9rJWUyFolPB"
}
1
2
3
4
2
3
4
请求参数param 明文样例:
{
"otpCode": "850210",
"phoneNumber": "19900000007",
"otpTime": "1586313403",
"otpPeriod": 30,
"incidentDivisor": 0,
"challengeCode": "8919",
"timestamp": "2020-01-06 09:37:44",
"signature": "5VpgJO0h4AAafTMpLm/+vKAfoe92yKN633XCXcMeFCw="
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
signature 原文和密文例子参考上一个接口
返回参数 成功版
{
"statusCode": 200,
"returnObj": "4VII%2FkgNbyfXmcrDqOVFybMipnm3nb2bq68HqlBOyMxpsiVF68aGs3OgabMp0y3ipboN%2FrmgL%2FIpjlBf%2FO%2F62q2QqJOKcvf2WQPEGs9SjGpHsfNpjKWrUlnQpx0%2FJVtaNjw6wj68leYdV8JoNb7OFA%3D%3D"
}
1
2
3
4
2
3
4
返回参数 失败版1
{
"statusCode": 212,
"returnObj": "接入信息不存在"
}
1
2
3
4
2
3
4
返回参数 失败版2
{
"statusCode": 209,
"returnObj": "Hrx6XwobsbEXwDzBegbsk82MMKDrBrM8%2F9NVAVxvF352doz472OglmdhCxE6f3HDQiCzDLlccRy0kjapn0xgxYHC7471CnmL5V%2BN%2B9R%2BiTRw8jICexFoLqcYbtZMu5Nt%2BjmOyF7faPG6Qrm3DCQpNpPoFr%2Fg6KiO4c%2FCTAiF28YvZexEoRotjwfDtfNm9Opb"
}
1
2
3
4
2
3
4
# 获取ticketId【提供给应用服务端】
- 接口定义:
| 接口名称 | 获取申请证书票据ID |
|---|---|
| 接口描述 | 获取申请证书票据ID,然后调用SDK申请证书接口申请证书 |
| 接口协议 | http+json |
| 承载协议 | http |
| HTTP请求方式 | POST |
| 请求参数格式 | JSON |
| 承载网络 | internet |
| 主要使用者 | 应用平台 |
| 接口URL | 测试地址 https://version.simkey.tech/skfinterface/third/skf/order/getTicketInfo |
- 请求参数信息
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| appId | 应用的设备号 | String | - | N |
| param | 参数加密串。 UrlEncode(Base64(SM4(CBC_Encrypt ({ "phoneNumber":"xxxx"," "userName":"xxxx", "idType":"xxxx", "idCode":"xxxx", "timestamp":"xxxx", "signature":"xxxx"}))) key为appid对应的 | String | - | N |
- param请求消息明文明细
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| phoneNumber | 手机号 | String | N | |
| userName | 用户姓名 | String | N | |
| idType | 证件类型:10:身份证;11:护照;12:军人证 | Long | Y | |
| idCode | 证件号码 | Int | N | |
| timestamp | 当前终端时间,格式yyyyMMddHHmmss | String | N | |
| signature | 请求签名 用于鉴别发送者。 取值= SM4(Sm3WithSM4Base64 (appId+param 键按照A-Z,将值排序后拼接) ,SM4采用ciss平台颁发给调用方系统的Key为密钥 | String | - | N |
- 应答消息:
| 名称 | 说明 | 数据类型 | 长度(字节) | 可空 |
|---|---|---|---|---|
| statusCode | 200:成功 | Int | N | |
| returnObj | 返回的描述信息 | String | Y |
除了状态码212 “接入信息不存在” 为明文外其余returnObj 都为密文 加密方式为
UrlEncode(Base64(SM4(CBC_Encrypt(
"ticketId”:”xxxxxxxxx”,
“timestamp”:”xxxxxxxxx”,
“resultDesc”:”xxxxxxxxx”,
“signature”:”xxxxxxxxx”,)))
1
2
3
4
5
2
3
4
5
| 名称 | 说明 | 数据类型 | 长度 | 可空 |
|---|---|---|---|---|
| ticketId | 票据ID,可以拿此参数进行申请证书 | String | - | N |
| timestamp | 响应时间戳。格式:yyyyMMddHHmmss | String | - | N |
| resultDesc | 异常信息描述 | String | N | |
| signature | 请求签名0-9-A-Z升序排序不区分大小写 用于鉴别发送者。 取值= Sm3WithSM4Base64 (除signature外按参数名排序后的参数值) ,签名值的key 为 appId 对应的key | String | - | N |