verify.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package all
  2. import (
  3. "os"
  4. "github.com/v2fly/VSign/signerVerify"
  5. "github.com/v2fly/v2ray-core/v4/main/commands/base"
  6. )
  7. var cmdVerify = &base.Command{
  8. UsageLine: "{{.Exec}} verify [--sig=sig-file] file",
  9. Short: "Verify if a binary is officially signed",
  10. Long: `
  11. Verify if a binary is officially signed.
  12. Arguments:
  13. -sig
  14. The path to the signature file
  15. `,
  16. }
  17. func init() {
  18. cmdVerify.Run = executeVerify // break init loop
  19. }
  20. var (
  21. verifySigFile = cmdVerify.Flag.String("sig", "", "Path to the signature file")
  22. )
  23. func executeVerify(cmd *base.Command, args []string) {
  24. target := cmdVerify.Flag.Arg(0)
  25. if target == "" {
  26. base.Fatalf("empty file path.")
  27. }
  28. if *verifySigFile == "" {
  29. base.Fatalf("empty signature path.")
  30. }
  31. sigReader, err := os.Open(os.ExpandEnv(*verifySigFile))
  32. if err != nil {
  33. base.Fatalf("failed to open file %s: %s ", *verifySigFile, err)
  34. }
  35. files := cmdVerify.Flag.Args()
  36. err = signerVerify.OutputAndJudge(signerVerify.CheckSignaturesV2Fly(sigReader, files))
  37. if err != nil {
  38. base.Fatalf("file is not officially signed by V2Ray: %s", err)
  39. }
  40. }