You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by jm...@apache.org on 2015/03/07 03:16:05 UTC

[1/4] incubator-slider git commit: SLIDER-802 stub protobuf call and proxy operations to sign certificates

Repository: incubator-slider
Updated Branches:
  refs/heads/develop 670bfb32f -> bf293b9df
Updated Tags:  refs/tags/HDP-2.2.1.1 [created] 5ac15a01f
  refs/tags/slider-0.70.0-incubating-tag2 [created] 6937dcce2


SLIDER-802 stub protobuf call and proxy operations to sign certificates


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/b18daa35
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/b18daa35
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/b18daa35

Branch: refs/heads/develop
Commit: b18daa35d105e76d9739f5aaab035c828872fa24
Parents: 909b7c1
Author: Steve Loughran <st...@apache.org>
Authored: Thu Mar 5 14:33:29 2015 -0800
Committer: Steve Loughran <st...@apache.org>
Committed: Thu Mar 5 14:33:29 2015 -0800

----------------------------------------------------------------------
 .../slider/api/SliderClusterProtocol.java       |    6 +-
 .../org/apache/slider/api/proto/Messages.java   | 1757 +++++++++++++++++-
 .../slider/api/proto/SliderClusterAPI.java      |   80 +-
 .../client/ipc/SliderClusterOperations.java     |   16 +-
 .../rpc/SliderClusterProtocolPBImpl.java        |   11 +
 .../rpc/SliderClusterProtocolProxy.java         |   10 +
 .../server/appmaster/rpc/SliderIPCService.java  |    6 +-
 .../src/main/proto/SliderClusterMessages.proto  |   12 +
 .../src/main/proto/SliderClusterProtocol.proto  |    5 +-
 9 files changed, 1893 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
