From 0988b0590cf9c2909131e86a56a1ad9ed1745431 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 5 May 2020 20:38:58 +0300 Subject: Make e2ee optional --- matrix/crypto.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 matrix/crypto.go (limited to 'matrix/crypto.go') diff --git a/matrix/crypto.go b/matrix/crypto.go new file mode 100644 index 0000000..1fc5674 --- /dev/null +++ b/matrix/crypto.go @@ -0,0 +1,61 @@ +// gomuks - A terminal Matrix client written in Go. +// Copyright (C) 2020 Tulir Asokan +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +// +build cgo + +package matrix + +import ( + "path/filepath" + + "maunium.net/go/gomuks/debug" + "maunium.net/go/mautrix/crypto" +) + +type cryptoLogger struct{} + +func (c cryptoLogger) Error(message string, args ...interface{}) { + debug.Printf("[Crypto/Error] "+message, args...) +} + +func (c cryptoLogger) Warn(message string, args ...interface{}) { + debug.Printf("[Crypto/Warn] "+message, args...) +} + +func (c cryptoLogger) Debug(message string, args ...interface{}) { + debug.Printf("[Crypto/Debug] "+message, args...) +} + +func (c cryptoLogger) Trace(message string, args ...interface{}) { + debug.Printf("[Crypto/Trace] "+message, args...) +} + +func isBadEncryptError(err error) bool { + return err != crypto.SessionExpired && err != crypto.SessionNotShared && err != crypto.NoGroupSession +} + +func (c *Container) initCrypto() error { + cryptoStore, err := crypto.NewGobStore(filepath.Join(c.config.DataDir, "crypto.gob")) + if err != nil { + return err + } + c.crypto = crypto.NewOlmMachine(c.client, cryptoLogger{}, cryptoStore, c.config.Rooms) + err = c.crypto.Load() + if err != nil { + return err + } + return nil +} -- cgit v1.2.3 From cfd5f7ae54fa2f4a21236665c9e685a3fabde5b6 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Tue, 5 May 2020 21:15:53 +0300 Subject: Random changes --- matrix/crypto.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'matrix/crypto.go') diff --git a/matrix/crypto.go b/matrix/crypto.go index 1fc5674..8eab355 100644 --- a/matrix/crypto.go +++ b/matrix/crypto.go @@ -21,8 +21,9 @@ package matrix import ( "path/filepath" - "maunium.net/go/gomuks/debug" "maunium.net/go/mautrix/crypto" + + "maunium.net/go/gomuks/debug" ) type cryptoLogger struct{} -- cgit v1.2.3