bertyprotocol

package
v2.212.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2020 License: Apache-2.0, MIT Imports: 101 Imported by: 0

README

Berty go/pkg/bertyprotocol

go.dev reference

Please, read the main README.md file first.

Usage

import "berty.tech/berty/v2/go/pkg/bertyprotocol"

Get the code

git clone https://github.com/berty/berty
cd berty/go/pkg/bertyprotocol

<!--
## Examples

_TODO: add links to internal examples + links to external repos using the protocol_
-->

Documentation

Overview

Package bertyprotocol is a reverse proxy.

It translates gRPC into RESTful JSON APIs.

Package bertyprotocol is a reverse proxy.

It translates gRPC into RESTful JSON APIs.

Package bertyprotocol contains code for integrating the Berty protocol in your project.

See https://berty.tech/protocol for more information.

Index

Examples

Constants

View Source
const (
	AuthResponseType        = "code"
	AuthGrantType           = "authorization_code"
	AuthRedirect            = "berty://services-auth/"
	AuthClientID            = "berty"
	AuthCodeChallengeMethod = "S256"
)
View Source
const (
	NamespaceMessageKeystore  = "messages_keystore"
	NamespaceDeviceKeystore   = "device_keystore"
	NamespaceOrbitDBDatastore = "orbitdb_datastore"
	NamespaceOrbitDBDirectory = "orbitdb"
	NamespaceIPFSDatastore    = "ipfs_datastore"
)
View Source
const (
	ContextTokenHashField     ContextAuthValue = iota
	AuthHTTPPathTokenExchange                  = "/oauth/token" // nolint:gosec
	AuthHTTPPathAuthorize                      = "/authorize"
)
View Source
const ClientBufferSize = 256 * 1024
View Source
const CurrentGroupVersion = 1
View Source
const (
	ServiceReplicationID = "rpl"
)

Variables

View Source
var InMemoryDirectory = cacheleveldown.InMemoryDirectory

Functions

func ActivateGroupContext

func ActivateGroupContext(ctx context.Context, gc *groupContext, contact crypto.PubKey) error

func ConnectAll added in v2.39.0

func ConnectAll(t *testing.T, m libp2p_mocknet.Mocknet)

ConnectAll peers between themselves

func ConnectInLine added in v2.39.0

func ConnectInLine(t *testing.T, m libp2p_mocknet.Mocknet)

func DefaultOrbitDBOptions added in v2.32.1

func DefaultOrbitDBOptions(g *bertytypes.Group, options *orbitdb.CreateDBOptions, keystore *BertySignedKeyStore, storeType string, groupOpenMode GroupOpenMode) (*orbitdb.CreateDBOptions, error)

func FillMessageKeysHolderUsingNewData

func FillMessageKeysHolderUsingNewData(ctx context.Context, gc *groupContext) <-chan crypto.PubKey

func FillMessageKeysHolderUsingPreviousData

func FillMessageKeysHolderUsingPreviousData(ctx context.Context, gc *groupContext) <-chan crypto.PubKey

func NewDeviceSecret

func NewDeviceSecret() (*bertytypes.DeviceSecret, error)

func NewGroupMultiMember

func NewGroupMultiMember() (*bertytypes.Group, crypto.PrivKey, error)

NewGroupMultiMember creates a new Group object and an invitation to be used by the first member of the group

func NewOrbitDatastoreCache added in v2.32.1

func NewOrbitDatastoreCache(ds datastore.Batching) cache.Interface

func NewSimpleAccessController added in v2.32.1

NewSimpleAccessController Returns a non configurable access controller

func RegisterProtocolServiceHandler added in v2.100.0

func RegisterProtocolServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error

RegisterProtocolServiceHandler registers the http handlers for service ProtocolService to "mux". The handlers forward requests to the grpc endpoint over "conn".

func RegisterProtocolServiceHandlerClient added in v2.100.0

func RegisterProtocolServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ProtocolServiceClient) error

RegisterProtocolServiceHandlerClient registers the http handlers for service ProtocolService to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ProtocolServiceClient". Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ProtocolServiceClient" doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in "ProtocolServiceClient" to call the correct interceptors.

func RegisterProtocolServiceHandlerFromEndpoint added in v2.100.0

func RegisterProtocolServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error)

RegisterProtocolServiceHandlerFromEndpoint is same as RegisterProtocolServiceHandler but automatically dials to "endpoint" and closes the connection when "ctx" gets done.

func RegisterProtocolServiceHandlerServer added in v2.100.0

func RegisterProtocolServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ProtocolServiceServer) error

RegisterProtocolServiceHandlerServer registers the http handlers for service ProtocolService to "mux". UnaryRPC :call ProtocolServiceServer directly. StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.

func RegisterProtocolServiceServer

func RegisterProtocolServiceServer(s *grpc.Server, srv ProtocolServiceServer)

func RegisterReplicationServiceHandler added in v2.146.0

func RegisterReplicationServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error

RegisterReplicationServiceHandler registers the http handlers for service ReplicationService to "mux". The handlers forward requests to the grpc endpoint over "conn".

func RegisterReplicationServiceHandlerClient added in v2.146.0

func RegisterReplicationServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client ReplicationServiceClient) error

