github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/git/interfaces.go (about)

     1  package git
     2  
     3  import (
     4  	"github.com/keybase/client/go/protocol/keybase1"
     5  	"golang.org/x/net/context"
     6  )
     7  
     8  // Teamer handles teams for use with the Git index
     9  type Teamer interface {
    10  	// LookupOrCreate either lookups or creates a team that corresponds to the given Folder
    11  	// Does not create new named teams.
    12  	LookupOrCreate(ctx context.Context, folder keybase1.FolderHandle) (teamID keybase1.TeamIDWithVisibility, err error)
    13  }
    14  
    15  // Cryptoer handles crypto operations to encrypt and decrypt data as it is
    16  // sent to or received from the server-side Git index.
    17  type Cryptoer interface {
    18  	// Box encrypts the plaintext with the most current key for the given team. It yields a NaCl
    19  	// ciphertext and nonce, and also says which generation of the key it used.
    20  	Box(ctx context.Context, plaintext []byte, team keybase1.TeamIDWithVisibility) (*keybase1.EncryptedGitMetadata, error)
    21  	// Unbox decrypts the given ciphertext with the given nonce, for the given generation of the
    22  	// given team. Can return an error. Will return a non-nil plaintext on success.
    23  	Unbox(ctx context.Context, team keybase1.TeamIDWithVisibility, metadata *keybase1.EncryptedGitMetadata) (plaintext []byte, err error)
    24  }