
Product
Introducing Repository Access Permissions and Custom Roles
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.
@heisea/ca
Advanced tools
凯特 CA依赖于SecSeal客户端,使用浏览器的WebSocket和本地客户端服务通讯,通讯时本地服务只处理接收到一条请求,数据响应后才能浏览器才能发送下一条请求。
当前函数会将所有执行的方法添加到handles队列中,请求返回后才会执行下一个请求。
嘉恒 嘉恒采用http请求的方式,为了提高性能,所以方法都是异步执行的注意执行时的业务要求
wiki
嘉恒
/lib/cert 兼容模式,未来讲通过嘉恒提供的兼容服务,支持和各ca厂商客户端通讯
v0.9.15
1.优化 *** index.js *** :57345修改为只有加解密使用
v0.9.14
v0.9.13v0.9.12v0.9.11
v0.9.9
v0.9.8
v0.9.7
v0.9.5
v0.9.4
v.0.9.2
v.0.9.1
v.0.9.0
v.0.8.13
options.token 存在时访问二维码请求v.0.8.13
options.token 存在时访问二维码请求v.0.8.12
v.0.8.11
v.0.8.10
ySin为云签,otpion.applySn,ySign:true必须有企业唯一标识v.0.8.9
origin为绝对地址是无法返回v.0.8.7
origin 来修改 'https://apitest.jhsec.com.cn'v.0.8.6
handleFile 修复过file 报错问题v.0.8.5
v.0.8.4
v.0.8.3
Number(state.cur) === 1||Number(state.cur) === 0 文件base重叠的问题v.0.8.2
onmessage覆盖的问题v.0.8.1
before(this,cb)来等待后端返回配置后再执行队列v.0.8.0
v.0.7.3
handleFormatDevCB 替换嘉恒格式化key接口v.0.7.2
handleDelEmptyContainerJH 嘉恒删除空白容器handlePdfVerifyJH 嘉恒PDF文件验签v.0.7.1
v.0.7.0
20210115003window.hxCert签名客户端方法 window.hxFileCert预览客户端方法,减小 *** read *** 文件大小,使用依赖window的方式v.0.6.1
20210115001_CertEncryptionJH _CertDecryptJH加密解密参数数组修改为JSON字符串/hxstamp/v2/stampFilev.0.6.0
handleBatchDecrypt批量解密SHECA替换成TOPCAv0.5.9
v0.5.8
checkCertTime: 500,后自动进入error逻辑v0.5.7
-----BEGIN CERTIFICATE-----/hxstamp/v2/stampFileWaitUser,并支持URL_PDF、URL_EDC传参数undefined时自动去匹配当前队列id,并在对方错误中返回v0.5.6
v0.5.5 20201127
v0.5.4
EditFile的嘉恒兼容v0.5.3
v0.5.2
xhr.responseType = ajaxData.dataType报错v0.5.1
v0.5.0
v0.4.1
xhr.responseType = ajaxData.dataType报错v0.4.0
handleCertDecrypt、handleCertEncryption原有加解密兼容嘉恒加解密v0.3.6
config.open凯特时重复执行v0.3.5
OpenFileJH、EditFileJH嘉恒签章方法v0.3.4
handleBaseDataJH、handleClientVersionJHhandleCertDataToPw、handleResetPass、handleCertDN支持凯特嘉恒handleCertP10JH 添加参数UserPin,type,获取证书请求支持传密码,请求类型handleWriteCertJH 添加参数UserPin,type,写入证书信息支持传密码,写入类型v0.3.3
1.修复:驱动判断执行顺序
v0.3.2
1.修复:嘉恒凯特的判断逻辑
v0.3.0
handleHasKeyJH、handleCertP10JH、handleWriteCertJH、handleCertInfoJHhandleCertData、handleCertNumber、handleCertStartDate、handleCertStartDate、handleCertEndDate、handleCertName、handleFormatDevCB、handleCertKeySn支持凯特嘉恒EditFile Promise 解决签章分包返回v0.2.7s
config.onmessage{open:'连接成功调用',error:'重连失败调用'} 成功失败钩子v0.2.6
v0.2.4
handleCertDN新增获得证书拥有者DNv0.2.3
handleUnlockUserPin参数v0.2.1
v0.2.0
handleResetPass新增修改密码v0.1.3
v0.1.2 sm3SM2
v0.1.1 v0.1.0
handleFormatDevCBca格式化handleCertP10去除默认会有制表符v0.0.6
v0.0.5 v0.0.4 v0.0.3
handleCertKeyDate修改为handleCertKeyInfov0.0.2
handleCertEncryption的传参顺序v0.0.1
进行开发
npm start
打包出生产版本 commonjs 版本
npm run build:common
打包出生产版本 在html可引入的版本
npm run build:var
npm version <newversion> | major | minor | patch]
npm publish
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)
})
| 属性名 | 类型 | 说明 |
|---|---|---|
| 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 的地址 |
目前除解密外,都需要先获取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 签名 默认获得已经或取的签名 |
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 | 配置 非必填 |
| 参数 | 类型 | 说明 |
|---|---|---|
| noSeal | String | 未安装驱动提醒 |
| readPath | String | read.html 地址 |
| ie | Boolean | 是否启用ie模式 false |
| onmessage | Functon | 客户端返回处理,`{msg:'返回信息',data:'base64 |
| mode | String | ’JH‘ 嘉恒 “KT” 凯特,目前会优先匹配嘉恒 |
| 参数 | 类型 | 说明 |
|---|---|---|
| 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":"",// 税务登记证号 }
FAQs
The npm package @heisea/ca receives a total of 6 weekly downloads. As such, @heisea/ca popularity was classified as not popular.
We found that @heisea/ca demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 5 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket now supports Custom Roles and Repository Access Permissions so organizations can control who can access specific repositories and actions.

Product
Socket MCP now lets AI assistants review org alerts, investigate threats using the Socket threat feed, and inspect package files in addition to dependency scoring.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.