# P1批量验证签名

对P1签名值进行批量验证

# 一、请求说明

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

# 二、请求参数

名称 类型 是否必须 描述
templateId String 验证模板id
signType CertSearchEnum 验证签名方式
signItemValue String 验证签名方式的值
signatureList String 签名值集合
dataList String 待验签数据集合
dataType DataType 原文数据格式
signatureAlgorithm SignatureAlgorithm 签名算法
returnCert Boolean 响应中是否包含证书内容
signatureDataType DataType 签名值数据格式 (base64,hex) 不传默认为base64

注:当原文数据格式为摘要base64或摘要hex时,注意摘要长度应与签名算法对应。具体算法的摘要长度见签名算法字段解释。

  • CertSearchEnum 验证签名方式
类型字段 介绍
CERT 证书
CERT_ID 证书ID
SN_HEX 证书序列号(十六进制格式)
SN_DEC 证书序列号(十进制格式)
TN_HASH 证书指纹
CERT_CN 证书持有者
CERT_DN 证书主题项
  • SignatureAlgorithm 签名算法介绍
字段 状态介绍
SM3withSM2 SM3withSM2签名算法(摘要长度应为32字节)
SHA1withRSA SHA1withRSA签名算法(摘要长度应为20字节)
SHA256withRSA SHA256withRSA签名算法(摘要长度应为32字节)
SHA512withRSA SHA512withRSA签名算法(摘要长度应为64字节)
  • DataType 数据类型介绍
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
DIGEST_BASE64 摘要base64
DIGEST_HEX 摘要hex
  • dataList 待验签数据集合 和 SignatureList 签名值集合 请使用JSON样式,示例:

["123","345","=;&*abC12!@#$%^&*()\"'<>?:{}_+,.\/;'[]"]

# 三、响应参数

data 结果信息 类型 描述
cert String 签名证书 (仅在配置时返回)
result Integer 总体结果 0:表示全成功
verifyResults List<P1verifyResult> 验证结果集合

List<P1verifyResult>对象

data 结果信息 类型 描述
original 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":10201,
    "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);

    P1VerifyBatchRequest request = new P1VerifyBatchRequest();

    request.setSignatureDataType(DataType.BASE64);

    //request.setTemplateId("640987992c1ca52e602cfe7e");

    //通过何种方式进行签名 CERT_ID:证书ID,KEY_INDEX:密钥索引, SN_HEX:证书序列号(十六进制格式),SN_DEC:证书序列号(十进制格式),TN_HASH:证书证书指纹,CERT_CN:证书CN ,CERT_DN:证书主题项(DN)
    request.setSignType(CertSearchEnum.CERT_ID);
    //签名项目的值
    request.setSignItemValue("640723b080a0554c3a6a0fec");
    //原文数据类型
    request.setDataType(DataType.ORIGINAL);

    ArrayList<String> dataList = new ArrayList<>();

    dataList.add("123");

    dataList.add("312");

    //设置待验签数据集合
    request.setDataList(dataList);

    ArrayList<String> sList = new ArrayList<>();

    sList.add("MEYCIQCdc5Oz2oqaIWVDFDbI0haxKDGxpmMFrXCjLuT+V4UB3QIhALyfS3ptgMNymbOX0P9ZPaSh+WJQHxuiH7xz1iJVPN5T");

    sList.add("MEUCIDFDlWs7bUKRDPdyULNFpSAOjmti5l+8PXUPudiDOZ5vAiEA62OZV+GZ6AwXweTOkCrTDwuY9PZi8fHOuVuHVRK8UqA=");

    //设置签名值集合
    request.setSignatureList(sList);

    // 摘要算法,SM2证书签名固定为SM3,RSA默认SHA256
    request.setSignatureAlgorithm(SignatureAlgorithm.SM3withSM2);
    // 是否返回证书
    request.setReturnCert(false);


    try {
        P1VerifyBatchResponse response = pkiClient.execute(request);
        // 后续业务
        if (response.isSuccess()) {
            System.out.println("成功响应:" + response.getBody());
        } else {
            System.out.println("失败响应:" + response.getBody());
        }
    } catch (ApiException e) {
        e.printStackTrace();
    }
最后更新于: 7/19/2024, 9:18:45 AM