SPB Git

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%
3.3 KB · 103 lines swift
Raw Blame History
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/// Base32 encode / decode functions13public struct Base32 {1415    /// Decode a Base32 input with the given alphabet16    ///17    /// - Parameter string: Encoded base32 input to be decoded18    /// - Parameter alphabet: Decode with the given alphabet, if nullptr ALPHABET_RFC4648 is used by default19    /// - Returns: The decoded data, can be null.20    /// - Note: ALPHABET_RFC4648 doesn't support padding in the default alphabet21    public static func decodeWithAlphabet(string: String, alphabet: String?) -> Data? {22        let stringString = TWStringCreateWithNSString(string)23        defer {24            TWStringDelete(stringString)25        }26        let alphabetString: UnsafeRawPointer?27        if let s = alphabet {28            alphabetString = TWStringCreateWithNSString(s)29        } else {30            alphabetString = nil31        }32        defer {33            if let s = alphabetString {34                TWStringDelete(s)35            }36        }37        guard let result = TWBase32DecodeWithAlphabet(stringString, alphabetString) else {38            return nil39        }40        return TWDataNSData(result)41    }4243    /// Decode a Base32 input with the default alphabet (ALPHABET_RFC4648)44    ///45    /// - Parameter string: Encoded input to be decoded46    /// - Returns: The decoded data47    /// - Note: Call TWBase32DecodeWithAlphabet with nullptr.48    public static func decode(string: String) -> Data? {49        let stringString = TWStringCreateWithNSString(string)50        defer {51            TWStringDelete(stringString)52        }53        guard let result = TWBase32Decode(stringString) else {54            return nil55        }56        return TWDataNSData(result)57    }5859    /// Encode an input to Base32 with the given alphabet60    ///61    /// - Parameter data: Data to be encoded (raw bytes)62    /// - Parameter alphabet: Encode with the given alphabet, if nullptr ALPHABET_RFC4648 is used by default63    /// - Returns: The encoded data64    /// - Note: ALPHABET_RFC4648 doesn't support padding in the default alphabet65    public static func encodeWithAlphabet(data: Data, alphabet: String?) -> String {66        let dataData = TWDataCreateWithNSData(data)67        defer {68            TWDataDelete(dataData)69        }70        let alphabetString: UnsafeRawPointer?71        if let s = alphabet {72            alphabetString = TWStringCreateWithNSString(s)73        } else {74            alphabetString = nil75        }76        defer {77            if let s = alphabetString {78                TWStringDelete(s)79            }80        }81        return TWStringNSString(TWBase32EncodeWithAlphabet(dataData, alphabetString))82    }8384    /// Encode an input to Base32 with the default alphabet (ALPHABET_RFC4648)85    ///86    /// - Parameter data: Data to be encoded (raw bytes)87    /// - Returns: The encoded data88    /// - Note: Call TWBase32EncodeWithAlphabet with nullptr.89    public static func encode(data: Data) -> String {90        let dataData = TWDataCreateWithNSData(data)91        defer {92            TWDataDelete(dataData)93        }94        return TWStringNSString(TWBase32Encode(dataData))95    }969798    init() {99    }100101102}103