module Network.EAP.Types where
import Data.ByteString.Lazy.Char8 (ByteString)
import Data.Data (Data)
import Data.Word (Word8)
data Packet = Packet { getPacketType :: PacketType,
getPacketId :: Word8,
getPacketMessage :: Maybe Message }
deriving (Show, Eq, Data)
data PacketType = RequestPacket
| ResponsePacket
| SuccessPacket
| FailurePacket
deriving (Show, Eq, Data)
instance Enum PacketType where
toEnum 1 = RequestPacket
toEnum 2 = ResponsePacket
toEnum 3 = SuccessPacket
toEnum 4 = FailurePacket
toEnum n = error $ "Invalid EAP packet type " ++ show n
fromEnum RequestPacket = 1
fromEnum ResponsePacket = 2
fromEnum SuccessPacket = 3
fromEnum FailurePacket = 4
data Message = IdentityMessage { getIdentityMessage :: ByteString }
| NotificationMessage { getNotificationMessage :: ByteString }
| NakMessage { getAuthenticationType :: Word8 }
| MD5ChallengeMessage { getMD5ChallengeValue :: ByteString,
getMD5ChallengeName :: ByteString }
| OTPMessage { getOTPMessage :: ByteString }
| GenericTokenCardMessage { getGenericTokenCardMessage :: ByteString }
deriving (Show, Eq, Data)