问题描述
var cryptor: CValuesRef<CCCryptorRefVar>
使用 kotlin KMM,在 iosMain 项目中
我无法为加密货币初始化数据。
我需要 var 的初始化数据,因为我需要使用 func CCCryptorCreateWithMode
我试试
var cryptor: CValuesRef<CCCryptorRefVar> = memScoped { cValue() }
但是,当我在运行 func CCCryptorCreateWithMode 后获得价值
cryptor.getPointer(MemScope()).pointed.value
它总是NULL,我需要它有价值
请帮帮我。
完整代码
fun encryptOrDecryptData(data: NSData,key: Any,iv: Any): NSData? {
var status: CCCryptorStatus
if (key is NSData || key is Nsstring) {
//validate ok
} else {
println("key class type invalid (valid: NSData || Nsstring)")
return null
}
if (iv is NSData || iv is Nsstring) {
//validate ok
} else {
println("iv class type invalid (valid: NSData || Nsstring)")
return null
}
var keyData: NSMutableData?
var ivData: NSMutableData?
if (key is NSData) {
keyData = key.mutablecopy() as NSMutableData?
} else {
keyData = (key as Nsstring).dataUsingEncoding(NSUTF8StringEncoding)?.mutablecopy() as NSMutableData?
}
if (iv is NSData) {
ivData = iv.mutablecopy() as NSMutableData?
} else {
ivData = (iv as Nsstring).dataUsingEncoding(NSUTF8StringEncoding)?.mutablecopy() as NSMutableData?
}
var cryptor: CValuesRef<CCCryptorRefVar> = memScoped { cValue() }
status = CCCryptorCreateWithMode(
op = kCCEncrypt,mode = kCCModeCTR,alg = kCCAlgorithmAES128,padding = ccnopadding,iv = ivData?.bytes(),key = keyData?.bytes(),keyLength = 16,tweak = null,tweakLength = 0,numRounds = 0,options = kCCModeOptionCTR_BE,cryptorRef = cryptor)
if (status != kCCSuccess) {
println("ERROR: CCCryptorCreateWithMode error: status = " + status)
return null
}
var cryptorRef = cryptor.getPointer(MemScope()).pointed.value
if (cryptorRef != null) {
var result: NSData? = _runcryptor(cryptorRef,data)
return result
} else {
println("ERROR: cryptorRef == null")
return null
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)