密码中台SVS服务API接口文档

申请密钥对

申请密钥对。

一、请求参数

名称 类型 是否必须 描述
keySize Integer 密钥长度
cryptogramEngineType CryptogramEngineType 加密引擎类型
algorithm Algorithm 加密算法
privateKey String 私钥base64 当(SM2 RSA)可以传,如不传自动生成
publicKey String 公钥base64
字段 类型介绍
FILE 文件引擎
FM_CARD 加密卡引擎
注意:当该参数为空时,默认选择加密卡引擎。
字段 类型介绍
SM2 SM2加密算法
RSA RSA加密算法
AES AES加密算法
SM4 SM4加密算法

二、响应参数

data 结果信息 类型 描述
code Integer 验证结果 0-成功 其他-失败 详见失败信息
message String 验证信息
indexId String 密钥对对应id

三、响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"xxxxxx",
"data":{
"incorrect":"0",
"indexId":"2rLAzCXR3"
},
"success":true
}

失败示例

{
"code":30201206,
"message":"获取先安密钥对失败",
"requestId":"xxxxxxxx",
"data":null,
"success":false
}

SDK请求示例

public class SvsSopApiTest {
//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";

//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 申请密钥对
*
* @throws Exception
*/
@Test
public void appleSecret() throws Exception {
//构造申请密钥对请求
KeyPairGenerateRequest request = new KeyPairGenerateRequest();
//设置请求算法
request.setAlgorithm(Algorithm.SM2);
//设置加密引擎
request.setCryptogramEngineType(CryptogramEngineType.FM_CARD);
//设置key的长度
request.setKeySize(256);
try{
SvsApplySecretResponse response = svsSopApi.keyPairGenerate(request);
if(null != response && response.isSuccess()){
System.out.println("申请密钥对应id: "+response.getResult().getIndexId());
}
}catch (Exception e){
System.out.println(e.getMessage());
}
}
}

注销密钥对

注销密钥对。

一、请求参数

名称 类型 是否必须 描述
indexId String 对应密钥id

二、响应参数

data 结果信息 类型 描述
code Integer 验证结果 0-成功 其他-失败 详见失败信息
message String 验证信息
check Boolean 注销结果,true-注销成功,false-注销失败

三、响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"xxxxxx",
"data":{
"check":"true"
},
"success":true
}

失败示例

{
"code":0,
"message":"success",
"requestId":"xxxxxxx",
"data":{
"incorrect":"0",
"check":false
},
"success":true
}

SDK请求示例

public class SvsSopApiTest {
//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";

//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 注销密钥对
*
* @throws Exception
*/
@Test
public void appleSecret() throws Exception {
KeypairRevokeRequest request = new KeypairRevokeRequest();
//设置注销的密钥对id
request.setIndexId("qhwdriK011");
try{
CommonSvsResponse response = svsSopApi.revokeKeyPair(request);
if(null != response && response.isSuccess()){
System.out.println("注销密钥对结果: "+response.getResult().getCheck());
}
}catch (Exception e){
System.out.println(e.getMessage());
}
}
}

验证证书

对证书进行校验。

一、请求参数

名称 类型 是否必须 描述
cert String 证书(base64)
verifyNotBefore Boolean 验证证书是否生效
verifyNotAfter Boolean 验证证书是否失效
verifyChain Boolean 是否验证证书链 默认验证
subject SubjectEnum 验证证书的DN是否为指定内容
subjectValue String 证书的主题内容
ocsp Boolean 通过OCSP校验证书
caCert String 签发该证书的CA证书(base64)
注意:先安请求只需要cert参数。
字段 类型介绍
C 国家
S 省份
L 城市
O 组织名称
OU 部门名称
CN 证书持有者名称

二、响应参数

data 结果信息 类型 描述
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_EXPIRED 1 证书已过期
CERT_INEFFECTIVE 2 证书未生效
CERT_USAGE_DEFICIENCY 3 证书密钥用法错误
CERT_OU_MISMATCHING 4 证书主题项不匹配
CERT_REVOKED 5 证书已注销
CERT_UNTRUSTED 6 证书不可信
SIGN_INVALID 7 数字签名验证不通过
EXTENDED_KEYS_ARE_NOT_SUPPORTED 8 证书密钥扩展用法不支持
UNKNOWN_STATUS 9 证书状态未知
EXCEPTION 10 验证异常
CERT_SERIAL_MISMATCHING 11 证书序列号不匹配

三、响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"incorrect":"0",
"verification":0,
"message":"success"
},
"success":true
}

失败示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"incorrect":"0",
"verification":4,
"message":"证书主题项不匹配"
},
"success":true
}

SDK请求示例

