public void Given_KeySize_When_GetNewKey_Then_KeySizeMatches(
            [Range(384, 1024, 8)] int actualKeySize)
        {
            // Arrange
            var generator = new RsaKeyGenerator();

            // Act
            var newKey = generator.GetNewKey(new RsaKeyGenerationOptions()
            {
                KeySize        = actualKeySize,
                UseOaepPadding = true,
                NewKeyName     = "test"
            });

            // Assert
            newKey.GetKeySize().Should().Be(actualKeySize);
        }
        public void Given_AnyKey_When_GetNewKey_Then_NameIsInObject()
        {
            // Arrange
            var generator  = new RsaKeyGenerator();
            var newKeyName = "my new key";

            // Act
            var newKey = generator.GetNewKey(new RsaKeyGenerationOptions()
            {
                KeySize        = 384,
                UseOaepPadding = true,
                NewKeyName     = newKeyName
            });

            // Assert
            newKey.Name.Should().Be(newKeyName);
        }
        public void Given_ValidKey_When_GetKeySize_Then_CorrectKeySizeReturned(
            [Values(384, 2048, 2056)] int keySize)
        {
            // Arrange
            var generator = new RsaKeyGenerator();
            var aNewKey   = generator.GetNewKey(new RsaKeyGenerationOptions()
            {
                KeySize        = keySize,
                UseOaepPadding = true,
                NewKeyName     = "test"
            });

            // Act
            var actualKeySize = aNewKey.GetKeySize();

            // Assert
            actualKeySize.Should().Be(keySize);
        }
        public void Given_ValidKeyWithoutOAEP_When_GetMaxBytes_CorrectMaxBytesReturned(
            [Values(384, 2048, 2056)] int keySize)
        {
            // Arrange
            var generator = new RsaKeyGenerator();
            var aNewKey   = generator.GetNewKey(new RsaKeyGenerationOptions()
            {
                KeySize        = keySize,
                UseOaepPadding = false,
                NewKeyName     = "test"
            });

            // Act
            var actualMaxBytes = new RsaMaxEncryptionCalc().GetMaxBytesThatCanBeEncrypted(aNewKey);

            // Assert
            actualMaxBytes.Should().Be(((keySize - 384) / 8) + 37);
        }
        public void Given_ValidKeyGenerationOptions_When_GetNewKey_Then_PrivateKeyReturned(
            [Range(384, 1024, 8)] int actualKeySize)
        {
            // Arrange
            var generator = new RsaKeyGenerator();

            // Act
            var newKey = generator.GetNewKey(new RsaKeyGenerationOptions()
            {
                KeySize        = actualKeySize,
                UseOaepPadding = true,
                NewKeyName     = "test"
            });

            // Assert
            newKey.Key.Should().NotBeNull();
            newKey.UseOaepPadding.Should().BeTrue();
        }