RegisterReplicationServiceHandlerClient registers the http handlers for service ReplicationService to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "ReplicationServiceClient". Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ReplicationServiceClient" doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in "ReplicationServiceClient" to call the correct interceptors.

func RegisterReplicationServiceHandlerFromEndpoint added in v2.146.0

func RegisterReplicationServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error)

RegisterReplicationServiceHandlerFromEndpoint is same as RegisterReplicationServiceHandler but automatically dials to "endpoint" and closes the connection when "ctx" gets done.

func RegisterReplicationServiceHandlerServer added in v2.146.0

func RegisterReplicationServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server ReplicationServiceServer) error

RegisterReplicationServiceHandlerServer registers the http handlers for service ReplicationService to "mux". UnaryRPC :call ReplicationServiceServer directly. StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.

func RegisterReplicationServiceServer added in v2.146.0

func RegisterReplicationServiceServer(s *grpc.Server, srv ReplicationServiceServer)

func RestoreAccountExport added in v2.189.0

func RestoreAccountExport(ctx context.Context, reader io.Reader, coreAPI ipfs_interface.CoreAPI, odb *BertyOrbitDB, logger *zap.Logger, handlers ...RestoreAccountHandler) error

func SendSecretsToExistingMembers

func SendSecretsToExistingMembers(ctx context.Context, gctx *groupContext, contact crypto.PubKey) <-chan crypto.PubKey

func TagGroupContextPeers added in v2.184.0

func TagGroupContextPeers(ctx context.Context, gc *groupContext, ipfsCoreAPI ipfsutil.ExtendedCoreAPI, weight int)

func WatchNewMembersAndSendSecrets

func WatchNewMembersAndSendSecrets(ctx context.Context, logger *zap.Logger, gctx *groupContext) <-chan crypto.PubKey

Types

type AccountKeys

type AccountKeys interface {
	AccountPrivKey() (crypto.PrivKey, error)
	AccountProofPrivKey() (crypto.PrivKey, error)
	DevicePrivKey() (crypto.PrivKey, error)
	ContactGroupPrivKey(pk crypto.PubKey) (crypto.PrivKey, error)
	MemberDeviceForGroup(g *bertytypes.Group) (*OwnMemberDevice, error)
}

type AuthTokenIssuer added in v2.136.0

type AuthTokenIssuer struct {
	*AuthTokenVerifier
	// contains filtered or unexported fields
}

func NewAuthTokenIssuer added in v2.136.0

func NewAuthTokenIssuer(secret []byte, sk ed25519.PrivateKey) (*AuthTokenIssuer, error)

func (*AuthTokenIssuer) IssueCode added in v2.136.0

func (r *AuthTokenIssuer) IssueCode(codeChallenge string, services []string) (string, error)

func (*AuthTokenIssuer) IssueToken added in v2.136.0

func (r *AuthTokenIssuer) IssueToken(services []string) (string, error)

type AuthTokenServer added in v2.136.0

type AuthTokenServer struct {
	// contains filtered or unexported fields
}

func NewAuthTokenServer added in v2.136.0

func NewAuthTokenServer(secret []byte, sk ed25519.PrivateKey, services map[string]string, logger *zap.Logger) (*AuthTokenServer, error)

func (*AuthTokenServer) ServeHTTP added in v2.136.0

func (a *AuthTokenServer) ServeHTTP(w http.ResponseWriter, r *http.Request)

type AuthTokenVerifier added in v2.136.0

type AuthTokenVerifier struct {
	// contains filtered or unexported fields
}

func NewAuthTokenVerifier added in v2.136.0

func NewAuthTokenVerifier(secret []byte, pk ed25519.PublicKey) (*AuthTokenVerifier, error)

func (*AuthTokenVerifier) GRPCAuthInterceptor added in v2.136.0

func (r *AuthTokenVerifier) GRPCAuthInterceptor(serviceID string) func(ctx context.Context) (context.Context, error)

func (*AuthTokenVerifier) VerifyCode added in v2.136.0

func (r *AuthTokenVerifier) VerifyCode(code, codeVerifier string) (*bertytypes.ServicesTokenCode, error)

func (*AuthTokenVerifier) VerifyToken added in v2.136.0

func (r *AuthTokenVerifier) VerifyToken(token, serviceID string) (*bertytypes.ServicesTokenCode, error)

type BertyOrbitDB

type BertyOrbitDB struct {
	baseorbitdb.BaseOrbitDB
	// contains filtered or unexported fields
}

func NewBertyOrbitDB added in v2.141.0

func NewBertyOrbitDB(ctx context.Context, ipfs coreapi.CoreAPI, options *NewOrbitDBOptions) (*BertyOrbitDB, error)

func (*BertyOrbitDB) SetGroupSigPubKey added in v2.141.0

func (s *BertyOrbitDB) SetGroupSigPubKey(groupID string, pubKey crypto.PubKey) error

SetGroupSigPubKey registers a new group signature pubkey, mainly used to replicate a store data without needing to access to its content

type BertySignedKeyStore added in v2.32.1

type BertySignedKeyStore struct {
	sync.Map
}

func (*BertySignedKeyStore) CreateKey added in v2.32.1

