| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Cardano.Crypto.DSIGN.Class
Description
Abstract digital signatures.
Synopsis
- class (Typeable v, Show (VerKeyDSIGN v), Eq (VerKeyDSIGN v), Show (SignKeyDSIGN v), Show (SigDSIGN v), Eq (SigDSIGN v), NoThunks (SigDSIGN v), NoThunks (SignKeyDSIGN v), NoThunks (VerKeyDSIGN v), KnownNat (SeedSizeDSIGN v), KnownNat (SignKeySizeDSIGN v), KnownNat (VerKeySizeDSIGN v), KnownNat (SigSizeDSIGN v), FixedSizeCodec (VerKeyDSIGN v), FixedSizeCodec (SignKeyDSIGN v), FixedSizeCodec (SigDSIGN v)) ⇒ DSIGNAlgorithm v where
- type SeedSizeDSIGN v ∷ Nat
- type SignKeySizeDSIGN v ∷ Nat
- type VerKeySizeDSIGN v ∷ Nat
- type SigSizeDSIGN v ∷ Nat
- type SizeSignKeyDSIGN v ∷ Nat
- type SizeVerKeyDSIGN v ∷ Nat
- type SizeSigDSIGN v ∷ Nat
- data VerKeyDSIGN v ∷ Type
- data SignKeyDSIGN v ∷ Type
- data SigDSIGN v ∷ Type
- type ContextDSIGN v ∷ Type
- type Signable v ∷ Type → Constraint
- type KeyGenContextDSIGN v ∷ Type
- algorithmNameDSIGN ∷ proxy v → String
- deriveVerKeyDSIGN ∷ SignKeyDSIGN v → VerKeyDSIGN v
- hashVerKeyDSIGN ∷ HashAlgorithm h ⇒ VerKeyDSIGN v → Hash h (VerKeyDSIGN v)
- signDSIGN ∷ (Signable v a, HasCallStack) ⇒ ContextDSIGN v → a → SignKeyDSIGN v → SigDSIGN v
- verifyDSIGN ∷ (Signable v a, HasCallStack) ⇒ ContextDSIGN v → VerKeyDSIGN v → a → SigDSIGN v → Either String ()
- genKeyDSIGN ∷ Seed → SignKeyDSIGN v
- genKeyDSIGNWithContext ∷ KeyGenContextDSIGN v → Seed → SignKeyDSIGN v
- rawSerialiseVerKeyDSIGN ∷ VerKeyDSIGN v → ByteString
- rawSerialiseSignKeyDSIGN ∷ SignKeyDSIGN v → ByteString
- rawSerialiseSigDSIGN ∷ SigDSIGN v → ByteString
- rawDeserialiseVerKeyDSIGN ∷ ByteString → Maybe (VerKeyDSIGN v)
- rawDeserialiseSignKeyDSIGN ∷ ByteString → Maybe (SignKeyDSIGN v)
- rawDeserialiseSigDSIGN ∷ ByteString → Maybe (SigDSIGN v)
- data Seed
- seedSizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- verKeySizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- signKeySizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- sigSizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- sizeVerKeyDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- sizeSignKeyDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- sizeSigDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word
- class (DSIGNAlgorithm v, NoThunks (SignKeyDSIGNM v)) ⇒ DSIGNMAlgorithm v where
- data SignKeyDSIGNM v ∷ Type
- deriveVerKeyDSIGNM ∷ (MonadThrow m, MonadST m) ⇒ SignKeyDSIGNM v → m (VerKeyDSIGN v)
- signDSIGNM ∷ (Signable v a, MonadST m, MonadThrow m) ⇒ ContextDSIGN v → a → SignKeyDSIGNM v → m (SigDSIGN v)
- genKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → MLockedSeed (SeedSizeDSIGN v) → m (SignKeyDSIGNM v)
- cloneKeyDSIGNMWith ∷ MonadST m ⇒ MLockedAllocator m → SignKeyDSIGNM v → m (SignKeyDSIGNM v)
- getSeedDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → Proxy v → SignKeyDSIGNM v → m (MLockedSeed (SeedSizeDSIGN v))
- forgetSignKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → SignKeyDSIGNM v → m ()
- genKeyDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ MLockedSeed (SeedSizeDSIGN v) → m (SignKeyDSIGNM v)
- cloneKeyDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m) ⇒ SignKeyDSIGNM v → m (SignKeyDSIGNM v)
- getSeedDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ Proxy v → SignKeyDSIGNM v → m (MLockedSeed (SeedSizeDSIGN v))
- forgetSignKeyDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM v → m ()
- newtype SignedDSIGN v a = SignedDSIGN (SigDSIGN v)
- signedDSIGN ∷ (DSIGNAlgorithm v, Signable v a) ⇒ ContextDSIGN v → a → SignKeyDSIGN v → SignedDSIGN v a
- verifySignedDSIGN ∷ (DSIGNAlgorithm v, Signable v a, HasCallStack) ⇒ ContextDSIGN v → VerKeyDSIGN v → a → SignedDSIGN v a → Either String ()
- encodeVerKeyDSIGN ∷ DSIGNAlgorithm v ⇒ VerKeyDSIGN v → Encoding
- decodeVerKeyDSIGN ∷ ∀ v s. DSIGNAlgorithm v ⇒ Decoder s (VerKeyDSIGN v)
- encodeSignKeyDSIGN ∷ DSIGNAlgorithm v ⇒ SignKeyDSIGN v → Encoding
- decodeSignKeyDSIGN ∷ ∀ v s. DSIGNAlgorithm v ⇒ Decoder s (SignKeyDSIGN v)
- encodeSigDSIGN ∷ DSIGNAlgorithm v ⇒ SigDSIGN v → Encoding
- decodeSigDSIGN ∷ ∀ v s. DSIGNAlgorithm v ⇒ Decoder s (SigDSIGN v)
- encodeSignedDSIGN ∷ DSIGNAlgorithm v ⇒ SignedDSIGN v a → Encoding
- decodeSignedDSIGN ∷ DSIGNAlgorithm v ⇒ Decoder s (SignedDSIGN v a)
- encodedVerKeyDSIGNSizeExpr ∷ ∀ v. DSIGNAlgorithm v ⇒ Proxy (VerKeyDSIGN v) → Size
- encodedSignKeyDSIGNSizeExpr ∷ ∀ v. DSIGNAlgorithm v ⇒ Proxy (SignKeyDSIGN v) → Size
- encodedSigDSIGNSizeExpr ∷ ∀ v. DSIGNAlgorithm v ⇒ Proxy (SigDSIGN v) → Size
- class DSIGNMAlgorithm v ⇒ UnsoundDSIGNMAlgorithm v where
- rawSerialiseSignKeyDSIGNM ∷ (MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM v → m ByteString
- rawDeserialiseSignKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → ByteString → m (Maybe (SignKeyDSIGNM v))
- encodeSignKeyDSIGNM ∷ (UnsoundDSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM v → m Encoding
- decodeSignKeyDSIGNM ∷ ∀ m v s. (UnsoundDSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ Decoder s (m (SignKeyDSIGNM v))
- rawDeserialiseSignKeyDSIGNM ∷ (UnsoundDSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ ByteString → m (Maybe (SignKeyDSIGNM v))
- class (DSIGNAlgorithm v, Show (PossessionProofDSIGN v), Eq (PossessionProofDSIGN v), NoThunks (PossessionProofDSIGN v), KnownNat (PossessionProofSizeDSIGN v), FixedSizeCodec (PossessionProofDSIGN v)) ⇒ DSIGNAggregatable v where
- type PossessionProofSizeDSIGN v ∷ Nat
- data PossessionProofDSIGN v ∷ Type
- uncheckedAggregateVerKeysDSIGN ∷ HasCallStack ⇒ [VerKeyDSIGN v] → Either String (VerKeyDSIGN v)
- aggregateSigsDSIGN ∷ HasCallStack ⇒ [SigDSIGN v] → Either String (SigDSIGN v)
- createPossessionProofDSIGN ∷ HasCallStack ⇒ ContextDSIGN v → SignKeyDSIGN v → PossessionProofDSIGN v
- verifyPossessionProofDSIGN ∷ HasCallStack ⇒ ContextDSIGN v → VerKeyDSIGN v → PossessionProofDSIGN v → Either String ()
- rawSerialisePossessionProofDSIGN ∷ PossessionProofDSIGN v → ByteString
- rawDeserialisePossessionProofDSIGN ∷ ByteString → Maybe (PossessionProofDSIGN v)
- aggregateVerKeysDSIGN ∷ (HasCallStack, DSIGNAggregatable v) ⇒ ContextDSIGN v → [(VerKeyDSIGN v, PossessionProofDSIGN v)] → Either String (VerKeyDSIGN v)
- possessionProofSizeDSIGN ∷ ∀ v proxy. DSIGNAggregatable v ⇒ proxy v → Word
- encodePossessionProofDSIGN ∷ DSIGNAggregatable v ⇒ PossessionProofDSIGN v → Encoding
- decodePossessionProofDSIGN ∷ ∀ v s. DSIGNAggregatable v ⇒ Decoder s (PossessionProofDSIGN v)
- encodedPossessionProofDSIGNSizeExpr ∷ ∀ v. DSIGNAggregatable v ⇒ Proxy (PossessionProofDSIGN v) → Size
DSIGN algorithm class
class (Typeable v, Show (VerKeyDSIGN v), Eq (VerKeyDSIGN v), Show (SignKeyDSIGN v), Show (SigDSIGN v), Eq (SigDSIGN v), NoThunks (SigDSIGN v), NoThunks (SignKeyDSIGN v), NoThunks (VerKeyDSIGN v), KnownNat (SeedSizeDSIGN v), KnownNat (SignKeySizeDSIGN v), KnownNat (VerKeySizeDSIGN v), KnownNat (SigSizeDSIGN v), FixedSizeCodec (VerKeyDSIGN v), FixedSizeCodec (SignKeyDSIGN v), FixedSizeCodec (SigDSIGN v)) ⇒ DSIGNAlgorithm v where Source #
The pure DSIGN API, which supports the full set of DSIGN operations, but does not allow for secure forgetting of private keys.
Minimal complete definition
algorithmNameDSIGN, deriveVerKeyDSIGN, signDSIGN, verifyDSIGN, genKeyDSIGN
Associated Types
type SeedSizeDSIGN v ∷ Nat Source #
type SignKeySizeDSIGN v ∷ Nat Source #
type SignKeySizeDSIGN v = FixedSize (SignKeyDSIGN v)
type VerKeySizeDSIGN v ∷ Nat Source #
type VerKeySizeDSIGN v = FixedSize (VerKeyDSIGN v)
type SigSizeDSIGN v ∷ Nat Source #
type SigSizeDSIGN v = FixedSize (SigDSIGN v)
type SizeSignKeyDSIGN v ∷ Nat Source #
Deprecated: In favor of SignKeySizeDSIGN
type SizeSignKeyDSIGN v = SignKeySizeDSIGN v
type SizeVerKeyDSIGN v ∷ Nat Source #
Deprecated: In favor of VerKeySizeDSIGN
type SizeVerKeyDSIGN v = VerKeySizeDSIGN v
type SizeSigDSIGN v ∷ Nat Source #
Deprecated: In favor of SigSizeDSIGN
type SizeSigDSIGN v = SigSizeDSIGN v
data VerKeyDSIGN v ∷ Type Source #
data SignKeyDSIGN v ∷ Type Source #
data SigDSIGN v ∷ Type Source #
type ContextDSIGN v ∷ Type Source #
Context required to run the DSIGN algorithm
Unit by default (no context required)
type ContextDSIGN v = ()
type Signable v ∷ Type → Constraint Source #
type KeyGenContextDSIGN v ∷ Type Source #
type KeyGenContextDSIGN v = ()
Methods
algorithmNameDSIGN ∷ proxy v → String Source #
deriveVerKeyDSIGN ∷ SignKeyDSIGN v → VerKeyDSIGN v Source #
hashVerKeyDSIGN ∷ HashAlgorithm h ⇒ VerKeyDSIGN v → Hash h (VerKeyDSIGN v) Source #
signDSIGN ∷ (Signable v a, HasCallStack) ⇒ ContextDSIGN v → a → SignKeyDSIGN v → SigDSIGN v Source #
verifyDSIGN ∷ (Signable v a, HasCallStack) ⇒ ContextDSIGN v → VerKeyDSIGN v → a → SigDSIGN v → Either String () Source #
genKeyDSIGN ∷ Seed → SignKeyDSIGN v Source #
Note that this function may error (with SeedBytesExhausted) if the
provided seed is not long enough. Callers should ensure that the seed has
is at least seedSizeDSIGN bytes long.
genKeyDSIGNWithContext ∷ KeyGenContextDSIGN v → Seed → SignKeyDSIGN v Source #
rawSerialiseVerKeyDSIGN ∷ VerKeyDSIGN v → ByteString Source #
Deprecated: Use rawEncodeFixedSized instead
rawSerialiseSignKeyDSIGN ∷ SignKeyDSIGN v → ByteString Source #
Deprecated: Use rawEncodeFixedSized instead
rawSerialiseSigDSIGN ∷ SigDSIGN v → ByteString Source #
Deprecated: Use rawEncodeFixedSized instead
rawDeserialiseVerKeyDSIGN ∷ ByteString → Maybe (VerKeyDSIGN v) Source #
Deprecated: Use rawDecodeFixedSized instead
rawDeserialiseSignKeyDSIGN ∷ ByteString → Maybe (SignKeyDSIGN v) Source #
Deprecated: Use rawDecodeFixedSized instead
rawDeserialiseSigDSIGN ∷ ByteString → Maybe (SigDSIGN v) Source #
Deprecated: Use rawDecodeFixedSized instead
Instances
A seed contains a finite number of bytes, and is used for seeding cryptographic algorithms including key generation.
This is not itself a PRNG, but can be used to seed a PRNG.
seedSizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
The upper bound on the Seed size needed by genKeyDSIGN
verKeySizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
Deprecated: Use fixedSize instead
signKeySizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
Deprecated: Use fixedSize instead
sigSizeDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
Deprecated: Use fixedSize instead
Deprecated size synonyms
sizeVerKeyDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
Deprecated: In favor of fixedSize
sizeSignKeyDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
Deprecated: In favor of fixedSize
sizeSigDSIGN ∷ ∀ v proxy. DSIGNAlgorithm v ⇒ proxy v → Word Source #
Deprecated: In favor of fixedSize
MLocked DSIGN algorithm class
class (DSIGNAlgorithm v, NoThunks (SignKeyDSIGNM v)) ⇒ DSIGNMAlgorithm v where Source #
Associated Types
data SignKeyDSIGNM v ∷ Type Source #
Methods
deriveVerKeyDSIGNM ∷ (MonadThrow m, MonadST m) ⇒ SignKeyDSIGNM v → m (VerKeyDSIGN v) Source #
signDSIGNM ∷ (Signable v a, MonadST m, MonadThrow m) ⇒ ContextDSIGN v → a → SignKeyDSIGNM v → m (SigDSIGN v) Source #
genKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → MLockedSeed (SeedSizeDSIGN v) → m (SignKeyDSIGNM v) Source #
cloneKeyDSIGNMWith ∷ MonadST m ⇒ MLockedAllocator m → SignKeyDSIGNM v → m (SignKeyDSIGNM v) Source #
getSeedDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → Proxy v → SignKeyDSIGNM v → m (MLockedSeed (SeedSizeDSIGN v)) Source #
forgetSignKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → SignKeyDSIGNM v → m () Source #
Instances
| DSIGNMAlgorithm Ed25519DSIGN Source # | |
Defined in Cardano.Crypto.DSIGN.Ed25519 Associated Types data SignKeyDSIGNM Ed25519DSIGN Source # Methods deriveVerKeyDSIGNM ∷ (MonadThrow m, MonadST m) ⇒ SignKeyDSIGNM Ed25519DSIGN → m (VerKeyDSIGN Ed25519DSIGN) Source # signDSIGNM ∷ (Signable Ed25519DSIGN a, MonadST m, MonadThrow m) ⇒ ContextDSIGN Ed25519DSIGN → a → SignKeyDSIGNM Ed25519DSIGN → m (SigDSIGN Ed25519DSIGN) Source # genKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → MLockedSeed (SeedSizeDSIGN Ed25519DSIGN) → m (SignKeyDSIGNM Ed25519DSIGN) Source # cloneKeyDSIGNMWith ∷ MonadST m ⇒ MLockedAllocator m → SignKeyDSIGNM Ed25519DSIGN → m (SignKeyDSIGNM Ed25519DSIGN) Source # getSeedDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → Proxy Ed25519DSIGN → SignKeyDSIGNM Ed25519DSIGN → m (MLockedSeed (SeedSizeDSIGN Ed25519DSIGN)) Source # forgetSignKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → SignKeyDSIGNM Ed25519DSIGN → m () Source # | |
genKeyDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ MLockedSeed (SeedSizeDSIGN v) → m (SignKeyDSIGNM v) Source #
cloneKeyDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m) ⇒ SignKeyDSIGNM v → m (SignKeyDSIGNM v) Source #
getSeedDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ Proxy v → SignKeyDSIGNM v → m (MLockedSeed (SeedSizeDSIGN v)) Source #
forgetSignKeyDSIGNM ∷ (DSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM v → m () Source #
SignedDSIGN wrapper
newtype SignedDSIGN v a Source #
Constructors
| SignedDSIGN (SigDSIGN v) |
Instances
signedDSIGN ∷ (DSIGNAlgorithm v, Signable v a) ⇒ ContextDSIGN v → a → SignKeyDSIGN v → SignedDSIGN v a Source #
verifySignedDSIGN ∷ (DSIGNAlgorithm v, Signable v a, HasCallStack) ⇒ ContextDSIGN v → VerKeyDSIGN v → a → SignedDSIGN v a → Either String () Source #
CBOR encoding and decoding
encodeVerKeyDSIGN ∷ DSIGNAlgorithm v ⇒ VerKeyDSIGN v → Encoding Source #
Deprecated: Use encodeFixedSized instead
decodeVerKeyDSIGN ∷ ∀ v s. DSIGNAlgorithm v ⇒ Decoder s (VerKeyDSIGN v) Source #
Deprecated: Use decodeFixedSized instead
encodeSignKeyDSIGN ∷ DSIGNAlgorithm v ⇒ SignKeyDSIGN v → Encoding Source #
Deprecated: Use encodeFixedSized instead
decodeSignKeyDSIGN ∷ ∀ v s. DSIGNAlgorithm v ⇒ Decoder s (SignKeyDSIGN v) Source #
Deprecated: Use decodeFixedSized instead
encodeSigDSIGN ∷ DSIGNAlgorithm v ⇒ SigDSIGN v → Encoding Source #
Deprecated: Use encodeFixedSized instead
decodeSigDSIGN ∷ ∀ v s. DSIGNAlgorithm v ⇒ Decoder s (SigDSIGN v) Source #
Deprecated: Use decodeFixedSized instead
encodeSignedDSIGN ∷ DSIGNAlgorithm v ⇒ SignedDSIGN v a → Encoding Source #
Deprecated: Use encodeFixedSized instead
decodeSignedDSIGN ∷ DSIGNAlgorithm v ⇒ Decoder s (SignedDSIGN v a) Source #
Deprecated: Use decodeFixedSized instead
Encoded Size expresssions
encodedVerKeyDSIGNSizeExpr ∷ ∀ v. DSIGNAlgorithm v ⇒ Proxy (VerKeyDSIGN v) → Size Source #
encodedSignKeyDSIGNSizeExpr ∷ ∀ v. DSIGNAlgorithm v ⇒ Proxy (SignKeyDSIGN v) → Size Source #
encodedSigDSIGNSizeExpr ∷ ∀ v. DSIGNAlgorithm v ⇒ Proxy (SigDSIGN v) → Size Source #
Unsound CBOR encoding and decoding of MLocked DSIGN keys
class DSIGNMAlgorithm v ⇒ UnsoundDSIGNMAlgorithm v where Source #
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 ∷ (MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM v → m ByteString Source #
rawDeserialiseSignKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → ByteString → m (Maybe (SignKeyDSIGNM v)) Source #
Instances
| UnsoundDSIGNMAlgorithm Ed25519DSIGN Source # | |
Defined in Cardano.Crypto.DSIGN.Ed25519 Methods rawSerialiseSignKeyDSIGNM ∷ (MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM Ed25519DSIGN → m ByteString Source # rawDeserialiseSignKeyDSIGNMWith ∷ (MonadST m, MonadThrow m) ⇒ MLockedAllocator m → ByteString → m (Maybe (SignKeyDSIGNM Ed25519DSIGN)) Source # | |
encodeSignKeyDSIGNM ∷ (UnsoundDSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ SignKeyDSIGNM v → m Encoding Source #
decodeSignKeyDSIGNM ∷ ∀ m v s. (UnsoundDSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ Decoder s (m (SignKeyDSIGNM v)) Source #
rawDeserialiseSignKeyDSIGNM ∷ (UnsoundDSIGNMAlgorithm v, MonadST m, MonadThrow m) ⇒ ByteString → m (Maybe (SignKeyDSIGNM v)) Source #
Aggregatable DSIGN algorithms with Proof of Possession
class (DSIGNAlgorithm v, Show (PossessionProofDSIGN v), Eq (PossessionProofDSIGN v), NoThunks (PossessionProofDSIGN v), KnownNat (PossessionProofSizeDSIGN v), FixedSizeCodec (PossessionProofDSIGN v)) ⇒ DSIGNAggregatable v where Source #
Extension of the DSIGNAlgorithm to allow for aggregatable digital
signature schemes that support Proof of Possession (PoP) of signing keys.
Such schemes enable the aggregation of multiple signatures and verification
keys into a single signature and verification key, respectively, while
ensuring that each verification key is associated with a valid signing key
through the use of Proofs of Possession. The latter is against rogue-key
attacks.
Examples of aggregatable signatures schemes are the BLS signature scheme and the Pixel scheme.
Minimal complete definition
uncheckedAggregateVerKeysDSIGN, aggregateSigsDSIGN, createPossessionProofDSIGN, verifyPossessionProofDSIGN
Associated Types
type PossessionProofSizeDSIGN v ∷ Nat Source #
data PossessionProofDSIGN v ∷ Type Source #
Methods
uncheckedAggregateVerKeysDSIGN ∷ HasCallStack ⇒ [VerKeyDSIGN v] → Either String (VerKeyDSIGN v) Source #
Aggregate multiple verification keys into a single verification key
without requiring their corresponding Proofs of Possession. This function
is unsafe and should only be used when verification keys are valid (i.e.,
their PoPs have been verified through other means). See
aggregateVerKeysDSIGN for a function that does this using
verifyPossessionProofDSIGN.
aggregateSigsDSIGN ∷ HasCallStack ⇒ [SigDSIGN v] → Either String (SigDSIGN v) Source #
Aggregate multiple signatures into a single signature
createPossessionProofDSIGN ∷ HasCallStack ⇒ ContextDSIGN v → SignKeyDSIGN v → PossessionProofDSIGN v Source #
Create a PoP from the signing key.
verifyPossessionProofDSIGN ∷ HasCallStack ⇒ ContextDSIGN v → VerKeyDSIGN v → PossessionProofDSIGN v → Either String () Source #
Verify that PoP matches the verification key.
rawSerialisePossessionProofDSIGN ∷ PossessionProofDSIGN v → ByteString Source #
Deprecated: Use rawEncodeFixedSized instead
Serialise a PoP into fixed-size raw bytes.
rawDeserialisePossessionProofDSIGN ∷ ByteString → Maybe (PossessionProofDSIGN v) Source #
Deprecated: Use rawDecodeFixedSized instead
Deserialise a PoP from fixed-size raw bytes.
Instances
aggregateVerKeysDSIGN ∷ (HasCallStack, DSIGNAggregatable v) ⇒ ContextDSIGN v → [(VerKeyDSIGN v, PossessionProofDSIGN v)] → Either String (VerKeyDSIGN v) Source #
Aggregate multiple verification keys into a single verification key given their corresponding Proofs of Possession.
Note that the signing context is passed since the PoP might depend on it.
possessionProofSizeDSIGN ∷ ∀ v proxy. DSIGNAggregatable v ⇒ proxy v → Word Source #
Deprecated: Use fixedSize instead
encodePossessionProofDSIGN ∷ DSIGNAggregatable v ⇒ PossessionProofDSIGN v → Encoding Source #
Deprecated: Use encodeFixedSized instead
Encode a PoP into CBOR.
decodePossessionProofDSIGN ∷ ∀ v s. DSIGNAggregatable v ⇒ Decoder s (PossessionProofDSIGN v) Source #
Deprecated: Use decodeFixedSized instead
Decode a PoP from CBOR.
encodedPossessionProofDSIGNSizeExpr ∷ ∀ v. DSIGNAggregatable v ⇒ Proxy (PossessionProofDSIGN v) → Size Source #