index aa3dd3a..b4e91fc 100644
--- a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
+++ b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
@@ -160,6 +160,8 @@ public interface SliderClusterProtocol extends VersionedProtocol {
   Messages.WrappedJsonProto getModelResolvedResources(Messages.EmptyPayloadProto request) throws IOException;
    
   Messages.WrappedJsonProto getLiveResources(Messages.EmptyPayloadProto request) throws IOException;
-    
-  
+
+  Messages.SignCertificateResponseProto signCertificate(
+      Messages.SignCertificateRequestProto request) throws IOException;
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
index 65f243d..3e1cad3 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
@@ -25129,6 +25129,1732 @@ public final class Messages {
     // @@protoc_insertion_point(class_scope:org.apache.slider.api.WrappedJsonProto)
   }
 
+  public interface SignCertificateRequestProtoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string hostname = 1;
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    boolean hasHostname();
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    java.lang.String getHostname();
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getHostnameBytes();
+
+    // required string certRequest = 2;
+    /**
+     * <code>required string certRequest = 2;</code>
+     */
+    boolean hasCertRequest();
+    /**
+     * <code>required string certRequest = 2;</code>
+     */
+    java.lang.String getCertRequest();
+    /**
+     * <code>required string certRequest = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getCertRequestBytes();
+
+    // required string passPhrase = 3;
+    /**
+     * <code>required string passPhrase = 3;</code>
+     */
+    boolean hasPassPhrase();
+    /**
+     * <code>required string passPhrase = 3;</code>
+     */
+    java.lang.String getPassPhrase();
+    /**
+     * <code>required string passPhrase = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getPassPhraseBytes();
+  }
+  /**
+   * Protobuf type {@code org.apache.slider.api.SignCertificateRequestProto}
+   */
+  public static final class SignCertificateRequestProto extends
+      com.google.protobuf.GeneratedMessage
+      implements SignCertificateRequestProtoOrBuilder {
+    // Use SignCertificateRequestProto.newBuilder() to construct.
+    private SignCertificateRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private SignCertificateRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final SignCertificateRequestProto defaultInstance;
+    public static SignCertificateRequestProto getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public SignCertificateRequestProto getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private SignCertificateRequestProto(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              hostname_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              certRequest_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              passPhrase_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.slider.api.proto.Messages.SignCertificateRequestProto.class, org.apache.slider.api.proto.Messages.SignCertificateRequestProto.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<SignCertificateRequestProto> PARSER =
+        new com.google.protobuf.AbstractParser<SignCertificateRequestProto>() {
+      public SignCertificateRequestProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SignCertificateRequestProto(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SignCertificateRequestProto> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string hostname = 1;
+    public static final int HOSTNAME_FIELD_NUMBER = 1;
+    private java.lang.Object hostname_;
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public boolean hasHostname() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public java.lang.String getHostname() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          hostname_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string hostname = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getHostnameBytes() {
+      java.lang.Object ref = hostname_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        hostname_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string certRequest = 2;
+    public static final int CERTREQUEST_FIELD_NUMBER = 2;
+    private java.lang.Object certRequest_;
+    /**
+     * <code>required string certRequest = 2;</code>
+     */
+    public boolean hasCertRequest() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string certRequest = 2;</code>
+     */
+    public java.lang.String getCertRequest() {
+      java.lang.Object ref = certRequest_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          certRequest_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string certRequest = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getCertRequestBytes() {
+      java.lang.Object ref = certRequest_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        certRequest_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string passPhrase = 3;
+    public static final int PASSPHRASE_FIELD_NUMBER = 3;
+    private java.lang.Object passPhrase_;
+    /**
+     * <code>required string passPhrase = 3;</code>
+     */
+    public boolean hasPassPhrase() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required string passPhrase = 3;</code>
+     */
+    public java.lang.String getPassPhrase() {
+      java.lang.Object ref = passPhrase_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          passPhrase_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string passPhrase = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getPassPhraseBytes() {
+      java.lang.Object ref = passPhrase_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        passPhrase_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      hostname_ = "";
+      certRequest_ = "";
+      passPhrase_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasHostname()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasCertRequest()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasPassPhrase()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getCertRequestBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getPassPhraseBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getHostnameBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getCertRequestBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getPassPhraseBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.slider.api.proto.Messages.SignCertificateRequestProto)) {
+        return super.equals(obj);
+      }
+      org.apache.slider.api.proto.Messages.SignCertificateRequestProto other = (org.apache.slider.api.proto.Messages.SignCertificateRequestProto) obj;
+
+      boolean result = true;
+      result = result && (hasHostname() == other.hasHostname());
+      if (hasHostname()) {
+        result = result && getHostname()
+            .equals(other.getHostname());
+      }
+      result = result && (hasCertRequest() == other.hasCertRequest());
+      if (hasCertRequest()) {
+        result = result && getCertRequest()
+            .equals(other.getCertRequest());
+      }
+      result = result && (hasPassPhrase() == other.hasPassPhrase());
+      if (hasPassPhrase()) {
+        result = result && getPassPhrase()
+            .equals(other.getPassPhrase());
+      }
+      result = result &&
+          getUnknownFields().equals(other.getUnknownFields());
+      return result;
+    }
+
+    private int memoizedHashCode = 0;
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      if (hasHostname()) {
+        hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
+        hash = (53 * hash) + getHostname().hashCode();
+      }
+      if (hasCertRequest()) {
+        hash = (37 * hash) + CERTREQUEST_FIELD_NUMBER;
+        hash = (53 * hash) + getCertRequest().hashCode();
+      }
+      if (hasPassPhrase()) {
+        hash = (37 * hash) + PASSPHRASE_FIELD_NUMBER;
+        hash = (53 * hash) + getPassPhrase().hashCode();
+      }
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.slider.api.proto.Messages.SignCertificateRequestProto prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code org.apache.slider.api.SignCertificateRequestProto}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.slider.api.proto.Messages.SignCertificateRequestProtoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.slider.api.proto.Messages.SignCertificateRequestProto.class, org.apache.slider.api.proto.Messages.SignCertificateRequestProto.Builder.class);
+      }
+
+      // Construct using org.apache.slider.api.proto.Messages.SignCertificateRequestProto.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        hostname_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        certRequest_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        passPhrase_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+      }
+
+      public org.apache.slider.api.proto.Messages.SignCertificateRequestProto getDefaultInstanceForType() {
+        return org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance();
+      }
+
+      public org.apache.slider.api.proto.Messages.SignCertificateRequestProto build() {
+        org.apache.slider.api.proto.Messages.SignCertificateRequestProto result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.slider.api.proto.Messages.SignCertificateRequestProto buildPartial() {
+        org.apache.slider.api.proto.Messages.SignCertificateRequestProto result = new org.apache.slider.api.proto.Messages.SignCertificateRequestProto(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.hostname_ = hostname_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.certRequest_ = certRequest_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.passPhrase_ = passPhrase_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.slider.api.proto.Messages.SignCertificateRequestProto) {
+          return mergeFrom((org.apache.slider.api.proto.Messages.SignCertificateRequestProto)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.slider.api.proto.Messages.SignCertificateRequestProto other) {
+        if (other == org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance()) return this;
+        if (other.hasHostname()) {
+          bitField0_ |= 0x00000001;
+          hostname_ = other.hostname_;
+          onChanged();
+        }
+        if (other.hasCertRequest()) {
+          bitField0_ |= 0x00000002;
+          certRequest_ = other.certRequest_;
+          onChanged();
+        }
+        if (other.hasPassPhrase()) {
+          bitField0_ |= 0x00000004;
+          passPhrase_ = other.passPhrase_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasHostname()) {
+          
+          return false;
+        }
+        if (!hasCertRequest()) {
+          
+          return false;
+        }
+        if (!hasPassPhrase()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.slider.api.proto.Messages.SignCertificateRequestProto parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.slider.api.proto.Messages.SignCertificateRequestProto) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string hostname = 1;
+      private java.lang.Object hostname_ = "";
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public boolean hasHostname() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public java.lang.String getHostname() {
+        java.lang.Object ref = hostname_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          hostname_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getHostnameBytes() {
+        java.lang.Object ref = hostname_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          hostname_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder setHostname(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder clearHostname() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        hostname_ = getDefaultInstance().getHostname();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string hostname = 1;</code>
+       */
+      public Builder setHostnameBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        hostname_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string certRequest = 2;
+      private java.lang.Object certRequest_ = "";
+      /**
+       * <code>required string certRequest = 2;</code>
+       */
+      public boolean hasCertRequest() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string certRequest = 2;</code>
+       */
+      public java.lang.String getCertRequest() {
+        java.lang.Object ref = certRequest_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          certRequest_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string certRequest = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getCertRequestBytes() {
+        java.lang.Object ref = certRequest_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          certRequest_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string certRequest = 2;</code>
+       */
+      public Builder setCertRequest(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        certRequest_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string certRequest = 2;</code>
+       */
+      public Builder clearCertRequest() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        certRequest_ = getDefaultInstance().getCertRequest();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string certRequest = 2;</code>
+       */
+      public Builder setCertRequestBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        certRequest_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string passPhrase = 3;
+      private java.lang.Object passPhrase_ = "";
+      /**
+       * <code>required string passPhrase = 3;</code>
+       */
+      public boolean hasPassPhrase() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required string passPhrase = 3;</code>
+       */
+      public java.lang.String getPassPhrase() {
+        java.lang.Object ref = passPhrase_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          passPhrase_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string passPhrase = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getPassPhraseBytes() {
+        java.lang.Object ref = passPhrase_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          passPhrase_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string passPhrase = 3;</code>
+       */
+      public Builder setPassPhrase(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        passPhrase_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string passPhrase = 3;</code>
+       */
+      public Builder clearPassPhrase() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        passPhrase_ = getDefaultInstance().getPassPhrase();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string passPhrase = 3;</code>
+       */
+      public Builder setPassPhraseBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        passPhrase_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:org.apache.slider.api.SignCertificateRequestProto)
+    }
+
+    static {
+      defaultInstance = new SignCertificateRequestProto(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:org.apache.slider.api.SignCertificateRequestProto)
+  }
+
+  public interface SignCertificateResponseProtoOrBuilder
+      extends com.google.protobuf.MessageOrBuilder {
+
+    // required string result = 1;
+    /**
+     * <code>required string result = 1;</code>
+     */
+    boolean hasResult();
+    /**
+     * <code>required string result = 1;</code>
+     */
+    java.lang.String getResult();
+    /**
+     * <code>required string result = 1;</code>
+     */
+    com.google.protobuf.ByteString
+        getResultBytes();
+
+    // required string signedCertificate = 2;
+    /**
+     * <code>required string signedCertificate = 2;</code>
+     */
+    boolean hasSignedCertificate();
+    /**
+     * <code>required string signedCertificate = 2;</code>
+     */
+    java.lang.String getSignedCertificate();
+    /**
+     * <code>required string signedCertificate = 2;</code>
+     */
+    com.google.protobuf.ByteString
+        getSignedCertificateBytes();
+
+    // required string signingMessage = 3;
+    /**
+     * <code>required string signingMessage = 3;</code>
+     */
+    boolean hasSigningMessage();
+    /**
+     * <code>required string signingMessage = 3;</code>
+     */
+    java.lang.String getSigningMessage();
+    /**
+     * <code>required string signingMessage = 3;</code>
+     */
+    com.google.protobuf.ByteString
+        getSigningMessageBytes();
+  }
+  /**
+   * Protobuf type {@code org.apache.slider.api.SignCertificateResponseProto}
+   */
+  public static final class SignCertificateResponseProto extends
+      com.google.protobuf.GeneratedMessage
+      implements SignCertificateResponseProtoOrBuilder {
+    // Use SignCertificateResponseProto.newBuilder() to construct.
+    private SignCertificateResponseProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      super(builder);
+      this.unknownFields = builder.getUnknownFields();
+    }
+    private SignCertificateResponseProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+
+    private static final SignCertificateResponseProto defaultInstance;
+    public static SignCertificateResponseProto getDefaultInstance() {
+      return defaultInstance;
+    }
+
+    public SignCertificateResponseProto getDefaultInstanceForType() {
+      return defaultInstance;
+    }
+
+    private final com.google.protobuf.UnknownFieldSet unknownFields;
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+        getUnknownFields() {
+      return this.unknownFields;
+    }
+    private SignCertificateResponseProto(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      initFields();
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            default: {
+              if (!parseUnknownField(input, unknownFields,
+                                     extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+            case 10: {
+              bitField0_ |= 0x00000001;
+              result_ = input.readBytes();
+              break;
+            }
+            case 18: {
+              bitField0_ |= 0x00000002;
+              signedCertificate_ = input.readBytes();
+              break;
+            }
+            case 26: {
+              bitField0_ |= 0x00000004;
+              signingMessage_ = input.readBytes();
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e.getMessage()).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+    }
+
+    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              org.apache.slider.api.proto.Messages.SignCertificateResponseProto.class, org.apache.slider.api.proto.Messages.SignCertificateResponseProto.Builder.class);
+    }
+
+    public static com.google.protobuf.Parser<SignCertificateResponseProto> PARSER =
+        new com.google.protobuf.AbstractParser<SignCertificateResponseProto>() {
+      public SignCertificateResponseProto parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new SignCertificateResponseProto(input, extensionRegistry);
+      }
+    };
+
+    @java.lang.Override
+    public com.google.protobuf.Parser<SignCertificateResponseProto> getParserForType() {
+      return PARSER;
+    }
+
+    private int bitField0_;
+    // required string result = 1;
+    public static final int RESULT_FIELD_NUMBER = 1;
+    private java.lang.Object result_;
+    /**
+     * <code>required string result = 1;</code>
+     */
+    public boolean hasResult() {
+      return ((bitField0_ & 0x00000001) == 0x00000001);
+    }
+    /**
+     * <code>required string result = 1;</code>
+     */
+    public java.lang.String getResult() {
+      java.lang.Object ref = result_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          result_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string result = 1;</code>
+     */
+    public com.google.protobuf.ByteString
+        getResultBytes() {
+      java.lang.Object ref = result_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        result_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string signedCertificate = 2;
+    public static final int SIGNEDCERTIFICATE_FIELD_NUMBER = 2;
+    private java.lang.Object signedCertificate_;
+    /**
+     * <code>required string signedCertificate = 2;</code>
+     */
+    public boolean hasSignedCertificate() {
+      return ((bitField0_ & 0x00000002) == 0x00000002);
+    }
+    /**
+     * <code>required string signedCertificate = 2;</code>
+     */
+    public java.lang.String getSignedCertificate() {
+      java.lang.Object ref = signedCertificate_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          signedCertificate_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string signedCertificate = 2;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSignedCertificateBytes() {
+      java.lang.Object ref = signedCertificate_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        signedCertificate_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string signingMessage = 3;
+    public static final int SIGNINGMESSAGE_FIELD_NUMBER = 3;
+    private java.lang.Object signingMessage_;
+    /**
+     * <code>required string signingMessage = 3;</code>
+     */
+    public boolean hasSigningMessage() {
+      return ((bitField0_ & 0x00000004) == 0x00000004);
+    }
+    /**
+     * <code>required string signingMessage = 3;</code>
+     */
+    public java.lang.String getSigningMessage() {
+      java.lang.Object ref = signingMessage_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          signingMessage_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string signingMessage = 3;</code>
+     */
+    public com.google.protobuf.ByteString
+        getSigningMessageBytes() {
+      java.lang.Object ref = signingMessage_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        signingMessage_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    private void initFields() {
+      result_ = "";
+      signedCertificate_ = "";
+      signingMessage_ = "";
+    }
+    private byte memoizedIsInitialized = -1;
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized != -1) return isInitialized == 1;
+
+      if (!hasResult()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasSignedCertificate()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      if (!hasSigningMessage()) {
+        memoizedIsInitialized = 0;
+        return false;
+      }
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      getSerializedSize();
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        output.writeBytes(1, getResultBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        output.writeBytes(2, getSignedCertificateBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        output.writeBytes(3, getSigningMessageBytes());
+      }
+      getUnknownFields().writeTo(output);
+    }
+
+    private int memoizedSerializedSize = -1;
+    public int getSerializedSize() {
+      int size = memoizedSerializedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      if (((bitField0_ & 0x00000001) == 0x00000001)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(1, getResultBytes());
+      }
+      if (((bitField0_ & 0x00000002) == 0x00000002)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(2, getSignedCertificateBytes());
+      }
+      if (((bitField0_ & 0x00000004) == 0x00000004)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(3, getSigningMessageBytes());
+      }
+      size += getUnknownFields().getSerializedSize();
+      memoizedSerializedSize = size;
+      return size;
+    }
+
+    private static final long serialVersionUID = 0L;
+    @java.lang.Override
+    protected java.lang.Object writeReplace()
+        throws java.io.ObjectStreamException {
+      return super.writeReplace();
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof org.apache.slider.api.proto.Messages.SignCertificateResponseProto)) {
+        return super.equals(obj);
+      }
+      org.apache.slider.api.proto.Messages.SignCertificateResponseProto other = (org.apache.slider.api.proto.Messages.SignCertificateResponseProto) obj;
+
+      boolean result = true;
+      result = result && (hasResult() == other.hasResult());
+      if (hasResult()) {
+        result = result && getResult()
+            .equals(other.getResult());
+      }
+      result = result && (hasSignedCertificate() == other.hasSignedCertificate());
+      if (hasSignedCertificate()) {
+        result = result && getSignedCertificate()
+            .equals(other.getSignedCertificate());
+      }
+      result = result && (hasSigningMessage() == other.hasSigningMessage());
+      if (hasSigningMessage()) {
+        result = result && getSigningMessage()
+            .equals(other.getSigningMessage());
+      }
+      result = result &&
+          getUnknownFields().equals(other.getUnknownFields());
+      return result;
+    }
+
+    private int memoizedHashCode = 0;
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptorForType().hashCode();
+      if (hasResult()) {
+        hash = (37 * hash) + RESULT_FIELD_NUMBER;
+        hash = (53 * hash) + getResult().hashCode();
+      }
+      if (hasSignedCertificate()) {
+        hash = (37 * hash) + SIGNEDCERTIFICATE_FIELD_NUMBER;
+        hash = (53 * hash) + getSignedCertificate().hashCode();
+      }
+      if (hasSigningMessage()) {
+        hash = (37 * hash) + SIGNINGMESSAGE_FIELD_NUMBER;
+        hash = (53 * hash) + getSigningMessage().hashCode();
+      }
+      hash = (29 * hash) + getUnknownFields().hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseDelimitedFrom(input, extensionRegistry);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input);
+    }
+    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return PARSER.parseFrom(input, extensionRegistry);
+    }
+
+    public static Builder newBuilder() { return Builder.create(); }
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder(org.apache.slider.api.proto.Messages.SignCertificateResponseProto prototype) {
+      return newBuilder().mergeFrom(prototype);
+    }
+    public Builder toBuilder() { return newBuilder(this); }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code org.apache.slider.api.SignCertificateResponseProto}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessage.Builder<Builder>
+       implements org.apache.slider.api.proto.Messages.SignCertificateResponseProtoOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+      }
+
+      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                org.apache.slider.api.proto.Messages.SignCertificateResponseProto.class, org.apache.slider.api.proto.Messages.SignCertificateResponseProto.Builder.class);
+      }
+
+      // Construct using org.apache.slider.api.proto.Messages.SignCertificateResponseProto.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
+        }
+      }
+      private static Builder create() {
+        return new Builder();
+      }
+
+      public Builder clear() {
+        super.clear();
+        result_ = "";
+        bitField0_ = (bitField0_ & ~0x00000001);
+        signedCertificate_ = "";
+        bitField0_ = (bitField0_ & ~0x00000002);
+        signingMessage_ = "";
+        bitField0_ = (bitField0_ & ~0x00000004);
+        return this;
+      }
+
+      public Builder clone() {
+        return create().mergeFrom(buildPartial());
+      }
+
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+      }
+
+      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto getDefaultInstanceForType() {
+        return org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance();
+      }
+
+      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto build() {
+        org.apache.slider.api.proto.Messages.SignCertificateResponseProto result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto buildPartial() {
+        org.apache.slider.api.proto.Messages.SignCertificateResponseProto result = new org.apache.slider.api.proto.Messages.SignCertificateResponseProto(this);
+        int from_bitField0_ = bitField0_;
+        int to_bitField0_ = 0;
+        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
+          to_bitField0_ |= 0x00000001;
+        }
+        result.result_ = result_;
+        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
+          to_bitField0_ |= 0x00000002;
+        }
+        result.signedCertificate_ = signedCertificate_;
+        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
+          to_bitField0_ |= 0x00000004;
+        }
+        result.signingMessage_ = signingMessage_;
+        result.bitField0_ = to_bitField0_;
+        onBuilt();
+        return result;
+      }
+
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof org.apache.slider.api.proto.Messages.SignCertificateResponseProto) {
+          return mergeFrom((org.apache.slider.api.proto.Messages.SignCertificateResponseProto)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(org.apache.slider.api.proto.Messages.SignCertificateResponseProto other) {
+        if (other == org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance()) return this;
+        if (other.hasResult()) {
+          bitField0_ |= 0x00000001;
+          result_ = other.result_;
+          onChanged();
+        }
+        if (other.hasSignedCertificate()) {
+          bitField0_ |= 0x00000002;
+          signedCertificate_ = other.signedCertificate_;
+          onChanged();
+        }
+        if (other.hasSigningMessage()) {
+          bitField0_ |= 0x00000004;
+          signingMessage_ = other.signingMessage_;
+          onChanged();
+        }
+        this.mergeUnknownFields(other.getUnknownFields());
+        return this;
+      }
+
+      public final boolean isInitialized() {
+        if (!hasResult()) {
+          
+          return false;
+        }
+        if (!hasSignedCertificate()) {
+          
+          return false;
+        }
+        if (!hasSigningMessage()) {
+          
+          return false;
+        }
+        return true;
+      }
+
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        org.apache.slider.api.proto.Messages.SignCertificateResponseProto parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (org.apache.slider.api.proto.Messages.SignCertificateResponseProto) e.getUnfinishedMessage();
+          throw e;
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      // required string result = 1;
+      private java.lang.Object result_ = "";
+      /**
+       * <code>required string result = 1;</code>
+       */
+      public boolean hasResult() {
+        return ((bitField0_ & 0x00000001) == 0x00000001);
+      }
+      /**
+       * <code>required string result = 1;</code>
+       */
+      public java.lang.String getResult() {
+        java.lang.Object ref = result_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          result_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string result = 1;</code>
+       */
+      public com.google.protobuf.ByteString
+          getResultBytes() {
+        java.lang.Object ref = result_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          result_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string result = 1;</code>
+       */
+      public Builder setResult(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        result_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string result = 1;</code>
+       */
+      public Builder clearResult() {
+        bitField0_ = (bitField0_ & ~0x00000001);
+        result_ = getDefaultInstance().getResult();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string result = 1;</code>
+       */
+      public Builder setResultBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000001;
+        result_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string signedCertificate = 2;
+      private java.lang.Object signedCertificate_ = "";
+      /**
+       * <code>required string signedCertificate = 2;</code>
+       */
+      public boolean hasSignedCertificate() {
+        return ((bitField0_ & 0x00000002) == 0x00000002);
+      }
+      /**
+       * <code>required string signedCertificate = 2;</code>
+       */
+      public java.lang.String getSignedCertificate() {
+        java.lang.Object ref = signedCertificate_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          signedCertificate_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string signedCertificate = 2;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSignedCertificateBytes() {
+        java.lang.Object ref = signedCertificate_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          signedCertificate_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string signedCertificate = 2;</code>
+       */
+      public Builder setSignedCertificate(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        signedCertificate_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string signedCertificate = 2;</code>
+       */
+      public Builder clearSignedCertificate() {
+        bitField0_ = (bitField0_ & ~0x00000002);
+        signedCertificate_ = getDefaultInstance().getSignedCertificate();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string signedCertificate = 2;</code>
+       */
+      public Builder setSignedCertificateBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000002;
+        signedCertificate_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string signingMessage = 3;
+      private java.lang.Object signingMessage_ = "";
+      /**
+       * <code>required string signingMessage = 3;</code>
+       */
+      public boolean hasSigningMessage() {
+        return ((bitField0_ & 0x00000004) == 0x00000004);
+      }
+      /**
+       * <code>required string signingMessage = 3;</code>
+       */
+      public java.lang.String getSigningMessage() {
+        java.lang.Object ref = signingMessage_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          signingMessage_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string signingMessage = 3;</code>
+       */
+      public com.google.protobuf.ByteString
+          getSigningMessageBytes() {
+        java.lang.Object ref = signingMessage_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          signingMessage_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string signingMessage = 3;</code>
+       */
+      public Builder setSigningMessage(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        signingMessage_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string signingMessage = 3;</code>
+       */
+      public Builder clearSigningMessage() {
+        bitField0_ = (bitField0_ & ~0x00000004);
+        signingMessage_ = getDefaultInstance().getSigningMessage();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string signingMessage = 3;</code>
+       */
+      public Builder setSigningMessageBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000004;
+        signingMessage_ = value;
+        onChanged();
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:org.apache.slider.api.SignCertificateResponseProto)
+    }
+
+    static {
+      defaultInstance = new SignCertificateResponseProto(true);
+      defaultInstance.initFields();
+    }
+
+    // @@protoc_insertion_point(class_scope:org.apache.slider.api.SignCertificateResponseProto)
+  }
+
   private static com.google.protobuf.Descriptors.Descriptor
     internal_static_org_apache_slider_api_RoleInstanceState_descriptor;
   private static
@@ -25334,6 +27060,16 @@ public final class Messages {
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_org_apache_slider_api_WrappedJsonProto_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable;
+  private static com.google.protobuf.Descriptors.Descriptor
+    internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+  private static
+    com.google.protobuf.GeneratedMessage.FieldAccessorTable
+      internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -25412,8 +27148,13 @@ public final class Messages {
       "etLiveComponentRequestProto\022\014\n\004name\030\001 \002(" +
       "\t\"$\n\"GetApplicationLivenessRequestProto\"" +
       "\023\n\021EmptyPayloadProto\" \n\020WrappedJsonProto" +
-      "\022\014\n\004json\030\001 \002(\tB-\n\033org.apache.slider.api.",
-      "protoB\010Messages\210\001\001\240\001\001"
+      "\022\014\n\004json\030\001 \002(\t\"X\n\033SignCertificateRequest",
+      "Proto\022\020\n\010hostname\030\001 \002(\t\022\023\n\013certRequest\030\002" +
+      " \002(\t\022\022\n\npassPhrase\030\003 \002(\t\"a\n\034SignCertific" +
+      "ateResponseProto\022\016\n\006result\030\001 \002(\t\022\031\n\021sign" +
+      "edCertificate\030\002 \002(\t\022\026\n\016signingMessage\030\003 " +
+      "\002(\tB-\n\033org.apache.slider.api.protoB\010Mess" +
+      "ages\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -25666,6 +27407,18 @@ public final class Messages {
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_org_apache_slider_api_WrappedJsonProto_descriptor,
               new java.lang.String[] { "Json", });
+          internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor =
+            getDescriptor().getMessageTypes().get(41);
+          internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor,
+              new java.lang.String[] { "Hostname", "CertRequest", "PassPhrase", });
+          internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor =
+            getDescriptor().getMessageTypes().get(42);
+          internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable = new
+            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
+              internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor,
+              new java.lang.String[] { "Result", "SignedCertificate", "SigningMessage", });
           return null;
         }
       };

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
index 85ea328..0d473fc 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
@@ -273,6 +273,14 @@ public final class SliderClusterAPI {
           org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
           com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done);
 
+      /**
+       * <code>rpc signCertificate(.org.apache.slider.api.SignCertificateRequestProto) returns (.org.apache.slider.api.SignCertificateResponseProto);</code>
+       */
+      public abstract void signCertificate(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
+          com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done);
+
     }
 
     public static com.google.protobuf.Service newReflectiveService(
@@ -454,6 +462,14 @@ public final class SliderClusterAPI {
           impl.getLiveResources(controller, request, done);
         }
 
+        @java.lang.Override
+        public  void signCertificate(
+            com.google.protobuf.RpcController controller,
+            org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
+            com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done) {
+          impl.signCertificate(controller, request, done);
+        }
+
       };
     }
 
@@ -520,6 +536,8 @@ public final class SliderClusterAPI {
               return impl.getModelResolvedResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
             case 21:
               return impl.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
+            case 22:
+              return impl.signCertificate(controller, (org.apache.slider.api.proto.Messages.SignCertificateRequestProto)request);
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -578,6 +596,8 @@ public final class SliderClusterAPI {
               return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
             case 21:
               return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+            case 22:
+              return org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance();
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -636,6 +656,8 @@ public final class SliderClusterAPI {
               return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
             case 21:
               return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+            case 22:
+              return org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance();
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -896,6 +918,14 @@ public final class SliderClusterAPI {
         org.apache.slider.api.proto.Messages.EmptyPayloadProto request,
         com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done);
 
+    /**
+     * <code>rpc signCertificate(.org.apache.slider.api.SignCertificateRequestProto) returns (.org.apache.slider.api.SignCertificateResponseProto);</code>
+     */
+    public abstract void signCertificate(
+        com.google.protobuf.RpcController controller,
+        org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
+        com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done);
+
     public static final
         com.google.protobuf.Descriptors.ServiceDescriptor
         getDescriptor() {
@@ -1028,6 +1058,11 @@ public final class SliderClusterAPI {
             com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.WrappedJsonProto>specializeCallback(
               done));
           return;
+        case 22:
+          this.signCertificate(controller, (org.apache.slider.api.proto.Messages.SignCertificateRequestProto)request,
+            com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.SignCertificateResponseProto>specializeCallback(
+              done));
+          return;
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -1086,6 +1121,8 @@ public final class SliderClusterAPI {
           return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
         case 21:
           return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
+        case 22:
+          return org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance();
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -1144,6 +1181,8 @@ public final class SliderClusterAPI {
           return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
         case 21:
           return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
+        case 22:
+          return org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance();
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -1494,6 +1533,21 @@ public final class SliderClusterAPI {
             org.apache.slider.api.proto.Messages.WrappedJsonProto.class,
             org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
       }
+
+      public  void signCertificate(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
+          com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done) {
+        channel.callMethod(
+          getDescriptor().getMethods().get(22),
+          controller,
+          request,
+          org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance(),
+          com.google.protobuf.RpcUtil.generalizeCallback(
+            done,
+            org.apache.slider.api.proto.Messages.SignCertificateResponseProto.class,
+            org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance()));
+      }
     }
 
     public static BlockingInterface newBlockingStub(
@@ -1611,6 +1665,11 @@ public final class SliderClusterAPI {
           com.google.protobuf.RpcController controller,
           org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
           throws com.google.protobuf.ServiceException;
+
+      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto signCertificate(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request)
+          throws com.google.protobuf.ServiceException;
     }
 
     private static final class BlockingStub implements BlockingInterface {
@@ -1883,6 +1942,18 @@ public final class SliderClusterAPI {
           org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance());
       }
 
+
+      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto signCertificate(
+          com.google.protobuf.RpcController controller,
+          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request)
+          throws com.google.protobuf.ServiceException {
+        return (org.apache.slider.api.proto.Messages.SignCertificateResponseProto) channel.callBlockingMethod(
+          getDescriptor().getMethods().get(22),
+          controller,
+          request,
+          org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance());
+      }
+
     }
 
     // @@protoc_insertion_point(class_scope:org.apache.slider.api.SliderClusterProtocolPB)
@@ -1899,7 +1970,7 @@ public final class SliderClusterAPI {
     java.lang.String[] descriptorData = {
       "\n\033SliderClusterProtocol.proto\022\025org.apach" +
       "e.slider.api\032\033SliderClusterMessages.prot" +
-      "o2\264\024\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
+      "o2\260\025\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
       "ster\022..org.apache.slider.api.StopCluster" +
       "RequestProto\032/.org.apache.slider.api.Sto" +
       "pClusterResponseProto\022n\n\013flexCluster\022..o" +
@@ -1964,8 +2035,11 @@ public final class SliderClusterAPI {
       "pache.slider.api.WrappedJsonProto\022e\n\020get" +
       "LiveResources\022(.org.apache.slider.api.Em" +
       "ptyPayloadProto\032\'.org.apache.slider.api." +
-      "WrappedJsonProtoB5\n\033org.apache.slider.ap" +
-      "i.protoB\020SliderClusterAPI\210\001\001\240\001\001"
+      "WrappedJsonProto\022z\n\017signCertificate\0222.or" +
+      "g.apache.slider.api.SignCertificateReque" +
+      "stProto\0323.org.apache.slider.api.SignCert",
+      "ificateResponseProtoB5\n\033org.apache.slide" +
+      "r.api.protoB\020SliderClusterAPI\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
index c6a3be3..dae93b3 100644
--- a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
+++ b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
@@ -39,6 +39,7 @@ import org.apache.slider.core.exceptions.NoSuchNodeException;
 import org.apache.slider.core.exceptions.SliderException;
 import org.apache.slider.core.exceptions.WaitTimeoutException;
 import org.apache.slider.core.persist.ConfTreeSerDeser;
+import org.apache.slider.server.services.security.SignCertResponse;
 import org.codehaus.jackson.JsonParseException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -454,7 +455,7 @@ public class SliderClusterOperations {
   public List<ContainerInformation> getContainers() throws IOException {
     Messages.GetLiveContainersResponseProto response = appMaster
         .getLiveContainers(Messages.GetLiveContainersRequestProto.newBuilder()
-            .build());
+                                                                 .build());
     return unmarshall(response);
   }
 
@@ -511,5 +512,18 @@ public class SliderClusterOperations {
     return unmarshall(proto);
   }
 
+  public SignCertResponse signCertificate(String hostname, String request,
+      String passphrase) throws IOException {
+    Messages.SignCertificateRequestProto requestProto =
+        Messages.SignCertificateRequestProto.newBuilder()
+                                            .setHostname(hostname)
+                                            .setCertRequest(request)
+                                            .setPassPhrase(passphrase)
+                                            .build();
+    Messages.SignCertificateResponseProto response =
+        appMaster.signCertificate(requestProto);
+    // JON
+    return new SignCertResponse();
+  }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
index dded9b9..ca0d21e 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
@@ -281,4 +281,15 @@ public class SliderClusterProtocolPBImpl implements SliderClusterProtocolPB {
       throw wrap(e);
     }
   }
+
+
+  @Override
+  public Messages.SignCertificateResponseProto signCertificate(RpcController controller,
+      Messages.SignCertificateRequestProto request) throws ServiceException {
+    try {
+      return real.signCertificate(request);
+    } catch (Exception e) {
+      throw wrap(e);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
index d7031a5..901e4ad 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
@@ -314,4 +314,14 @@ public class SliderClusterProtocolProxy implements SliderClusterProtocol {
     }
 
   }
+
+  @Override
+  public Messages.SignCertificateResponseProto signCertificate(Messages.SignCertificateRequestProto request) throws
+      IOException {
+    try {
+      return endpoint.signCertificate(NULL_CONTROLLER, request);
+    } catch (ServiceException e) {
+      throw convert(e);
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
index a590c05..1cc44bc 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
@@ -462,5 +462,9 @@ public class SliderIPCService extends AbstractService
     return builder.build();
   }
 
-
+  @Override
+  public Messages.SignCertificateResponseProto signCertificate(Messages.SignCertificateRequestProto request) throws
+      IOException {
+    return null;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/proto/SliderClusterMessages.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterMessages.proto b/slider-core/src/main/proto/SliderClusterMessages.proto
index bcf3fb7..0b95de9 100644
--- a/slider-core/src/main/proto/SliderClusterMessages.proto
+++ b/slider-core/src/main/proto/SliderClusterMessages.proto
@@ -317,4 +317,16 @@ message EmptyPayloadProto {
 */
 message WrappedJsonProto {
   required string json = 1;
+}
+
+message SignCertificateRequestProto {
+  required string hostname = 1;
+  required string certRequest = 2;
+  required string passPhrase = 3;
+}
+
+message SignCertificateResponseProto {
+  required string result = 1;
+  required string signedCertificate = 2;
+  required string signingMessage = 3;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/b18daa35/slider-core/src/main/proto/SliderClusterProtocol.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterProtocol.proto b/slider-core/src/main/proto/SliderClusterProtocol.proto
index 437e06f..974bcd5 100644
--- a/slider-core/src/main/proto/SliderClusterProtocol.proto
+++ b/slider-core/src/main/proto/SliderClusterProtocol.proto
@@ -27,7 +27,7 @@ package org.apache.slider.api;
 Compiling
 
 Maven: How to do it as part of the build
- mvn -Pcompile-protobuf
+ mvn install -DskipTests -Pcompile-protobuf
 
 How to do it so as to get error messages
 
@@ -164,6 +164,9 @@ service SliderClusterProtocolPB {
   rpc getLiveResources(EmptyPayloadProto) 
     returns(WrappedJsonProto);
 
+  rpc signCertificate(SignCertificateRequestProto) 
+    returns(SignCertificateResponseProto);
+
   
   
 }


[2/4] incubator-slider git commit: SLIDER-802 add client keystore and trustore retrieval commands

Posted by jm...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
index 0d473fc..3441625 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/SliderClusterAPI.java
@@ -274,12 +274,12 @@ public final class SliderClusterAPI {
           com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done);
 
       /**
-       * <code>rpc signCertificate(.org.apache.slider.api.SignCertificateRequestProto) returns (.org.apache.slider.api.SignCertificateResponseProto);</code>
+       * <code>rpc getClientCertificateStore(.org.apache.slider.api.GetCertificateStoreRequestProto) returns (.org.apache.slider.api.GetCertificateStoreResponseProto);</code>
        */
-      public abstract void signCertificate(
+      public abstract void getClientCertificateStore(
           com.google.protobuf.RpcController controller,
-          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
-          com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done);
+          org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request,
+          com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto> done);
 
     }
 
@@ -463,11 +463,11 @@ public final class SliderClusterAPI {
         }
 
         @java.lang.Override
-        public  void signCertificate(
+        public  void getClientCertificateStore(
             com.google.protobuf.RpcController controller,
-            org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
-            com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done) {
-          impl.signCertificate(controller, request, done);
+            org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request,
+            com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto> done) {
+          impl.getClientCertificateStore(controller, request, done);
         }
 
       };
@@ -537,7 +537,7 @@ public final class SliderClusterAPI {
             case 21:
               return impl.getLiveResources(controller, (org.apache.slider.api.proto.Messages.EmptyPayloadProto)request);
             case 22:
-              return impl.signCertificate(controller, (org.apache.slider.api.proto.Messages.SignCertificateRequestProto)request);
+              return impl.getClientCertificateStore(controller, (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)request);
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -597,7 +597,7 @@ public final class SliderClusterAPI {
             case 21:
               return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
             case 22:
-              return org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance();
+              return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -657,7 +657,7 @@ public final class SliderClusterAPI {
             case 21:
               return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
             case 22:
-              return org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance();
+              return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
             default:
               throw new java.lang.AssertionError("Can't get here.");
           }
@@ -919,12 +919,12 @@ public final class SliderClusterAPI {
         com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.WrappedJsonProto> done);
 
     /**
-     * <code>rpc signCertificate(.org.apache.slider.api.SignCertificateRequestProto) returns (.org.apache.slider.api.SignCertificateResponseProto);</code>
+     * <code>rpc getClientCertificateStore(.org.apache.slider.api.GetCertificateStoreRequestProto) returns (.org.apache.slider.api.GetCertificateStoreResponseProto);</code>
      */
-    public abstract void signCertificate(
+    public abstract void getClientCertificateStore(
         com.google.protobuf.RpcController controller,
-        org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
-        com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done);
+        org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request,
+        com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto> done);
 
     public static final
         com.google.protobuf.Descriptors.ServiceDescriptor
@@ -1059,8 +1059,8 @@ public final class SliderClusterAPI {
               done));
           return;
         case 22:
-          this.signCertificate(controller, (org.apache.slider.api.proto.Messages.SignCertificateRequestProto)request,
-            com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.SignCertificateResponseProto>specializeCallback(
+          this.getClientCertificateStore(controller, (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)request,
+            com.google.protobuf.RpcUtil.<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto>specializeCallback(
               done));
           return;
         default:
@@ -1122,7 +1122,7 @@ public final class SliderClusterAPI {
         case 21:
           return org.apache.slider.api.proto.Messages.EmptyPayloadProto.getDefaultInstance();
         case 22:
-          return org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance();
+          return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -1182,7 +1182,7 @@ public final class SliderClusterAPI {
         case 21:
           return org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance();
         case 22:
-          return org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance();
+          return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
         default:
           throw new java.lang.AssertionError("Can't get here.");
       }
@@ -1534,19 +1534,19 @@ public final class SliderClusterAPI {
             org.apache.slider.api.proto.Messages.WrappedJsonProto.getDefaultInstance()));
       }
 
-      public  void signCertificate(
+      public  void getClientCertificateStore(
           com.google.protobuf.RpcController controller,
-          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request,
-          com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.SignCertificateResponseProto> done) {
+          org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request,
+          com.google.protobuf.RpcCallback<org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto> done) {
         channel.callMethod(
           getDescriptor().getMethods().get(22),
           controller,
           request,
-          org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance(),
+          org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance(),
           com.google.protobuf.RpcUtil.generalizeCallback(
             done,
-            org.apache.slider.api.proto.Messages.SignCertificateResponseProto.class,
-            org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance()));
+            org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.class,
+            org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance()));
       }
     }
 
@@ -1666,9 +1666,9 @@ public final class SliderClusterAPI {
           org.apache.slider.api.proto.Messages.EmptyPayloadProto request)
           throws com.google.protobuf.ServiceException;
 
-      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto signCertificate(
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto getClientCertificateStore(
           com.google.protobuf.RpcController controller,
-          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request)
+          org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request)
           throws com.google.protobuf.ServiceException;
     }
 
@@ -1943,15 +1943,15 @@ public final class SliderClusterAPI {
       }
 
 
-      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto signCertificate(
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto getClientCertificateStore(
           com.google.protobuf.RpcController controller,
-          org.apache.slider.api.proto.Messages.SignCertificateRequestProto request)
+          org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto request)
           throws com.google.protobuf.ServiceException {
-        return (org.apache.slider.api.proto.Messages.SignCertificateResponseProto) channel.callBlockingMethod(
+        return (org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto) channel.callBlockingMethod(
           getDescriptor().getMethods().get(22),
           controller,
           request,
-          org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance());
+          org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance());
       }
 
     }
@@ -1970,7 +1970,7 @@ public final class SliderClusterAPI {
     java.lang.String[] descriptorData = {
       "\n\033SliderClusterProtocol.proto\022\025org.apach" +
       "e.slider.api\032\033SliderClusterMessages.prot" +
-      "o2\260\025\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
+      "o2\303\025\n\027SliderClusterProtocolPB\022n\n\013stopClu" +
       "ster\022..org.apache.slider.api.StopCluster" +
       "RequestProto\032/.org.apache.slider.api.Sto" +
       "pClusterResponseProto\022n\n\013flexCluster\022..o" +
@@ -2035,11 +2035,12 @@ public final class SliderClusterAPI {
       "pache.slider.api.WrappedJsonProto\022e\n\020get" +
       "LiveResources\022(.org.apache.slider.api.Em" +
       "ptyPayloadProto\032\'.org.apache.slider.api." +
-      "WrappedJsonProto\022z\n\017signCertificate\0222.or" +
-      "g.apache.slider.api.SignCertificateReque" +
-      "stProto\0323.org.apache.slider.api.SignCert",
-      "ificateResponseProtoB5\n\033org.apache.slide" +
-      "r.api.protoB\020SliderClusterAPI\210\001\001\240\001\001"
+      "WrappedJsonProto\022\214\001\n\031getClientCertificat" +
+      "eStore\0226.org.apache.slider.api.GetCertif" +
+      "icateStoreRequestProto\0327.org.apache.slid",
+      "er.api.GetCertificateStoreResponseProtoB" +
+      "5\n\033org.apache.slider.api.protoB\020SliderCl" +
+      "usterAPI\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
index dfa7cd6..8c1a9b2 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java
@@ -21,6 +21,7 @@ package org.apache.slider.client;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
 
+import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
@@ -154,6 +155,7 @@ import org.apache.slider.providers.agent.AgentKeys;
 import org.apache.slider.providers.slideram.SliderAMClientProvider;
 import org.apache.slider.server.appmaster.SliderAppMaster;
 import org.apache.slider.server.appmaster.rpc.RpcBinder;
+import org.apache.slider.server.services.security.SecurityStore;
 import org.apache.slider.server.services.utility.AbstractSliderLaunchedService;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
@@ -172,8 +174,10 @@ import java.io.InputStreamReader;
 import java.io.PrintStream;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.URISyntaxException;
+import java.net.UnknownHostException;
 import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.util.ArrayList;
@@ -916,15 +920,85 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
 
   @Override
   public int actionClient(ActionClientArgs clientInfo) throws
-      SliderException,
+      YarnException,
       IOException {
+    if (clientInfo.install) {
+      return doClientInstall(clientInfo);
+    } else if (clientInfo.getCertStore) {
+      return doCertificateStoreRetrieval(clientInfo);
+    } else {
+      throw new BadCommandArgumentsException(
+          "Only install, keystore, and truststore commands are supported for the client.\n"
+          + CommonArgs.usage(serviceArgs, ACTION_CLIENT));
+
+    }
+  }
 
-    if(!clientInfo.install) {
+  private int doCertificateStoreRetrieval(ActionClientArgs clientInfo)
+      throws YarnException, IOException {
+    if (clientInfo.keystore != null && clientInfo.truststore != null) {
       throw new BadCommandArgumentsException(
-          "Only install command is supported for the client.\n"
+          "Only one of either keystore or truststore can be retrieved at one time.  "
+          + "Retrieval of both should be done separately\n"
           + CommonArgs.usage(serviceArgs, ACTION_CLIENT));
     }
 
+    if (clientInfo.name == null) {
+      throw new BadCommandArgumentsException("No applicaiton name specified\n"
+                                             + CommonArgs.usage(serviceArgs,
+                                                                ACTION_CLIENT));
+    }
+
+    File storeFile = null;
+    SecurityStore.StoreType type;
+    if (clientInfo.keystore != null) {
+      storeFile = clientInfo.keystore;
+      type = SecurityStore.StoreType.keystore;
+    } else {
+      storeFile = clientInfo.truststore;
+      type = SecurityStore.StoreType.truststore;
+    }
+
+    if (storeFile.exists()) {
+      throw new BadCommandArgumentsException("File %s already exists.  "
+                                             + "Please remove that file or select a different file name.",
+                                             storeFile.getAbsolutePath());
+    }
+    String hostname = null;
+    if (type == SecurityStore.StoreType.keystore) {
+      hostname = clientInfo.hostname;
+      if (hostname == null) {
+        hostname = InetAddress.getLocalHost().getCanonicalHostName();
+        log.info("No hostname specified via command line. Using {}", hostname);
+      }
+    }
+
+    String password = clientInfo.password;
+    if (password == null) {
+      // get a password
+      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+      try {
+        password = String.valueOf(readPassword(type.name(), br));
+      } finally {
+        if (br != null) {
+          br.close();
+        }
+      }
+    }
+
+    byte[]
+        keystore =
+        createClusterOperations(clientInfo.name).getClientCertificateStore(
+            hostname, "client", password, type.name());
+    // persist to file
+    IOUtils.write(keystore, new FileOutputStream(storeFile));
+
+    return EXIT_SUCCESS;
+  }
+
+  private int doClientInstall(ActionClientArgs clientInfo)
+      throws IOException, SliderException {
+
     if (clientInfo.installLocation == null) {
       throw new BadCommandArgumentsException(
           "A valid install location must be provided for the client.\n"
@@ -963,7 +1037,8 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe
     }
 
     // Only INSTALL is supported
-    AbstractClientProvider provider = createClientProvider(SliderProviderFactory.DEFAULT_CLUSTER_TYPE);
+    AbstractClientProvider
+        provider = createClientProvider(SliderProviderFactory.DEFAULT_CLUSTER_TYPE);
     provider.processClientOperation(sliderFileSystem,
                                     "INSTALL",
                                     clientInfo.installLocation,

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java b/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
index efb1f7f..c7756da 100644
--- a/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
+++ b/slider-core/src/main/java/org/apache/slider/client/SliderClientAPI.java
@@ -134,7 +134,7 @@ public interface SliderClientAPI extends Service {
    * @throws IOException problems related to package and destination folders
    */
   int actionClient(ActionClientArgs clientInfo)
-      throws IOException, SliderException;
+      throws IOException, YarnException;
 
   /**
    * Managing slider application package

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
index dae93b3..ae95b17 100644
--- a/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
+++ b/slider-core/src/main/java/org/apache/slider/client/ipc/SliderClusterOperations.java
@@ -39,6 +39,7 @@ import org.apache.slider.core.exceptions.NoSuchNodeException;
 import org.apache.slider.core.exceptions.SliderException;
 import org.apache.slider.core.exceptions.WaitTimeoutException;
 import org.apache.slider.core.persist.ConfTreeSerDeser;
+import org.apache.slider.server.services.security.SecurityStore;
 import org.apache.slider.server.services.security.SignCertResponse;
 import org.codehaus.jackson.JsonParseException;
 import org.slf4j.Logger;
@@ -512,18 +513,22 @@ public class SliderClusterOperations {
     return unmarshall(proto);
   }
 
-  public SignCertResponse signCertificate(String hostname, String request,
-      String passphrase) throws IOException {
-    Messages.SignCertificateRequestProto requestProto =
-        Messages.SignCertificateRequestProto.newBuilder()
-                                            .setHostname(hostname)
-                                            .setCertRequest(request)
-                                            .setPassPhrase(passphrase)
-                                            .build();
-    Messages.SignCertificateResponseProto response =
-        appMaster.signCertificate(requestProto);
-    // JON
-    return new SignCertResponse();
+  public byte[] getClientCertificateStore(String hostname, String clientId,
+      String password, String type) throws IOException {
+    Messages.GetCertificateStoreRequestProto.Builder
+        builder = Messages.GetCertificateStoreRequestProto.newBuilder();
+    if (hostname != null) {
+      builder.setHostname(hostname);
+    }
+    Messages.GetCertificateStoreRequestProto requestProto =
+        builder.setRequesterId(clientId)
+               .setPassword(password)
+               .setType(type)
+               .build();
+    Messages.GetCertificateStoreResponseProto response =
+        appMaster.getClientCertificateStore(requestProto);
+
+    return unmarshall(response);
   }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/common/params/ActionClientArgs.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ActionClientArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ActionClientArgs.java
index 4154c9f..c7f8c2e 100644
--- a/slider-core/src/main/java/org/apache/slider/common/params/ActionClientArgs.java
+++ b/slider-core/src/main/java/org/apache/slider/common/params/ActionClientArgs.java
@@ -37,6 +37,30 @@ public class ActionClientArgs extends AbstractActionArgs {
       description = "Install client")
   public boolean install;
 
+  @Parameter(names = {ARG_GETCERTSTORE},
+      description = "Get a certificate store")
+  public boolean getCertStore;
+
+  @Parameter(names = {ARG_KEYSTORE},
+      description = "Retrieve keystore to specified location")
+  public File keystore;
+
+  @Parameter(names = {ARG_TRUSTSTORE},
+      description = "Retrieve truststore to specified location")
+  public File truststore;
+
+  @Parameter(names = {ARG_HOSTNAME},
+      description = "(Optional) Specify the hostname to use for generation of keystore certificate")
+  public String hostname;
+
+  @Parameter(names = {ARG_NAME},
+      description = "The name of the application")
+  public String name;
+
+  @Parameter(names = {ARG_PASSWORD},
+      description = "The certificate store password")
+  public String password;
+
   @Parameter(names = {ARG_PACKAGE},
       description = "Path to app package")
   public String packageURI;

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java b/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java
index b8414e3..14be81e 100644
--- a/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java
+++ b/slider-core/src/main/java/org/apache/slider/common/params/Arguments.java
@@ -52,14 +52,17 @@ public interface Arguments {
   String ARG_FOLDER = "--folder";
   String ARG_FORCE = "--force";
   String ARG_FORMAT = "--format";
+  String ARG_GETCERTSTORE = "--getcertstore";
   String ARG_GETCONF = "--getconf";
   String ARG_GETEXP = "--getexp";
   String ARG_GETFILES = "--getfiles";
   String ARG_HELP = "--help";
+  String ARG_HOSTNAME = "--hostname";
   String ARG_ID = "--id";
   String ARG_IMAGE = "--image";
   String ARG_INTERNAL = "--internal";
   String ARG_KEYTAB = "--keytab";
+  String ARG_KEYSTORE = "--keystore";
   String ARG_KEYTABINSTALL = "--install";
   String ARG_KEYTABDELETE = "--delete";
   String ARG_KEYTABLIST = "--list";
@@ -80,6 +83,7 @@ public interface Arguments {
   String ARG_OUTPUT_SHORT = "-o";
   String ARG_OVERWRITE = "--overwrite";
   String ARG_PACKAGE = "--package";
+  String ARG_PASSWORD = "--password";
   String ARG_PATH = "--path";
   String ARG_PKGDELETE = "--delete";
   String ARG_INSTALL = "--install";
@@ -99,6 +103,7 @@ public interface Arguments {
   String ARG_STATE = "--state";
   String ARG_SYSPROP = "-S";
   String ARG_TEMPLATE = "--template";
+  String ARG_TRUSTSTORE = "--truststore";
   String ARG_USER = "--user";
   String ARG_VERBOSE = "--verbose";
   String ARG_WAIT = "--wait";

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java b/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java
index 2599927..f7b97d5 100644
--- a/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java
+++ b/slider-core/src/main/java/org/apache/slider/common/params/SliderActions.java
@@ -88,10 +88,10 @@ public interface SliderActions {
                         "Print the Slider version information";
   String DESCRIBE_ACTION_INSTALL_PACKAGE = "Install the application package in the home directory under sub-folder packages";
   String DESCRIBE_ACTION_PACKAGE = "Install/list/delete application packages and list app instances that use this package";
-  String DESCRIBE_ACTION_CLIENT = "Install the application client in the specified directory";
+  String DESCRIBE_ACTION_CLIENT = "Install the application client in the specified directory or obtain a client keystore or truststore";
   String DESCRIBE_ACTION_INSTALL_KEYTAB = "Install the Kerberos keytab file in the sub-folder 'keytabs' of the user's Slider base directory";
   String DESCRIBE_ACTION_KEYTAB = "Manage a Kerberos keytab file (install, delete, list) in the sub-folder 'keytabs' of the user's Slider base directory";
   String DESCRIBE_ACTION_DIAGNOSTIC = "Diagnose the configuration of the running slider application and slider client";
-  
+
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
index 35ab1d4..34bf20c 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java
@@ -720,7 +720,9 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
           getConfig().set(KEY_PROTOCOL_ACL, "*");
         }
       }
-      
+
+      certificateManager = new CertificateManager();
+
       //bring up the Slider RPC service
       buildPortScanner(instanceDefinition);
       startSliderRPCServer(instanceDefinition);
@@ -744,7 +746,6 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
       providerRoles.addAll(SliderAMClientProvider.ROLES);
 
       // Start up the WebApp and track the URL for it
-      certificateManager = new CertificateManager();
       MapOperations component = instanceDefinition.getAppConfOperations()
           .getComponent(SliderKeys.COMPONENT_AM);
       certificateManager.initialize(component, appMasterHostname,
@@ -1502,6 +1503,7 @@ public class SliderAppMaster extends AbstractSliderLaunchedService
 
     sliderIPCService = new SliderIPCService(
         this,
+        certificateManager,
         stateForProviders,
         actionQueues,
         metricsAndMonitoring,

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
index ca0d21e..14b2bef 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolPBImpl.java
@@ -282,12 +282,13 @@ public class SliderClusterProtocolPBImpl implements SliderClusterProtocolPB {
     }
   }
 
-
   @Override
-  public Messages.SignCertificateResponseProto signCertificate(RpcController controller,
-      Messages.SignCertificateRequestProto request) throws ServiceException {
+  public Messages.GetCertificateStoreResponseProto getClientCertificateStore(
+      RpcController controller,
+      Messages.GetCertificateStoreRequestProto request)
+      throws ServiceException {
     try {
-      return real.signCertificate(request);
+      return real.getClientCertificateStore(request);
     } catch (Exception e) {
       throw wrap(e);
     }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
index 901e4ad..ad4cca4 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderClusterProtocolProxy.java
@@ -316,10 +316,10 @@ public class SliderClusterProtocolProxy implements SliderClusterProtocol {
   }
 
   @Override
-  public Messages.SignCertificateResponseProto signCertificate(Messages.SignCertificateRequestProto request) throws
+  public Messages.GetCertificateStoreResponseProto getClientCertificateStore(Messages.GetCertificateStoreRequestProto request) throws
       IOException {
     try {
-      return endpoint.signCertificate(NULL_CONTROLLER, request);
+      return endpoint.getClientCertificateStore(NULL_CONTROLLER, request);
     } catch (ServiceException e) {
       throw convert(e);
     }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
index 1cc44bc..a924940 100644
--- a/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
+++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/rpc/SliderIPCService.java
@@ -34,6 +34,7 @@ import org.apache.slider.core.conf.AggregateConf;
 import org.apache.slider.core.conf.ConfTree;
 import org.apache.slider.core.exceptions.NoSuchNodeException;
 import org.apache.slider.core.exceptions.ServiceNotReadyException;
+import org.apache.slider.core.exceptions.SliderException;
 import org.apache.slider.core.main.LauncherExitCodes;
 import org.apache.slider.core.persist.AggregateConfSerDeser;
 import org.apache.slider.core.persist.ConfTreeSerDeser;
@@ -48,6 +49,9 @@ import org.apache.slider.server.appmaster.management.MetricsAndMonitoring;
 import org.apache.slider.server.appmaster.state.RoleInstance;
 import org.apache.slider.server.appmaster.state.StateAccessForProviders;
 import org.apache.slider.server.appmaster.web.rest.application.resources.ContentCache;
+import org.apache.slider.server.services.security.CertificateManager;
+import org.apache.slider.server.services.security.KeystoreGenerator;
+import org.apache.slider.server.services.security.SecurityStore;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -84,6 +88,7 @@ public class SliderIPCService extends AbstractService
   private final MetricsAndMonitoring metricsAndMonitoring;
   private final AppMasterActionOperations amOperations;
   private final ContentCache cache;
+  private final CertificateManager certificateManager;
 
   /**
    * This is the prefix used for metrics
@@ -100,6 +105,7 @@ public class SliderIPCService extends AbstractService
    * @param cache
    */
   public SliderIPCService(AppMasterActionOperations amOperations,
+      CertificateManager certificateManager,
       StateAccessForProviders state,
       QueueAccess actionQueues,
       MetricsAndMonitoring metricsAndMonitoring, ContentCache cache) {
@@ -115,6 +121,7 @@ public class SliderIPCService extends AbstractService
     this.metricsAndMonitoring = metricsAndMonitoring;
     this.amOperations = amOperations;
     this.cache = cache;
+    this.certificateManager = certificateManager;
   }
 
   @Override   //SliderClusterProtocol
@@ -463,8 +470,33 @@ public class SliderIPCService extends AbstractService
   }
 
   @Override
-  public Messages.SignCertificateResponseProto signCertificate(Messages.SignCertificateRequestProto request) throws
+  public Messages.GetCertificateStoreResponseProto getClientCertificateStore(Messages.GetCertificateStoreRequestProto request) throws
       IOException {
-    return null;
+    String hostname = request.getHostname();
+    String clientId = request.getRequesterId();
+    String password = request.getPassword();
+    String type = request.getType();
+
+    SecurityStore store = null;
+    try {
+      if ( SecurityStore.StoreType.keystore.equals(
+          SecurityStore.StoreType.valueOf(type))) {
+        store = certificateManager.generateContainerKeystore(hostname,
+                                                             clientId,
+                                                             null,
+                                                             password);
+      } else if (SecurityStore.StoreType.truststore.equals(
+          SecurityStore.StoreType.valueOf(type))) {
+        store = certificateManager.generateContainerTruststore(clientId,
+                                                               null,
+                                                               password);
+
+      } else {
+        throw new IOException("Illegal store type");
+      }
+    } catch (SliderException e) {
+      throw new IOException(e);
+    }
+    return marshall(store);
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java b/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
index 8d8dfec..2cdcbec 100644
--- a/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
+++ b/slider-core/src/main/java/org/apache/slider/server/services/security/CertificateManager.java
@@ -203,18 +203,18 @@ public class CertificateManager {
   }
 
   public synchronized void generateContainerCertificate(String hostname,
-                                                        String containerId) {
-    LOG.info("Generation of agent certificate for {}", hostname);
+                                                        String identifier) {
+    LOG.info("Generation of certificate for {}", hostname);
 
     String srvrKstrDir = SecurityUtils.getSecurityDir();
-    Object[] scriptArgs = {srvrKstrDir, getSubjectDN(hostname, containerId,
-        this.applicationName), containerId};
+    Object[] scriptArgs = {srvrKstrDir, getSubjectDN(hostname, identifier,
+        this.applicationName), identifier};
 
     try {
       String command = MessageFormat.format(GEN_AGENT_KEY, scriptArgs);
       runCommand(command);
 
-      signAgentCertificate(containerId);
+      signAgentCertificate(identifier);
 
     } catch (SliderException e) {
       LOG.error("Error generating the agent certificate", e);
@@ -222,21 +222,21 @@ public class CertificateManager {
   }
 
   public synchronized SecurityStore generateContainerKeystore(String hostname,
-                                                              String containerId,
+                                                              String requesterId,
                                                               String role,
                                                               String keystorePass)
       throws SliderException {
     LOG.info("Generation of container keystore for container {} on {}",
-             containerId, hostname);
+             requesterId, hostname);
 
-    generateContainerCertificate(hostname, containerId);
+    generateContainerCertificate(hostname, requesterId);
 
     // come up with correct args to invoke keystore command
     String srvrCrtPass = SecurityUtils.getKeystorePass();
     String srvrKstrDir = SecurityUtils.getSecurityDir();
-    String containerCrtName = containerId + ".crt";
-    String containerKeyName = containerId + ".key";
-    String kstrName = getKeystoreFileName(containerId, role);
+    String containerCrtName = requesterId + ".crt";
+    String containerKeyName = requesterId + ".key";
+    String kstrName = getKeystoreFileName(requesterId, role);
 
     Object[] scriptArgs = {srvrCrtPass, keystorePass, srvrKstrDir,
         containerKeyName, containerCrtName, kstrName};
@@ -250,7 +250,8 @@ public class CertificateManager {
 
   private static String getKeystoreFileName(String containerId,
                                             String role) {
-    return String.format("keystore-%s-%s.p12", containerId, role);
+    return String.format("keystore-%s-%s.p12", containerId,
+                         role != null ? role : "");
   }
 
   private void generateAMKeystore(String hostname, String containerId)
@@ -306,7 +307,8 @@ public class CertificateManager {
   }
 
   private static String getTruststoreFileName(String role, String containerId) {
-    return String.format("truststore-%s-%s.p12", containerId, role);
+    return String.format("truststore-%s-%s.p12", containerId,
+                         role != null ? role : "");
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/proto/SliderClusterMessages.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterMessages.proto b/slider-core/src/main/proto/SliderClusterMessages.proto
index 0b95de9..9f8f20f 100644
--- a/slider-core/src/main/proto/SliderClusterMessages.proto
+++ b/slider-core/src/main/proto/SliderClusterMessages.proto
@@ -319,14 +319,13 @@ message WrappedJsonProto {
   required string json = 1;
 }
 
-message SignCertificateRequestProto {
-  required string hostname = 1;
-  required string certRequest = 2;
-  required string passPhrase = 3;
+message GetCertificateStoreRequestProto {
+  optional string hostname = 1;
+  required string requesterId = 2;
+  required string password = 3;
+  required string type = 4;
 }
 
-message SignCertificateResponseProto {
-  required string result = 1;
-  required string signedCertificate = 2;
-  required string signingMessage = 3;
+message GetCertificateStoreResponseProto {
+  required bytes store = 1;
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/proto/SliderClusterProtocol.proto
----------------------------------------------------------------------
diff --git a/slider-core/src/main/proto/SliderClusterProtocol.proto b/slider-core/src/main/proto/SliderClusterProtocol.proto
index 974bcd5..d2ba723 100644
--- a/slider-core/src/main/proto/SliderClusterProtocol.proto
+++ b/slider-core/src/main/proto/SliderClusterProtocol.proto
@@ -164,8 +164,8 @@ service SliderClusterProtocolPB {
   rpc getLiveResources(EmptyPayloadProto) 
     returns(WrappedJsonProto);
 
-  rpc signCertificate(SignCertificateRequestProto) 
-    returns(SignCertificateResponseProto);
+  rpc getClientCertificateStore(GetCertificateStoreRequestProto)
+    returns(GetCertificateStoreResponseProto);
 
   
   

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
----------------------------------------------------------------------
diff --git a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
index 1e4d834..6f637d8 100644
--- a/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
+++ b/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentClientProvider2.java
@@ -204,13 +204,6 @@ public class TestAgentClientProvider2 {
     SliderClient client = new SliderClient();
     client.bindArgs(new Configuration(), "client", "--dest", "a_random_path/none", "--package", "a_random_pkg.zip");
     ActionClientArgs args = new ActionClientArgs();
-    args.install = false;
-    try {
-      client.actionClient(args);
-    }catch(BadCommandArgumentsException e) {
-      log.info(e.getMessage());
-      Assert.assertTrue(e.getMessage().contains("Only install command is supported for the client"));
-    }
 
     args.install = true;
     try {

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AMClientCertStoreRetrievalIT.groovy
----------------------------------------------------------------------
diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AMClientCertStoreRetrievalIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AMClientCertStoreRetrievalIT.groovy
new file mode 100644
index 0000000..ab632d2
--- /dev/null
+++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/lifecycle/AMClientCertStoreRetrievalIT.groovy
@@ -0,0 +1,174 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.slider.funtest.lifecycle
+
+import com.jcraft.jsch.Session
+import groovy.transform.CompileStatic
+import groovy.util.logging.Slf4j
+import org.apache.bigtop.itest.shell.Shell
+import org.apache.chaos.remote.RemoteServer
+import org.apache.chaos.remote.SshCommands
+import org.apache.hadoop.security.UserGroupInformation
+import org.apache.hadoop.yarn.api.records.YarnApplicationState
+import org.apache.hadoop.yarn.conf.YarnConfiguration
+import org.apache.slider.common.SliderExitCodes
+import org.apache.slider.common.params.Arguments
+import org.apache.slider.common.params.SliderActions
+import org.apache.slider.funtest.framework.AgentCommandTestBase
+import org.apache.slider.funtest.framework.FuntestProperties
+import org.apache.slider.funtest.framework.SliderShell
+import org.junit.After
+import org.junit.Assert
+import org.junit.BeforeClass
+import org.junit.Test
+
+import javax.net.ssl.TrustManager
+import javax.net.ssl.TrustManagerFactory
+import javax.net.ssl.X509TrustManager
+import java.security.KeyStore
+import java.security.KeyStoreException
+import java.security.NoSuchAlgorithmException
+import java.security.Principal
+import java.security.cert.Certificate
+import java.security.cert.CertificateException
+import java.security.cert.X509Certificate
+
+@CompileStatic
+@Slf4j
+public class AMClientCertStoreRetrievalIT extends AgentCommandTestBase
+implements FuntestProperties, Arguments, SliderExitCodes, SliderActions {
+
+  private static String COMMAND_LOGGER = "COMMAND_LOGGER"
+  private static String APPLICATION_NAME = "certs-retrieval"
+
+
+  @After
+  public void destroyCluster() {
+    cleanup(APPLICATION_NAME)
+  }
+
+  @Test
+  public void testRetrieveCertificateStores() throws Throwable {
+    cleanup(APPLICATION_NAME)
+    File launchReportFile = createTempJsonFile();
+
+    SliderShell shell = createTemplatedSliderApplication(
+        APPLICATION_NAME, APP_TEMPLATE, APP_RESOURCE,
+        [],
+        launchReportFile)
+    logShell(shell)
+
+    def appId = ensureYarnApplicationIsUp(launchReportFile)
+    expectContainerRequestedCountReached(APPLICATION_NAME, COMMAND_LOGGER, 1,
+        CONTAINER_LAUNCH_TIMEOUT)
+
+    def cd = assertContainersLive(APPLICATION_NAME, COMMAND_LOGGER, 1)
+    def loggerInstances = cd.instances[COMMAND_LOGGER]
+    assert loggerInstances.size() == 1
+
+    def loggerStats = cd.statistics[COMMAND_LOGGER]
+
+    assert loggerStats["containers.requested"] == 1
+    assert loggerStats["containers.live"] == 1
+
+
+    String filename = "/tmp/test.keystore"
+    String password = "welcome";
+
+    // ensure file doesn't exist
+    new File(filename).delete();
+
+    shell = slider(EXIT_SUCCESS,
+                   [
+                       ACTION_CLIENT,
+                       ARG_GETCERTSTORE,
+                       ARG_KEYSTORE, filename,
+                       ARG_NAME, APPLICATION_NAME,
+                       ARG_PASSWORD, password
+                   ])
+
+    assert new File(filename).exists()
+
+    FileInputStream is = new FileInputStream(filename);
+    KeyStore keystore = KeyStore.getInstance("pkcs12");
+    keystore.load(is, password.toCharArray());
+
+    Certificate certificate = keystore.getCertificate(
+        keystore.aliases().nextElement());
+    Assert.assertNotNull(certificate);
+
+    String hostname = InetAddress.localHost.canonicalHostName;
+
+    if (certificate instanceof X509Certificate) {
+      X509Certificate x509cert = (X509Certificate) certificate;
+
+      // Get subject
+      Principal principal = x509cert.getSubjectDN();
+      String subjectDn = principal.getName();
+      Assert.assertEquals("wrong DN",
+                          "CN=" + hostname + ", OU=" + APPLICATION_NAME + ", OU=client",
+                          subjectDn);
+
+    }
+
+    filename = "/tmp/test.truststore"
+    // ensure file doesn't exist
+    new File(filename).delete();
+
+    shell = slider(EXIT_SUCCESS,
+                   [
+                       ACTION_CLIENT,
+                       ARG_GETCERTSTORE,
+                       ARG_TRUSTSTORE, filename,
+                       ARG_NAME, APPLICATION_NAME,
+                       ARG_PASSWORD, password
+                   ])
+
+    assert new File(filename).exists()
+
+    is = new FileInputStream(filename);
+    KeyStore truststore = KeyStore.getInstance("pkcs12");
+    truststore.load(is, password.toCharArray());
+
+    validateTruststore(keystore, truststore);
+
+  }
+
+  private void validateTruststore(KeyStore keystore, KeyStore truststore)
+      throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException {
+    // obtain server cert
+    Certificate certificate = keystore.getCertificate(
+        keystore.aliases().nextElement());
+    Assert.assertNotNull(certificate);
+
+    // validate keystore cert using trust store
+      TrustManagerFactory trustManagerFactory =
+          TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+      trustManagerFactory.init(truststore);
+
+      for (TrustManager trustManager: trustManagerFactory.getTrustManagers()) {
+        if (trustManager instanceof X509TrustManager) {
+          X509TrustManager x509TrustManager = (X509TrustManager)trustManager;
+          x509TrustManager.checkServerTrusted(
+              [(X509Certificate) certificate] as X509Certificate[],
+              "RSA_EXPORT");
+        }
+      }
+  }
+}


[3/4] incubator-slider git commit: SLIDER-802 add client keystore and trustore retrieval commands

Posted by jm...@apache.org.
SLIDER-802 add client keystore and trustore retrieval commands


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/c1b83467
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/c1b83467
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/c1b83467

Branch: refs/heads/develop
Commit: c1b83467cebc90b4e258d963ac8c5d90b85f3b1c
Parents: b18daa3
Author: Jon Maron <jm...@hortonworks.com>
Authored: Fri Mar 6 18:14:13 2015 -0800
Committer: Jon Maron <jm...@hortonworks.com>
Committed: Fri Mar 6 18:14:13 2015 -0800

----------------------------------------------------------------------
 .../slider/api/SliderClusterProtocol.java       |    5 +-
 .../org/apache/slider/api/proto/Messages.java   | 1188 +++++++-----------
 .../slider/api/proto/RestTypeMarshalling.java   |   24 +
 .../slider/api/proto/SliderClusterAPI.java      |   75 +-
 .../org/apache/slider/client/SliderClient.java  |   83 +-
 .../apache/slider/client/SliderClientAPI.java   |    2 +-
 .../client/ipc/SliderClusterOperations.java     |   29 +-
 .../slider/common/params/ActionClientArgs.java  |   24 +
 .../apache/slider/common/params/Arguments.java  |    5 +
 .../slider/common/params/SliderActions.java     |    4 +-
 .../server/appmaster/SliderAppMaster.java       |    6 +-
 .../rpc/SliderClusterProtocolPBImpl.java        |    9 +-
 .../rpc/SliderClusterProtocolProxy.java         |    4 +-
 .../server/appmaster/rpc/SliderIPCService.java  |   36 +-
 .../services/security/CertificateManager.java   |   28 +-
 .../src/main/proto/SliderClusterMessages.proto  |   15 +-
 .../src/main/proto/SliderClusterProtocol.proto  |    4 +-
 .../agent/TestAgentClientProvider2.java         |    7 -
 .../AMClientCertStoreRetrievalIT.groovy         |  174 +++
 19 files changed, 902 insertions(+), 820 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
index b4e91fc..dbb8c99 100644
--- a/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
+++ b/slider-core/src/main/java/org/apache/slider/api/SliderClusterProtocol.java
@@ -161,7 +161,6 @@ public interface SliderClusterProtocol extends VersionedProtocol {
    
   Messages.WrappedJsonProto getLiveResources(Messages.EmptyPayloadProto request) throws IOException;
 
-  Messages.SignCertificateResponseProto signCertificate(
-      Messages.SignCertificateRequestProto request) throws IOException;
-
+  Messages.GetCertificateStoreResponseProto getClientCertificateStore(Messages.GetCertificateStoreRequestProto request)
+      throws IOException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
index 3e1cad3..53c7d45 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/Messages.java
@@ -25129,73 +25129,88 @@ public final class Messages {
     // @@protoc_insertion_point(class_scope:org.apache.slider.api.WrappedJsonProto)
   }
 
-  public interface SignCertificateRequestProtoOrBuilder
+  public interface GetCertificateStoreRequestProtoOrBuilder
       extends com.google.protobuf.MessageOrBuilder {
 
-    // required string hostname = 1;
+    // optional string hostname = 1;
     /**
-     * <code>required string hostname = 1;</code>
+     * <code>optional string hostname = 1;</code>
      */
     boolean hasHostname();
     /**
-     * <code>required string hostname = 1;</code>
+     * <code>optional string hostname = 1;</code>
      */
     java.lang.String getHostname();
     /**
-     * <code>required string hostname = 1;</code>
+     * <code>optional string hostname = 1;</code>
      */
     com.google.protobuf.ByteString
         getHostnameBytes();
 
-    // required string certRequest = 2;
+    // required string requesterId = 2;
     /**
-     * <code>required string certRequest = 2;</code>
+     * <code>required string requesterId = 2;</code>
      */
-    boolean hasCertRequest();
+    boolean hasRequesterId();
     /**
-     * <code>required string certRequest = 2;</code>
+     * <code>required string requesterId = 2;</code>
      */
-    java.lang.String getCertRequest();
+    java.lang.String getRequesterId();
     /**
-     * <code>required string certRequest = 2;</code>
+     * <code>required string requesterId = 2;</code>
      */
     com.google.protobuf.ByteString
-        getCertRequestBytes();
+        getRequesterIdBytes();
 
-    // required string passPhrase = 3;
+    // required string password = 3;
     /**
-     * <code>required string passPhrase = 3;</code>
+     * <code>required string password = 3;</code>
      */
-    boolean hasPassPhrase();
+    boolean hasPassword();
     /**
-     * <code>required string passPhrase = 3;</code>
+     * <code>required string password = 3;</code>
      */
-    java.lang.String getPassPhrase();
+    java.lang.String getPassword();
     /**
-     * <code>required string passPhrase = 3;</code>
+     * <code>required string password = 3;</code>
      */
     com.google.protobuf.ByteString
-        getPassPhraseBytes();
+        getPasswordBytes();
+
+    // required string type = 4;
+    /**
+     * <code>required string type = 4;</code>
+     */
+    boolean hasType();
+    /**
+     * <code>required string type = 4;</code>
+     */
+    java.lang.String getType();
+    /**
+     * <code>required string type = 4;</code>
+     */
+    com.google.protobuf.ByteString
+        getTypeBytes();
   }
   /**
-   * Protobuf type {@code org.apache.slider.api.SignCertificateRequestProto}
+   * Protobuf type {@code org.apache.slider.api.GetCertificateStoreRequestProto}
    */
-  public static final class SignCertificateRequestProto extends
+  public static final class GetCertificateStoreRequestProto extends
       com.google.protobuf.GeneratedMessage
-      implements SignCertificateRequestProtoOrBuilder {
-    // Use SignCertificateRequestProto.newBuilder() to construct.
-    private SignCertificateRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      implements GetCertificateStoreRequestProtoOrBuilder {
+    // Use GetCertificateStoreRequestProto.newBuilder() to construct.
+    private GetCertificateStoreRequestProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
       super(builder);
       this.unknownFields = builder.getUnknownFields();
     }
-    private SignCertificateRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+    private GetCertificateStoreRequestProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
 
-    private static final SignCertificateRequestProto defaultInstance;
-    public static SignCertificateRequestProto getDefaultInstance() {
+    private static final GetCertificateStoreRequestProto defaultInstance;
+    public static GetCertificateStoreRequestProto getDefaultInstance() {
       return defaultInstance;
     }
 
-    public SignCertificateRequestProto getDefaultInstanceForType() {
+    public GetCertificateStoreRequestProto getDefaultInstanceForType() {
       return defaultInstance;
     }
 
@@ -25205,7 +25220,7 @@ public final class Messages {
         getUnknownFields() {
       return this.unknownFields;
     }
-    private SignCertificateRequestProto(
+    private GetCertificateStoreRequestProto(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -25235,12 +25250,17 @@ public final class Messages {
             }
             case 18: {
               bitField0_ |= 0x00000002;
-              certRequest_ = input.readBytes();
+              requesterId_ = input.readBytes();
               break;
             }
             case 26: {
               bitField0_ |= 0x00000004;
-              passPhrase_ = input.readBytes();
+              password_ = input.readBytes();
+              break;
+            }
+            case 34: {
+              bitField0_ |= 0x00000008;
+              type_ = input.readBytes();
               break;
             }
           }
@@ -25257,43 +25277,43 @@ public final class Messages {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor;
     }
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.slider.api.proto.Messages.SignCertificateRequestProto.class, org.apache.slider.api.proto.Messages.SignCertificateRequestProto.Builder.class);
+              org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.class, org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.Builder.class);
     }
 
-    public static com.google.protobuf.Parser<SignCertificateRequestProto> PARSER =
-        new com.google.protobuf.AbstractParser<SignCertificateRequestProto>() {
-      public SignCertificateRequestProto parsePartialFrom(
+    public static com.google.protobuf.Parser<GetCertificateStoreRequestProto> PARSER =
+        new com.google.protobuf.AbstractParser<GetCertificateStoreRequestProto>() {
+      public GetCertificateStoreRequestProto parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SignCertificateRequestProto(input, extensionRegistry);
+        return new GetCertificateStoreRequestProto(input, extensionRegistry);
       }
     };
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SignCertificateRequestProto> getParserForType() {
+    public com.google.protobuf.Parser<GetCertificateStoreRequestProto> getParserForType() {
       return PARSER;
     }
 
     private int bitField0_;
-    // required string hostname = 1;
+    // optional string hostname = 1;
     public static final int HOSTNAME_FIELD_NUMBER = 1;
     private java.lang.Object hostname_;
     /**
-     * <code>required string hostname = 1;</code>
+     * <code>optional string hostname = 1;</code>
      */
     public boolean hasHostname() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>required string hostname = 1;</code>
+     * <code>optional string hostname = 1;</code>
      */
     public java.lang.String getHostname() {
       java.lang.Object ref = hostname_;
@@ -25310,7 +25330,7 @@ public final class Messages {
       }
     }
     /**
-     * <code>required string hostname = 1;</code>
+     * <code>optional string hostname = 1;</code>
      */
     public com.google.protobuf.ByteString
         getHostnameBytes() {
@@ -25326,20 +25346,20 @@ public final class Messages {
       }
     }
 
-    // required string certRequest = 2;
-    public static final int CERTREQUEST_FIELD_NUMBER = 2;
-    private java.lang.Object certRequest_;
+    // required string requesterId = 2;
+    public static final int REQUESTERID_FIELD_NUMBER = 2;
+    private java.lang.Object requesterId_;
     /**
-     * <code>required string certRequest = 2;</code>
+     * <code>required string requesterId = 2;</code>
      */
-    public boolean hasCertRequest() {
+    public boolean hasRequesterId() {
       return ((bitField0_ & 0x00000002) == 0x00000002);
     }
     /**
-     * <code>required string certRequest = 2;</code>
+     * <code>required string requesterId = 2;</code>
      */
-    public java.lang.String getCertRequest() {
-      java.lang.Object ref = certRequest_;
+    public java.lang.String getRequesterId() {
+      java.lang.Object ref = requesterId_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
@@ -25347,42 +25367,42 @@ public final class Messages {
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
-          certRequest_ = s;
+          requesterId_ = s;
         }
         return s;
       }
     }
     /**
-     * <code>required string certRequest = 2;</code>
+     * <code>required string requesterId = 2;</code>
      */
     public com.google.protobuf.ByteString
-        getCertRequestBytes() {
-      java.lang.Object ref = certRequest_;
+        getRequesterIdBytes() {
+      java.lang.Object ref = requesterId_;
       if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        certRequest_ = b;
+        requesterId_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
       }
     }
 
-    // required string passPhrase = 3;
-    public static final int PASSPHRASE_FIELD_NUMBER = 3;
-    private java.lang.Object passPhrase_;
+    // required string password = 3;
+    public static final int PASSWORD_FIELD_NUMBER = 3;
+    private java.lang.Object password_;
     /**
-     * <code>required string passPhrase = 3;</code>
+     * <code>required string password = 3;</code>
      */
-    public boolean hasPassPhrase() {
+    public boolean hasPassword() {
       return ((bitField0_ & 0x00000004) == 0x00000004);
     }
     /**
-     * <code>required string passPhrase = 3;</code>
+     * <code>required string password = 3;</code>
      */
-    public java.lang.String getPassPhrase() {
-      java.lang.Object ref = passPhrase_;
+    public java.lang.String getPassword() {
+      java.lang.Object ref = password_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
@@ -25390,22 +25410,65 @@ public final class Messages {
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
         if (bs.isValidUtf8()) {
-          passPhrase_ = s;
+          password_ = s;
         }
         return s;
       }
     }
     /**
-     * <code>required string passPhrase = 3;</code>
+     * <code>required string password = 3;</code>
      */
     public com.google.protobuf.ByteString
-        getPassPhraseBytes() {
-      java.lang.Object ref = passPhrase_;
+        getPasswordBytes() {
+      java.lang.Object ref = password_;
       if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        passPhrase_ = b;
+        password_ = b;
+        return b;
+      } else {
+        return (com.google.protobuf.ByteString) ref;
+      }
+    }
+
+    // required string type = 4;
+    public static final int TYPE_FIELD_NUMBER = 4;
+    private java.lang.Object type_;
+    /**
+     * <code>required string type = 4;</code>
+     */
+    public boolean hasType() {
+      return ((bitField0_ & 0x00000008) == 0x00000008);
+    }
+    /**
+     * <code>required string type = 4;</code>
+     */
+    public java.lang.String getType() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        return (java.lang.String) ref;
+      } else {
+        com.google.protobuf.ByteString bs = 
+            (com.google.protobuf.ByteString) ref;
+        java.lang.String s = bs.toStringUtf8();
+        if (bs.isValidUtf8()) {
+          type_ = s;
+        }
+        return s;
+      }
+    }
+    /**
+     * <code>required string type = 4;</code>
+     */
+    public com.google.protobuf.ByteString
+        getTypeBytes() {
+      java.lang.Object ref = type_;
+      if (ref instanceof java.lang.String) {
+        com.google.protobuf.ByteString b = 
+            com.google.protobuf.ByteString.copyFromUtf8(
+                (java.lang.String) ref);
+        type_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
@@ -25414,23 +25477,24 @@ public final class Messages {
 
     private void initFields() {
       hostname_ = "";
-      certRequest_ = "";
-      passPhrase_ = "";
+      requesterId_ = "";
+      password_ = "";
+      type_ = "";
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized != -1) return isInitialized == 1;
 
-      if (!hasHostname()) {
+      if (!hasRequesterId()) {
         memoizedIsInitialized = 0;
         return false;
       }
-      if (!hasCertRequest()) {
+      if (!hasPassword()) {
         memoizedIsInitialized = 0;
         return false;
       }
-      if (!hasPassPhrase()) {
+      if (!hasType()) {
         memoizedIsInitialized = 0;
         return false;
       }
@@ -25445,10 +25509,13 @@ public final class Messages {
         output.writeBytes(1, getHostnameBytes());
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getCertRequestBytes());
+        output.writeBytes(2, getRequesterIdBytes());
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getPassPhraseBytes());
+        output.writeBytes(3, getPasswordBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        output.writeBytes(4, getTypeBytes());
       }
       getUnknownFields().writeTo(output);
     }
@@ -25465,11 +25532,15 @@ public final class Messages {
       }
       if (((bitField0_ & 0x00000002) == 0x00000002)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getCertRequestBytes());
+          .computeBytesSize(2, getRequesterIdBytes());
       }
       if (((bitField0_ & 0x00000004) == 0x00000004)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getPassPhraseBytes());
+          .computeBytesSize(3, getPasswordBytes());
+      }
+      if (((bitField0_ & 0x00000008) == 0x00000008)) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeBytesSize(4, getTypeBytes());
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
@@ -25488,10 +25559,10 @@ public final class Messages {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof org.apache.slider.api.proto.Messages.SignCertificateRequestProto)) {
+      if (!(obj instanceof org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)) {
         return super.equals(obj);
       }
-      org.apache.slider.api.proto.Messages.SignCertificateRequestProto other = (org.apache.slider.api.proto.Messages.SignCertificateRequestProto) obj;
+      org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto other = (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto) obj;
 
       boolean result = true;
       result = result && (hasHostname() == other.hasHostname());
@@ -25499,15 +25570,20 @@ public final class Messages {
         result = result && getHostname()
             .equals(other.getHostname());
       }
-      result = result && (hasCertRequest() == other.hasCertRequest());
-      if (hasCertRequest()) {
-        result = result && getCertRequest()
-            .equals(other.getCertRequest());
+      result = result && (hasRequesterId() == other.hasRequesterId());
+      if (hasRequesterId()) {
+        result = result && getRequesterId()
+            .equals(other.getRequesterId());
       }
-      result = result && (hasPassPhrase() == other.hasPassPhrase());
-      if (hasPassPhrase()) {
-        result = result && getPassPhrase()
-            .equals(other.getPassPhrase());
+      result = result && (hasPassword() == other.hasPassword());
+      if (hasPassword()) {
+        result = result && getPassword()
+            .equals(other.getPassword());
+      }
+      result = result && (hasType() == other.hasType());
+      if (hasType()) {
+        result = result && getType()
+            .equals(other.getType());
       }
       result = result &&
           getUnknownFields().equals(other.getUnknownFields());
@@ -25526,66 +25602,70 @@ public final class Messages {
         hash = (37 * hash) + HOSTNAME_FIELD_NUMBER;
         hash = (53 * hash) + getHostname().hashCode();
       }
-      if (hasCertRequest()) {
-        hash = (37 * hash) + CERTREQUEST_FIELD_NUMBER;
-        hash = (53 * hash) + getCertRequest().hashCode();
+      if (hasRequesterId()) {
+        hash = (37 * hash) + REQUESTERID_FIELD_NUMBER;
+        hash = (53 * hash) + getRequesterId().hashCode();
+      }
+      if (hasPassword()) {
+        hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
+        hash = (53 * hash) + getPassword().hashCode();
       }
-      if (hasPassPhrase()) {
-        hash = (37 * hash) + PASSPHRASE_FIELD_NUMBER;
-        hash = (53 * hash) + getPassPhrase().hashCode();
+      if (hasType()) {
+        hash = (37 * hash) + TYPE_FIELD_NUMBER;
+        hash = (53 * hash) + getType().hashCode();
       }
       hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(byte[] data)
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(java.io.InputStream input)
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseFrom(input, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseDelimitedFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateRequestProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -25594,7 +25674,7 @@ public final class Messages {
 
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.apache.slider.api.proto.Messages.SignCertificateRequestProto prototype) {
+    public static Builder newBuilder(org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
@@ -25606,24 +25686,24 @@ public final class Messages {
       return builder;
     }
     /**
-     * Protobuf type {@code org.apache.slider.api.SignCertificateRequestProto}
+     * Protobuf type {@code org.apache.slider.api.GetCertificateStoreRequestProto}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.slider.api.proto.Messages.SignCertificateRequestProtoOrBuilder {
+       implements org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor;
       }
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.slider.api.proto.Messages.SignCertificateRequestProto.class, org.apache.slider.api.proto.Messages.SignCertificateRequestProto.Builder.class);
+                org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.class, org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.Builder.class);
       }
 
-      // Construct using org.apache.slider.api.proto.Messages.SignCertificateRequestProto.newBuilder()
+      // Construct using org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -25645,10 +25725,12 @@ public final class Messages {
         super.clear();
         hostname_ = "";
         bitField0_ = (bitField0_ & ~0x00000001);
-        certRequest_ = "";
+        requesterId_ = "";
         bitField0_ = (bitField0_ & ~0x00000002);
-        passPhrase_ = "";
+        password_ = "";
         bitField0_ = (bitField0_ & ~0x00000004);
+        type_ = "";
+        bitField0_ = (bitField0_ & ~0x00000008);
         return this;
       }
 
@@ -25658,23 +25740,23 @@ public final class Messages {
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor;
       }
 
-      public org.apache.slider.api.proto.Messages.SignCertificateRequestProto getDefaultInstanceForType() {
-        return org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance();
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto getDefaultInstanceForType() {
+        return org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance();
       }
 
-      public org.apache.slider.api.proto.Messages.SignCertificateRequestProto build() {
-        org.apache.slider.api.proto.Messages.SignCertificateRequestProto result = buildPartial();
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto build() {
+        org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      public org.apache.slider.api.proto.Messages.SignCertificateRequestProto buildPartial() {
-        org.apache.slider.api.proto.Messages.SignCertificateRequestProto result = new org.apache.slider.api.proto.Messages.SignCertificateRequestProto(this);
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto buildPartial() {
+        org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto result = new org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto(this);
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -25684,40 +25766,49 @@ public final class Messages {
         if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
           to_bitField0_ |= 0x00000002;
         }
-        result.certRequest_ = certRequest_;
+        result.requesterId_ = requesterId_;
         if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
           to_bitField0_ |= 0x00000004;
         }
-        result.passPhrase_ = passPhrase_;
+        result.password_ = password_;
+        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+          to_bitField0_ |= 0x00000008;
+        }
+        result.type_ = type_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.slider.api.proto.Messages.SignCertificateRequestProto) {
-          return mergeFrom((org.apache.slider.api.proto.Messages.SignCertificateRequestProto)other);
+        if (other instanceof org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto) {
+          return mergeFrom((org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.slider.api.proto.Messages.SignCertificateRequestProto other) {
-        if (other == org.apache.slider.api.proto.Messages.SignCertificateRequestProto.getDefaultInstance()) return this;
+      public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto other) {
+        if (other == org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto.getDefaultInstance()) return this;
         if (other.hasHostname()) {
           bitField0_ |= 0x00000001;
           hostname_ = other.hostname_;
           onChanged();
         }
-        if (other.hasCertRequest()) {
+        if (other.hasRequesterId()) {
           bitField0_ |= 0x00000002;
-          certRequest_ = other.certRequest_;
+          requesterId_ = other.requesterId_;
           onChanged();
         }
-        if (other.hasPassPhrase()) {
+        if (other.hasPassword()) {
           bitField0_ |= 0x00000004;
-          passPhrase_ = other.passPhrase_;
+          password_ = other.password_;
+          onChanged();
+        }
+        if (other.hasType()) {
+          bitField0_ |= 0x00000008;
+          type_ = other.type_;
           onChanged();
         }
         this.mergeUnknownFields(other.getUnknownFields());
@@ -25725,15 +25816,15 @@ public final class Messages {
       }
 
       public final boolean isInitialized() {
-        if (!hasHostname()) {
+        if (!hasRequesterId()) {
           
           return false;
         }
-        if (!hasCertRequest()) {
+        if (!hasPassword()) {
           
           return false;
         }
-        if (!hasPassPhrase()) {
+        if (!hasType()) {
           
           return false;
         }
@@ -25744,11 +25835,11 @@ public final class Messages {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.slider.api.proto.Messages.SignCertificateRequestProto parsedMessage = null;
+        org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.slider.api.proto.Messages.SignCertificateRequestProto) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.slider.api.proto.Messages.GetCertificateStoreRequestProto) e.getUnfinishedMessage();
           throw e;
         } finally {
           if (parsedMessage != null) {
@@ -25759,16 +25850,16 @@ public final class Messages {
       }
       private int bitField0_;
 
-      // required string hostname = 1;
+      // optional string hostname = 1;
       private java.lang.Object hostname_ = "";
       /**
-       * <code>required string hostname = 1;</code>
+       * <code>optional string hostname = 1;</code>
        */
       public boolean hasHostname() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>required string hostname = 1;</code>
+       * <code>optional string hostname = 1;</code>
        */
       public java.lang.String getHostname() {
         java.lang.Object ref = hostname_;
@@ -25782,7 +25873,7 @@ public final class Messages {
         }
       }
       /**
-       * <code>required string hostname = 1;</code>
+       * <code>optional string hostname = 1;</code>
        */
       public com.google.protobuf.ByteString
           getHostnameBytes() {
@@ -25798,7 +25889,7 @@ public final class Messages {
         }
       }
       /**
-       * <code>required string hostname = 1;</code>
+       * <code>optional string hostname = 1;</code>
        */
       public Builder setHostname(
           java.lang.String value) {
@@ -25811,7 +25902,7 @@ public final class Messages {
         return this;
       }
       /**
-       * <code>required string hostname = 1;</code>
+       * <code>optional string hostname = 1;</code>
        */
       public Builder clearHostname() {
         bitField0_ = (bitField0_ & ~0x00000001);
@@ -25820,7 +25911,7 @@ public final class Messages {
         return this;
       }
       /**
-       * <code>required string hostname = 1;</code>
+       * <code>optional string hostname = 1;</code>
        */
       public Builder setHostnameBytes(
           com.google.protobuf.ByteString value) {
@@ -25833,232 +25924,271 @@ public final class Messages {
         return this;
       }
 
-      // required string certRequest = 2;
-      private java.lang.Object certRequest_ = "";
+      // required string requesterId = 2;
+      private java.lang.Object requesterId_ = "";
       /**
-       * <code>required string certRequest = 2;</code>
+       * <code>required string requesterId = 2;</code>
        */
-      public boolean hasCertRequest() {
+      public boolean hasRequesterId() {
         return ((bitField0_ & 0x00000002) == 0x00000002);
       }
       /**
-       * <code>required string certRequest = 2;</code>
+       * <code>required string requesterId = 2;</code>
        */
-      public java.lang.String getCertRequest() {
-        java.lang.Object ref = certRequest_;
+      public java.lang.String getRequesterId() {
+        java.lang.Object ref = requesterId_;
         if (!(ref instanceof java.lang.String)) {
           java.lang.String s = ((com.google.protobuf.ByteString) ref)
               .toStringUtf8();
-          certRequest_ = s;
+          requesterId_ = s;
           return s;
         } else {
           return (java.lang.String) ref;
         }
       }
       /**
-       * <code>required string certRequest = 2;</code>
+       * <code>required string requesterId = 2;</code>
        */
       public com.google.protobuf.ByteString
-          getCertRequestBytes() {
-        java.lang.Object ref = certRequest_;
+          getRequesterIdBytes() {
+        java.lang.Object ref = requesterId_;
         if (ref instanceof String) {
           com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
-          certRequest_ = b;
+          requesterId_ = b;
           return b;
         } else {
           return (com.google.protobuf.ByteString) ref;
         }
       }
       /**
-       * <code>required string certRequest = 2;</code>
+       * <code>required string requesterId = 2;</code>
        */
-      public Builder setCertRequest(
+      public Builder setRequesterId(
           java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
   bitField0_ |= 0x00000002;
-        certRequest_ = value;
+        requesterId_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>required string certRequest = 2;</code>
+       * <code>required string requesterId = 2;</code>
        */
-      public Builder clearCertRequest() {
+      public Builder clearRequesterId() {
         bitField0_ = (bitField0_ & ~0x00000002);
-        certRequest_ = getDefaultInstance().getCertRequest();
+        requesterId_ = getDefaultInstance().getRequesterId();
         onChanged();
         return this;
       }
       /**
-       * <code>required string certRequest = 2;</code>
+       * <code>required string requesterId = 2;</code>
        */
-      public Builder setCertRequestBytes(
+      public Builder setRequesterIdBytes(
           com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
   bitField0_ |= 0x00000002;
-        certRequest_ = value;
+        requesterId_ = value;
         onChanged();
         return this;
       }
 
-      // required string passPhrase = 3;
-      private java.lang.Object passPhrase_ = "";
+      // required string password = 3;
+      private java.lang.Object password_ = "";
       /**
-       * <code>required string passPhrase = 3;</code>
+       * <code>required string password = 3;</code>
        */
-      public boolean hasPassPhrase() {
+      public boolean hasPassword() {
         return ((bitField0_ & 0x00000004) == 0x00000004);
       }
       /**
-       * <code>required string passPhrase = 3;</code>
+       * <code>required string password = 3;</code>
        */
-      public java.lang.String getPassPhrase() {
-        java.lang.Object ref = passPhrase_;
+      public java.lang.String getPassword() {
+        java.lang.Object ref = password_;
         if (!(ref instanceof java.lang.String)) {
           java.lang.String s = ((com.google.protobuf.ByteString) ref)
               .toStringUtf8();
-          passPhrase_ = s;
+          password_ = s;
           return s;
         } else {
           return (java.lang.String) ref;
         }
       }
       /**
-       * <code>required string passPhrase = 3;</code>
+       * <code>required string password = 3;</code>
        */
       public com.google.protobuf.ByteString
-          getPassPhraseBytes() {
-        java.lang.Object ref = passPhrase_;
+          getPasswordBytes() {
+        java.lang.Object ref = password_;
         if (ref instanceof String) {
           com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
-          passPhrase_ = b;
+          password_ = b;
           return b;
         } else {
           return (com.google.protobuf.ByteString) ref;
         }
       }
       /**
-       * <code>required string passPhrase = 3;</code>
+       * <code>required string password = 3;</code>
        */
-      public Builder setPassPhrase(
+      public Builder setPassword(
           java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
   bitField0_ |= 0x00000004;
-        passPhrase_ = value;
+        password_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>required string passPhrase = 3;</code>
+       * <code>required string password = 3;</code>
        */
-      public Builder clearPassPhrase() {
+      public Builder clearPassword() {
         bitField0_ = (bitField0_ & ~0x00000004);
-        passPhrase_ = getDefaultInstance().getPassPhrase();
+        password_ = getDefaultInstance().getPassword();
         onChanged();
         return this;
       }
       /**
-       * <code>required string passPhrase = 3;</code>
+       * <code>required string password = 3;</code>
        */
-      public Builder setPassPhraseBytes(
+      public Builder setPasswordBytes(
           com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
   bitField0_ |= 0x00000004;
-        passPhrase_ = value;
+        password_ = value;
+        onChanged();
+        return this;
+      }
+
+      // required string type = 4;
+      private java.lang.Object type_ = "";
+      /**
+       * <code>required string type = 4;</code>
+       */
+      public boolean hasType() {
+        return ((bitField0_ & 0x00000008) == 0x00000008);
+      }
+      /**
+       * <code>required string type = 4;</code>
+       */
+      public java.lang.String getType() {
+        java.lang.Object ref = type_;
+        if (!(ref instanceof java.lang.String)) {
+          java.lang.String s = ((com.google.protobuf.ByteString) ref)
+              .toStringUtf8();
+          type_ = s;
+          return s;
+        } else {
+          return (java.lang.String) ref;
+        }
+      }
+      /**
+       * <code>required string type = 4;</code>
+       */
+      public com.google.protobuf.ByteString
+          getTypeBytes() {
+        java.lang.Object ref = type_;
+        if (ref instanceof String) {
+          com.google.protobuf.ByteString b = 
+              com.google.protobuf.ByteString.copyFromUtf8(
+                  (java.lang.String) ref);
+          type_ = b;
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+      /**
+       * <code>required string type = 4;</code>
+       */
+      public Builder setType(
+          java.lang.String value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        type_ = value;
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string type = 4;</code>
+       */
+      public Builder clearType() {
+        bitField0_ = (bitField0_ & ~0x00000008);
+        type_ = getDefaultInstance().getType();
+        onChanged();
+        return this;
+      }
+      /**
+       * <code>required string type = 4;</code>
+       */
+      public Builder setTypeBytes(
+          com.google.protobuf.ByteString value) {
+        if (value == null) {
+    throw new NullPointerException();
+  }
+  bitField0_ |= 0x00000008;
+        type_ = value;
         onChanged();
         return this;
       }
 
-      // @@protoc_insertion_point(builder_scope:org.apache.slider.api.SignCertificateRequestProto)
+      // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetCertificateStoreRequestProto)
     }
 
     static {
-      defaultInstance = new SignCertificateRequestProto(true);
+      defaultInstance = new GetCertificateStoreRequestProto(true);
       defaultInstance.initFields();
     }
 
-    // @@protoc_insertion_point(class_scope:org.apache.slider.api.SignCertificateRequestProto)
+    // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetCertificateStoreRequestProto)
   }
 
-  public interface SignCertificateResponseProtoOrBuilder
+  public interface GetCertificateStoreResponseProtoOrBuilder
       extends com.google.protobuf.MessageOrBuilder {
 
-    // required string result = 1;
-    /**
-     * <code>required string result = 1;</code>
-     */
-    boolean hasResult();
-    /**
-     * <code>required string result = 1;</code>
-     */
-    java.lang.String getResult();
-    /**
-     * <code>required string result = 1;</code>
-     */
-    com.google.protobuf.ByteString
-        getResultBytes();
-
-    // required string signedCertificate = 2;
-    /**
-     * <code>required string signedCertificate = 2;</code>
-     */
-    boolean hasSignedCertificate();
-    /**
-     * <code>required string signedCertificate = 2;</code>
-     */
-    java.lang.String getSignedCertificate();
-    /**
-     * <code>required string signedCertificate = 2;</code>
-     */
-    com.google.protobuf.ByteString
-        getSignedCertificateBytes();
-
-    // required string signingMessage = 3;
-    /**
-     * <code>required string signingMessage = 3;</code>
-     */
-    boolean hasSigningMessage();
+    // required bytes store = 1;
     /**
-     * <code>required string signingMessage = 3;</code>
+     * <code>required bytes store = 1;</code>
      */
-    java.lang.String getSigningMessage();
+    boolean hasStore();
     /**
-     * <code>required string signingMessage = 3;</code>
+     * <code>required bytes store = 1;</code>
      */
-    com.google.protobuf.ByteString
-        getSigningMessageBytes();
+    com.google.protobuf.ByteString getStore();
   }
   /**
-   * Protobuf type {@code org.apache.slider.api.SignCertificateResponseProto}
+   * Protobuf type {@code org.apache.slider.api.GetCertificateStoreResponseProto}
    */
-  public static final class SignCertificateResponseProto extends
+  public static final class GetCertificateStoreResponseProto extends
       com.google.protobuf.GeneratedMessage
-      implements SignCertificateResponseProtoOrBuilder {
-    // Use SignCertificateResponseProto.newBuilder() to construct.
-    private SignCertificateResponseProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
+      implements GetCertificateStoreResponseProtoOrBuilder {
+    // Use GetCertificateStoreResponseProto.newBuilder() to construct.
+    private GetCertificateStoreResponseProto(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
       super(builder);
       this.unknownFields = builder.getUnknownFields();
     }
-    private SignCertificateResponseProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
+    private GetCertificateStoreResponseProto(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
 
-    private static final SignCertificateResponseProto defaultInstance;
-    public static SignCertificateResponseProto getDefaultInstance() {
+    private static final GetCertificateStoreResponseProto defaultInstance;
+    public static GetCertificateStoreResponseProto getDefaultInstance() {
       return defaultInstance;
     }
 
-    public SignCertificateResponseProto getDefaultInstanceForType() {
+    public GetCertificateStoreResponseProto getDefaultInstanceForType() {
       return defaultInstance;
     }
 
@@ -26068,7 +26198,7 @@ public final class Messages {
         getUnknownFields() {
       return this.unknownFields;
     }
-    private SignCertificateResponseProto(
+    private GetCertificateStoreResponseProto(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -26093,17 +26223,7 @@ public final class Messages {
             }
             case 10: {
               bitField0_ |= 0x00000001;
-              result_ = input.readBytes();
-              break;
-            }
-            case 18: {
-              bitField0_ |= 0x00000002;
-              signedCertificate_ = input.readBytes();
-              break;
-            }
-            case 26: {
-              bitField0_ |= 0x00000004;
-              signingMessage_ = input.readBytes();
+              store_ = input.readBytes();
               break;
             }
           }
@@ -26120,180 +26240,57 @@ public final class Messages {
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor;
     }
 
     protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable
+      return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              org.apache.slider.api.proto.Messages.SignCertificateResponseProto.class, org.apache.slider.api.proto.Messages.SignCertificateResponseProto.Builder.class);
+              org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.class, org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.Builder.class);
     }
 
-    public static com.google.protobuf.Parser<SignCertificateResponseProto> PARSER =
-        new com.google.protobuf.AbstractParser<SignCertificateResponseProto>() {
-      public SignCertificateResponseProto parsePartialFrom(
+    public static com.google.protobuf.Parser<GetCertificateStoreResponseProto> PARSER =
+        new com.google.protobuf.AbstractParser<GetCertificateStoreResponseProto>() {
+      public GetCertificateStoreResponseProto parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new SignCertificateResponseProto(input, extensionRegistry);
+        return new GetCertificateStoreResponseProto(input, extensionRegistry);
       }
     };
 
     @java.lang.Override
-    public com.google.protobuf.Parser<SignCertificateResponseProto> getParserForType() {
+    public com.google.protobuf.Parser<GetCertificateStoreResponseProto> getParserForType() {
       return PARSER;
     }
 
     private int bitField0_;
-    // required string result = 1;
-    public static final int RESULT_FIELD_NUMBER = 1;
-    private java.lang.Object result_;
+    // required bytes store = 1;
+    public static final int STORE_FIELD_NUMBER = 1;
+    private com.google.protobuf.ByteString store_;
     /**
-     * <code>required string result = 1;</code>
+     * <code>required bytes store = 1;</code>
      */
-    public boolean hasResult() {
+    public boolean hasStore() {
       return ((bitField0_ & 0x00000001) == 0x00000001);
     }
     /**
-     * <code>required string result = 1;</code>
-     */
-    public java.lang.String getResult() {
-      java.lang.Object ref = result_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          result_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>required string result = 1;</code>
-     */
-    public com.google.protobuf.ByteString
-        getResultBytes() {
-      java.lang.Object ref = result_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        result_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    // required string signedCertificate = 2;
-    public static final int SIGNEDCERTIFICATE_FIELD_NUMBER = 2;
-    private java.lang.Object signedCertificate_;
-    /**
-     * <code>required string signedCertificate = 2;</code>
-     */
-    public boolean hasSignedCertificate() {
-      return ((bitField0_ & 0x00000002) == 0x00000002);
-    }
-    /**
-     * <code>required string signedCertificate = 2;</code>
-     */
-    public java.lang.String getSignedCertificate() {
-      java.lang.Object ref = signedCertificate_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          signedCertificate_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>required string signedCertificate = 2;</code>
-     */
-    public com.google.protobuf.ByteString
-        getSignedCertificateBytes() {
-      java.lang.Object ref = signedCertificate_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        signedCertificate_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
-    }
-
-    // required string signingMessage = 3;
-    public static final int SIGNINGMESSAGE_FIELD_NUMBER = 3;
-    private java.lang.Object signingMessage_;
-    /**
-     * <code>required string signingMessage = 3;</code>
-     */
-    public boolean hasSigningMessage() {
-      return ((bitField0_ & 0x00000004) == 0x00000004);
-    }
-    /**
-     * <code>required string signingMessage = 3;</code>
-     */
-    public java.lang.String getSigningMessage() {
-      java.lang.Object ref = signingMessage_;
-      if (ref instanceof java.lang.String) {
-        return (java.lang.String) ref;
-      } else {
-        com.google.protobuf.ByteString bs = 
-            (com.google.protobuf.ByteString) ref;
-        java.lang.String s = bs.toStringUtf8();
-        if (bs.isValidUtf8()) {
-          signingMessage_ = s;
-        }
-        return s;
-      }
-    }
-    /**
-     * <code>required string signingMessage = 3;</code>
+     * <code>required bytes store = 1;</code>
      */
-    public com.google.protobuf.ByteString
-        getSigningMessageBytes() {
-      java.lang.Object ref = signingMessage_;
-      if (ref instanceof java.lang.String) {
-        com.google.protobuf.ByteString b = 
-            com.google.protobuf.ByteString.copyFromUtf8(
-                (java.lang.String) ref);
-        signingMessage_ = b;
-        return b;
-      } else {
-        return (com.google.protobuf.ByteString) ref;
-      }
+    public com.google.protobuf.ByteString getStore() {
+      return store_;
     }
 
     private void initFields() {
-      result_ = "";
-      signedCertificate_ = "";
-      signingMessage_ = "";
+      store_ = com.google.protobuf.ByteString.EMPTY;
     }
     private byte memoizedIsInitialized = -1;
     public final boolean isInitialized() {
       byte isInitialized = memoizedIsInitialized;
       if (isInitialized != -1) return isInitialized == 1;
 
-      if (!hasResult()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasSignedCertificate()) {
-        memoizedIsInitialized = 0;
-        return false;
-      }
-      if (!hasSigningMessage()) {
+      if (!hasStore()) {
         memoizedIsInitialized = 0;
         return false;
       }
@@ -26305,13 +26302,7 @@ public final class Messages {
                         throws java.io.IOException {
       getSerializedSize();
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
-        output.writeBytes(1, getResultBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        output.writeBytes(2, getSignedCertificateBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        output.writeBytes(3, getSigningMessageBytes());
+        output.writeBytes(1, store_);
       }
       getUnknownFields().writeTo(output);
     }
@@ -26324,15 +26315,7 @@ public final class Messages {
       size = 0;
       if (((bitField0_ & 0x00000001) == 0x00000001)) {
         size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(1, getResultBytes());
-      }
-      if (((bitField0_ & 0x00000002) == 0x00000002)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(2, getSignedCertificateBytes());
-      }
-      if (((bitField0_ & 0x00000004) == 0x00000004)) {
-        size += com.google.protobuf.CodedOutputStream
-          .computeBytesSize(3, getSigningMessageBytes());
+          .computeBytesSize(1, store_);
       }
       size += getUnknownFields().getSerializedSize();
       memoizedSerializedSize = size;
@@ -26351,26 +26334,16 @@ public final class Messages {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof org.apache.slider.api.proto.Messages.SignCertificateResponseProto)) {
+      if (!(obj instanceof org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto)) {
         return super.equals(obj);
       }
-      org.apache.slider.api.proto.Messages.SignCertificateResponseProto other = (org.apache.slider.api.proto.Messages.SignCertificateResponseProto) obj;
+      org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto other = (org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto) obj;
 
       boolean result = true;
-      result = result && (hasResult() == other.hasResult());
-      if (hasResult()) {
-        result = result && getResult()
-            .equals(other.getResult());
-      }
-      result = result && (hasSignedCertificate() == other.hasSignedCertificate());
-      if (hasSignedCertificate()) {
-        result = result && getSignedCertificate()
-            .equals(other.getSignedCertificate());
-      }
-      result = result && (hasSigningMessage() == other.hasSigningMessage());
-      if (hasSigningMessage()) {
-        result = result && getSigningMessage()
-            .equals(other.getSigningMessage());
+      result = result && (hasStore() == other.hasStore());
+      if (hasStore()) {
+        result = result && getStore()
+            .equals(other.getStore());
       }
       result = result &&
           getUnknownFields().equals(other.getUnknownFields());
@@ -26385,70 +26358,62 @@ public final class Messages {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptorForType().hashCode();
-      if (hasResult()) {
-        hash = (37 * hash) + RESULT_FIELD_NUMBER;
-        hash = (53 * hash) + getResult().hashCode();
-      }
-      if (hasSignedCertificate()) {
-        hash = (37 * hash) + SIGNEDCERTIFICATE_FIELD_NUMBER;
-        hash = (53 * hash) + getSignedCertificate().hashCode();
-      }
-      if (hasSigningMessage()) {
-        hash = (37 * hash) + SIGNINGMESSAGE_FIELD_NUMBER;
-        hash = (53 * hash) + getSigningMessage().hashCode();
+      if (hasStore()) {
+        hash = (37 * hash) + STORE_FIELD_NUMBER;
+        hash = (53 * hash) + getStore().hashCode();
       }
       hash = (29 * hash) + getUnknownFields().hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(byte[] data)
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(java.io.InputStream input)
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseFrom(input, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseDelimitedFrom(java.io.InputStream input)
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseDelimitedFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return PARSER.parseDelimitedFrom(input, extensionRegistry);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return PARSER.parseFrom(input);
     }
-    public static org.apache.slider.api.proto.Messages.SignCertificateResponseProto parseFrom(
+    public static org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -26457,7 +26422,7 @@ public final class Messages {
 
     public static Builder newBuilder() { return Builder.create(); }
     public Builder newBuilderForType() { return newBuilder(); }
-    public static Builder newBuilder(org.apache.slider.api.proto.Messages.SignCertificateResponseProto prototype) {
+    public static Builder newBuilder(org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto prototype) {
       return newBuilder().mergeFrom(prototype);
     }
     public Builder toBuilder() { return newBuilder(this); }
@@ -26469,24 +26434,24 @@ public final class Messages {
       return builder;
     }
     /**
-     * Protobuf type {@code org.apache.slider.api.SignCertificateResponseProto}
+     * Protobuf type {@code org.apache.slider.api.GetCertificateStoreResponseProto}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessage.Builder<Builder>
-       implements org.apache.slider.api.proto.Messages.SignCertificateResponseProtoOrBuilder {
+       implements org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProtoOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor;
       }
 
       protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                org.apache.slider.api.proto.Messages.SignCertificateResponseProto.class, org.apache.slider.api.proto.Messages.SignCertificateResponseProto.Builder.class);
+                org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.class, org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.Builder.class);
       }
 
-      // Construct using org.apache.slider.api.proto.Messages.SignCertificateResponseProto.newBuilder()
+      // Construct using org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -26506,12 +26471,8 @@ public final class Messages {
 
       public Builder clear() {
         super.clear();
-        result_ = "";
+        store_ = com.google.protobuf.ByteString.EMPTY;
         bitField0_ = (bitField0_ & ~0x00000001);
-        signedCertificate_ = "";
-        bitField0_ = (bitField0_ & ~0x00000002);
-        signingMessage_ = "";
-        bitField0_ = (bitField0_ & ~0x00000004);
         return this;
       }
 
@@ -26521,82 +26482,54 @@ public final class Messages {
 
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+        return org.apache.slider.api.proto.Messages.internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor;
       }
 
-      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto getDefaultInstanceForType() {
-        return org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance();
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto getDefaultInstanceForType() {
+        return org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance();
       }
 
-      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto build() {
-        org.apache.slider.api.proto.Messages.SignCertificateResponseProto result = buildPartial();
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto build() {
+        org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
         return result;
       }
 
-      public org.apache.slider.api.proto.Messages.SignCertificateResponseProto buildPartial() {
-        org.apache.slider.api.proto.Messages.SignCertificateResponseProto result = new org.apache.slider.api.proto.Messages.SignCertificateResponseProto(this);
+      public org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto buildPartial() {
+        org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto result = new org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto(this);
         int from_bitField0_ = bitField0_;
         int to_bitField0_ = 0;
         if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
           to_bitField0_ |= 0x00000001;
         }
-        result.result_ = result_;
-        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
-          to_bitField0_ |= 0x00000002;
-        }
-        result.signedCertificate_ = signedCertificate_;
-        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
-          to_bitField0_ |= 0x00000004;
-        }
-        result.signingMessage_ = signingMessage_;
+        result.store_ = store_;
         result.bitField0_ = to_bitField0_;
         onBuilt();
         return result;
       }
 
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof org.apache.slider.api.proto.Messages.SignCertificateResponseProto) {
-          return mergeFrom((org.apache.slider.api.proto.Messages.SignCertificateResponseProto)other);
+        if (other instanceof org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto) {
+          return mergeFrom((org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(org.apache.slider.api.proto.Messages.SignCertificateResponseProto other) {
-        if (other == org.apache.slider.api.proto.Messages.SignCertificateResponseProto.getDefaultInstance()) return this;
-        if (other.hasResult()) {
-          bitField0_ |= 0x00000001;
-          result_ = other.result_;
-          onChanged();
-        }
-        if (other.hasSignedCertificate()) {
-          bitField0_ |= 0x00000002;
-          signedCertificate_ = other.signedCertificate_;
-          onChanged();
-        }
-        if (other.hasSigningMessage()) {
-          bitField0_ |= 0x00000004;
-          signingMessage_ = other.signingMessage_;
-          onChanged();
+      public Builder mergeFrom(org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto other) {
+        if (other == org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto.getDefaultInstance()) return this;
+        if (other.hasStore()) {
+          setStore(other.getStore());
         }
         this.mergeUnknownFields(other.getUnknownFields());
         return this;
       }
 
       public final boolean isInitialized() {
-        if (!hasResult()) {
-          
-          return false;
-        }
-        if (!hasSignedCertificate()) {
-          
-          return false;
-        }
-        if (!hasSigningMessage()) {
+        if (!hasStore()) {
           
           return false;
         }
@@ -26607,11 +26540,11 @@ public final class Messages {
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        org.apache.slider.api.proto.Messages.SignCertificateResponseProto parsedMessage = null;
+        org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (org.apache.slider.api.proto.Messages.SignCertificateResponseProto) e.getUnfinishedMessage();
+          parsedMessage = (org.apache.slider.api.proto.Messages.GetCertificateStoreResponseProto) e.getUnfinishedMessage();
           throw e;
         } finally {
           if (parsedMessage != null) {
@@ -26622,237 +26555,51 @@ public final class Messages {
       }
       private int bitField0_;
 
-      // required string result = 1;
-      private java.lang.Object result_ = "";
+      // required bytes store = 1;
+      private com.google.protobuf.ByteString store_ = com.google.protobuf.ByteString.EMPTY;
       /**
-       * <code>required string result = 1;</code>
+       * <code>required bytes store = 1;</code>
        */
-      public boolean hasResult() {
+      public boolean hasStore() {
         return ((bitField0_ & 0x00000001) == 0x00000001);
       }
       /**
-       * <code>required string result = 1;</code>
+       * <code>required bytes store = 1;</code>
        */
-      public java.lang.String getResult() {
-        java.lang.Object ref = result_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          result_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
+      public com.google.protobuf.ByteString getStore() {
+        return store_;
       }
       /**
-       * <code>required string result = 1;</code>
+       * <code>required bytes store = 1;</code>
        */
-      public com.google.protobuf.ByteString
-          getResultBytes() {
-        java.lang.Object ref = result_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          result_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string result = 1;</code>
-       */
-      public Builder setResult(
-          java.lang.String value) {
+      public Builder setStore(com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
   bitField0_ |= 0x00000001;
-        result_ = value;
+        store_ = value;
         onChanged();
         return this;
       }
       /**
-       * <code>required string result = 1;</code>
+       * <code>required bytes store = 1;</code>
        */
-      public Builder clearResult() {
+      public Builder clearStore() {
         bitField0_ = (bitField0_ & ~0x00000001);
-        result_ = getDefaultInstance().getResult();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string result = 1;</code>
-       */
-      public Builder setResultBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000001;
-        result_ = value;
-        onChanged();
-        return this;
-      }
-
-      // required string signedCertificate = 2;
-      private java.lang.Object signedCertificate_ = "";
-      /**
-       * <code>required string signedCertificate = 2;</code>
-       */
-      public boolean hasSignedCertificate() {
-        return ((bitField0_ & 0x00000002) == 0x00000002);
-      }
-      /**
-       * <code>required string signedCertificate = 2;</code>
-       */
-      public java.lang.String getSignedCertificate() {
-        java.lang.Object ref = signedCertificate_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          signedCertificate_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>required string signedCertificate = 2;</code>
-       */
-      public com.google.protobuf.ByteString
-          getSignedCertificateBytes() {
-        java.lang.Object ref = signedCertificate_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          signedCertificate_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string signedCertificate = 2;</code>
-       */
-      public Builder setSignedCertificate(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        signedCertificate_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string signedCertificate = 2;</code>
-       */
-      public Builder clearSignedCertificate() {
-        bitField0_ = (bitField0_ & ~0x00000002);
-        signedCertificate_ = getDefaultInstance().getSignedCertificate();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string signedCertificate = 2;</code>
-       */
-      public Builder setSignedCertificateBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000002;
-        signedCertificate_ = value;
-        onChanged();
-        return this;
-      }
-
-      // required string signingMessage = 3;
-      private java.lang.Object signingMessage_ = "";
-      /**
-       * <code>required string signingMessage = 3;</code>
-       */
-      public boolean hasSigningMessage() {
-        return ((bitField0_ & 0x00000004) == 0x00000004);
-      }
-      /**
-       * <code>required string signingMessage = 3;</code>
-       */
-      public java.lang.String getSigningMessage() {
-        java.lang.Object ref = signingMessage_;
-        if (!(ref instanceof java.lang.String)) {
-          java.lang.String s = ((com.google.protobuf.ByteString) ref)
-              .toStringUtf8();
-          signingMessage_ = s;
-          return s;
-        } else {
-          return (java.lang.String) ref;
-        }
-      }
-      /**
-       * <code>required string signingMessage = 3;</code>
-       */
-      public com.google.protobuf.ByteString
-          getSigningMessageBytes() {
-        java.lang.Object ref = signingMessage_;
-        if (ref instanceof String) {
-          com.google.protobuf.ByteString b = 
-              com.google.protobuf.ByteString.copyFromUtf8(
-                  (java.lang.String) ref);
-          signingMessage_ = b;
-          return b;
-        } else {
-          return (com.google.protobuf.ByteString) ref;
-        }
-      }
-      /**
-       * <code>required string signingMessage = 3;</code>
-       */
-      public Builder setSigningMessage(
-          java.lang.String value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        signingMessage_ = value;
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string signingMessage = 3;</code>
-       */
-      public Builder clearSigningMessage() {
-        bitField0_ = (bitField0_ & ~0x00000004);
-        signingMessage_ = getDefaultInstance().getSigningMessage();
-        onChanged();
-        return this;
-      }
-      /**
-       * <code>required string signingMessage = 3;</code>
-       */
-      public Builder setSigningMessageBytes(
-          com.google.protobuf.ByteString value) {
-        if (value == null) {
-    throw new NullPointerException();
-  }
-  bitField0_ |= 0x00000004;
-        signingMessage_ = value;
+        store_ = getDefaultInstance().getStore();
         onChanged();
         return this;
       }
 
-      // @@protoc_insertion_point(builder_scope:org.apache.slider.api.SignCertificateResponseProto)
+      // @@protoc_insertion_point(builder_scope:org.apache.slider.api.GetCertificateStoreResponseProto)
     }
 
     static {
-      defaultInstance = new SignCertificateResponseProto(true);
+      defaultInstance = new GetCertificateStoreResponseProto(true);
       defaultInstance.initFields();
     }
 
-    // @@protoc_insertion_point(class_scope:org.apache.slider.api.SignCertificateResponseProto)
+    // @@protoc_insertion_point(class_scope:org.apache.slider.api.GetCertificateStoreResponseProto)
   }
 
   private static com.google.protobuf.Descriptors.Descriptor
@@ -27061,15 +26808,15 @@ public final class Messages {
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
       internal_static_org_apache_slider_api_WrappedJsonProto_fieldAccessorTable;
   private static com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor;
+    internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable;
+      internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_fieldAccessorTable;
   private static com.google.protobuf.Descriptors.Descriptor
-    internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor;
+    internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor;
   private static
     com.google.protobuf.GeneratedMessage.FieldAccessorTable
-      internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable;
+      internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_fieldAccessorTable;
 
   public static com.google.protobuf.Descriptors.FileDescriptor
       getDescriptor() {
@@ -27148,13 +26895,12 @@ public final class Messages {
       "etLiveComponentRequestProto\022\014\n\004name\030\001 \002(" +
       "\t\"$\n\"GetApplicationLivenessRequestProto\"" +
       "\023\n\021EmptyPayloadProto\" \n\020WrappedJsonProto" +
-      "\022\014\n\004json\030\001 \002(\t\"X\n\033SignCertificateRequest",
-      "Proto\022\020\n\010hostname\030\001 \002(\t\022\023\n\013certRequest\030\002" +
-      " \002(\t\022\022\n\npassPhrase\030\003 \002(\t\"a\n\034SignCertific" +
-      "ateResponseProto\022\016\n\006result\030\001 \002(\t\022\031\n\021sign" +
-      "edCertificate\030\002 \002(\t\022\026\n\016signingMessage\030\003 " +
-      "\002(\tB-\n\033org.apache.slider.api.protoB\010Mess" +
-      "ages\210\001\001\240\001\001"
+      "\022\014\n\004json\030\001 \002(\t\"h\n\037GetCertificateStoreReq",
+      "uestProto\022\020\n\010hostname\030\001 \001(\t\022\023\n\013requester" +
+      "Id\030\002 \002(\t\022\020\n\010password\030\003 \002(\t\022\014\n\004type\030\004 \002(\t" +
+      "\"1\n GetCertificateStoreResponseProto\022\r\n\005" +
+      "store\030\001 \002(\014B-\n\033org.apache.slider.api.pro" +
+      "toB\010Messages\210\001\001\240\001\001"
     };
     com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
       new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
@@ -27407,18 +27153,18 @@ public final class Messages {
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
               internal_static_org_apache_slider_api_WrappedJsonProto_descriptor,
               new java.lang.String[] { "Json", });
-          internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor =
+          internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor =
             getDescriptor().getMessageTypes().get(41);
-          internal_static_org_apache_slider_api_SignCertificateRequestProto_fieldAccessorTable = new
+          internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_org_apache_slider_api_SignCertificateRequestProto_descriptor,
-              new java.lang.String[] { "Hostname", "CertRequest", "PassPhrase", });
-          internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor =
+              internal_static_org_apache_slider_api_GetCertificateStoreRequestProto_descriptor,
+              new java.lang.String[] { "Hostname", "RequesterId", "Password", "Type", });
+          internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor =
             getDescriptor().getMessageTypes().get(42);
-          internal_static_org_apache_slider_api_SignCertificateResponseProto_fieldAccessorTable = new
+          internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_fieldAccessorTable = new
             com.google.protobuf.GeneratedMessage.FieldAccessorTable(
-              internal_static_org_apache_slider_api_SignCertificateResponseProto_descriptor,
-              new java.lang.String[] { "Result", "SignedCertificate", "SigningMessage", });
+              internal_static_org_apache_slider_api_GetCertificateStoreResponseProto_descriptor,
+              new java.lang.String[] { "Store", });
           return null;
         }
       };

http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c1b83467/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
index f5dff8f..84a950d 100644
--- a/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
+++ b/slider-core/src/main/java/org/apache/slider/api/proto/RestTypeMarshalling.java
@@ -18,6 +18,8 @@
 
 package org.apache.slider.api.proto;
 
+import com.google.protobuf.ByteString;
+import org.apache.commons.io.IOUtils;
 import org.apache.slider.api.types.ApplicationLivenessInformation;
 import org.apache.slider.api.types.ComponentInformation;
 import org.apache.slider.api.types.ContainerInformation;
@@ -26,8 +28,12 @@ import org.apache.slider.core.conf.ConfTree;
 import org.apache.slider.core.conf.ConfTreeOperations;
 import org.apache.slider.core.persist.AggregateConfSerDeser;
 import org.apache.slider.core.persist.ConfTreeSerDeser;
+import org.apache.slider.server.services.security.SecurityStore;
 
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -80,6 +86,24 @@ public class RestTypeMarshalling {
     return info;
   }
 
+  public static Messages.GetCertificateStoreResponseProto marshall(
+      SecurityStore securityStore) throws IOException {
+    Messages.GetCertificateStoreResponseProto.Builder builder =
+        Messages.GetCertificateStoreResponseProto.newBuilder();
+    builder.setStore(ByteString.copyFrom(getStoreBytes(securityStore)));
+
+    return builder.build();
+  }
+
+  private static byte[] getStoreBytes(SecurityStore securityStore)
+      throws IOException {
+    InputStream is = new FileInputStream(securityStore.getFile());
+    return IOUtils.toByteArray(is);
+  }
+
+  public static byte[] unmarshall(Messages.GetCertificateStoreResponseProto response) {
+    return response.getStore().toByteArray();
+  }
 
   public static Messages.ComponentInformationProto
   marshall(ComponentInformation info) {


[4/4] incubator-slider git commit: Merge branch 'feature/SLIDER-802-cert-sign' into develop

Posted by jm...@apache.org.
Merge branch 'feature/SLIDER-802-cert-sign' into develop


Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/bf293b9d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/bf293b9d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/bf293b9d

Branch: refs/heads/develop
Commit: bf293b9df7dd06ee80a6c8876d0463da38e61a8f
Parents: 670bfb3 c1b8346
Author: Jon Maron <jm...@hortonworks.com>
Authored: Fri Mar 6 18:14:46 2015 -0800
Committer: Jon Maron <jm...@hortonworks.com>
Committed: Fri Mar 6 18:14:46 2015 -0800

----------------------------------------------------------------------
 .../slider/api/SliderClusterProtocol.java       |    5 +-
 .../org/apache/slider/api/proto/Messages.java   | 1503 +++++++++++++++++-
 .../slider/api/proto/RestTypeMarshalling.java   |   24 +
 .../slider/api/proto/SliderClusterAPI.java      |   81 +-
 .../org/apache/slider/client/SliderClient.java  |   83 +-
 .../apache/slider/client/SliderClientAPI.java   |    2 +-
 .../client/ipc/SliderClusterOperations.java     |   21 +-
 .../slider/common/params/ActionClientArgs.java  |   24 +
 .../apache/slider/common/params/Arguments.java  |    5 +
 .../slider/common/params/SliderActions.java     |    4 +-
 .../server/appmaster/SliderAppMaster.java       |    6 +-
 .../rpc/SliderClusterProtocolPBImpl.java        |   12 +
 .../rpc/SliderClusterProtocolProxy.java         |   10 +
 .../server/appmaster/rpc/SliderIPCService.java  |   36 +
 .../services/security/CertificateManager.java   |   28 +-
 .../src/main/proto/SliderClusterMessages.proto  |   11 +
 .../src/main/proto/SliderClusterProtocol.proto  |    5 +-
 .../agent/TestAgentClientProvider2.java         |    7 -
 .../AMClientCertStoreRetrievalIT.groovy         |  174 ++
 19 files changed, 2003 insertions(+), 38 deletions(-)
----------------------------------------------------------------------