func (s *BertySignedKeyStore) CreateKey(id string) (crypto.PrivKey, error)

func (*BertySignedKeyStore) GetKey added in v2.32.1

func (s *BertySignedKeyStore) GetKey(id string) (crypto.PrivKey, error)

func (*BertySignedKeyStore) HasKey added in v2.32.1

func (s *BertySignedKeyStore) HasKey(id string) (bool, error)

func (*BertySignedKeyStore) SetKey added in v2.32.1

func (s *BertySignedKeyStore) SetKey(pk crypto.PrivKey) error

func (*BertySignedKeyStore) Sign added in v2.32.1

func (s *BertySignedKeyStore) Sign(privKey crypto.PrivKey, bytes []byte) ([]byte, error)

func (*BertySignedKeyStore) Verify added in v2.32.1

func (s *BertySignedKeyStore) Verify(signature []byte, publicKey crypto.PubKey, data []byte) error

type Client

type Client interface {
	ProtocolServiceClient

	Close() error
}

func NewClient added in v2.39.0

func NewClient(ctx context.Context, svc Service, clientOpts []grpc.DialOption, serverOpts []grpc.ServerOption) (Client, error)

func NewClientFromServer added in v2.39.0

func NewClientFromServer(ctx context.Context, s *grpc.Server, svc Service, opts ...grpc.DialOption) (Client, error)

func TestingClient

func TestingClient(ctx context.Context, t *testing.T, svc Service, clientOpts []grpc.DialOption, serverOpts []grpc.ServerOption) (client Client, cleanup func())

func TestingClientFromServer added in v2.39.0

func TestingClientFromServer(ctx context.Context, t *testing.T, s *grpc.Server, svc Service, dialOpts ...grpc.DialOption) (client Client, cleanup func())

type ConnnectTestingProtocolFunc added in v2.39.0

type ConnnectTestingProtocolFunc func(*testing.T, libp2p_mocknet.Mocknet)

Connect Peers Helper

type ContextAuthValue added in v2.136.0

type ContextAuthValue uint32

type DeviceKeystore added in v2.32.1

type DeviceKeystore interface {
	AccountPrivKey() (crypto.PrivKey, error)
	AccountProofPrivKey() (crypto.PrivKey, error)
	DevicePrivKey() (crypto.PrivKey, error)
	ContactGroupPrivKey(pk crypto.PubKey) (crypto.PrivKey, error)
	MemberDeviceForGroup(g *bertytypes.Group) (*ownMemberDevice, error)
	RestoreAccountKeys(accountKey crypto.PrivKey, accountProofKey crypto.PrivKey) error
}

func NewDeviceKeystore added in v2.32.1

func NewDeviceKeystore(ks keystore.Keystore) DeviceKeystore

New creates a new deviceKeystore instance, if the keystore does not hold an deviceKeystore key, one will be created when required

func NewWithExistingKeys added in v2.32.1

func NewWithExistingKeys(ks keystore.Keystore, sk crypto.PrivKey, proofSK crypto.PrivKey) (DeviceKeystore, error)

NewWithExistingKeys creates a new deviceKeystore instance and registers the supplied secret key, useful when migrating deviceKeystore to another device

type EventMetadataReceived added in v2.66.1

type EventMetadataReceived struct {
	MetaEvent *bertytypes.GroupMetadataEvent
	Event     proto.Message
}

type GroupOpenMode added in v2.146.0

type GroupOpenMode uint64
const (
	GroupOpenModeUndefined GroupOpenMode = iota
	GroupOpenModeReplicate
	GroupOpenModeWrite
)

type MemberDevice

type MemberDevice struct {
	Member crypto.PubKey
	Device crypto.PubKey
	Secret *bertytypes.DeviceSecret
}

MemberDevice is a remote device part of a group

type NewOrbitDBOptions added in v2.141.0

type NewOrbitDBOptions struct {
	baseorbitdb.NewOrbitDBOptions
	Datastore       datastore.Batching
	MessageKeystore *messageKeystore
	DeviceKeystore  DeviceKeystore
}

type Opts

type Opts struct {
	Logger                 *zap.Logger
	IpfsCoreAPI            ipfsutil.ExtendedCoreAPI
	DeviceKeystore         DeviceKeystore
	DatastoreDir           string
	RootDatastore          datastore.Batching
	OrbitDB                *BertyOrbitDB
	TinderDriver           tinder.Driver
	RendezvousRotationBase time.Duration
	Host                   host.Host
	PubSub                 *pubsub.PubSub
	LocalOnly              bool
	// contains filtered or unexported fields
}

Opts contains optional configuration flags for building a new Client

type OwnMemberDevice

type OwnMemberDevice struct {
	Member crypto.PrivKey
	Device crypto.PrivKey
}

OwnMemberDevice is own local device part of a group

func (*OwnMemberDevice) Public

func (d *OwnMemberDevice) Public() *MemberDevice

type ProtocolServiceClient

type ProtocolServiceClient interface {
	// InstanceExportData exports instance data
	InstanceExportData(ctx context.Context, in *bertytypes.InstanceExportData_Request, opts ...grpc.CallOption) (ProtocolService_InstanceExportDataClient, error)
	// InstanceGetConfiguration gets current configuration of this protocol instance
	InstanceGetConfiguration(ctx context.Context, in *bertytypes.InstanceGetConfiguration_Request, opts ...grpc.CallOption) (*bertytypes.InstanceGetConfiguration_Reply, error)
	// ContactRequestReference retrieves the information required to create a reference (types.v1.ie. included in a shareable link) to the current account
	ContactRequestReference(ctx context.Context, in *bertytypes.ContactRequestReference_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestReference_Reply, error)
	// ContactRequestDisable disables incoming contact requests
	ContactRequestDisable(ctx context.Context, in *bertytypes.ContactRequestDisable_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestDisable_Reply, error)
	// ContactRequestEnable enables incoming contact requests
	ContactRequestEnable(ctx context.Context, in *bertytypes.ContactRequestEnable_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestEnable_Reply, error)
	// ContactRequestResetReference changes the contact request reference
	ContactRequestResetReference(ctx context.Context, in *bertytypes.ContactRequestResetReference_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestResetReference_Reply, error)
	// ContactRequestSend attempt to send a contact request
	ContactRequestSend(ctx context.Context, in *bertytypes.ContactRequestSend_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestSend_Reply, error)
	// ContactRequestAccept accepts a contact request
	ContactRequestAccept(ctx context.Context, in *bertytypes.ContactRequestAccept_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestAccept_Reply, error)
	// ContactRequestDiscard ignores a contact request, without informing the other user
	ContactRequestDiscard(ctx context.Context, in *bertytypes.ContactRequestDiscard_Request, opts ...grpc.CallOption) (*bertytypes.ContactRequestDiscard_Reply, error)
	// ContactBlock blocks a contact from sending requests
	ContactBlock(ctx context.Context, in *bertytypes.ContactBlock_Request, opts ...grpc.CallOption) (*bertytypes.ContactBlock_Reply, error)
	// ContactUnblock unblocks a contact from sending requests
	ContactUnblock(ctx context.Context, in *bertytypes.ContactUnblock_Request, opts ...grpc.CallOption) (*bertytypes.ContactUnblock_Reply, error)
	// ContactAliasKeySend send an alias key to a contact, the contact will be able to assert that your account is being present on a multi-member group
	ContactAliasKeySend(ctx context.Context, in *bertytypes.ContactAliasKeySend_Request, opts ...grpc.CallOption) (*bertytypes.ContactAliasKeySend_Reply, error)
	// MultiMemberGroupCreate creates a new multi-member group
	MultiMemberGroupCreate(ctx context.Context, in *bertytypes.MultiMemberGroupCreate_Request, opts ...grpc.CallOption) (*bertytypes.MultiMemberGroupCreate_Reply, error)
	// MultiMemberGroupJoin joins a multi-member group
	MultiMemberGroupJoin(ctx context.Context, in *bertytypes.MultiMemberGroupJoin_Request, opts ...grpc.CallOption) (*bertytypes.MultiMemberGroupJoin_Reply, error)
	// MultiMemberGroupLeave leaves a multi-member group
	MultiMemberGroupLeave(ctx context.Context, in *bertytypes.MultiMemberGroupLeave_Request, opts ...grpc.CallOption) (*bertytypes.MultiMemberGroupLeave_Reply, error)
	// MultiMemberGroupAliasResolverDisclose discloses your alias resolver key
	MultiMemberGroupAliasResolverDisclose(ctx context.Context, in *bertytypes.MultiMemberGroupAliasResolverDisclose_Request, opts ...grpc.CallOption) (*bertytypes.MultiMemberGroupAliasResolverDisclose_Reply, error)
	// MultiMemberGroupAdminRoleGrant grants an admin role to a group member
	MultiMemberGroupAdminRoleGrant(ctx context.Context, in *bertytypes.MultiMemberGroupAdminRoleGrant_Request, opts ...grpc.CallOption) (*bertytypes.MultiMemberGroupAdminRoleGrant_Reply, error)
	// MultiMemberGroupInvitationCreate creates an invitation to a multi-member group
	MultiMemberGroupInvitationCreate(ctx context.Context, in *bertytypes.MultiMemberGroupInvitationCreate_Request, opts ...grpc.CallOption) (*bertytypes.MultiMemberGroupInvitationCreate_Reply, error)
	// AppMetadataSend adds an app event to the metadata store, the message is encrypted using a symmetric key and readable by future group members
	AppMetadataSend(ctx context.Context, in *bertytypes.AppMetadataSend_Request, opts ...grpc.CallOption) (*bertytypes.AppMetadataSend_Reply, error)
	// AppMessageSend adds an app event to the message store, the message is encrypted using a derived key and readable by current group members
	AppMessageSend(ctx context.Context, in *bertytypes.AppMessageSend_Request, opts ...grpc.CallOption) (*bertytypes.AppMessageSend_Reply, error)
	// GroupMetadataList replays previous and subscribes to new metadata events from the group
	GroupMetadataList(ctx context.Context, in *bertytypes.GroupMetadataList_Request, opts ...grpc.CallOption) (ProtocolService_GroupMetadataListClient, error)
	// GroupMessageList replays previous and subscribes to new message events from the group
	GroupMessageList(ctx context.Context, in *bertytypes.GroupMessageList_Request, opts ...grpc.CallOption) (ProtocolService_GroupMessageListClient, error)
	// GroupInfo retrieves information about a group
	GroupInfo(ctx context.Context, in *bertytypes.GroupInfo_Request, opts ...grpc.CallOption) (*bertytypes.GroupInfo_Reply, error)
	// ActivateGroup explicitly opens a group
	ActivateGroup(ctx context.Context, in *bertytypes.ActivateGroup_Request, opts ...grpc.CallOption) (*bertytypes.ActivateGroup_Reply, error)
	// DeactivateGroup closes a group
	DeactivateGroup(ctx context.Context, in *bertytypes.DeactivateGroup_Request, opts ...grpc.CallOption) (*bertytypes.DeactivateGroup_Reply, error)
	// Monitor Group events
	MonitorGroup(ctx context.Context, in *bertytypes.MonitorGroup_Request, opts ...grpc.CallOption) (ProtocolService_MonitorGroupClient, error)
	DebugListGroups(ctx context.Context, in *bertytypes.DebugListGroups_Request, opts ...grpc.CallOption) (ProtocolService_DebugListGroupsClient, error)
	DebugInspectGroupStore(ctx context.Context, in *bertytypes.DebugInspectGroupStore_Request, opts ...grpc.CallOption) (ProtocolService_DebugInspectGroupStoreClient, error)
	DebugGroup(ctx context.Context, in *bertytypes.DebugGroup_Request, opts ...grpc.CallOption) (*bertytypes.DebugGroup_Reply, error)
	SystemInfo(ctx context.Context, in *bertytypes.SystemInfo_Request, opts ...grpc.CallOption) (*bertytypes.SystemInfo_Reply, error)
	// AuthServiceInitFlow Initialize an authentication flow
	AuthServiceInitFlow(ctx context.Context, in *bertytypes.AuthServiceInitFlow_Request, opts ...grpc.CallOption) (*bertytypes.AuthServiceInitFlow_Reply, error)
	// AuthServiceCompleteFlow Completes an authentication flow
	AuthServiceCompleteFlow(ctx context.Context, in *bertytypes.AuthServiceCompleteFlow_Request, opts ...grpc.CallOption) (*bertytypes.AuthServiceCompleteFlow_Reply, error)
	// ServicesTokenList Retrieves the list of services tokens
	ServicesTokenList(ctx context.Context, in *bertytypes.ServicesTokenList_Request, opts ...grpc.CallOption) (ProtocolService_ServicesTokenListClient, error)
	// ReplicationServiceRegisterGroup Asks a replication service to distribute a group contents
	ReplicationServiceRegisterGroup(ctx context.Context, in *bertytypes.ReplicationServiceRegisterGroup_Request, opts ...grpc.CallOption) (*bertytypes.ReplicationServiceRegisterGroup_Reply, error)
	// PeerList returns a list of P2P peers
	PeerList(ctx context.Context, in *bertytypes.PeerList_Request, opts ...grpc.CallOption) (*bertytypes.PeerList_Reply, error)
}

ProtocolServiceClient is the client API for ProtocolService service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewProtocolServiceClient

func NewProtocolServiceClient(cc *grpc.ClientConn) ProtocolServiceClient

type ProtocolServiceServer

type ProtocolServiceServer interface {
	// InstanceExportData exports instance data
	InstanceExportData(*bertytypes.InstanceExportData_Request, ProtocolService_InstanceExportDataServer) error
	// InstanceGetConfiguration gets current configuration of this protocol instance
	InstanceGetConfiguration(context.Context, *bertytypes.InstanceGetConfiguration_Request) (*bertytypes.InstanceGetConfiguration_Reply, error)
	// ContactRequestReference retrieves the information required to create a reference (types.v1.ie. included in a shareable link) to the current account
	ContactRequestReference(context.Context, *bertytypes.ContactRequestReference_Request) (*bertytypes.ContactRequestReference_Reply, error)
	// ContactRequestDisable disables incoming contact requests
	ContactRequestDisable(context.Context, *bertytypes.ContactRequestDisable_Request) (*bertytypes.ContactRequestDisable_Reply, error)
	// ContactRequestEnable enables incoming contact requests
	ContactRequestEnable(context.Context, *bertytypes.ContactRequestEnable_Request) (*bertytypes.ContactRequestEnable_Reply, error)
	// ContactRequestResetReference changes the contact request reference
	ContactRequestResetReference(context.Context, *bertytypes.ContactRequestResetReference_Request) (*bertytypes.ContactRequestResetReference_Reply, error)
	// ContactRequestSend attempt to send a contact request
	ContactRequestSend(context.Context, *bertytypes.ContactRequestSend_Request) (*bertytypes.ContactRequestSend_Reply, error)
	// ContactRequestAccept accepts a contact request
	ContactRequestAccept(context.Context, *bertytypes.ContactRequestAccept_Request) (*bertytypes.ContactRequestAccept_Reply, error)
	// ContactRequestDiscard ignores a contact request, without informing the other user
	ContactRequestDiscard(context.Context, *bertytypes.ContactRequestDiscard_Request) (*bertytypes.ContactRequestDiscard_Reply, error)
	// ContactBlock blocks a contact from sending requests
	ContactBlock(context.Context, *bertytypes.ContactBlock_Request) (*bertytypes.ContactBlock_Reply, error)
	// ContactUnblock unblocks a contact from sending requests
	ContactUnblock(context.Context, *bertytypes.ContactUnblock_Request) (*bertytypes.ContactUnblock_Reply, error)
	// ContactAliasKeySend send an alias key to a contact, the contact will be able to assert that your account is being present on a multi-member group
	ContactAliasKeySend(context.Context, *bertytypes.ContactAliasKeySend_Request) (*bertytypes.ContactAliasKeySend_Reply, error)
	// MultiMemberGroupCreate creates a new multi-member group
	MultiMemberGroupCreate(context.Context, *bertytypes.MultiMemberGroupCreate_Request) (*bertytypes.MultiMemberGroupCreate_Reply, error)
	// MultiMemberGroupJoin joins a multi-member group
	MultiMemberGroupJoin(context.Context, *bertytypes.MultiMemberGroupJoin_Request) (*bertytypes.MultiMemberGroupJoin_Reply, error)
	// MultiMemberGroupLeave leaves a multi-member group
	MultiMemberGroupLeave(context.Context, *bertytypes.MultiMemberGroupLeave_Request) (*bertytypes.MultiMemberGroupLeave_Reply, error)
	// MultiMemberGroupAliasResolverDisclose discloses your alias resolver key
	MultiMemberGroupAliasResolverDisclose(context.Context, *bertytypes.MultiMemberGroupAliasResolverDisclose_Request) (*bertytypes.MultiMemberGroupAliasResolverDisclose_Reply, error)
	// MultiMemberGroupAdminRoleGrant grants an admin role to a group member
	MultiMemberGroupAdminRoleGrant(context.Context, *bertytypes.MultiMemberGroupAdminRoleGrant_Request) (*bertytypes.MultiMemberGroupAdminRoleGrant_Reply, error)
	// MultiMemberGroupInvitationCreate creates an invitation to a multi-member group
	MultiMemberGroupInvitationCreate(context.Context, *bertytypes.MultiMemberGroupInvitationCreate_Request) (*bertytypes.MultiMemberGroupInvitationCreate_Reply, error)
	// AppMetadataSend adds an app event to the metadata store, the message is encrypted using a symmetric key and readable by future group members
	AppMetadataSend(context.Context, *bertytypes.AppMetadataSend_Request) (*bertytypes.AppMetadataSend_Reply, error)
	// AppMessageSend adds an app event to the message store, the message is encrypted using a derived key and readable by current group members
	AppMessageSend(context.Context, *bertytypes.AppMessageSend_Request) (*bertytypes.AppMessageSend_Reply, error)
	// GroupMetadataList replays previous and subscribes to new metadata events from the group
	GroupMetadataList(*bertytypes.GroupMetadataList_Request, ProtocolService_GroupMetadataListServer) error
	// GroupMessageList replays previous and subscribes to new message events from the group
	GroupMessageList(*bertytypes.GroupMessageList_Request, ProtocolService_GroupMessageListServer) error
	// GroupInfo retrieves information about a group
	GroupInfo(context.Context, *bertytypes.GroupInfo_Request) (*bertytypes.GroupInfo_Reply, error)
	// ActivateGroup explicitly opens a group
	ActivateGroup(context.Context, *bertytypes.ActivateGroup_Request) (*bertytypes.ActivateGroup_Reply, error)
	// DeactivateGroup closes a group
	DeactivateGroup(context.Context, *bertytypes.DeactivateGroup_Request) (*bertytypes.DeactivateGroup_Reply, error)
	// Monitor Group events
	MonitorGroup(*bertytypes.MonitorGroup_Request, ProtocolService_MonitorGroupServer) error
	DebugListGroups(*bertytypes.DebugListGroups_Request, ProtocolService_DebugListGroupsServer) error
	DebugInspectGroupStore(*bertytypes.DebugInspectGroupStore_Request, ProtocolService_DebugInspectGroupStoreServer) error
	DebugGroup(context.Context, *bertytypes.DebugGroup_Request) (*bertytypes.DebugGroup_Reply, error)
	SystemInfo(context.Context, *bertytypes.SystemInfo_Request) (*bertytypes.SystemInfo_Reply, error)
	// AuthServiceInitFlow Initialize an authentication flow
	AuthServiceInitFlow(context.Context, *bertytypes.AuthServiceInitFlow_Request) (*bertytypes.AuthServiceInitFlow_Reply, error)
	// AuthServiceCompleteFlow Completes an authentication flow
	AuthServiceCompleteFlow(context.Context, *bertytypes.AuthServiceCompleteFlow_Request) (*bertytypes.AuthServiceCompleteFlow_Reply, error)
	// ServicesTokenList Retrieves the list of services tokens
	ServicesTokenList(*bertytypes.ServicesTokenList_Request, ProtocolService_ServicesTokenListServer) error
	// ReplicationServiceRegisterGroup Asks a replication service to distribute a group contents
	ReplicationServiceRegisterGroup(context.Context, *bertytypes.ReplicationServiceRegisterGroup_Request) (*bertytypes.ReplicationServiceRegisterGroup_Reply, error)
	// PeerList returns a list of P2P peers
	PeerList(context.Context, *bertytypes.PeerList_Request) (*bertytypes.PeerList_Reply, error)
}

ProtocolServiceServer is the server API for ProtocolService service.

type ProtocolService_DebugInspectGroupStoreClient added in v2.61.0

type ProtocolService_DebugInspectGroupStoreClient interface {
	Recv() (*bertytypes.DebugInspectGroupStore_Reply, error)
	grpc.ClientStream
}

type ProtocolService_DebugInspectGroupStoreServer added in v2.61.0

type ProtocolService_DebugInspectGroupStoreServer interface {
	Send(*bertytypes.DebugInspectGroupStore_Reply) error
	grpc.ServerStream
}

type ProtocolService_DebugListGroupsClient added in v2.61.0

type ProtocolService_DebugListGroupsClient interface {
	Recv() (*bertytypes.DebugListGroups_Reply, error)
	grpc.ClientStream
}

type ProtocolService_DebugListGroupsServer added in v2.61.0

type ProtocolService_DebugListGroupsServer interface {
	Send(*bertytypes.DebugListGroups_Reply) error
	grpc.ServerStream
}

type ProtocolService_GroupMessageListClient

type ProtocolService_GroupMessageListClient interface {
	Recv() (*bertytypes.GroupMessageEvent, error)
	grpc.ClientStream
}

type ProtocolService_GroupMessageListServer

type ProtocolService_GroupMessageListServer interface {
	Send(*bertytypes.GroupMessageEvent) error
	grpc.ServerStream
}

