mirror of
https://github.com/FiloSottile/age.git
synced 2026-04-19 10:35:01 +00:00
internal/age: unexport NewX25519Recipient and NewX25519Identity
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user