aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar jvoisin <julien.voisin@dustri.org> 2024-03-13 23:29:07 +0100
committerGravatar Frédéric Guillot <f@miniflux.net> 2024-03-13 21:34:57 -0700
commitf4746a730661421445a176e8888aa5e5b79624cc (patch)
treedda39ff7277639bfe61d035956520a02c430d41f
parent648b9a8f6f1e2aad032caed11df64f449ea157c1 (diff)
downloadv2-f4746a730661421445a176e8888aa5e5b79624cc.tar.gz
v2-f4746a730661421445a176e8888aa5e5b79624cc.tar.zst
v2-f4746a730661421445a176e8888aa5e5b79624cc.zip
Fix and simplify shaarli's integration
- The jwt token was declared as using HS256 as algorithm, but was using HS512. - No need to base64-encode then remove the padding when we can simply encode without padding. - Factorize the header+payload concatenation as data Odds are that this integration was broken from the start (HS512 vs HS256), so I'm not sure if it's better to add tests or to simply get rid of it.
-rw-r--r--internal/integration/shaarli/shaarli.go12
1 files changed, 6 insertions, 6 deletions
diff --git a/internal/integration/shaarli/shaarli.go b/internal/integration/shaarli/shaarli.go
index a69da227..aeb701e8 100644
--- a/internal/integration/shaarli/shaarli.go
+++ b/internal/integration/shaarli/shaarli.go
@@ -11,7 +11,6 @@ import (
"encoding/json"
"fmt"
"net/http"
- "strings"
"time"
"miniflux.app/v2/internal/urllib"
@@ -74,14 +73,15 @@ func (c *Client) CreateLink(entryURL, entryTitle string) error {
}
func (c *Client) generateBearerToken() string {
- header := strings.TrimRight(base64.URLEncoding.EncodeToString([]byte(`{"typ":"JWT", "alg":"HS256"}`)), "=")
- payload := strings.TrimRight(base64.URLEncoding.EncodeToString([]byte(fmt.Sprintf(`{"iat": %d}`, time.Now().Unix()))), "=")
+ header := base64.RawURLEncoding.EncodeToString([]byte(`{"typ":"JWT","alg":"HS512"}`))
+ payload := base64.RawURLEncoding.EncodeToString([]byte(fmt.Sprintf(`{"iat":%d}`, time.Now().Unix())))
+ data := header + "." + payload
mac := hmac.New(sha512.New, []byte(c.apiSecret))
- mac.Write([]byte(header + "." + payload))
- signature := strings.TrimRight(base64.URLEncoding.EncodeToString(mac.Sum(nil)), "=")
+ mac.Write([]byte(data))
+ signature := base64.RawURLEncoding.EncodeToString(mac.Sum(nil))
- return header + "." + payload + "." + signature
+ return data + "." + signature
}
type addLinkRequest struct {