public class SvsSopApiTest {
//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";

//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 验证证书
*
* @throws Exception
*/
@Test
public void certVerify() throws Exception {
String certBase64 = "MIICODCCAd2gAwIBAgINAL+mrZV1HyNwYRErlzAKBggqgRzPVQGDdTBJMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rGf6IuP55yBMRIwEAYDVQQHDAnljZfkuqzluIIxEjAQBgNVBAMMCXRlc3RTTTJDQTAeFw0yMjA2MjgxMTM4MjlaFw0yMzA2MjgxMTM4MjlaMFUxCzAJBgNVBAYTAkNOMS8wLQYDVQQtDCY5MGE2MDA2ODZjNmQ0YjY2YjNmODk3NjhmNDUyMzU1NTIwMjIwNjEVMBMGA1UEAwwMMDAwMDIwMjExMTI0MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAENo7y+sv6fNjZpsZ8FqdD+vN6CbrEicu/miiuBJYHHlUSUCjMPF0BXyjLoN3Vu38oTRhmRrLMGXKZbimbLBKmuaOBnTCBmjAJBgNVHRMEAjAAMB0GA1UdDgQWBBTjVSTNS4yo8FyFH7Viof/7geXWtzAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwDgYDVR0PAQH/BAQDAgbAMB4GCCqBHNAUBAEDBBIMEDM3MDI4MTAwMDAwMDAwMDAwHwYDVR0jBBgwFoAUE3GRQ7iygyrxFixllDZ6SqWNJicwCgYIKoEcz1UBg3UDSQAwRgIhALdBrt2oW36BMDhexa/fLHdL5nJZ6aZB9PH0ditQS+2OAiEA62KWrC4V5F0X4CAaHu9AZAyitv4/B0aX2dPZ4pBi7Fk=";

String ou = "智慧CA";

CertVerifyContentRequest request = new CertVerifyContentRequest();
// 证书内容
request.setCert(certBase64);
// 验证证书是否失效
request.setVerifyNotAfter(true);
// 验证证书是否生效
request.setVerifyNotBefore(true);

// 是否验证证书链
request.setVerifyChain(true);

// 验证证书的ou是否为指定内容
request.setSubject(SubjectEnum.OU);
request.setSubjectValue(ou);

// OCSP 验证
request.setOcsp(true);
request.setCaCert("MIIBzTCCAXCgAwIBAgIGAXKnMKNyMAwGCCqBHM9VAYN1BQAwSTELMAkGA1UEBhMC\n" +
"Q04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRgwFgYDVQQDEw9S\n" +
"b290Q0EgZm9yIFRlc3QwIhgPMjAxNTEyMzExNjAwMDBaGA8yMDM1MTIzMDE2MDAw\n" +
"MFowSTELMAkGA1UEBhMCQ04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kv\n" +
"U00yMRgwFgYDVQQDEw9Sb290Q0EgZm9yIFRlc3QwWTATBgcqhkjOPQIBBggqgRzP\n" +
"VQGCLQNCAATj+apYlL+ddWXZ7+mFZXZJGbcJFXUN+Fszz6humeyWZP4qEEr2N0+a\n" +
"Zdwo/21ft232yo0jPLzdscKB261zSQXSoz4wPDAZBgNVHQ4EEgQQnGnsD7oaOcWv\n" +
"6CTrspwSBDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIAxjAMBggqgRzP\n" +
"VQGDdQUAA0kAMEYCIQCEnW5BlQh0vmsOLxSoXYc/7zs++wWyFc1tnBHENR4ElwIh\n" +
"AI1Lwu6in1ruflZhzseWulXwcITf3bm/Y5X1g1XFWQUH");

CertVerifyContentResponse response = svsSopApi.certVerify(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("verification:" + response.getResult().getVerification());
System.out.println("message:" + response.getResult().getMessage());
}
}
}

P1验证签名

对P1签名进行验证。

一、请求参数

名称 类型 是否必须 描述
templateId String 验证模板id,不填写则仅验证签名
signType CertSearchEnum 验证签名方式
signItemValue String 验证签名方式的值
cert String 签名证书base64
signature String 签名值base64
data String 原文数据
dataType DataType 原文数据格式
digestAlgorithm DigestAlgorithm 摘要算法,SM2证书签名固定为SM3,RSA默认SHA256
returnCert Boolean 响应中是否包含证书内容
注意:先安请求只需要data、signature、digestAlgorithm、dataType、cert参数。
类型字段 介绍
CERT 证书
CERT_ID 证书ID
KEY_INDEX 密钥索引
SN_HEX 证书序列号(十六进制格式)
SN_DEC 证书序列号(十进制格式)
TN_HASH 证书指纹
CERT_CN 证书CN项
CERT_DN 证书主题项
字段 状态介绍
SM3withSM2 SM2签名算法必须指定 SM3摘要
SHA1withRSA SHA1摘要算法
SHA256withRSA SHA256摘要算法
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
注意:先安暂不支持原文Hex

二、响应参数

