Ai
3 Star 0 Fork 0

河北素数信息安全有限公司/crypto-hw-std-interface

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
skf_apis.go 9.46 KB
一键复制 编辑 原始数据 按行查看 历史
zjh0125 提交于 2025-05-16 15:56 +08:00 . feat:生成签名密钥对、导入加密密钥对;
package skf
/*
#cgo CFLAGS: -I./include
#cgo LDFLAGS: -lSKFInterface
#include "skf_type_def.h"
#include "skf_interface.h"
*/
import "C"
import (
"unsafe"
)
// waitForDevEvent 等待设备插拔事件
func waitForDevEvent(devName *byte, devNameLen, event *uint32) uint32 {
return uint32(C.SKF_WaitForDevEvent(
(*C.uchar)(unsafe.Pointer(devName)),
(*C.uint)(unsafe.Pointer(devNameLen)),
(*C.uint)(unsafe.Pointer(event))))
}
// cancelWaitForDevEvent 取消等待设备插拔事件
func cancelWaitForDevEvent() uint32 {
return uint32(C.SKF_CancelWaitForDevEvent())
}
// enumDev 枚举设备
func enumDev(bPresent int32, nameList *byte, nameListLen *uint32) uint32 {
return uint32(C.SKF_EnumDev(
C.long(bPresent),
(*C.uchar)(unsafe.Pointer(nameList)),
(*C.uint)(unsafe.Pointer(nameListLen))))
}
// connectDev 连接设备
func connectDev(devName *byte, devHandle *unsafe.Pointer) uint32 {
return uint32(C.SKF_ConnectDev(
(*C.uchar)(unsafe.Pointer(devName)),
devHandle))
}
// disConnectDev 断开连接
// 如果该设备已被锁定,函数首先解锁该设备。断开连接操作并不影响设备的权限状态。
func disConnectDev(dev unsafe.Pointer) uint32 {
return uint32(C.SKF_DisConnectDev(dev))
}
// getDevState 获取设备状态
func getDevState(devName *byte, devState *uint32) uint32 {
return uint32(C.SKF_GetDevState(
(*C.uchar)(unsafe.Pointer(devName)),
(*C.uint)(unsafe.Pointer(devState))))
}
// setLabel 设置设备标签
func setLabel(devHandle unsafe.Pointer, label *byte) uint32 {
return uint32(C.SKF_SetLabel(
devHandle,
(*C.uchar)(unsafe.Pointer(label))))
}
// getDevInfo 获取设备信息
func getDevInfo(devHandle unsafe.Pointer, devInfo *DeviceInfo) uint32 {
return uint32(C.SKF_GetDevInfo(
devHandle,
(*C.DEVINFO)(unsafe.Pointer(devInfo))))
}
// lockDev 锁定设备
func lockDev(devHandle unsafe.Pointer, timeout uint32) uint32 {
return uint32(C.SKF_LockDev(devHandle, C.uint(timeout)))
}
// unlockDev 解锁设备
func unlockDev(devHandle unsafe.Pointer) uint32 {
return uint32(C.SKF_UnlockDev(devHandle))
}
// changeDevAuthKey 修改设备认证密钥
func changeDevAuthKey(devHandle unsafe.Pointer, keyValue *byte, keyLength uint32) uint32 {
return uint32(C.SKF_ChangeDevAuthKey(
devHandle,
(*C.uchar)(unsafe.Pointer(keyValue)),
C.uint(keyLength)))
}
// devAuth 设备认证
func devAuth(devHandle unsafe.Pointer, authData *byte, length uint32) uint32 {
return uint32(C.SKF_DevAuth(
devHandle,
(*C.uchar)(unsafe.Pointer(authData)),
C.uint(length)))
}
// changePIN 修改PIN码
func changePIN(appHandle unsafe.Pointer, pinType uint32, oldPin *byte, newPin *byte, retryCount *uint32) uint32 {
return uint32(C.SKF_ChangePIN(
appHandle,
C.uint(pinType),
(*C.uchar)(unsafe.Pointer(oldPin)),
(*C.uchar)(unsafe.Pointer(newPin)),
(*C.uint)(unsafe.Pointer(retryCount))))
}
// getPINInfo 获取PIN信息
func getPINInfo(appHandle unsafe.Pointer, pinType uint32, maxRetryCount *uint32, remainRetryCount *uint32, defaultPin *int32) uint32 {
return uint32(C.SKF_GetPINInfo(
appHandle,
C.uint(pinType),
(*C.uint)(unsafe.Pointer(maxRetryCount)),
(*C.uint)(unsafe.Pointer(remainRetryCount)),
(*C.long)(unsafe.Pointer(defaultPin))))
}
// verifyPIN 验证PIN码
func verifyPIN(appHandle unsafe.Pointer, pinType uint32, pin *byte, retryCount *uint32) uint32 {
return uint32(C.SKF_VerifyPIN(
appHandle,
C.uint(pinType),
(*C.uchar)(unsafe.Pointer(pin)),
(*C.uint)(unsafe.Pointer(retryCount))))
}
// unblockPIN 解锁PIN
func unblockPIN(appHandle unsafe.Pointer, adminPin *byte, userPin *byte, retryCount *uint32) uint32 {
return uint32(C.SKF_UnblockPIN(
appHandle,
(*C.uchar)(unsafe.Pointer(adminPin)),
(*C.uchar)(unsafe.Pointer(userPin)),
(*C.uint)(unsafe.Pointer(retryCount))))
}
// clearSecureState 清除应用安全状态
func clearSecureState(appHandle unsafe.Pointer) uint32 {
return uint32(C.SKF_ClearSecureState(appHandle))
}
// createApplication 创建应用
func createApplication(
devHandle unsafe.Pointer,
appName,
adminPin *byte,
adminPinRetryCount uint32,
userPin *byte,
userPinRetryCount,
createFileRights uint32,
appHandle *unsafe.Pointer) uint32 {
return uint32(C.SKF_CreateApplication(
devHandle,
(*C.uchar)(unsafe.Pointer(appName)),
(*C.uchar)(unsafe.Pointer(adminPin)),
C.uint(adminPinRetryCount),
(*C.uchar)(unsafe.Pointer(userPin)),
C.uint(userPinRetryCount),
C.uint(createFileRights),
appHandle))
}
// enumApplication 枚举应用
func enumApplication(devHandle unsafe.Pointer, appName *byte, size *uint32) uint32 {
return uint32(C.SKF_EnumApplication(
devHandle,
(*C.uchar)(unsafe.Pointer(appName)),
(*C.uint)(unsafe.Pointer(size))))
}
// deleteApplication 删除应用
func deleteApplication(devHandle unsafe.Pointer, appName *byte) uint32 {
return uint32(C.SKF_DeleteApplication(
devHandle,
(*C.uchar)(unsafe.Pointer(appName))))
}
// openApplication 打开应用
func openApplication(devHandle unsafe.Pointer, appName *byte, appHandle *unsafe.Pointer) uint32 {
return uint32(C.SKF_OpenApplication(
devHandle,
(*C.uchar)(unsafe.Pointer(appName)),
appHandle))
}
// closeApplication 关闭应用
func closeApplication(appHandle unsafe.Pointer) uint32 {
return uint32(C.SKF_CloseApplication(appHandle))
}
// createContainer 创建容器
func createContainer(appHandle unsafe.Pointer, containerName *byte, containerHandle *unsafe.Pointer) uint32 {
return uint32(C.SKF_CreateContainer(
appHandle,
(*C.uchar)(unsafe.Pointer(containerName)),
containerHandle))
}
// deleteContainer 删除容器
func deleteContainer(appHandle unsafe.Pointer, containerName *byte) uint32 {
return uint32(C.SKF_DeleteContainer(
appHandle,
(*C.uchar)(unsafe.Pointer(containerName))))
}
// openContainer 打开容器
func openContainer(appHandle unsafe.Pointer, containerName *byte, containerHandle *unsafe.Pointer) uint32 {
return uint32(C.SKF_OpenContainer(
appHandle,
(*C.uchar)(unsafe.Pointer(containerName)),
containerHandle))
}
// closeContainer 关闭容器
func closeContainer(containerHandle unsafe.Pointer) uint32 {
return uint32(C.SKF_CloseContainer(containerHandle))
}
// enumContainer 枚举容器
func enumContainer(appHandle unsafe.Pointer, containerName *byte, size *uint32) uint32 {
return uint32(C.SKF_EnumContainer(
appHandle,
(*C.uchar)(unsafe.Pointer(containerName)),
(*C.uint)(unsafe.Pointer(size))))
}
// getContainerType 获取容器类型
func getContainerType(containerHandle unsafe.Pointer, containerType *uint32) uint32 {
return uint32(C.SKF_GetContainerType(
containerHandle,
(*C.uint)(unsafe.Pointer(containerType))))
}
// importCertificate 导入数字证书
func importCertificate(containerHandle unsafe.Pointer, signFlag int32, cert *byte, certLen uint32) uint32 {
return uint32(C.SKF_ImportCertificate(
containerHandle,
C.long(signFlag),
(*C.uchar)(unsafe.Pointer(cert)),
C.uint(certLen)))
}
// exportCertificate 导出数字证书
func exportCertificate(containerHandle unsafe.Pointer, signFlag int32, cert *byte, certLen *uint32) uint32 {
return uint32(C.SKF_ExportCertificate(
containerHandle,
C.long(signFlag),
(*C.uchar)(unsafe.Pointer(cert)),
(*C.uint)(certLen)))
}
// createFile 创建文件
func createFile(appHandle unsafe.Pointer, fileName *byte, fileSize, readRights, writeRights uint32) uint32 {
return uint32(C.SKF_CreateFile(
appHandle,
(*C.uchar)(unsafe.Pointer(fileName)),
C.uint(fileSize),
C.uint(readRights),
C.uint(writeRights)))
}
// deleteFile 删除文件
func deleteFile(appHandle unsafe.Pointer, fileName *byte) uint32 {
return uint32(C.SKF_DeleteFile(appHandle, (*C.uchar)(unsafe.Pointer(fileName))))
}
// enumFiles 枚举文件
func enumFiles(appHandle unsafe.Pointer, fileList *byte, size *uint32) uint32 {
return uint32(C.SKF_EnumFiles(
appHandle,
(*C.uchar)(unsafe.Pointer(fileList)),
(*C.uint)(unsafe.Pointer(size))))
}
// getFileInfo 获取文件信息
func getFileInfo(appHandle unsafe.Pointer, fileName *byte, fileInfo *FileAttribute) uint32 {
return uint32(C.SKF_GetFileInfo(
appHandle,
(*C.uchar)(unsafe.Pointer(fileName)),
(*C.FILEATTRIBUTE)(unsafe.Pointer(fileInfo))))
}
// readFile 读文件
func readFile(appHandle unsafe.Pointer, fileName *byte, offset, size uint32, outData *byte, outLen *uint32) uint32 {
return uint32(C.SKF_ReadFile(
appHandle,
(*C.uchar)(unsafe.Pointer(fileName)),
C.uint(offset),
C.uint(size),
(*C.uchar)(unsafe.Pointer(outData)),
(*C.uint)(unsafe.Pointer(outLen))))
}
// writeFile 写文件
func writeFile(appHandle unsafe.Pointer, fileName *byte, offset uint32, inData *byte, size uint32) uint32 {
return uint32(C.SKF_WriteFile(
appHandle,
(*C.uchar)(unsafe.Pointer(fileName)),
C.uint(offset),
(*C.uchar)(unsafe.Pointer(inData)),
C.uint(size)))
}
// genRandom 生成随机数
func genRandom(devHandle unsafe.Pointer, random *byte, length uint32) uint32 {
return uint32(C.SKF_GenRandom(
devHandle,
(*C.uchar)(unsafe.Pointer(random)),
C.uint(length)))
}
// closeHandle 关闭密码对象句柄
func closeHandle(handle unsafe.Pointer) uint32 {
return uint32(C.SKF_CloseHandle(handle))
}
// genECCKeyPair 生成ECC签名密钥对
func genECCKeyPair(containerHandle unsafe.Pointer, algId uint32, pubKey *ECCPublicKeyBlob) uint32 {
return uint32(C.SKF_GenECCKeyPair(
containerHandle,
C.uint(algId),
(*C.ECCPUBLICKEYBLOB)(unsafe.Pointer(pubKey))))
}
// importECCKeyPair 导入ECC加密密钥对
func importECCKeyPair(containerHandle unsafe.Pointer, keyBlob *EnvelopedKeyBlob) uint32 {
return uint32(C.SKF_ImportECCKeyPair(
containerHandle,
(*C.ENVELOPEDKEYBLOB)(unsafe.Pointer(keyBlob))))
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/sushuxinan/crypto-hw-std-interface.git
git@gitee.com:sushuxinan/crypto-hw-std-interface.git
sushuxinan
crypto-hw-std-interface
crypto-hw-std-interface
skf/v0.0.6

搜索帮助