summaryrefslogtreecommitdiff
path: root/playground/main.go
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2021-04-30 10:28:16 +0400
committerAndrew <saintruler@gmail.com>2021-04-30 10:28:16 +0400
commit587ac4f7fecc417b4877c5f3c0fdefa58990b3c8 (patch)
treeeeba2f4ec3a0a276f860abc7411c969a8cb39e96 /playground/main.go
parent0106c0f8e013977cbc96f17f3c95e38d2d5ea854 (diff)
Added signer app
Diffstat (limited to 'playground/main.go')
-rw-r--r--playground/main.go87
1 files changed, 87 insertions, 0 deletions
diff --git a/playground/main.go b/playground/main.go
new file mode 100644
index 0000000..b8574f0
--- /dev/null
+++ b/playground/main.go
@@ -0,0 +1,87 @@
+package main
+
+import (
+ "fmt"
+ "os"
+)
+
+func runGeneration() {
+ _, privateBytes, publicBytes, err := generateKeys()
+ if err != nil {
+ fmt.Printf("Произошла ошибка при генерации ключей: %s\n", err)
+ os.Exit(1)
+ }
+
+ err = writeFile(os.Args[2], privateBytes)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+ err = writeFile(os.Args[3], publicBytes)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+}
+
+func runSign() {
+ keyFile := os.Args[2]
+ messageFile := os.Args[3]
+ resultFile := os.Args[4]
+
+ key, err := loadPublicPEM(keyFile)
+
+ message, err := readFile(messageFile)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+ signedMessage, err := signData(message, key)
+ if err != nil {
+ fmt.Printf("Произошла ошибка при подписи данных: %s\n", err)
+ os.Exit(1)
+ }
+ err = writeFile(resultFile, []byte(signedMessage))
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+}
+
+func runCheck() {
+ keyFile := os.Args[2]
+ signedFile := os.Args[3]
+
+ key, err := loadPrivatePEM(keyFile)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+
+ data, err := readFile(signedFile)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+ result, err := checkSignature(string(data), key)
+ if err != nil {
+ fmt.Printf("%s\n", err)
+ os.Exit(1)
+ }
+
+ if result {
+ fmt.Println("Подпись верна")
+ } else {
+ fmt.Println("Подпись не верна")
+ }
+}
+
+func main() {
+ if os.Args[1] == "generate" {
+ runGeneration()
+ } else if os.Args[1] == "sign" {
+ runSign()
+ } else if os.Args[1] == "check" {
+ runCheck()
+ }
+}