diff options
Diffstat (limited to 'Crypto.hs')
-rw-r--r-- | Crypto.hs | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -48,7 +48,7 @@ toSign = val . hashValue . hashExceptSignature -- | Verifiy the signature of a Signed value. verifySigned :: Signed v => SigVerifier -> v -> Bool -verifySigned (SigVerifier verifier) v = +verifySigned (SigVerifier _ verifier) v = case getSignature v of Ed25519Signature (Val s) -> case Ed25519.signature s of @@ -56,21 +56,27 @@ verifySigned (SigVerifier verifier) v = CryptoFailed _ -> False OtherSignature _ -> False -data SigVerifier = SigVerifier (B.ByteString -> Ed25519.Signature -> Bool) +data SigVerifier = SigVerifier Int (B.ByteString -> Ed25519.Signature -> Bool) + +instance Show SigVerifier where + show (SigVerifier n _) = "SigVerifier (" ++ show n ++ ")" mkSigVerifier :: PublicKey -> SigVerifier mkSigVerifier (PublicKey (Val pk)) = case Ed25519.publicKey pk of - CryptoPassed pk' -> SigVerifier (Ed25519.verify pk') + CryptoPassed pk' -> SigVerifier 1 (Ed25519.verify pk') CryptoFailed _ -> mempty instance Monoid SigVerifier where - mempty = SigVerifier $ \_b _s -> False - mappend (SigVerifier a) (SigVerifier b) = - SigVerifier $ \d s -> b d s || a d s + mempty = SigVerifier 0 $ \_b _s -> False + mappend (SigVerifier na a) (SigVerifier nb b) = + SigVerifier (na+nb) $ \d s -> b d s || a d s data MySessionKey = MySessionKey Ed25519.SecretKey Ed25519.PublicKey +instance Show MySessionKey where + show _ = "<MySessionKey>" + genMySessionKey :: IO MySessionKey genMySessionKey = do -- Crypto.Random.Entropy may use rdrand, or /dev/random. |