commit a1980a149a0f4f73bf21ef318ecd14528298b3a4
parent 1d8a668322403cd797543f978c498b4cdc340e78
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 27 Jan 2023 17:45:45 -0800
cleanup
Diffstat:
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()
}
}