I'm trying to write a console application that will decrypt a gpg signature on request. Everything's going fine, EXCEPT for the part where it prompts for my GPG password. How do I call gpg --decrypt
from the command line without a password dialog?
Here's my code so far:
var startInfo = new ProcessStartInfo("gpg.exe");
startInfo.Arguments = "--decrypt"; //this is where I want to insert "--passphrase MyFakePassword"
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.WorkingDirectory = @"C:\Program Files (x86)\GNU\GnuPG";
var proc = Process.Start(startInfo);
var sCommandLine = stringData + "\n"+(char)26+"\n"; //stringData is the encrypted string
proc.StandardInput.WriteLine(sCommandLine);
proc.StandardInput.Flush();
proc.StandardInput.Close();
var result = proc.StandardOutput.ReadToEnd();
I've tried using --passphrase MyFakePassword
, --passphrase-fd MyFakePassword
and even --passphrase-fd 0
with my password on the first line of input. I'd like to avoid putting my password in a txt file on the machine that's running this code, if at all possible.
Thanks in advance for any help.
To decrypt the file, they need their private key and your public key. You'll see from this that public keys must be shared. You need to have the public key of the recipient in order to encrypt the file, and the recipient needs your public key to decrypt it.
Decryption Approach:Find the length L of the string. Find the ceil and floor values of √Length and assign them to the variables. Create a 2D matrix and fill the matrix by characters of string column-wise. Read the matrix row-wise to get the decrypted string.
Use the --batch --passphrase-fd
options together, .eg gpg2 --batch --passphrase-fd 0 --armor --decrypt /path/to/encrypted_file.pgp
In your code, after proc.StandardInput.WriteLine(sCommandLine);
add this:
proc.StandardInput.WriteLine("your passphrase here");
proc.StandardInput.Flush();
I did a bit more digging. A few months ago someone reported this as a bug on Gpg4Win's forums. The only solutions at this time are to roll back from 2.1.0 to a previous version (not an option in my case), disable the password for the key, or pipe it in from text. Here's the forum post: http://wald.intevation.org/forum/forum.php?thread_id=1116&forum_id=21&group_id=11 There is no comment from the development team.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With