private static int EncryptFile(EncryptFileOptions opts) { string fileName = Path.GetFileName(opts.FileToEncrypt); X509Certificate2 certificate = new X509Certificate2(opts.CertificatePath); using FileStream outputFiletream = new FileStream(opts.EncryptedFile, FileMode.Create, FileAccess.ReadWrite); using FileStream inputFiletream = new FileStream(opts.FileToEncrypt, FileMode.Open, FileAccess.Read); using ContainerWriter writer = new ContainerWriter(outputFiletream, fileName, certificate); writer.AdditionalPadingSize = opts.ParseAdditionalPadingSize(); writer.Write(inputFiletream).GetAwaiter().GetResult(); return(0); }
static int EncryptFile(EncryptFileOptions opts) { if (FilesExist(new List <string> { opts.FilePath, opts.RecipientKeyPath, opts.SenderKeyPath })) { var fileContents = File.ReadAllBytes(opts.FilePath); var serializedPacket = string.Empty; try { var encryptedPacket = Encrypt(fileContents, opts.KeyBitLength, opts.RecipientKeyPath, opts.SenderKeyPath, Path.GetFileName(opts.FilePath)); serializedPacket = JsonConvert.SerializeObject(encryptedPacket); } catch (Exception ex) { WriteMessageToConsole($"Error while encrypting data: {ex.Message}", ConsoleColor.Red); return(1); } try { File.WriteAllText(opts.OutputPath, serializedPacket); WriteMessageToConsole($"File successfully encrypted to {opts.OutputPath}", ConsoleColor.Green); return(0); } catch (Exception ex) { WriteMessageToConsole(ex.Message, ConsoleColor.Red); return(1); } } else { WriteMessageToConsole("One or more of the specified files were not found - see above", ConsoleColor.Red); return(1); } }