package hudson.cli;
import org.apache.commons.codec.binary.Base64;
import java.net.InetSocketAddress;
import java.security.GeneralSecurityException;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
/**
* @author Kohsuke Kawaguchi
*/
public final class CliPort {
/**
* The TCP endpoint to talk to.
*/
final InetSocketAddress endpoint;
/**
* CLI protocol version. 1 and 2 are currently defined.
*/
final int version;
/**
* Server instance identity. Can be null.
*/
final String identity;
public CliPort(InetSocketAddress endpoint, String identity, int version) {
this.endpoint = endpoint;
this.identity = identity;
this.version = version;
}
/**
* Gets the public part of the RSA key that represents the server identity.
*/
public PublicKey getIdentity() throws GeneralSecurityException {
if (identity==null) return null;
byte[] image = Base64.decodeBase64(identity);
return KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(image));
}
}