fork of go-git with some jj specific features
at main 828 B view raw
1package git 2 3import ( 4 "io" 5 6 "github.com/go-git/go-git/v5/plumbing" 7) 8 9// signableObject is an object which can be signed. 10type signableObject interface { 11 EncodeWithoutSignature(o plumbing.EncodedObject) error 12} 13 14// Signer is an interface for signing git objects. 15// message is a reader containing the encoded object to be signed. 16// Implementors should return the encoded signature and an error if any. 17// See https://git-scm.com/docs/gitformat-signature for more information. 18type Signer interface { 19 Sign(message io.Reader) ([]byte, error) 20} 21 22func signObject(signer Signer, obj signableObject) ([]byte, error) { 23 encoded := &plumbing.MemoryObject{} 24 if err := obj.EncodeWithoutSignature(encoded); err != nil { 25 return nil, err 26 } 27 r, err := encoded.Reader() 28 if err != nil { 29 return nil, err 30 } 31 32 return signer.Sign(r) 33}