Make netconf utilize encrypted passwords only
[netconf.git] / netconf / netconf-netty-util / src / main / java / org / opendaylight / netconf / nettyutil / handler / ssh / authentication / LoginPassword.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 package org.opendaylight.netconf.nettyutil.handler.ssh.authentication;
10
11 import java.io.IOException;
12 import org.apache.sshd.ClientSession;
13 import org.apache.sshd.client.future.AuthFuture;
14 import org.opendaylight.aaa.encrypt.AAAEncryptionService;
15
16 /**
17  * Class Providing username/password authentication option to
18  * {@link org.opendaylight.netconf.nettyutil.handler.ssh.client.AsyncSshHandler}
19  */
20 public class LoginPassword extends AuthenticationHandler {
21
22     private final String username;
23     private final String password;
24     private final AAAEncryptionService encryptionService;
25
26     public LoginPassword(String username, String password) {
27         this(username, password, null);
28     }
29
30     public LoginPassword(final String username, final String password, final AAAEncryptionService encryptionService) {
31         this.username = username;
32         this.password = password;
33         this.encryptionService = encryptionService;
34     }
35
36     @Override
37     public String getUsername() {
38         if (encryptionService != null) {
39             return encryptionService.decrypt(username);
40
41         }
42         return username;
43     }
44
45     @Override
46     public AuthFuture authenticate(final ClientSession session) throws IOException {
47         if (encryptionService != null) {
48             final String decryptedPassword = encryptionService.decrypt(password);
49             session.addPasswordIdentity(decryptedPassword);
50         } else {
51             session.addPasswordIdentity(password);
52         }
53         return session.auth();
54     }
55 }