Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
74ffaa6d22 | |||
e5e9cfd9f5 | |||
43f4a42499 |
4
go.mod
4
go.mod
@ -1,5 +1,5 @@
|
||||
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
8
go.sum
@ -1,4 +1,4 @@
|
||||
github.com/ugorji/go v1.2.6 h1:tGiWC9HENWE2tqYycIqFTNorMmFRVhNwCpDOpWqnk8E=
|
||||
github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0=
|
||||
github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ=
|
||||
github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
|
||||
github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
|
||||
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
|
||||
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
|
||||
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
|
||||
|
28
sign.go
28
sign.go
@ -6,7 +6,6 @@ import (
|
||||
"crypto/rand"
|
||||
"encoding/base64"
|
||||
"encoding/hex"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"github.com/ugorji/go/codec"
|
||||
"hash/crc64"
|
||||
@ -22,6 +21,11 @@ type tokenData struct {
|
||||
Payload []byte `codec:"p"`
|
||||
}
|
||||
|
||||
type tokenPrint struct {
|
||||
Signature string `codec:"signature"`
|
||||
Payload interface{} `codec:"payload"`
|
||||
}
|
||||
|
||||
type TokenCoder struct {
|
||||
valid bool
|
||||
privKey ed25519.PrivateKey
|
||||
@ -52,7 +56,7 @@ func (tc TokenCoder) SeedHex() string {
|
||||
}
|
||||
|
||||
func Format(token string) (txt string, err error) {
|
||||
var payload any
|
||||
var tp tokenPrint
|
||||
var data []byte
|
||||
data, err = b64.DecodeString(strings.TrimFunc(token, trim))
|
||||
if err != nil {
|
||||
@ -60,10 +64,14 @@ func Format(token string) (txt string, err error) {
|
||||
}
|
||||
|
||||
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)
|
||||
dec := codec.NewDecoder(buf, &handle)
|
||||
dec := codec.NewDecoder(buf, &cHandle)
|
||||
|
||||
var td tokenData
|
||||
err = dec.Decode(&td)
|
||||
@ -71,18 +79,14 @@ func Format(token string) (txt string, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
tp.Signature = hex.EncodeToString(td.Signature)
|
||||
buf.Reset()
|
||||
buf.Write(td.Payload)
|
||||
|
||||
err = dec.Decode(&payload)
|
||||
|
||||
err = dec.Decode(&tp.Payload)
|
||||
buf.Reset()
|
||||
buf.Write([]byte("SIGNATURE=" + hex.EncodeToString(td.Signature) + "\n"))
|
||||
|
||||
enc := json.NewEncoder(buf)
|
||||
enc.SetEscapeHTML(false)
|
||||
enc.SetIndent("", "\t")
|
||||
err = enc.Encode(payload)
|
||||
enc := codec.NewEncoder(buf, &jHandle)
|
||||
err = enc.Encode(tp)
|
||||
txt = buf.String()
|
||||
return
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user