# P1签名验证

对P1签名进行验证

# 一、请求说明

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

# 二、请求参数

名称 类型 是否必须 描述
virtualIndex Integer 虚拟索引(仅可使用拥有者不为证书的虚拟索引)
signature String 签名值(默认格式为BASE64)
digst String 待验签摘要数据(BASE64)
dataType DataType 原文数据格式
data String 原文数据
signatureAlgorithm SignatureAlgorithm 签名算法:SM2证书签名算法为SM3withSM2,RSA默认为SHA256withRSA
signatureDataType DataType 签名值数据格式 (base64,hex) 注:此字段为 PKI 3.3.0版本 新增字段 ,PKI 3.3.0版本新增支持HEX格式

参数说明:必须选择两种方式中一种。digst(BASE64)或者dataType+data。若选择摘要验签,摘要长度应与签名算法对应。具体算法的摘要长度见签名算法字段解释。

  • 字段解释

  • DataType 数据类型介绍

字段 类型介绍
BASE64 原文BASE64
HEX 原文Hex
ORIGINAL 原文
DIGEST_BASE64 摘要base64
DIGEST_HEX 摘要hex
ASN1_BASE64 ASN.1格式BASE64  注:此类型为PKI3.4.5版本新增
ASN1_HEX ASN.1格式HEX  注:此类型为PKI3.4.5版本新增
  • SignatureAlgorithm 签名算法介绍
字段 状态介绍
SM3withSM2 SM3withSM2签名算法(摘要长度应为32字节)
SHA1withRSA SHA1withRSA签名算法(摘要长度应为20字节)
SHA256withRSA SHA256withRSA签名算法(摘要长度应为32字节)
SHA512withRSA SHA512withRSA签名算法(摘要长度应为64字节)

# 三、响应参数

data 结果信息 类型 描述
result boolean 验签结果

# 四、成功示例

JSON示例

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

# 五、失败示例

JSON示例

{
    "code": 10001,
    "requestId":"xxx",
    "message": "系统错误",
}

# 六、SDK请求示例

        
        // 提供的URL
        String url = "http://172.16.3.232:20501";

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

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

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

        P1SignVerifyRequest request = new P1SignVerifyRequest();

        Integer virtualIndex = 20021;

        String signature = "MEUCIFkFPB/YKY5hU7KT+uvyXH0bQDkAAzE9zwXUkkhevW8dAiEA+H2/gcH6pSKSftOskzwA+4NM0hNCmJp0UvD3I4HkBTg=";

        // 虚拟索引
        request.setVirtualIndex(virtualIndex);

        // 签名数据 base64
        request.setSignature(signature);

        // 原文数据
        request.setData("MTIz");

        // 原文数据格式
        request.setDataType(DataType.BASE64);

        // 摘要算法 SM2签名的摘要算法必须为SM3
        request.setSignatureAlgorithm(SignatureAlgorithm.SM3withSM2);


        try {
            P1SignVerifyResponse response = client.execute(request);
            // 后续业务
            if (response.isSuccess()) {
                System.out.println("成功:" + response.getResult());
                P1SignVerifyResponse.Result result = response.getResult();
                System.out.println("验签结果: "+result.getResult());
            } else {
                System.out.println("失败:" + response.getBody());
            }
        } catch (ApiException e) {
            e.printStackTrace();
        }
最后更新于: 6/6/2023, 10:01:52 AM