@@ -18,23 +18,20 @@ package verify
18
18
import (
19
19
"context"
20
20
"crypto/sha256"
21
- "encoding/base64"
22
21
"testing"
23
22
24
23
pbs "github.com/sigstore/protobuf-specs/gen/pb-go/rekor/v1"
25
24
rekornote "github.com/sigstore/rekor-tiles/pkg/note"
26
25
"github.com/sigstore/sigstore/pkg/signature"
26
+ "github.com/stretchr/testify/assert"
27
27
f_log "github.com/transparency-dev/formats/log"
28
28
note "golang.org/x/mod/sumdb/note"
29
29
)
30
30
31
31
func TestVerifyInclusionProof (t * testing.T ) {
32
32
hash := []byte {89 , 165 , 117 , 241 , 87 , 39 , 71 , 2 , 195 , 141 , 227 , 171 , 30 , 23 , 132 , 34 , 111 , 57 , 31 , 183 , 149 , 0 , 235 , 249 , 240 , 43 , 68 , 57 , 251 , 119 , 87 , 76 }
33
33
rootHash := []byte {91 , 225 , 117 , 141 , 210 , 34 , 138 , 207 , 175 , 37 , 70 , 180 , 182 , 206 , 138 , 164 , 12 , 130 , 163 , 116 , 143 , 61 , 203 , 85 , 14 , 13 , 103 , 186 , 52 , 240 , 42 , 69 }
34
- body , err := base64 .StdEncoding .DecodeString ("eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoicmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJlY2RjNTUzNmY3M2JkYWU4ODE2ZjBlYTQwNzI2ZWY1ZTliODEwZDkxNDQ5MzA3NTkwM2JiOTA2MjNkOTdiMWQ4In19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FWUNJUUQvUGRQUW1LV0MxKzBCTkVkNWdLdlFHcjF4eGwzaWVVZmZ2M2prMXp6Skt3SWhBTEJqM3hmQXlXeGx6NGpwb0lFSVYxVWZLOXZua1VVT1NvZVp4QlpQSEtQQyIsImZvcm1hdCI6Ing1MDkiLCJwdWJsaWNLZXkiOnsiY29udGVudCI6IkxTMHRMUzFDUlVkSlRpQlFWVUpNU1VNZ1MwVlpMUzB0TFMwS1RVWnJkMFYzV1VoTGIxcEplbW93UTBGUldVbExiMXBKZW1vd1JFRlJZMFJSWjBGRlRVOWpWR1pTUWxNNWFtbFlUVGd4UmxvNFoyMHZNU3R2YldWTmR3cHRiaTh6TkRjdk5UVTJaeTlzY21sVE56SjFUV2haT1V4alZDczFWVW8yWmtkQ1oyeHlOVm80VERCS1RsTjFZWE41WldRNVQzUmhVblozUFQwS0xTMHRMUzFGVGtRZ1VGVkNURWxESUV0RldTMHRMUzB0Q2c9PSJ9fX19" )
35
- if err != nil {
36
- t .Fatal (err )
37
- }
34
+ body := []byte ("{\" apiVersion\" :\" 0.0.1\" ,\" kind\" :\" rekord\" ,\" spec\" :{\" data\" :{\" hash\" :{\" algorithm\" :\" sha256\" ,\" value\" :\" ecdc5536f73bdae8816f0ea40726ef5e9b810d914493075903bb90623d97b1d8\" }},\" signature\" :{\" content\" :\" MEYCIQD/PdPQmKWC1+0BNEd5gKvQGr1xxl3ieUffv3jk1zzJKwIhALBj3xfAyWxlz4jpoIEIV1UfK9vnkUUOSoeZxBZPHKPC\" ,\" format\" :\" x509\" ,\" publicKey\" :{\" content\" :\" LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTU9jVGZSQlM5amlYTTgxRlo4Z20vMStvbWVNdwptbi8zNDcvNTU2Zy9scmlTNzJ1TWhZOUxjVCs1VUo2ZkdCZ2xyNVo4TDBKTlN1YXN5ZWQ5T3RhUnZ3PT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==\" }}}}" )
38
35
39
36
for _ , test := range []struct {
40
37
name string
@@ -182,3 +179,55 @@ func TestVerifyCheckpoint(t *testing.T) {
182
179
})
183
180
}
184
181
}
182
+
183
+ func TestVerifyLogEntry (t * testing.T ) {
184
+ hostname := "rekor.localhost"
185
+ hash := []byte {89 , 165 , 117 , 241 , 87 , 39 , 71 , 2 , 195 , 141 , 227 , 171 , 30 , 23 , 132 , 34 , 111 , 57 , 31 , 183 , 149 , 0 , 235 , 249 , 240 , 43 , 68 , 57 , 251 , 119 , 87 , 76 }
186
+ rootHash := []byte {91 , 225 , 117 , 141 , 210 , 34 , 138 , 207 , 175 , 37 , 70 , 180 , 182 , 206 , 138 , 164 , 12 , 130 , 163 , 116 , 143 , 61 , 203 , 85 , 14 , 13 , 103 , 186 , 52 , 240 , 42 , 69 }
187
+ body := []byte ("{\" apiVersion\" :\" 0.0.1\" ,\" kind\" :\" rekord\" ,\" spec\" :{\" data\" :{\" hash\" :{\" algorithm\" :\" sha256\" ,\" value\" :\" ecdc5536f73bdae8816f0ea40726ef5e9b810d914493075903bb90623d97b1d8\" }},\" signature\" :{\" content\" :\" MEYCIQD/PdPQmKWC1+0BNEd5gKvQGr1xxl3ieUffv3jk1zzJKwIhALBj3xfAyWxlz4jpoIEIV1UfK9vnkUUOSoeZxBZPHKPC\" ,\" format\" :\" x509\" ,\" publicKey\" :{\" content\" :\" LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTU9jVGZSQlM5amlYTTgxRlo4Z20vMStvbWVNdwptbi8zNDcvNTU2Zy9scmlTNzJ1TWhZOUxjVCs1VUo2ZkdCZ2xyNVo4TDBKTlN1YXN5ZWQ5T3RhUnZ3PT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==\" }}}}" )
188
+
189
+ sv , _ , err := signature .NewDefaultECDSASignerVerifier ()
190
+ if err != nil {
191
+ t .Fatal (err )
192
+ }
193
+
194
+ noteVerifier , err := rekornote .NewNoteVerifier (hostname , sv )
195
+ if err != nil {
196
+ t .Fatal (err )
197
+ }
198
+
199
+ noteSigner , err := rekornote .NewNoteSigner (context .Background (), hostname , sv )
200
+ if err != nil {
201
+ t .Fatal (err )
202
+ }
203
+ cpRaw := f_log.Checkpoint {
204
+ Origin : hostname ,
205
+ Size : uint64 (2 ),
206
+ Hash : rootHash ,
207
+ }.Marshal ()
208
+
209
+ n , err := note .Sign (& note.Note {Text : string (cpRaw )}, noteSigner )
210
+ if err != nil {
211
+ t .Fatal (err )
212
+ }
213
+
214
+ proof := & pbs.InclusionProof {
215
+ LogIndex : 1 ,
216
+ TreeSize : 2 ,
217
+ Hashes : [][]byte {
218
+ []byte (hash ),
219
+ },
220
+ Checkpoint : & pbs.Checkpoint {
221
+ Envelope : string (n ),
222
+ },
223
+ }
224
+
225
+ entry := & pbs.TransparencyLogEntry {
226
+ CanonicalizedBody : body ,
227
+ InclusionProof : proof ,
228
+ LogIndex : 1 ,
229
+ }
230
+
231
+ gotErr := VerifyLogEntry (entry , noteVerifier )
232
+ assert .NoError (t , gotErr )
233
+ }
0 commit comments