/// <summary>
        /// Validates that this <see cref="CngGcmAuthenticatedEncryptorConfiguration"/> is well-formed, i.e.,
        /// that the specified algorithm actually exists and can be instantiated properly.
        /// An exception will be thrown if validation fails.
        /// </summary>
        void IInternalAlgorithmConfiguration.Validate()
        {
            var factory = new CngGcmAuthenticatedEncryptorFactory(NullLoggerFactory.Instance);

            // Run a sample payload through an encrypt -> decrypt operation to make sure data round-trips properly.
            using (var encryptor = factory.CreateAuthenticatedEncryptorInstance(Secret.Random(512 / 8), this))
            {
                encryptor.PerformSelfTest();
            }
        }
Ejemplo n.º 2
0
    private static IAuthenticatedEncryptor CreateEncryptorInstanceFromDescriptor(CngGcmAuthenticatedEncryptorDescriptor descriptor)
    {
        var encryptorFactory = new CngGcmAuthenticatedEncryptorFactory(NullLoggerFactory.Instance);
        var key = new Key(
            keyId: Guid.NewGuid(),
            creationDate: DateTimeOffset.Now,
            activationDate: DateTimeOffset.Now + TimeSpan.FromHours(1),
            expirationDate: DateTimeOffset.Now + TimeSpan.FromDays(30),
            descriptor: descriptor,
            encryptorFactories: new[] { encryptorFactory });

        return(key.CreateEncryptor());
    }
    public void CreateEncrptorInstance_UnknownDescriptorType_ReturnsNull()
    {
        // Arrange
        var key = new Mock <IKey>();

        key.Setup(k => k.Descriptor).Returns(new Mock <IAuthenticatedEncryptorDescriptor>().Object);

        var factory = new CngGcmAuthenticatedEncryptorFactory(NullLoggerFactory.Instance);

        // Act
        var encryptor = factory.CreateEncryptorInstance(key.Object);

        // Assert
        Assert.Null(encryptor);
    }
    public void CreateEncrptorInstance_ExpectedDescriptorType_ReturnsEncryptor()
    {
        // Arrange
        var descriptor = new CngGcmAuthenticatedEncryptorConfiguration().CreateNewDescriptor();
        var key        = new Mock <IKey>();

        key.Setup(k => k.Descriptor).Returns(descriptor);

        var factory = new CngGcmAuthenticatedEncryptorFactory(NullLoggerFactory.Instance);

        // Act
        var encryptor = factory.CreateEncryptorInstance(key.Object);

        // Assert
        Assert.NotNull(encryptor);
        Assert.IsType <CngGcmAuthenticatedEncryptor>(encryptor);
    }