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 }