mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-30 19:06:33 +02:00
59 lines
1.4 KiB
Go
59 lines
1.4 KiB
Go
package cryptutil
|
|
|
|
import (
|
|
"encoding/pem"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// generated using:
|
|
// openssl genpkey -algorithm x25519 -out priv.pem
|
|
// openssl pkey -in priv.pem -out pub.pem -pubout
|
|
var (
|
|
rawPrivateX25519Key = []byte(`-----BEGIN PRIVATE KEY-----
|
|
MC4CAQAwBQYDK2VuBCIEIKALoNgzCksH0v0Bc7Ghl8vGin4MAIKpmtZSmaMN0Vtb
|
|
-----END PRIVATE KEY-----
|
|
`)
|
|
rawPublicX25519Key = []byte(`-----BEGIN PUBLIC KEY-----
|
|
MCowBQYDK2VuAyEAk63g8PY1JJTkrranWTxGSd/yA5kAgJlPk4/srMKg9mg=
|
|
-----END PUBLIC KEY-----
|
|
`)
|
|
)
|
|
|
|
func TestPKCS8PrivateKey(t *testing.T) {
|
|
block, _ := pem.Decode(rawPrivateX25519Key)
|
|
|
|
kek, err := ParsePKCS8PrivateKey(block.Bytes)
|
|
assert.NoError(t, err)
|
|
assert.IsType(t, &PrivateKeyEncryptionKey{}, kek)
|
|
|
|
t.Run("marshal", func(t *testing.T) {
|
|
der, err := MarshalPKCS8PrivateKey(kek)
|
|
require.NoError(t, err)
|
|
actual := pem.EncodeToMemory(&pem.Block{
|
|
Type: "PRIVATE KEY",
|
|
Bytes: der,
|
|
})
|
|
assert.Equal(t, rawPrivateX25519Key, actual)
|
|
})
|
|
}
|
|
|
|
func TestPKIXPublicKey(t *testing.T) {
|
|
block, _ := pem.Decode(rawPublicX25519Key)
|
|
|
|
kek, err := ParsePKIXPublicKey(block.Bytes)
|
|
assert.NoError(t, err)
|
|
assert.IsType(t, &PublicKeyEncryptionKey{}, kek)
|
|
|
|
t.Run("marshal", func(t *testing.T) {
|
|
der, err := MarshalPKIXPublicKey(kek)
|
|
require.NoError(t, err)
|
|
actual := pem.EncodeToMemory(&pem.Block{
|
|
Type: "PUBLIC KEY",
|
|
Bytes: der,
|
|
})
|
|
assert.Equal(t, rawPublicX25519Key, actual)
|
|
})
|
|
}
|