main.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. package main
  2. import (
  3. "fmt"
  4. cli "github.com/urfave/cli/v2"
  5. "os"
  6. )
  7. func main() {
  8. app := &cli.App{
  9. Name: "NagaeEDST",
  10. Usage: "Nagae ED25519 Signature Tool",
  11. Flags: []cli.Flag{
  12. &cli.StringFlag{
  13. Name: "key-store",
  14. Aliases: []string{"ks"},
  15. Usage: "Key store path, default is '%%LOCAL_CREDENTIALS%%/NagaeROV/NagaeEDST'",
  16. Required: false,
  17. },
  18. },
  19. Commands: []*cli.Command{
  20. {
  21. Name: "keygen",
  22. Aliases: []string{"kg"},
  23. Usage: "Generate a new key",
  24. Flags: []cli.Flag{
  25. &cli.StringFlag{
  26. Name: "name",
  27. Aliases: []string{"n"},
  28. Usage: "Name of the key",
  29. Required: true,
  30. },
  31. },
  32. Action: KeyGenerate,
  33. },
  34. {
  35. Name: "print-pubkey",
  36. Aliases: []string{"pub"},
  37. Flags: []cli.Flag{
  38. &cli.StringFlag{
  39. Name: "key",
  40. Usage: "key name",
  41. Aliases: []string{"k"},
  42. Required: true,
  43. },
  44. },
  45. Action: PrintPublicKey,
  46. },
  47. {
  48. Name: "sign-file",
  49. Aliases: []string{"sf"},
  50. Usage: "Sign a file",
  51. Flags: []cli.Flag{
  52. &cli.StringFlag{
  53. Name: "file",
  54. Aliases: []string{"f"},
  55. Required: true,
  56. },
  57. &cli.StringFlag{
  58. Name: "out",
  59. Usage: "specify output filename, default is <file>.ng-edst-sig",
  60. Aliases: []string{"o"},
  61. Required: false,
  62. },
  63. &cli.StringFlag{
  64. Name: "key",
  65. Usage: "key name",
  66. Aliases: []string{"k"},
  67. Required: true,
  68. },
  69. },
  70. Action: SignFile,
  71. },
  72. {
  73. Name: "verify-file",
  74. Aliases: []string{"vf"},
  75. Usage: "verify a file",
  76. Flags: []cli.Flag{
  77. &cli.StringFlag{
  78. Name: "file",
  79. Aliases: []string{"f"},
  80. Required: true,
  81. },
  82. &cli.StringFlag{
  83. Name: "sig",
  84. Usage: "specify signature filename, default is <file>.ng-edst-sig",
  85. Aliases: []string{"s"},
  86. Required: false,
  87. },
  88. &cli.StringFlag{
  89. Name: "key",
  90. Usage: "key name",
  91. Aliases: []string{"k"},
  92. Required: true,
  93. },
  94. },
  95. Action: VerifyFile,
  96. },
  97. {
  98. Name: "sign-file-s512",
  99. Aliases: []string{"sfs"},
  100. Usage: "Sign a large file using sha512 with ed25519",
  101. Flags: []cli.Flag{
  102. &cli.StringFlag{
  103. Name: "file",
  104. Aliases: []string{"f"},
  105. Required: true,
  106. },
  107. &cli.StringFlag{
  108. Name: "out",
  109. Usage: "specify output filename, default is <file>.ng-edst-s512-sig",
  110. Aliases: []string{"o"},
  111. Required: false,
  112. },
  113. &cli.StringFlag{
  114. Name: "key",
  115. Usage: "key name",
  116. Aliases: []string{"k"},
  117. Required: true,
  118. },
  119. },
  120. Action: SignFileS512,
  121. },
  122. {
  123. Name: "verify-file-s512",
  124. Aliases: []string{"vfs"},
  125. Usage: "verify a large file using sha512 with ed25519",
  126. Flags: []cli.Flag{
  127. &cli.StringFlag{
  128. Name: "file",
  129. Aliases: []string{"f"},
  130. Required: true,
  131. },
  132. &cli.StringFlag{
  133. Name: "sig",
  134. Usage: "specify signature filename, default is <file>.ng-edst-s512-sig",
  135. Aliases: []string{"s"},
  136. Required: false,
  137. },
  138. &cli.StringFlag{
  139. Name: "key",
  140. Usage: "key name",
  141. Aliases: []string{"k"},
  142. Required: true,
  143. },
  144. },
  145. Action: VerifyFileS512,
  146. },
  147. },
  148. }
  149. if err := app.Run(os.Args); err != nil {
  150. fmt.Println("command failed with error: ", err)
  151. os.Exit(-5)
  152. }
  153. }