diff --git a/key.go b/key.go index 37afc24..d2230fd 100644 --- a/key.go +++ b/key.go @@ -572,10 +572,6 @@ func (k *Key) PrivateKey() (crypto.PrivateKey, error) { return nil, err } - if len(k.D) == 0 { - return nil, ErrNotPrivKey - } - switch alg { case AlgorithmES256, AlgorithmES384, AlgorithmES512: // RFC8152 allows omitting X and Y from private keys; diff --git a/key_test.go b/key_test.go index c2d2979..a65598b 100644 --- a/key_test.go +++ b/key_test.go @@ -612,6 +612,12 @@ func TestKey_PrivateKey(t *testing.T) { _, err = k.PrivateKey() assertEqualError(t, err, ErrNotPrivKey.Error()) + k.KeyType = KeyTypeEC2 + k.Curve = CurveP256 + + _, err = k.PrivateKey() + assertEqualError(t, err, ErrNotPrivKey.Error()) + k = Key{ KeyType: KeyTypeOKP, Curve: CurveEd25519, @@ -621,11 +627,19 @@ func TestKey_PrivateKey(t *testing.T) { _, err = k.PrivateKey() assertEqualError(t, err, ErrOKPNoPub.Error()) + k.Curve = CurveInvalid + _, err = k.PrivateKey() + assertEqualError(t, err, ErrInvalidKey.Error()) + k.KeyType = KeyTypeEC2 k.Curve = CurveP256 _, err = k.PrivateKey() assertEqualError(t, err, ErrEC2NoPub.Error()) + + k.Curve = CurveInvalid + _, err = k.PrivateKey() + assertEqualError(t, err, ErrInvalidKey.Error()) } func TestKey_PublicKey(t *testing.T) {