@@ -498,6 +498,29 @@ void addIdentityMaterialAsKeyStoreToInflatableKeyManager() {
498498 assertThat (innerKeyManagers .get ("key-manager-two" )).isNotNull ();
499499 }
500500
501+ @ Test
502+ void removeIdentityMaterialFromInflatableKeyManager () {
503+ X509ExtendedKeyManager inflatableKeyManager = KeyManagerUtils .createInflatableKeyManager ();
504+ assertThat (inflatableKeyManager ).isInstanceOf (InflatableX509ExtendedKeyManager .class );
505+
506+ KeyStore identityOne = KeyStoreUtils .loadKeyStore (KEYSTORE_LOCATION + IDENTITY_FILE_NAME , IDENTITY_PASSWORD );
507+ KeyStore identityTwo = KeyStoreUtils .loadKeyStore (KEYSTORE_LOCATION + IDENTITY_TWO_FILE_NAME , IDENTITY_PASSWORD );
508+
509+ KeyManagerUtils .addIdentityMaterial (inflatableKeyManager , "key-manager-one" , identityOne , IDENTITY_PASSWORD );
510+ KeyManagerUtils .addIdentityMaterial (inflatableKeyManager , "key-manager-two" , identityTwo , IDENTITY_PASSWORD );
511+ assertThat (KeyManagerUtils .getAliases (inflatableKeyManager )).containsExactly ("key-manager-one" , "key-manager-two" );
512+
513+ Map <String , X509ExtendedKeyManager > innerKeyManagers = ((AggregatedX509ExtendedKeyManager ) ((InflatableX509ExtendedKeyManager ) inflatableKeyManager ).getInnerKeyManager ()).getInnerKeyManagers ();
514+ assertThat (innerKeyManagers .get ("key-manager-one" )).isNotNull ();
515+ assertThat (innerKeyManagers .get ("key-manager-two" )).isNotNull ();
516+
517+ KeyManagerUtils .removeIdentityMaterial (inflatableKeyManager , "key-manager-one" );
518+
519+ innerKeyManagers = ((AggregatedX509ExtendedKeyManager ) ((InflatableX509ExtendedKeyManager ) inflatableKeyManager ).getInnerKeyManager ()).getInnerKeyManagers ();
520+ assertThat (innerKeyManagers ).doesNotContainKey ("key-manager-one" );
521+ assertThat (innerKeyManagers .get ("key-manager-two" )).isNotNull ();
522+ }
523+
501524 @ Test
502525 void addIdentityMaterialAsKeyManagerToAWrappedInflatableKeyManagerInALoggingKeyManager () {
503526 X509ExtendedKeyManager inflatableKeyManager = KeyManagerUtils .createInflatableKeyManager ();
@@ -572,6 +595,20 @@ void throwsExceptionWhenAddingIdentityMaterialToNonInflatableKeyManager() {
572595 .hasMessage ("The provided keyManager should be an instance of [nl.altindag.ssl.keymanager.InflatableX509ExtendedKeyManager]" );
573596 }
574597
598+ @ Test
599+ void throwsExceptionWhenAddingIdentityMaterialToNonInflatableKeyManagerWrappedInAggregatableKeyManager () {
600+ KeyStore identityOne = KeyStoreUtils .loadKeyStore (KEYSTORE_LOCATION + IDENTITY_FILE_NAME , IDENTITY_PASSWORD );
601+ KeyStore identityTwo = KeyStoreUtils .loadKeyStore (KEYSTORE_LOCATION + IDENTITY_TWO_FILE_NAME , IDENTITY_PASSWORD );
602+ X509ExtendedKeyManager keyManagerOne = KeyManagerUtils .createKeyManager (identityOne , IDENTITY_PASSWORD );
603+ X509ExtendedKeyManager keyManagerTwo = KeyManagerUtils .createKeyManager (identityTwo , IDENTITY_PASSWORD );
604+
605+ X509ExtendedKeyManager keyManager = KeyManagerUtils .combine (keyManagerOne , keyManagerTwo );
606+
607+ assertThatThrownBy (() -> KeyManagerUtils .addIdentityMaterial (keyManager , "key-manager-one" , identityTwo , IDENTITY_PASSWORD ))
608+ .isInstanceOf (GenericKeyManagerException .class )
609+ .hasMessage ("The provided keyManager should be an instance of [nl.altindag.ssl.keymanager.InflatableX509ExtendedKeyManager]" );
610+ }
611+
575612 @ Test
576613 void throwExceptionWhenCreatingKeyManagerFromKeyStoreWhichDoesNotHaveMatchingAlias () throws KeyStoreException {
577614 KeyStore identity = KeyStoreUtils .loadKeyStore (KEYSTORE_LOCATION + "identity-with-multiple-keys.jks" , IDENTITY_PASSWORD );
0 commit comments