@heisea/ca

0.9.20 • Public • Published

heisea/ca

凯特 CA依赖于SecSeal客户端,使用浏览器的WebSocket和本地客户端服务通讯,通讯时本地服务只处理接收到一条请求,数据响应后才能浏览器才能发送下一条请求。 当前函数会将所有执行的方法添加到handles队列中,请求返回后才会执行下一个请求。 嘉恒 嘉恒采用http请求的方式,为了提高性能,所以方法都是异步执行的注意执行时的业务要求 wiki 嘉恒

/lib/cert 兼容模式,未来讲通过嘉恒提供的兼容服务,支持和各ca厂商客户端通讯

更新说明

v0.9.15 1.优化 *** index.js *** :57345修改为只有加解密使用 v0.9.14

  1. 修复 获得用户信息将不再提示需要签名,默认自动获取,保持和嘉恒一致 v0.9.13
  2. 修复 getBaseImformation 凯特获得用户信息通用名失败的问题 v0.9.12
  3. 新增 getBaseImformation 凯特获得用户信息

v0.9.11

  1. 优化 cert.js handleCertDecrypt 返回修改为和index版一致

v0.9.9

  1. 修复 *** index.js getBaseImformationJH *** 返回层级问题

v0.9.8

  1. 新增 *** index.js getBaseImformationJH *** 获得证书所有信息

v0.9.7

  1. 修复 index.js ,嘉恒只支持http请求并支撑跨域
  2. 优化 file 当使用相对地址时自动添加当前域名

v0.9.5

  1. 修复 cert.js ,获得序列号,“SerialNumber|DeviceInfo”

v0.9.4

  1. 修复 cert.js ,服务器验签失败,当“请求验签服务器失败”为成功

v.0.9.2

  1. 修复 cert.js 优化队列执行,需要在设置了mode,并且加载iframe时才允许执行

v.0.9.1

  1. 修复 cert.js open方法重复执行的问题

v.0.9.0

  1. 新增 cert.js 默认密码"111111",密码错误自动弹出密码输入框
  2. 新增 jdzyca
  3. 优化了部分代码

v.0.8.13

  1. 新增 File 嘉恒options.token 存在时访问二维码请求

v.0.8.13

  1. 新增 File 嘉恒options.token 存在时访问二维码请求

v.0.8.12

  1. 修复 嘉恒请求地址不支持https

v.0.8.11

  1. 修复 嘉恒请求地址不支持https

v.0.8.10

  1. 修复 ca.handleFile 设置ySin为云签,otpion.applySn,ySign:true必须有企业唯一标识

v.0.8.9

  1. 修复 lib/cer 设置origin为绝对地址是无法返回

v.0.8.7

  1. 优化 lib/cert 允许配置 origin 来修改 'https://apitest.jhsec.com.cn'

v.0.8.6

  1. 修改 handleFile 修复过file 报错问题

v.0.8.5

  1. 优化 lib/cert 弹窗层级优化

v.0.8.4

  1. 优化 lib/cert 预览弹窗效果

v.0.8.3

  1. 修复 lib/read 凯特 Number(state.cur) === 1||Number(state.cur) === 0 文件base重叠的问题

v.0.8.2

  1. 修复 lib/read 凯特 onmessage覆盖的问题

v.0.8.1

  1. 新增 lib/cert 添加before(this,cb)来等待后端返回配置后再执行队列

v.0.8.0

  1. 新增 lib/cert 多证书兼容方案,新增类型mode = sxca 陕西ca

v.0.7.3

  1. 优化 CA handleFormatDevCB 替换嘉恒格式化key接口

更新说明

v.0.7.2

  1. 新增 CA handleDelEmptyContainerJH 嘉恒删除空白容器
  2. 新增 CA handlePdfVerifyJH 嘉恒PDF文件验签

v.0.7.1

  1. 添加 *** Read *** 缺少依赖提示

v.0.7.0

  1. 更新客户端为20210115003
  2. 修改嘉恒判断超时时间1500
  3. 暴露window.hxCert签名客户端方法 window.hxFileCert预览客户端方法,减小 *** read *** 文件大小,使用依赖window的方式
  4. 打包时添加版本号

