Compare commits

...

3 Commits

Author SHA1 Message Date
74ffaa6d22
improve print 2022-04-03 17:02:09 +02:00
e5e9cfd9f5
change json encoder 2022-04-03 16:52:26 +02:00
43f4a42499
update dependencies 2022-04-03 16:27:14 +02:00
3 changed files with 22 additions and 18 deletions

4
go.mod
View File

@ -1,5 +1,5 @@
module git.purser.it/roypur/stoken module git.purser.it/roypur/stoken
go 1.17 go 1.18
require github.com/ugorji/go/codec v1.2.6 require github.com/ugorji/go/codec v1.2.7 // indirect

8
go.sum
View File

@ -1,4 +1,4 @@
github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E= github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=

28
sign.go
View File

@ -6,7 +6,6 @@ import (
"crypto/rand" "crypto/rand"
"encoding/base64" "encoding/base64"
"encoding/hex" "encoding/hex"
"encoding/json"
"errors" "errors"
"github.com/ugorji/go/codec" "github.com/ugorji/go/codec"
"hash/crc64" "hash/crc64"
@ -22,6 +21,11 @@ type tokenData struct {
Payload []byte `codec:"p"` Payload []byte `codec:"p"`
} }
type tokenPrint struct {
Signature string `codec:"signature"`
Payload interface{} `codec:"payload"`
}
type TokenCoder struct { type TokenCoder struct {
valid bool valid bool
privKey ed25519.PrivateKey privKey ed25519.PrivateKey
@ -52,7 +56,7 @@ func (tc TokenCoder) SeedHex() string {
} }
func Format(token string) (txt string, err error) { func Format(token string) (txt string, err error) {
var payload any var tp tokenPrint
var data []byte var data []byte
data, err = b64.DecodeString(strings.TrimFunc(token, trim)) data, err = b64.DecodeString(strings.TrimFunc(token, trim))
if err != nil { if err != nil {
@ -60,10 +64,14 @@ func Format(token string) (txt string, err error) {
} }
buf := bytes.NewBuffer(nil) buf := bytes.NewBuffer(nil)
var handle codec.CborHandle var cHandle codec.CborHandle
var jHandle codec.JsonHandle
jHandle.HTMLCharsAsIs = true
jHandle.MapKeyAsString = true
jHandle.Indent = 4
buf.Write(data) buf.Write(data)
dec := codec.NewDecoder(buf, &handle) dec := codec.NewDecoder(buf, &cHandle)
var td tokenData var td tokenData
err = dec.Decode(&td) err = dec.Decode(&td)
@ -71,18 +79,14 @@ func Format(token string) (txt string, err error) {
return return
} }
tp.Signature = hex.EncodeToString(td.Signature)
buf.Reset() buf.Reset()
buf.Write(td.Payload) buf.Write(td.Payload)
err = dec.Decode(&payload) err = dec.Decode(&tp.Payload)
buf.Reset() buf.Reset()
buf.Write([]byte("SIGNATURE=" + hex.EncodeToString(td.Signature) + "\n")) enc := codec.NewEncoder(buf, &jHandle)
err = enc.Encode(tp)
enc := json.NewEncoder(buf)
enc.SetEscapeHTML(false)
enc.SetIndent("", "\t")
err = enc.Encode(payload)
txt = buf.String() txt = buf.String()
return return
} }