我有一个 Safenet 5110 加密狗。我正在使用 MacOS ventura 13.2.1(带有 Swift 5.7 和 Xcode 14.2)。我已经下载了驱动程序以使用加密狗(Safenet 身份验证令牌 - SAC)进行身份验证。在那里,我找到了
libeTPkcs11.dylib
,可以用来与他们的加密狗进行通信。
这是我的代码:
import Foundation
let pkcs11LibPath = "/usr/local/lib/libeTPkcs11.dylib"
let pkcs11LibHandle = dlopen(pkcs11LibPath, RTLD_NOW)
if pkcs11LibHandle == nil {
let errorMsg = String(cString: dlerror())
print("Failed to load PKCS#11 library: \(errorMsg)")
exit(1)
}
// Get a pointer to the C_GetInfo function
let cGetInfoPtr = dlsym(pkcs11LibHandle, "C_GetInfo")
typealias C_GetInfo_Type = @convention(c) (UnsafeMutableRawPointer?, UnsafeMutablePointer<CK_INFO>?) -> CK_RV
let cGetInfo = unsafeBitCast(cGetInfoPtr, to: C_GetInfo_Type.self)
// Call the C_GetInfo function to get information about the token
var info = CK_INFO()
let rv = cGetInfo(nil, &info)
if rv != CKR_OK {
print("Failed to get token info: \(rv)")
exit(1)
}
print("Manufacturer ID: \(String(cString: &info.manufacturerID))")
print("Model: \(String(cString: &info.model))")
print("Serial number: \(String(cString: &info.serialNumber))")
我尝试编译代码时出现以下错误:
我认为,这些来自 OASIS 规范的 pkcs11.h 头文件。
我创建了一个桥接头
caclient-Bridging-Header.h
。我在那里包含了文件pkcs11.h
。但我认为 xcode 将头文件识别为 objective-c 头文件(不是 c99 头文件)。