import org.opendaylight.netconf.client.conf.NetconfClientConfigurationBuilder;
import org.opendaylight.netconf.client.mdsal.api.CredentialProvider;
import org.opendaylight.netconf.client.mdsal.api.SslContextFactoryProvider;
+import org.opendaylight.netconf.shaded.sshd.client.ClientFactoryManager;
import org.opendaylight.netconf.shaded.sshd.client.auth.pubkey.UserAuthPublicKeyFactory;
import org.opendaylight.netconf.shaded.sshd.common.keyprovider.KeyIdentityProvider;
+import org.opendaylight.netconf.transport.api.UnsupportedConfigurationException;
+import org.opendaylight.netconf.transport.ssh.ClientFactoryManagerConfigurator;
import org.opendaylight.netconf.transport.tls.FixedSslHandlerFactory;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.crypto.types.rev240208.password.grouping.password.type.CleartextPasswordBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.client.rev240208.netconf.client.initiate.stack.grouping.transport.ssh.ssh.SshClientParametersBuilder;
} else if (credentials instanceof KeyAuth keyAuth) {
final var keyBased = keyAuth.getKeyBased();
sshParamsBuilder.setClientIdentity(new ClientIdentityBuilder().setUsername(keyBased.getUsername()).build());
- confBuilder.withSshConfigurator(factoryMgr -> {
- final var keyId = keyBased.getKeyId();
- final var keyPair = credentialProvider.credentialForId(keyId);
- if (keyPair == null) {
- throw new IllegalArgumentException("No keypair found with keyId=" + keyId);
+ confBuilder.withSshConfigurator(new ClientFactoryManagerConfigurator() {
+ @Override
+ protected void configureClientFactoryManager(final ClientFactoryManager factoryManager)
+ throws UnsupportedConfigurationException {
+ final var keyId = keyBased.getKeyId();
+ final var keyPair = credentialProvider.credentialForId(keyId);
+ if (keyPair == null) {
+ throw new IllegalArgumentException("No keypair found with keyId=" + keyId);
+ }
+ factoryManager.setKeyIdentityProvider(KeyIdentityProvider.wrapKeyPairs(keyPair));
+ final var factory = new UserAuthPublicKeyFactory();
+ factory.setSignatureFactories(factoryManager.getSignatureFactories());
+ factoryManager.setUserAuthFactories(List.of(factory));
}
- factoryMgr.setKeyIdentityProvider(KeyIdentityProvider.wrapKeyPairs(keyPair));
- final var factory = new UserAuthPublicKeyFactory();
- factory.setSignatureFactories(factoryMgr.getSignatureFactories());
- factoryMgr.setUserAuthFactories(List.of(factory));
});
} else {
throw new IllegalArgumentException("Unsupported credential type: " + credentials.getClass());