Skip to content

Commit 067a9a3

Browse files
committed
bump nebula to current master for cert-v2 support
1 parent ff7ea2b commit 067a9a3

File tree

6 files changed

+79
-90
lines changed

6 files changed

+79
-90
lines changed

client_test.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func TestEnroll(t *testing.T) {
5454
oidcExpiresAt := time.Now()
5555
counter := uint(5)
5656
ca, _ := dnapitest.NebulaCACert()
57-
caPEM, err := ca.MarshalToPEM()
57+
caPEM, err := ca.MarshalPEM()
5858
require.NoError(t, err)
5959

6060
ts.ExpectEnrollment(code, message.NetworkCurve25519, func(req message.EnrollRequest) []byte {
@@ -78,7 +78,7 @@ func TestEnroll(t *testing.T) {
7878
HostID: hostID,
7979
Counter: counter,
8080
Config: cfg,
81-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
81+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
8282
Organization: message.HostOrgMetadata{
8383
ID: orgID,
8484
Name: orgName,
@@ -109,7 +109,7 @@ func TestEnroll(t *testing.T) {
109109
assert.Empty(t, ts.Errors())
110110
assert.Equal(t, 0, ts.RequestsRemaining())
111111

112-
tk, err := keys.NewTrustedKey(ed25519.PublicKey(ca.Details.PublicKey))
112+
tk, err := keys.NewTrustedKey(ed25519.PublicKey(ca.PublicKey()))
113113
require.NoError(t, err)
114114

115115
assert.Equal(t, hostID, creds.HostID)
@@ -129,7 +129,7 @@ func TestEnroll(t *testing.T) {
129129
}
130130
err = yaml.Unmarshal(cfg, &y)
131131
require.NoError(t, err)
132-
_, rest, err := cert.UnmarshalX25519PublicKey(y.Test.DHPubkey)
132+
_, rest, _, err := cert.UnmarshalPublicKeyFromPEM(y.Test.DHPubkey)
133133
assert.NoError(t, err)
134134
assert.Len(t, rest, 0)
135135
assert.Equal(t, code, y.Test.Code)
@@ -182,7 +182,7 @@ func TestDoUpdate(t *testing.T) {
182182
t.Cleanup(func() { ts.Close() })
183183

184184
ca, caPrivkey := dnapitest.NebulaCACert()
185-
caPEM, err := ca.MarshalToPEM()
185+
caPEM, err := ca.MarshalPEM()
186186
require.NoError(t, err)
187187

188188
c := NewClient(useragent, ts.URL)
@@ -209,7 +209,7 @@ func TestDoUpdate(t *testing.T) {
209209
HostID: "foobar",
210210
Counter: 1,
211211
Config: cfg,
212-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
212+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
213213
Organization: message.HostOrgMetadata{
214214
ID: "foobaz",
215215
Name: "foobar's foo org",
@@ -278,7 +278,7 @@ func TestDoUpdate(t *testing.T) {
278278
Config: dnapitest.NebulaCfg(caPEM),
279279
Counter: 2,
280280
Nonce: dnapitest.GetNonce(r),
281-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
281+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
282282
Organization: message.HostOrgMetadata{
283283
ID: "foobaz",
284284
Name: "foobar's foo org",
@@ -333,7 +333,7 @@ func TestDoUpdate(t *testing.T) {
333333
Config: dnapitest.NebulaCfg(caPEM),
334334
Counter: 0,
335335
Nonce: dnapitest.GetNonce(r),
336-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
336+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
337337
Organization: message.HostOrgMetadata{
338338
ID: "foobaz",
339339
Name: "foobar's foo org",
@@ -393,7 +393,7 @@ func TestDoUpdate(t *testing.T) {
393393
Config: dnapitest.NebulaCfg(caPEM),
394394
Counter: 3,
395395
Nonce: dnapitest.GetNonce(r),
396-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
396+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
397397
Organization: message.HostOrgMetadata{
398398
ID: orgID,
399399
Name: orgName,
@@ -453,7 +453,7 @@ func TestDoUpdate_P256(t *testing.T) {
453453
t.Cleanup(func() { ts.Close() })
454454

455455
ca, caPrivkey := dnapitest.NebulaCACertP256()
456-
caPEM, err := ca.MarshalToPEM()
456+
caPEM, err := ca.MarshalPEM()
457457
require.NoError(t, err)
458458

459459
c := NewClient(useragent, ts.URL)
@@ -480,7 +480,7 @@ func TestDoUpdate_P256(t *testing.T) {
480480
HostID: "foobar",
481481
Counter: 1,
482482
Config: cfg,
483-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
483+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
484484
Organization: message.HostOrgMetadata{
485485
ID: "foobaz",
486486
Name: "foobar's foo org",
@@ -638,7 +638,7 @@ func TestDoUpdate_P256(t *testing.T) {
638638
Config: dnapitest.NebulaCfg(caPEM),
639639
Counter: 3,
640640
Nonce: dnapitest.GetNonce(r),
641-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
641+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
642642
Organization: message.HostOrgMetadata{
643643
ID: "foobaz",
644644
Name: "foobar's foo org",
@@ -693,7 +693,7 @@ func TestCommandResponse(t *testing.T) {
693693
t.Cleanup(func() { ts.Close() })
694694

695695
ca, _ := dnapitest.NebulaCACert()
696-
caPEM, err := ca.MarshalToPEM()
696+
caPEM, err := ca.MarshalPEM()
697697
require.NoError(t, err)
698698

699699
c := NewClient(useragent, ts.URL)
@@ -720,7 +720,7 @@ func TestCommandResponse(t *testing.T) {
720720
HostID: "foobar",
721721
Counter: 1,
722722
Config: cfg,
723-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
723+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
724724
Organization: message.HostOrgMetadata{
725725
ID: "foobaz",
726726
Name: "foobar's foo org",
@@ -798,7 +798,7 @@ func TestStreamCommandResponse(t *testing.T) {
798798
t.Cleanup(func() { ts.Close() })
799799

800800
ca, _ := dnapitest.NebulaCACert()
801-
caPEM, err := ca.MarshalToPEM()
801+
caPEM, err := ca.MarshalPEM()
802802
require.NoError(t, err)
803803

804804
c := NewClient(useragent, ts.URL)
@@ -825,7 +825,7 @@ func TestStreamCommandResponse(t *testing.T) {
825825
HostID: "foobar",
826826
Counter: 1,
827827
Config: cfg,
828-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
828+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
829829
Organization: message.HostOrgMetadata{
830830
ID: "foobaz",
831831
Name: "foobar's foo org",
@@ -924,7 +924,7 @@ func TestReauthenticate(t *testing.T) {
924924
t.Cleanup(func() { ts.Close() })
925925

926926
ca, caPrivkey := dnapitest.NebulaCACert()
927-
caPEM, err := ca.MarshalToPEM()
927+
caPEM, err := ca.MarshalPEM()
928928
require.NoError(t, err)
929929

930930
c := NewClient(useragent, ts.URL)
@@ -951,7 +951,7 @@ func TestReauthenticate(t *testing.T) {
951951
HostID: "foobar",
952952
Counter: 1,
953953
Config: cfg,
954-
TrustedKeys: marshalCAPublicKey(ca.Details.Curve, ca.Details.PublicKey),
954+
TrustedKeys: marshalCAPublicKey(ca.Curve(), ca.PublicKey()),
955955
Organization: message.HostOrgMetadata{
956956
ID: "foobaz",
957957
Name: "foobar's foo org",

dnapitest/dnapitest.go

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import (
1414
"fmt"
1515
"io"
1616
"math/big"
17-
"net"
1817
"net/http"
1918
"net/http/httptest"
19+
"net/netip"
2020
"time"
2121

2222
"github.com/DefinedNet/dnapi/keys"
@@ -484,33 +484,33 @@ func NebulaCfg(caCert []byte) []byte {
484484
return nebulaCfg
485485
}
486486

487-
func NebulaCACert() (*cert.NebulaCertificate, ed25519.PrivateKey) {
487+
func NebulaCACert() (cert.Certificate, ed25519.PrivateKey) {
488488
pub, priv, err := ed25519.GenerateKey(rand.Reader)
489489
if err != nil {
490490
panic(err)
491491
}
492492

493-
nc := &cert.NebulaCertificate{
494-
Details: cert.NebulaCertificateDetails{
495-
Name: "UnitTesting",
496-
Groups: []string{"testa", "testb"},
497-
Ips: []*net.IPNet{},
498-
Subnets: []*net.IPNet{},
499-
NotBefore: time.Now(),
500-
NotAfter: time.Now().Add(24 * time.Hour),
501-
PublicKey: pub,
502-
IsCA: true,
503-
},
493+
nc := cert.TBSCertificate{
494+
Version: cert.Version1,
495+
Curve: cert.Curve_CURVE25519,
496+
Name: "UnitTesting",
497+
Groups: []string{"testa", "testb"},
498+
Networks: []netip.Prefix{},
499+
UnsafeNetworks: []netip.Prefix{},
500+
NotBefore: time.Now(),
501+
NotAfter: time.Now().Add(24 * time.Hour),
502+
PublicKey: pub,
503+
IsCA: true,
504504
}
505-
err = nc.Sign(nc.Details.Curve, priv)
505+
out, err := nc.Sign(nil, nc.Curve, priv)
506506
if err != nil {
507507
panic(err)
508508
}
509509

510-
return nc, priv
510+
return out, priv
511511
}
512512

513-
func NebulaCACertP256() (*cert.NebulaCertificate, *ecdsa.PrivateKey) {
513+
func NebulaCACertP256() (cert.Certificate, *ecdsa.PrivateKey) {
514514
key, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
515515
if err != nil {
516516
panic(err)
@@ -526,23 +526,22 @@ func NebulaCACertP256() (*cert.NebulaCertificate, *ecdsa.PrivateKey) {
526526
rawPriv := eKey.Bytes()
527527
pub := eKey.PublicKey().Bytes()
528528

529-
nc := &cert.NebulaCertificate{
530-
Details: cert.NebulaCertificateDetails{
531-
Curve: cert.Curve_P256,
532-
Name: "UnitTesting",
533-
Groups: []string{"testa", "testb"},
534-
Ips: []*net.IPNet{},
535-
Subnets: []*net.IPNet{},
536-
NotBefore: time.Now(),
537-
NotAfter: time.Now().Add(24 * time.Hour),
538-
PublicKey: pub,
539-
IsCA: true,
540-
},
529+
nc := cert.TBSCertificate{
530+
Version: cert.Version1,
531+
Curve: cert.Curve_P256,
532+
Name: "UnitTesting",
533+
Groups: []string{"testa", "testb"},
534+
Networks: []netip.Prefix{},
535+
UnsafeNetworks: []netip.Prefix{},
536+
NotBefore: time.Now(),
537+
NotAfter: time.Now().Add(24 * time.Hour),
538+
PublicKey: pub,
539+
IsCA: true,
541540
}
542-
err = nc.Sign(nc.Details.Curve, rawPriv)
541+
out, err := nc.Sign(nil, nc.Curve, rawPriv)
543542
if err != nil {
544543
panic(err)
545544
}
546545

547-
return nc, key
546+
return out, key
548547
}

go.mod

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
11
module github.com/DefinedNet/dnapi
22

3-
go 1.24.0
3+
go 1.25
44

55
require (
6-
github.com/sirupsen/logrus v1.9.2
7-
github.com/slackhq/nebula v1.7.1
8-
github.com/stretchr/testify v1.8.2
9-
golang.org/x/crypto v0.42.0
6+
github.com/sirupsen/logrus v1.9.3
7+
github.com/slackhq/nebula v1.10.0
8+
github.com/stretchr/testify v1.11.1
9+
golang.org/x/crypto v0.46.0
1010
gopkg.in/yaml.v2 v2.4.0
1111
)
1212

1313
require (
1414
github.com/davecgh/go-spew v1.1.1 // indirect
15-
github.com/google/go-cmp v0.5.9 // indirect
1615
github.com/kr/pretty v0.3.1 // indirect
1716
github.com/pmezard/go-difflib v1.0.0 // indirect
18-
golang.org/x/sys v0.36.0 // indirect
19-
google.golang.org/protobuf v1.30.0 // indirect
17+
golang.org/x/sys v0.39.0 // indirect
18+
google.golang.org/protobuf v1.36.10 // indirect
2019
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
2120
gopkg.in/yaml.v3 v3.0.1 // indirect
2221
)

go.sum

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
22
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
33
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
44
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5-
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
6-
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
7-
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
8-
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
5+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
6+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
97
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
108
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
119
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -16,32 +14,23 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
1614
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
1715
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
1816
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
17+
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
1918
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
20-
github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
21-
github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
22-
github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y=
23-
github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
24-
github.com/slackhq/nebula v1.7.1 h1:+kzPkx9rMXJKj43N7Zcdb+ZsHAX+/u2beS7qPHbWhdw=
25-
github.com/slackhq/nebula v1.7.1/go.mod h1:cnaoahkUipDs1vrNoIszyp0QPRIQN9Pm68ppQEW1Fhg=
19+
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
20+
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
21+
github.com/slackhq/nebula v1.10.0 h1:uhu4Cpzw3pXyDJ8G1fMSppsvG7aE9XCt4UaauggHax0=
22+
github.com/slackhq/nebula v1.10.0/go.mod h1:PmYcyoGhAX4X8lCzJjGv7aLTBbFbPy7QeWbpwWvJf+Y=
2623
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
27-
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
28-
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
2924
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
30-
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
31-
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
32-
github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
33-
github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
34-
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
35-
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
36-
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
37-
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
25+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
26+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
27+
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
28+
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
3829
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
39-
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
40-
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
41-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
42-
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
43-
google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
44-
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
30+
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
31+
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
32+
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
33+
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
4534
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
4635
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
4736
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=

keys/crypto.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,18 +150,18 @@ func newP256Keypair() (*ecdsa.PublicKey, *ecdsa.PrivateKey, error) {
150150
return privkey.Public().(*ecdsa.PublicKey), privkey, nil
151151
}
152152

153-
// newNebulaX25519KeypairPEM returns a new Nebula keypair (X25519) in PEM format.
153+
// newNebulaX25519KeypairPEM returns a new Nebula key-agreement keypair (ED25519) in PEM format.
154154
func newNebulaX25519KeypairPEM() ([]byte, []byte, error) {
155155
pubkey, privkey, err := newX25519Keypair()
156156
if err != nil {
157157
return nil, nil, err
158158
}
159-
pubkey, privkey = cert.MarshalX25519PublicKey(pubkey), cert.MarshalX25519PrivateKey(privkey)
159+
pubkey, privkey = cert.MarshalPublicKeyToPEM(cert.Curve_CURVE25519, pubkey), cert.MarshalPrivateKeyToPEM(cert.Curve_P256, privkey)
160160

161161
return pubkey, privkey, nil
162162
}
163163

164-
// newNebulaP256KeypairPEM returns a new Nebula keypair (P256) in PEM format.
164+
// newNebulaP256KeypairPEM returns a new Nebula key-agreement keypair (P256) in PEM format.
165165
func newNebulaP256KeypairPEM() ([]byte, []byte, error) {
166166
rawPrivkey, err := ecdsa.GenerateKey(elliptic.P256(), rand.Reader)
167167
if err != nil {
@@ -173,8 +173,8 @@ func newNebulaP256KeypairPEM() ([]byte, []byte, error) {
173173
return nil, nil, err
174174
}
175175

176-
pubkey := cert.MarshalPublicKey(cert.Curve_P256, ecdhPrivkey.PublicKey().Bytes())
177-
privkey := cert.MarshalPrivateKey(cert.Curve_P256, ecdhPrivkey.Bytes())
176+
pubkey := cert.MarshalPublicKeyToPEM(cert.Curve_P256, ecdhPrivkey.PublicKey().Bytes())
177+
privkey := cert.MarshalPrivateKeyToPEM(cert.Curve_P256, ecdhPrivkey.Bytes())
178178

179179
return pubkey, privkey, nil
180180
}

keys/pem.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,11 @@ func UnmarshalTrustedKey(b []byte) (TrustedKey, []byte, error) {
168168
if len(k.Bytes) != 65 {
169169
return nil, r, fmt.Errorf("key was not 65 bytes, is invalid P256 public key")
170170
}
171-
172-
x, y := elliptic.Unmarshal(elliptic.P256(), k.Bytes)
173-
return P256TrustedKey{&ecdsa.PublicKey{X: x, Y: y, Curve: elliptic.P256()}}, r, nil
171+
pk, err := ecdsa.ParseUncompressedPublicKey(elliptic.P256(), k.Bytes)
172+
if err != nil {
173+
return nil, r, fmt.Errorf("failed to parse public key: %s", err)
174+
}
175+
return P256TrustedKey{pk}, r, nil
174176
case NebulaEd25519PublicKeyBanner:
175177
if len(k.Bytes) != ed25519.PublicKeySize {
176178
return nil, r, fmt.Errorf("key was not 32 bytes, is invalid ed25519 public key")

0 commit comments

Comments
 (0)