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