internal/age: unexport NewX25519Recipient and NewX25519Identity

This commit is contained in:
Filippo Valsorda
2020-06-27 21:03:35 -04:00
parent 9a08b7e66f
commit 33355dcc1c
3 changed files with 14 additions and 41 deletions

View File

@@ -8,7 +8,6 @@ package age_test
import (
"bytes"
"crypto/rand"
"encoding/hex"
"fmt"
"io"
@@ -17,7 +16,6 @@ import (
"testing"
"filippo.io/age/internal/age"
"golang.org/x/crypto/curve25519"
)
func ExampleEncrypt() {
@@ -95,27 +93,16 @@ func ExampleGenerateX25519Identity() {
const helloWorld = "Hello, Twitch!"
func TestEncryptDecryptX25519(t *testing.T) {
secretKeyA := make([]byte, curve25519.ScalarSize)
secretKeyB := make([]byte, curve25519.ScalarSize)
if _, err := rand.Read(secretKeyA); err != nil {
t.Fatal(err)
}
if _, err := rand.Read(secretKeyB); err != nil {
t.Fatal(err)
}
publicKeyA, _ := curve25519.X25519(secretKeyA, curve25519.Basepoint)
publicKeyB, _ := curve25519.X25519(secretKeyB, curve25519.Basepoint)
rA, err := age.NewX25519Recipient(publicKeyA)
a, err := age.GenerateX25519Identity()
if err != nil {
t.Fatal(err)
}
rB, err := age.NewX25519Recipient(publicKeyB)
b, err := age.GenerateX25519Identity()
if err != nil {
t.Fatal(err)
}
buf := &bytes.Buffer{}
w, err := age.Encrypt(buf, rA, rB)
w, err := age.Encrypt(buf, a.Recipient(), b.Recipient())
if err != nil {
t.Fatal(err)
}
@@ -126,11 +113,7 @@ func TestEncryptDecryptX25519(t *testing.T) {
t.Fatal(err)
}
i, err := age.NewX25519Identity(secretKeyB)
if err != nil {
t.Fatal(err)
}
out, err := age.Decrypt(buf, i)
out, err := age.Decrypt(buf, b)
if err != nil {
t.Fatal(err)
}

View File

@@ -13,24 +13,14 @@ import (
"filippo.io/age/internal/age"
"filippo.io/age/internal/format"
"golang.org/x/crypto/curve25519"
)
func TestX25519RoundTrip(t *testing.T) {
secretKey := make([]byte, curve25519.ScalarSize)
if _, err := rand.Read(secretKey); err != nil {
t.Fatal(err)
}
publicKey, _ := curve25519.X25519(secretKey, curve25519.Basepoint)
r, err := age.NewX25519Recipient(publicKey)
if err != nil {
t.Fatal(err)
}
i, err := age.NewX25519Identity(secretKey)
i, err := age.GenerateX25519Identity()
if err != nil {
t.Fatal(err)
}
r := i.Recipient()
if r.Type() != i.Type() || r.Type() != "X25519" {
t.Errorf("invalid Type values: %v, %v", r.Type(), i.Type())

View File

@@ -32,8 +32,8 @@ var _ Recipient = &X25519Recipient{}
func (*X25519Recipient) Type() string { return "X25519" }
// NewX25519Recipient returns a new X25519Recipient from a raw Curve25519 point.
func NewX25519Recipient(publicKey []byte) (*X25519Recipient, error) {
// newX25519RecipientFromPoint returns a new X25519Recipient from a raw Curve25519 point.
func newX25519RecipientFromPoint(publicKey []byte) (*X25519Recipient, error) {
if len(publicKey) != curve25519.PointSize {
return nil, errors.New("invalid X25519 public key")
}
@@ -54,7 +54,7 @@ func ParseX25519Recipient(s string) (*X25519Recipient, error) {
if t != "age" {
return nil, fmt.Errorf("malformed recipient %q: invalid type %q", s, t)
}
r, err := NewX25519Recipient(k)
r, err := newX25519RecipientFromPoint(k)
if err != nil {
return nil, fmt.Errorf("malformed recipient %q: %v", s, err)
}
@@ -114,8 +114,8 @@ var _ Identity = &X25519Identity{}
func (*X25519Identity) Type() string { return "X25519" }
// NewX25519Identity returns a new X25519Identity from a raw Curve25519 scalar.
func NewX25519Identity(secretKey []byte) (*X25519Identity, error) {
// newX25519IdentityFromScalar returns a new X25519Identity from a raw Curve25519 scalar.
func newX25519IdentityFromScalar(secretKey []byte) (*X25519Identity, error) {
if len(secretKey) != curve25519.ScalarSize {
return nil, errors.New("invalid X25519 secret key")
}
@@ -127,13 +127,13 @@ func NewX25519Identity(secretKey []byte) (*X25519Identity, error) {
return i, nil
}
// GenerateX25519Identity generates a fresh X25519Identity.
// GenerateX25519Identity randomly generates a new X25519Identity.
func GenerateX25519Identity() (*X25519Identity, error) {
secretKey := make([]byte, curve25519.ScalarSize)
if _, err := rand.Read(secretKey); err != nil {
return nil, fmt.Errorf("internal error: %v", err)
}
return NewX25519Identity(secretKey)
return newX25519IdentityFromScalar(secretKey)
}
// ParseX25519Identity returns a new X25519Recipient from a Bech32 private key
@@ -146,7 +146,7 @@ func ParseX25519Identity(s string) (*X25519Identity, error) {
if t != "AGE-SECRET-KEY-" {
return nil, fmt.Errorf("malformed secret key %q: invalid type %q", s, t)
}
r, err := NewX25519Identity(k)
r, err := newX25519IdentityFromScalar(k)
if err != nil {
return nil, fmt.Errorf("malformed secret key %q: %v", s, err)
}