diff options
Diffstat (limited to 'playground/main.go')
| -rw-r--r-- | playground/main.go | 87 |
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() + } +} |