更新记录

1.0.0(2022-01-20)

1.0.0 初始版本


平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:支持,arm64-v8a:支持,x86:支持 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


密码学工具包

功能叙述

1.支持SM2,RSA非对称加解密、签名验签

2.支持SM3、SHA1、SHA256、SHA3 、MD5 等摘要算法

3.支持 SM4、AES、DES 等对称加密算法

具体支持算法请参考描述对象 ProviderMode

插件简介

本插件包含6个工具包,具体功能及名称如下

lich-PKI-PKITool 工具类包 ,用于BASE64、HEX、byte 等数据的转换,以及ProviderMode获取

lich-PKI-KeyPairTool 秘钥对工具包,用于存取非对称秘钥,以及非对称秘钥相关操作

lich-PKI-PublicKeyTool 公钥证书工具包,用于公钥证书、P7B等公钥证书相关的解析生成

lich-PKI-AsymmetricTool 非对称加解密工具包,用于非对称加解密

lich-PKI-SymmetricTool 对称加解密工具包,用于对称加解密

lich-PKI-DigestTool 摘要算法工具包,用于摘要数据生成

接口使用试例

接口返回数据

本插件所有接口返回数据都遵循如下返回结果

参数 类型 说明
code int 相应值 0成功 其他失败
msg string 错误信息
其他 object 参数为具体类型,值为数据

下面以获取支持算法(ProviderMode)为例进行演示

let PKITool = uni.requireNativePlugin('lich-PKI-PKITool');
PKITool.getProviderMode((ret)=>{//获取支持算法列表
    if(ret.code!=0){
        console.log(“错误码:”+ret.code+“错误信息”+ret.msg)
        return;
    }
    console.log(ret.ProviderMode)//输出支持算法列表
})  

ProviderMode 对象说明

ProviderMode对象是支持算法标识,当用户并不清楚参数时可以根据ProviderMode对象来查询想要的参数,如

ProviderMode.Asymmetric.GM.Signature.xxx

表示 非对称算法.国密算法(SM2).摘要算法.xxx 找到SM2支持的摘要算法标识

详细接口文档

lich-PKI-PKITool 工具类包

encodeBase64String(byte [] b) //byte数组转换BASE64字符串 返回参数名base64
decodeBase64(String s)//BASE64字符串字符串转byte数组 返回参数名bytes
encodeHex(byte [] b) //byte数组转换16进制字符串 返回参数名hex
decodeHex(String s) //16进制字符串字符串转byte数组 返回参数名bytes
getUTF8bytes(String s) //获取字符串utf8编码bytes 返回参数名bytes
getUTF8String(byte [] b) //bytes转utf8字符串 返回参数名string
getProviderMode() //获取ProviderMode对象 返回参数名ProviderMode

lich-PKI-KeyPairTool 秘钥对工具包

generateGMKeyPair() //生成国密算法非对称秘钥对(SM2) 返回参数名keyId (秘钥号)
generateRSAKeyPair(int size)//生成RSA非对称秘钥对 size秘钥长度 返回参数名keyId
generateP10(String keyId,String dn)//生成P10证书申请 keyId 秘钥号 dn证书dn项 返回参数名P10
importX509Certificate(String keyId,String x509CertificateBase64,byte index)
//导入cer证书 keyId秘钥号 x509CertificateBase64 cerBase64  index 1签名秘钥 2加密秘钥 无返回参数
getX509Certificate(String keyId,byte index) 
//获取秘钥号对应的公钥证书 keyId秘钥号 index 1签名秘钥 2加密秘钥 返回参数名cert
importGMEncPrivateKeyByEnvelopedKeyBlob(String keyId,String envelopedKeyBlobBase64,String x509CertificateBase64)
importGMEncPrivateKeyBySignedAndEnvelopedData(String keyId,String envelopedKeyBlobBase64,String x509CertificateBase64)
//导入国密加密秘钥 keyId秘钥号 envelopedKeyBlobBase64加密秘钥保护结构 x509CertificateBase64加密秘钥证书 无返回参数
importGMEncPrivateKeyBySignedAndEnvelopedDataOtherKeyId(String importKeyId,String encKeyId,String envelopedKeyBlobBase64,String x509CertificateBase64)
//导入国密加密秘钥(指定解密证书)importKeyId要导入的秘钥号 encKeyId解密秘钥号 x509CertificateBase64加密秘钥证书 无返回参数
exportEnvelopedKeyBlob(String keyId,byte index,String importCertBase64)
//导出国密加密秘钥保护结构 keyId秘钥号 index 1签名秘钥 2加密秘钥 importCertBase64导入方解密秘钥公钥证书 返回参数名envelopedKeyBlob
importRSAP12(String p12Base64,String password)
//导入RSA PFX证书 p12Base6 pfx base64 password pfx密码 返回参数名 keyId(秘钥号) N(公钥)
exportRSAP12(String keyId,String password,String alias)
//导出RSA PFX证书 keyId 秘钥号 password密码 alias 证书别名
getKeyInfo(String keyId)
//获取对应秘钥号信息 keyId秘钥号 返回参数名data 具体值详见demo
getAllKeyInfo()
//获取对应秘钥号信息 返回参数名data 具体值详见demo
setAvailable(String keyId,boolean b)
//设置秘钥是否可用  keyId秘钥号 b true可用false不可用 无返回参数
openCache(String keyId,boolean b)
//是否打开缓存模式 keyId秘钥号 b true打开false关闭 无返回参数
setMode(String keyId,int b)
//设置秘钥模式   keyId秘钥号 b 1单证模式2双证模式 无返回参数
destroy(String keyId)
//销毁秘钥 keyId秘钥号 无返回参数

