package main import ( otpdecrypt "dotp/otp_decrypt" otpencrypt "dotp/otp_encrypt" otpgenerate "dotp/otp_generate" "flag" "fmt" "math" "strings" ) func main() { var genpad = flag.Bool("generate", false, "Generate a new One-Time Pad using CSPRNG") var genpadchunks = flag.Int("chunks", 200, "Specify the amount of chunks to generate") var encryptmessage = flag.String("encrypt", "", "Specify a message you wish to encrypt (use quotes if you have spaces)") var decryptmessage = flag.String("decrypt", "", "Specify a message you wish to decrypt (use quotes if you have spaces)") var otpkey = flag.String("key", "", "The specify a key for encryption (optional) and decryption (required) (use quotes if you have spaces)") flag.Parse() if *genpad { fmt.Printf("%v\n", otpgenerate.GenerateOTP(*genpadchunks)) return } if *encryptmessage != "" { if *otpkey != "" { fmt.Printf("%v\n", otpencrypt.OTPEncrypt(*encryptmessage, *otpkey)) } else { encryptmessagestring := strings.Replace(*encryptmessage, " ", "", -1) lenofmessage := math.Ceil(float64(len(encryptmessagestring)) / float64(5)) generated_key := otpgenerate.GenerateOTP(int(lenofmessage)) fmt.Printf("GENERATED NEW KEY SINCE NONE WAS SPECIFIED:\n%v\n\n%v\n", generated_key, otpencrypt.OTPEncrypt(*encryptmessage, generated_key)) } return } if *decryptmessage != "" { if *otpkey != "" { fmt.Printf("%v\n", otpdecrypt.OTPDecrypt(*decryptmessage, *otpkey)) } else { fmt.Println("PLEASE SUPPLY A KEY") } return } flag.PrintDefaults() }