| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Cardano.Crypto.DSIGNM.Class
Description
Abstract digital signatures.
Synopsis
- class (Typeable v, Show (VerKeyDSIGNM v), Eq (VerKeyDSIGNM v), Show (SignKeyDSIGNM v), Show (SigDSIGNM v), Eq (SigDSIGNM v), NoThunks (SigDSIGNM v), NoThunks (SignKeyDSIGNM v), NoThunks (VerKeyDSIGNM v), KnownNat (SeedSizeDSIGNM v), KnownNat (SizeVerKeyDSIGNM v), KnownNat (SizeSignKeyDSIGNM v), KnownNat (SizeSigDSIGNM v)) => DSIGNMAlgorithmBase v where
- type SeedSizeDSIGNM v :: Nat
- type SizeVerKeyDSIGNM v :: Nat
- type SizeSignKeyDSIGNM v :: Nat
- type SizeSigDSIGNM v :: Nat
- data VerKeyDSIGNM v :: Type
- data SignKeyDSIGNM v :: Type
- data SigDSIGNM v :: Type
- type ContextDSIGNM v :: Type
- type SignableM v :: Type -> Constraint
- algorithmNameDSIGNM :: proxy v -> String
- hashVerKeyDSIGNM :: HashAlgorithm h => VerKeyDSIGNM v -> Hash h (VerKeyDSIGNM v)
- verifyDSIGNM :: (SignableM v a, HasCallStack) => ContextDSIGNM v -> VerKeyDSIGNM v -> a -> SigDSIGNM v -> Either String ()
- rawSerialiseVerKeyDSIGNM :: VerKeyDSIGNM v -> ByteString
- rawSerialiseSigDSIGNM :: SigDSIGNM v -> ByteString
- rawDeserialiseVerKeyDSIGNM :: ByteString -> Maybe (VerKeyDSIGNM v)
- rawDeserialiseSigDSIGNM :: ByteString -> Maybe (SigDSIGNM v)
- class (DSIGNMAlgorithmBase v, Monad m) => DSIGNMAlgorithm m v where
- deriveVerKeyDSIGNM :: SignKeyDSIGNM v -> m (VerKeyDSIGNM v)
- signDSIGNM :: (SignableM v a, HasCallStack) => ContextDSIGNM v -> a -> SignKeyDSIGNM v -> m (SigDSIGNM v)
- genKeyDSIGNM :: MLockedSeed (SeedSizeDSIGNM v) -> m (SignKeyDSIGNM v)
- cloneKeyDSIGNM :: SignKeyDSIGNM v -> m (SignKeyDSIGNM v)
- getSeedDSIGNM :: Proxy v -> SignKeyDSIGNM v -> m (MLockedSeed (SeedSizeDSIGNM v))
- forgetSignKeyDSIGNM :: SignKeyDSIGNM v -> m ()
- data MLockedSeed n
- seedSizeDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word
- sizeVerKeyDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word
- sizeSignKeyDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word
- sizeSigDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word
- newtype SignedDSIGNM v a = SignedDSIGNM (SigDSIGNM v)
- signedDSIGNM :: (DSIGNMAlgorithm m v, SignableM v a) => ContextDSIGNM v -> a -> SignKeyDSIGNM v -> m (SignedDSIGNM v a)
- verifySignedDSIGNM :: (DSIGNMAlgorithmBase v, SignableM v a, HasCallStack) => ContextDSIGNM v -> VerKeyDSIGNM v -> a -> SignedDSIGNM v a -> Either String ()
- encodeVerKeyDSIGNM :: DSIGNMAlgorithmBase v => VerKeyDSIGNM v -> Encoding
- decodeVerKeyDSIGNM :: forall v s. DSIGNMAlgorithmBase v => Decoder s (VerKeyDSIGNM v)
- encodeSigDSIGNM :: DSIGNMAlgorithmBase v => SigDSIGNM v -> Encoding
- decodeSigDSIGNM :: forall v s. DSIGNMAlgorithmBase v => Decoder s (SigDSIGNM v)
- encodeSignedDSIGNM :: DSIGNMAlgorithmBase v => SignedDSIGNM v a -> Encoding
- decodeSignedDSIGNM :: DSIGNMAlgorithmBase v => Decoder s (SignedDSIGNM v a)
- encodedVerKeyDSIGNMSizeExpr :: forall v. DSIGNMAlgorithmBase v => Proxy (VerKeyDSIGNM v) -> Size
- encodedSignKeyDSIGNMSizeExpr :: forall v. DSIGNMAlgorithmBase v => Proxy (SignKeyDSIGNM v) -> Size
- encodedSigDSIGNMSizeExpr :: forall v. DSIGNMAlgorithmBase v => Proxy (SigDSIGNM v) -> Size
- class DSIGNMAlgorithm m v => UnsoundDSIGNMAlgorithm m v where
- rawSerialiseSignKeyDSIGNM :: SignKeyDSIGNM v -> m ByteString
- rawDeserialiseSignKeyDSIGNM :: ByteString -> m (Maybe (SignKeyDSIGNM v))
- encodeSignKeyDSIGNM :: UnsoundDSIGNMAlgorithm m v => SignKeyDSIGNM v -> m Encoding
- decodeSignKeyDSIGNM :: forall m v s. UnsoundDSIGNMAlgorithm m v => Decoder s (m (SignKeyDSIGNM v))
DSIGNMM algorithm class
class (Typeable v, Show (VerKeyDSIGNM v), Eq (VerKeyDSIGNM v), Show (SignKeyDSIGNM v), Show (SigDSIGNM v), Eq (SigDSIGNM v), NoThunks (SigDSIGNM v), NoThunks (SignKeyDSIGNM v), NoThunks (VerKeyDSIGNM v), KnownNat (SeedSizeDSIGNM v), KnownNat (SizeVerKeyDSIGNM v), KnownNat (SizeSignKeyDSIGNM v), KnownNat (SizeSigDSIGNM v)) => DSIGNMAlgorithmBase v where #
Minimal complete definition
algorithmNameDSIGNM, verifyDSIGNM, rawSerialiseVerKeyDSIGNM, rawSerialiseSigDSIGNM, rawDeserialiseVerKeyDSIGNM, rawDeserialiseSigDSIGNM
Associated Types
type SeedSizeDSIGNM v :: Nat #
type SizeVerKeyDSIGNM v :: Nat #
type SizeSignKeyDSIGNM v :: Nat #
type SizeSigDSIGNM v :: Nat #
data VerKeyDSIGNM v :: Type #
data SignKeyDSIGNM v :: Type #
type ContextDSIGNM v :: Type #
Context required to run the DSIGNM algorithm
Unit by default (no context required)
type ContextDSIGNM v = ()
type SignableM v :: Type -> Constraint #
Methods
algorithmNameDSIGNM :: proxy v -> String #
hashVerKeyDSIGNM :: HashAlgorithm h => VerKeyDSIGNM v -> Hash h (VerKeyDSIGNM v) #
verifyDSIGNM :: (SignableM v a, HasCallStack) => ContextDSIGNM v -> VerKeyDSIGNM v -> a -> SigDSIGNM v -> Either String () #
rawSerialiseVerKeyDSIGNM :: VerKeyDSIGNM v -> ByteString #
rawSerialiseSigDSIGNM :: SigDSIGNM v -> ByteString #
rawDeserialiseVerKeyDSIGNM :: ByteString -> Maybe (VerKeyDSIGNM v) #
rawDeserialiseSigDSIGNM :: ByteString -> Maybe (SigDSIGNM v) #
Instances
class (DSIGNMAlgorithmBase v, Monad m) => DSIGNMAlgorithm m v where #
Methods
deriveVerKeyDSIGNM :: SignKeyDSIGNM v -> m (VerKeyDSIGNM v) #
signDSIGNM :: (SignableM v a, HasCallStack) => ContextDSIGNM v -> a -> SignKeyDSIGNM v -> m (SigDSIGNM v) #
genKeyDSIGNM :: MLockedSeed (SeedSizeDSIGNM v) -> m (SignKeyDSIGNM v) #
cloneKeyDSIGNM :: SignKeyDSIGNM v -> m (SignKeyDSIGNM v) #
getSeedDSIGNM :: Proxy v -> SignKeyDSIGNM v -> m (MLockedSeed (SeedSizeDSIGNM v)) #
forgetSignKeyDSIGNM :: SignKeyDSIGNM v -> m () #
Instances
| (MonadST m, MonadSodium m, MonadThrow m) => DSIGNMAlgorithm m Ed25519DSIGNM # | |
Defined in Cardano.Crypto.DSIGN.Ed25519ML Methods deriveVerKeyDSIGNM :: SignKeyDSIGNM Ed25519DSIGNM -> m (VerKeyDSIGNM Ed25519DSIGNM) # signDSIGNM :: (SignableM Ed25519DSIGNM a, HasCallStack) => ContextDSIGNM Ed25519DSIGNM -> a -> SignKeyDSIGNM Ed25519DSIGNM -> m (SigDSIGNM Ed25519DSIGNM) # genKeyDSIGNM :: MLockedSeed (SeedSizeDSIGNM Ed25519DSIGNM) -> m (SignKeyDSIGNM Ed25519DSIGNM) # cloneKeyDSIGNM :: SignKeyDSIGNM Ed25519DSIGNM -> m (SignKeyDSIGNM Ed25519DSIGNM) # getSeedDSIGNM :: Proxy Ed25519DSIGNM -> SignKeyDSIGNM Ed25519DSIGNM -> m (MLockedSeed (SeedSizeDSIGNM Ed25519DSIGNM)) # forgetSignKeyDSIGNM :: SignKeyDSIGNM Ed25519DSIGNM -> m () # | |
data MLockedSeed n #
A seed of size n, stored in mlocked memory. This is required to prevent
the seed from leaking to disk via swapping and reclaiming or scanning memory
after its content has been moved.
Instances
| (MonadSodium m, MonadST m, KnownNat n) => MEq m (MLockedSeed n) # | |
Defined in Cardano.Crypto.MLockedSeed Methods equalsM :: MLockedSeed n -> MLockedSeed n -> m Bool # | |
| NFData (MLockedSeed n) # | |
Defined in Cardano.Crypto.MLockedSeed Methods rnf :: MLockedSeed n -> () Source # | |
| NoThunks (MLockedSeed n) # | |
Defined in Cardano.Crypto.MLockedSeed | |
seedSizeDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word #
The upper bound on the seed size needed by genKeyDSIGNM
sizeVerKeyDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word #
sizeSignKeyDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word #
sizeSigDSIGNM :: forall v proxy. DSIGNMAlgorithmBase v => proxy v -> Word #
SignedDSIGNM wrapper
newtype SignedDSIGNM v a #
Constructors
| SignedDSIGNM (SigDSIGNM v) |
Instances
| Generic (SignedDSIGNM v a) # | |
Defined in Cardano.Crypto.DSIGNM.Class Methods from :: SignedDSIGNM v a -> Rep (SignedDSIGNM v a) x Source # to :: Rep (SignedDSIGNM v a) x -> SignedDSIGNM v a Source # | |
| DSIGNMAlgorithmBase v => Show (SignedDSIGNM v a) # | |
Defined in Cardano.Crypto.DSIGNM.Class | |
| DSIGNMAlgorithmBase v => Eq (SignedDSIGNM v a) # | |
Defined in Cardano.Crypto.DSIGNM.Class Methods (==) :: SignedDSIGNM v a -> SignedDSIGNM v a -> Bool Source # (/=) :: SignedDSIGNM v a -> SignedDSIGNM v a -> Bool Source # | |
| DSIGNMAlgorithmBase v => NoThunks (SignedDSIGNM v a) # | |
Defined in Cardano.Crypto.DSIGNM.Class | |
| type Rep (SignedDSIGNM v a) # | |
Defined in Cardano.Crypto.DSIGNM.Class type Rep (SignedDSIGNM v a) = D1 ('MetaData "SignedDSIGNM" "Cardano.Crypto.DSIGNM.Class" "cardano-crypto-class-2.1.1.0-inplace" 'True) (C1 ('MetaCons "SignedDSIGNM" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (SigDSIGNM v)))) | |
signedDSIGNM :: (DSIGNMAlgorithm m v, SignableM v a) => ContextDSIGNM v -> a -> SignKeyDSIGNM v -> m (SignedDSIGNM v a) #
verifySignedDSIGNM :: (DSIGNMAlgorithmBase v, SignableM v a, HasCallStack) => ContextDSIGNM v -> VerKeyDSIGNM v -> a -> SignedDSIGNM v a -> Either String () #
CBOR encoding and decoding
encodeVerKeyDSIGNM :: DSIGNMAlgorithmBase v => VerKeyDSIGNM v -> Encoding #
decodeVerKeyDSIGNM :: forall v s. DSIGNMAlgorithmBase v => Decoder s (VerKeyDSIGNM v) #
encodeSigDSIGNM :: DSIGNMAlgorithmBase v => SigDSIGNM v -> Encoding #
decodeSigDSIGNM :: forall v s. DSIGNMAlgorithmBase v => Decoder s (SigDSIGNM v) #
encodeSignedDSIGNM :: DSIGNMAlgorithmBase v => SignedDSIGNM v a -> Encoding #
decodeSignedDSIGNM :: DSIGNMAlgorithmBase v => Decoder s (SignedDSIGNM v a) #
Encoded Size expresssions
encodedVerKeyDSIGNMSizeExpr :: forall v. DSIGNMAlgorithmBase v => Proxy (VerKeyDSIGNM v) -> Size #
Size expression for VerKeyDSIGNM which is using sizeVerKeyDSIGNM
encoded as Size.
encodedSignKeyDSIGNMSizeExpr :: forall v. DSIGNMAlgorithmBase v => Proxy (SignKeyDSIGNM v) -> Size #
Size expression for SignKeyDSIGNM which is using sizeSignKeyDSIGNM
encoded as Size.
encodedSigDSIGNMSizeExpr :: forall v. DSIGNMAlgorithmBase v => Proxy (SigDSIGNM v) -> Size #
Size expression for SigDSIGNM which is using sizeSigDSIGNM encoded as
Size.
Unsound API
class DSIGNMAlgorithm m v => UnsoundDSIGNMAlgorithm m v where #
Unsound operations on DSIGNM sign keys. These operations violate secure
forgetting constraints by leaking secrets to unprotected memory. Consider
using the DirectSerialise / DirectDeserialise APIs instead.
Methods
rawSerialiseSignKeyDSIGNM :: SignKeyDSIGNM v -> m ByteString #
rawDeserialiseSignKeyDSIGNM :: ByteString -> m (Maybe (SignKeyDSIGNM v)) #
Instances
| (MonadST m, MonadSodium m, MonadThrow m) => UnsoundDSIGNMAlgorithm m Ed25519DSIGNM # | |
Defined in Cardano.Crypto.DSIGN.Ed25519ML Methods rawSerialiseSignKeyDSIGNM :: SignKeyDSIGNM Ed25519DSIGNM -> m ByteString # rawDeserialiseSignKeyDSIGNM :: ByteString -> m (Maybe (SignKeyDSIGNM Ed25519DSIGNM)) # | |
encodeSignKeyDSIGNM :: UnsoundDSIGNMAlgorithm m v => SignKeyDSIGNM v -> m Encoding #
decodeSignKeyDSIGNM :: forall m v s. UnsoundDSIGNMAlgorithm m v => Decoder s (m (SignKeyDSIGNM v)) #