github.com/insolar/vanilla@v0.0.0-20201023172447-248fdf805322/cryptkit/digest.go (about)

     1  // Copyright 2020 Insolar Network Ltd.
     2  // All rights reserved.
     3  // This material is licensed under the Insolar License version 1.0,
     4  // available at https://github.com/insolar/assured-ledger/blob/master/LICENSE.md.
     5  
     6  package cryptkit
     7  
     8  import (
     9  	"io"
    10  
    11  	"github.com/insolar/vanilla/longbits"
    12  )
    13  
    14  type DigestMethod string
    15  
    16  func (d DigestMethod) SignedBy(s SigningMethod) SignatureMethod {
    17  	return SignatureMethod(string(d) + "/" + string(s))
    18  }
    19  
    20  func (d DigestMethod) String() string {
    21  	return string(d)
    22  }
    23  
    24  type BasicDigester interface {
    25  	GetDigestMethod() DigestMethod
    26  	GetDigestSize() int
    27  }
    28  
    29  //go:generate minimock -i github.com/insolar/vanilla/cryptkit.DataDigester -o . -s _mock.go -g
    30  
    31  type DataDigester interface {
    32  	BasicDigester
    33  	// deprecated
    34  	DigestData(io.Reader) Digest
    35  	DigestBytes([]byte) Digest
    36  	NewHasher() DigestHasher
    37  }
    38  
    39  //go:generate minimock -i github.com/insolar/vanilla/cryptkit.PairDigester -o . -s _mock.go -g
    40  
    41  type PairDigester interface {
    42  	BasicDigester
    43  	DigestPair(digest0 longbits.FoldableReader, digest1 longbits.FoldableReader) Digest
    44  }
    45  
    46  //go:generate minimock -i github.com/insolar/vanilla/cryptkit.SequenceDigester -o . -s _mock.go -g
    47  
    48  type SequenceDigester interface {
    49  	BasicDigester
    50  	AddNext(digest longbits.FoldableReader)
    51  	FinishSequence() Digest
    52  }
    53  
    54  //go:generate minimock -i github.com/insolar/vanilla/cryptkit.ForkingDigester -o . -s _mock.go -g
    55  
    56  type ForkingDigester interface {
    57  	SequenceDigester
    58  	ForkSequence() ForkingDigester
    59  }
    60  
    61  type DigestFactory interface {
    62  	CreatePairDigester() PairDigester
    63  	CreateDataDigester() DataDigester
    64  	CreateSequenceDigester() SequenceDigester
    65  	CreateForkingDigester() ForkingDigester
    66  }
    67  
    68  //go:generate minimock -i github.com/insolar/vanilla/cryptkit.DigestHolder -o . -s _mock.go -g
    69  
    70  type DigestHolder interface {
    71  	longbits.FoldableReader
    72  	SignWith(signer DigestSigner) SignedDigestHolder
    73  	GetDigestMethod() DigestMethod
    74  	Equals(other DigestHolder) bool
    75  }