dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit a1980a149a0f4f73bf21ef318ecd14528298b3a4
parent 1d8a668322403cd797543f978c498b4cdc340e78
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri, 27 Jan 2023 17:45:45 -0800

cleanup

Diffstat:
Mpkg/database/tableLinks.go | 12++----------
Mpkg/utils/utils.go | 37++++++++++++++++++-------------------
Mpkg/web/handlers/handlers.go | 11++---------
3 files changed, 22 insertions(+), 38 deletions(-)

diff --git a/pkg/database/tableLinks.go b/pkg/database/tableLinks.go @@ -1,11 +1,7 @@ package database import ( - "bytes" "dkforest/pkg/utils" - "github.com/ProtonMail/go-crypto/openpgp" - "github.com/ProtonMail/go-crypto/openpgp/armor" - "github.com/ProtonMail/go-crypto/openpgp/packet" "github.com/google/uuid" "github.com/sirupsen/logrus" "html" @@ -178,12 +174,8 @@ type LinksPgp struct { } func (l LinksPgp) GetKeyID() string { - reader := bytes.NewReader([]byte(l.PgpPublicKey)) - if block, err := armor.Decode(reader); err == nil { - r := packet.NewReader(block.Body) - if e, err := openpgp.ReadEntity(r); err == nil { - return e.PrimaryKey.KeyIdString() - } + if e := utils.GetEntityFromPKey(l.PgpPublicKey); e != nil { + return e.PrimaryKey.KeyIdString() } return "n/a" } diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go @@ -407,15 +407,11 @@ func getGCMKeyBytes(keyBytes []byte) (cipher.AEAD, int, error) { } func GetKeyFingerprint(pkey string) string { - reader := bytes.NewReader([]byte(pkey)) - if block, err := armor.Decode(reader); err == nil { - r := packet.NewReader(block.Body) - if e, err := openpgp.ReadEntity(r); err == nil { - fp := strings.ToUpper(hex.EncodeToString(e.PrimaryKey.Fingerprint)) - return fmt.Sprintf("%s %s %s %s %s %s %s %s %s %s", - fp[0:4], fp[4:8], fp[8:12], fp[12:16], fp[16:20], - fp[20:24], fp[24:28], fp[28:32], fp[32:36], fp[36:40]) - } + if e := GetEntityFromPKey(pkey); e != nil { + fp := strings.ToUpper(hex.EncodeToString(e.PrimaryKey.Fingerprint)) + return fmt.Sprintf("%s %s %s %s %s %s %s %s %s %s", + fp[0:4], fp[4:8], fp[8:12], fp[12:16], fp[16:20], + fp[20:24], fp[24:28], fp[28:32], fp[32:36], fp[36:40]) } return "" } @@ -435,6 +431,17 @@ func PgpCheckClearSignMessage(pkey, msg string) bool { return true } +func GetEntityFromPKey(pkey string) *openpgp.Entity { + reader := bytes.NewReader([]byte(pkey)) + if block, err := armor.Decode(reader); err == nil { + r := packet.NewReader(block.Body) + if e, err := openpgp.ReadEntity(r); err == nil { + return e + } + } + return nil +} + func PgpCheckSignMessage(pkey, msg, signature string) bool { keyring, err := openpgp.ReadArmoredKeyRing(strings.NewReader(pkey)) if err != nil { @@ -478,16 +485,8 @@ func PgpDecryptMessage(secretKey, msg string) (string, error) { } func GeneratePgpEncryptedMessage(pkey, msg string) (string, error) { - reader := bytes.NewReader([]byte(pkey)) - block, err := armor.Decode(reader) - if err != nil { - logrus.Error(err) - return "", errors.New("invalid public key") - } - r := packet.NewReader(block.Body) - e, err := openpgp.ReadEntity(r) - if err != nil { - logrus.Error(err) + e := GetEntityFromPKey(pkey) + if e == nil { return "", errors.New("invalid public key") } buffer := &bytes.Buffer{} diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -43,9 +43,6 @@ import ( "dkforest/pkg/utils" hutils "dkforest/pkg/web/handlers/utils" "filippo.io/age" - "github.com/ProtonMail/go-crypto/openpgp" - "github.com/ProtonMail/go-crypto/openpgp/armor" - "github.com/ProtonMail/go-crypto/openpgp/packet" "github.com/alecthomas/chroma/formatters/html" "github.com/alecthomas/chroma/lexers" "github.com/alecthomas/chroma/styles" @@ -3288,12 +3285,8 @@ func SettingsPGPHandler(c echo.Context) error { data.ActiveTab = "pgp" if authUser.GPGPublicKey != "" { - reader := bytes.NewReader([]byte(authUser.GPGPublicKey)) - if block, err := armor.Decode(reader); err == nil { - r := packet.NewReader(block.Body) - if e, err := openpgp.ReadEntity(r); err == nil { - data.PGPPublicKeyID = e.PrimaryKey.KeyIdString() - } + if e := utils.GetEntityFromPKey(authUser.GPGPublicKey); e != nil { + data.PGPPublicKeyID = e.PrimaryKey.KeyIdString() } }