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

software.amazon.cryptography.materialproviders.BranchKeyIdSupplier 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;

import Wrappers_Compile.Result;
import java.lang.IllegalArgumentException;
import java.lang.RuntimeException;
import java.util.Objects;
import software.amazon.cryptography.materialproviders.internaldafny.types.Error;
import software.amazon.cryptography.materialproviders.model.GetBranchKeyIdInput;
import software.amazon.cryptography.materialproviders.model.GetBranchKeyIdOutput;

public final class BranchKeyIdSupplier implements IBranchKeyIdSupplier {

  private final software.amazon.cryptography.materialproviders.internaldafny.types.IBranchKeyIdSupplier _impl;

  private BranchKeyIdSupplier(
    software.amazon.cryptography.materialproviders.internaldafny.types.IBranchKeyIdSupplier iBranchKeyIdSupplier
  ) {
    Objects.requireNonNull(
      iBranchKeyIdSupplier,
      "Missing value for required argument `iBranchKeyIdSupplier`"
    );
    this._impl = iBranchKeyIdSupplier;
  }

  public static BranchKeyIdSupplier wrap(
    software.amazon.cryptography.materialproviders.internaldafny.types.IBranchKeyIdSupplier iBranchKeyIdSupplier
  ) {
    return new BranchKeyIdSupplier(iBranchKeyIdSupplier);
  }

  public static  BranchKeyIdSupplier wrap(
    I iBranchKeyIdSupplier
  ) {
    Objects.requireNonNull(
      iBranchKeyIdSupplier,
      "Missing value for required argument `iBranchKeyIdSupplier`"
    );
    if (
      iBranchKeyIdSupplier instanceof
      software.amazon.cryptography.materialproviders.BranchKeyIdSupplier
    ) {
      return ((BranchKeyIdSupplier) iBranchKeyIdSupplier);
    }
    return BranchKeyIdSupplier.wrap(new NativeWrapper(iBranchKeyIdSupplier));
  }

  public software.amazon.cryptography.materialproviders.internaldafny.types.IBranchKeyIdSupplier impl() {
    return this._impl;
  }

  /**
   * Given the Encryption Context associated with this encryption or decryption, returns the branch key that should be responsible for unwrapping or wrapping the data key.
   *
   * @param input Inputs for determining the Branch Key which should be used to wrap or unwrap the data key for this encryption or decryption
   * @return Outputs for the Branch Key responsible for wrapping or unwrapping the data key in this encryption or decryption.
   */
  public GetBranchKeyIdOutput GetBranchKeyId(GetBranchKeyIdInput input) {
    software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdInput dafnyValue =
      ToDafny.GetBranchKeyIdInput(input);
    Result<
      software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdOutput,
      Error
    > result = this._impl.GetBranchKeyId(dafnyValue);
    if (result.is_Failure()) {
      throw ToNative.Error(result.dtor_error());
    }
    return ToNative.GetBranchKeyIdOutput(result.dtor_value());
  }

  protected static final class NativeWrapper
    implements
      software.amazon.cryptography.materialproviders.internaldafny.types.IBranchKeyIdSupplier {

    protected final IBranchKeyIdSupplier _impl;

    NativeWrapper(IBranchKeyIdSupplier nativeImpl) {
      if (nativeImpl instanceof BranchKeyIdSupplier) {
        throw new IllegalArgumentException(
          "Recursive wrapping is strictly forbidden."
        );
      }
      this._impl = nativeImpl;
    }

    public Result<
      software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdOutput,
      Error
    > GetBranchKeyId(
      software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdInput dafnyInput
    ) {
      try {
        GetBranchKeyIdInput nativeInput = ToNative.GetBranchKeyIdInput(
          dafnyInput
        );
        GetBranchKeyIdOutput nativeOutput =
          this._impl.GetBranchKeyId(nativeInput);
        software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdOutput dafnyOutput =
          ToDafny.GetBranchKeyIdOutput(nativeOutput);
        return Result.create_Success(
          software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdOutput._typeDescriptor(),
          Error._typeDescriptor(),
          dafnyOutput
        );
      } catch (RuntimeException ex) {
        return Result.create_Failure(
          software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdOutput._typeDescriptor(),
          Error._typeDescriptor(),
          ToDafny.Error(ex)
        );
      }
    }

    public Result<
      software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdOutput,
      Error
    > GetBranchKeyId_k(
      software.amazon.cryptography.materialproviders.internaldafny.types.GetBranchKeyIdInput dafnyInput
    ) {
      throw new RuntimeException("Not supported at this time.");
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy