Documentation ¶
Index ¶
- Variables
- func BackgroundContext(sourceCtx context.Context, env appTypeSource) context.Context
- func Context(ctx context.Context, env appTypeSource, mode keybase1.TLFIdentifyBehavior, ...) context.Context
- func CtxAddLogTags(ctx context.Context, env appTypeSource) context.Context
- func GetInboxQueryTLFInfo(ctx context.Context, tlfInfo types.TLFInfoSource, ...) (*types.TLFInfo, error)
- func IdentifyMode(ctx context.Context) (ib keybase1.TLFIdentifyBehavior, breaks *[]keybase1.TLFIdentifyFailure, ...)
- func IdentifyModeCtx(ctx context.Context, mode keybase1.TLFIdentifyBehavior, ...) context.Context
- func NewConversationSource(g *globals.Context, typ string, boxer *Boxer, storage *storage.Storage, ...) types.ConversationSource
- func NewInboxSource(g *globals.Context, typ string, ri func() chat1.RemoteInterface, ...) types.InboxSource
- type AttachmentInfo
- type AttachmentStash
- type AttachmentStore
- func (a *AttachmentStore) DeleteAsset(ctx context.Context, params chat1.S3Params, signer s3.Signer, ...) error
- func (a *AttachmentStore) DeleteAssets(ctx context.Context, params chat1.S3Params, signer s3.Signer, ...) error
- func (a *AttachmentStore) DownloadAsset(ctx context.Context, params chat1.S3Params, asset chat1.Asset, w io.Writer, ...) error
- func (a *AttachmentStore) PutS3(ctx context.Context, r io.Reader, size int64, task *UploadTask, ...) (*PutS3Result, error)
- func (a *AttachmentStore) UploadAsset(ctx context.Context, task *UploadTask) (chat1.Asset, error)
- type BlockingLocalizer
- type BlockingSender
- func (s *BlockingSender) Prepare(ctx context.Context, plaintext chat1.MessagePlaintext, ...) (*chat1.MessageBoxed, []chat1.Asset, error)
- func (s *BlockingSender) Send(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext, ...) (obid chat1.OutboxID, msgID chat1.MessageID, rl *chat1.RateLimit, err error)
- func (s *BlockingSender) Sign(payload []byte) ([]byte, error)
- type BodyHashInvalid
- type Boxer
- func (b *Boxer) BoxMessage(ctx context.Context, msg chat1.MessagePlaintext, ...) (*chat1.MessageBoxed, error)
- func (b *Boxer) CompareTlfNames(ctx context.Context, tlfName1, tlfName2 string, tlfPublic bool) (bool, error)
- func (b *Boxer) UnboxMessage(ctx context.Context, boxed chat1.MessageBoxed, convID chat1.ConversationID, ...) (chat1.MessageUnboxed, UnboxingError)
- func (b *Boxer) UnboxMessages(ctx context.Context, boxed []chat1.MessageBoxed, convID chat1.ConversationID, ...) (unboxed []chat1.MessageUnboxed, err error)
- func (b *Boxer) UnboxThread(ctx context.Context, boxed chat1.ThreadViewBoxed, convID chat1.ConversationID, ...) (thread chat1.ThreadView, err error)
- func (b *Boxer) ValidSenderKey(ctx context.Context, sender gregor1.UID, key []byte, ctime gregor1.Time) (found, validAtCTime bool, revoked *gregor1.Time, unboxErr UnboxingError)
- type BoxingCryptKeysError
- type BoxingError
- type BufferSource
- type ByMsgID
- type ChatThreadConsistencyError
- type ConsistencyErrorCode
- type Decrypter
- type Deliverer
- func (s *Deliverer) Connected(ctx context.Context)
- func (s *Deliverer) Disconnected(ctx context.Context)
- func (s *Deliverer) ForceDeliverLoop(ctx context.Context)
- func (s *Deliverer) IsOffline() bool
- func (s *Deliverer) Queue(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext, ...) (obr chat1.OutboxRecord, err error)
- func (s *Deliverer) SetClock(clock clockwork.Clock)
- func (s *Deliverer) SetSender(sender Sender)
- func (s *Deliverer) Start(ctx context.Context, uid gregor1.UID)
- func (s *Deliverer) Stop(ctx context.Context) chan struct{}
- type DelivererInfoError
- type Encrypter
- type ErrorWrapper
- type FetchRetrier
- func (f *FetchRetrier) Connected(ctx context.Context)
- func (f *FetchRetrier) Disconnected(ctx context.Context)
- func (f *FetchRetrier) Failure(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (err error)
- func (f *FetchRetrier) Force(ctx context.Context)
- func (f *FetchRetrier) IsOffline() bool
- func (f *FetchRetrier) SetClock(clock clockwork.Clock)
- func (f *FetchRetrier) Start(ctx context.Context, uid gregor1.UID)
- func (f *FetchRetrier) Stop(ctx context.Context) chan struct{}
- func (f *FetchRetrier) Success(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (err error)
- type FileStash
- type HeaderMismatchError
- type HybridConversationSource
- func (s *HybridConversationSource) Clear(convID chat1.ConversationID, uid gregor1.UID) error
- func (s HybridConversationSource) Connected(ctx context.Context)
- func (s HybridConversationSource) Disconnected(ctx context.Context)
- func (s *HybridConversationSource) GetMessages(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) ([]chat1.MessageUnboxed, error)
- func (s *HybridConversationSource) GetMessagesWithRemotes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) ([]chat1.MessageUnboxed, error)
- func (s HybridConversationSource) IsOffline() bool
- func (s *HybridConversationSource) Pull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (thread chat1.ThreadView, rl []*chat1.RateLimit, err error)
- func (s *HybridConversationSource) PullLocalOnly(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (tv chat1.ThreadView, err error)
- func (s *HybridConversationSource) Push(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (chat1.MessageUnboxed, bool, error)
- func (s HybridConversationSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
- func (s HybridConversationSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
- func (s HybridConversationSource) TransformSupersedes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) ([]chat1.MessageUnboxed, error)
- type HybridInboxSource
- func (b HybridInboxSource) Connected(ctx context.Context)
- func (b HybridInboxSource) Disconnected(ctx context.Context)
- func (b HybridInboxSource) IsOffline() bool
- func (s *HybridInboxSource) NewConversation(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (err error)
- func (s *HybridInboxSource) NewMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (conv *chat1.ConversationLocal, err error)
- func (s *HybridInboxSource) Read(ctx context.Context, uid gregor1.UID, localizer types.ChatLocalizer, ...) (inbox chat1.Inbox, rl *chat1.RateLimit, err error)
- func (s *HybridInboxSource) ReadMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (conv *chat1.ConversationLocal, err error)
- func (s *HybridInboxSource) ReadUnverified(ctx context.Context, uid gregor1.UID, useLocalData bool, ...) (res chat1.Inbox, rl *chat1.RateLimit, err error)
- func (b HybridInboxSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
- func (s *HybridInboxSource) SetStatus(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (conv *chat1.ConversationLocal, err error)
- func (b HybridInboxSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
- func (s *HybridInboxSource) TlfFinalize(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (convs []chat1.ConversationLocal, err error)
- type IdentifyChangedHandler
- type IdentifyNotifier
- type KBFSTLFInfoSource
- func (t *KBFSTLFInfoSource) CompleteAndCanonicalizePrivateTlfName(ctx context.Context, tlfName string) (res keybase1.CanonicalTLFNameAndIDWithBreaks, err error)
- func (t *KBFSTLFInfoSource) CryptKeys(ctx context.Context, tlfName string) (res keybase1.GetTLFCryptKeysRes, ferr error)
- func (t *KBFSTLFInfoSource) Lookup(ctx context.Context, tlfName string, visibility chat1.TLFVisibility) (*types.TLFInfo, error)
- func (t *KBFSTLFInfoSource) PublicCanonicalTLFNameAndID(ctx context.Context, tlfName string) (res keybase1.CanonicalTLFNameAndIDWithBreaks, ferr error)
- type KeyFinder
- type KeyFinderImpl
- type NonblockInboxResult
- type NonblockingLocalizer
- type NonblockingSender
- func (s *NonblockingSender) Prepare(ctx context.Context, plaintext chat1.MessagePlaintext, ...) (*chat1.MessageBoxed, []chat1.Asset, error)
- func (s *NonblockingSender) Send(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext, ...) (chat1.OutboxID, chat1.MessageID, *chat1.RateLimit, error)
- type OfflineError
- type PermanentUnboxingError
- type PreviewRes
- type ProgressReporter
- type PushHandler
- type PutS3Result
- type ReadResetter
- type RemoteClient
- type RemoteConversationSource
- func (s *RemoteConversationSource) Clear(convID chat1.ConversationID, uid gregor1.UID) error
- func (s RemoteConversationSource) Connected(ctx context.Context)
- func (s RemoteConversationSource) Disconnected(ctx context.Context)
- func (s *RemoteConversationSource) GetMessages(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) ([]chat1.MessageUnboxed, error)
- func (s *RemoteConversationSource) GetMessagesWithRemotes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) ([]chat1.MessageUnboxed, error)
- func (s RemoteConversationSource) IsOffline() bool
- func (s *RemoteConversationSource) Pull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (chat1.ThreadView, []*chat1.RateLimit, error)
- func (s *RemoteConversationSource) PullLocalOnly(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (chat1.ThreadView, error)
- func (s *RemoteConversationSource) Push(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) (chat1.MessageUnboxed, bool, error)
- func (s RemoteConversationSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
- func (s RemoteConversationSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
- func (s RemoteConversationSource) TransformSupersedes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, ...) ([]chat1.MessageUnboxed, error)
- type RemoteInboxSource
- func (b RemoteInboxSource) Connected(ctx context.Context)
- func (b RemoteInboxSource) Disconnected(ctx context.Context)
- func (b RemoteInboxSource) IsOffline() bool
- func (s *RemoteInboxSource) NewConversation(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) error
- func (s *RemoteInboxSource) NewMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (*chat1.ConversationLocal, error)
- func (s *RemoteInboxSource) Read(ctx context.Context, uid gregor1.UID, localizer types.ChatLocalizer, ...) (chat1.Inbox, *chat1.RateLimit, error)
- func (s *RemoteInboxSource) ReadMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (*chat1.ConversationLocal, error)
- func (s *RemoteInboxSource) ReadUnverified(ctx context.Context, uid gregor1.UID, useLocalData bool, ...) (chat1.Inbox, *chat1.RateLimit, error)
- func (b RemoteInboxSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
- func (s *RemoteInboxSource) SetStatus(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) (*chat1.ConversationLocal, error)
- func (b RemoteInboxSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
- func (s *RemoteInboxSource) TlfFinalize(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, ...) ([]chat1.ConversationLocal, error)
- type Sender
- type Server
- func (h *Server) CancelPost(ctx context.Context, outboxID chat1.OutboxID) (err error)
- func (h *Server) DownloadAttachmentLocal(ctx context.Context, arg chat1.DownloadAttachmentLocalArg) (res chat1.DownloadAttachmentLocalRes, err error)
- func (h *Server) DownloadFileAttachmentLocal(ctx context.Context, arg chat1.DownloadFileAttachmentLocalArg) (res chat1.DownloadAttachmentLocalRes, err error)
- func (h *Server) FindConversationsLocal(ctx context.Context, arg chat1.FindConversationsLocalArg) (res chat1.FindConversationsLocalRes, err error)
- func (h *Server) GetCachedThread(ctx context.Context, arg chat1.GetCachedThreadArg) (res chat1.GetThreadLocalRes, err error)
- func (h *Server) GetConversationForCLILocal(ctx context.Context, arg chat1.GetConversationForCLILocalQuery) (res chat1.GetConversationForCLILocalRes, err error)
- func (h *Server) GetInboxAndUnboxLocal(ctx context.Context, arg chat1.GetInboxAndUnboxLocalArg) (res chat1.GetInboxAndUnboxLocalRes, err error)
- func (h *Server) GetInboxNonblockLocal(ctx context.Context, arg chat1.GetInboxNonblockLocalArg) (res chat1.NonblockFetchRes, err error)
- func (h *Server) GetInboxSummaryForCLILocal(ctx context.Context, arg chat1.GetInboxSummaryForCLILocalQuery) (res chat1.GetInboxSummaryForCLILocalRes, err error)
- func (h *Server) GetMessagesLocal(ctx context.Context, arg chat1.GetMessagesLocalArg) (res chat1.GetMessagesLocalRes, err error)
- func (h *Server) GetThreadLocal(ctx context.Context, arg chat1.GetThreadLocalArg) (res chat1.GetThreadLocalRes, err error)
- func (h *Server) GetThreadNonblock(ctx context.Context, arg chat1.GetThreadNonblockArg) (res chat1.NonblockFetchRes, fullErr error)
- func (h *Server) MakePreview(ctx context.Context, arg chat1.MakePreviewArg) (res chat1.MakePreviewRes, err error)
- func (h *Server) MarkAsReadLocal(ctx context.Context, arg chat1.MarkAsReadLocalArg) (res chat1.MarkAsReadLocalRes, err error)
- func (h *Server) NewConversationLocal(ctx context.Context, arg chat1.NewConversationLocalArg) (res chat1.NewConversationLocalRes, reserr error)
- func (h *Server) PostAttachmentLocal(ctx context.Context, arg chat1.PostAttachmentLocalArg) (res chat1.PostLocalRes, err error)
- func (h *Server) PostDeleteNonblock(ctx context.Context, arg chat1.PostDeleteNonblockArg) (chat1.PostLocalNonblockRes, error)
- func (h *Server) PostEditNonblock(ctx context.Context, arg chat1.PostEditNonblockArg) (chat1.PostLocalNonblockRes, error)
- func (h *Server) PostFileAttachmentLocal(ctx context.Context, arg chat1.PostFileAttachmentLocalArg) (res chat1.PostLocalRes, err error)
- func (h *Server) PostLocal(ctx context.Context, arg chat1.PostLocalArg) (res chat1.PostLocalRes, err error)
- func (h *Server) PostLocalNonblock(ctx context.Context, arg chat1.PostLocalNonblockArg) (res chat1.PostLocalNonblockRes, err error)
- func (h *Server) PostTextNonblock(ctx context.Context, arg chat1.PostTextNonblockArg) (chat1.PostLocalNonblockRes, error)
- func (h *Server) RetryPost(ctx context.Context, outboxID chat1.OutboxID) (err error)
- func (h *Server) SetConversationStatusLocal(ctx context.Context, arg chat1.SetConversationStatusLocalArg) (res chat1.SetConversationStatusLocalRes, err error)
- func (h *Server) Sign(payload []byte) ([]byte, error)
- type ServerConnection
- type SignDecrypter
- type SignEncrypter
- func (s *SignEncrypter) Encrypt(r io.Reader) (io.Reader, error)
- func (s *SignEncrypter) EncryptKey() []byte
- func (s *SignEncrypter) EncryptResume(r io.Reader, nonce signencrypt.Nonce, encKey signencrypt.SecretboxKey, ...) (io.Reader, error)
- func (s *SignEncrypter) EncryptWithNonce(r io.Reader, nonce signencrypt.Nonce) (io.Reader, error)
- func (s *SignEncrypter) EncryptedLen(size int) int
- func (s *SignEncrypter) SignKey() []byte
- func (s *SignEncrypter) VerifyKey() []byte
- type StashKey
- type Syncer
- func (s *Syncer) Connected(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID, ...) (err error)
- func (s *Syncer) Disconnected(ctx context.Context)
- func (s *Syncer) IsConnected(ctx context.Context) bool
- func (s *Syncer) RegisterOfflinable(offlinable types.Offlinable)
- func (s *Syncer) SendChatStaleNotifications(ctx context.Context, uid gregor1.UID, convIDs []chat1.ConversationID, ...)
- func (s *Syncer) SetClock(clock clockwork.Clock)
- func (s *Syncer) Shutdown()
- func (s *Syncer) Sync(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID, ...) (err error)
- type TransientUnboxingError
- type UISource
- type UnboxingError
- type UploadTask
- type VersionError
Constants ¶
This section is empty.
Variables ¶
var ErrAbortOnPartMismatch = errors.New("local part mismatch, aborting upload")
ErrAbortOnPartMismatch is returned when there is a mismatch between a current part and a previous attempt part. If ErrAbortOnPartMismatch is returned, the caller should abort the upload attempt and start from scratch.
var ErrChatServerTimeout = errors.New("timeout calling chat server")
var ErrPartNotFound = errors.New("part does not exist in stash")
Functions ¶
func BackgroundContext ¶ added in v1.0.19
func Context ¶ added in v1.0.19
func Context(ctx context.Context, env appTypeSource, mode keybase1.TLFIdentifyBehavior, breaks *[]keybase1.TLFIdentifyFailure, notifier *IdentifyNotifier) context.Context
func CtxAddLogTags ¶ added in v1.0.19
func GetInboxQueryTLFInfo ¶ added in v1.0.19
func GetInboxQueryTLFInfo(ctx context.Context, tlfInfo types.TLFInfoSource, lquery *chat1.GetInboxLocalQuery) (*types.TLFInfo, error)
func IdentifyMode ¶ added in v1.0.19
func IdentifyMode(ctx context.Context) (ib keybase1.TLFIdentifyBehavior, breaks *[]keybase1.TLFIdentifyFailure, ok bool)
func IdentifyModeCtx ¶ added in v1.0.22
func IdentifyModeCtx(ctx context.Context, mode keybase1.TLFIdentifyBehavior, breaks *[]keybase1.TLFIdentifyFailure) context.Context
func NewConversationSource ¶
func NewConversationSource(g *globals.Context, typ string, boxer *Boxer, storage *storage.Storage, ri func() chat1.RemoteInterface) types.ConversationSource
func NewInboxSource ¶ added in v1.0.19
func NewInboxSource(g *globals.Context, typ string, ri func() chat1.RemoteInterface, tlfInfoSource types.TLFInfoSource) types.InboxSource
Types ¶
type AttachmentInfo ¶ added in v1.0.19
type AttachmentInfo struct { ObjectKey string // s3 destination EncKey signencrypt.SecretboxKey // encryption key SignKey signencrypt.SignKey // signing key VerifyKey signencrypt.VerifyKey // verification key Parts map[int]string // map of parts uploaded to S3, key == part number, value == hash of ciphertext StartedAt time.Time // when the upload started }
type AttachmentStash ¶ added in v1.0.19
type AttachmentStore ¶ added in v1.0.19
type AttachmentStore struct {
// contains filtered or unexported fields
}
func NewAttachmentStore ¶ added in v1.0.19
func NewAttachmentStore(log logger.Logger, runtimeDir string) *AttachmentStore
NewAttachmentStore creates a standard AttachmentStore that uses a real S3 connection.
func (*AttachmentStore) DeleteAsset ¶ added in v1.0.19
func (*AttachmentStore) DeleteAssets ¶ added in v1.0.19
func (*AttachmentStore) DownloadAsset ¶ added in v1.0.19
func (a *AttachmentStore) DownloadAsset(ctx context.Context, params chat1.S3Params, asset chat1.Asset, w io.Writer, signer s3.Signer, progress ProgressReporter) error
DownloadAsset gets an object from S3 as described in asset.
func (*AttachmentStore) PutS3 ¶ added in v1.0.19
func (a *AttachmentStore) PutS3(ctx context.Context, r io.Reader, size int64, task *UploadTask, previous *AttachmentInfo) (*PutS3Result, error)
PutS3 uploads the data in Reader r to S3. It chooses whether to use putSingle or putMultiPipeline based on the size of the object.
func (*AttachmentStore) UploadAsset ¶ added in v1.0.19
func (a *AttachmentStore) UploadAsset(ctx context.Context, task *UploadTask) (chat1.Asset, error)
type BlockingLocalizer ¶ added in v1.0.19
type BlockingLocalizer struct { globals.Contextified // contains filtered or unexported fields }
func NewBlockingLocalizer ¶ added in v1.0.19
func NewBlockingLocalizer(g *globals.Context, tlfInfoSource types.TLFInfoSource) *BlockingLocalizer
func (*BlockingLocalizer) Localize ¶ added in v1.0.19
func (b *BlockingLocalizer) Localize(ctx context.Context, uid gregor1.UID, inbox chat1.Inbox) (res []chat1.ConversationLocal, err error)
func (*BlockingLocalizer) Name ¶ added in v1.0.19
func (b *BlockingLocalizer) Name() string
func (*BlockingLocalizer) SetOffline ¶ added in v1.0.19
func (b *BlockingLocalizer) SetOffline()
type BlockingSender ¶ added in v1.0.19
type BlockingSender struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewBlockingSender ¶ added in v1.0.19
func NewBlockingSender(g *globals.Context, boxer *Boxer, store *AttachmentStore, getRi func() chat1.RemoteInterface) *BlockingSender
func (*BlockingSender) Prepare ¶ added in v1.0.19
func (s *BlockingSender) Prepare(ctx context.Context, plaintext chat1.MessagePlaintext, convID *chat1.ConversationID) (*chat1.MessageBoxed, []chat1.Asset, error)
Prepare a message to be sent. Returns (boxedMessage, pendingAssetDeletes, error)
type BodyHashInvalid ¶ added in v1.0.19
type BodyHashInvalid struct{}
func (BodyHashInvalid) Error ¶ added in v1.0.19
func (e BodyHashInvalid) Error() string
type Boxer ¶
type Boxer struct { utils.DebugLabeler globals.Contextified // contains filtered or unexported fields }
func (*Boxer) BoxMessage ¶
func (b *Boxer) BoxMessage(ctx context.Context, msg chat1.MessagePlaintext, signingKeyPair libkb.NaclSigningKeyPair) (*chat1.MessageBoxed, error)
boxMessage encrypts a keybase1.MessagePlaintext into a chat1.MessageBoxed. It finds the most recent key for the TLF.
func (*Boxer) CompareTlfNames ¶ added in v1.0.21
func (*Boxer) UnboxMessage ¶
func (b *Boxer) UnboxMessage(ctx context.Context, boxed chat1.MessageBoxed, convID chat1.ConversationID, finalizeInfo *chat1.ConversationFinalizeInfo) (chat1.MessageUnboxed, UnboxingError)
UnboxMessage unboxes a chat1.MessageBoxed into a chat1.MessageUnboxed. It finds the appropriate keybase1.CryptKey, decrypts the message, and verifies several things:
- The message's signature is valid.
- (TODO) The signing KID was valid when the signature was made.
- (TODO) The signing KID belongs to the sending device.
- (TODO) The sending device belongs to the sender. [Note that we do currently check the KID -> UID relationship, independent of the device ID.]
- (TODO) The sender has write permission in the TLF.
- (TODO) The TLF name, public flag, and finalized info resolve to the TLF ID.
- The conversation ID derives from the ConversationIDTriple.
- The body hash is not a replay from another message we know about.
- The prev pointers are consistent with other messages we know about.
- (TODO) The prev pointers are not absurdly ancient.
- The ClientHeader provided with the BoxedMessage matches the one we decrypt.
The first return value is unusable if the err != nil. Returns (_, err) for non-permanent errors, and (MessageUnboxedError, nil) for permanent errors. Permanent errors can be cached and must be treated as a value to deal with, whereas temporary errors are transient failures.
func (*Boxer) UnboxMessages ¶
func (b *Boxer) UnboxMessages(ctx context.Context, boxed []chat1.MessageBoxed, convID chat1.ConversationID, finalizeInfo *chat1.ConversationFinalizeInfo) (unboxed []chat1.MessageUnboxed, err error)
func (*Boxer) UnboxThread ¶
func (b *Boxer) UnboxThread(ctx context.Context, boxed chat1.ThreadViewBoxed, convID chat1.ConversationID, finalizeInfo *chat1.ConversationFinalizeInfo) (thread chat1.ThreadView, err error)
unboxThread transforms a chat1.ThreadViewBoxed to a keybase1.ThreadView.
func (*Boxer) ValidSenderKey ¶ added in v1.0.19
func (b *Boxer) ValidSenderKey(ctx context.Context, sender gregor1.UID, key []byte, ctime gregor1.Time) (found, validAtCTime bool, revoked *gregor1.Time, unboxErr UnboxingError)
ValidSenderKey checks that the key was active for sender at ctime. This trusts the server for ctime, so a colluding server could use a revoked key and this check erroneously pass. But (revoked != nil) if the key was ever revoked, so that is irrespective of ctime. Returns (validAtCtime, revoked, err)
type BoxingCryptKeysError ¶ added in v1.0.19
type BoxingCryptKeysError struct {
Err error
}
func NewBoxingCryptKeysError ¶ added in v1.0.19
func NewBoxingCryptKeysError(err error) BoxingCryptKeysError
func (BoxingCryptKeysError) Error ¶ added in v1.0.19
func (e BoxingCryptKeysError) Error() string
func (BoxingCryptKeysError) Inner ¶ added in v1.0.19
func (e BoxingCryptKeysError) Inner() error
func (BoxingCryptKeysError) IsImmediateFail ¶ added in v1.0.19
func (e BoxingCryptKeysError) IsImmediateFail() (chat1.OutboxErrorType, bool)
type BoxingError ¶ added in v1.0.19
func NewBoxingError ¶ added in v1.0.19
func NewBoxingError(msg string, perm bool) BoxingError
func (BoxingError) Error ¶ added in v1.0.19
func (e BoxingError) Error() string
func (BoxingError) IsImmediateFail ¶ added in v1.0.19
func (e BoxingError) IsImmediateFail() (chat1.OutboxErrorType, bool)
type BufferSource ¶ added in v1.0.19
type BufferSource struct {
// contains filtered or unexported fields
}
func (*BufferSource) Basename ¶ added in v1.0.19
func (b *BufferSource) Basename() string
func (*BufferSource) Bytes ¶ added in v1.0.21
func (b *BufferSource) Bytes() []byte
func (*BufferSource) Close ¶ added in v1.0.19
func (b *BufferSource) Close() error
func (*BufferSource) FileSize ¶ added in v1.0.19
func (b *BufferSource) FileSize() int
func (*BufferSource) Open ¶ added in v1.0.19
func (b *BufferSource) Open(sessionID int, cli *keybase1.StreamUiClient) (ReadResetter, error)
type ByMsgID ¶ added in v1.0.19
type ByMsgID []chat1.MessageUnboxed
type ChatThreadConsistencyError ¶ added in v1.0.19
type ChatThreadConsistencyError interface { error Code() ConsistencyErrorCode }
func CheckPrevPointersAndGetUnpreved ¶
func CheckPrevPointersAndGetUnpreved(thread *chat1.ThreadView) ([]chat1.MessagePreviousPointer, ChatThreadConsistencyError)
Ingest a ThreadView, check several invariants, and produce a list of prev pointers to not-yet-pointed-to messages. Check several invariants at the same time: 1. No two messages have the same ID. 2. All prev pointers point to messages with lesser IDs. 3. All prev pointers to a message agree on that message's header hash. 4. For all messages we have locally, the hashes pointing to them are actually correct. TODO: All of this should happen in the cache instead of here all at once.
func NewChatThreadConsistencyError ¶ added in v1.0.19
func NewChatThreadConsistencyError(code ConsistencyErrorCode, msg string, formatArgs ...interface{}) ChatThreadConsistencyError
type ConsistencyErrorCode ¶ added in v1.0.19
type ConsistencyErrorCode int
const ( DuplicateID ConsistencyErrorCode = iota OutOfOrderID InconsistentHash IncorrectHash )
type Decrypter ¶
type Decrypter interface { // Decrypt takes a ciphertext reader, encryption and verify keys. // It returns a plaintext reader. It uses the constant nonce. Decrypt(ciphertext io.Reader, encKey, verifyKey []byte) (plaintext io.Reader) // DecryptWithNonce takes a ciphertext reader, nonce, encryption and verify keys. // It returns a plaintext reader. DecryptWithNonce(ciphertext io.Reader, nonce signencrypt.Nonce, encKey, verifyKey []byte) (plaintext io.Reader) }
type Deliverer ¶ added in v1.0.19
type Deliverer struct { globals.Contextified sync.Mutex utils.DebugLabeler // contains filtered or unexported fields }
func NewDeliverer ¶ added in v1.0.19
func (*Deliverer) Disconnected ¶ added in v1.0.19
func (*Deliverer) ForceDeliverLoop ¶ added in v1.0.19
func (*Deliverer) Queue ¶ added in v1.0.19
func (s *Deliverer) Queue(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext, identifyBehavior keybase1.TLFIdentifyBehavior) (obr chat1.OutboxRecord, err error)
type DelivererInfoError ¶ added in v1.0.19
type DelivererInfoError interface {
IsImmediateFail() (chat1.OutboxErrorType, bool)
}
type Encrypter ¶
type Encrypter interface { // EncryptedLen returns the number of bytes that the ciphertext of // size plaintext bytes will be. EncryptedLen(size int) int // Encrypt takes a plaintext reader and returns a ciphertext reader. // It generates new keys every time it is called and uses a // constant nonce. Encrypt(plaintext io.Reader) (ciphertext io.Reader, err error) // EncryptWithNonce takes a plaintext reader and returns a ciphertext reader. // It generates new keys every time it is called and uses // the provided nonce. EncryptWithNonce(plaintext io.Reader, nonce signencrypt.Nonce) (ciphertext io.Reader, err error) // EncryptResume takes a plaintext reader and a set of keys. It // returns a ciphertext reader. It *does not* generate new keys // but uses the parameter keys. These keys should *only* be used // to encrypt the same plaintext as a previous attempt. EncryptResume(r io.Reader, nonce signencrypt.Nonce, encKey signencrypt.SecretboxKey, signKey signencrypt.SignKey, verifyKey signencrypt.VerifyKey) (io.Reader, error) // EncryptKey returns the ephemeral key that was used during the // last invocation of Encrypt. EncryptKey() []byte // VerifyKey returns the public portion of the signing key used during // the last invocation of Encrypt. It can be used for signature // verification. VerifyKey() []byte }
type ErrorWrapper ¶ added in v1.0.19
type ErrorWrapper struct {
// contains filtered or unexported fields
}
func NewErrorWrapper ¶ added in v1.0.19
func NewErrorWrapper(prefix string, err error) *ErrorWrapper
func (*ErrorWrapper) Details ¶ added in v1.0.19
func (e *ErrorWrapper) Details() string
func (*ErrorWrapper) Error ¶ added in v1.0.19
func (e *ErrorWrapper) Error() string
type FetchRetrier ¶ added in v1.0.22
type FetchRetrier struct { globals.Contextified utils.DebugLabeler sync.Mutex // contains filtered or unexported fields }
FetchRetrier is responsible for tracking any nonblock fetch failures, and retrying them automatically.
func NewFetchRetrier ¶ added in v1.0.22
func NewFetchRetrier(g *globals.Context) *FetchRetrier
func (*FetchRetrier) Connected ¶ added in v1.0.22
func (f *FetchRetrier) Connected(ctx context.Context)
Connected is called when a connection to the chat server is established, and forces a pass over the retry queue
func (*FetchRetrier) Disconnected ¶ added in v1.0.22
func (f *FetchRetrier) Disconnected(ctx context.Context)
Disconnected is called when we lose connection to the chat server, and pauses attempts on the retry queue.
func (*FetchRetrier) Failure ¶ added in v1.0.22
func (f *FetchRetrier) Failure(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, kind types.FetchType) (err error)
Failure indicates a failure of type kind has happened when loading a conversation.
func (*FetchRetrier) Force ¶ added in v1.0.22
func (f *FetchRetrier) Force(ctx context.Context)
Force forces a run of the retry loop.
func (*FetchRetrier) IsOffline ¶ added in v1.0.22
func (f *FetchRetrier) IsOffline() bool
IsOffline returns if the module thinks we are connected to the chat server.
func (*FetchRetrier) SetClock ¶ added in v1.0.22
func (f *FetchRetrier) SetClock(clock clockwork.Clock)
SetClock sets a custom clock for testing.
func (*FetchRetrier) Start ¶ added in v1.0.22
func (f *FetchRetrier) Start(ctx context.Context, uid gregor1.UID)
Start initiates the retry loop thread.
func (*FetchRetrier) Stop ¶ added in v1.0.22
func (f *FetchRetrier) Stop(ctx context.Context) chan struct{}
Stop suspends the retry loop thread.
func (*FetchRetrier) Success ¶ added in v1.0.22
func (f *FetchRetrier) Success(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, kind types.FetchType) (err error)
Success indicates a success of type kind loading a conversation. This effectively removes that conversation from the retry queue.
type FileStash ¶ added in v1.0.19
func NewFileStash ¶ added in v1.0.19
func (*FileStash) Lookup ¶ added in v1.0.19
func (f *FileStash) Lookup(key StashKey) (AttachmentInfo, bool, error)
func (*FileStash) RecordPart ¶ added in v1.0.19
type HeaderMismatchError ¶ added in v1.0.19
type HeaderMismatchError struct {
Field string
}
func NewHeaderMismatchError ¶ added in v1.0.19
func NewHeaderMismatchError(field string) HeaderMismatchError
func (HeaderMismatchError) Error ¶ added in v1.0.19
func (e HeaderMismatchError) Error() string
type HybridConversationSource ¶
type HybridConversationSource struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewHybridConversationSource ¶
func NewHybridConversationSource(g *globals.Context, b *Boxer, storage *storage.Storage, ri func() chat1.RemoteInterface) *HybridConversationSource
func (*HybridConversationSource) Clear ¶
func (s *HybridConversationSource) Clear(convID chat1.ConversationID, uid gregor1.UID) error
func (HybridConversationSource) Disconnected ¶ added in v1.0.19
func (*HybridConversationSource) GetMessages ¶ added in v1.0.19
func (s *HybridConversationSource) GetMessages(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgIDs []chat1.MessageID, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
func (*HybridConversationSource) GetMessagesWithRemotes ¶ added in v1.0.19
func (s *HybridConversationSource) GetMessagesWithRemotes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgs []chat1.MessageBoxed, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
func (HybridConversationSource) IsOffline ¶ added in v1.0.19
func (s HybridConversationSource) IsOffline() bool
func (*HybridConversationSource) Pull ¶
func (s *HybridConversationSource) Pull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, query *chat1.GetThreadQuery, pagination *chat1.Pagination) (thread chat1.ThreadView, rl []*chat1.RateLimit, err error)
func (*HybridConversationSource) PullLocalOnly ¶ added in v1.0.19
func (s *HybridConversationSource) PullLocalOnly(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, query *chat1.GetThreadQuery, pagination *chat1.Pagination) (tv chat1.ThreadView, err error)
func (*HybridConversationSource) Push ¶
func (s *HybridConversationSource) Push(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msg chat1.MessageBoxed) (chat1.MessageUnboxed, bool, error)
func (HybridConversationSource) SetRemoteInterface ¶ added in v1.0.19
func (s HybridConversationSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
func (HybridConversationSource) SetTLFInfoSource ¶ added in v1.0.21
func (s HybridConversationSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
func (HybridConversationSource) TransformSupersedes ¶ added in v1.0.19
func (s HybridConversationSource) TransformSupersedes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgs []chat1.MessageUnboxed, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
type HybridInboxSource ¶ added in v1.0.19
type HybridInboxSource struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewHybridInboxSource ¶ added in v1.0.19
func NewHybridInboxSource(g *globals.Context, getChatInterface func() chat1.RemoteInterface, tlfInfoSource types.TLFInfoSource, ) *HybridInboxSource
func (HybridInboxSource) Disconnected ¶ added in v1.0.19
func (*HybridInboxSource) NewConversation ¶ added in v1.0.19
func (s *HybridInboxSource) NewConversation(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, conv chat1.Conversation) (err error)
func (*HybridInboxSource) NewMessage ¶ added in v1.0.19
func (s *HybridInboxSource) NewMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID, msg chat1.MessageBoxed) (conv *chat1.ConversationLocal, err error)
func (*HybridInboxSource) Read ¶ added in v1.0.19
func (s *HybridInboxSource) Read(ctx context.Context, uid gregor1.UID, localizer types.ChatLocalizer, useLocalData bool, query *chat1.GetInboxLocalQuery, p *chat1.Pagination) (inbox chat1.Inbox, rl *chat1.RateLimit, err error)
func (*HybridInboxSource) ReadMessage ¶ added in v1.0.19
func (s *HybridInboxSource) ReadMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID, msgID chat1.MessageID) (conv *chat1.ConversationLocal, err error)
func (*HybridInboxSource) ReadUnverified ¶ added in v1.0.19
func (s *HybridInboxSource) ReadUnverified(ctx context.Context, uid gregor1.UID, useLocalData bool, query *chat1.GetInboxQuery, p *chat1.Pagination) (res chat1.Inbox, rl *chat1.RateLimit, err error)
func (HybridInboxSource) SetRemoteInterface ¶ added in v1.0.19
func (b HybridInboxSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
func (*HybridInboxSource) SetStatus ¶ added in v1.0.19
func (s *HybridInboxSource) SetStatus(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID, status chat1.ConversationStatus) (conv *chat1.ConversationLocal, err error)
func (HybridInboxSource) SetTLFInfoSource ¶ added in v1.0.21
func (b HybridInboxSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
func (*HybridInboxSource) TlfFinalize ¶ added in v1.0.19
func (s *HybridInboxSource) TlfFinalize(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convIDs []chat1.ConversationID, finalizeInfo chat1.ConversationFinalizeInfo) (convs []chat1.ConversationLocal, err error)
type IdentifyChangedHandler ¶ added in v1.0.19
type IdentifyChangedHandler struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewIdentifyChangedHandler ¶ added in v1.0.19
func NewIdentifyChangedHandler(g *globals.Context, tlfInfoSource types.TLFInfoSource) *IdentifyChangedHandler
func (*IdentifyChangedHandler) BackgroundIdentifyChanged ¶ added in v1.0.19
func (h *IdentifyChangedHandler) BackgroundIdentifyChanged(ctx context.Context, job engine.IdentifyJob)
func (*IdentifyChangedHandler) HandleUserChanged ¶ added in v1.0.19
func (h *IdentifyChangedHandler) HandleUserChanged(uid keybase1.UID) (err error)
type IdentifyNotifier ¶ added in v1.0.19
type IdentifyNotifier struct { globals.Contextified utils.DebugLabeler sync.RWMutex // contains filtered or unexported fields }
func CtxIdentifyNotifier ¶ added in v1.0.19
func CtxIdentifyNotifier(ctx context.Context) *IdentifyNotifier
func NewIdentifyNotifier ¶ added in v1.0.19
func NewIdentifyNotifier(g *globals.Context) *IdentifyNotifier
func (*IdentifyNotifier) Send ¶ added in v1.0.19
func (i *IdentifyNotifier) Send(update keybase1.CanonicalTLFNameAndIDWithBreaks)
type KBFSTLFInfoSource ¶ added in v1.0.21
type KBFSTLFInfoSource struct { globals.Contextified utils.DebugLabeler }
func NewKBFSTLFInfoSource ¶ added in v1.0.21
func NewKBFSTLFInfoSource(g *globals.Context) *KBFSTLFInfoSource
func (*KBFSTLFInfoSource) CompleteAndCanonicalizePrivateTlfName ¶ added in v1.0.21
func (t *KBFSTLFInfoSource) CompleteAndCanonicalizePrivateTlfName(ctx context.Context, tlfName string) (res keybase1.CanonicalTLFNameAndIDWithBreaks, err error)
func (*KBFSTLFInfoSource) CryptKeys ¶ added in v1.0.21
func (t *KBFSTLFInfoSource) CryptKeys(ctx context.Context, tlfName string) (res keybase1.GetTLFCryptKeysRes, ferr error)
func (*KBFSTLFInfoSource) Lookup ¶ added in v1.0.21
func (t *KBFSTLFInfoSource) Lookup(ctx context.Context, tlfName string, visibility chat1.TLFVisibility) (*types.TLFInfo, error)
func (*KBFSTLFInfoSource) PublicCanonicalTLFNameAndID ¶ added in v1.0.21
func (t *KBFSTLFInfoSource) PublicCanonicalTLFNameAndID(ctx context.Context, tlfName string) (res keybase1.CanonicalTLFNameAndIDWithBreaks, ferr error)
type KeyFinder ¶
type KeyFinder interface {
Find(ctx context.Context, tlf types.TLFInfoSource, tlfName string, tlfPublic bool) (keybase1.GetTLFCryptKeysRes, error)
}
KeyFinder remembers results from previous calls to CryptKeys().
func CtxKeyFinder ¶ added in v1.0.19
type KeyFinderImpl ¶
func (*KeyFinderImpl) Find ¶
func (k *KeyFinderImpl) Find(ctx context.Context, tlf types.TLFInfoSource, tlfName string, tlfPublic bool) (keybase1.GetTLFCryptKeysRes, error)
Find finds keybase1.TLFCryptKeys for tlfName, checking for existing results.
type NonblockInboxResult ¶ added in v1.0.19
type NonblockInboxResult struct { ConvID chat1.ConversationID Err *chat1.ConversationErrorLocal ConvRes *chat1.ConversationLocal InboxRes *chat1.Inbox }
type NonblockingLocalizer ¶ added in v1.0.19
type NonblockingLocalizer struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewNonblockingLocalizer ¶ added in v1.0.19
func NewNonblockingLocalizer(g *globals.Context, localizeCb chan NonblockInboxResult, maxUnbox *int, tlfInfoSource types.TLFInfoSource) *NonblockingLocalizer
func (*NonblockingLocalizer) Localize ¶ added in v1.0.19
func (b *NonblockingLocalizer) Localize(ctx context.Context, uid gregor1.UID, inbox chat1.Inbox) (res []chat1.ConversationLocal, err error)
func (*NonblockingLocalizer) Name ¶ added in v1.0.19
func (b *NonblockingLocalizer) Name() string
func (*NonblockingLocalizer) SetOffline ¶ added in v1.0.19
func (b *NonblockingLocalizer) SetOffline()
type NonblockingSender ¶ added in v1.0.19
type NonblockingSender struct { globals.Contextified // contains filtered or unexported fields }
func NewNonblockingSender ¶ added in v1.0.19
func NewNonblockingSender(g *globals.Context, sender Sender) *NonblockingSender
func (*NonblockingSender) Prepare ¶ added in v1.0.19
func (s *NonblockingSender) Prepare(ctx context.Context, plaintext chat1.MessagePlaintext, convID *chat1.ConversationID) (*chat1.MessageBoxed, []chat1.Asset, error)
type OfflineError ¶ added in v1.0.19
type OfflineError struct { }
func (OfflineError) Error ¶ added in v1.0.19
func (e OfflineError) Error() string
type PermanentUnboxingError ¶ added in v1.0.19
type PermanentUnboxingError struct {
// contains filtered or unexported fields
}
func (PermanentUnboxingError) Error ¶ added in v1.0.19
func (e PermanentUnboxingError) Error() string
func (PermanentUnboxingError) ExportType ¶ added in v1.0.19
func (e PermanentUnboxingError) ExportType() chat1.MessageUnboxedErrorType
func (PermanentUnboxingError) Inner ¶ added in v1.0.19
func (e PermanentUnboxingError) Inner() error
func (PermanentUnboxingError) IsPermanent ¶ added in v1.0.19
func (e PermanentUnboxingError) IsPermanent() bool
type PreviewRes ¶ added in v1.0.19
type ProgressReporter ¶
type ProgressReporter func(bytesCompleted, bytesTotal int64)
type PushHandler ¶ added in v1.0.19
type PushHandler struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewPushHandler ¶ added in v1.0.19
func NewPushHandler(g *globals.Context) *PushHandler
func (*PushHandler) Activity ¶ added in v1.0.19
func (g *PushHandler) Activity(ctx context.Context, m gregor.OutOfBandMessage, badger *badges.Badger) (err error)
func (*PushHandler) TlfFinalize ¶ added in v1.0.19
func (g *PushHandler) TlfFinalize(ctx context.Context, m gregor.OutOfBandMessage) error
func (*PushHandler) TlfResolve ¶ added in v1.0.19
func (g *PushHandler) TlfResolve(ctx context.Context, m gregor.OutOfBandMessage) error
type PutS3Result ¶
PutS3Result is the success result of calling PutS3.
type ReadResetter ¶ added in v1.0.19
type RemoteClient ¶ added in v1.0.22
type RemoteClient struct { utils.DebugLabeler // contains filtered or unexported fields }
func NewRemoteClient ¶ added in v1.0.22
func NewRemoteClient(g *globals.Context, cli rpc.GenericClient) *RemoteClient
type RemoteConversationSource ¶
type RemoteConversationSource struct { globals.Contextified // contains filtered or unexported fields }
func NewRemoteConversationSource ¶
func NewRemoteConversationSource(g *globals.Context, b *Boxer, ri func() chat1.RemoteInterface) *RemoteConversationSource
func (*RemoteConversationSource) Clear ¶
func (s *RemoteConversationSource) Clear(convID chat1.ConversationID, uid gregor1.UID) error
func (RemoteConversationSource) Disconnected ¶ added in v1.0.19
func (*RemoteConversationSource) GetMessages ¶ added in v1.0.19
func (s *RemoteConversationSource) GetMessages(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgIDs []chat1.MessageID, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
func (*RemoteConversationSource) GetMessagesWithRemotes ¶ added in v1.0.19
func (s *RemoteConversationSource) GetMessagesWithRemotes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgs []chat1.MessageBoxed, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
func (RemoteConversationSource) IsOffline ¶ added in v1.0.19
func (s RemoteConversationSource) IsOffline() bool
func (*RemoteConversationSource) Pull ¶
func (s *RemoteConversationSource) Pull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, query *chat1.GetThreadQuery, pagination *chat1.Pagination) (chat1.ThreadView, []*chat1.RateLimit, error)
func (*RemoteConversationSource) PullLocalOnly ¶ added in v1.0.19
func (s *RemoteConversationSource) PullLocalOnly(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, query *chat1.GetThreadQuery, pagination *chat1.Pagination) (chat1.ThreadView, error)
func (*RemoteConversationSource) Push ¶
func (s *RemoteConversationSource) Push(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msg chat1.MessageBoxed) (chat1.MessageUnboxed, bool, error)
func (RemoteConversationSource) SetRemoteInterface ¶ added in v1.0.19
func (s RemoteConversationSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
func (RemoteConversationSource) SetTLFInfoSource ¶ added in v1.0.21
func (s RemoteConversationSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
func (RemoteConversationSource) TransformSupersedes ¶ added in v1.0.19
func (s RemoteConversationSource) TransformSupersedes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgs []chat1.MessageUnboxed, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
type RemoteInboxSource ¶ added in v1.0.19
type RemoteInboxSource struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewRemoteInboxSource ¶ added in v1.0.19
func NewRemoteInboxSource(g *globals.Context, ri func() chat1.RemoteInterface, tlfInfoSource types.TLFInfoSource) *RemoteInboxSource
func (RemoteInboxSource) Disconnected ¶ added in v1.0.19
func (*RemoteInboxSource) NewConversation ¶ added in v1.0.19
func (s *RemoteInboxSource) NewConversation(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, conv chat1.Conversation) error
func (*RemoteInboxSource) NewMessage ¶ added in v1.0.19
func (s *RemoteInboxSource) NewMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID, msg chat1.MessageBoxed) (*chat1.ConversationLocal, error)
func (*RemoteInboxSource) Read ¶ added in v1.0.19
func (s *RemoteInboxSource) Read(ctx context.Context, uid gregor1.UID, localizer types.ChatLocalizer, useLocalData bool, query *chat1.GetInboxLocalQuery, p *chat1.Pagination) (chat1.Inbox, *chat1.RateLimit, error)
func (*RemoteInboxSource) ReadMessage ¶ added in v1.0.19
func (s *RemoteInboxSource) ReadMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID, msgID chat1.MessageID) (*chat1.ConversationLocal, error)
func (*RemoteInboxSource) ReadUnverified ¶ added in v1.0.19
func (s *RemoteInboxSource) ReadUnverified(ctx context.Context, uid gregor1.UID, useLocalData bool, rquery *chat1.GetInboxQuery, p *chat1.Pagination) (chat1.Inbox, *chat1.RateLimit, error)
func (RemoteInboxSource) SetRemoteInterface ¶ added in v1.0.19
func (b RemoteInboxSource) SetRemoteInterface(ri func() chat1.RemoteInterface)
func (*RemoteInboxSource) SetStatus ¶ added in v1.0.19
func (s *RemoteInboxSource) SetStatus(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID, status chat1.ConversationStatus) (*chat1.ConversationLocal, error)
func (RemoteInboxSource) SetTLFInfoSource ¶ added in v1.0.21
func (b RemoteInboxSource) SetTLFInfoSource(tlfInfoSource types.TLFInfoSource)
func (*RemoteInboxSource) TlfFinalize ¶ added in v1.0.19
func (s *RemoteInboxSource) TlfFinalize(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convIDs []chat1.ConversationID, finalizeInfo chat1.ConversationFinalizeInfo) ([]chat1.ConversationLocal, error)
type Sender ¶ added in v1.0.19
type Sender interface { Send(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext, clientPrev chat1.MessageID) (chat1.OutboxID, chat1.MessageID, *chat1.RateLimit, error) Prepare(ctx context.Context, msg chat1.MessagePlaintext, convID *chat1.ConversationID) (*chat1.MessageBoxed, []chat1.Asset, error) }
type Server ¶ added in v1.0.22
type Server struct { globals.Contextified utils.DebugLabeler // contains filtered or unexported fields }
func NewServer ¶ added in v1.0.22
func NewServer(g *globals.Context, store *AttachmentStore, serverConn ServerConnection, uiSource UISource) *Server
func (*Server) CancelPost ¶ added in v1.0.22
func (*Server) DownloadAttachmentLocal ¶ added in v1.0.22
func (h *Server) DownloadAttachmentLocal(ctx context.Context, arg chat1.DownloadAttachmentLocalArg) (res chat1.DownloadAttachmentLocalRes, err error)
DownloadAttachmentLocal implements chat1.LocalInterface.DownloadAttachmentLocal.
func (*Server) DownloadFileAttachmentLocal ¶ added in v1.0.22
func (h *Server) DownloadFileAttachmentLocal(ctx context.Context, arg chat1.DownloadFileAttachmentLocalArg) (res chat1.DownloadAttachmentLocalRes, err error)
DownloadFileAttachmentLocal implements chat1.LocalInterface.DownloadFileAttachmentLocal.
func (*Server) FindConversationsLocal ¶ added in v1.0.22
func (h *Server) FindConversationsLocal(ctx context.Context, arg chat1.FindConversationsLocalArg) (res chat1.FindConversationsLocalRes, err error)
func (*Server) GetCachedThread ¶ added in v1.0.22
func (h *Server) GetCachedThread(ctx context.Context, arg chat1.GetCachedThreadArg) (res chat1.GetThreadLocalRes, err error)
func (*Server) GetConversationForCLILocal ¶ added in v1.0.22
func (h *Server) GetConversationForCLILocal(ctx context.Context, arg chat1.GetConversationForCLILocalQuery) (res chat1.GetConversationForCLILocalRes, err error)
func (*Server) GetInboxAndUnboxLocal ¶ added in v1.0.22
func (h *Server) GetInboxAndUnboxLocal(ctx context.Context, arg chat1.GetInboxAndUnboxLocalArg) (res chat1.GetInboxAndUnboxLocalRes, err error)
GetInboxAndUnboxLocal implements keybase.chatLocal.getInboxAndUnboxLocal protocol.
func (*Server) GetInboxNonblockLocal ¶ added in v1.0.22
func (h *Server) GetInboxNonblockLocal(ctx context.Context, arg chat1.GetInboxNonblockLocalArg) (res chat1.NonblockFetchRes, err error)
func (*Server) GetInboxSummaryForCLILocal ¶ added in v1.0.22
func (h *Server) GetInboxSummaryForCLILocal(ctx context.Context, arg chat1.GetInboxSummaryForCLILocalQuery) (res chat1.GetInboxSummaryForCLILocalRes, err error)
func (*Server) GetMessagesLocal ¶ added in v1.0.22
func (h *Server) GetMessagesLocal(ctx context.Context, arg chat1.GetMessagesLocalArg) (res chat1.GetMessagesLocalRes, err error)
func (*Server) GetThreadLocal ¶ added in v1.0.22
func (h *Server) GetThreadLocal(ctx context.Context, arg chat1.GetThreadLocalArg) (res chat1.GetThreadLocalRes, err error)
GetThreadLocal implements keybase.chatLocal.getThreadLocal protocol.
func (*Server) GetThreadNonblock ¶ added in v1.0.22
func (h *Server) GetThreadNonblock(ctx context.Context, arg chat1.GetThreadNonblockArg) (res chat1.NonblockFetchRes, fullErr error)
func (*Server) MakePreview ¶ added in v1.0.22
func (h *Server) MakePreview(ctx context.Context, arg chat1.MakePreviewArg) (res chat1.MakePreviewRes, err error)
MakePreview implements chat1.LocalInterface.MakePreview.
func (*Server) MarkAsReadLocal ¶ added in v1.0.22
func (h *Server) MarkAsReadLocal(ctx context.Context, arg chat1.MarkAsReadLocalArg) (res chat1.MarkAsReadLocalRes, err error)
func (*Server) NewConversationLocal ¶ added in v1.0.22
func (h *Server) NewConversationLocal(ctx context.Context, arg chat1.NewConversationLocalArg) (res chat1.NewConversationLocalRes, reserr error)
NewConversationLocal implements keybase.chatLocal.newConversationLocal protocol. Create a new conversation. Or in the case of CHAT, create-or-get a conversation.
func (*Server) PostAttachmentLocal ¶ added in v1.0.22
func (h *Server) PostAttachmentLocal(ctx context.Context, arg chat1.PostAttachmentLocalArg) (res chat1.PostLocalRes, err error)
PostAttachmentLocal implements chat1.LocalInterface.PostAttachmentLocal.
func (*Server) PostDeleteNonblock ¶ added in v1.0.22
func (h *Server) PostDeleteNonblock(ctx context.Context, arg chat1.PostDeleteNonblockArg) (chat1.PostLocalNonblockRes, error)
func (*Server) PostEditNonblock ¶ added in v1.0.22
func (h *Server) PostEditNonblock(ctx context.Context, arg chat1.PostEditNonblockArg) (chat1.PostLocalNonblockRes, error)
func (*Server) PostFileAttachmentLocal ¶ added in v1.0.22
func (h *Server) PostFileAttachmentLocal(ctx context.Context, arg chat1.PostFileAttachmentLocalArg) (res chat1.PostLocalRes, err error)
PostFileAttachmentLocal implements chat1.LocalInterface.PostFileAttachmentLocal.
func (*Server) PostLocal ¶ added in v1.0.22
func (h *Server) PostLocal(ctx context.Context, arg chat1.PostLocalArg) (res chat1.PostLocalRes, err error)
PostLocal implements keybase.chatLocal.postLocal protocol.
func (*Server) PostLocalNonblock ¶ added in v1.0.22
func (h *Server) PostLocalNonblock(ctx context.Context, arg chat1.PostLocalNonblockArg) (res chat1.PostLocalNonblockRes, err error)
func (*Server) PostTextNonblock ¶ added in v1.0.22
func (h *Server) PostTextNonblock(ctx context.Context, arg chat1.PostTextNonblockArg) (chat1.PostLocalNonblockRes, error)
func (*Server) SetConversationStatusLocal ¶ added in v1.0.22
func (h *Server) SetConversationStatusLocal(ctx context.Context, arg chat1.SetConversationStatusLocalArg) (res chat1.SetConversationStatusLocalRes, err error)
type ServerConnection ¶ added in v1.0.22
type ServerConnection interface { Reconnect(context.Context) error GetClient() rpc.GenericClient }
type SignDecrypter ¶
type SignDecrypter struct{}
func NewSignDecrypter ¶
func NewSignDecrypter() *SignDecrypter
func (*SignDecrypter) DecryptWithNonce ¶ added in v1.0.19
func (s *SignDecrypter) DecryptWithNonce(r io.Reader, nonce signencrypt.Nonce, encKey, verifyKey []byte) (plaintext io.Reader)
type SignEncrypter ¶
type SignEncrypter struct {
// contains filtered or unexported fields
}
func NewSignEncrypter ¶
func NewSignEncrypter() *SignEncrypter
func (*SignEncrypter) EncryptKey ¶
func (s *SignEncrypter) EncryptKey() []byte
func (*SignEncrypter) EncryptResume ¶ added in v1.0.19
func (s *SignEncrypter) EncryptResume(r io.Reader, nonce signencrypt.Nonce, encKey signencrypt.SecretboxKey, signKey signencrypt.SignKey, verifyKey signencrypt.VerifyKey) (io.Reader, error)
EncryptResume is used to create a SignEncrypter to resume an interrupted attachment upload. It is *very* important that the keys passed in are not used to encrypt different plaintext than their original usage.
func (*SignEncrypter) EncryptWithNonce ¶ added in v1.0.19
func (s *SignEncrypter) EncryptWithNonce(r io.Reader, nonce signencrypt.Nonce) (io.Reader, error)
func (*SignEncrypter) EncryptedLen ¶
func (s *SignEncrypter) EncryptedLen(size int) int
func (*SignEncrypter) SignKey ¶ added in v1.0.19
func (s *SignEncrypter) SignKey() []byte
func (*SignEncrypter) VerifyKey ¶
func (s *SignEncrypter) VerifyKey() []byte
type StashKey ¶ added in v1.0.19
type StashKey struct { PlaintextHash []byte ConversationID chat1.ConversationID UserID keybase1.UID }
func NewStashKey ¶ added in v1.0.19
type Syncer ¶ added in v1.0.19
type Syncer struct { globals.Contextified utils.DebugLabeler sync.Mutex // contains filtered or unexported fields }
func (*Syncer) Connected ¶ added in v1.0.19
func (s *Syncer) Connected(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID, syncRes *chat1.SyncChatRes) (err error)
func (*Syncer) Disconnected ¶ added in v1.0.19
func (*Syncer) IsConnected ¶ added in v1.0.21
func (*Syncer) RegisterOfflinable ¶ added in v1.0.19
func (s *Syncer) RegisterOfflinable(offlinable types.Offlinable)
func (*Syncer) SendChatStaleNotifications ¶ added in v1.0.19
type TransientUnboxingError ¶ added in v1.0.19
type TransientUnboxingError struct {
// contains filtered or unexported fields
}
func (TransientUnboxingError) Error ¶ added in v1.0.19
func (e TransientUnboxingError) Error() string
func (TransientUnboxingError) ExportType ¶ added in v1.0.19
func (e TransientUnboxingError) ExportType() chat1.MessageUnboxedErrorType
func (TransientUnboxingError) Inner ¶ added in v1.0.19
func (e TransientUnboxingError) Inner() error
func (TransientUnboxingError) IsPermanent ¶ added in v1.0.19
func (e TransientUnboxingError) IsPermanent() bool
type UISource ¶ added in v1.0.22
type UISource interface { GetChatUI(sessionID int) libkb.ChatUI GetStreamUICli() *keybase1.StreamUiClient }
type UnboxingError ¶ added in v1.0.19
type UnboxingError interface { Error() string Inner() error IsPermanent() bool ExportType() chat1.MessageUnboxedErrorType }
func NewPermanentUnboxingError ¶ added in v1.0.19
func NewPermanentUnboxingError(inner error) UnboxingError
func NewTransientUnboxingError ¶ added in v1.0.19
func NewTransientUnboxingError(inner error) UnboxingError
type UploadTask ¶ added in v1.0.19
type UploadTask struct { S3Params chat1.S3Params Filename string FileSize int Plaintext ReadResetter S3Signer s3.Signer ConversationID chat1.ConversationID UserID keybase1.UID Progress ProgressReporter // contains filtered or unexported fields }
func (*UploadTask) Nonce ¶ added in v1.0.19
func (u *UploadTask) Nonce() signencrypt.Nonce
type VersionError ¶ added in v1.0.19
func NewBodyVersionError ¶ added in v1.0.19
func NewBodyVersionError(version chat1.BodyPlaintextVersion, defaultBody chat1.BodyPlaintextUnsupported) VersionError
func NewHeaderVersionError ¶ added in v1.0.19
func NewHeaderVersionError(version chat1.HeaderPlaintextVersion, defaultHeader chat1.HeaderPlaintextUnsupported) VersionError
func NewMessageBoxedVersionError ¶ added in v1.0.19
func NewMessageBoxedVersionError(version chat1.MessageBoxedVersion) VersionError
func (VersionError) Error ¶ added in v1.0.19
func (e VersionError) Error() string
func (VersionError) ExportType ¶ added in v1.0.19
func (e VersionError) ExportType() chat1.MessageUnboxedErrorType
Source Files ¶
- attachment.go
- attachment_asset.go
- attachment_crypt.go
- attachment_preview.go
- attachment_progress.go
- attachment_s3.go
- attachment_stash.go
- boxer.go
- context.go
- convsource.go
- errors.go
- identify.go
- identify_ui.go
- inboxsource.go
- keyfinder.go
- prev.go
- push.go
- remoteclient.go
- retry.go
- sender.go
- server.go
- supersedes.go
- sync.go
- tlf.go