All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.passkit.grpc.Certificate Maven / Gradle / Ivy

Go to download

SDK for the PassKit gRPC API that can be used to create, configure and manage Membership, Loyalty, Event Ticket, Coupon, Transit and Boarding Pass content for mobile wallet applications, including Apple Pay and Google Pay.

There is a newer version: 1.1.97
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: io/certificate/certificate.proto

package com.passkit.grpc;

public final class Certificate {
  private Certificate() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface CertificateDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.CertificateData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string passTypeId = 1;
     * @return The passTypeId.
     */
    java.lang.String getPassTypeId();
    /**
     * string passTypeId = 1;
     * @return The bytes for passTypeId.
     */
    com.google.protobuf.ByteString
        getPassTypeIdBytes();

    /**
     * string teamId = 2;
     * @return The teamId.
     */
    java.lang.String getTeamId();
    /**
     * string teamId = 2;
     * @return The bytes for teamId.
     */
    com.google.protobuf.ByteString
        getTeamIdBytes();

    /**
     * string teamName = 3;
     * @return The teamName.
     */
    java.lang.String getTeamName();
    /**
     * string teamName = 3;
     * @return The bytes for teamName.
     */
    com.google.protobuf.ByteString
        getTeamNameBytes();

    /**
     * string serialNumber = 4;
     * @return The serialNumber.
     */
    java.lang.String getSerialNumber();
    /**
     * string serialNumber = 4;
     * @return The bytes for serialNumber.
     */
    com.google.protobuf.ByteString
        getSerialNumberBytes();

    /**
     * .google.protobuf.Timestamp validFrom = 5;
     * @return Whether the validFrom field is set.
     */
    boolean hasValidFrom();
    /**
     * .google.protobuf.Timestamp validFrom = 5;
     * @return The validFrom.
     */
    com.google.protobuf.Timestamp getValidFrom();
    /**
     * .google.protobuf.Timestamp validFrom = 5;
     */
    com.google.protobuf.TimestampOrBuilder getValidFromOrBuilder();

    /**
     * .google.protobuf.Timestamp validTo = 6;
     * @return Whether the validTo field is set.
     */
    boolean hasValidTo();
    /**
     * .google.protobuf.Timestamp validTo = 6;
     * @return The validTo.
     */
    com.google.protobuf.Timestamp getValidTo();
    /**
     * .google.protobuf.Timestamp validTo = 6;
     */
    com.google.protobuf.TimestampOrBuilder getValidToOrBuilder();

    /**
     * string modulus = 7;
     * @return The modulus.
     */
    java.lang.String getModulus();
    /**
     * string modulus = 7;
     * @return The bytes for modulus.
     */
    com.google.protobuf.ByteString
        getModulusBytes();

    /**
     * bool nfcCapable = 8;
     * @return The nfcCapable.
     */
    boolean getNfcCapable();

