philips-software/cogito

View on GitHub
workspaces/cogito-ios-app/Cogito/Telepath/TelepathError.swift

Summary

Maintainability
A
2 hrs
Test Coverage
A
100%
protocol TelepathError: Error {
    var code: Int { get }
    var message: String { get }
}

enum SignTransactionError: Int, TelepathError {
    case invalidTransaction = 1000
    case signingFailed
    case userRejected
    case unknownIdentity

    var code: Int { return self.rawValue }

    var message: String {
        switch self {
        case .invalidTransaction: return "missing or invalid field(s) in transaction data"
        case .signingFailed: return "could not sign the transaction"
        case .userRejected: return "user rejected signing request"
        case .unknownIdentity: return "signature requested for unknown identity"
        }
    }
}

enum AttestationError: Int, TelepathError {
    case invalidRealmUrl = 2000
    case invalidConfiguration
    case userDeniedAccess
    case userCancelledLogin

    var code: Int { return self.rawValue }

    var message: String {
        switch self {
        case .invalidRealmUrl: return "invalid realm URL"
        case .invalidConfiguration: return "invalid configuration"
        case .userDeniedAccess: return "user denied access"
        case .userCancelledLogin: return "user cancelled login"
        }
    }
}

enum EncryptionError: Int, TelepathError {
    case tagMissing = 3000
    case keyNotFound
    case cipherTextMissing
    case cipherTextInvalid
    case decryptionFailed

    var code: Int { return self.rawValue }

    var message: String {
        switch self {
        case .tagMissing: return "request parameter 'tag' is missing"
        case .keyNotFound: return "no key with requested tag is found"
        case .cipherTextMissing: return "request parameter 'cipherText' is missing"
        case .cipherTextInvalid: return "request parameter 'cipherText' is not a valid hex string"
        case .decryptionFailed: return "unable to decrypt"
        }
    }
}