Ejemplo n.º 1
0
        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);
                    }
        }
Ejemplo n.º 2
0
 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();
 }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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();
        }