    /**
     * string ownerUsername = 9;
     * @return The ownerUsername.
     */
    java.lang.String getOwnerUsername();
    /**
     * string ownerUsername = 9;
     * @return The bytes for ownerUsername.
     */
    com.google.protobuf.ByteString
        getOwnerUsernameBytes();
  }
  /**
   * Protobuf type {@code io.CertificateData}
   */
  public static final class CertificateData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.CertificateData)
      CertificateDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CertificateData.newBuilder() to construct.
    private CertificateData(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CertificateData() {
      passTypeId_ = "";
      teamId_ = "";
      teamName_ = "";
      serialNumber_ = "";
      modulus_ = "";
      ownerUsername_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CertificateData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CertificateData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              passTypeId_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              teamId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              teamName_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              serialNumber_ = s;
              break;
            }
            case 42: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (validFrom_ != null) {
                subBuilder = validFrom_.toBuilder();
              }
              validFrom_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(validFrom_);
                validFrom_ = subBuilder.buildPartial();
              }

              break;
            }
            case 50: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (validTo_ != null) {
                subBuilder = validTo_.toBuilder();
              }
              validTo_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(validTo_);
                validTo_ = subBuilder.buildPartial();
              }

              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();

              modulus_ = s;
              break;
            }
            case 64: {

              nfcCapable_ = input.readBool();
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();

              ownerUsername_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_CertificateData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_CertificateData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.CertificateData.class, com.passkit.grpc.Certificate.CertificateData.Builder.class);
    }

    public static final int PASSTYPEID_FIELD_NUMBER = 1;
    private volatile java.lang.Object passTypeId_;
    /**
     * string passTypeId = 1;
     * @return The passTypeId.
     */
    @java.lang.Override
    public java.lang.String getPassTypeId() {
      java.lang.Object ref = passTypeId_;
      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();
        passTypeId_ = s;
        return s;
      }
    }
    /**
     * string passTypeId = 1;
     * @return The bytes for passTypeId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPassTypeIdBytes() {
      java.lang.Object ref = passTypeId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        passTypeId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEAMID_FIELD_NUMBER = 2;
    private volatile java.lang.Object teamId_;
    /**
     * string teamId = 2;
     * @return The teamId.
     */
    @java.lang.Override
    public java.lang.String getTeamId() {
      java.lang.Object ref = teamId_;
      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();
        teamId_ = s;
        return s;
      }
    }
    /**
     * string teamId = 2;
     * @return The bytes for teamId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTeamIdBytes() {
      java.lang.Object ref = teamId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        teamId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TEAMNAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object teamName_;
    /**
     * string teamName = 3;
     * @return The teamName.
     */
    @java.lang.Override
    public java.lang.String getTeamName() {
      java.lang.Object ref = teamName_;
      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();
        teamName_ = s;
        return s;
      }
    }
    /**
     * string teamName = 3;
     * @return The bytes for teamName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTeamNameBytes() {
      java.lang.Object ref = teamName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        teamName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERIALNUMBER_FIELD_NUMBER = 4;
    private volatile java.lang.Object serialNumber_;
    /**
     * string serialNumber = 4;
     * @return The serialNumber.
     */
    @java.lang.Override
    public java.lang.String getSerialNumber() {
      java.lang.Object ref = serialNumber_;
      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();
        serialNumber_ = s;
        return s;
      }
    }
    /**
     * string serialNumber = 4;
     * @return The bytes for serialNumber.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSerialNumberBytes() {
      java.lang.Object ref = serialNumber_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serialNumber_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALIDFROM_FIELD_NUMBER = 5;
    private com.google.protobuf.Timestamp validFrom_;
    /**
     * .google.protobuf.Timestamp validFrom = 5;
     * @return Whether the validFrom field is set.
     */
    @java.lang.Override
    public boolean hasValidFrom() {
      return validFrom_ != null;
    }
    /**
     * .google.protobuf.Timestamp validFrom = 5;
     * @return The validFrom.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getValidFrom() {
      return validFrom_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validFrom_;
    }
    /**
     * .google.protobuf.Timestamp validFrom = 5;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getValidFromOrBuilder() {
      return getValidFrom();
    }

    public static final int VALIDTO_FIELD_NUMBER = 6;
    private com.google.protobuf.Timestamp validTo_;
    /**
     * .google.protobuf.Timestamp validTo = 6;
     * @return Whether the validTo field is set.
     */
    @java.lang.Override
    public boolean hasValidTo() {
      return validTo_ != null;
    }
    /**
     * .google.protobuf.Timestamp validTo = 6;
     * @return The validTo.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getValidTo() {
      return validTo_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validTo_;
    }
    /**
     * .google.protobuf.Timestamp validTo = 6;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getValidToOrBuilder() {
      return getValidTo();
    }

    public static final int MODULUS_FIELD_NUMBER = 7;
    private volatile java.lang.Object modulus_;
    /**
     * string modulus = 7;
     * @return The modulus.
     */
    @java.lang.Override
    public java.lang.String getModulus() {
      java.lang.Object ref = modulus_;
      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();
        modulus_ = s;
        return s;
      }
    }
    /**
     * string modulus = 7;
     * @return The bytes for modulus.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getModulusBytes() {
      java.lang.Object ref = modulus_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modulus_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NFCCAPABLE_FIELD_NUMBER = 8;
    private boolean nfcCapable_;
    /**
     * bool nfcCapable = 8;
     * @return The nfcCapable.
     */
    @java.lang.Override
    public boolean getNfcCapable() {
      return nfcCapable_;
    }

    public static final int OWNERUSERNAME_FIELD_NUMBER = 9;
    private volatile java.lang.Object ownerUsername_;
    /**
     * string ownerUsername = 9;
     * @return The ownerUsername.
     */
    @java.lang.Override
    public java.lang.String getOwnerUsername() {
      java.lang.Object ref = ownerUsername_;
      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();
        ownerUsername_ = s;
        return s;
      }
    }
    /**
     * string ownerUsername = 9;
     * @return The bytes for ownerUsername.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOwnerUsernameBytes() {
      java.lang.Object ref = ownerUsername_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ownerUsername_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getPassTypeIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, passTypeId_);
      }
      if (!getTeamIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, teamId_);
      }
      if (!getTeamNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, teamName_);
      }
      if (!getSerialNumberBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, serialNumber_);
      }
      if (validFrom_ != null) {
        output.writeMessage(5, getValidFrom());
      }
      if (validTo_ != null) {
        output.writeMessage(6, getValidTo());
      }
      if (!getModulusBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, modulus_);
      }
      if (nfcCapable_ != false) {
        output.writeBool(8, nfcCapable_);
      }
      if (!getOwnerUsernameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, ownerUsername_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getPassTypeIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, passTypeId_);
      }
      if (!getTeamIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, teamId_);
      }
      if (!getTeamNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, teamName_);
      }
      if (!getSerialNumberBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, serialNumber_);
      }
      if (validFrom_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getValidFrom());
      }
      if (validTo_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getValidTo());
      }
      if (!getModulusBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, modulus_);
      }
      if (nfcCapable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, nfcCapable_);
      }
      if (!getOwnerUsernameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, ownerUsername_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.CertificateData)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.CertificateData other = (com.passkit.grpc.Certificate.CertificateData) obj;

      if (!getPassTypeId()
          .equals(other.getPassTypeId())) return false;
      if (!getTeamId()
          .equals(other.getTeamId())) return false;
      if (!getTeamName()
          .equals(other.getTeamName())) return false;
      if (!getSerialNumber()
          .equals(other.getSerialNumber())) return false;
      if (hasValidFrom() != other.hasValidFrom()) return false;
      if (hasValidFrom()) {
        if (!getValidFrom()
            .equals(other.getValidFrom())) return false;
      }
      if (hasValidTo() != other.hasValidTo()) return false;
      if (hasValidTo()) {
        if (!getValidTo()
            .equals(other.getValidTo())) return false;
      }
      if (!getModulus()
          .equals(other.getModulus())) return false;
      if (getNfcCapable()
          != other.getNfcCapable()) return false;
      if (!getOwnerUsername()
          .equals(other.getOwnerUsername())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PASSTYPEID_FIELD_NUMBER;
      hash = (53 * hash) + getPassTypeId().hashCode();
      hash = (37 * hash) + TEAMID_FIELD_NUMBER;
      hash = (53 * hash) + getTeamId().hashCode();
      hash = (37 * hash) + TEAMNAME_FIELD_NUMBER;
      hash = (53 * hash) + getTeamName().hashCode();
      hash = (37 * hash) + SERIALNUMBER_FIELD_NUMBER;
      hash = (53 * hash) + getSerialNumber().hashCode();
      if (hasValidFrom()) {
        hash = (37 * hash) + VALIDFROM_FIELD_NUMBER;
        hash = (53 * hash) + getValidFrom().hashCode();
      }
      if (hasValidTo()) {
        hash = (37 * hash) + VALIDTO_FIELD_NUMBER;
        hash = (53 * hash) + getValidTo().hashCode();
      }
      hash = (37 * hash) + MODULUS_FIELD_NUMBER;
      hash = (53 * hash) + getModulus().hashCode();
      hash = (37 * hash) + NFCCAPABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getNfcCapable());
      hash = (37 * hash) + OWNERUSERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getOwnerUsername().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.CertificateData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.CertificateData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.CertificateData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.CertificateData)
        com.passkit.grpc.Certificate.CertificateDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_CertificateData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_CertificateData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.CertificateData.class, com.passkit.grpc.Certificate.CertificateData.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.CertificateData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        passTypeId_ = "";

        teamId_ = "";

        teamName_ = "";

        serialNumber_ = "";

        if (validFromBuilder_ == null) {
          validFrom_ = null;
        } else {
          validFrom_ = null;
          validFromBuilder_ = null;
        }
        if (validToBuilder_ == null) {
          validTo_ = null;
        } else {
          validTo_ = null;
          validToBuilder_ = null;
        }
        modulus_ = "";

        nfcCapable_ = false;

        ownerUsername_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_CertificateData_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.CertificateData getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.CertificateData.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.CertificateData build() {
        com.passkit.grpc.Certificate.CertificateData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.CertificateData buildPartial() {
        com.passkit.grpc.Certificate.CertificateData result = new com.passkit.grpc.Certificate.CertificateData(this);
        result.passTypeId_ = passTypeId_;
        result.teamId_ = teamId_;
        result.teamName_ = teamName_;
        result.serialNumber_ = serialNumber_;
        if (validFromBuilder_ == null) {
          result.validFrom_ = validFrom_;
        } else {
          result.validFrom_ = validFromBuilder_.build();
        }
        if (validToBuilder_ == null) {
          result.validTo_ = validTo_;
        } else {
          result.validTo_ = validToBuilder_.build();
        }
        result.modulus_ = modulus_;
        result.nfcCapable_ = nfcCapable_;
        result.ownerUsername_ = ownerUsername_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.CertificateData) {
          return mergeFrom((com.passkit.grpc.Certificate.CertificateData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.CertificateData other) {
        if (other == com.passkit.grpc.Certificate.CertificateData.getDefaultInstance()) return this;
        if (!other.getPassTypeId().isEmpty()) {
          passTypeId_ = other.passTypeId_;
          onChanged();
        }
        if (!other.getTeamId().isEmpty()) {
          teamId_ = other.teamId_;
          onChanged();
        }
        if (!other.getTeamName().isEmpty()) {
          teamName_ = other.teamName_;
          onChanged();
        }
        if (!other.getSerialNumber().isEmpty()) {
          serialNumber_ = other.serialNumber_;
          onChanged();
        }
        if (other.hasValidFrom()) {
          mergeValidFrom(other.getValidFrom());
        }
        if (other.hasValidTo()) {
          mergeValidTo(other.getValidTo());
        }
        if (!other.getModulus().isEmpty()) {
          modulus_ = other.modulus_;
          onChanged();
        }
        if (other.getNfcCapable() != false) {
          setNfcCapable(other.getNfcCapable());
        }
        if (!other.getOwnerUsername().isEmpty()) {
          ownerUsername_ = other.ownerUsername_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.CertificateData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.CertificateData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object passTypeId_ = "";
      /**
       * string passTypeId = 1;
       * @return The passTypeId.
       */
      public java.lang.String getPassTypeId() {
        java.lang.Object ref = passTypeId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          passTypeId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string passTypeId = 1;
       * @return The bytes for passTypeId.
       */
      public com.google.protobuf.ByteString
          getPassTypeIdBytes() {
        java.lang.Object ref = passTypeId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          passTypeId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string passTypeId = 1;
       * @param value The passTypeId to set.
       * @return This builder for chaining.
       */
      public Builder setPassTypeId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        passTypeId_ = value;
        onChanged();
        return this;
      }
      /**
       * string passTypeId = 1;
       * @return This builder for chaining.
       */
      public Builder clearPassTypeId() {
        
        passTypeId_ = getDefaultInstance().getPassTypeId();
        onChanged();
        return this;
      }
      /**
       * string passTypeId = 1;
       * @param value The bytes for passTypeId to set.
       * @return This builder for chaining.
       */
      public Builder setPassTypeIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        passTypeId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object teamId_ = "";
      /**
       * string teamId = 2;
       * @return The teamId.
       */
      public java.lang.String getTeamId() {
        java.lang.Object ref = teamId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          teamId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string teamId = 2;
       * @return The bytes for teamId.
       */
      public com.google.protobuf.ByteString
          getTeamIdBytes() {
        java.lang.Object ref = teamId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          teamId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string teamId = 2;
       * @param value The teamId to set.
       * @return This builder for chaining.
       */
      public Builder setTeamId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        teamId_ = value;
        onChanged();
        return this;
      }
      /**
       * string teamId = 2;
       * @return This builder for chaining.
       */
      public Builder clearTeamId() {
        
        teamId_ = getDefaultInstance().getTeamId();
        onChanged();
        return this;
      }
      /**
       * string teamId = 2;
       * @param value The bytes for teamId to set.
       * @return This builder for chaining.
       */
      public Builder setTeamIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        teamId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object teamName_ = "";
      /**
       * string teamName = 3;
       * @return The teamName.
       */
      public java.lang.String getTeamName() {
        java.lang.Object ref = teamName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          teamName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string teamName = 3;
       * @return The bytes for teamName.
       */
      public com.google.protobuf.ByteString
          getTeamNameBytes() {
        java.lang.Object ref = teamName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          teamName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string teamName = 3;
       * @param value The teamName to set.
       * @return This builder for chaining.
       */
      public Builder setTeamName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        teamName_ = value;
        onChanged();
        return this;
      }
      /**
       * string teamName = 3;
       * @return This builder for chaining.
       */
      public Builder clearTeamName() {
        
        teamName_ = getDefaultInstance().getTeamName();
        onChanged();
        return this;
      }
      /**
       * string teamName = 3;
       * @param value The bytes for teamName to set.
       * @return This builder for chaining.
       */
      public Builder setTeamNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        teamName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object serialNumber_ = "";
      /**
       * string serialNumber = 4;
       * @return The serialNumber.
       */
      public java.lang.String getSerialNumber() {
        java.lang.Object ref = serialNumber_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serialNumber_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string serialNumber = 4;
       * @return The bytes for serialNumber.
       */
      public com.google.protobuf.ByteString
          getSerialNumberBytes() {
        java.lang.Object ref = serialNumber_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serialNumber_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string serialNumber = 4;
       * @param value The serialNumber to set.
       * @return This builder for chaining.
       */
      public Builder setSerialNumber(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serialNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * string serialNumber = 4;
       * @return This builder for chaining.
       */
      public Builder clearSerialNumber() {
        
        serialNumber_ = getDefaultInstance().getSerialNumber();
        onChanged();
        return this;
      }
      /**
       * string serialNumber = 4;
       * @param value The bytes for serialNumber to set.
       * @return This builder for chaining.
       */
      public Builder setSerialNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serialNumber_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp validFrom_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> validFromBuilder_;
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       * @return Whether the validFrom field is set.
       */
      public boolean hasValidFrom() {
        return validFromBuilder_ != null || validFrom_ != null;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       * @return The validFrom.
       */
      public com.google.protobuf.Timestamp getValidFrom() {
        if (validFromBuilder_ == null) {
          return validFrom_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validFrom_;
        } else {
          return validFromBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      public Builder setValidFrom(com.google.protobuf.Timestamp value) {
        if (validFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validFrom_ = value;
          onChanged();
        } else {
          validFromBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      public Builder setValidFrom(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (validFromBuilder_ == null) {
          validFrom_ = builderForValue.build();
          onChanged();
        } else {
          validFromBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      public Builder mergeValidFrom(com.google.protobuf.Timestamp value) {
        if (validFromBuilder_ == null) {
          if (validFrom_ != null) {
            validFrom_ =
              com.google.protobuf.Timestamp.newBuilder(validFrom_).mergeFrom(value).buildPartial();
          } else {
            validFrom_ = value;
          }
          onChanged();
        } else {
          validFromBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      public Builder clearValidFrom() {
        if (validFromBuilder_ == null) {
          validFrom_ = null;
          onChanged();
        } else {
          validFrom_ = null;
          validFromBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      public com.google.protobuf.Timestamp.Builder getValidFromBuilder() {
        
        onChanged();
        return getValidFromFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      public com.google.protobuf.TimestampOrBuilder getValidFromOrBuilder() {
        if (validFromBuilder_ != null) {
          return validFromBuilder_.getMessageOrBuilder();
        } else {
          return validFrom_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : validFrom_;
        }
      }
      /**
       * .google.protobuf.Timestamp validFrom = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getValidFromFieldBuilder() {
        if (validFromBuilder_ == null) {
          validFromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getValidFrom(),
                  getParentForChildren(),
                  isClean());
          validFrom_ = null;
        }
        return validFromBuilder_;
      }

      private com.google.protobuf.Timestamp validTo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> validToBuilder_;
      /**
       * .google.protobuf.Timestamp validTo = 6;
       * @return Whether the validTo field is set.
       */
      public boolean hasValidTo() {
        return validToBuilder_ != null || validTo_ != null;
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       * @return The validTo.
       */
      public com.google.protobuf.Timestamp getValidTo() {
        if (validToBuilder_ == null) {
          return validTo_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validTo_;
        } else {
          return validToBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      public Builder setValidTo(com.google.protobuf.Timestamp value) {
        if (validToBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validTo_ = value;
          onChanged();
        } else {
          validToBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      public Builder setValidTo(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (validToBuilder_ == null) {
          validTo_ = builderForValue.build();
          onChanged();
        } else {
          validToBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      public Builder mergeValidTo(com.google.protobuf.Timestamp value) {
        if (validToBuilder_ == null) {
          if (validTo_ != null) {
            validTo_ =
              com.google.protobuf.Timestamp.newBuilder(validTo_).mergeFrom(value).buildPartial();
          } else {
            validTo_ = value;
          }
          onChanged();
        } else {
          validToBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      public Builder clearValidTo() {
        if (validToBuilder_ == null) {
          validTo_ = null;
          onChanged();
        } else {
          validTo_ = null;
          validToBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      public com.google.protobuf.Timestamp.Builder getValidToBuilder() {
        
        onChanged();
        return getValidToFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      public com.google.protobuf.TimestampOrBuilder getValidToOrBuilder() {
        if (validToBuilder_ != null) {
          return validToBuilder_.getMessageOrBuilder();
        } else {
          return validTo_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : validTo_;
        }
      }
      /**
       * .google.protobuf.Timestamp validTo = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getValidToFieldBuilder() {
        if (validToBuilder_ == null) {
          validToBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getValidTo(),
                  getParentForChildren(),
                  isClean());
          validTo_ = null;
        }
        return validToBuilder_;
      }

      private java.lang.Object modulus_ = "";
      /**
       * string modulus = 7;
       * @return The modulus.
       */
      public java.lang.String getModulus() {
        java.lang.Object ref = modulus_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modulus_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string modulus = 7;
       * @return The bytes for modulus.
       */
      public com.google.protobuf.ByteString
          getModulusBytes() {
        java.lang.Object ref = modulus_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modulus_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string modulus = 7;
       * @param value The modulus to set.
       * @return This builder for chaining.
       */
      public Builder setModulus(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modulus_ = value;
        onChanged();
        return this;
      }
      /**
       * string modulus = 7;
       * @return This builder for chaining.
       */
      public Builder clearModulus() {
        
        modulus_ = getDefaultInstance().getModulus();
        onChanged();
        return this;
      }
      /**
       * string modulus = 7;
       * @param value The bytes for modulus to set.
       * @return This builder for chaining.
       */
      public Builder setModulusBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modulus_ = value;
        onChanged();
        return this;
      }

      private boolean nfcCapable_ ;
      /**
       * bool nfcCapable = 8;
       * @return The nfcCapable.
       */
      @java.lang.Override
      public boolean getNfcCapable() {
        return nfcCapable_;
      }
      /**
       * bool nfcCapable = 8;
       * @param value The nfcCapable to set.
       * @return This builder for chaining.
       */
      public Builder setNfcCapable(boolean value) {
        
        nfcCapable_ = value;
        onChanged();
        return this;
      }
      /**
       * bool nfcCapable = 8;
       * @return This builder for chaining.
       */
      public Builder clearNfcCapable() {
        
        nfcCapable_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object ownerUsername_ = "";
      /**
       * string ownerUsername = 9;
       * @return The ownerUsername.
       */
      public java.lang.String getOwnerUsername() {
        java.lang.Object ref = ownerUsername_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ownerUsername_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string ownerUsername = 9;
       * @return The bytes for ownerUsername.
       */
      public com.google.protobuf.ByteString
          getOwnerUsernameBytes() {
        java.lang.Object ref = ownerUsername_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ownerUsername_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string ownerUsername = 9;
       * @param value The ownerUsername to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ownerUsername_ = value;
        onChanged();
        return this;
      }
      /**
       * string ownerUsername = 9;
       * @return This builder for chaining.
       */
      public Builder clearOwnerUsername() {
        
        ownerUsername_ = getDefaultInstance().getOwnerUsername();
        onChanged();
        return this;
      }
      /**
       * string ownerUsername = 9;
       * @param value The bytes for ownerUsername to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ownerUsername_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.CertificateData)
    }

    // @@protoc_insertion_point(class_scope:io.CertificateData)
    private static final com.passkit.grpc.Certificate.CertificateData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.CertificateData();
    }

    public static com.passkit.grpc.Certificate.CertificateData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public CertificateData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CertificateData(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.CertificateData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PrivateKeyRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.PrivateKeyRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string name = 1;
     * @return The name.
     */
    java.lang.String getName();
    /**
     * string name = 1;
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * string description = 2;
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * string description = 2;
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * .google.protobuf.Timestamp expiry = 3;
     * @return Whether the expiry field is set.
     */
    boolean hasExpiry();
    /**
     * .google.protobuf.Timestamp expiry = 3;
     * @return The expiry.
     */
    com.google.protobuf.Timestamp getExpiry();
    /**
     * .google.protobuf.Timestamp expiry = 3;
     */
    com.google.protobuf.TimestampOrBuilder getExpiryOrBuilder();

    /**
     * bytes privateKey = 4;
     * @return The privateKey.
     */
    com.google.protobuf.ByteString getPrivateKey();
  }
  /**
   * Protobuf type {@code io.PrivateKeyRequest}
   */
  public static final class PrivateKeyRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.PrivateKeyRequest)
      PrivateKeyRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PrivateKeyRequest.newBuilder() to construct.
    private PrivateKeyRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PrivateKeyRequest() {
      name_ = "";
      description_ = "";
      privateKey_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PrivateKeyRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PrivateKeyRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              description_ = s;
              break;
            }
            case 26: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (expiry_ != null) {
                subBuilder = expiry_.toBuilder();
              }
              expiry_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expiry_);
                expiry_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {

              privateKey_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.PrivateKeyRequest.class, com.passkit.grpc.Certificate.PrivateKeyRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * string name = 1;
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * string name = 1;
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 2;
    private volatile java.lang.Object description_;
    /**
     * string description = 2;
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * string description = 2;
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPIRY_FIELD_NUMBER = 3;
    private com.google.protobuf.Timestamp expiry_;
    /**
     * .google.protobuf.Timestamp expiry = 3;
     * @return Whether the expiry field is set.
     */
    @java.lang.Override
    public boolean hasExpiry() {
      return expiry_ != null;
    }
    /**
     * .google.protobuf.Timestamp expiry = 3;
     * @return The expiry.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getExpiry() {
      return expiry_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiry_;
    }
    /**
     * .google.protobuf.Timestamp expiry = 3;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getExpiryOrBuilder() {
      return getExpiry();
    }

    public static final int PRIVATEKEY_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString privateKey_;
    /**
     * bytes privateKey = 4;
     * @return The privateKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPrivateKey() {
      return privateKey_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (!getDescriptionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, description_);
      }
      if (expiry_ != null) {
        output.writeMessage(3, getExpiry());
      }
      if (!privateKey_.isEmpty()) {
        output.writeBytes(4, privateKey_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (!getDescriptionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, description_);
      }
      if (expiry_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getExpiry());
      }
      if (!privateKey_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, privateKey_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.PrivateKeyRequest)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.PrivateKeyRequest other = (com.passkit.grpc.Certificate.PrivateKeyRequest) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (hasExpiry() != other.hasExpiry()) return false;
      if (hasExpiry()) {
        if (!getExpiry()
            .equals(other.getExpiry())) return false;
      }
      if (!getPrivateKey()
          .equals(other.getPrivateKey())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      if (hasExpiry()) {
        hash = (37 * hash) + EXPIRY_FIELD_NUMBER;
        hash = (53 * hash) + getExpiry().hashCode();
      }
      hash = (37 * hash) + PRIVATEKEY_FIELD_NUMBER;
      hash = (53 * hash) + getPrivateKey().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.PrivateKeyRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.PrivateKeyRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.PrivateKeyRequest)
        com.passkit.grpc.Certificate.PrivateKeyRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.PrivateKeyRequest.class, com.passkit.grpc.Certificate.PrivateKeyRequest.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.PrivateKeyRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        description_ = "";

        if (expiryBuilder_ == null) {
          expiry_ = null;
        } else {
          expiry_ = null;
          expiryBuilder_ = null;
        }
        privateKey_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyRequest_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PrivateKeyRequest getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.PrivateKeyRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PrivateKeyRequest build() {
        com.passkit.grpc.Certificate.PrivateKeyRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PrivateKeyRequest buildPartial() {
        com.passkit.grpc.Certificate.PrivateKeyRequest result = new com.passkit.grpc.Certificate.PrivateKeyRequest(this);
        result.name_ = name_;
        result.description_ = description_;
        if (expiryBuilder_ == null) {
          result.expiry_ = expiry_;
        } else {
          result.expiry_ = expiryBuilder_.build();
        }
        result.privateKey_ = privateKey_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.PrivateKeyRequest) {
          return mergeFrom((com.passkit.grpc.Certificate.PrivateKeyRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.PrivateKeyRequest other) {
        if (other == com.passkit.grpc.Certificate.PrivateKeyRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          onChanged();
        }
        if (other.hasExpiry()) {
          mergeExpiry(other.getExpiry());
        }
        if (other.getPrivateKey() != com.google.protobuf.ByteString.EMPTY) {
          setPrivateKey(other.getPrivateKey());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.PrivateKeyRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.PrivateKeyRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * string name = 1;
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string name = 1;
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string name = 1;
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * string name = 1;
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * string name = 1;
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * string description = 2;
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string description = 2;
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string description = 2;
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        description_ = value;
        onChanged();
        return this;
      }
      /**
       * string description = 2;
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        
        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      /**
       * string description = 2;
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        description_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp expiry_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> expiryBuilder_;
      /**
       * .google.protobuf.Timestamp expiry = 3;
       * @return Whether the expiry field is set.
       */
      public boolean hasExpiry() {
        return expiryBuilder_ != null || expiry_ != null;
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       * @return The expiry.
       */
      public com.google.protobuf.Timestamp getExpiry() {
        if (expiryBuilder_ == null) {
          return expiry_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiry_;
        } else {
          return expiryBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      public Builder setExpiry(com.google.protobuf.Timestamp value) {
        if (expiryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expiry_ = value;
          onChanged();
        } else {
          expiryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      public Builder setExpiry(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (expiryBuilder_ == null) {
          expiry_ = builderForValue.build();
          onChanged();
        } else {
          expiryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      public Builder mergeExpiry(com.google.protobuf.Timestamp value) {
        if (expiryBuilder_ == null) {
          if (expiry_ != null) {
            expiry_ =
              com.google.protobuf.Timestamp.newBuilder(expiry_).mergeFrom(value).buildPartial();
          } else {
            expiry_ = value;
          }
          onChanged();
        } else {
          expiryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      public Builder clearExpiry() {
        if (expiryBuilder_ == null) {
          expiry_ = null;
          onChanged();
        } else {
          expiry_ = null;
          expiryBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      public com.google.protobuf.Timestamp.Builder getExpiryBuilder() {
        
        onChanged();
        return getExpiryFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      public com.google.protobuf.TimestampOrBuilder getExpiryOrBuilder() {
        if (expiryBuilder_ != null) {
          return expiryBuilder_.getMessageOrBuilder();
        } else {
          return expiry_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : expiry_;
        }
      }
      /**
       * .google.protobuf.Timestamp expiry = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getExpiryFieldBuilder() {
        if (expiryBuilder_ == null) {
          expiryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getExpiry(),
                  getParentForChildren(),
                  isClean());
          expiry_ = null;
        }
        return expiryBuilder_;
      }

      private com.google.protobuf.ByteString privateKey_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes privateKey = 4;
       * @return The privateKey.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPrivateKey() {
        return privateKey_;
      }
      /**
       * bytes privateKey = 4;
       * @param value The privateKey to set.
       * @return This builder for chaining.
       */
      public Builder setPrivateKey(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        privateKey_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes privateKey = 4;
       * @return This builder for chaining.
       */
      public Builder clearPrivateKey() {
        
        privateKey_ = getDefaultInstance().getPrivateKey();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.PrivateKeyRequest)
    }

    // @@protoc_insertion_point(class_scope:io.PrivateKeyRequest)
    private static final com.passkit.grpc.Certificate.PrivateKeyRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.PrivateKeyRequest();
    }

    public static com.passkit.grpc.Certificate.PrivateKeyRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public PrivateKeyRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PrivateKeyRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.PrivateKeyRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TLSCertificateRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.TLSCertificateRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * bytes certificate = 1;
     * @return The certificate.
     */
    com.google.protobuf.ByteString getCertificate();

    /**
     * bytes caChain = 2;
     * @return The caChain.
     */
    com.google.protobuf.ByteString getCaChain();

    /**
     * bytes privateKey = 3;
     * @return The privateKey.
     */
    com.google.protobuf.ByteString getPrivateKey();
  }
  /**
   * Protobuf type {@code io.TLSCertificateRequest}
   */
  public static final class TLSCertificateRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.TLSCertificateRequest)
      TLSCertificateRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TLSCertificateRequest.newBuilder() to construct.
    private TLSCertificateRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private TLSCertificateRequest() {
      certificate_ = com.google.protobuf.ByteString.EMPTY;
      caChain_ = com.google.protobuf.ByteString.EMPTY;
      privateKey_ = com.google.protobuf.ByteString.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TLSCertificateRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TLSCertificateRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {

              certificate_ = input.readBytes();
              break;
            }
            case 18: {

              caChain_ = input.readBytes();
              break;
            }
            case 26: {

              privateKey_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.TLSCertificateRequest.class, com.passkit.grpc.Certificate.TLSCertificateRequest.Builder.class);
    }

    public static final int CERTIFICATE_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString certificate_;
    /**
     * bytes certificate = 1;
     * @return The certificate.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getCertificate() {
      return certificate_;
    }

    public static final int CACHAIN_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString caChain_;
    /**
     * bytes caChain = 2;
     * @return The caChain.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getCaChain() {
      return caChain_;
    }

    public static final int PRIVATEKEY_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString privateKey_;
    /**
     * bytes privateKey = 3;
     * @return The privateKey.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPrivateKey() {
      return privateKey_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!certificate_.isEmpty()) {
        output.writeBytes(1, certificate_);
      }
      if (!caChain_.isEmpty()) {
        output.writeBytes(2, caChain_);
      }
      if (!privateKey_.isEmpty()) {
        output.writeBytes(3, privateKey_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!certificate_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, certificate_);
      }
      if (!caChain_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, caChain_);
      }
      if (!privateKey_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, privateKey_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.TLSCertificateRequest)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.TLSCertificateRequest other = (com.passkit.grpc.Certificate.TLSCertificateRequest) obj;

      if (!getCertificate()
          .equals(other.getCertificate())) return false;
      if (!getCaChain()
          .equals(other.getCaChain())) return false;
      if (!getPrivateKey()
          .equals(other.getPrivateKey())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CERTIFICATE_FIELD_NUMBER;
      hash = (53 * hash) + getCertificate().hashCode();
      hash = (37 * hash) + CACHAIN_FIELD_NUMBER;
      hash = (53 * hash) + getCaChain().hashCode();
      hash = (37 * hash) + PRIVATEKEY_FIELD_NUMBER;
      hash = (53 * hash) + getPrivateKey().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.TLSCertificateRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.TLSCertificateRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.TLSCertificateRequest)
        com.passkit.grpc.Certificate.TLSCertificateRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.TLSCertificateRequest.class, com.passkit.grpc.Certificate.TLSCertificateRequest.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.TLSCertificateRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        certificate_ = com.google.protobuf.ByteString.EMPTY;

        caChain_ = com.google.protobuf.ByteString.EMPTY;

        privateKey_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateRequest_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.TLSCertificateRequest getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.TLSCertificateRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.TLSCertificateRequest build() {
        com.passkit.grpc.Certificate.TLSCertificateRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.TLSCertificateRequest buildPartial() {
        com.passkit.grpc.Certificate.TLSCertificateRequest result = new com.passkit.grpc.Certificate.TLSCertificateRequest(this);
        result.certificate_ = certificate_;
        result.caChain_ = caChain_;
        result.privateKey_ = privateKey_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.TLSCertificateRequest) {
          return mergeFrom((com.passkit.grpc.Certificate.TLSCertificateRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.TLSCertificateRequest other) {
        if (other == com.passkit.grpc.Certificate.TLSCertificateRequest.getDefaultInstance()) return this;
        if (other.getCertificate() != com.google.protobuf.ByteString.EMPTY) {
          setCertificate(other.getCertificate());
        }
        if (other.getCaChain() != com.google.protobuf.ByteString.EMPTY) {
          setCaChain(other.getCaChain());
        }
        if (other.getPrivateKey() != com.google.protobuf.ByteString.EMPTY) {
          setPrivateKey(other.getPrivateKey());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.TLSCertificateRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.TLSCertificateRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private com.google.protobuf.ByteString certificate_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes certificate = 1;
       * @return The certificate.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getCertificate() {
        return certificate_;
      }
      /**
       * bytes certificate = 1;
       * @param value The certificate to set.
       * @return This builder for chaining.
       */
      public Builder setCertificate(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        certificate_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes certificate = 1;
       * @return This builder for chaining.
       */
      public Builder clearCertificate() {
        
        certificate_ = getDefaultInstance().getCertificate();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString caChain_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes caChain = 2;
       * @return The caChain.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getCaChain() {
        return caChain_;
      }
      /**
       * bytes caChain = 2;
       * @param value The caChain to set.
       * @return This builder for chaining.
       */
      public Builder setCaChain(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        caChain_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes caChain = 2;
       * @return This builder for chaining.
       */
      public Builder clearCaChain() {
        
        caChain_ = getDefaultInstance().getCaChain();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString privateKey_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes privateKey = 3;
       * @return The privateKey.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPrivateKey() {
        return privateKey_;
      }
      /**
       * bytes privateKey = 3;
       * @param value The privateKey to set.
       * @return This builder for chaining.
       */
      public Builder setPrivateKey(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        privateKey_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes privateKey = 3;
       * @return This builder for chaining.
       */
      public Builder clearPrivateKey() {
        
        privateKey_ = getDefaultInstance().getPrivateKey();
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.TLSCertificateRequest)
    }

    // @@protoc_insertion_point(class_scope:io.TLSCertificateRequest)
    private static final com.passkit.grpc.Certificate.TLSCertificateRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.TLSCertificateRequest();
    }

    public static com.passkit.grpc.Certificate.TLSCertificateRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public TLSCertificateRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TLSCertificateRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.TLSCertificateRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TLSCertificateDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.TLSCertificateData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string id = 1;
     * @return The id.
     */
    java.lang.String getId();
    /**
     * string id = 1;
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * string commonName = 2;
     * @return The commonName.
     */
    java.lang.String getCommonName();
    /**
     * string commonName = 2;
     * @return The bytes for commonName.
     */
    com.google.protobuf.ByteString
        getCommonNameBytes();

    /**
     * string serialNumber = 3;
     * @return The serialNumber.
     */
    java.lang.String getSerialNumber();
    /**
     * string serialNumber = 3;
     * @return The bytes for serialNumber.
     */
    com.google.protobuf.ByteString
        getSerialNumberBytes();

    /**
     * .google.protobuf.Timestamp validFrom = 4;
     * @return Whether the validFrom field is set.
     */
    boolean hasValidFrom();
    /**
     * .google.protobuf.Timestamp validFrom = 4;
     * @return The validFrom.
     */
    com.google.protobuf.Timestamp getValidFrom();
    /**
     * .google.protobuf.Timestamp validFrom = 4;
     */
    com.google.protobuf.TimestampOrBuilder getValidFromOrBuilder();

    /**
     * .google.protobuf.Timestamp validTo = 5;
     * @return Whether the validTo field is set.
     */
    boolean hasValidTo();
    /**
     * .google.protobuf.Timestamp validTo = 5;
     * @return The validTo.
     */
    com.google.protobuf.Timestamp getValidTo();
    /**
     * .google.protobuf.Timestamp validTo = 5;
     */
    com.google.protobuf.TimestampOrBuilder getValidToOrBuilder();

    /**
     * string modulus = 6;
     * @return The modulus.
     */
    java.lang.String getModulus();
    /**
     * string modulus = 6;
     * @return The bytes for modulus.
     */
    com.google.protobuf.ByteString
        getModulusBytes();

    /**
     * repeated string subjectAlternativeNames = 7;
     * @return A list containing the subjectAlternativeNames.
     */
    java.util.List
        getSubjectAlternativeNamesList();
    /**
     * repeated string subjectAlternativeNames = 7;
     * @return The count of subjectAlternativeNames.
     */
    int getSubjectAlternativeNamesCount();
    /**
     * repeated string subjectAlternativeNames = 7;
     * @param index The index of the element to return.
     * @return The subjectAlternativeNames at the given index.
     */
    java.lang.String getSubjectAlternativeNames(int index);
    /**
     * repeated string subjectAlternativeNames = 7;
     * @param index The index of the value to return.
     * @return The bytes of the subjectAlternativeNames at the given index.
     */
    com.google.protobuf.ByteString
        getSubjectAlternativeNamesBytes(int index);

    /**
     * string ownerUsername = 8;
     * @return The ownerUsername.
     */
    java.lang.String getOwnerUsername();
    /**
     * string ownerUsername = 8;
     * @return The bytes for ownerUsername.
     */
    com.google.protobuf.ByteString
        getOwnerUsernameBytes();
  }
  /**
   * Protobuf type {@code io.TLSCertificateData}
   */
  public static final class TLSCertificateData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.TLSCertificateData)
      TLSCertificateDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TLSCertificateData.newBuilder() to construct.
    private TLSCertificateData(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private TLSCertificateData() {
      id_ = "";
      commonName_ = "";
      serialNumber_ = "";
      modulus_ = "";
      subjectAlternativeNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      ownerUsername_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TLSCertificateData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TLSCertificateData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              commonName_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              serialNumber_ = s;
              break;
            }
            case 34: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (validFrom_ != null) {
                subBuilder = validFrom_.toBuilder();
              }
              validFrom_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(validFrom_);
                validFrom_ = subBuilder.buildPartial();
              }

              break;
            }
            case 42: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (validTo_ != null) {
                subBuilder = validTo_.toBuilder();
              }
              validTo_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(validTo_);
                validTo_ = subBuilder.buildPartial();
              }

              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              modulus_ = s;
              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                subjectAlternativeNames_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              subjectAlternativeNames_.add(s);
              break;
            }
            case 66: {
              java.lang.String s = input.readStringRequireUtf8();

              ownerUsername_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          subjectAlternativeNames_ = subjectAlternativeNames_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.TLSCertificateData.class, com.passkit.grpc.Certificate.TLSCertificateData.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * string id = 1;
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * string id = 1;
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COMMONNAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object commonName_;
    /**
     * string commonName = 2;
     * @return The commonName.
     */
    @java.lang.Override
    public java.lang.String getCommonName() {
      java.lang.Object ref = commonName_;
      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();
        commonName_ = s;
        return s;
      }
    }
    /**
     * string commonName = 2;
     * @return The bytes for commonName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCommonNameBytes() {
      java.lang.Object ref = commonName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        commonName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERIALNUMBER_FIELD_NUMBER = 3;
    private volatile java.lang.Object serialNumber_;
    /**
     * string serialNumber = 3;
     * @return The serialNumber.
     */
    @java.lang.Override
    public java.lang.String getSerialNumber() {
      java.lang.Object ref = serialNumber_;
      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();
        serialNumber_ = s;
        return s;
      }
    }
    /**
     * string serialNumber = 3;
     * @return The bytes for serialNumber.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSerialNumberBytes() {
      java.lang.Object ref = serialNumber_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serialNumber_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALIDFROM_FIELD_NUMBER = 4;
    private com.google.protobuf.Timestamp validFrom_;
    /**
     * .google.protobuf.Timestamp validFrom = 4;
     * @return Whether the validFrom field is set.
     */
    @java.lang.Override
    public boolean hasValidFrom() {
      return validFrom_ != null;
    }
    /**
     * .google.protobuf.Timestamp validFrom = 4;
     * @return The validFrom.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getValidFrom() {
      return validFrom_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validFrom_;
    }
    /**
     * .google.protobuf.Timestamp validFrom = 4;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getValidFromOrBuilder() {
      return getValidFrom();
    }

    public static final int VALIDTO_FIELD_NUMBER = 5;
    private com.google.protobuf.Timestamp validTo_;
    /**
     * .google.protobuf.Timestamp validTo = 5;
     * @return Whether the validTo field is set.
     */
    @java.lang.Override
    public boolean hasValidTo() {
      return validTo_ != null;
    }
    /**
     * .google.protobuf.Timestamp validTo = 5;
     * @return The validTo.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getValidTo() {
      return validTo_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validTo_;
    }
    /**
     * .google.protobuf.Timestamp validTo = 5;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getValidToOrBuilder() {
      return getValidTo();
    }

    public static final int MODULUS_FIELD_NUMBER = 6;
    private volatile java.lang.Object modulus_;
    /**
     * string modulus = 6;
     * @return The modulus.
     */
    @java.lang.Override
    public java.lang.String getModulus() {
      java.lang.Object ref = modulus_;
      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();
        modulus_ = s;
        return s;
      }
    }
    /**
     * string modulus = 6;
     * @return The bytes for modulus.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getModulusBytes() {
      java.lang.Object ref = modulus_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modulus_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SUBJECTALTERNATIVENAMES_FIELD_NUMBER = 7;
    private com.google.protobuf.LazyStringList subjectAlternativeNames_;
    /**
     * repeated string subjectAlternativeNames = 7;
     * @return A list containing the subjectAlternativeNames.
     */
    public com.google.protobuf.ProtocolStringList
        getSubjectAlternativeNamesList() {
      return subjectAlternativeNames_;
    }
    /**
     * repeated string subjectAlternativeNames = 7;
     * @return The count of subjectAlternativeNames.
     */
    public int getSubjectAlternativeNamesCount() {
      return subjectAlternativeNames_.size();
    }
    /**
     * repeated string subjectAlternativeNames = 7;
     * @param index The index of the element to return.
     * @return The subjectAlternativeNames at the given index.
     */
    public java.lang.String getSubjectAlternativeNames(int index) {
      return subjectAlternativeNames_.get(index);
    }
    /**
     * repeated string subjectAlternativeNames = 7;
     * @param index The index of the value to return.
     * @return The bytes of the subjectAlternativeNames at the given index.
     */
    public com.google.protobuf.ByteString
        getSubjectAlternativeNamesBytes(int index) {
      return subjectAlternativeNames_.getByteString(index);
    }

    public static final int OWNERUSERNAME_FIELD_NUMBER = 8;
    private volatile java.lang.Object ownerUsername_;
    /**
     * string ownerUsername = 8;
     * @return The ownerUsername.
     */
    @java.lang.Override
    public java.lang.String getOwnerUsername() {
      java.lang.Object ref = ownerUsername_;
      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();
        ownerUsername_ = s;
        return s;
      }
    }
    /**
     * string ownerUsername = 8;
     * @return The bytes for ownerUsername.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOwnerUsernameBytes() {
      java.lang.Object ref = ownerUsername_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ownerUsername_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getCommonNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, commonName_);
      }
      if (!getSerialNumberBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, serialNumber_);
      }
      if (validFrom_ != null) {
        output.writeMessage(4, getValidFrom());
      }
      if (validTo_ != null) {
        output.writeMessage(5, getValidTo());
      }
      if (!getModulusBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, modulus_);
      }
      for (int i = 0; i < subjectAlternativeNames_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, subjectAlternativeNames_.getRaw(i));
      }
      if (!getOwnerUsernameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, ownerUsername_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getCommonNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, commonName_);
      }
      if (!getSerialNumberBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, serialNumber_);
      }
      if (validFrom_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getValidFrom());
      }
      if (validTo_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getValidTo());
      }
      if (!getModulusBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, modulus_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < subjectAlternativeNames_.size(); i++) {
          dataSize += computeStringSizeNoTag(subjectAlternativeNames_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getSubjectAlternativeNamesList().size();
      }
      if (!getOwnerUsernameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, ownerUsername_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.TLSCertificateData)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.TLSCertificateData other = (com.passkit.grpc.Certificate.TLSCertificateData) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!getCommonName()
          .equals(other.getCommonName())) return false;
      if (!getSerialNumber()
          .equals(other.getSerialNumber())) return false;
      if (hasValidFrom() != other.hasValidFrom()) return false;
      if (hasValidFrom()) {
        if (!getValidFrom()
            .equals(other.getValidFrom())) return false;
      }
      if (hasValidTo() != other.hasValidTo()) return false;
      if (hasValidTo()) {
        if (!getValidTo()
            .equals(other.getValidTo())) return false;
      }
      if (!getModulus()
          .equals(other.getModulus())) return false;
      if (!getSubjectAlternativeNamesList()
          .equals(other.getSubjectAlternativeNamesList())) return false;
      if (!getOwnerUsername()
          .equals(other.getOwnerUsername())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + COMMONNAME_FIELD_NUMBER;
      hash = (53 * hash) + getCommonName().hashCode();
      hash = (37 * hash) + SERIALNUMBER_FIELD_NUMBER;
      hash = (53 * hash) + getSerialNumber().hashCode();
      if (hasValidFrom()) {
        hash = (37 * hash) + VALIDFROM_FIELD_NUMBER;
        hash = (53 * hash) + getValidFrom().hashCode();
      }
      if (hasValidTo()) {
        hash = (37 * hash) + VALIDTO_FIELD_NUMBER;
        hash = (53 * hash) + getValidTo().hashCode();
      }
      hash = (37 * hash) + MODULUS_FIELD_NUMBER;
      hash = (53 * hash) + getModulus().hashCode();
      if (getSubjectAlternativeNamesCount() > 0) {
        hash = (37 * hash) + SUBJECTALTERNATIVENAMES_FIELD_NUMBER;
        hash = (53 * hash) + getSubjectAlternativeNamesList().hashCode();
      }
      hash = (37 * hash) + OWNERUSERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getOwnerUsername().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.TLSCertificateData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.TLSCertificateData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.TLSCertificateData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.TLSCertificateData)
        com.passkit.grpc.Certificate.TLSCertificateDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.TLSCertificateData.class, com.passkit.grpc.Certificate.TLSCertificateData.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.TLSCertificateData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        commonName_ = "";

        serialNumber_ = "";

        if (validFromBuilder_ == null) {
          validFrom_ = null;
        } else {
          validFrom_ = null;
          validFromBuilder_ = null;
        }
        if (validToBuilder_ == null) {
          validTo_ = null;
        } else {
          validTo_ = null;
          validToBuilder_ = null;
        }
        modulus_ = "";

        subjectAlternativeNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        ownerUsername_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_TLSCertificateData_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.TLSCertificateData getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.TLSCertificateData.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.TLSCertificateData build() {
        com.passkit.grpc.Certificate.TLSCertificateData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.TLSCertificateData buildPartial() {
        com.passkit.grpc.Certificate.TLSCertificateData result = new com.passkit.grpc.Certificate.TLSCertificateData(this);
        int from_bitField0_ = bitField0_;
        result.id_ = id_;
        result.commonName_ = commonName_;
        result.serialNumber_ = serialNumber_;
        if (validFromBuilder_ == null) {
          result.validFrom_ = validFrom_;
        } else {
          result.validFrom_ = validFromBuilder_.build();
        }
        if (validToBuilder_ == null) {
          result.validTo_ = validTo_;
        } else {
          result.validTo_ = validToBuilder_.build();
        }
        result.modulus_ = modulus_;
        if (((bitField0_ & 0x00000001) != 0)) {
          subjectAlternativeNames_ = subjectAlternativeNames_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.subjectAlternativeNames_ = subjectAlternativeNames_;
        result.ownerUsername_ = ownerUsername_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.TLSCertificateData) {
          return mergeFrom((com.passkit.grpc.Certificate.TLSCertificateData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.TLSCertificateData other) {
        if (other == com.passkit.grpc.Certificate.TLSCertificateData.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getCommonName().isEmpty()) {
          commonName_ = other.commonName_;
          onChanged();
        }
        if (!other.getSerialNumber().isEmpty()) {
          serialNumber_ = other.serialNumber_;
          onChanged();
        }
        if (other.hasValidFrom()) {
          mergeValidFrom(other.getValidFrom());
        }
        if (other.hasValidTo()) {
          mergeValidTo(other.getValidTo());
        }
        if (!other.getModulus().isEmpty()) {
          modulus_ = other.modulus_;
          onChanged();
        }
        if (!other.subjectAlternativeNames_.isEmpty()) {
          if (subjectAlternativeNames_.isEmpty()) {
            subjectAlternativeNames_ = other.subjectAlternativeNames_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSubjectAlternativeNamesIsMutable();
            subjectAlternativeNames_.addAll(other.subjectAlternativeNames_);
          }
          onChanged();
        }
        if (!other.getOwnerUsername().isEmpty()) {
          ownerUsername_ = other.ownerUsername_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.TLSCertificateData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.TLSCertificateData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * string id = 1;
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string id = 1;
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string id = 1;
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object commonName_ = "";
      /**
       * string commonName = 2;
       * @return The commonName.
       */
      public java.lang.String getCommonName() {
        java.lang.Object ref = commonName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          commonName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string commonName = 2;
       * @return The bytes for commonName.
       */
      public com.google.protobuf.ByteString
          getCommonNameBytes() {
        java.lang.Object ref = commonName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          commonName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string commonName = 2;
       * @param value The commonName to set.
       * @return This builder for chaining.
       */
      public Builder setCommonName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        commonName_ = value;
        onChanged();
        return this;
      }
      /**
       * string commonName = 2;
       * @return This builder for chaining.
       */
      public Builder clearCommonName() {
        
        commonName_ = getDefaultInstance().getCommonName();
        onChanged();
        return this;
      }
      /**
       * string commonName = 2;
       * @param value The bytes for commonName to set.
       * @return This builder for chaining.
       */
      public Builder setCommonNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        commonName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object serialNumber_ = "";
      /**
       * string serialNumber = 3;
       * @return The serialNumber.
       */
      public java.lang.String getSerialNumber() {
        java.lang.Object ref = serialNumber_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serialNumber_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string serialNumber = 3;
       * @return The bytes for serialNumber.
       */
      public com.google.protobuf.ByteString
          getSerialNumberBytes() {
        java.lang.Object ref = serialNumber_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serialNumber_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string serialNumber = 3;
       * @param value The serialNumber to set.
       * @return This builder for chaining.
       */
      public Builder setSerialNumber(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serialNumber_ = value;
        onChanged();
        return this;
      }
      /**
       * string serialNumber = 3;
       * @return This builder for chaining.
       */
      public Builder clearSerialNumber() {
        
        serialNumber_ = getDefaultInstance().getSerialNumber();
        onChanged();
        return this;
      }
      /**
       * string serialNumber = 3;
       * @param value The bytes for serialNumber to set.
       * @return This builder for chaining.
       */
      public Builder setSerialNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serialNumber_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp validFrom_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> validFromBuilder_;
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       * @return Whether the validFrom field is set.
       */
      public boolean hasValidFrom() {
        return validFromBuilder_ != null || validFrom_ != null;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       * @return The validFrom.
       */
      public com.google.protobuf.Timestamp getValidFrom() {
        if (validFromBuilder_ == null) {
          return validFrom_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validFrom_;
        } else {
          return validFromBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      public Builder setValidFrom(com.google.protobuf.Timestamp value) {
        if (validFromBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validFrom_ = value;
          onChanged();
        } else {
          validFromBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      public Builder setValidFrom(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (validFromBuilder_ == null) {
          validFrom_ = builderForValue.build();
          onChanged();
        } else {
          validFromBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      public Builder mergeValidFrom(com.google.protobuf.Timestamp value) {
        if (validFromBuilder_ == null) {
          if (validFrom_ != null) {
            validFrom_ =
              com.google.protobuf.Timestamp.newBuilder(validFrom_).mergeFrom(value).buildPartial();
          } else {
            validFrom_ = value;
          }
          onChanged();
        } else {
          validFromBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      public Builder clearValidFrom() {
        if (validFromBuilder_ == null) {
          validFrom_ = null;
          onChanged();
        } else {
          validFrom_ = null;
          validFromBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      public com.google.protobuf.Timestamp.Builder getValidFromBuilder() {
        
        onChanged();
        return getValidFromFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      public com.google.protobuf.TimestampOrBuilder getValidFromOrBuilder() {
        if (validFromBuilder_ != null) {
          return validFromBuilder_.getMessageOrBuilder();
        } else {
          return validFrom_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : validFrom_;
        }
      }
      /**
       * .google.protobuf.Timestamp validFrom = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getValidFromFieldBuilder() {
        if (validFromBuilder_ == null) {
          validFromBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getValidFrom(),
                  getParentForChildren(),
                  isClean());
          validFrom_ = null;
        }
        return validFromBuilder_;
      }

      private com.google.protobuf.Timestamp validTo_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> validToBuilder_;
      /**
       * .google.protobuf.Timestamp validTo = 5;
       * @return Whether the validTo field is set.
       */
      public boolean hasValidTo() {
        return validToBuilder_ != null || validTo_ != null;
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       * @return The validTo.
       */
      public com.google.protobuf.Timestamp getValidTo() {
        if (validToBuilder_ == null) {
          return validTo_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : validTo_;
        } else {
          return validToBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      public Builder setValidTo(com.google.protobuf.Timestamp value) {
        if (validToBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validTo_ = value;
          onChanged();
        } else {
          validToBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      public Builder setValidTo(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (validToBuilder_ == null) {
          validTo_ = builderForValue.build();
          onChanged();
        } else {
          validToBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      public Builder mergeValidTo(com.google.protobuf.Timestamp value) {
        if (validToBuilder_ == null) {
          if (validTo_ != null) {
            validTo_ =
              com.google.protobuf.Timestamp.newBuilder(validTo_).mergeFrom(value).buildPartial();
          } else {
            validTo_ = value;
          }
          onChanged();
        } else {
          validToBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      public Builder clearValidTo() {
        if (validToBuilder_ == null) {
          validTo_ = null;
          onChanged();
        } else {
          validTo_ = null;
          validToBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      public com.google.protobuf.Timestamp.Builder getValidToBuilder() {
        
        onChanged();
        return getValidToFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      public com.google.protobuf.TimestampOrBuilder getValidToOrBuilder() {
        if (validToBuilder_ != null) {
          return validToBuilder_.getMessageOrBuilder();
        } else {
          return validTo_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : validTo_;
        }
      }
      /**
       * .google.protobuf.Timestamp validTo = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getValidToFieldBuilder() {
        if (validToBuilder_ == null) {
          validToBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getValidTo(),
                  getParentForChildren(),
                  isClean());
          validTo_ = null;
        }
        return validToBuilder_;
      }

      private java.lang.Object modulus_ = "";
      /**
       * string modulus = 6;
       * @return The modulus.
       */
      public java.lang.String getModulus() {
        java.lang.Object ref = modulus_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modulus_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string modulus = 6;
       * @return The bytes for modulus.
       */
      public com.google.protobuf.ByteString
          getModulusBytes() {
        java.lang.Object ref = modulus_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modulus_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string modulus = 6;
       * @param value The modulus to set.
       * @return This builder for chaining.
       */
      public Builder setModulus(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modulus_ = value;
        onChanged();
        return this;
      }
      /**
       * string modulus = 6;
       * @return This builder for chaining.
       */
      public Builder clearModulus() {
        
        modulus_ = getDefaultInstance().getModulus();
        onChanged();
        return this;
      }
      /**
       * string modulus = 6;
       * @param value The bytes for modulus to set.
       * @return This builder for chaining.
       */
      public Builder setModulusBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modulus_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList subjectAlternativeNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureSubjectAlternativeNamesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          subjectAlternativeNames_ = new com.google.protobuf.LazyStringArrayList(subjectAlternativeNames_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @return A list containing the subjectAlternativeNames.
       */
      public com.google.protobuf.ProtocolStringList
          getSubjectAlternativeNamesList() {
        return subjectAlternativeNames_.getUnmodifiableView();
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @return The count of subjectAlternativeNames.
       */
      public int getSubjectAlternativeNamesCount() {
        return subjectAlternativeNames_.size();
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @param index The index of the element to return.
       * @return The subjectAlternativeNames at the given index.
       */
      public java.lang.String getSubjectAlternativeNames(int index) {
        return subjectAlternativeNames_.get(index);
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @param index The index of the value to return.
       * @return The bytes of the subjectAlternativeNames at the given index.
       */
      public com.google.protobuf.ByteString
          getSubjectAlternativeNamesBytes(int index) {
        return subjectAlternativeNames_.getByteString(index);
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @param index The index to set the value at.
       * @param value The subjectAlternativeNames to set.
       * @return This builder for chaining.
       */
      public Builder setSubjectAlternativeNames(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSubjectAlternativeNamesIsMutable();
        subjectAlternativeNames_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @param value The subjectAlternativeNames to add.
       * @return This builder for chaining.
       */
      public Builder addSubjectAlternativeNames(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureSubjectAlternativeNamesIsMutable();
        subjectAlternativeNames_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @param values The subjectAlternativeNames to add.
       * @return This builder for chaining.
       */
      public Builder addAllSubjectAlternativeNames(
          java.lang.Iterable values) {
        ensureSubjectAlternativeNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, subjectAlternativeNames_);
        onChanged();
        return this;
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @return This builder for chaining.
       */
      public Builder clearSubjectAlternativeNames() {
        subjectAlternativeNames_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * repeated string subjectAlternativeNames = 7;
       * @param value The bytes of the subjectAlternativeNames to add.
       * @return This builder for chaining.
       */
      public Builder addSubjectAlternativeNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureSubjectAlternativeNamesIsMutable();
        subjectAlternativeNames_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object ownerUsername_ = "";
      /**
       * string ownerUsername = 8;
       * @return The ownerUsername.
       */
      public java.lang.String getOwnerUsername() {
        java.lang.Object ref = ownerUsername_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ownerUsername_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string ownerUsername = 8;
       * @return The bytes for ownerUsername.
       */
      public com.google.protobuf.ByteString
          getOwnerUsernameBytes() {
        java.lang.Object ref = ownerUsername_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ownerUsername_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string ownerUsername = 8;
       * @param value The ownerUsername to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ownerUsername_ = value;
        onChanged();
        return this;
      }
      /**
       * string ownerUsername = 8;
       * @return This builder for chaining.
       */
      public Builder clearOwnerUsername() {
        
        ownerUsername_ = getDefaultInstance().getOwnerUsername();
        onChanged();
        return this;
      }
      /**
       * string ownerUsername = 8;
       * @param value The bytes for ownerUsername to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ownerUsername_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.TLSCertificateData)
    }

    // @@protoc_insertion_point(class_scope:io.TLSCertificateData)
    private static final com.passkit.grpc.Certificate.TLSCertificateData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.TLSCertificateData();
    }

    public static com.passkit.grpc.Certificate.TLSCertificateData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public TLSCertificateData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TLSCertificateData(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.TLSCertificateData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PrivateKeyDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.PrivateKeyData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string id = 1;
     * @return The id.
     */
    java.lang.String getId();
    /**
     * string id = 1;
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * string name = 2;
     * @return The name.
     */
    java.lang.String getName();
    /**
     * string name = 2;
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * string description = 3;
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * string description = 3;
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * .google.protobuf.Timestamp expiry = 4;
     * @return Whether the expiry field is set.
     */
    boolean hasExpiry();
    /**
     * .google.protobuf.Timestamp expiry = 4;
     * @return The expiry.
     */
    com.google.protobuf.Timestamp getExpiry();
    /**
     * .google.protobuf.Timestamp expiry = 4;
     */
    com.google.protobuf.TimestampOrBuilder getExpiryOrBuilder();

    /**
     * string ownerUsername = 5;
     * @return The ownerUsername.
     */
    java.lang.String getOwnerUsername();
    /**
     * string ownerUsername = 5;
     * @return The bytes for ownerUsername.
     */
    com.google.protobuf.ByteString
        getOwnerUsernameBytes();
  }
  /**
   * Protobuf type {@code io.PrivateKeyData}
   */
  public static final class PrivateKeyData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.PrivateKeyData)
      PrivateKeyDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PrivateKeyData.newBuilder() to construct.
    private PrivateKeyData(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PrivateKeyData() {
      id_ = "";
      name_ = "";
      description_ = "";
      ownerUsername_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PrivateKeyData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PrivateKeyData(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              description_ = s;
              break;
            }
            case 34: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (expiry_ != null) {
                subBuilder = expiry_.toBuilder();
              }
              expiry_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(expiry_);
                expiry_ = subBuilder.buildPartial();
              }

              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              ownerUsername_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.PrivateKeyData.class, com.passkit.grpc.Certificate.PrivateKeyData.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * string id = 1;
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * string id = 1;
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * string name = 2;
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * string name = 2;
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 3;
    private volatile java.lang.Object description_;
    /**
     * string description = 3;
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * string description = 3;
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPIRY_FIELD_NUMBER = 4;
    private com.google.protobuf.Timestamp expiry_;
    /**
     * .google.protobuf.Timestamp expiry = 4;
     * @return Whether the expiry field is set.
     */
    @java.lang.Override
    public boolean hasExpiry() {
      return expiry_ != null;
    }
    /**
     * .google.protobuf.Timestamp expiry = 4;
     * @return The expiry.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getExpiry() {
      return expiry_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiry_;
    }
    /**
     * .google.protobuf.Timestamp expiry = 4;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getExpiryOrBuilder() {
      return getExpiry();
    }

    public static final int OWNERUSERNAME_FIELD_NUMBER = 5;
    private volatile java.lang.Object ownerUsername_;
    /**
     * string ownerUsername = 5;
     * @return The ownerUsername.
     */
    @java.lang.Override
    public java.lang.String getOwnerUsername() {
      java.lang.Object ref = ownerUsername_;
      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();
        ownerUsername_ = s;
        return s;
      }
    }
    /**
     * string ownerUsername = 5;
     * @return The bytes for ownerUsername.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOwnerUsernameBytes() {
      java.lang.Object ref = ownerUsername_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ownerUsername_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!getDescriptionBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
      }
      if (expiry_ != null) {
        output.writeMessage(4, getExpiry());
      }
      if (!getOwnerUsernameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, ownerUsername_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!getDescriptionBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
      }
      if (expiry_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getExpiry());
      }
      if (!getOwnerUsernameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, ownerUsername_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.PrivateKeyData)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.PrivateKeyData other = (com.passkit.grpc.Certificate.PrivateKeyData) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (hasExpiry() != other.hasExpiry()) return false;
      if (hasExpiry()) {
        if (!getExpiry()
            .equals(other.getExpiry())) return false;
      }
      if (!getOwnerUsername()
          .equals(other.getOwnerUsername())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      if (hasExpiry()) {
        hash = (37 * hash) + EXPIRY_FIELD_NUMBER;
        hash = (53 * hash) + getExpiry().hashCode();
      }
      hash = (37 * hash) + OWNERUSERNAME_FIELD_NUMBER;
      hash = (53 * hash) + getOwnerUsername().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PrivateKeyData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.PrivateKeyData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.PrivateKeyData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.PrivateKeyData)
        com.passkit.grpc.Certificate.PrivateKeyDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.PrivateKeyData.class, com.passkit.grpc.Certificate.PrivateKeyData.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.PrivateKeyData.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        name_ = "";

        description_ = "";

        if (expiryBuilder_ == null) {
          expiry_ = null;
        } else {
          expiry_ = null;
          expiryBuilder_ = null;
        }
        ownerUsername_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_PrivateKeyData_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PrivateKeyData getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.PrivateKeyData.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PrivateKeyData build() {
        com.passkit.grpc.Certificate.PrivateKeyData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PrivateKeyData buildPartial() {
        com.passkit.grpc.Certificate.PrivateKeyData result = new com.passkit.grpc.Certificate.PrivateKeyData(this);
        result.id_ = id_;
        result.name_ = name_;
        result.description_ = description_;
        if (expiryBuilder_ == null) {
          result.expiry_ = expiry_;
        } else {
          result.expiry_ = expiryBuilder_.build();
        }
        result.ownerUsername_ = ownerUsername_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.PrivateKeyData) {
          return mergeFrom((com.passkit.grpc.Certificate.PrivateKeyData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.PrivateKeyData other) {
        if (other == com.passkit.grpc.Certificate.PrivateKeyData.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          onChanged();
        }
        if (other.hasExpiry()) {
          mergeExpiry(other.getExpiry());
        }
        if (!other.getOwnerUsername().isEmpty()) {
          ownerUsername_ = other.ownerUsername_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.PrivateKeyData parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.PrivateKeyData) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * string id = 1;
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string id = 1;
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string id = 1;
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * string name = 2;
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string name = 2;
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string name = 2;
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * string name = 2;
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * string name = 2;
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * string description = 3;
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string description = 3;
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string description = 3;
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        description_ = value;
        onChanged();
        return this;
      }
      /**
       * string description = 3;
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        
        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      /**
       * string description = 3;
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        description_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp expiry_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> expiryBuilder_;
      /**
       * .google.protobuf.Timestamp expiry = 4;
       * @return Whether the expiry field is set.
       */
      public boolean hasExpiry() {
        return expiryBuilder_ != null || expiry_ != null;
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       * @return The expiry.
       */
      public com.google.protobuf.Timestamp getExpiry() {
        if (expiryBuilder_ == null) {
          return expiry_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expiry_;
        } else {
          return expiryBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      public Builder setExpiry(com.google.protobuf.Timestamp value) {
        if (expiryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expiry_ = value;
          onChanged();
        } else {
          expiryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      public Builder setExpiry(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (expiryBuilder_ == null) {
          expiry_ = builderForValue.build();
          onChanged();
        } else {
          expiryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      public Builder mergeExpiry(com.google.protobuf.Timestamp value) {
        if (expiryBuilder_ == null) {
          if (expiry_ != null) {
            expiry_ =
              com.google.protobuf.Timestamp.newBuilder(expiry_).mergeFrom(value).buildPartial();
          } else {
            expiry_ = value;
          }
          onChanged();
        } else {
          expiryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      public Builder clearExpiry() {
        if (expiryBuilder_ == null) {
          expiry_ = null;
          onChanged();
        } else {
          expiry_ = null;
          expiryBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      public com.google.protobuf.Timestamp.Builder getExpiryBuilder() {
        
        onChanged();
        return getExpiryFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      public com.google.protobuf.TimestampOrBuilder getExpiryOrBuilder() {
        if (expiryBuilder_ != null) {
          return expiryBuilder_.getMessageOrBuilder();
        } else {
          return expiry_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : expiry_;
        }
      }
      /**
       * .google.protobuf.Timestamp expiry = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getExpiryFieldBuilder() {
        if (expiryBuilder_ == null) {
          expiryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getExpiry(),
                  getParentForChildren(),
                  isClean());
          expiry_ = null;
        }
        return expiryBuilder_;
      }

      private java.lang.Object ownerUsername_ = "";
      /**
       * string ownerUsername = 5;
       * @return The ownerUsername.
       */
      public java.lang.String getOwnerUsername() {
        java.lang.Object ref = ownerUsername_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ownerUsername_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string ownerUsername = 5;
       * @return The bytes for ownerUsername.
       */
      public com.google.protobuf.ByteString
          getOwnerUsernameBytes() {
        java.lang.Object ref = ownerUsername_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ownerUsername_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string ownerUsername = 5;
       * @param value The ownerUsername to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ownerUsername_ = value;
        onChanged();
        return this;
      }
      /**
       * string ownerUsername = 5;
       * @return This builder for chaining.
       */
      public Builder clearOwnerUsername() {
        
        ownerUsername_ = getDefaultInstance().getOwnerUsername();
        onChanged();
        return this;
      }
      /**
       * string ownerUsername = 5;
       * @param value The bytes for ownerUsername to set.
       * @return This builder for chaining.
       */
      public Builder setOwnerUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ownerUsername_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.PrivateKeyData)
    }

    // @@protoc_insertion_point(class_scope:io.PrivateKeyData)
    private static final com.passkit.grpc.Certificate.PrivateKeyData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.PrivateKeyData();
    }

    public static com.passkit.grpc.Certificate.PrivateKeyData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public PrivateKeyData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PrivateKeyData(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.PrivateKeyData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PassTypeIdentifierOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.PassTypeIdentifier)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string passTypeId = 1;
     * @return The passTypeId.
     */
    java.lang.String getPassTypeId();
    /**
     * string passTypeId = 1;
     * @return The bytes for passTypeId.
     */
    com.google.protobuf.ByteString
        getPassTypeIdBytes();
  }
  /**
   * Protobuf type {@code io.PassTypeIdentifier}
   */
  public static final class PassTypeIdentifier extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.PassTypeIdentifier)
      PassTypeIdentifierOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PassTypeIdentifier.newBuilder() to construct.
    private PassTypeIdentifier(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PassTypeIdentifier() {
      passTypeId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PassTypeIdentifier();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PassTypeIdentifier(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              passTypeId_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_PassTypeIdentifier_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_PassTypeIdentifier_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.PassTypeIdentifier.class, com.passkit.grpc.Certificate.PassTypeIdentifier.Builder.class);
    }

    public static final int PASSTYPEID_FIELD_NUMBER = 1;
    private volatile java.lang.Object passTypeId_;
    /**
     * string passTypeId = 1;
     * @return The passTypeId.
     */
    @java.lang.Override
    public java.lang.String getPassTypeId() {
      java.lang.Object ref = passTypeId_;
      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();
        passTypeId_ = s;
        return s;
      }
    }
    /**
     * string passTypeId = 1;
     * @return The bytes for passTypeId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPassTypeIdBytes() {
      java.lang.Object ref = passTypeId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        passTypeId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getPassTypeIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, passTypeId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getPassTypeIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, passTypeId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.PassTypeIdentifier)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.PassTypeIdentifier other = (com.passkit.grpc.Certificate.PassTypeIdentifier) obj;

      if (!getPassTypeId()
          .equals(other.getPassTypeId())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PASSTYPEID_FIELD_NUMBER;
      hash = (53 * hash) + getPassTypeId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.PassTypeIdentifier parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.PassTypeIdentifier prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.PassTypeIdentifier}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.PassTypeIdentifier)
        com.passkit.grpc.Certificate.PassTypeIdentifierOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_PassTypeIdentifier_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_PassTypeIdentifier_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.PassTypeIdentifier.class, com.passkit.grpc.Certificate.PassTypeIdentifier.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.PassTypeIdentifier.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        passTypeId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_PassTypeIdentifier_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PassTypeIdentifier getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.PassTypeIdentifier.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PassTypeIdentifier build() {
        com.passkit.grpc.Certificate.PassTypeIdentifier result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.PassTypeIdentifier buildPartial() {
        com.passkit.grpc.Certificate.PassTypeIdentifier result = new com.passkit.grpc.Certificate.PassTypeIdentifier(this);
        result.passTypeId_ = passTypeId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.PassTypeIdentifier) {
          return mergeFrom((com.passkit.grpc.Certificate.PassTypeIdentifier)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.PassTypeIdentifier other) {
        if (other == com.passkit.grpc.Certificate.PassTypeIdentifier.getDefaultInstance()) return this;
        if (!other.getPassTypeId().isEmpty()) {
          passTypeId_ = other.passTypeId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.PassTypeIdentifier parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.PassTypeIdentifier) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object passTypeId_ = "";
      /**
       * string passTypeId = 1;
       * @return The passTypeId.
       */
      public java.lang.String getPassTypeId() {
        java.lang.Object ref = passTypeId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          passTypeId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string passTypeId = 1;
       * @return The bytes for passTypeId.
       */
      public com.google.protobuf.ByteString
          getPassTypeIdBytes() {
        java.lang.Object ref = passTypeId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          passTypeId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string passTypeId = 1;
       * @param value The passTypeId to set.
       * @return This builder for chaining.
       */
      public Builder setPassTypeId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        passTypeId_ = value;
        onChanged();
        return this;
      }
      /**
       * string passTypeId = 1;
       * @return This builder for chaining.
       */
      public Builder clearPassTypeId() {
        
        passTypeId_ = getDefaultInstance().getPassTypeId();
        onChanged();
        return this;
      }
      /**
       * string passTypeId = 1;
       * @param value The bytes for passTypeId to set.
       * @return This builder for chaining.
       */
      public Builder setPassTypeIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        passTypeId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.PassTypeIdentifier)
    }

    // @@protoc_insertion_point(class_scope:io.PassTypeIdentifier)
    private static final com.passkit.grpc.Certificate.PassTypeIdentifier DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.PassTypeIdentifier();
    }

    public static com.passkit.grpc.Certificate.PassTypeIdentifier getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public PassTypeIdentifier parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PassTypeIdentifier(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.PassTypeIdentifier getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CertificateSigningRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.CertificateSigningRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string csr = 1;
     * @return The csr.
     */
    java.lang.String getCsr();
    /**
     * string csr = 1;
     * @return The bytes for csr.
     */
    com.google.protobuf.ByteString
        getCsrBytes();
  }
  /**
   * Protobuf type {@code io.CertificateSigningRequest}
   */
  public static final class CertificateSigningRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.CertificateSigningRequest)
      CertificateSigningRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CertificateSigningRequest.newBuilder() to construct.
    private CertificateSigningRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CertificateSigningRequest() {
      csr_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CertificateSigningRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CertificateSigningRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              csr_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_CertificateSigningRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_CertificateSigningRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.CertificateSigningRequest.class, com.passkit.grpc.Certificate.CertificateSigningRequest.Builder.class);
    }

    public static final int CSR_FIELD_NUMBER = 1;
    private volatile java.lang.Object csr_;
    /**
     * string csr = 1;
     * @return The csr.
     */
    @java.lang.Override
    public java.lang.String getCsr() {
      java.lang.Object ref = csr_;
      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();
        csr_ = s;
        return s;
      }
    }
    /**
     * string csr = 1;
     * @return The bytes for csr.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCsrBytes() {
      java.lang.Object ref = csr_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        csr_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getCsrBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, csr_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getCsrBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, csr_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.CertificateSigningRequest)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.CertificateSigningRequest other = (com.passkit.grpc.Certificate.CertificateSigningRequest) obj;

      if (!getCsr()
          .equals(other.getCsr())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CSR_FIELD_NUMBER;
      hash = (53 * hash) + getCsr().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.CertificateSigningRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.CertificateSigningRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.CertificateSigningRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.CertificateSigningRequest)
        com.passkit.grpc.Certificate.CertificateSigningRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_CertificateSigningRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_CertificateSigningRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.CertificateSigningRequest.class, com.passkit.grpc.Certificate.CertificateSigningRequest.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.CertificateSigningRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        csr_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_CertificateSigningRequest_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.CertificateSigningRequest getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.CertificateSigningRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.CertificateSigningRequest build() {
        com.passkit.grpc.Certificate.CertificateSigningRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.CertificateSigningRequest buildPartial() {
        com.passkit.grpc.Certificate.CertificateSigningRequest result = new com.passkit.grpc.Certificate.CertificateSigningRequest(this);
        result.csr_ = csr_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.CertificateSigningRequest) {
          return mergeFrom((com.passkit.grpc.Certificate.CertificateSigningRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.CertificateSigningRequest other) {
        if (other == com.passkit.grpc.Certificate.CertificateSigningRequest.getDefaultInstance()) return this;
        if (!other.getCsr().isEmpty()) {
          csr_ = other.csr_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.CertificateSigningRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.CertificateSigningRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object csr_ = "";
      /**
       * string csr = 1;
       * @return The csr.
       */
      public java.lang.String getCsr() {
        java.lang.Object ref = csr_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          csr_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string csr = 1;
       * @return The bytes for csr.
       */
      public com.google.protobuf.ByteString
          getCsrBytes() {
        java.lang.Object ref = csr_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          csr_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string csr = 1;
       * @param value The csr to set.
       * @return This builder for chaining.
       */
      public Builder setCsr(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        csr_ = value;
        onChanged();
        return this;
      }
      /**
       * string csr = 1;
       * @return This builder for chaining.
       */
      public Builder clearCsr() {
        
        csr_ = getDefaultInstance().getCsr();
        onChanged();
        return this;
      }
      /**
       * string csr = 1;
       * @param value The bytes for csr to set.
       * @return This builder for chaining.
       */
      public Builder setCsrBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        csr_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.CertificateSigningRequest)
    }

    // @@protoc_insertion_point(class_scope:io.CertificateSigningRequest)
    private static final com.passkit.grpc.Certificate.CertificateSigningRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.CertificateSigningRequest();
    }

    public static com.passkit.grpc.Certificate.CertificateSigningRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public CertificateSigningRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CertificateSigningRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.CertificateSigningRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NFCSigningCredentialsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.NFCSigningCredentialsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string password = 1;
     * @return The password.
     */
    java.lang.String getPassword();
    /**
     * string password = 1;
     * @return The bytes for password.
     */
    com.google.protobuf.ByteString
        getPasswordBytes();

    /**
     * string privateKeyId = 2;
     * @return The privateKeyId.
     */
    java.lang.String getPrivateKeyId();
    /**
     * string privateKeyId = 2;
     * @return The bytes for privateKeyId.
     */
    com.google.protobuf.ByteString
        getPrivateKeyIdBytes();
  }
  /**
   * Protobuf type {@code io.NFCSigningCredentialsRequest}
   */
  public static final class NFCSigningCredentialsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.NFCSigningCredentialsRequest)
      NFCSigningCredentialsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NFCSigningCredentialsRequest.newBuilder() to construct.
    private NFCSigningCredentialsRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private NFCSigningCredentialsRequest() {
      password_ = "";
      privateKeyId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NFCSigningCredentialsRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NFCSigningCredentialsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              password_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              privateKeyId_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.passkit.grpc.Certificate.internal_static_io_NFCSigningCredentialsRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.passkit.grpc.Certificate.internal_static_io_NFCSigningCredentialsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.class, com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.Builder.class);
    }

    public static final int PASSWORD_FIELD_NUMBER = 1;
    private volatile java.lang.Object password_;
    /**
     * string password = 1;
     * @return The password.
     */
    @java.lang.Override
    public java.lang.String getPassword() {
      java.lang.Object ref = password_;
      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();
        password_ = s;
        return s;
      }
    }
    /**
     * string password = 1;
     * @return The bytes for password.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        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);
        password_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PRIVATEKEYID_FIELD_NUMBER = 2;
    private volatile java.lang.Object privateKeyId_;
    /**
     * string privateKeyId = 2;
     * @return The privateKeyId.
     */
    @java.lang.Override
    public java.lang.String getPrivateKeyId() {
      java.lang.Object ref = privateKeyId_;
      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();
        privateKeyId_ = s;
        return s;
      }
    }
    /**
     * string privateKeyId = 2;
     * @return The bytes for privateKeyId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPrivateKeyIdBytes() {
      java.lang.Object ref = privateKeyId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        privateKeyId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getPasswordBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, password_);
      }
      if (!getPrivateKeyIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, privateKeyId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getPasswordBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, password_);
      }
      if (!getPrivateKeyIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, privateKeyId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.passkit.grpc.Certificate.NFCSigningCredentialsRequest)) {
        return super.equals(obj);
      }
      com.passkit.grpc.Certificate.NFCSigningCredentialsRequest other = (com.passkit.grpc.Certificate.NFCSigningCredentialsRequest) obj;

      if (!getPassword()
          .equals(other.getPassword())) return false;
      if (!getPrivateKeyId()
          .equals(other.getPrivateKeyId())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
      hash = (53 * hash) + getPassword().hashCode();
      hash = (37 * hash) + PRIVATEKEYID_FIELD_NUMBER;
      hash = (53 * hash) + getPrivateKeyId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.passkit.grpc.Certificate.NFCSigningCredentialsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code io.NFCSigningCredentialsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.NFCSigningCredentialsRequest)
        com.passkit.grpc.Certificate.NFCSigningCredentialsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.passkit.grpc.Certificate.internal_static_io_NFCSigningCredentialsRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.passkit.grpc.Certificate.internal_static_io_NFCSigningCredentialsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.class, com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.Builder.class);
      }

      // Construct using com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        password_ = "";

        privateKeyId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.passkit.grpc.Certificate.internal_static_io_NFCSigningCredentialsRequest_descriptor;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.NFCSigningCredentialsRequest getDefaultInstanceForType() {
        return com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.NFCSigningCredentialsRequest build() {
        com.passkit.grpc.Certificate.NFCSigningCredentialsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.passkit.grpc.Certificate.NFCSigningCredentialsRequest buildPartial() {
        com.passkit.grpc.Certificate.NFCSigningCredentialsRequest result = new com.passkit.grpc.Certificate.NFCSigningCredentialsRequest(this);
        result.password_ = password_;
        result.privateKeyId_ = privateKeyId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.passkit.grpc.Certificate.NFCSigningCredentialsRequest) {
          return mergeFrom((com.passkit.grpc.Certificate.NFCSigningCredentialsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.passkit.grpc.Certificate.NFCSigningCredentialsRequest other) {
        if (other == com.passkit.grpc.Certificate.NFCSigningCredentialsRequest.getDefaultInstance()) return this;
        if (!other.getPassword().isEmpty()) {
          password_ = other.password_;
          onChanged();
        }
        if (!other.getPrivateKeyId().isEmpty()) {
          privateKeyId_ = other.privateKeyId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.passkit.grpc.Certificate.NFCSigningCredentialsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.passkit.grpc.Certificate.NFCSigningCredentialsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object password_ = "";
      /**
       * string password = 1;
       * @return The password.
       */
      public java.lang.String getPassword() {
        java.lang.Object ref = password_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          password_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string password = 1;
       * @return The bytes for password.
       */
      public com.google.protobuf.ByteString
          getPasswordBytes() {
        java.lang.Object ref = password_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          password_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string password = 1;
       * @param value The password to set.
       * @return This builder for chaining.
       */
      public Builder setPassword(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        password_ = value;
        onChanged();
        return this;
      }
      /**
       * string password = 1;
       * @return This builder for chaining.
       */
      public Builder clearPassword() {
        
        password_ = getDefaultInstance().getPassword();
        onChanged();
        return this;
      }
      /**
       * string password = 1;
       * @param value The bytes for password to set.
       * @return This builder for chaining.
       */
      public Builder setPasswordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        password_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object privateKeyId_ = "";
      /**
       * string privateKeyId = 2;
       * @return The privateKeyId.
       */
      public java.lang.String getPrivateKeyId() {
        java.lang.Object ref = privateKeyId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          privateKeyId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string privateKeyId = 2;
       * @return The bytes for privateKeyId.
       */
      public com.google.protobuf.ByteString
          getPrivateKeyIdBytes() {
        java.lang.Object ref = privateKeyId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          privateKeyId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string privateKeyId = 2;
       * @param value The privateKeyId to set.
       * @return This builder for chaining.
       */
      public Builder setPrivateKeyId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        privateKeyId_ = value;
        onChanged();
        return this;
      }
      /**
       * string privateKeyId = 2;
       * @return This builder for chaining.
       */
      public Builder clearPrivateKeyId() {
        
        privateKeyId_ = getDefaultInstance().getPrivateKeyId();
        onChanged();
        return this;
      }
      /**
       * string privateKeyId = 2;
       * @param value The bytes for privateKeyId to set.
       * @return This builder for chaining.
       */
      public Builder setPrivateKeyIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        privateKeyId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.NFCSigningCredentialsRequest)
    }

    // @@protoc_insertion_point(class_scope:io.NFCSigningCredentialsRequest)
    private static final com.passkit.grpc.Certificate.NFCSigningCredentialsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.passkit.grpc.Certificate.NFCSigningCredentialsRequest();
    }

    public static com.passkit.grpc.Certificate.NFCSigningCredentialsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public NFCSigningCredentialsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NFCSigningCredentialsRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.passkit.grpc.Certificate.NFCSigningCredentialsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_CertificateData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_CertificateData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_PrivateKeyRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_PrivateKeyRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_TLSCertificateRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_TLSCertificateRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_TLSCertificateData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_TLSCertificateData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_PrivateKeyData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_PrivateKeyData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_PassTypeIdentifier_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_PassTypeIdentifier_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_CertificateSigningRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_CertificateSigningRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_NFCSigningCredentialsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_NFCSigningCredentialsRequest_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n io/certificate/certificate.proto\022\002io\032\037" +
      "google/protobuf/timestamp.proto\"\365\001\n\017Cert" +
      "ificateData\022\022\n\npassTypeId\030\001 \001(\t\022\016\n\006teamI" +
      "d\030\002 \001(\t\022\020\n\010teamName\030\003 \001(\t\022\024\n\014serialNumbe" +
      "r\030\004 \001(\t\022-\n\tvalidFrom\030\005 \001(\0132\032.google.prot" +
      "obuf.Timestamp\022+\n\007validTo\030\006 \001(\0132\032.google" +
      ".protobuf.Timestamp\022\017\n\007modulus\030\007 \001(\t\022\022\n\n" +
      "nfcCapable\030\010 \001(\010\022\025\n\rownerUsername\030\t \001(\t\"" +
      "v\n\021PrivateKeyRequest\022\014\n\004name\030\001 \001(\t\022\023\n\013de" +
      "scription\030\002 \001(\t\022*\n\006expiry\030\003 \001(\0132\032.google" +
      ".protobuf.Timestamp\022\022\n\nprivateKey\030\004 \001(\014\"" +
      "Q\n\025TLSCertificateRequest\022\023\n\013certificate\030" +
      "\001 \001(\014\022\017\n\007caChain\030\002 \001(\014\022\022\n\nprivateKey\030\003 \001" +
      "(\014\"\357\001\n\022TLSCertificateData\022\n\n\002id\030\001 \001(\t\022\022\n" +
      "\ncommonName\030\002 \001(\t\022\024\n\014serialNumber\030\003 \001(\t\022" +
      "-\n\tvalidFrom\030\004 \001(\0132\032.google.protobuf.Tim" +
      "estamp\022+\n\007validTo\030\005 \001(\0132\032.google.protobu" +
      "f.Timestamp\022\017\n\007modulus\030\006 \001(\t\022\037\n\027subjectA" +
      "lternativeNames\030\007 \003(\t\022\025\n\rownerUsername\030\010" +
      " \001(\t\"\202\001\n\016PrivateKeyData\022\n\n\002id\030\001 \001(\t\022\014\n\004n" +
      "ame\030\002 \001(\t\022\023\n\013description\030\003 \001(\t\022*\n\006expiry" +
      "\030\004 \001(\0132\032.google.protobuf.Timestamp\022\025\n\row" +
      "nerUsername\030\005 \001(\t\"(\n\022PassTypeIdentifier\022" +
      "\022\n\npassTypeId\030\001 \001(\t\"(\n\031CertificateSignin" +
      "gRequest\022\013\n\003csr\030\001 \001(\t\"F\n\034NFCSigningCrede" +
      "ntialsRequest\022\020\n\010password\030\001 \001(\t\022\024\n\014priva" +
      "teKeyId\030\002 \001(\tBG\n\020com.passkit.grpcZ$stash" +
      ".passkit.com/io/model/sdk/go/io\252\002\014PassKi" +
      "t.Grpcb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.TimestampProto.getDescriptor(),
        });
    internal_static_io_CertificateData_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_io_CertificateData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_CertificateData_descriptor,
        new java.lang.String[] { "PassTypeId", "TeamId", "TeamName", "SerialNumber", "ValidFrom", "ValidTo", "Modulus", "NfcCapable", "OwnerUsername", });
    internal_static_io_PrivateKeyRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_io_PrivateKeyRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_PrivateKeyRequest_descriptor,
        new java.lang.String[] { "Name", "Description", "Expiry", "PrivateKey", });
    internal_static_io_TLSCertificateRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_io_TLSCertificateRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_TLSCertificateRequest_descriptor,
        new java.lang.String[] { "Certificate", "CaChain", "PrivateKey", });
    internal_static_io_TLSCertificateData_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_io_TLSCertificateData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_TLSCertificateData_descriptor,
        new java.lang.String[] { "Id", "CommonName", "SerialNumber", "ValidFrom", "ValidTo", "Modulus", "SubjectAlternativeNames", "OwnerUsername", });
    internal_static_io_PrivateKeyData_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_io_PrivateKeyData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_PrivateKeyData_descriptor,
        new java.lang.String[] { "Id", "Name", "Description", "Expiry", "OwnerUsername", });
    internal_static_io_PassTypeIdentifier_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_io_PassTypeIdentifier_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_PassTypeIdentifier_descriptor,
        new java.lang.String[] { "PassTypeId", });
    internal_static_io_CertificateSigningRequest_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_io_CertificateSigningRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_CertificateSigningRequest_descriptor,
        new java.lang.String[] { "Csr", });
    internal_static_io_NFCSigningCredentialsRequest_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_io_NFCSigningCredentialsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_NFCSigningCredentialsRequest_descriptor,
        new java.lang.String[] { "Password", "PrivateKeyId", });
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy