在 Swift 中使用 OpenSSL BN_hex2bn 4 - 如何构建句柄
Use of OpenSSL BN_hex2bn in Swift 4 - How to build the handle
我要把int BN_hex2bn(BIGNUM **a, const char *str);
改成Swiftclass;我实际上准备了以下代码:
class Test {
var N : UnsafeMutablePointer<BIGNUM>
var N_hex: String = "...HEX VALUE...";
init() {
self.N = BN_new()
}
use() {
var Nhandle: UnsafeMutablePointer<UnsafeMutablePointer<BIGNUM>?>? = [???]
BN_hex2bn(Nhandle, self.N_hex);
}
}
好吧,如您所知,我在初始化句柄时遇到了一些问题! :-)
更好:在Swift中使用这种功能是正确的方法吗?有不同的方法吗?如何初始化句柄?
感谢您的解答!
BN_hex2bn()
期望 BIGNUM *
的地址作为第一个参数,在 Swift 中是 UnsafeMutablePointer<BIGNUM>?
变量的地址。您“仅”必须声明该变量(可选值自动用 nil
初始化)并将其作为带有 &
的输入参数传递给函数。示例:
let hexString = "123456789abcdef"
var bn: UnsafeMutablePointer<BIGNUM>?
BN_hex2bn(&bn, hexString)
// Do something with `bn` ...
// Eventually free the memory:
BN_free(bn)
如果你把它包装在Swift class中,那么释放资源可以在deinit
方法中完成:
class BN {
var bn: UnsafeMutablePointer<BIGNUM>?
init(hexString: String) {
BN_hex2bn(&bn, hexString)
}
deinit {
if let bn = bn { BN_free(bn) }
}
}
我要把int BN_hex2bn(BIGNUM **a, const char *str);
改成Swiftclass;我实际上准备了以下代码:
class Test {
var N : UnsafeMutablePointer<BIGNUM>
var N_hex: String = "...HEX VALUE...";
init() {
self.N = BN_new()
}
use() {
var Nhandle: UnsafeMutablePointer<UnsafeMutablePointer<BIGNUM>?>? = [???]
BN_hex2bn(Nhandle, self.N_hex);
}
}
好吧,如您所知,我在初始化句柄时遇到了一些问题! :-)
更好:在Swift中使用这种功能是正确的方法吗?有不同的方法吗?如何初始化句柄?
感谢您的解答!
BN_hex2bn()
期望 BIGNUM *
的地址作为第一个参数,在 Swift 中是 UnsafeMutablePointer<BIGNUM>?
变量的地址。您“仅”必须声明该变量(可选值自动用 nil
初始化)并将其作为带有 &
的输入参数传递给函数。示例:
let hexString = "123456789abcdef"
var bn: UnsafeMutablePointer<BIGNUM>?
BN_hex2bn(&bn, hexString)
// Do something with `bn` ...
// Eventually free the memory:
BN_free(bn)
如果你把它包装在Swift class中,那么释放资源可以在deinit
方法中完成:
class BN {
var bn: UnsafeMutablePointer<BIGNUM>?
init(hexString: String) {
BN_hex2bn(&bn, hexString)
}
deinit {
if let bn = bn { BN_free(bn) }
}
}