type ProtocolService_GroupMetadataListClient

type ProtocolService_GroupMetadataListClient interface {
	Recv() (*bertytypes.GroupMetadataEvent, error)
	grpc.ClientStream
}

type ProtocolService_GroupMetadataListServer

type ProtocolService_GroupMetadataListServer interface {
	Send(*bertytypes.GroupMetadataEvent) error
	grpc.ServerStream
}

type ProtocolService_InstanceExportDataClient added in v2.189.0

type ProtocolService_InstanceExportDataClient interface {
	Recv() (*bertytypes.InstanceExportData_Reply, error)
	grpc.ClientStream
}

type ProtocolService_InstanceExportDataServer added in v2.189.0

type ProtocolService_InstanceExportDataServer interface {
	Send(*bertytypes.InstanceExportData_Reply) error
	grpc.ServerStream
}

type ProtocolService_MonitorGroupClient added in v2.210.1

type ProtocolService_MonitorGroupClient interface {
	Recv() (*bertytypes.MonitorGroup_Reply, error)
	grpc.ClientStream
}

type ProtocolService_MonitorGroupServer added in v2.210.1

type ProtocolService_MonitorGroupServer interface {
	Send(*bertytypes.MonitorGroup_Reply) error
	grpc.ServerStream
}

type ProtocolService_ServicesTokenListClient added in v2.136.0

type ProtocolService_ServicesTokenListClient interface {
	Recv() (*bertytypes.ServicesTokenList_Reply, error)
	grpc.ClientStream
}

type ProtocolService_ServicesTokenListServer added in v2.136.0

type ProtocolService_ServicesTokenListServer interface {
	Send(*bertytypes.ServicesTokenList_Reply) error
	grpc.ServerStream
}

type ReplicationClient added in v2.146.0

type ReplicationClient interface {
	ReplicationServiceClient

	Close() error
}

type ReplicationService added in v2.146.0

type ReplicationService interface {
	ReplicationServiceServer

	Close() error
}

Service is the main Berty Protocol interface

func NewReplicationService added in v2.146.0

func NewReplicationService(ctx context.Context, store ds.Datastore, odb *BertyOrbitDB, logger *zap.Logger) (ReplicationService, error)

type ReplicationServiceClient added in v2.146.0

type ReplicationServiceClient interface {
	// ReplicateGroup
	ReplicateGroup(ctx context.Context, in *bertytypes.ReplicationServiceReplicateGroup_Request, opts ...grpc.CallOption) (*bertytypes.ReplicationServiceReplicateGroup_Reply, error)
}

ReplicationServiceClient is the client API for ReplicationService service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewReplicationServiceClient added in v2.146.0

func NewReplicationServiceClient(cc *grpc.ClientConn) ReplicationServiceClient

type ReplicationServiceServer added in v2.146.0

type ReplicationServiceServer interface {
	// ReplicateGroup
	ReplicateGroup(context.Context, *bertytypes.ReplicationServiceReplicateGroup_Request) (*bertytypes.ReplicationServiceReplicateGroup_Reply, error)
}

ReplicationServiceServer is the server API for ReplicationService service.

type RestoreAccountHandler added in v2.200.0

type RestoreAccountHandler struct {
	Handler     func(header *tar.Header, reader *tar.Reader) (bool, error)
	PostProcess func() error
}

type Service added in v2.35.0

type Service interface {
	ProtocolServiceServer

	Close() error
	Status() Status
	IpfsCoreAPI() ipfs_interface.CoreAPI
}