v.0.6.1

  1. 更新客户端为20210115001
  2. 新增 CA _CertEncryptionJH _CertDecryptJH加密解密参数数组修改为JSON字符串
  3. 修复 read 非盖章时调用/hxstamp/v2/stampFile
  4. 优化 read 指定模式逻辑,但模式切换时自动重新初始化

v.0.6.0

  1. 新增 CA handleBatchDecrypt批量解密
  2. 修复 CA SHECA替换成TOPCA

v0.5.9

  1. 优化 read 根据设备号来判断需要的客户端,因为章是存在场商的服务器上的

v0.5.8

  1. 优化 判断客户执行checkCertTime: 500,后自动进入error逻辑
  2. 修复 嘉恒服务校验随机码仅支持base64

v0.5.7

  1. 优化 _CertEncryptionKT 凯特加密证书自动补齐添加-----BEGIN CERTIFICATE-----
  2. 优化 read 预览接口替换成 /hxstamp/v2/stampFileWaitUser,并支持URL_PDF、URL_EDC传参数
  3. 修复 KT 当返回返回 undefined时自动去匹配当前队列id,并在对方错误中返回

v0.5.6

  1. 优化 新增自动记住密码
  2. 优化 批量解密嘉恒不再重复创建实例

v0.5.5 20201127

  1. 修复 根据20201122001客户端兼容
  2. 新增 默认进行版本版本判断

v0.5.4

  1. 修复 read 快速点击预览时会同时打开嘉恒和凯特
  2. 优化 read EditFile的嘉恒兼容

v0.5.3

  1. 修复 read 嘉恒多次点击预览后,每关闭一次便会弹出对应次数的窗口,目前不允许用户在没关闭时触发预览

v0.5.2

  1. 修复IE下xhr.responseType = ajaxData.dataType报错

v0.5.1

  1. 修复 read 兼容凯特后无法初始化凯特方法的问题

v0.5.0

  1. 优化 read 兼容识客户端

v0.4.1

  1. 修复IE下xhr.responseType = ajaxData.dataType报错

v0.4.0

  1. 新增:Cert方法handleCertDecrypthandleCertEncryption原有加解密兼容嘉恒加解密
  2. 新增:CertEDecrypt方法,兼容嘉恒批量解密

v0.3.6

  1. 修复:config.open凯特时重复执行

v0.3.5

  1. 修复:嘉恒连接不上客户端无提示
  2. 修复:凯特初始化没有加入到队列的问题
  3. 新增:fileRead.js OpenFileJHEditFileJH嘉恒签章方法

v0.3.4

  1. 新增:新增嘉恒CA方法 handleBaseDataJHhandleClientVersionJH
  2. 新增:兼容方法 handleCertDataToPwhandleResetPasshandleCertDN支持凯特嘉恒
  3. 优化:handleCertP10JH 添加参数UserPin,type,获取证书请求支持传密码,请求类型
  4. 优化:handleWriteCertJH 添加参数UserPin,type,写入证书信息支持传密码,写入类型

v0.3.3 1.修复:驱动判断执行顺序

v0.3.2 1.修复:嘉恒凯特的判断逻辑

v0.3.0

  1. 新增:新增嘉恒CA方法 handleHasKeyJHhandleCertP10JHhandleWriteCertJHhandleCertInfoJH
  2. 新增:兼容方法 handleCertDatahandleCertNumberhandleCertStartDatehandleCertStartDatehandleCertEndDatehandleCertNamehandleFormatDevCBhandleCertKeySn支持凯特嘉恒
  3. 新增:fileRead EditFile Promise 解决签章分包返回

v0.2.7s

  1. 优化:fileRead 添加客户端信息接收config.onmessage
  2. 新增:初始化参数{open:'连接成功调用',error:'重连失败调用'} 成功失败钩子

v0.2.6

  1. 修改:fileRead 允许添加属性参数

v0.2.4

  1. 新增:handleCertDN新增获得证书拥有者DN

v0.2.3

  1. 修改:handleUnlockUserPin参数

