SOF本地服務(wù)接口說明
SOF
本地服務(wù)接口說明
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
修訂記錄:
修訂日期 人員 版本 修訂內(nèi)容
2021/8/25 李牧卿 V1.0
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
1.引言
1.1 概述
該文檔用于程序員跨瀏覽器調(diào)用USBKey,本插件基于標(biāo)準(zhǔn)SKF庫(GMT 0016-2012)開發(fā),通過發(fā)送插件發(fā)送post請求完成和USBKey的交互,可以兼容多廠商的USBKey。
接口采用SOF標(biāo)準(zhǔn)庫進(jìn)行設(shè)計(jì),本款插件可以滿足常規(guī)PKI證書應(yīng)用需求,有著良好的兼容性和可移植性。
1.2 接口支持平臺/瀏覽器
支持平臺:
windows
支持瀏覽器:
Chrome,F(xiàn)irefox,IE(5,6,7+)
1.3 通信協(xié)議
通信協(xié)議采用https,在通信過程中,為了統(tǒng)一字符集,交易報(bào)文采用UTF-8格式傳送。
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
2.函數(shù)列表
函數(shù)接口 功能描述 備注
SOF_GetVersion 獲取版本號
SOF_EnumDevice 枚舉設(shè)備
SOF_LoadLibrary 加載SKF庫
SOF_GetDeviceInstance 加載設(shè)備應(yīng)用
SOF_GetDeviceInfo 獲取設(shè)備信息
SOF_Login 登錄
SOF_ChangePassWd 修改密碼
SOF_GetPinRetryCount 獲取PIN碼剩余嘗試次數(shù)SOF_EnumCertContainer 枚舉容器
SOF_ExportUserCert 獲取用戶證書
SOF_GetUserList 獲取用戶列表
SOF_GetCertInfo 獲取證書信息
SOF_SetDigestMethod 設(shè)置摘要算法
SOF_DigestData 摘要計(jì)算
SOF_SignData 簽名計(jì)算
SOF_GenRandom 隨機(jī)數(shù)生成
SOF_VerifySignedData 驗(yàn)證簽名
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
SOF_DeleteContainer 刪除容器
SOF_EncryptData 數(shù)據(jù)加密(數(shù)字信封)
SOF_DecryptData 數(shù)據(jù)解密(數(shù)字信封)
SOF_GenerateP10Request 產(chǎn)生P10請求
SOF_importCert 導(dǎo)入簽名證書
SOF_GetTempPublicKey 獲取臨時公鑰
SOF_importCryptoCertAndKey 導(dǎo)入加密證書版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.接口說明
3.1 獲取版本號
3.1.1 函數(shù)原型
SOF_GetVersion;
3.1.2 輸入項(xiàng)
無
3.1.3 返回值
version [out] 版本號
3.1.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetVersion"}Response接收 {"version" : "V1.0.0.0"}3.2 加載 SKF 庫
3.2.1 函數(shù)原型
SOF_LoadLibrary(BSTR libname)
3.2.2 輸入項(xiàng)
libname [in] SKF庫名稱
3.2.3 返回值
status [out] 0為成功,其他為錯誤碼
3.2.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
POST發(fā)送 "function":"SOF_LoadLibrary","libname":dll_name}Response接收 {"status" : 0}
3.3 枚舉設(shè)備
3.3.1 函數(shù)原型
SOF_EnumDevice
3.3.2 輸入項(xiàng)
無
3.3.3 返回值
DeviceNameList [out] 設(shè)備列表
3.3.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_EnumDevice"}Response接收 {"DeviceNameList" : "AB5278C3B8A6245BC509C0B28DBA45D"}3.4 加載設(shè)備應(yīng)用
3.4.1 函數(shù)原型
SOF_GetDeviceInstance(BSTR DeviceName, BSTR Application)3.4.2 輸入項(xiàng)
DeviceName [in] 設(shè)備標(biāo)識
Application [in] 應(yīng)用名稱(NULL則默認(rèn)打開第一個應(yīng)用)版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.4.3 返回值
status [out] 0為成功,其他為錯誤碼
3.4.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetDeviceInstance","DeviceName":devicename,"Application":"NULL"}
Response接收 {"status" : 0}
3.5 獲取設(shè)備信息
3.5.1 函數(shù)原型
SOF_GetDeviceInfo(BSTR ulType)
3.5.2 輸入項(xiàng)
ulType [in] 設(shè)備信息標(biāo)識(詳情見附錄)
3.5.3 返回值
DeviceInfo [out] 設(shè)備信息
3.5.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetDeviceInfo","ulType":"DEVICE_FREE_SAPCE"}Response接收 {"DeviceInfo" : "124032"}版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.6 登錄
3.6.1 函數(shù)原型
SOF_Login(BSTR PassWd)
3.6.2 輸入項(xiàng)
PassWd [in] Pin碼
3.6.3 返回值
status [out] 0為成功,其他為錯誤碼
3.6.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_Login","PassWd":pwd}Response接收 {"status" : 0}
3.7 修改密碼
3.7.1 函數(shù)原型
SOF_ChangePassWd(BSTR OldPassWd, BSTR NewPassWd)3.7.2 輸入項(xiàng)
OldPassWd [in] 舊Pin碼
NewPassWd [in] 新Pin碼
3.7.3 返回值
status [out] 0為成功,其他為錯誤碼
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.7.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_ChangePassWd","OldPassWd":pwd,"NewPassWd":newpwd}Response接收 {"status" : 0}
3.8 獲取 PIN 碼剩余嘗試次數(shù)
3.8.1 函數(shù)原型
SOF_GetPinRetryCount
3.8.2 輸入項(xiàng)
無
3.8.3 返回值
RetryNum [out] 剩余嘗試次數(shù)
3.8.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetPinRetryCount"}Response接收 {"RetryNum" : "10"}
3.9 枚舉容器
3.9.1 函數(shù)原型
SOF_EnumCertContainer
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.9.2 輸入項(xiàng)
無
3.9.3 返回值
ContainerList [out] 容器列表
3.9.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_EnumCertContainer"}Response接收 {"ContainerList" : "1C97C699F8"}3.10 獲取用戶證書
3.10.1 函數(shù)原型
SOF_ExportUserCert(BSTR ContainerName, BSTR CertType)3.10.2 輸入項(xiàng)
ContainerName [in] 容器名稱
CertType [in] 證書類型(1為簽名證書,0為加密證書)3.10.3 返回值
Cert [out] base64編碼的證書
3.10.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_ExportUserCert","ContainerName":con_name,"CertType":cert_type}
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
Response接收 {"Cert" : ":base64CERT"}3.11 獲取用戶列表
3.11.1 函數(shù)原型
SOF_GetUserList
3.11.2 輸入項(xiàng)
無
3.11.3 返回值
UserList [out] 用戶列表
3.11.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetUserList"}Response接收 {"UserList" : "test1C97C699F8"}3.12 獲取證書信息
3.12.1 函數(shù)原型
SOF_GetCertInfo(BSTR base64EncodeCert, BSTR Type )3.12.2 輸入項(xiàng)
base64EncodeCert [in] base64編碼的證書Type [in] 證書信息標(biāo)識(詳情見附錄)
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.12.3 返回值
CertInfo [out] 證書信息
3.12.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetCertInfo","base64EncodeCert":cert_base64,"Type":type}type為int型
Response接收 { "CertInfo" : "V3"}3.13 設(shè)置摘要算法
3.13.1 函數(shù)原型
SOF_SetDigestMethod(int DigestMethod)3.13.2 輸入項(xiàng)
DigestMethod [in] 算法標(biāo)識(1:SM3,2:SHA1,4:SHA256)3.13.3 返回值
status [out] 0為成功,其他為錯誤碼
3.13.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_SetDigestMethod","DigestMethod":type};
type為int型
Response接收 {"status" : 0}
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.14 摘要計(jì)算
3.14.1 函數(shù)原型
SOF_DigestData(BSTR InData, BSTR ContainerName)3.14.2 輸入項(xiàng)
InData [in] base64編碼的原文
ContainerName [in] 容器名稱
3.14.3 返回值
DigestData [out] 摘要數(shù)據(jù)
3.14.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_DigestData","InData":"YWJj","ContainerName":con_name}Response接收 {"DigestData" : "qZk+NkcGgWq6PiVxeFDCbJzQ2J0="}3.15 簽名計(jì)算
3.15.1 函數(shù)原型
SOF_SignData(BSTR InData, BSTR ContainerName)3.15.2 輸入項(xiàng)
InData [in] base64編碼的原文
ContainerName [in] 容器名稱
3.15.3 返回值
SignData [out] base64編碼的簽名數(shù)據(jù)
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.15.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_SignData","InData":indata,"ContainerName":con_name}Response接收 { "SignData" : " base64 SIGN "}3.16 驗(yàn)證簽名
3.16.1 函數(shù)原型
SOF_VerifySignedData(BSTR base64EncodeCert, BSTR InData, BSTR SignValue)3.16.2 輸入項(xiàng)
base64EncodeCert [in] base64編碼的簽名證書InData [in] base64編碼的原文
SignValue [in] base64編碼的簽名值
3.16.3 返回值
status [out] 0為驗(yàn)證通過,其他為錯誤碼
3.16.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_VerifySignedData","base64EncodeCert":cert_base64,"InData":SOF_Sign_InData_base64,"SignValue":sign_data}Response接收 {"status" : 0}
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.17 隨機(jī)數(shù)生成
3.17.1 函數(shù)原型
SOF_GenRandom(int RandomLen)
3.17.2 輸入項(xiàng)
RandomLen [in] 隨機(jī)數(shù)長度(字節(jié))
3.17.3 返回值
Ramdombase64 [out] base64編碼的隨機(jī)數(shù)3.17.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GenRandom","RandomLen":3}Response接收 { "Ramdombase64" : "0YZg"}3.18 刪除容器
3.18.1 函數(shù)原型
SOF_DeleteContainer(BSTR ContainerName)3.18.2 輸入項(xiàng)
ContainerName [in] 容器名稱
3.18.3 返回值
status [out] 0為成功,其他為錯誤碼
3.18.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
POST發(fā)送 {"function":"SOF_DeleteContainer","ContainerName":con_name}Response接收 {"status" : 0}
3.19 數(shù)據(jù)加密(數(shù)字信封)
3.19.1 函數(shù)原型
SOF_EncryptData(BSTR InData, BSTR Certbase64)3.19.2 輸入項(xiàng)
InData [in] 原文
Certbase64 [in] base64編碼的加密證書
3.19.3 返回值
EncryptData [out] base64編碼的數(shù)字信封3.19.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_EncryptData","InData":indata,"Certbase64":cert_base64}Response接收 { "EncryptData" : "base64 EncryptData"}3.20 數(shù)字解密(數(shù)字信封)
3.20.1 函數(shù)原型
SOF_DecryptData(BSTR InData, BSTR ContainerName)3.20.2 輸入項(xiàng)
InData [in] 數(shù)字信封
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
ContainerName [in] 容器名稱
3.20.3 返回值
DecryptData [out] 加密原文
3.20.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_DecryptData","InData":Encrypt_Data,"ContainerName":con_name}
Response接收 { "DecryptData" : "abc"}3.21 產(chǎn)生 P10 請求
3.21.1 函數(shù)原型
SOF_GenerateP10Request(BSTR DN, BSTR Pin, BSTR Alg, BSTR KeyLen)3.21.2 輸入項(xiàng)
DN [in] DN項(xiàng)
Pin [in] PIN碼
Alg [in] 秘鑰標(biāo)識(RSA或者SM2)
KeyLen [in] 秘鑰長度
3.21.3 返回值
P10base64 [out] P10請求
ContainerName [out] 容器名稱
3.21.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
POST發(fā)送 {"function":"SOF_GenerateP10Request","DN":DN_str,"Pin":pin_str,"Alg":Alg_str,"KeyLen":KeyLen}
Response接收 { "ContainerName" : "285E58CA51", "P10base64" : "base P10"}3.22 導(dǎo)入簽名證書
3.22.1 函數(shù)原型
SOF_importCert(BSTR SignCertbase64, BSTR ContainerName)3.22.2 輸入項(xiàng)
SignCertbase64 [in] base64編碼的簽名證書ContainerName [in] 容器名稱
3.22.3 返回值
status [out] 0為成功,其他為錯誤碼
3.22.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_importCert","SignCertbase64":cert,"ContainerName":con_name}Response接收 {"status" : 0}
3.23 獲取臨時公鑰
3.23.1 函數(shù)原型
SOF_GetTempPublicKey
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.23.2 輸入項(xiàng)
無
3.23.3 返回值
TempPublicKey [out] base64編碼的臨時公鑰3.23.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_GetTempPublicKey"}Response接收 { "TempPublicKey" : " "}3.24 導(dǎo)入加密證書
3.24.1 函數(shù)原型
SOF_importCryptoCertAndKey(BSTR CryptoCert,BSTR EncryptedPrivateKey,
BSTR sessionkey,
BSTR ContainerName)
3.24.2 輸入項(xiàng)
CryptoCert [in] 加密證書
EncryptedPrivateKey [in] 會話秘鑰保護(hù)的私鑰Sessionkey [in] 臨時公鑰保護(hù)的會話秘鑰
ContainerName [in] 容器名稱
3.24.3 返回值
status [out] 0為成功,其他為錯誤碼
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
3.24.4 函數(shù)示例
JSON數(shù)據(jù)實(shí)例
POST發(fā)送 {"function":"SOF_importCryptoCertAndKey","CryptoCert":cert,"EncryptedPrivateKey":privatekey,"EncryptedSessionKey":sessionkey,"ContainerName":con_name}
Response接收 {"status" : 0}
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
4.調(diào)用示例
4.1 插件安裝
雙擊安裝AisinoCertSrv
4.2 瀏覽器發(fā)送/接收請求
function mTokenPluginCreate_POST(json){
if(_
{
if (window.
_
}
else // code for IE6, IE5
{
_
}
}
_
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
_
_
_
}
function callback
{
//接收響應(yīng)數(shù)據(jù) www.2cto.com
//判斷對象狀態(tài)是否交互完成,如果為4則交互完成
if(_
{
//判斷對象狀態(tài)是否交互成功,如果成功則為200
if(_
{
//接收數(shù)據(jù),得到服務(wù)器輸出的純文本數(shù)據(jù)
var response_POST = _
//SOF_JSON
document.getElementById("SOF_JSON").value = response_POST;
var obj = JSON.parse(response_POST);
}
else if(_
alert(_
}
版權(quán)所有:西部CA北京分公司
SOF本地服務(wù)接口說明
else
{
alert(_
}
}
}
版權(quán)所有:西部CA北京分公司
轉(zhuǎn)載請標(biāo)注來源:http://399gm.com/