lich-PKI-PublicKeyTool 公钥证书工具包

generateX509Certificate(String keyId, int index, Map publicKeyInfo)
//生成测试公钥 keyId 秘钥号 index 1签名秘钥 2加密秘钥 publicKeyInfo公钥信息,详见demo 返回值cert
readX509CertificateKeyInfoByKeyId(String keyId,int index)
//读取公钥证书信息 keyId 秘钥号 index 1签名秘钥 2加密秘钥 返回值keyInfo 详见demo
readX509CertificateKeyInfo(String x509CertificateBAse64)
//读取外部公钥证书信息 x509CertificateBAse64 公钥证书base64 返回值keyInfo 详见demo
p7bToX509CertificateArray(String p7bBase64)
//p7b转换cert数组 p7bBase64 p7bBase64 返回值certs

lich-PKI-AsymmetricTool 非对称加解密工具包

encryptByKeyId(String keyId, byte[] ori,String algorithm)
//内置秘钥加密 keyId秘钥号 ori待加密数据 algorithm 摘要算法 返回值 enc
encrypt(byte[] ori,String x509CertificateBAse64,String algorithm)
//外置秘钥加密 ori待加密数据 x509CertificateBAse64公钥证书base64  algorithm 摘要算法  返回值 enc
decrypt(String keyId, byte[]  encodedataByte,String algorithm)
//解密 keyId秘钥号 encodedataByte加密数据bytes  algorithm 摘要算法 返回值 dec
sign(String keyId, byte[] ori)
//签名 keyId秘钥号 ori待签原文 返回值 sign 签名值
verify(byte[] sign,byte[] ori, String x509CertificateBase64)
//签名验证 sign签名值 ori 原文 x509CertificateBase64 公钥证书base64  返回值verify
verifyByKeyId(String keyId, byte[] sign,byte[] ori)
//内置秘钥验签 keyId秘钥号 sign签名值 ori 原文 返回值verify
SM2SignatureToRS(byte[] in)
//签名值格式转换 返回值RS
RSToSM2Signature(byte[] in)
//签名值格式转换  返回值SM2Signature

lich-PKI-SymmetricTool 对称加解密工具包

encrypt(byte [] ori,byte [] pwd,byte[] iv,String algorithm)
//加密 ori待加密数据  pwd 密码  iv向量ecb模式传[] algorithm加密算法 返回值enc
decrypt(byte [] enc,byte [] pwd,byte[] iv,String algorithm)
//解密 enc加密数据  pwd 密码  iv向量ecb模式传[] algorithm加密算法 返回值dec

lich-PKI-DigestTool 摘要算法工具包

digest(byte [] in, String algorithm)
//摘要 in待摘要数据 algorithm摘要算法 返回值digest

BUG反馈与支持

请按照如下格式发送到邮箱:liuchao_@outlook.com

手机型号:三星S10

系统版本:Android 11.0.1

问题接口: lich-PKI-KeyPairTool工具包 generateGMKeyPair()接口

请求参数: xxxx

返回错误:xxxx

描述:xxxx

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问