public void TestCreateSessions(string topDir, string subDir, string signed, string packer, string sessionFilename, string ciphertextFilename) { var kspath = Util.TestDataPath(WRITE_DATA, topDir, subDir); Directory.CreateDirectory(kspath); ISessionKeyPacker keyPacker = null; int? keySize = null; KeyType keyType = null; if (!String.IsNullOrWhiteSpace(packer)) { keyPacker = new BsonSessionKeyPacker(); keySize = 256; keyType = UnofficialKeyType.AesAead; } using (var encrypter = new Encrypter(Util.TestDataPath(WRITE_DATA, "rsa.public"))) using (var signer = String.IsNullOrWhiteSpace(signed) ? null : new AttachedSigner(Util.TestDataPath(WRITE_DATA, "dsa"))) using (var session = new SessionCrypter(encrypter, signer, keySize, keyType, keyPacker)) { var material = session.SessionMaterial; var ciphertext = session.Encrypt(input); File.WriteAllText(Path.Combine(kspath, sessionFilename), material); File.WriteAllText(Path.Combine(kspath, ciphertextFilename), ciphertext); } }
public CertEncryptedKeySetWriter(IKeySetWriter writer, Stream certStream, Func <string> passwordPrompt = null) { _writer = writer; _certKeySet = ImportedKeySet.Import.Pkcs12Keys(KeyPurpose.DecryptAndEncrypt, certStream, passwordPrompt); _encrypter = new Crypter(_certKeySet); _sessionPacker = new BsonSessionKeyPacker(); }
public CertEncryptedKeySet(IKeySet keySet, string thumbPrint) { var certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); certStore.Open(OpenFlags.ReadOnly); var certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, false); var cert = certCollection.OfType <X509Certificate2>().FirstOrDefault(); var privKey = cert?.GetRSAPrivateKey(); var keyParam = DotNetUtilities.GetRsaKeyPair(privKey).Private as RsaPrivateCrtKeyParameters; var key = KeyFromBouncyCastle(keyParam); _certKeySet = new ImportedKeySet(key, KeyPurpose.DecryptAndEncrypt, "imported from X509Store"); _keySet = keySet; _crypter = new Crypter(_certKeySet); _sessionPacker = new BsonSessionKeyPacker(); }
public CertEncryptedKeySetWriter(IKeySetWriter writer, string thumbPrint) { var certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); certStore.Open(OpenFlags.ReadOnly); var certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, false); var cert = certCollection.OfType <X509Certificate2>().FirstOrDefault(); var privKey = cert?.GetRSAPrivateKey(); if (privKey == null) { throw new InvalidKeyException("Could not find cert that matched thumbprint."); } var keyParam = DotNetUtilities.GetRsaKeyPair(privKey).Private as RsaPrivateCrtKeyParameters; var key = CertEncryptedKeySet.KeyFromBouncyCastle(keyParam); _certKeySet = new ImportedKeySet(key, KeyPurpose.DecryptAndEncrypt, "imported from X509Store"); _writer = writer; _encrypter = new Encrypter(_certKeySet); _sessionPacker = new BsonSessionKeyPacker(); }