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.1 KB · 81 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/// Tezos message signing, verification and utilities.13public struct TezosMessageSigner {1415    /// Implement format input as described in https://tezostaquito.io/docs/signing/16    ///17    /// - Parameter message: message to format e.g: Hello, World18    /// - Parameter dAppUrl: the app url, e.g: testUrl19    /// - Returns:s the formatted message as a string20    public static func formatMessage(message: String, url: String) -> String {21        let messageString = TWStringCreateWithNSString(message)22        defer {23            TWStringDelete(messageString)24        }25        let urlString = TWStringCreateWithNSString(url)26        defer {27            TWStringDelete(urlString)28        }29        return TWStringNSString(TWTezosMessageSignerFormatMessage(messageString, urlString))30    }3132    /// Implement input to payload as described in: https://tezostaquito.io/docs/signing/33    ///34    /// - Parameter message: formatted message to be turned into an hex payload35    /// - Returns: the hexpayload of the formated message as a hex string36    public static func inputToPayload(message: String) -> String {37        let messageString = TWStringCreateWithNSString(message)38        defer {39            TWStringDelete(messageString)40        }41        return TWStringNSString(TWTezosMessageSignerInputToPayload(messageString))42    }4344    /// Sign a message as described in https://tezostaquito.io/docs/signing/45    ///46    /// - Parameter privateKey:: the private key used for signing47    /// - Parameter message:: A custom message payload (hex) which is input to the signing.48    /// - Returns:s the signature, Hex-encoded. On invalid input empty string is returned. Returned object needs to be deleted after use.49    public static func signMessage(privateKey: PrivateKey, message: String) -> String {50        let messageString = TWStringCreateWithNSString(message)51        defer {52            TWStringDelete(messageString)53        }54        return TWStringNSString(TWTezosMessageSignerSignMessage(privateKey.rawValue, messageString))55    }5657    /// Verify signature for a message as described in https://tezostaquito.io/docs/signing/58    ///59    /// - Parameter pubKey:: pubKey that will verify the message from the signature60    /// - Parameter message:: the message signed as a payload (hex)61    /// - Parameter signature:: in Base58-encoded form.62    /// - Returns:s false on any invalid input (does not throw), true if the message can be verified from the signature63    public static func verifyMessage(pubKey: PublicKey, message: String, signature: String) -> Bool {64        let messageString = TWStringCreateWithNSString(message)65        defer {66            TWStringDelete(messageString)67        }68        let signatureString = TWStringCreateWithNSString(signature)69        defer {70            TWStringDelete(signatureString)71        }72        return TWTezosMessageSignerVerifyMessage(pubKey.rawValue, messageString, signatureString)73    }747576    init() {77    }787980}81