data 结果信息 类型 描述
cert String 签名证书 (仅在配置时返回)
original String 原文数据
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_EXPIRED 1 证书已过期
CERT_INEFFECTIVE 2 证书未生效
CERT_USAGE_DEFICIENCY 3 证书密钥用法错误
CERT_OU_MISMATCHING 4 证书主题项不匹配
CERT_REVOKED 5 证书已注销
CERT_UNTRUSTED 6 证书不可信
SIGN_INVALID 7 数字签名验证不通过
EXTENDED_KEYS_ARE_NOT_SUPPORTED 8 证书密钥扩展用法不支持
UNKNOWN_STATUS 9 证书状态未知
EXCEPTION 10 验证异常
CERT_SERIAL_MISMATCHING 11 证书序列号不匹配

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"incorrect":"0",
"cert":"MIICVT......",
"original":"XXXXX",
"verification":0,
"message":"success"
},
"success":true
}

失败示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"incorrect":"0",
"cert":"MIIC......",
"original":null,
"verification":7,
"message":"数字签名验证不通过"
},
"success":true
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";

//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* P1验证签名
*
* @throws Exception
*/
@Test
public void p1Verify() throws Exception {
String certBase64 = "MIICNDCCAdqgAwIBAgINANQ8tvJYv2SW8sq00TAKBggqgRzPVQGDdTAuMQswCQYDVQQGEwJDTjEO\n" +
"MAwGA1UEChMFTlJDQUMxDzANBgNVBAMTBlJPT1RDQTAiGA8yMDE4MTExNTA1NTQ0NloYDzIwMzgx\n" +
"MTE1MDU1NDQ2WjCBlDELMAkGA1UEBhMCQ04xDTALBgNVBAgeBGxfgs8xDTALBgNVBAceBFNXTqwx\n" +
"ITAfBgNVBAoeGGxfgs9memFnZXBbV4uki8FnCZZQUWxT+DEhMB8GA1UECx4YbF+Cz2Z6YWdlcFtX\n" +
"i6SLwWcJllBRbFP4MSEwHwYDVQQDHhhsX4LPZnphZ2VwW1eLpIvBZwmWUFFsU/gwWTATBgcqhkjO\n" +
"PQIBBggqgRzPVQGCLQNCAARDBKhXQwgoemOFbzxQa1r0DEWUgo7HSap7atLgt4B+UkAE4AchR/7c\n" +
"Y29HE4pYTsoq/HPFjYPSYsrWBfa2PstEo3IwcDAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRw9G8c\n" +
"VcSNKKvTRenZcnm4/MGTYTATBgNVHSUEDDAKBggrBgEFBQcDCTAfBgNVHSMEGDAWgBRub/Fkha3f\n" +
"qX6f7lrPplsoKRU8wTALBgNVHQ8EBAMCAYYwCgYIKoEcz1UBg3UDSAAwRQIhAKdcstnD5SoxS0u0\n" +
"xm769O28xGRJfL2q5YUzjA8cTDkDAiBSvLF1YVxQ+fqCqhR9ny8/o5aNrJC595vnKg+uF+omww==";

String signItemValue = "62341b7258312e7e058af1bb";

String data = "MTIz";

String signature = "MEQCIDb5RYpmN978Hiw8rcPaPQJYwNgUGwQ/vnWgh4Uu3wm6AiAUKAdz8nDwEM5sKrimO/glckDGUJTkg13VDq/4i0a1IA==";
P1VerifyRequest request = new P1VerifyRequest();
//设置模板id
// request.setTemplateId("xxx");

//通过何种方式进行签名 CERT_ID:证书ID,KEY_INDEX:密钥索引, SN_HEX:证书序列号(十六进制格式),SN_DEC:证书序列号(十进制格式),TN_HASH:证书证书指纹,CERT_CN:证书CN ,CERT_DN:证书主题项(DN)
request.setSignType(CertSearchEnum.CERT_ID);
//验证签名方式的值
request.setSignItemValue(signItemValue);
//签名证书
request.setCert(certBase64);
//原文数据类型
request.setDataType(DataType.BASE64);
// 原文数据
request.setData(data);
// 签名值base64
request.setSignature(signature);
// 摘要算法,SM2证书签名固定为SM3,RSA默认SHA256
// request.setDigestAlgorithm(DigestAlgorithm.SHA1withRSA);
// 是否返回证书
// request.setReturnCert(true);
P1VerifyResponse response = svsSopApi.p1Verify(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("cert:" + response.getResult().getCert());
System.out.println("original:" + response.getResult().getOriginal());
System.out.println("message:" + response.getResult().getMessage());
System.out.println("verification:" + response.getResult().getVerification());
}
}
}

P7验证签名

对P7签名进行验证。

一、请求参数

名称 类型 是否必须 描述
templateId String 验证模板id,不填写则仅验证签名
signature String P7签名值(base64)
data String 原文数据
dataType DataType 原文数据格式
attach Boolean 签名结果中是否包含原文 (true:attached模式/false:detached模式)
returnCert Boolean 响应中是否包含证书内容
注意:先安在attached模式只需要signature、attach,在detached模式只需要signature、data、dataType、attach。
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
注意:先安暂不支持原文Hex

