signature.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package main
  2. import (
  3. "os"
  4. "github.com/langgenius/dify-plugin-daemon/cmd/commandline/signature"
  5. "github.com/spf13/cobra"
  6. )
  7. var (
  8. signatureGenerateCommand = &cobra.Command{
  9. Use: "generate",
  10. Short: "Generate a key pair",
  11. Long: "Generate a key pair",
  12. Args: cobra.ExactArgs(0),
  13. Run: func(c *cobra.Command, args []string) {
  14. keyPairName := c.Flag("filename").Value.String()
  15. if keyPairName == "" {
  16. keyPairName = "dify_plugin_signing_key"
  17. }
  18. err := signature.GenerateKeyPair(keyPairName)
  19. if err != nil {
  20. os.Exit(1)
  21. }
  22. },
  23. }
  24. signatureSignCommand = &cobra.Command{
  25. Use: "sign [difypkg_path]",
  26. Short: "Sign a difypkg file",
  27. Long: "Sign a difypkg file with the specified private key",
  28. Args: cobra.ExactArgs(1),
  29. Run: func(c *cobra.Command, args []string) {
  30. difypkgPath := args[0]
  31. privateKeyPath := c.Flag("private_key").Value.String()
  32. err := signature.Sign(difypkgPath, privateKeyPath)
  33. if err != nil {
  34. os.Exit(1)
  35. }
  36. },
  37. }
  38. signatureVerifyCommand = &cobra.Command{
  39. Use: "verify [difypkg_path]",
  40. Short: "Verify a difypkg file",
  41. Long: "Verify a difypkg file with the specified public key. If no public key is provided, the official public key will be used",
  42. Args: cobra.ExactArgs(1),
  43. Run: func(c *cobra.Command, args []string) {
  44. difypkgPath := args[0]
  45. publicKeyPath := c.Flag("public_key").Value.String()
  46. err := signature.Verify(difypkgPath, publicKeyPath)
  47. if err != nil {
  48. os.Exit(1)
  49. }
  50. },
  51. }
  52. )
  53. func init() {
  54. signatureCommand.AddCommand(signatureGenerateCommand)
  55. signatureCommand.AddCommand(signatureSignCommand)
  56. signatureCommand.AddCommand(signatureVerifyCommand)
  57. signatureGenerateCommand.Flags().StringP("filename", "f", "", "filename of the key pair")
  58. signatureSignCommand.Flags().StringP("private_key", "p", "", "private key file")
  59. signatureSignCommand.MarkFlagRequired("private_key")
  60. signatureVerifyCommand.Flags().StringP("public_key", "p", "", "public key file")
  61. }