From 587ac4f7fecc417b4877c5f3c0fdefa58990b3c8 Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 30 Apr 2021 10:28:16 +0400 Subject: Added signer app --- playground/main.go | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 playground/main.go (limited to 'playground/main.go') 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() + } +} -- cgit v1.2.3