@@ -77,13 +77,27 @@ func verifySig() *cobra.Command {
77
77
}
78
78
logger .Info (ctx , fmt .Sprintf ("Valid: %t" , valid ))
79
79
80
- fmt .Println ("----------------OpenSSL Verify----------------" )
81
- valid , err = openSSLVerify (ctx , logger , msgData , signed )
80
+ fmt .Println ("----------------OpenSSL Verify CMS ----------------" )
81
+ valid , err = openSSLVerify (ctx , "cms" , logger , msgData , signed )
82
82
if err != nil {
83
83
logger .Error (ctx , "openssl verify" , slog .Error (err ))
84
84
}
85
85
logger .Info (ctx , fmt .Sprintf ("Valid: %t" , valid ))
86
86
87
+ fmt .Println ("----------------OpenSSL Verify SMIME----------------" )
88
+ valid , err = openSSLVerify (ctx , "smime" , logger , msgData , signed )
89
+ if err != nil {
90
+ logger .Error (ctx , "openssl verify" , slog .Error (err ))
91
+ }
92
+ logger .Info (ctx , fmt .Sprintf ("Valid: %t" , valid ))
93
+
94
+ fmt .Println ("----------------node-ovsx-sign Verify----------------" )
95
+ valid , err = openVSXSignVerify (ctx , logger , extensionVsix , p7sFile )
96
+ if err != nil {
97
+ logger .Error (ctx , "open vsx verify" , slog .Error (err ))
98
+ }
99
+ logger .Info (ctx , fmt .Sprintf ("Valid: %t" , valid ))
100
+
87
101
fmt .Println ("----------------vsce-sign Verify----------------" )
88
102
valid , err = vsceSignVerify (ctx , logger , extensionVsix , p7sFile )
89
103
if err != nil {
@@ -143,7 +157,7 @@ func goVerify(ctx context.Context, logger slog.Logger, message []byte, signature
143
157
return verifyErr == nil , nil
144
158
}
145
159
146
- func openSSLVerify (ctx context.Context , logger slog.Logger , message []byte , signature []byte ) (bool , error ) {
160
+ func openSSLVerify (ctx context.Context , algo string , logger slog.Logger , message []byte , signature []byte ) (bool , error ) {
147
161
// openssl cms -verify -in message_from_alice_for_bob.msg -inform DER -CAfile ehealth_root_ca.cer | openssl cms -decrypt -inform DER -recip bob_etk_pair.pem | openssl cms -inform DER -cmsout -print
148
162
tmpdir := os .TempDir ()
149
163
tmpdir = filepath .Join (tmpdir , "verify-sigs" )
@@ -165,7 +179,8 @@ func openSSLVerify(ctx context.Context, logger slog.Logger, message []byte, sign
165
179
166
180
}
167
181
168
- cmd := exec .CommandContext (ctx , "openssl" , "cms" , "-verify" ,
182
+ // smime or cms
183
+ cmd := exec .CommandContext (ctx , "openssl" , algo , "-verify" ,
169
184
"-in" , sigPath , "-content" , msgPath , "-inform" , "DER" ,
170
185
)
171
186
if localCA {
@@ -183,6 +198,30 @@ func openSSLVerify(ctx context.Context, logger slog.Logger, message []byte, sign
183
198
return cmd .ProcessState .ExitCode () == 0 , nil
184
199
}
185
200
201
+ func openVSXSignVerify (ctx context.Context , logger slog.Logger , vsixPath , sigPath string ) (bool , error ) {
202
+ bin := os .Getenv ("OPEN_VSX_SIGN_PATH" )
203
+ if bin == "" {
204
+ return false , xerrors .Errorf ("OPEN_VSX_SIGN_PATH not set" )
205
+ }
206
+
207
+ cmd := exec .CommandContext (ctx , bin , "verify" ,
208
+ vsixPath ,
209
+ sigPath ,
210
+ "--public-key" , "/home/steven/go/src/github.com/coder/code-marketplace/extensionsign/testdata/public.pem" ,
211
+ )
212
+ fmt .Println (cmd .String ())
213
+ output := & strings.Builder {}
214
+ cmd .Stdout = output
215
+ cmd .Stderr = output
216
+ err := cmd .Run ()
217
+ fmt .Println (output .String ())
218
+ if err != nil {
219
+ return false , xerrors .Errorf ("run verify %q: %w" , cmd .String (), err )
220
+ }
221
+
222
+ return cmd .ProcessState .ExitCode () == 0 , nil
223
+ }
224
+
186
225
func vsceSignVerify (ctx context.Context , logger slog.Logger , vsixPath , sigPath string ) (bool , error ) {
187
226
bin := os .Getenv ("VSCE_SIGN_PATH" )
188
227
if bin == "" {
0 commit comments