// (c) 2006 Richard Grimes // www.grimes.demon.co.uk using System; using System.IO; using System.Xml; using System.Security.Cryptography; using System.Security.Cryptography.Xml; using System.Security.Cryptography.X509Certificates; class App { // command line to encrypt: e infile outfile certfile // decrypt: d infile outfile static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("Usage: to encrypt: encrypt e infile outfile certfile"); Console.WriteLine(" to decrypt: encrypt d infile outfile"); return; } bool bEncrypt = (args[0][0] == 'e'); string inFile = args[1]; if (!File.Exists(inFile)) { Console.WriteLine("{0} does not exist", inFile); return; } string outFile = null; outFile = args[2]; if (File.Exists(outFile)) File.Delete(outFile); string certName = null; if (bEncrypt) { if (args.Length < 4) return; certName = args[3]; } if (bEncrypt) { EncryptDocument(inFile, outFile, certName); } else { DecryptDocument(inFile, outFile); } } static void EncryptDocument(string inFile, string outFile, string certName) { } static void DecryptDocument(string inFile, string outFile) { } static X509Certificate2 GetCertificate(StoreName storeName, string certname) { X509Store store = new X509Store(storeName, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindBySubjectName, certname, false); store.Close(); if (certs.Count == 0) { return null; } return certs[0]; } }