# P7签名

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

# 一、请求说明

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

# 二、请求参数

名称 类型 是否必须 描述
signType CertSearchEnum 签名方式 (P7签名不支持密钥索引)
signItemValue String 签名方式的值
data String 待签名数据
dataType DataType 待签名数据格式
signatureAlgorithm SignatureAlgorithm 签名算法:SM2证书签名算法为SM3withSM2,RSA默认为SHA256withRSA
signDataType DataType 签名后数据格式 (base64、hex)
attach Boolean 签名是否包含原文 true-包含原文 false-不包含原文;默认false

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

  • 字段解释

  • CertSearchEnum 签名方式

类型字段 介绍
CERT 证书
CERT_ID 证书ID
SN_HEX 证书序列号(十六进制格式)
SN_DEC 证书序列号(十进制格式)
TN_HASH 证书指纹
CERT_CN 证书持有者
CERT_DN 证书主题项
  • DataType 数据类型介绍

生成摘要的摘要算法和接口中的签名算法保持一致。

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

# 三、响应参数

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

# 四、成功示例

JSON示例

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

# 五、失败示例

JSON示例

{
    "code":10024,
    "requestId":"xxx",
    "message":"App签名错误"
}

# 六、SDK请求示例

        // 提供的URL
        String url = "http://172.16.6.76:20501";
        
        // 您的appKey
        String appKey = "XXX";

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

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

        String data = "签名数据";

        P7SignRequest request = new P7SignRequest();

        //通过何种方式进行签名 CERT_ID:证书ID,KEY_INDEX:密钥索引, SN_HEX:证书序列号(十六进制格式),SN_DEC:证书序列号(十进制格式),TN_HASH:证书证书指纹,CERT_CN:证书CN ,CERT_DN:证书主题项(DN)
        request.setSignType(CertSearchEnum.CERT_DN);
        //签名项目的值
         request.setSignItemValue("C=CN,UniqueIde......");
        // 签名数据
        request.setData(data);
        //签名项目的值
        request.setDataType(DataType.ORIGINAL);
        // 签名算法:SM2证书签名算法为SM3withSM2,RSA默认为SHA256withRSA
        request.setSignatureAlgorithm(SignatureAlgorithm.SHA1withRSA);
        // 签名是否包含原文
        request.setAttach(false);
        // 签名后数据格式
        request.setSignDataType(DataType.BASE64);

        try {
            P7SignResponse response = client.execute(request);
            // 后续业务
            if (response.isSuccess()) {
                System.out.println("成功响应:" + response.getResult());
                P7SignResponse.Result result = response.getResult();
                System.out.println("签名结果: " + result.getSignData());
                System.out.println("验证信息状态码: "+result.getVerification());
                System.out.println("验证提示信息: "+result.getMessage());
            } else {
                System.out.println("失败响应:" + response.getBody());
            }
        } catch (ApiException e) {
            e.printStackTrace();
        }
最后更新于: 7/25/2024, 2:27:41 PM