二、响应参数

data 结果信息 类型 描述
cert String 签名证书 (仅在配置时返回)
original String 原文数据
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_EXPIRED 1 证书已过期
CERT_INEFFECTIVE 2 证书未生效
CERT_USAGE_DEFICIENCY 3 证书密钥用法错误
CERT_OU_MISMATCHING 4 证书主题项不匹配
CERT_REVOKED 5 证书已注销
CERT_UNTRUSTED 6 证书不可信
SIGN_INVALID 7 数字签名验证不通过
EXTENDED_KEYS_ARE_NOT_SUPPORTED 8 证书密钥扩展用法不支持
UNKNOWN_STATUS 9 证书状态未知
EXCEPTION 10 验证异常
CERT_SERIAL_MISMATCHING 11 证书序列号不匹配

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"incorrect":"0",
"cert":"MIIB......",
"original":"XXXXX",
"verification":0,
"message":"success"
},
"success":true
}

失败示例

{
"code":0,
"message":"success",
"requestId":"XXXXXX",
"data":{
"incorrect":"0",
"cert":null,
"original":null,
"verification":7,
"message":"数字签名验证不通过"
},
"success":true
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* P7验证签名
*
* @throws Exception
*/
@Test
public void p7Verify() throws Exception {
String signature = "MIIEDgYKKoEcz1UGAQQCAqCCA/4wggP6AgEBMQ4wDAYIKoEcz1UBgxEFADATBgoqgRzPVQYBBAIB\n" +
"oAUEAzEyM6CCAjgwggI0MIIB2qADAgECAg0A1Dy28li/ZJbyyrTRMAoGCCqBHM9VAYN1MC4xCzAJ\n" +
"BgNVBAYTAkNOMQ4wDAYDVQQKEwVOUkNBQzEPMA0GA1UEAxMGUk9PVENBMCIYDzIwMTgxMTE1MDU1\n" +
"NDQ2WhgPMjAzODExMTUwNTU0NDZaMIGUMQswCQYDVQQGEwJDTjENMAsGA1UECB4EbF+CzzENMAsG\n" +
"A1UEBx4EU1dOrDEhMB8GA1UECh4YbF+Cz2Z6YWdlcFtXi6SLwWcJllBRbFP4MSEwHwYDVQQLHhhs\n" +
"X4LPZnphZ2VwW1eLpIvBZwmWUFFsU/gxITAfBgNVBAMeGGxfgs9memFnZXBbV4uki8FnCZZQUWxT\n" +
"+DBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABEMEqFdDCCh6Y4VvPFBrWvQMRZSCjsdJqntq0uC3\n" +
"gH5SQATgByFH/txjb0cTilhOyir8c8WNg9JiytYF9rY+y0SjcjBwMAwGA1UdEwQFMAMBAf8wHQYD\n" +
"VR0OBBYEFHD0bxxVxI0oq9NF6dlyebj8wZNhMBMGA1UdJQQMMAoGCCsGAQUFBwMJMB8GA1UdIwQY\n" +
"MBaAFG5v8WSFrd+pfp/uWs+mWygpFTzBMAsGA1UdDwQEAwIBhjAKBggqgRzPVQGDdQNIADBFAiEA\n" +
"p1yy2cPlKjFLS7TGbvr07bzEZEl8varlhTOMDxxMOQMCIFK8sXVhXFD5+oKqFH2fLz+jlo2skLn3\n" +
"m+cqD64X6ibDMYIBkjCCAY4CAQEwPzAuMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFTlJDQUMxDzAN\n" +
"BgNVBAMTBlJPT1RDQQINANQ8tvJYv2SW8sq00TAMBggqgRzPVQGDEQUAoIHkMBgGCSqGSIb3DQEJ\n" +
"AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTIwMTEwNjEyNDczNlowLwYJKoZIhvcNAQkE\n" +
"MSIEIG4PnhQ0TFQGoM9aO037Zl+H9Kdxox9+27XHKHSjKylXMHkGCSqGSIb3DQEJDzFsMGowCwYJ\n" +
"YIZIAWUDBAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcN\n" +
"AwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsOAwIHMA0GCCqGSIb3DQMCAgEoMAwGCCqBHM9VAYN1\n" +
"BQAwRQIgb54cVAXnxdSp01YJ1Q6B3kYNLVckQZAr8hUme6CL9PoCIQDOcb43lD7fD/BnGv2l4ScF\n" +
"9t9cO5VZYMK+jld/t97D1w==";
String data = "123456";

P7VerifyRequest request = new P7VerifyRequest();
//设置模板id
// request.setTemplateId("xxx");
// 签名值
request.setSignature(signature);
// 原文数据
// request.setData(data);
//原文数据类型
// request.setDataType(DataType.BASE64);
// 签名是否包含原文
request.setAttach(true);
// 是否返回证书
// request.setReturnCert(true);

P7VerifyResponse response = svsSopApi.p7Verify(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("cert:" + response.getResult().getCert());
System.out.println("original:" + response.getResult().getOriginal());
System.out.println("message:" + response.getResult().getMessage());
System.out.println("verification:" + response.getResult().getVerification());
}
}
}

证书模板校验

使用证书模板校验证书内容。

注意:先安不支持。

一、请求参数

名称 类型 是否必须 描述
templateId String 验证模板id
cert String 证书base64

二、响应参数

data 结果信息 类型 描述
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_EXPIRED 1 证书已过期
CERT_INEFFECTIVE 2 证书未生效
CERT_USAGE_DEFICIENCY 3 证书密钥用法错误
CERT_OU_MISMATCHING 4 证书主题项不匹配
CERT_REVOKED 5 证书已注销
CERT_UNTRUSTED 6 证书不可信
SIGN_INVALID 7 数字签名验证不通过
EXTENDED_KEYS_ARE_NOT_SUPPORTED 8 证书密钥扩展用法不支持
UNKNOWN_STATUS 9 证书状态未知
EXCEPTION 10 验证异常
CERT_SERIAL_MISMATCHING 11 证书序列号不匹配

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"verification":0,
"message":"success"
},
"success":true
}

失败示例

{
"code":0,
"message":"success",
"requestId":"Xw0P92xmcs",
"data":{
"incorrect":"0",
"verification":3,
"message":"证书密钥用法错误"
},
"success":true
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 证书模板校验
*
* @throws Exception
*/
@Test
public void templateVerify() throws Exception {
CertTemplateVerifyRequest request = new CertTemplateVerifyRequest();
//证书base64
request.setCert("MIICszCCAligAwIBAgINAO2Cjz/tEqZSVvI/eDAKBggqgRzPVQGDdTBJMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rGf6IuP55yBMRIwEAYDVQQHDAnljZfkuqzluIIxEjAQBgNVBAMMCXRlc3RTTTJDQTAeFw0yMjAzMTgwNTQwMTlaFw0yMzAzMTgwNTQwMTlaMIGjMQswCQYDVQQGEwJDTjEPMA0GA1UECAwG5rGf6IuPMQ8wDQYDVQQHDAbljZfkuqwxFTATBgNVBAoMDOaVsOWtl+iupOivgTERMA8GA1UECwwI5pm65oWnQ0ExMDAuBgNVBC0MJzFmZWM0ODA3MjlhYTQ0MjJiODk0YzhiMTM2YjFkNDU0MjAyMjAzNzEWMBQGA1UEAwwNd3d3LnF3ZmRjLmNvbTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABFjoFlPaMPGM7OAKEYpwwsJWKjr5w0qy32hLc/z4r065nPWJyZl+VkP/8EF0mRSrvjJz3tlR9OMiaDjjHwxW86KjgckwgcYwCQYDVR0TBAIwADAdBgNVHQ4EFgQU0HDEQ8QjtsYHokinKQvAK7z+FoEwSwYDVR0lAQH/BEEwPwYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYBBQUHAwgGCisGAQQBgjcKAwMGCWCGSAGG+EIEATAOBgNVHQ8BAf8EBAMCBsAwHAYDVR0RBBUwE4IRd3d3Lnh1amkudGVzdC5jb20wHwYDVR0jBBgwFoAUE3GRQ7iygyrxFixllDZ6SqWNJicwCgYIKoEcz1UBg3UDSQAwRgIhAIi2sGHKO+KkMX9MxC2c+u/p82t4SxqEjbDk96zluqmfAiEA00lg6iFIc03pofZbsA5uiA6vznSLKaru1A+nGqO78Uw=");

//验证模板ID
request.setTemplateId("62623f90334a4c6985de3172");

CertTemplateVerifyResponse response = svsSopApi.certTemplateVerify(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("verification:" + response.getResult().getVerification());
System.out.println("message:" + response.getResult().getMessage());
}
}
}

校验证书CRL

使用证书模板校验证书内容。

注意:先安不支持。

一、请求参数

名称 类型 是否必须 描述
cert String 证书base64
certSn String 证书序列号
crlId String CRL Id

可选调用方式1 : cert

可选调用方式2 : cert + crlId

可选调用方式3 : certSn + crlId

二、响应参数

data 结果信息 类型 描述
verification Integer 验证结果状态码
message String 验证信息

0-证书未注销 1-证书已注销

字段 状态码 状态介绍
SUCCESS 0 证书未注销
CERT_REVOKED 1 证书已注销

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"XXXXXXX",
"data":{
"incorrect":"0",
"verification":0,
"message":"证书未注销"
},
"success":true
}

失败示例

{
"code":30201203,
"message":"XXXXXXX",
"requestId":"XXXXXXX",
"data":null,
"success":false
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 校验证书CRL
*
* @throws Exception
*/
@Test
public void crlVerify() throws Exception {
String certBase64 = "MIICszCCAligAwIBAgINAO2Cjz/tEqZSVvI/eDAKBggqgRzPVQGDdTBJMQswCQYDVQQGEwJDTjESMBAGA1UECAwJ5rGf6IuP55yBMRIwEAYDVQQHDAnljZfkuqzluIIxEjAQBgNVBAMMCXRlc3RTTTJDQTAeFw0yMjAzMTgwNTQwMTlaFw0yMzAzMTgwNTQwMTlaMIGjMQswCQYDVQQGEwJDTjEPMA0GA1UECAwG5rGf6IuPMQ8wDQYDVQQHDAbljZfkuqwxFTATBgNVBAoMDOaVsOWtl+iupOivgTERMA8GA1UECwwI5pm65oWnQ0ExMDAuBgNVBC0MJzFmZWM0ODA3MjlhYTQ0MjJiODk0YzhiMTM2YjFkNDU0MjAyMjAzNzEWMBQGA1UEAwwNd3d3LnF3ZmRjLmNvbTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABFjoFlPaMPGM7OAKEYpwwsJWKjr5w0qy32hLc/z4r065nPWJyZl+VkP/8EF0mRSrvjJz3tlR9OMiaDjjHwxW86KjgckwgcYwCQYDVR0TBAIwADAdBgNVHQ4EFgQU0HDEQ8QjtsYHokinKQvAK7z+FoEwSwYDVR0lAQH/BEEwPwYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYBBQUHAwgGCisGAQQBgjcKAwMGCWCGSAGG+EIEATAOBgNVHQ8BAf8EBAMCBsAwHAYDVR0RBBUwE4IRd3d3Lnh1amkudGVzdC5jb20wHwYDVR0jBBgwFoAUE3GRQ7iygyrxFixllDZ6SqWNJicwCgYIKoEcz1UBg3UDSQAwRgIhAIi2sGHKO+KkMX9MxC2c+u/p82t4SxqEjbDk96zluqmfAiEA00lg6iFIc03pofZbsA5uiA6vznSLKaru1A+nGqO78Uw=";

CrlVerifyRequest request = new CrlVerifyRequest();
request.setCert(certBase64);
request.setCrlId("62565e04bd7c966f8c0afde6");
request.setCertSn("f2ea5129fe03c8623759b25d");

CrlVerifyResponse response = svsSopApi.crlVerify(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("verification:" + response.getResult().getVerification());
System.out.println("message:" + response.getResult().getMessage());
}
}
}

CRL列表

获取CRL列表。

注意:先安不支持。

一、请求参数

二、响应参数

data 结果信息 类型 描述
id String CRL ID
name String CRL名称
issuer String 颁发者DN项

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"eX5alGVkSs",
"data":[
{
"incorrect":"0",
"id":"6307551efefc761255ce9a8e",
"name":"Microsoft RSA TLS CA 01[SHA256withRSA]",
"issuer":"CN=Microsoft RSA TLS CA 01, O=Microsoft Corporation, C=US"
}
],
"success":true
}

失败示例

{
"code":30201006,
"message":"XXX",
"requestId":"XXXXX",
"success":false
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* CRL列表
*
* @throws Exception
*/
@Test
public void getCrl() throws Exception {
GetCrlRequest request = new GetCrlRequest();
GetCrlResponse response = svsSopApi.getCrl(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
for (GetCrlResponse.Result result :
response.getResult()) {
System.out.println("{");
System.out.println("id:" + result.getId());
System.out.println("issuer:"+result.getIssuer());
System.out.println("name:"+result.getName());
System.out.println("}");
}
}
}
}

P1签名

用户对某数据进行P1签名操作。

一、请求参数

名称 类型 是否必须 描述
signType CertSearchEnum 签名方式
signItemValue String 签名方式的值(若选中证书ID则传证书ID,若选密钥索引则传密钥索引)
data String 待签名数据(原文、原文base64、原文hex、摘要base64、摘要hex)
dataType DataType 待签名数据格式
digestAlgorithm DigestAlgorithm 摘要算法,SM2证书签名固定为SM3,RSA默认SHA256
signDataType DataType 签名后数据格式 (base64、hex)
注意:先安不支持signDataType
类型字段 介绍
CERT 证书
CERT_ID 证书ID
KEY_INDEX 密钥索引
SN_HEX 证书序列号(十六进制格式)
SN_DEC 证书序列号(十进制格式)
TN_HASH 证书指纹
CERT_CN 证书CN项
CERT_DN 证书主题项
注意:先安只支持KEY_INDEX:密钥索引
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
DIGEST_BASE64 摘要base64
DIGEST_HEX 摘要hex
注意:先安只支持原文、原文BASE64
类型字段 介绍
SM3withSM2 SM2签名算法必须指定 SM3摘要
SHA1withRSA SHA1摘要算法
SHA256withRSA SHA256摘要算法

二、响应参数

data 结果信息 类型 描述
signData String 签名结果
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_NOT_EXIST 8 证书不存在

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"6JC3AagPZR",
"data":{
"incorrect":"0",
"signData":"MEYCI......",
"verification":0,
"message":"success"
},
"success":true
}

失败示例

{
"code":30201203,
"message":"P1签名失败:{\"code\":10100,\"message\":\"invalid hexadecimal representation of an ObjectId: [XXX]\"}",
"requestId":"XXXXXX",
"data":null,
"success":false
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* P1签名
*
* @throws Exception
*/
@Test
public void p1Sign() throws Exception {
String data = "MTIz";

String signItemValue="nFZvmBrh2";

P1SignRequest request = new P1SignRequest();

//通过何种方式进行签名 CERT_ID:证书ID,KEY_INDEX:密钥索引, SN_HEX:证书序列号(十六进制格式),SN_DEC:证书序列号(十进制格式),TN_HASH:证书证书指纹,CERT_CN:证书CN ,CERT_DN:证书主题项(DN)
request.setSignType(CertSearchEnum.KEY_INDEX);
//签名方式的值
request.setSignItemValue(signItemValue);
// 原文数据
request.setData(data);
// 原文数据类型
request.setDataType(DataType.BASE64);
// 摘要算法
request.setDigestAlgorithm(DigestAlgorithm.SM3withSM2);
// 签名后数据格式
// request.setSignDataType(DataType.BASE64);

P1SignResponse response = svsSopApi.p1Sign(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("signData:" + response.getResult().getSignData());
System.out.println("verification:" + response.getResult().getVerification());
System.out.println("message:" + response.getResult().getMessage());
}
}
}

P7签名

用户对某数据进行P7签名操作。

一、请求参数

名称 类型 是否必须 描述
signType CertSearchEnum 签名方式 (P7签名不支持密钥索引)
signItemValue String 签名方式的值
data String 待签名数据
dataType DataType 待签名数据格式(原文、原文base64、原文hex)
digestAlgorithm DigestAlgorithm 摘要算法,SM2证书签名固定为SM3,RSA默认SHA256
signDataType DataType 签名后数据格式 (base64、hex)
attach Boolean 签名是否包含原文 true-包含原文 false-不包含原文;默认false
注意:先安不支持signDataType
类型字段 介绍
CERT 证书
CERT_ID 证书ID
KEY_INDEX 密钥索引
SN_HEX 证书序列号(十六进制格式)
SN_DEC 证书序列号(十进制格式)
TN_HASH 证书指纹
CERT_CN 证书CN项
CERT_DN 证书主题项
注意:先安只支持KEY_INDEX:密钥索引;
PKI不支持KEY_INDEX:密钥索引
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
注意:先安只支持原文、原文BASE64
类型字段 介绍
SM3withSM2 SM2签名算法必须指定 SM3摘要
SHA1withRSA SHA1摘要算法
SHA256withRSA SHA256摘要算法

二、响应参数

data 结果信息 类型 描述
signData String 签名结果
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_NOT_EXIST 8 证书不存在

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"gvJpZQDY03",
"data":{
"incorrect":"0",
"signData":"MIAGC......",
"verification":0,
"message":"success"
},
"success":true
}

失败示例

{
"code":30201203,
"message":"P7签名失败:{\"code\":10100,\"message\":\"证书类型与摘要算法不符\"}",
"requestId":"XXXXXXX",
"data":null,
"success":false
}
`

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* P7签名
*
* @throws Exception
*/
@Test
public void p7Sign() throws Exception {
String data = "MTIz";
//签名方式的值
String signItemValue="nFZvmBrh2";

P7SignRequest request = new P7SignRequest();

//通过何种方式进行签名 CERT_ID:证书ID,KEY_INDEX:密钥索引, SN_HEX:证书序列号(十六进制格式),SN_DEC:证书序列号(十进制格式),TN_HASH:证书证书指纹,CERT_CN:证书CN ,CERT_DN:证书主题项(DN)
request.setSignType(CertSearchEnum.KEY_INDEX);
//签名方式的值
request.setSignItemValue(signItemValue);
// 签名是否包含原文
request.setAttach(false);
// 原文数据
request.setData(data);
// 原文数据类型
request.setDataType(DataType.BASE64);
// 摘要算法
request.setDigestAlgorithm(DigestAlgorithm.SM3withSM2);
// 签名后数据格式
// request.setSignDataType(DataType.BASE64);

P7SignResponse response = svsSopApi.p7Sign(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("signData:" + response.getResult().getSignData());
System.out.println("verification:" + response.getResult().getVerification());
System.out.println("message:" + response.getResult().getMessage());
}
}
}

查询证书-先安

查询证书。(先安)

注意:仅支持先安

一、请求参数

名称 类型 是否必须 描述
keyIndex String 虚拟密钥索引

二、响应参数

data 结果信息 类型 描述
certBase64String String 该密钥索引的证书
verification Integer 验证结果状态码
message String 验证信息
字段 状态码 状态介绍
SUCCESS 0 验证成功
CERT_NOT_EXIST 8 证书不存在

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"xxx",
"data":{
"incorrect":"0",
"verification":0,
"message":"success",
"certBase64String":"BMY18jZgCLgQ1Jp9rbmQbEo+Pj6vsd7L6+z......"
}
}

失败示例

{
"code":30201006,
"message":"XXX",
"requestId":"XXXXX",
"success":false
}
`

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 获取证书
*
* @throws Exception
*/
@Test
public void certByIndex() throws Exception {
NetoneCertRequest request = new NetoneCertRequest();
request.setKeyIndex("nFZvmBrh2");
NetoneCertResponse response = svsSopApi.certByIndex(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
System.out.println("certBase64String:" + response.getResult().getCertBase64String());
System.out.println("verification:" + response.getResult().getVerification());
System.out.println("message:" + response.getResult().getMessage());
}
}
}

