# P7批量验证签名

对P7签名值进行批量验证

# 一、请求说明

  • 请求地址:http://IP:PORT/openapi/svs/v1/sign/verify/p7/batch
  • 服务接口名称(即公共参数method的值): sign/verify/p7/batch
  • 请求方式:POST

# 二、请求参数

名称 类型 是否必须 描述
templateId String 验证模板id
returnCert Boolean 响应中是否包含证书内容
p7SignatureList String 签名值集合
cert String 签名证书(base64)当签名值中不包含证书时,可用此参数

P7SignatureList 签名值集合 介绍 请使用JSON 方式传值 示例:

[{
	"data": "123456",
	"dataType": "ORIGINAL",
	"signature": "MICAhcU***EAAAAAAAA",
  	"signatureDataType": "BASE64"
}, 
{
	"data": "321",
	"dataType": "ORIGINAL",
	"signature": "MIAGCuA***AAAAAAA",
  	"signatureDataType": "BASE64"
}]
名称 类型 是否必须 描述
data String 原文数据
dataType DataType 原文数据格式
signature String 签名值
signatureDataType DataType 签名值数据格式 (base64,hex) 不传默认为base64
  • 字段解释:

    cert字段示例:

    request.setCert("-----BEGIN CERTIFICATE-----\n" +
        "MIICQDCCAe***mMwXXQ==\n" +
        "-----END CERTIFICATE-----\n" +
        "-----BEGIN CERTIFICATE-----\n" +
        "MIICQT****q9Q2xOo=\n" +
        "-----END CERTIFICATE-----\n" +
        "-----BEGIN CERTIFICATE-----\n" +
        "MIIBuzCCAV6gA**/x8yUJSmYfAE\n" +
        "-----END CERTIFICATE-----\n");
当签名值为attached模式,无需填写原文数据和原文数据格式;

当签名值为detached模式,需要填写原文数据和原文数据格式;
  • DataType 数据类型介绍
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
DIGEST_BASE64 摘要base64
DIGEST_HEX 摘要hex

# 三、响应参数

data 结果信息 类型 描述
result Integer 总体结果 0:表示全成功
verifyResults List<P7verifyResult> 验证结果集合

List<P7verifyResult> 对象

data 结果信息 类型 描述
cert String 签名证书
original String 原文数据
digest String 摘要数据
verification Integer 验证信息
message String 验证提示信息
  • verification 返回码介绍
字段 状态码 状态介绍
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 证书序列号不匹配

# 四、成功示例

JSON示例

{
    "code":0,
    "message":"success",
    "requestId":"xxx",
    "data":{
        
    }
}

# 五、失败示例

JSON示例

{
    "code":10205,
    "requestId":"xxx",
    "message":"签名验证失败"
}

# 六、SDK请求示例

    // 提供的URL
    String url = "http://localhost:9200";

    // 您的appKey
    String appKey = "412RkZU3kB";

    // 您的appSecret
    String appSecret = "SDKv9ld6yhYDcB4TRKtkhboKJurDJR73";

    // 1.原客户端
    PkiClient pkiClient = new PkiOkhttpClient(url, appKey, appSecret);

    P7VerifyBatchRequest request = new P7VerifyBatchRequest();
    // 设置指定证书
    request.setCert("-----BEGIN CERTIFICATE-----\n" +
            "MIICQDCCAeegAwIBAgINALiXiKKh/hewQSXarDAKBggqgRzPVQGDdTBJMQswCQYD\n" +
            "VQQGEwJDTjESMBAGA1UECAwJ5rGf6IuP55yBMRIwEAYDVQQHDAnljZfkuqzluIIx\n" +
            "EjAQBgNVBAMMCXRlc3RTTTJDQTAeFw0yMjExMjkwMTIwMzdaFw0yMzExMjkwMTIw\n" +
            "MzdaMFExCzAJBgNVBAYTAkNOMTAwLgYDVQQtDCc4NTlhNzUxZGZmOTc0MzczYWI2\n" +
            "Y2VhZDJhMjc5NTljYjIwMjIxMTcxEDAOBgNVBAMMB3Rlc3R0dHQwWTATBgcqhkjO\n" +
            "PQIBBggqgRzPVQGCLQNCAAQJMJEhx3xTncFdY+bGP/u5iPlgwF5kiOXjiUq1W/LS\n" +
            "4SbwSOt+MuBdkDpnBS+w8aqz+FaKthBKl91UiBXyrZmDo4GrMIGoMAkGA1UdEwQC\n" +
            "MAAwHQYDVR0OBBYEFIFcrV5xZRzW9l72QnGPSdnxAPQdMEsGA1UdJQEB/wRBMD8G\n" +
            "CCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMIBgorBgEEAYI3\n" +
            "CgMDBglghkgBhvhCBAEwDgYDVR0PAQH/BAQDAgM4MB8GA1UdIwQYMBaAFBNxkUO4\n" +
            "soMq8RYsZZQ2ekqljSYnMAoGCCqBHM9VAYN1A0cAMEQCIG0tfmIja08ruYGASYOb\n" +
            "tZCSl47BlL7Y4e+B1alySBSTAiBXJPpCsvzyEwSY9gAtur4plkC6MAIhi4wv2zaU\n" +
            "mMwXXQ==\n" +
            "-----END CERTIFICATE-----\n");

    ArrayList<P7VerifyBatchRequest.P7Signature> p7Signatures = new ArrayList<>();

    //签名值对象1
    P7VerifyBatchRequest.P7Signature p7Signature1 = new P7VerifyBatchRequest.P7Signature();
    p7Signature1.setSignature("MIAGCiqBHM9VBgEEAgKggDCAAgEDMQ4wDAYIKoEcz1UBgxEFADCABgoqgRzPVQYBBAIBAACggDCCAhcwggG9oAMCAQICDQDEuillc8CChwJ+ee4wCgYIKoEcz1UBg3UwSTELMAkGA1UEBhMCQ04xEjAQBgNVBAgMCeaxn+iLj+ecgTESMBAGA1UEBwwJ5Y2X5Lqs5biCMRIwEAYDVQQDDAl0ZXN0U00yQ0EwHhcNMjIwNjA3MDkxNDAyWhcNMjMwNjA3MDkxNDAyWjBeMQswCQYDVQQGEwJDTjEwMC4GA1UELQwnMjlhY2VjYjgzNTRjNDY0ZmI5MGIzMmRiYzMwZWQ1OTEyMDIyMDY4MR0wGwYDVQQDDBRNYXRyaXggUEtJIFRTUyBUZXN0MTBZMBMGByqGSM49AgEGCCqBHM9VAYItA0IABD9dnFKj6VDTTCg7n6l8FJANwPZjFODTpyeB2diSJlO3uWY38t3CTU0lhcIVnqX0Nr2Q4WPi5NPqdyUUSg5RH92jdTBzMAkGA1UdEwQCMAAwHQYDVR0OBBYEFHgkVz2SHJTgVwzjhZSNW/+OQW47MA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAfBgNVHSMEGDAWgBQTcZFDuLKDKvEWLGWUNnpKpY0mJzAKBggqgRzPVQGDdQNIADBFAiBvFIi2ba4jkFZJ17k8maoR0DmZqmfCdtmtPLorvcKIIAIhAJU+M/aZlg8YD60qsqJzMKbCIzHv4rb8+brseNTYM4zMAAAxggE1MIIBMQIBATBaMEkxCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnmsZ/oi4/nnIExEjAQBgNVBAcMCeWNl+S6rOW4gjESMBAGA1UEAwwJdGVzdFNNMkNBAg0AxLopZXPAgocCfnnuMAwGCCqBHM9VAYMRBQCgaTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0yMjA2MDkwNzEyMDdaMC8GCSqGSIb3DQEJBDEiBCAgfPQQUy+SpH3uJFzpsR/3H1eOvXY+s7vqROvQQ9AY+zANBgkqgRzPVQGCLQEFAARIMEYCIQCD6gUt9xNPR4NPbQvZF+iSszG/F65DT684w7aluOvoMAIhAK/cACK7Jf7vVyj8T4nHeTgaCa5VE6+n+b8n8sw7z4S5AAAAAAAA");
    p7Signature1.setData("123456");
    p7Signature1.setDataType(DataType.ORIGINAL);
    p7Signatures.add(p7Signature1);

    //签名值对象2
    P7VerifyBatchRequest.P7Signature p7Signature2 = new P7VerifyBatchRequest.P7Signature();
    p7Signature2.setSignature("MIAGCiqBHM9VBgEEAgKggDCAAgEDMQ4wDAYIKoEcz1UBgxEFADCABgoqgRzPVQYBBAIBAACggDCCAmswggISoAMCAQICDQCT0vDryDrhJKUCW4EwCgYIKoEcz1UBg3UwIDELMAkGA1UEBhMCQ04xETAPBgNVBAMMCEdaVEVTVENBMB4XDTIzMDMwNzExNDQwM1oXDTI0MDMwNzExNDQwM1owgZMxCzAJBgNVBAYTAkNOMRIwEAYDVQQIDAnljJfkuqzluIIxEjAQBgNVBAcMCeWMl+S6rOW4gjEKMAgGA1UECgwBMTEPMA0GA1UECwwG5rWL6K+VMSkwJwYDVQQtDCA3YjI0MDU3MTk1ZjM0Y2UwYTMzMGQyNDA0OTY3ZjJmNDEUMBIGA1UEAwwLMTcyLjE2LjYuMzQwWTATBgcqhkjOPQIBBggqgRzPVQGCLQNCAAS4rDnkwwNHWJhiDGw0MZPmWgYMMipBe6ezHBkCA10de+cPdwwRSajfWQcpAH0tdbYc9AcRJFX0pN+VhojLGK1Mo4G8MIG5MAkGA1UdEwQCMAAwHQYDVR0OBBYEFIiZ4F/OkvMwU7PAomLq4mT64pi8MEsGA1UdJQEB/wRBMD8GCCsGAQUFBwMBBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMIBgorBgEEAYI3CgMDBglghkgBhvhCBAEwDwYDVR0RBAgwBocErBAGIjAfBgNVHSMEGDAWgBTW7UXUvKIJIuDrNX5vq5Z9CDhIPTAOBgNVHQ8BAf8EBAMCA/gwCgYIKoEcz1UBg3UDRwAwRAIgGCoJysOt0W8kiGpeU95Og/MTQQr61JEzieG9JTwWbQgCIDjlXGJ/jDdg9MTlWHjGlSpgIW8SMv7zN+bYIN2ps5yLAAAxggELMIIBBwIBATAxMCAxCzAJBgNVBAYTAkNOMREwDwYDVQQDDAhHWlRFU1RDQQINAJPS8OvIOuEkpQJbgTAMBggqgRzPVQGDEQUAoGkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMjMwMzA5MDg1MzMwWjAvBgkqhkiG9w0BCQQxIgQg/DboVXc+/+fESrU2H8vtftYp91zFAmH11DqcgzXqi7AwDQYJKoEcz1UBgi0BBQAERzBFAiAzt99qaWainzKpWVufi5DPKZ5vNSqX6OonchU3EdsErgIhALV3uM1gQ0CpaMSSoRbmefcV5nzIUKSfpIiaMFNaYlyuAAAAAAAA");
    p7Signature2.setData("321");
    p7Signature2.setDataType(DataType.ORIGINAL);
    p7Signatures.add(p7Signature2);

    //设置签名值集合
    request.setP7SignatureList(p7Signatures);

    //是否返回证书
    request.setReturnCert(false);

    try {
        P7VerifyBatchResponse response = pkiClient.execute(request);
        // 后续业务
        if (response.isSuccess()) {
            System.out.println("成功响应:" + response.getBody());
        } else {
            System.out.println("失败响应:" + response.getBody());
        }
    } catch (ApiException e) {
        e.printStackTrace();
    }
最后更新于: 3/31/2023, 10:26:20 AM