@Test
void generateWithStrengthParameter()
{

    AsymmetricKeyPair kp = generator.generate(new RSAKeyGenerationParameters(64));
    assertThat(kp, not(nullValue()));
    assertThat(kp.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class));
    assertThat(kp.getPublic(), instanceOf(BcAsymmetricKeyParameters.class));
    assertThat(((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters(), instanceOf(
        RSAPrivateCrtKeyParameters.class));
    assertThat(((BcAsymmetricKeyParameters) kp.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class));
    assertThat(
        ((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getModulus()
            .bitLength(), equalTo(512));
    assertThat(
        ((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getModulus().bitLength(),
        equalTo(512));
    assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters())
        .getPublicExponent(), equalTo(BigInteger.valueOf(0x10001)));
    assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getExponent(),
        equalTo(BigInteger.valueOf(0x10001)));
    kp = generator.generate(new RSAKeyGenerationParameters(128));
    assertThat(kp, not(nullValue()));
    assertThat(kp.getPrivate(), instanceOf(BcAsymmetricKeyParameters.class));
    assertThat(kp.getPublic(), instanceOf(BcAsymmetricKeyParameters.class));
    assertThat(((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters(), instanceOf(
        RSAPrivateCrtKeyParameters.class));
    assertThat(((BcAsymmetricKeyParameters) kp.getPublic()).getParameters(), instanceOf(RSAKeyParameters.class));
    assertThat(
        ((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters()).getModulus()
            .bitLength(), equalTo(1024));
    assertThat(
        ((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getModulus().bitLength(),
        equalTo(1024));
    assertThat(((RSAPrivateCrtKeyParameters) ((BcAsymmetricKeyParameters) kp.getPrivate()).getParameters())
        .getPublicExponent(), equalTo(BigInteger.valueOf(0x10001)));
    assertThat(((RSAKeyParameters) ((BcAsymmetricKeyParameters) kp.getPublic()).getParameters()).getExponent(),
        equalTo(BigInteger.valueOf(0x10001)));
}