Service is the main Berty Protocol interface

func New

func New(ctx context.Context, opts Opts) (Service, error)

New initializes a new Service

Example (Basic)
package main

import (
	"context"
	"fmt"

	"berty.tech/berty/v2/go/pkg/bertyprotocol"
	"berty.tech/berty/v2/go/pkg/bertytypes"
)

func main() {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()

	client, err := bertyprotocol.New(ctx, bertyprotocol.Opts{})
	if err != nil {
		panic(err)
	}

	ret, err := client.InstanceGetConfiguration(ctx, &bertytypes.InstanceGetConfiguration_Request{})
	if err != nil {
		panic(err)
	}

	for _, listener := range ret.Listeners {
		if listener == "/p2p-circuit" {
			fmt.Println(listener)
		}
	}

}
Output:

/p2p-circuit

func TestingService added in v2.39.0

func TestingService(ctx context.Context, t *testing.T, opts Opts) (Service, func())

TestingService returns a configured Client struct with in-memory contexts.

type Status

type Status struct {
	DB       error
	Protocol error
}

Status contains results of status checks

type Swiper added in v2.109.0

type Swiper struct {
	// contains filtered or unexported fields
}

func NewSwiper added in v2.109.0

func NewSwiper(logger *zap.Logger, ps *pubsub.PubSub, interval time.Duration) *Swiper

func (*Swiper) Announce added in v2.109.0

func (s *Swiper) Announce(ctx context.Context, topic, seed []byte)

watch looks for peers providing a resource

func (*Swiper) WatchTopic added in v2.109.0

func (s *Swiper) WatchTopic(ctx context.Context, topic, seed []byte, out chan<- peer.AddrInfo, done func())

WatchTopic looks for peers providing a resource. 'done' is used to alert parent when everything is done, to avoid data races.

type TestingOpts added in v2.39.0

type TestingOpts struct {
	Logger         *zap.Logger
	TracerProvider trace.Provider
	Mocknet        libp2p_mocknet.Mocknet
	RDVPeer        peer.AddrInfo
	DeviceKeystore DeviceKeystore
	CoreAPIMock    ipfsutil.CoreAPIMock
	OrbitDB        *BertyOrbitDB
}

type TestingProtocol added in v2.39.0

type TestingProtocol struct {
	Opts *Opts

	Service Service
	Client  Client
	IPFS    ipfsutil.CoreAPIMock
}

func NewTestingProtocol added in v2.39.0

func NewTestingProtocol(ctx context.Context, t *testing.T, opts *TestingOpts, ds datastore.Batching) (*TestingProtocol, func())

func NewTestingProtocolWithMockedPeers added in v2.122.0

func NewTestingProtocolWithMockedPeers(ctx context.Context, t *testing.T, opts *TestingOpts, ds datastore.Batching, amount int) ([]*TestingProtocol, func())

type TestingReplicationPeer added in v2.146.0

type TestingReplicationPeer struct {
	Service ReplicationService
}

func NewReplicationMockedPeer added in v2.146.0

func NewReplicationMockedPeer(ctx context.Context, t *testing.T, secret []byte, sk ed25519.PublicKey, opts *TestingOpts) (*TestingReplicationPeer, func())

type UnimplementedProtocolServiceServer

type UnimplementedProtocolServiceServer struct {
}

UnimplementedProtocolServiceServer can be embedded to have forward compatible implementations.

func (*UnimplementedProtocolServiceServer) ActivateGroup

func (*UnimplementedProtocolServiceServer) AppMessageSend

func (*UnimplementedProtocolServiceServer) AppMetadataSend

func (*UnimplementedProtocolServiceServer) AuthServiceCompleteFlow added in v2.136.0

func (*UnimplementedProtocolServiceServer) AuthServiceInitFlow added in v2.136.0

func (*UnimplementedProtocolServiceServer) ContactBlock

func (*UnimplementedProtocolServiceServer) ContactRequestSend

func (*UnimplementedProtocolServiceServer) ContactUnblock

func (*UnimplementedProtocolServiceServer) DeactivateGroup

func (*UnimplementedProtocolServiceServer) DebugGroup added in v2.92.0

func (*UnimplementedProtocolServiceServer) DebugInspectGroupStore added in v2.61.0

func (*UnimplementedProtocolServiceServer) DebugListGroups added in v2.61.0

func (*UnimplementedProtocolServiceServer) GroupInfo

func (*UnimplementedProtocolServiceServer) GroupMessageList

func (*UnimplementedProtocolServiceServer) GroupMetadataList

func (*UnimplementedProtocolServiceServer) MonitorGroup added in v2.210.1

func (*UnimplementedProtocolServiceServer) PeerList added in v2.188.0

func (*UnimplementedProtocolServiceServer) ReplicationServiceRegisterGroup added in v2.146.0

func (*UnimplementedProtocolServiceServer) ServicesTokenList added in v2.136.0

func (*UnimplementedProtocolServiceServer) SystemInfo added in v2.148.0

type UnimplementedReplicationServiceServer added in v2.146.0

type UnimplementedReplicationServiceServer struct {
}

UnimplementedReplicationServiceServer can be embedded to have forward compatible implementations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL