module Signet.Unstable.Type.SymmetricSignature where import qualified Crypto.Hash as Hash import qualified Data.ByteArray as ByteArray import qualified Data.ByteArray.Encoding as Encoding import qualified Data.ByteString as ByteString import qualified Data.Function as Function import qualified Signet.Unstable.Exception.InvalidSymmetricSignature as InvalidSymmetricSignature import qualified Signet.Unstable.Extra.Either as Either import qualified Signet.Unstable.Extra.Maybe as Maybe newtype SymmetricSignature = MkSymmetricSignature (Hash.Digest Hash.SHA256) deriving (Int -> SymmetricSignature -> ShowS [SymmetricSignature] -> ShowS SymmetricSignature -> String (Int -> SymmetricSignature -> ShowS) -> (SymmetricSignature -> String) -> ([SymmetricSignature] -> ShowS) -> Show SymmetricSignature forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> SymmetricSignature -> ShowS showsPrec :: Int -> SymmetricSignature -> ShowS $cshow :: SymmetricSignature -> String show :: SymmetricSignature -> String $cshowList :: [SymmetricSignature] -> ShowS showList :: [SymmetricSignature] -> ShowS Show) instance Eq SymmetricSignature where == :: SymmetricSignature -> SymmetricSignature -> Bool (==) = (Digest SHA256 -> Digest SHA256 -> Bool) -> (SymmetricSignature -> Digest SHA256) -> SymmetricSignature -> SymmetricSignature -> Bool forall b c a. (b -> b -> c) -> (a -> b) -> a -> a -> c Function.on Digest SHA256 -> Digest SHA256 -> Bool forall bs1 bs2. (ByteArrayAccess bs1, ByteArrayAccess bs2) => bs1 -> bs2 -> Bool ByteArray.constEq SymmetricSignature -> Digest SHA256 unwrap unwrap :: SymmetricSignature -> Hash.Digest Hash.SHA256 unwrap :: SymmetricSignature -> Digest SHA256 unwrap (MkSymmetricSignature Digest SHA256 digest) = Digest SHA256 digest parse :: ByteString.ByteString -> Either InvalidSymmetricSignature.InvalidSymmetricSignature SymmetricSignature parse :: ByteString -> Either InvalidSymmetricSignature SymmetricSignature parse ByteString encoded = InvalidSymmetricSignature -> Maybe SymmetricSignature -> Either InvalidSymmetricSignature SymmetricSignature forall e a. e -> Maybe a -> Either e a Maybe.note (ByteString -> InvalidSymmetricSignature InvalidSymmetricSignature.MkInvalidSymmetricSignature ByteString encoded) (Maybe SymmetricSignature -> Either InvalidSymmetricSignature SymmetricSignature) -> Maybe SymmetricSignature -> Either InvalidSymmetricSignature SymmetricSignature forall a b. (a -> b) -> a -> b $ do byteString <- Either String ByteString -> Maybe ByteString forall x a. Either x a -> Maybe a Either.hush (Either String ByteString -> Maybe ByteString) -> Either String ByteString -> Maybe ByteString forall a b. (a -> b) -> a -> b $ Base -> ByteString -> Either String ByteString forall bin bout. (ByteArrayAccess bin, ByteArray bout) => Base -> bin -> Either String bout Encoding.convertFromBase Base Encoding.Base64 ByteString encoded MkSymmetricSignature <$> Hash.digestFromByteString (byteString :: ByteString.ByteString) render :: SymmetricSignature -> ByteString.ByteString render :: SymmetricSignature -> ByteString render = Base -> Digest SHA256 -> ByteString forall bin bout. (ByteArrayAccess bin, ByteArray bout) => Base -> bin -> bout Encoding.convertToBase Base Encoding.Base64 (Digest SHA256 -> ByteString) -> (SymmetricSignature -> Digest SHA256) -> SymmetricSignature -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . SymmetricSignature -> Digest SHA256 unwrap