spb/os-vault Public
Self-custody, multi-chain crypto wallet for macOS. One recovery phrase, six chain families, zero API keys — nothing leaves your Mac.
Swift 96%
Shell 3.4%
Makefile 0.6%
1import WalletCoreC2import Foundation3// SPDX-License-Identifier: Apache-2.04//5// Copyright © 2017 Trust Wallet.6//7// This is a GENERATED FILE, changes made here WILL BE LOST.8//910import Foundation1112/// AES encryption/decryption methods.13public struct AES {1415 /// Encrypts a block of Data using AES in Cipher Block Chaining (CBC) mode.16 ///17 /// - Parameter key: encryption key Data, must be 16, 24, or 32 bytes long.18 /// - Parameter data: Data to encrypt.19 /// - Parameter iv: initialization vector.20 /// - Parameter mode: padding mode.21 /// - Returns: encrypted Data.22 public static func encryptCBC(key: Data, data: Data, iv: Data, mode: AESPaddingMode) -> Data? {23 let keyData = TWDataCreateWithNSData(key)24 defer {25 TWDataDelete(keyData)26 }27 let dataData = TWDataCreateWithNSData(data)28 defer {29 TWDataDelete(dataData)30 }31 let ivData = TWDataCreateWithNSData(iv)32 defer {33 TWDataDelete(ivData)34 }35 guard let result = TWAESEncryptCBC(keyData, dataData, ivData, TWAESPaddingMode(rawValue: mode.rawValue)) else {36 return nil37 }38 return TWDataNSData(result)39 }4041 /// Decrypts a block of data using AES in Cipher Block Chaining (CBC) mode.42 ///43 /// - Parameter key: decryption key Data, must be 16, 24, or 32 bytes long.44 /// - Parameter data: Data to decrypt.45 /// - Parameter iv: initialization vector Data.46 /// - Parameter mode: padding mode.47 /// - Returns: decrypted Data.48 public static func decryptCBC(key: Data, data: Data, iv: Data, mode: AESPaddingMode) -> Data? {49 let keyData = TWDataCreateWithNSData(key)50 defer {51 TWDataDelete(keyData)52 }53 let dataData = TWDataCreateWithNSData(data)54 defer {55 TWDataDelete(dataData)56 }57 let ivData = TWDataCreateWithNSData(iv)58 defer {59 TWDataDelete(ivData)60 }61 guard let result = TWAESDecryptCBC(keyData, dataData, ivData, TWAESPaddingMode(rawValue: mode.rawValue)) else {62 return nil63 }64 return TWDataNSData(result)65 }6667 /// Encrypts a block of data using AES in Counter (CTR) mode.68 ///69 /// - Parameter key: encryption key Data, must be 16, 24, or 32 bytes long.70 /// - Parameter data: Data to encrypt.71 /// - Parameter iv: initialization vector Data.72 /// - Returns: encrypted Data.73 public static func encryptCTR(key: Data, data: Data, iv: Data) -> Data? {74 let keyData = TWDataCreateWithNSData(key)75 defer {76 TWDataDelete(keyData)77 }78 let dataData = TWDataCreateWithNSData(data)79 defer {80 TWDataDelete(dataData)81 }82 let ivData = TWDataCreateWithNSData(iv)83 defer {84 TWDataDelete(ivData)85 }86 guard let result = TWAESEncryptCTR(keyData, dataData, ivData) else {87 return nil88 }89 return TWDataNSData(result)90 }9192 /// Decrypts a block of data using AES in Counter (CTR) mode.93 ///94 /// - Parameter key: decryption key Data, must be 16, 24, or 32 bytes long.95 /// - Parameter data: Data to decrypt.96 /// - Parameter iv: initialization vector Data.97 /// - Returns: decrypted Data.98 public static func decryptCTR(key: Data, data: Data, iv: Data) -> Data? {99 let keyData = TWDataCreateWithNSData(key)100 defer {101 TWDataDelete(keyData)102 }103 let dataData = TWDataCreateWithNSData(data)104 defer {105 TWDataDelete(dataData)106 }107 let ivData = TWDataCreateWithNSData(iv)108 defer {109 TWDataDelete(ivData)110 }111 guard let result = TWAESDecryptCTR(keyData, dataData, ivData) else {112 return nil113 }114 return TWDataNSData(result)115 }116117118 init() {119 }120121122}123