Skip to content

Commit 6fdab85

Browse files
committed
rsa: Fix method receivers, add DSSE test
Signed-off-by: Aditya Sirish <[email protected]>
1 parent e545a00 commit 6fdab85

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

signerverifier/rsa.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func (sv *RSAPSSSignerVerifier) Sign(ctx context.Context, data []byte) ([]byte,
6565
return rsa.SignPSS(rand.Reader, sv.private, crypto.SHA256, hashedData, &rsa.PSSOptions{SaltLength: sha256.Size, Hash: crypto.SHA256})
6666
}
6767

68-
func (sv RSAPSSSignerVerifier) Verify(ctx context.Context, data []byte, sig []byte) error {
68+
func (sv *RSAPSSSignerVerifier) Verify(ctx context.Context, data []byte, sig []byte) error {
6969
hashedData := hashBeforeSigning(data, sha256.New())
7070

7171
if err := rsa.VerifyPSS(sv.public, crypto.SHA256, hashedData, sig, &rsa.PSSOptions{SaltLength: sha256.Size, Hash: crypto.SHA256}); err != nil {
@@ -75,11 +75,11 @@ func (sv RSAPSSSignerVerifier) Verify(ctx context.Context, data []byte, sig []by
7575
return nil
7676
}
7777

78-
func (sv RSAPSSSignerVerifier) KeyID() (string, error) {
78+
func (sv *RSAPSSSignerVerifier) KeyID() (string, error) {
7979
return sv.keyID, nil
8080
}
8181

82-
func (sv RSAPSSSignerVerifier) Public() crypto.PublicKey {
82+
func (sv *RSAPSSSignerVerifier) Public() crypto.PublicKey {
8383
return sv.public
8484
}
8585

signerverifier/rsa_test.go

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"path/filepath"
77
"testing"
88

9+
"github.com/secure-systems-lab/go-securesystemslib/dsse"
910
"github.com/stretchr/testify/assert"
1011
)
1112

@@ -67,3 +68,52 @@ func TestRSAPSSSignerVerifierSignAndVerify(t *testing.T) {
6768
assert.ErrorIs(t, err, ErrNotPrivateKey)
6869
})
6970
}
71+
72+
func TestRSAPSSSignerVerifierWithDSSEEnvelope(t *testing.T) {
73+
key, err := LoadRSAPSSKeyFromFile(filepath.Join("test-data", "rsa-test-key"))
74+
if err != nil {
75+
t.Fatal(err)
76+
}
77+
78+
sv, err := NewRSAPSSSignerVerifierFromSSLibKey(key)
79+
if err != nil {
80+
t.Fatal(err)
81+
}
82+
83+
payloadType := "application/vnd.dsse+json"
84+
payload := []byte("test message")
85+
86+
es, err := dsse.NewEnvelopeSigner(sv)
87+
if err != nil {
88+
t.Error(err)
89+
}
90+
91+
env, err := es.SignPayload(context.Background(), payloadType, payload)
92+
if err != nil {
93+
t.Error(err)
94+
}
95+
96+
assert.Equal(t, "966c5d84ba73ccded42eb473c939d77336e4def253ffaf6739f8e983ef73dad8", env.Signatures[0].KeyID)
97+
envPayload, err := env.DecodeB64Payload()
98+
assert.Equal(t, payload, envPayload)
99+
assert.Nil(t, err)
100+
101+
key, err = LoadRSAPSSKeyFromFile(filepath.Join("test-data", "rsa-test-key.pub"))
102+
if err != nil {
103+
t.Fatal(err)
104+
}
105+
106+
sv, err = NewRSAPSSSignerVerifierFromSSLibKey(key)
107+
if err != nil {
108+
t.Fatal(err)
109+
}
110+
111+
ev, err := dsse.NewEnvelopeVerifier(sv)
112+
if err != nil {
113+
t.Error(err)
114+
}
115+
116+
acceptedKeys, err := ev.Verify(context.Background(), env)
117+
assert.Nil(t, err)
118+
assert.Equal(t, "966c5d84ba73ccded42eb473c939d77336e4def253ffaf6739f8e983ef73dad8", acceptedKeys[0].KeyID)
119+
}

0 commit comments

Comments
 (0)