aidantwoods / go-paseto

Platform-Agnostic Security Tokens implementation in Golang.
https://pkg.go.dev/aidanwoods.dev/go-paseto
MIT License
307 stars 17 forks source link

How to work with existing private key #27

Closed Peelz closed 1 year ago

Peelz commented 1 year ago

I trying to work with owned private key but its alway error with invalid format.

const privatePemFormat = `
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
`

func main() {
    privBlock, _ := pem.Decode([]byte(privatePemFormat))
    k, err := paseto.NewV2AsymmetricSecretKeyFromBytes(privBlock.Bytes)
    if err != nil {
        panic(err)
    }
}

I can't see in document, and I see func NewV2AsymmetricSecretKeyFromBytes support only hexString.

Peelz commented 1 year ago

Solved it by

const privatePem = `
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
`

func main() {
    block, _ := pem.Decode([]byte(privatePem))
    priv, err := x509.ParsePKCS8PrivateKey(block.Bytes)
    if err != nil {
        log.Fatal(err)
    }
    ed25519PrivateKey := priv.(ed25519.PrivateKey)
    k, err := paseto.NewV2AsymmetricSecretKeyFromBytes(ed25519PrivateKey)
    if err != nil {
        panic(err)
    }
}