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() } }