- RevueSDK
- FrameCryptor
Protocol
FrameCryptor
Frame crypto 加解密器(FrameCryptor 版)。
protocol FrameCryptor : AnyObjectOverview
每幀「編碼後、tox 送出前」再套一層自訂加密。conform 此 protocol、用純 Swift + Data 實作演算法,透過 Revue.shared.setFrameCryptor(_:) 安裝——不需碰 @convention(c) callback、裸指標或手動記憶體管理(SDK 管記憶體)。
相對於 C callback 版(Revue.setFrameCrypto(encrypt:decrypt:getMaxSize:userData:), 零複製、記憶體由 App 管),此版每幀多一次 Data 複製,換取不會寫壞記憶體。 兩版底層是同一個 C API,後安裝的蓋掉先安裝的。
雙端演算法 + 金鑰須一致;換金鑰須自行 out-of-band 協調(SDK 不參與)。
加/解密回 nil=該幀失敗 → SDK 丟掉該幀、不中斷通話。成敗以這裡的回傳值為準(
FrameCryptoError只是輔助診斷、不保證送達)。
Topics
Instance Methods
func decrypt(mediaType: FrameMediaType, ciphertext: Data, counter: UInt64) -> Data?解密一幀。回
nil代表失敗(drop 該幀)。func encrypt(mediaType: FrameMediaType, plaintext: Data) -> (ciphertext: Data, counter: UInt64)?加密一幀。回
nil代表失敗(drop 該幀)。func maxSize(mediaType: FrameMediaType, plaintextSize: Int) -> Int查詢密文上限(≥ encrypt 實際輸出大小)。XOR/AES-CTR 回
plaintextSize; AES-GCM 等有 auth tag 回plaintextSize + 16。對相同輸入須 deterministic。