This is a follow-up to CL 317169, which dropped go1.12 compatibility, and made the golang.org/x/crypto/ed25519 package an alias / wrapper for crypto/ed25519 in stdlib. This patch updates uses within this repository to use stdlib instead of depending on the wrapper. With this patch applied, the only remaining use of the wrapper is in ed25519_test, which appears to be in place to verify compatibility of the wrapper itself. Change-Id: I0195396102a75ae20bdd82ca8ab59855c0eb5cea GitHub-Last-Rev: 24dbec563cbd84bc47bdc7736b0245fc83dd3353 GitHub-Pull-Request: golang/crypto#238 Reviewed-on: https://go-review.googlesource.com/c/crypto/+/448238 Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Nicola Murino <nicola.murino@gmail.com> Reviewed-by: Nicola Murino <nicola.murino@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Joedian Reid <joedian@golang.org> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
101 lines
2.4 KiB
Go
101 lines
2.4 KiB
Go
// Copyright 2019 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
//go:build go1.13
|
|
// +build go1.13
|
|
|
|
package wycheproof
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
"testing"
|
|
)
|
|
|
|
func TestEddsa(t *testing.T) {
|
|
// Jwk the private key in webcrypto format
|
|
type Jwk struct {
|
|
}
|
|
|
|
// Key unencoded key pair
|
|
type Key struct {
|
|
}
|
|
|
|
// Notes a description of the labels used in the test vectors
|
|
type Notes struct {
|
|
}
|
|
|
|
// SignatureTestVector
|
|
type SignatureTestVector struct {
|
|
|
|
// A brief description of the test case
|
|
Comment string `json:"comment,omitempty"`
|
|
|
|
// A list of flags
|
|
Flags []string `json:"flags,omitempty"`
|
|
|
|
// The message to sign
|
|
Msg string `json:"msg,omitempty"`
|
|
|
|
// Test result
|
|
Result string `json:"result,omitempty"`
|
|
|
|
// A signature for msg
|
|
Sig string `json:"sig,omitempty"`
|
|
|
|
// Identifier of the test case
|
|
TcId int `json:"tcId,omitempty"`
|
|
}
|
|
|
|
// EddsaTestGroup
|
|
type EddsaTestGroup struct {
|
|
|
|
// the private key in webcrypto format
|
|
Jwk *Jwk `json:"jwk,omitempty"`
|
|
|
|
// unencoded key pair
|
|
Key *Key `json:"key,omitempty"`
|
|
|
|
// Asn encoded public key
|
|
KeyDer string `json:"keyDer,omitempty"`
|
|
|
|
// Pem encoded public key
|
|
KeyPem string `json:"keyPem,omitempty"`
|
|
Tests []*SignatureTestVector `json:"tests,omitempty"`
|
|
Type interface{} `json:"type,omitempty"`
|
|
}
|
|
|
|
// Root
|
|
type Root struct {
|
|
|
|
// the primitive tested in the test file
|
|
Algorithm string `json:"algorithm,omitempty"`
|
|
|
|
// the version of the test vectors.
|
|
GeneratorVersion string `json:"generatorVersion,omitempty"`
|
|
|
|
// additional documentation
|
|
Header []string `json:"header,omitempty"`
|
|
|
|
// a description of the labels used in the test vectors
|
|
Notes *Notes `json:"notes,omitempty"`
|
|
|
|
// the number of test vectors in this test
|
|
NumberOfTests int `json:"numberOfTests,omitempty"`
|
|
Schema interface{} `json:"schema,omitempty"`
|
|
TestGroups []*EddsaTestGroup `json:"testGroups,omitempty"`
|
|
}
|
|
|
|
var root Root
|
|
readTestVector(t, "eddsa_test.json", &root)
|
|
for _, tg := range root.TestGroups {
|
|
pub := decodePublicKey(tg.KeyDer).(ed25519.PublicKey)
|
|
for _, sig := range tg.Tests {
|
|
got := ed25519.Verify(pub, decodeHex(sig.Msg), decodeHex(sig.Sig))
|
|
if want := shouldPass(sig.Result, sig.Flags, nil); got != want {
|
|
t.Errorf("tcid: %d, type: %s, comment: %q, wanted success: %t", sig.TcId, sig.Result, sig.Comment, want)
|
|
}
|
|
}
|
|
}
|
|
}
|