v0.2.1

  1. 优化:成功判断优化

v0.2.0

  1. 新增:handleResetPass新增修改密码
  2. 优化:重连次数限制

v0.1.3

  1. 优化:加解密过滤空换行 v0.1.2
  2. 优化:添加ie优先配置
  3. 优化:默认写入时证书算法为sm3SM2 v0.1.1
  4. 修复:累计队列时超时

v0.1.0

  1. 新增:handleFormatDevCBca格式化
  2. 新增:*** @heisea/ca/lib/fileRead *** edc预览
  3. 优化:handleCertP10去除默认会有制表符

v0.0.6

  1. 新增:签发信息获得和证书写入兼容版 v0.0.5
  2. 新增:签发信息获得和证书写入 v0.0.4
  3. 优化:加解密为ie浏览器时,切换为ie客户端模式进行

v0.0.3

  1. 修改:handleCertKeyDate修改为handleCertKeyInfo
  2. 优化:在执行方法遇到链接断开时,自动重建链接
  3. 修改:方法传参顺序

v0.0.2

  1. 修改:handleCertEncryption的传参顺序

v0.0.1

  1. 第一版本

兼容

  • chrome //谷歌
  • ie11 //IE
  • safari //mac safari
  • firefox // 火狐

目录说明

  • build 项目脚手架配置
  • lib 生产用代码
  • src 源码
  • index.html demo

命令

进行开发

npm start

打包出生产版本 commonjs 版本

npm run build:common

打包出生产版本 在html可引入的版本

npm run build:var

发布代码 请直接在package.json 修改版本号

  npm version <newversion> | major | minor | patch]

发布

 npm publish

安装

配置NPM 地址
npm config set registry http://nexus.heisea.cn/nexus/content/groups/npm-all/	
下载包
npm i @heisea/ca

使用

1.es6 引入方式

// 默认会挂载到window.hxCert
import CA from '@heisea/ca'

import CA from '@heisea/ca/lib/cert' // 嘉恒兼容工具,配置

2.初始化,以下为默认参数无需配置

const Cert = new CA({
    url:'ws://127.0.0.1:31212/', // 服务器地址
    // 自定义提示信息
    noCartData:'请先获得CA签名', 
    noKSEnAndSign: 'KSEnAndSignCtl.ocx控件未安装!',
    noKey: '未检测到UKey或Ukey未登陆',
    newCert: '您未使用新版证书或未正确安装证书驱动',
    // 优先执行 
    ieFn:["Batch_EnvelopeDataByP7","Batch_UnenvelopeDataByP7",'CertId'],
    timeout:15000, //超时时间

})

配置说明

属性名 类型 说明
reconnection Number 失败重连次数,每次失败
open Function 首次连接成功调用,返回当前实例
error Function 重连失败调用
noCartData String 非必须 缺少签名提示
noKSEnAndSign String 非必须 缺少驱动提示
noKey String 非必须 未检测到证书
newCert String 缺少驱动
noUpdate String 超时提示
noUserPass String 口令错误
timeout Number 超时时间ms
ieFn Array 优先执行IE方法 { Batch_EnvelopeDataByP7:加密, Batch_UnenvelopeDataByP7:解密,KSSKF_CreateCertReqCB:正式请求,KSSKF_GetDevSNCB:设备系列号,CertId:设备唯一码(ie), KSSKF_WriteCertCB:写入正式书} 默认加密加解密(极大的性能提升)

3.修改错误提示方式

// 修改错误提示
CA.prototype.alert = (err)=>{
    if(window.App&&window.App.$message){
        window.App.$message.error(err)
    }else{
        console.error(err)
    }
}

4.方法使用

 Cart.handleCertData().then(res => {
    console.log(res)
})

ca 参数

属性名 类型 说明
url String 本地服务器地址 默认为'ws://127.0.0.1:31212/'
noCartData String 缺少CA签名提示
noKSEnAndSign String 客户端为安装
noKey String 未检测到UKey
newCert String 未检测到UKey
mode String 指定当前客户JH嘉恒、KT凯特 sxca 陕西ca geca格尔
timeout Number 超时时间 15000
reconnection Number 重连次数
versionJH String 嘉恒版本号
checkCertTime Number 检查客户端超时时间
before Function(cert,cb) /lib/cert 专用,cert 当前实例,cb回调执行回调后才开始执行队列请求
ifrmePath Srting /lib/cert 专用,设置cert.html 的地址

