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

software.amazon.cryptography.materialproviders.model.RawEcdhStaticConfigurations Maven / Gradle / Ivy

// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
// Do not modify this file. This file is machine generated, and any changes to it will be overwritten.
package software.amazon.cryptography.materialproviders.model;

import java.util.Objects;

/**
 * List of configurations when using RawEcdhStaticConfigurations.
 */
public class RawEcdhStaticConfigurations {

  /**
   * Inputs for creating a PublicKeyDiscovery Configuration.
   */
  private final PublicKeyDiscoveryInput PublicKeyDiscovery;

  /**
   * Inputs for creating a RawPrivateKeyToStaticPublicKey Configuration.
   */
  private final RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey;

  /**
   * Inputs for creating a EphemeralPrivateKeyToStaticPublicKey Configuration.
   */
  private final EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey;

  protected RawEcdhStaticConfigurations(BuilderImpl builder) {
    this.PublicKeyDiscovery = builder.PublicKeyDiscovery();
    this.RawPrivateKeyToStaticPublicKey =
      builder.RawPrivateKeyToStaticPublicKey();
    this.EphemeralPrivateKeyToStaticPublicKey =
      builder.EphemeralPrivateKeyToStaticPublicKey();
  }

  /**
   * @return Inputs for creating a PublicKeyDiscovery Configuration.
   */
  public PublicKeyDiscoveryInput PublicKeyDiscovery() {
    return this.PublicKeyDiscovery;
  }

  /**
   * @return Inputs for creating a RawPrivateKeyToStaticPublicKey Configuration.
   */
  public RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey() {
    return this.RawPrivateKeyToStaticPublicKey;
  }

  /**
   * @return Inputs for creating a EphemeralPrivateKeyToStaticPublicKey Configuration.
   */
  public EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey() {
    return this.EphemeralPrivateKeyToStaticPublicKey;
  }

  public Builder toBuilder() {
    return new BuilderImpl(this);
  }

  public static Builder builder() {
    return new BuilderImpl();
  }

  public interface Builder {
    /**
     * @param PublicKeyDiscovery Inputs for creating a PublicKeyDiscovery Configuration.
     */
    Builder PublicKeyDiscovery(PublicKeyDiscoveryInput PublicKeyDiscovery);

    /**
     * @return Inputs for creating a PublicKeyDiscovery Configuration.
     */
    PublicKeyDiscoveryInput PublicKeyDiscovery();

    /**
     * @param RawPrivateKeyToStaticPublicKey Inputs for creating a RawPrivateKeyToStaticPublicKey Configuration.
     */
    Builder RawPrivateKeyToStaticPublicKey(
      RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey
    );

    /**
     * @return Inputs for creating a RawPrivateKeyToStaticPublicKey Configuration.
     */
    RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey();

    /**
     * @param EphemeralPrivateKeyToStaticPublicKey Inputs for creating a EphemeralPrivateKeyToStaticPublicKey Configuration.
     */
    Builder EphemeralPrivateKeyToStaticPublicKey(
      EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey
    );

    /**
     * @return Inputs for creating a EphemeralPrivateKeyToStaticPublicKey Configuration.
     */
    EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey();

    RawEcdhStaticConfigurations build();
  }

  static class BuilderImpl implements Builder {

    protected PublicKeyDiscoveryInput PublicKeyDiscovery;

    protected RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey;

    protected EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey;

    protected BuilderImpl() {}

    protected BuilderImpl(RawEcdhStaticConfigurations model) {
      this.PublicKeyDiscovery = model.PublicKeyDiscovery();
      this.RawPrivateKeyToStaticPublicKey =
        model.RawPrivateKeyToStaticPublicKey();
      this.EphemeralPrivateKeyToStaticPublicKey =
        model.EphemeralPrivateKeyToStaticPublicKey();
    }

    public Builder PublicKeyDiscovery(
      PublicKeyDiscoveryInput PublicKeyDiscovery
    ) {
      this.PublicKeyDiscovery = PublicKeyDiscovery;
      return this;
    }

    public PublicKeyDiscoveryInput PublicKeyDiscovery() {
      return this.PublicKeyDiscovery;
    }

    public Builder RawPrivateKeyToStaticPublicKey(
      RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey
    ) {
      this.RawPrivateKeyToStaticPublicKey = RawPrivateKeyToStaticPublicKey;
      return this;
    }

    public RawPrivateKeyToStaticPublicKeyInput RawPrivateKeyToStaticPublicKey() {
      return this.RawPrivateKeyToStaticPublicKey;
    }

    public Builder EphemeralPrivateKeyToStaticPublicKey(
      EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey
    ) {
      this.EphemeralPrivateKeyToStaticPublicKey =
        EphemeralPrivateKeyToStaticPublicKey;
      return this;
    }

    public EphemeralPrivateKeyToStaticPublicKeyInput EphemeralPrivateKeyToStaticPublicKey() {
      return this.EphemeralPrivateKeyToStaticPublicKey;
    }

    public RawEcdhStaticConfigurations build() {
      if (!onlyOneNonNull()) {
        throw new IllegalArgumentException(
          "`RawEcdhStaticConfigurations` is a Union. A Union MUST have one and only one value set."
        );
      }
      return new RawEcdhStaticConfigurations(this);
    }

    private boolean onlyOneNonNull() {
      Object[] allValues = {
        this.PublicKeyDiscovery,
        this.RawPrivateKeyToStaticPublicKey,
        this.EphemeralPrivateKeyToStaticPublicKey,
      };
      boolean haveOneNonNull = false;
      for (Object o : allValues) {
        if (Objects.nonNull(o)) {
          if (haveOneNonNull) {
            return false;
          }
          haveOneNonNull = true;
        }
      }
      return haveOneNonNull;
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy