# P7验证签名

对P7签名进行验证

# 一、请求说明

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

TIP

当使用SDK时,请求地址:https://api.spiderid.cn

# 二、请求参数

名称 类型 是否必须 描述
templateId String 验证模板id,不填写则仅验证签名(如果管理系统配置默认模板,不传将使用默认模板校验证书)
signature String P7签名值,默认数据类型为base64
cert String 签名证书(base64),多张证书以换行分隔。 (当签名值不包含证书时,可传入此值验签)
data String 原文数据
dataType DataType 原文数据格式
attach Boolean 签名结果中是否包含原文 (true:attached模式/false:detached模式)
returnCert Boolean 响应中是否包含证书内容
signatureDataType DataType 签名值数据格式 (base64,hex) 注:此字段为 PKI 3.3.0版本 新增字段 新增hex格式
  • 字段解释

    当attach为true时,原文数据和原文数据格式无需填写;

    当attach为false时,才需要填写原文数据和原文数据格式

    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");
  • DataType 数据类型介绍
字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
DIGEST_BASE64 摘要base64
DIGEST_HEX 摘要hex

# 三、响应参数

data 结果信息 类型 描述
cert String 签名证书 (仅在配置时返回,多张证书以"\n"分隔)
original String 原文数据
digest String 摘要数据 base64格式 注:此字段为 PKI 3.3.0版本 新增字段
verification Integer 验证信息
  • 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":{
        "verification":0,
        "original":"562+****w5o2u",
        "cert":"MIICCTCC*****A8E3tYy1BmBs"
    }
}

# 五、失败示例

JSON示例

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

# 六、SDK请求示例

        // 提供的URL
        String url = "https://api.spiderid.cn";

        // 您的appKey
        String appKey = "XXX";

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

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

        String signature = "MIAGCiqBHM9VBgEEAgKggDCAAgE*********0sf+DIbVZWG9A5JBQAAAAAAAA==";

        String data = "签名数据";

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

        try {
            P7VerifyResponse response = client.execute(request);
            // 后续业务
            if (response.isSuccess()) {
                System.out.println("成功响应:" + response.getBody());
            } else {
                System.out.println("失败响应:" + response.getBody());
            }
        } catch (ApiException e) {
            e.printStackTrace();
        }
最后更新于: 6/9/2023, 10:58:46 AM