module Signet.Unstable.Type.AsymmetricSignature where import qualified Crypto.Error as Error import qualified Crypto.PubKey.Ed25519 as Ed25519 import qualified Data.ByteArray.Encoding as Encoding import qualified Data.ByteString as ByteString import qualified Signet.Unstable.Exception.InvalidAsymmetricSignature as InvalidAsymmetricSignature import qualified Signet.Unstable.Extra.Either as Either import qualified Signet.Unstable.Extra.Maybe as Maybe newtype AsymmetricSignature = MkAsymmetricSignature Ed25519.Signature deriving (AsymmetricSignature -> AsymmetricSignature -> Bool (AsymmetricSignature -> AsymmetricSignature -> Bool) -> (AsymmetricSignature -> AsymmetricSignature -> Bool) -> Eq AsymmetricSignature forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: AsymmetricSignature -> AsymmetricSignature -> Bool == :: AsymmetricSignature -> AsymmetricSignature -> Bool $c/= :: AsymmetricSignature -> AsymmetricSignature -> Bool /= :: AsymmetricSignature -> AsymmetricSignature -> Bool Eq, Int -> AsymmetricSignature -> ShowS [AsymmetricSignature] -> ShowS AsymmetricSignature -> String (Int -> AsymmetricSignature -> ShowS) -> (AsymmetricSignature -> String) -> ([AsymmetricSignature] -> ShowS) -> Show AsymmetricSignature forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> AsymmetricSignature -> ShowS showsPrec :: Int -> AsymmetricSignature -> ShowS $cshow :: AsymmetricSignature -> String show :: AsymmetricSignature -> String $cshowList :: [AsymmetricSignature] -> ShowS showList :: [AsymmetricSignature] -> ShowS Show) unwrap :: AsymmetricSignature -> Ed25519.Signature unwrap :: AsymmetricSignature -> Signature unwrap (MkAsymmetricSignature Signature signature) = Signature signature parse :: ByteString.ByteString -> Either InvalidAsymmetricSignature.InvalidAsymmetricSignature AsymmetricSignature parse :: ByteString -> Either InvalidAsymmetricSignature AsymmetricSignature parse ByteString encoded = InvalidAsymmetricSignature -> Maybe AsymmetricSignature -> Either InvalidAsymmetricSignature AsymmetricSignature forall e a. e -> Maybe a -> Either e a Maybe.note (ByteString -> InvalidAsymmetricSignature InvalidAsymmetricSignature.MkInvalidAsymmetricSignature ByteString encoded) (Maybe AsymmetricSignature -> Either InvalidAsymmetricSignature AsymmetricSignature) -> Maybe AsymmetricSignature -> Either InvalidAsymmetricSignature AsymmetricSignature 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 fmap MkAsymmetricSignature . Error.maybeCryptoError $ Ed25519.signature (byteString :: ByteString.ByteString) render :: AsymmetricSignature -> ByteString.ByteString render :: AsymmetricSignature -> ByteString render = Base -> Signature -> ByteString forall bin bout. (ByteArrayAccess bin, ByteArray bout) => Base -> bin -> bout Encoding.convertToBase Base Encoding.Base64 (Signature -> ByteString) -> (AsymmetricSignature -> Signature) -> AsymmetricSignature -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . AsymmetricSignature -> Signature unwrap