查询证书-PKI

查询证书。(PKI)

注意:仅支持PKI

一、请求参数

二、响应参数

data 结果信息 类型 描述
id String 证书ID
keyPairId String 密钥ID
certPurpose String 证书用途:单双证
signatureCert CertificateInfoResp 签名证书
encryptionCert CertificateInfoResp 加密证书
cn String 证书持有者名称
subject String 证书主题项
issuer String 证书颁发者主题项
notBefore Date 证书生效时间
notAfter Date 证书失效时间
algorithm String 签名算法
keySize Integer 密钥长度
timeStamping Boolean 是否为时间戳证书
类型字段 介绍
certSn 证书序列号
cert 证书base64
fingerprint 证书指纹(Sha1 Hex编码)

三、请求响应示例

成功示例

{
"code":0,
"message":"success",
"requestId":"XXXXX",
"data":[
{
"incorrect":"0",
"id":"XXX",
"keyPairId":"XXX",
"certPurpose":"DOUBLE",
"signatureCert":{
"certSn":"XXX",
"cert":"MIICVTCC***xg==",
"fingerprint":"XXX"
},
"encryptionCert":{
"certSn":"XXX",
"cert":"MIIC****2N3k",
"fingerprint":"XXX"
},
"cn":"817test",
"subject":"XXX",
"issuer":"XXX",
"notBefore":1660717442000,
"notAfter":1692253442000,
"algorithm":"SM2",
"keySize":256,
"timeStamping":false
},
{
"incorrect":"0",
"id":"XXX",
"keyPairId":"XXX",
"certPurpose":"SINGLE",
"signatureCert":{
"certSn":"XXX",
"cert":"MIID****ohSN",
"fingerprint":"XXX"
},
"encryptionCert":null,
"cn":"817RSA",
"subject":"XXX",
"issuer":"XXX",
"notBefore":1660719032000,
"notAfter":1692255032000,
"algorithm":"RSA",
"keySize":1024,
"timeStamping":false
}
],
"success":true
}

失败示例

{
"code":30201006,
"message":"XXX",
"requestId":"XXXXX",
"success":false
}

SDK请求示例

public class SvsSopApiTest {

//您的url
String url = "http://172.16.3.128:30240/rest/cip/kitty/%s/sop";
//您的appKey
String appKey = "w8MuGC9C";
//您的appSecret
String secretKey = "4wVznIMB";
//构造接口实例D
ApiClient apiClient = new DefaultApiClient(url, appKey, secretKey);
// 实例化接口
SvsSopApi svsSopApi = new SvsSopApiImpl(apiClient);

public SvsSopApiTest() throws ApiException {
}

/**
* 获取证书
*
* @throws Exception
*/
@Test
public void certByApp() throws Exception {
CertificateRequest request = new CertificateRequest();
CertificateResponse response = svsSopApi.certByApp(request);
//后续业务处理
System.out.println("================================");
System.out.println("响应内容:" + response);
System.out.println("================================");
System.out.println("SDK请求ID:" + response.getRequestId());
System.out.println("SDK响应消息:" + response.getMsg());
System.out.println("SDK响应码:" + response.getErrorCode());
System.out.println("================================");
if (null != response.getResult()) {
for (CertificateResponse.Result result :
response.getResult()) {
System.out.println("{");
System.out.println("id:" + result.getId());
System.out.println("keyPairId:" + result.getKeyPairId());
System.out.println("certPurpose:" + result.getCertPurpose());
System.out.println("signatureCert: {" + result.getSignatureCert() + " }");
System.out.println("encryptionCert: {" + result.getEncryptionCert() + " }");
System.out.println("cn:" + result.getCn());
System.out.println("subject:" + result.getSubject());
System.out.println("issuer:" + result.getIssuer());
System.out.println("notBefore:" + result.getNotBefore());
System.out.println("notAfter:" + result.getNotAfter());
System.out.println("algorithm:" + result.getAlgorithm());
System.out.println("keySize:" + result.getKeySize());
System.out.println("timeStamping:" + result.getTimeStamping());
System.out.println("}");
}
}
}
}