方法Promise

目前除解密外,都需要先获取CA签名,错误说错误会返回:

{ 
    PluginRequest: "请求别名",
    PluginRequestID: "队列表号",
    PluginResponse: "错误原因",
    PluginResponseValue: "返回数据"
}
名称 兼容 参数 说明
handleCertData 随机数(String) 通过随机数生成ca的签名,并保存到实例中,在之后的操作可以不需要传 {data:{ InData:'实例的随机', cartData:"加密的随机数",cart:"签名"}}
handleCertInfo 凯特 信息代码(String) 签名(Sting) 根据解析信息码获得对应的用户数据 {data:"数据"}
handleCertInfoJH 嘉恒 对应键值 获得证书信息 data:{CommonName:'通用名',DeviceInfo:设备号、介质号,SerialNumber:序列号,ValidEndTime:结束数据,ValidStartTime:结束时间}
handleCertNumber 签名(Sting) 获得系列号{data:"数据"}
handleCertName 签名(Sting) 获得通用名 {data:"数据"}
handleCertStartDate 签名(Sting) 有效期开始时间 {data:"数据"}
handleCertEndDate 签名(Sting) 有效期结束时间 {data:"数据"}
handleFormatDevCB 嘉恒 凯特(v6.1) 嘉恒 无 ; 配置(object 必填 bAdmin:非必填 操作员类型 0非管理员,DevSN:非必填 设备系列号,UserPin:用户口令,) 格式化清空设备
handleCertAbout 嘉恒 凯特(v6.1) 配置(Object,非必须) 设备信息 {data:"Array"}arr[0]通用名,arr[1]:证书源,arr[2]:有效开始,arr[3]:有效结束,arr[4]:省(s),arr[5]:市(l),arr[6]:机构名称(o),arr[7]部门(ou),arr[8]:证书唯一码值不存在时为空
handleCertP10 凯特(6.1) 经办人(string) 企业(String) userPW(用户口令) 配置(object 非必须 l:市,s:省,c:国,OU,bAdmin:操作员类型 1 管理员,DevSN:设备系列号) 获得正式请求
handleCertP10JH 嘉恒 param.csrInfoBase64 Base64编码的证书信息字符串,由服务端接口返回,param.type 请求类型 1:新证、2:延期、3:变更 获得请求
handleCertKeySn 凯特(6.1) 获得证书系列号
handleCertId 凯特(IE) 密码(非必填String) 获得证书唯一码bjca的证书源是没有的
handleWriteCert 凯特6.1 配置(object 必填alg:证书签名算法 ie必填, bAdmin:非必填 操作员类型 1管理员,DevSN:设备系列号,signCert:证书,encPrvKey:私钥,encCert:证书,) 证书写入 {data:""}
handleWriteCertJH 嘉恒 { caType:'目前固定传TOPCA,由服务端接口返回',signCertBase64: '后端签发出的签名证书,由服务端接口返回',encryptCertBase64: '后端签发出的加密证书,由服务端接口返回',encryptPrivateKeyBase64: '后端签发出的加密证书私钥,由服务端接口返回',passwordBase64: 'key登录密码',type:'写入类型,1:新证、2:延期、3:变更'}; 写入参数
handleCertEncryption 兼容 内容(String,必须,Array) 签名(Sting) 加密 `{data:"数据"
handleCertDecrypt 兼容 内容(String,必须,Array) 解密 `{data:"数据"
handleResetPass 嘉恒 凯特 旧密码,新密码 修改密码
handleCertDataToPw 嘉恒 凯特 密码 通过密码获取签名
handleClientVersionJH 嘉恒 获取客户端版本号
handleBaseDataJH 嘉恒 签名(Sting) 获取证书基本信息
handleBatchDecrypt 嘉恒 凯特 密文(Array) {"data":{"0":"解密1","1":"解密2"},"errorList":[ 错误 ]}
handleDelEmptyContainerJH 嘉恒 用户口令 删除空白容器
handlePdfVerifyJH 嘉恒 {pdfId:'',pdfBase64:''} [{pdfId:'',pdfBase64:''}] PDF文件验签 传入参数为Array,返回参数为Array,传入参数为Object,返回参数为Object {PdfId:'',VerifySignResult:''} 请求结果VerifySignResult: 1验签成功 0验签失败
handleFile 兼容 url 盖章,返回 {data:盖完章的base64 pdf,fileType:类型}
getBaseImformation 兼容 字段(String1),签名(String2) String1 根据字段返回参数,String2 签名 默认获得已经或取的签名

扩展src/fileRead

EDC预览插件

1.引入

// 默认 会挂载到 window.HxFileCert 
import OpenFile from '@heisea/ca/lib/read';  

1.1 凯特IE 多窗口依赖 webpack.config.js,ie下会打开一个页面

   new CopyWebpackPlugin([
        // 复制本地文件
        {
            from: path.resolve(__dirname, '@heisea/ca/lib/read.html'),
            to: path.resolve(__dirname, '../dist/read.html') //默认页面地址
        }
    ]),

1.2 嘉恒兼容模式,支持多客户端情况,但必须把cert.html打包到根目录

   new CopyWebpackPlugin([
        // 复制本地文件
        {
            from: path.resolve(__dirname, '@heisea/ca/lib/cert.html'),
            to: path.resolve(__dirname, '../dist/cert.html') //默认页面地址
        }
    ]),

2.使用

const url = 'http://bucket-cert-test.oss-cn-shanghai.aliyuncs.com/2019/12/55afadca-b348-4fa9-acea-8fd094f0a0ec.edc'
 OpenFile(url,{
     SetSealToolVis:true
 },config)
参数 说明
url 地址
option 更多查看配置 {SetSealToolVis:true} 显示盖章工具否则为预览不显示盖章工具
config 配置 非必填

Config

参数 类型 说明
noSeal String 未安装驱动提醒
readPath String read.html 地址
ie Boolean 是否启用ie模式 false
onmessage Functon  客户端返回处理,`{msg:'返回信息',data:'base64
mode String ’JH‘ 嘉恒 “KT” 凯特,目前会优先匹配嘉恒

Option 凯特

参数 类型 说明
token String 当存在时使用二维码版本,必须通过手机扫描二维码获得服务返回的token
ySign Boolean 是否启用云签章
applySn String 企业信息唯一标识
OutFile Sting 默认'000',输出edc保存路径,如果传”000”:自动获取系统临时目录
AutoCloseDocument Boolean AutoCloseDocumt: true保存后是否要自动关闭exe,否则手动关闭
rightAllButton Number 以二进制的方式来进行控制,1为隐藏,0为显示,初始第1位为预留位。11个按钮如下:
1保存,2抄送,3盖章,4批量盖章,5签批,6撤消,7验证,8印章管理,9系统设置,10打印,11退出
例:我要保留验证、系统设置、打印、退出4个按钮,其余按钮隐藏,第1位填0,所得二进制值为000101111110,转成十字制为382
SetDocSignType Number 0为默认,1为只签名,2为加密
SetEditPdf Boolean false不允许编辑,true允许,默认不允许编辑
SetSealToolVis Boolean true 显示盖章工具栏,false 隐藏盖章工具栏
SetToolButtonVis Number -1:PDF工具栏不可见,具体详见前面文档介绍
GetEDCB64 Boolean true:输出edc文件后做B64编码,否则不做编码。
SetPrintable Boolean true为可打印,false为不可打印,默认状态为不可打印
PutIsPrin Boolean true 生成的EDC文件可以打印,否则不能打印
PutIsExportBlack Boolean true 生成的EDC文件可以抄送,否则不能抄送
PutIsCento Boolean true 生成的EDC文件可以摘录,否则不能摘录
PrintOut Boolean 默认为弹框自己选择打印机或者传参 `type=0

解析代码(用户信息)

参数 说明
0x00000001 证书版本
0x00000002 证书序列号
0x00000003 证书签名算法标识
0x00000004 证书颁发者国家(C)
0x00000005 证书颁发者组织名(O)
0x00000006 证书颁发者部门名(OU)
0x00000007 证书颁发者所在的省、自治区、直辖市(S)
0x00000008 证书颁发者通用名称(CN)
0x00000009 证书颁发者所在的城市、地区(L)
0x00000010 证书颁发者Email
0x00000011 证书有效期:起始日期
0x00000012 证书有效期:终止日期
0x00000013 证书拥有者国家(C )
0x00000014 证书拥有者组织名(O)
0x00000015 证书拥有者部门名(OU)
0x00000016 证书拥有者所在的省、自治区、直辖市(S)
0x00000017 证书拥有者通用名称(CN)
0x00000018 证书拥有者所在的城市、地区(L)
0x00000019 证书拥有者Email
0x00000020 证书颁发者DN
0x00000021 证书拥有者DN
0x00000022 证书公钥信息
0x00000023 证书扩展项信息
0x00000024 颁发者密钥标识符
0x00000025 证书持有者密钥标识符
0x00000026 密钥用途
0x00000027 私钥有效期
0x00000028 证书策略
0x00000029 策略映射
0x00000030 基本限制
0x00000031 策略限制
0x00000032 扩展密钥用途
0x00000033 CRL发布点
0x00000034 netscape属性
0x00000035 证书实体唯一标识
0x00000036 个人身份证号码
0x00000037 个人社会保险号
0x00000038 企业工商注册号
0x00000039 企业组织机构代码
0x00000040 税务登记证号

嘉恒

服务地址:http://127.0.0.1:57344/zkha/seclib/getBaseImformation { "ResultCode":"0", //0成功/非0失败 "ResultMsg":"Success", //结果信息(成功:Success、失败:其他值) "ResultTip":"成功", //调用结果说明(中文为UTF-8编码) "Version":"",// 证书版本 "Serial":"",// 证书序列号 "SignAlg":"",// 证书签名算法标识 "IssuerC":"",// 证书颁发者国家(C) "IssuerO":"",// 证书颁发者组织名(O) "IssuerOU":"",// 证书颁发者部门名(OU) "IssuerS":"",// 证书颁发者所在的省、自治区、直辖市(S) "IssuerCN":"",// 证书颁发者通用名称(CN) "IssuerL":"",// 证书颁发者所在的城市、地区(L) "IssuerE":"",// 证书颁发者Email "NotBefore":"",// 证书有效期:起始日期 "After":"",// 证书有效期:终止日期 "SubjectC":"",// 证书拥有者国家(C ) "SubjectO":"",// 证书拥有者组织名(O) "SubjectOU":"",// 证书拥有者部门名(OU) "SubjectS":"",// 证书拥有者所在的省、自治区、直辖市(S) "SubjectCN":"",// 证书拥有者通用名称(CN) "SubjectL":"",// 证书拥有者所在的城市、地区(L) "SubjectE":"",// 证书拥有者Email "IssuerDN":"",// 证书颁发者DN "SubjectDN":"",// 证书拥有者DN "Pubkey":"",// 证书公钥信息 "Extensions":"",// 证书扩展项信息 "AuthoritykeyIDentifier":"",// 颁发者密钥标识符 "SubjectKeyIdentifier":"",// 证书持有者密钥标识符 "TaxationNumber":"",// 证书实体唯一标识 "OrganizationCode":"",// 企业组织机构代码 "IcRegistrationNumber":"",// 个人社会保险号 "InuranceNumber":"",// 企业工商注册号 "IdentifyCardNumber":"",// 个人身份证号码 "UniqueId":"",// 税务登记证号 }

Readme

Keywords

none

Package Sidebar

Install

npm i @heisea/ca

Weekly Downloads

5

Version

0.9.20

License

MIT

Unpacked Size

1.18 MB

Total Files

21

Last publish

Collaborators

  • chen-af
  • zsyyyy
  • linkk
  • chargoyao
  • heisea_bj