import Foundation

/**
 An authenticated message to or from the device.
 */
struct SignedMessage: Equatable, Hashable {
    
    /// The message authentication code for the message (32 bytes)
    let mac: Data

    /// The message content
    let message: Message

    /**
     Create an authenticated message
     - Parameter mac: The message authentication code
     - Parameter content: The message content
     */
    init(mac: Data, message: Message) {
        self.mac = mac
        self.message = message
    }
}

extension SignedMessage: Codable {
    
    enum CodingKeys: Int, CodingKey {
        case mac = 1
        case message = 2
    }
}
