public void TestAsymmetricallyEncryptedBackupObject() { var cert2 = LoadCertificate(); var publicKey = new X509CertificatePublicKey(cert2); var privateKey = new X509Certificate2KeyEncryptionKey(cert2); var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; var encryptor = new AsymmetricEncryptor() { AsymmetricStrategy = AsymmetricStrategyOption.Aes256_20000 }; var asymEncObj = encryptor.EncryptObjectAsync(stringToEncrypt, publicKey).GetAwaiter().GetResult(); asymEncObj.PublicMetadata = new Dictionary <string, string>(); asymEncObj.PublicMetadata["keyA"] = "valueA"; asymEncObj.PublicMetadata["keyB"] = "valueB"; var asymEncObj2 = encryptor.EncryptObjectAsync(stringToEncrypt, publicKey).GetAwaiter().GetResult(); asymEncObj.PublicMetadata = new Dictionary <string, string>(); asymEncObj.PublicMetadata["keyA-2"] = "valueA-2"; asymEncObj.PublicMetadata["keyB-2"] = "valueB-2"; var backup = new AsymmetricallyEncryptedBackupObject() { AssociationObjectIdentifier = Guid.NewGuid().ToString(), AssociationObjectType = "test", BackupObjects = new Dictionary <string, AsymmetricallyEncryptedObject>() }; backup.BackupObjects["objA"] = asymEncObj; backup.BackupObjects["objB"] = asymEncObj2; var asymBackup = encryptor.EncryptObjectAsync(backup, publicKey).GetAwaiter().GetResult(); var decrypted = encryptor.DecryptObject(asymBackup, privateKey); Assert.IsTrue(decrypted is AsymmetricallyEncryptedBackupObject); var asBytes = asymBackup.ToByteArray(); var newAsymmObj = new AsymmetricallyEncryptedObject(); newAsymmObj.LoadFromByteArray(asBytes); var decrypted2 = encryptor.DecryptObject(newAsymmObj, privateKey); Assert.IsTrue(decrypted2 is AsymmetricallyEncryptedBackupObject); // let's decrypt the embedded types var backupObjFromBytes = decrypted2 as AsymmetricallyEncryptedBackupObject; Assert.AreEqual(backupObjFromBytes.AssociationObjectIdentifier, backup.AssociationObjectIdentifier); Assert.AreEqual(backupObjFromBytes.AssociationObjectType, backup.AssociationObjectType); var objA = backupObjFromBytes.BackupObjects["objA"]; var decryptedObjA = encryptor.DecryptObject(objA, privateKey); Assert.AreEqual(stringToEncrypt, decryptedObjA); var objB = backupObjFromBytes.BackupObjects["objB"]; var decryptedObjB = encryptor.DecryptObject(objB, privateKey); Assert.AreEqual(stringToEncrypt, decryptedObjB); }
public void TestAsymmetricallyEncryptedBackupObject() { var cert2 = LoadCertificate(); var publicKey = new X509CertificatePublicKey(cert2); var privateKey = new X509Certificate2KeyEncryptionKey(cert2); var stringToEncrypt = Guid.NewGuid().ToString("N") + ":* d’une secrétairE chargée des affaires des étudiants de la section"; var encryptor = new AsymmetricEncryptor() { AsymmetricStrategy = AsymmetricStrategyOption.Aes256_200000 }; var asymEncObj = encryptor.EncryptObjectAsync(stringToEncrypt, publicKey).GetAwaiter().GetResult(); asymEncObj.PublicMetadata = new Dictionary<string, string>(); asymEncObj.PublicMetadata["keyA"] = "valueA"; asymEncObj.PublicMetadata["keyB"] = "valueB"; var asymEncObj2 = encryptor.EncryptObjectAsync(stringToEncrypt, publicKey).GetAwaiter().GetResult(); asymEncObj.PublicMetadata = new Dictionary<string, string>(); asymEncObj.PublicMetadata["keyA-2"] = "valueA-2"; asymEncObj.PublicMetadata["keyB-2"] = "valueB-2"; var backup = new AsymmetricallyEncryptedBackupObject() { AssociationObjectIdentifier = Guid.NewGuid().ToString(), AssociationObjectType = "test", BackupObjects = new Dictionary<string, AsymmetricallyEncryptedObject>() }; backup.BackupObjects["objA"] = asymEncObj; backup.BackupObjects["objB"] = asymEncObj2; var asymBackup = encryptor.EncryptObjectAsync(backup, publicKey).GetAwaiter().GetResult(); var decrypted = encryptor.DecryptObject(asymBackup, privateKey); Assert.IsTrue(decrypted is AsymmetricallyEncryptedBackupObject); var asBytes = asymBackup.ToByteArray(); var newAsymmObj = new AsymmetricallyEncryptedObject(); newAsymmObj.LoadFromByteArray(asBytes); var decrypted2 = encryptor.DecryptObject(newAsymmObj, privateKey); Assert.IsTrue(decrypted2 is AsymmetricallyEncryptedBackupObject); // let's decrypt the embedded types var backupObjFromBytes = decrypted2 as AsymmetricallyEncryptedBackupObject; Assert.AreEqual(backupObjFromBytes.AssociationObjectIdentifier, backup.AssociationObjectIdentifier); Assert.AreEqual(backupObjFromBytes.AssociationObjectType, backup.AssociationObjectType); var objA = backupObjFromBytes.BackupObjects["objA"]; var decryptedObjA = encryptor.DecryptObject(objA, privateKey); Assert.AreEqual(stringToEncrypt, decryptedObjA); var objB = backupObjFromBytes.BackupObjects["objB"]; var decryptedObjB = encryptor.DecryptObject(objB, privateKey); Assert.AreEqual(stringToEncrypt, decryptedObjB); }