4
4
"context"
5
5
"crypto/x509"
6
6
"fmt"
7
- "io"
8
7
"os"
9
8
"os/exec"
10
9
"path/filepath"
@@ -16,7 +15,6 @@ import (
16
15
17
16
"cdr.dev/slog"
18
17
"github.com/coder/code-marketplace/extensionsign"
19
- "github.com/coder/code-marketplace/storage/easyzip"
20
18
)
21
19
22
20
func signature () * cobra.Command {
@@ -31,6 +29,10 @@ func signature() *cobra.Command {
31
29
return cmd
32
30
}
33
31
32
+ var (
33
+ localCA = false
34
+ )
35
+
34
36
func verifySig () * cobra.Command {
35
37
cmd := & cobra.Command {
36
38
Use : "verify <extension.vsix> <signature.p7s>" ,
@@ -40,6 +42,11 @@ func verifySig() *cobra.Command {
40
42
logger := cmdLogger (cmd )
41
43
ctx := cmd .Context ()
42
44
extensionVsix := args [0 ]
45
+ msgData , err := os .ReadFile (extensionVsix )
46
+ if err != nil {
47
+ return xerrors .Errorf ("read %q: %w" , extensionVsix , err )
48
+ }
49
+
43
50
p7sFile := args [1 ]
44
51
45
52
logger .Info (ctx , fmt .Sprintf ("Decoding %q" , p7sFile ))
@@ -49,14 +56,14 @@ func verifySig() *cobra.Command {
49
56
return xerrors .Errorf ("read %q: %w" , p7sFile , err )
50
57
}
51
58
52
- msg , err := easyzip .GetZipFileReader (data , extensionVsix )
53
- if err != nil {
54
- return xerrors .Errorf ("get manifest: %w" , err )
55
- }
56
- msgData , err := io .ReadAll (msg )
57
- if err != nil {
58
- return xerrors .Errorf ("read manifest: %w" , err )
59
- }
59
+ // msg, err := easyzip.GetZipFileReader(data, extensionVsix)
60
+ // if err != nil {
61
+ // return xerrors.Errorf("get manifest: %w", err)
62
+ // }
63
+ // msgData, err := io.ReadAll(msg)
64
+ // if err != nil {
65
+ // return xerrors.Errorf("read manifest: %w", err)
66
+ // }
60
67
61
68
signed , err := extensionsign .ExtractP7SSig (data )
62
69
if err != nil {
@@ -87,6 +94,7 @@ func verifySig() *cobra.Command {
87
94
return nil
88
95
},
89
96
}
97
+ cmd .Flags ().BoolVar (& localCA , "local-ca" , true , "Use the local CA for verification." )
90
98
return cmd
91
99
}
92
100
@@ -153,12 +161,18 @@ func openSSLVerify(ctx context.Context, logger slog.Logger, message []byte, sign
153
161
return false , xerrors .Errorf ("write signature: %w" , err )
154
162
}
155
163
156
- cmd := exec .CommandContext (ctx , "openssl" , "smime" , "-verify" ,
164
+ if localCA {
165
+
166
+ }
167
+
168
+ cmd := exec .CommandContext (ctx , "openssl" , "cms" , "-verify" ,
157
169
"-in" , sigPath , "-content" , msgPath , "-inform" , "DER" ,
158
- "-CAfile" , "/home/steven/go/src/github.com/coder/code-marketplace/extensionsign/testdata/cert2.pem" ,
159
170
)
171
+ if localCA {
172
+ cmd .Args = append (cmd .Args , "-CAfile" , "/home/steven/go/src/github.com/coder/code-marketplace/extensionsign/testdata/cert2.pem" )
173
+ }
160
174
output := & strings.Builder {}
161
- cmd .Stdout = output
175
+ // cmd.Stdout = output
162
176
cmd .Stderr = output
163
177
err = cmd .Run ()
164
178
fmt .Println (output .String ())
0 commit comments