# es-client **Repository Path**: wenfengSAT/es-client ## Basic Information - **Project Name**: es-client - **Description**: 电子签章开源组件 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2023-05-21 - **Last Updated**: 2023-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # es-client ## 电子印章验章组件Java SDK工具包 ### 运行环境 Java SDK工具包依赖JDK版本:1.8+ ### 快速入门 #### 修改配置文件: 修改es-client.properties配置文件: ```properties ## 验IKI标识时 公钥矩阵位置(如需验证IKI标识则必填) pkmPath = E:/pkm-top-aid.cer ## 是否验证 OISP 默认不开启 ocspEnable = true ## OISP地址(未开启则不需要填写) ocspUrl = http://172.16.1.6:8091/ocsp ## 验PKI证书信任链时,颁发者的证书路径(如需验证PKI证书则必填) pkiRootCertPath = E:/test/SZCA-SM2-CA.cer ## 是否验证撤销列表(默认不开启) crlEnable = false ``` #### 初始化配置项 使用es-client时,只需要执行一次。 ```java EsApiStart.initConfig("E:/es-client.properties"); ``` #### 实例化EsVerifyEngineDeal ```java EsVerifyEngineDeal verifyEngineDeal = EsVerifyEngineDeal.getInstance(); ``` #### 调用接口 ##### 1.文件签章验证 ```java /** * 文件签章验证 * @param fileBytes 文件数据 * @param fileType 文件类型(PDF、OFD) * @return */ // 文件数据流 String filePath = ""; byte[] fileBytes = Files.readAllBytes(Paths.get(filePath)); List> verifyResults = verifyEngineDeal.verifySignByFile(fileBytes,"PDF"); ``` ##### 2.电子签章数据验证 ```java /** * 电子签章数据结构验证 * @param signature 电子签章数据 * @param src 原文数据 * @return */ String signPath = ""; String filePath = ""; byte[] signBytes = Files.readAllBytes(Paths.get(signPath)); byte[] fileBytes = Files.readAllBytes(Paths.get(filePath)); VerifyResult sesSignInfoVerifyResult = verifyEngineDeal.verifySignBySignatureData(signBytes,fileBytes); ``` ##### 3.电子印章验证 ```java /** * 电子印章验证 * @param sealData 电子印章数据 * @return */ String eslPath = ""; byte[] sealBytes = Files.readAllBytes(Paths.get(eslPath)) VerifyResult sealInfoVerifyResult = verifyEngineDeal.verifySeal(sealBytes); ``` ##### 4.X509格式证书验证 ```java /** * X509格式证书 验证 * @param certBytes X509格式证书数据 * @return */ String certPath = ""; byte[] certBytes = Files.readAllBytes(Paths.get(certPath)) VerifyResult certInfoVerifyResult = esSignEngineDeal.verifyX509Cert(certBytes); ``` #### 使用DEMO - 非Maven项目 : es-client-demo.zip - Maven项目 : es-client-demo-maven.zip ### 接口文档 #### 返回对象定义 ##### VerifyResult | 名称 | 类型 | 描述 | | -------- | ------- | --------------------------------------------------- | | code | int | 响应码;0:成功,其余失败(详情见错误码定义) | | result | boolean | true:成功,false:失败 | | errorMsg | String | 错误信息 | | data | Object | 成功返回认证信息(如SealInfo、SesSignInfo、CertInfo) | ##### SesSignInfo | 名称 | 类型 | 描述 | | -------- | -------- | -------------- | | signDate | String | 签章时间 | | sealInfo | SealInfo | 印章信息 | | certInfo | CertInfo | 签章人证书信息 | ##### SealInfo | 名称 | 类型 | 描述 | | -------------- | ------ | ----------------------------------- | | sealCode | String | 印章编码 | | sealName | String | 印章名称 | | vid | String | 电子印章厂商ID | | validStartTime | String | 有效期开始时间(yyyy-MM-dd HH:mm:ss) | | validEndTime | String | 有效期结束时间(yyyy-MM-dd HH:mm:ss) | | createDate | String | 制章时间(yyyy-MM-dd HH:mm:ss) | ##### CertInfo | 名称 | 类型 | 描述 | | --------- | ------ | ----------------------------------- | | version | String | 版本号 | | algorithm | String | 签名算法 | | serialNum | String | 证书序列号 | | subjectDN | String | 使用者 | | issuerDN | String | 颁发者 | | notBefore | String | 有效期开始时间(yyyy-MM-dd HH:mm:ss) | | notAfter | String | 有效期结束时间(yyyy-MM-dd HH:mm:ss) | #### 接口说明 ##### 1. 文件签章验证 - 接口功能: PDF文件或OFD文件签章验证。 - 接口定义: ```java List> verifySignByFile(byte[] fileBytes, String fileType); ``` - 请求参数详情 | 参数名称 | 是否必填 | 类型 | 说明 | | --------- | -------- | ------ | ------------------------ | | fileBytes | 是 | byte[] | 文件数据流 | | fileType | 是 | String | 文件类型(只支持PDF、OFD) | - 返回值:List> VerifyResult、SesSignInfo对象详情描述见返回对象定义; ##### 2. 电子签章数据验证 - 接口功能: 通过电子签章数据以及原文验证电子签章数据的有效性;电子签章数据格式支持GM/T 0031-2014规范以及GB/T 38540-2020规范。 - 接口定义: ```java VerifyResult verifySignBySignatureData(byte[] signature, byte[] src); ``` - 请求参数详情: | 参数名称 | 是否必填 | 类型 | 说明 | | --------- | -------- | ------ | -------------- | | signature | 是 | byte[] | 电子签章数据流 | | src | 是 | byte[] | 原文件数据 | - 返回值: VerifyResult:VerifyResult以及SesSignInfo对象描述见返回对象定义; ##### 3. 电子印章数据验证 - 接口功能: 验证电子印章数据的有效性;电子印章数据格式支持GM/T 0031-2014规范以及GB/T 38540-2020规范。 - 接口定义: ```java VerifyResult verifySeal(byte[] sealData); ``` - 请求参数详情: | 参数名称 | 是否必填 | 类型 | 说明 | | -------- | -------- | ------ | -------------- | | sealData | 是 | byte[] | 电子印章数据流 | - 返回值: VerifyResult : VerifyResult以及SealInfo对象描述见返回对象定义; ##### 4. X509格式证书验证 - 接口功能: 验证X509格式证书的有效性;支持IKI标识以及PKI证书的验证。 - 接口定义: ```java VerifyResult verifyX509Cert(byte[] certBytes); ``` - 请求参数详情: | 参数名称 | 是否必填 | 类型 | 说明 | | --------- | -------- | ------ | ---------------- | | certBytes | 是 | byte[] | X509格式证书数据 | - 返回值: VerifyResult : VerifyResult以及CertInfo对象描述见返回对象定义; #### 错误码定义 | 模块 | 错误码 | 错误信息 | | ---------------- | ------ | ------------------------------------------------ | | 电子签章数据验证 | 2001 | 电子签章数据格式错误 | | | 2002 | 未知的数据结构,无法匹配任何已知版本电子签章数据 | | | 2003 | 电子签章签名值验签失败! | | | 2004 | 电子签章签名算法不支持! | | | 2005 | 原文杂凑验证失败,文件被篡改! | | | 2006 | 证书在签章之前已被吊销,签章无效 | | | 2006 | 签章时间不在签章人数字证书有效期内,签章无效 | | | 2007 | 签章人数字证书无效! | | | 2008 | 电子印章验证失败 | | | | | | 电子印章数据验证 | 3001 | 电子印章数据格式错误 | | | 3002 | 未知的数据结构,无法匹配任何已知版本电子印章 | | | 3003 | 电子印章签名值验签失败! | | | 3004 | 电子印章签名算法不支持! | | | 3005 | 电子印章签名算法不支持! | | | 3006 | 电子印章已过期 | | | 3007 | 制章人证书验证失败 | | | | | | X509格式证书验证 | 4001 | 证书数据格式错误 | | | 4002 | 不支持的公钥参数 | | | 4003 | 证书信任链验证失败 | | | 4004 | 证书有效期验证失败,证书未生效 | | | 4005 | 证书有效期验证失败,证书已过期 | | | 4006 | 证书已被吊销 | | | 4007 | 证书密钥用法错误 | | | 4008 | 证书信任链验证失败!颁发者证书获取失败! | | | 4009 | 证书签名算法不支持! | | | | |