@@ -5,23 +5,17 @@ import (
5
5
"crypto"
6
6
"encoding/json"
7
7
"fmt"
8
+ "io/ioutil"
8
9
9
10
"github.com/google/go-containerregistry/pkg/name"
10
11
"github.com/google/go-containerregistry/pkg/v1/remote"
11
12
"github.com/sigstore/cosign/v2/pkg/cosign"
12
13
"github.com/sigstore/cosign/v2/pkg/oci"
13
14
"github.com/sigstore/sigstore/pkg/cryptoutils"
14
15
"github.com/sigstore/sigstore/pkg/signature"
15
- "github.com/sigstore/sigstore/pkg/signature/payload"
16
- )
17
-
18
- var (
19
- pub_key = `-----BEGIN PUBLIC KEY-----
20
- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjUlDDji3rnrJpceDaw/fRo5ZGhbJ
21
- ehPAoLSiNJSNRU7AZV+srW6k+1ITu0NVMmwUqL/83Ug0etoSaCiW71b9Hg==
22
- -----END PUBLIC KEY-----`
23
16
)
24
17
18
+ /*
25
19
// Will be used for fetching extra information
26
20
func extractPayload(verified []oci.Signature) ([]payload.SimpleContainerImage, error) {
27
21
var sigPayloads []payload.SimpleContainerImage
@@ -34,6 +28,7 @@ func extractPayload(verified []oci.Signature) ([]payload.SimpleContainerImage, e
34
28
}
35
29
return sigPayloads, nil
36
30
}
31
+ */
37
32
38
33
func decodePEM (raw []byte , signatureAlgorithm crypto.Hash ) (signature.Verifier , error ) {
39
34
// PEM encoded file.
@@ -45,64 +40,107 @@ func decodePEM(raw []byte, signatureAlgorithm crypto.Hash) (signature.Verifier,
45
40
}
46
41
47
42
func verifyImageSignatures_util (ctx context.Context , ref name.Reference ) ([]oci.Signature , error ) {
43
+ filePath := "cosign.pub"
44
+ data , err := ioutil .ReadFile (filePath )
45
+ if err != nil {
46
+ fmt .Println ("Error reading file:" , err )
47
+ panic (err )
48
+ }
48
49
49
- verifier , err := decodePEM ([]byte (pub_key ), crypto .SHA256 )
50
+ // Convert the data to a byte slice ([]byte)
51
+ byteData := []byte (data )
52
+ verifier , err := decodePEM (byteData , crypto .SHA256 )
50
53
if err != nil {
51
54
fmt .Println ("Error occured during the fetching of verifier;" )
52
55
panic (err )
53
56
}
54
57
58
+ trustedTransparencyLogPubKeys , err := cosign .GetRekorPubs (ctx )
59
+ if err != nil {
60
+ fmt .Println ("Error occured during the getting rekor pubs keys..." )
61
+ }
62
+ fmt .Println ("Rekor keys are : " , trustedTransparencyLogPubKeys .Keys )
63
+ // rekor_client := cosign.Get(ctx)
55
64
cosignVeriOptions := cosign.CheckOpts {
56
65
SigVerifier : verifier ,
66
+ // RekorClient: rekor_client,
67
+ RekorPubKeys : trustedTransparencyLogPubKeys ,
57
68
}
58
69
59
- fmt .Println ("Public Key" , verifier .PublicKey )
60
- fmt .Println ("Verify signature : " , verifier .VerifySignature )
61
- fmt .Println ("Sig.Verifier" , verifier )
70
+ /*
71
+ fmt.Println("Public Key", verifier.PublicKey)
72
+ fmt.Println("Verify signature : ", verifier.VerifySignature)
73
+ fmt.Println("Sig.Verifier", verifier)
74
+ */
62
75
63
76
verified_signatures , isVerified , err := cosign .VerifyImageSignatures (ctx , ref , & cosignVeriOptions )
64
- fmt .Println ("-------------------------Signature verification in Progress ---------------------------" )
77
+ fmt .Println ("----------------------------- Signature verification in Progress ---- ---------------------------" )
65
78
if err != nil {
66
79
fmt .Println ("No signature matched : " )
67
- panic (err )
68
80
}
69
81
70
82
if ! isVerified {
71
- panic ("-------------Verification failed --------------------" )
83
+ fmt . Println ("--------------------------------- Verification failed -------------------- --------------------" )
72
84
}
85
+ fmt .Println ("" )
73
86
74
- fmt .Println ("------------------------- Signature verification completed ---------------------------" )
87
+ fmt .Println ("---------------------------- Signature verification completed ------- ---------------------------" )
75
88
return verified_signatures , err
76
89
77
90
}
78
91
79
92
func fetchArtifacts (ref name.Reference ) error {
80
93
desc , err := remote .Get (ref )
81
94
if err != nil {
82
- fmt .Errorf ("Got some error" , err )
83
- return err
95
+ panic (err )
84
96
}
85
97
86
98
byteStream , err := json .Marshal (desc .Descriptor )
99
+ if err != nil {
100
+ fmt .Println ("error during the marshaling of descriptor" )
101
+ panic (err )
102
+ }
87
103
jsonString := string (byteStream )
88
104
fmt .Println (jsonString )
105
+
106
+ img , err := remote .Image (ref )
107
+ if err != nil {
108
+ panic (err )
109
+ }
110
+ manifest , err := img .Manifest ()
111
+ if err != nil {
112
+ panic (err )
113
+ }
114
+ byteStream3 , err := json .Marshal (manifest )
115
+ if err != nil {
116
+ panic (err )
117
+ }
118
+ jsonString3 := string (byteStream3 )
119
+ fmt .Println ("manifest :" , jsonString3 )
120
+
89
121
return nil
90
122
}
91
123
92
124
func cosign2 () {
93
- image := "ghcr.io/hackeramitkumar/kubeji2 :latest"
125
+ image := "ghcr.io/hackeramitkumar/tetsing_cosign/kubeji :latest"
94
126
ref , err := name .ParseReference (image )
95
127
if err != nil {
96
128
panic (err )
97
129
}
98
130
99
- fmt .Println ("--------------------------------Image refrence information : ---- ------------------------------" )
131
+ fmt .Println ("-------------------------------- Image refrence information : ------------------------------" )
100
132
fmt .Println ("Registry : " , ref .Context ().RegistryStr ())
101
133
fmt .Println ("Repository : " , ref .Context ().RepositoryStr ())
102
134
fmt .Println ("Identifier : " , ref .Identifier ())
103
135
104
- fmt .Printf ("------------------------Fetching the signedPayload for : " , image )
105
- fmt .Println ("---------------------------------------------" )
136
+ fmt .Println ("\n " )
137
+ fmt .Println ("------------------------------------------Artifacts--------------------------------------------" )
138
+ fetchArtifacts (ref )
139
+ fmt .Println ()
140
+
141
+ fmt .Print ("----------------- Fetching the signedPayload for : " , image )
142
+ fmt .Println ("-------------------" )
143
+ fmt .Println ("\n " )
106
144
107
145
ctx := context .Background ()
108
146
signedPayloads , err := cosign .FetchSignaturesForReference (ctx , ref )
@@ -111,12 +149,13 @@ func cosign2() {
111
149
panic (err )
112
150
}
113
151
114
- fmt .Println ("------------------------------------- Fetched all the signedPayloads ---------- ----------------------------" )
152
+ fmt .Println ("------------------------------------ Fetched all the signedPayloads ----------------------------" )
115
153
fmt .Println ()
116
154
117
155
for _ , Payload := range signedPayloads {
118
- fmt .Println ("------------------------------------- Signed Payload ------------------------------------------" )
119
- fmt .Println ("\n \n ----------------------------------- Signed Payload Bundle ---------------------------------" )
156
+ fmt .Println ("------------------------------------- Signed Payload Content --------------------------------" )
157
+ fmt .Println ("" )
158
+ fmt .Println ("--------------------------------------Signed Payload Bundle ----------------------------------" )
120
159
121
160
byteStream , err := json .Marshal (Payload .Bundle )
122
161
if err != nil {
@@ -125,46 +164,41 @@ func cosign2() {
125
164
}
126
165
jsonString := string (byteStream )
127
166
fmt .Println (jsonString )
128
- fmt .Printf ("--------------------------------- Signature for Payload : --------------------------------------:\n " )
167
+ fmt .Println ("" )
168
+
169
+ fmt .Println ("--------------------------------------Signature for Payload -----------------------------------" )
129
170
fmt .Println (Payload .Base64Signature )
130
- fmt .Printf ("--------------------------------- Certificate for the Payload : -----------------------------------------: \n " )
171
+ fmt .Println ("" )
172
+
173
+ fmt .Println ("-----------------------------------Certificate for the Payload---------------------------------" )
131
174
byteStream2 , err := json .Marshal (Payload .Cert )
132
- // sigVer, err := cosign.ValidateAndUnpackCert(Payload.Cert)
133
175
134
176
if err != nil {
135
177
fmt .Println ("Error marshaling JSON:" , err )
136
178
return
137
179
}
138
180
jsonString2 := string (byteStream2 )
139
181
fmt .Println (jsonString2 )
140
-
141
- // verification by using the certificate
142
-
143
182
}
144
183
145
- fmt .Println ("----------------------Artifacts----------------------------------" )
146
- fetchArtifacts (ref )
147
-
148
- img , err := remote .Image (ref )
149
- manifest , err := img .Manifest ()
150
- byteStream3 , err := json .Marshal (manifest )
151
- jsonString3 := string (byteStream3 )
152
- fmt .Println ("manifest :" , jsonString3 )
153
-
154
- fmt .Println ("------------------------------------Signature verification --------------------------------------------" )
155
-
156
- buffer_key := []byte (pub_key )
157
- fmt .Println ()
158
-
159
- stringstr4 := string (buffer_key )
160
- fmt .Println ("The public key is : " , stringstr4 )
184
+ fmt .Println ("\n " )
185
+ fmt .Println ("-------------------------------------Signature verification --------------------------------------" )
186
+ fmt .Println ("" )
161
187
162
188
verified_signatures , err := verifyImageSignatures_util (ctx , ref )
163
- fmt .Println ("List of the verified signatures ----------------::::::" )
189
+ if err != nil {
190
+ panic (err )
191
+ }
192
+ fmt .Println ("" )
193
+ fmt .Println ("--------------------------------List of the verified signatures ----------------------------------" )
164
194
for _ , sig := range verified_signatures {
165
- fmt .Println (sig .Base64Signature )
195
+ // temp, err := json.Marshal()
196
+ // if err != nil {
197
+ // fmt.Println("Error occured during the conversion : ", err)
198
+ // }
199
+ // tempstr := string(temp)
200
+ fmt .Println (sig .Base64Signature ())
166
201
}
167
-
168
202
}
169
203
170
204
func main () {
0 commit comments