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

Materials_Compile.__default Maven / Gradle / Ivy

There is a newer version: 1.9.0
Show newest version
// Class __default
// Dafny class __default compiled into Java
package Materials_Compile;

import software.amazon.cryptography.keystore.internaldafny.types.*;
import software.amazon.cryptography.materialproviders.internaldafny.types.*;
import AwsArnParsing_Compile.*;
import AwsKmsMrkMatchForDecrypt_Compile.*;
import AwsKmsUtils_Compile.*;
import KeyStoreErrorMessages_Compile.*;
import KmsArn_Compile.*;
import Structure_Compile.*;
import KMSKeystoreOperations_Compile.*;
import DDBKeystoreOperations_Compile.*;
import CreateKeys_Compile.*;
import CreateKeyStoreTable_Compile.*;
import GetKeys_Compile.*;
import AwsCryptographyKeyStoreOperations_Compile.*;
import software.amazon.cryptography.keystore.internaldafny.*;
import AlgorithmSuites_Compile.*;

@SuppressWarnings({"unchecked", "deprecation"})
public class __default {
  public __default() {
  }
  public static Wrappers_Compile.Result InitializeEncryptionMaterials(software.amazon.cryptography.materialproviders.internaldafny.types.InitializeEncryptionMaterialsInput input) {
    software.amazon.cryptography.materialproviders.internaldafny.types.InitializeEncryptionMaterialsInput _pat_let_tv0 = input;
    software.amazon.cryptography.materialproviders.internaldafny.types.InitializeEncryptionMaterialsInput _pat_let_tv1 = input;
    software.amazon.cryptography.materialproviders.internaldafny.types.InitializeEncryptionMaterialsInput _pat_let_tv2 = input;
    Wrappers_Compile.Outcome _0_valueOrError0 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), !((input).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD()), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Encryption Context ")));
    if ((_0_valueOrError0).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
      return (_0_valueOrError0).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
    } else {
      Wrappers_Compile.Outcome _1_valueOrError1 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((java.util.function.Function)(_2_input) -> dafny.Helpers.Quantifier(((_2_input).dtor_requiredEncryptionContextKeys()).UniqueElements(), true, ((_forall_var_0_boxed0) -> {
        dafny.DafnySequence _forall_var_0 = ((dafny.DafnySequence)(java.lang.Object)(_forall_var_0_boxed0));
        dafny.DafnySequence _3_key = (dafny.DafnySequence)_forall_var_0;
        if (UTF8.ValidUTF8Bytes._Is(_3_key)) {
          return !(((_2_input).dtor_requiredEncryptionContextKeys()).contains(_3_key)) || (((_2_input).dtor_encryptionContext()).>contains(_3_key));
        } else {
          return true;
        }
      }))).apply(input), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Required encryption context keys do not exist in provided encryption context.")));
      if ((_1_valueOrError1).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
        return (_1_valueOrError1).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
      } else {
        software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _4_suite = AlgorithmSuites_Compile.__default.GetSuite((input).dtor_algorithmSuiteId());
        Wrappers_Compile.Outcome _5_valueOrError2 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), (((_4_suite).dtor_signature()).is_ECDSA()) == ((((input).dtor_signingKey()).is_Some()) && (((input).dtor_verificationKey()).is_Some())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Missing signature key for signed suite.")));
        if ((_5_valueOrError2).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
          return (_5_valueOrError2).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
        } else {
          Wrappers_Compile.Outcome _6_valueOrError3 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), (((_4_suite).dtor_signature()).is_None()) == ((((input).dtor_signingKey()).is_None()) && (((input).dtor_verificationKey()).is_None())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Signature key not allowed for non-signed suites.")));
          if ((_6_valueOrError3).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
            return (_6_valueOrError3).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
          } else {
            Wrappers_Compile.Result, ? extends dafny.DafnySequence>, software.amazon.cryptography.materialproviders.internaldafny.types.Error> _7_valueOrError4 = ((java.util.function.Function, ? extends dafny.DafnySequence>, software.amazon.cryptography.materialproviders.internaldafny.types.Error>>)(_source0_boxed0) -> {
              software.amazon.cryptography.materialproviders.internaldafny.types.SignatureAlgorithm _source0 = ((software.amazon.cryptography.materialproviders.internaldafny.types.SignatureAlgorithm)(java.lang.Object)(_source0_boxed0));
              if (_source0.is_ECDSA()) {
                software.amazon.cryptography.materialproviders.internaldafny.types.ECDSA _8___mcc_h0 = ((software.amazon.cryptography.materialproviders.internaldafny.types.SignatureAlgorithm_ECDSA)_source0)._ECDSA;
                software.amazon.cryptography.materialproviders.internaldafny.types.ECDSA _9_curve = _8___mcc_h0;
                Wrappers_Compile.Result, software.amazon.cryptography.materialproviders.internaldafny.types.Error> _10_valueOrError5 = (UTF8.__default.Encode(Base64_Compile.__default.Encode(((_pat_let_tv0).dtor_verificationKey()).dtor_value()))).MapFailure(UTF8.ValidUTF8Bytes._typeDescriptor(), dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((java.util.function.Function, software.amazon.cryptography.materialproviders.internaldafny.types.Error>)(_11_e_boxed0) -> {
                  dafny.DafnySequence _11_e = ((dafny.DafnySequence)(java.lang.Object)(_11_e_boxed0));
                  return software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(_11_e);
                }));
                if ((_10_valueOrError5).IsFailure(UTF8.ValidUTF8Bytes._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
                  return (_10_valueOrError5)., ? extends dafny.DafnySequence>>PropagateFailure(UTF8.ValidUTF8Bytes._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), dafny.DafnyMap., dafny.DafnySequence>_typeDescriptor(UTF8.ValidUTF8Bytes._typeDescriptor(), UTF8.ValidUTF8Bytes._typeDescriptor()));
                } else {
                  dafny.DafnySequence _12_enc__vk = (_10_valueOrError5).Extract(UTF8.ValidUTF8Bytes._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor());
                  return Wrappers_Compile.Result., ? extends dafny.DafnySequence>, software.amazon.cryptography.materialproviders.internaldafny.types.Error>create_Success(dafny.DafnyMap., dafny.DafnySequence>_typeDescriptor(UTF8.ValidUTF8Bytes._typeDescriptor(), UTF8.ValidUTF8Bytes._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), dafny.DafnyMap., dafny.DafnySequence>update((_pat_let_tv1).dtor_encryptionContext(), __default.EC__PUBLIC__KEY__FIELD(), _12_enc__vk));
                }
              } else {
                software.amazon.cryptography.materialproviders.internaldafny.types.None _13___mcc_h2 = ((software.amazon.cryptography.materialproviders.internaldafny.types.SignatureAlgorithm_None)_source0)._None;
                software.amazon.cryptography.materialproviders.internaldafny.types.SignatureAlgorithm _14_None = (_4_suite).dtor_signature();
                return Wrappers_Compile.Result., ? extends dafny.DafnySequence>, software.amazon.cryptography.materialproviders.internaldafny.types.Error>create_Success(dafny.DafnyMap., dafny.DafnySequence>_typeDescriptor(UTF8.ValidUTF8Bytes._typeDescriptor(), UTF8.ValidUTF8Bytes._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), (_pat_let_tv2).dtor_encryptionContext());
              }
            }).apply((_4_suite).dtor_signature());
            if ((_7_valueOrError4).IsFailure(dafny.DafnyMap., dafny.DafnySequence>_typeDescriptor(UTF8.ValidUTF8Bytes._typeDescriptor(), UTF8.ValidUTF8Bytes._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
              return (_7_valueOrError4).PropagateFailure(dafny.DafnyMap., dafny.DafnySequence>_typeDescriptor(UTF8.ValidUTF8Bytes._typeDescriptor(), UTF8.ValidUTF8Bytes._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
            } else {
              dafny.DafnyMap, ? extends dafny.DafnySequence> _15_encryptionContext = (_7_valueOrError4).Extract(dafny.DafnyMap., dafny.DafnySequence>_typeDescriptor(UTF8.ValidUTF8Bytes._typeDescriptor(), UTF8.ValidUTF8Bytes._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor());
              return Wrappers_Compile.Result.create_Success(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials.create(_4_suite, _15_encryptionContext, dafny.DafnySequence. empty(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptedDataKey._typeDescriptor()), (input).dtor_requiredEncryptionContextKeys(), Wrappers_Compile.Option.>create_None(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), (input).dtor_signingKey(), ((((_4_suite).dtor_symmetricSignature()).is_None()) ? (Wrappers_Compile.Option.>>create_None(dafny.DafnySequence.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())))) : (Wrappers_Compile.Option.>>create_Some(dafny.DafnySequence.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), dafny.DafnySequence.> empty(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())))))));
            }
          }
        }
      }
    }
  }
  public static Wrappers_Compile.Result InitializeDecryptionMaterials(software.amazon.cryptography.materialproviders.internaldafny.types.InitializeDecryptionMaterialsInput input) {
    Wrappers_Compile.Outcome _0_valueOrError0 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((java.util.function.Function)(_1_input) -> dafny.Helpers.Quantifier(((_1_input).dtor_requiredEncryptionContextKeys()).UniqueElements(), true, ((_forall_var_0_boxed0) -> {
      dafny.DafnySequence _forall_var_0 = ((dafny.DafnySequence)(java.lang.Object)(_forall_var_0_boxed0));
      dafny.DafnySequence _2_key = (dafny.DafnySequence)_forall_var_0;
      if (UTF8.ValidUTF8Bytes._Is(_2_key)) {
        return !(((_1_input).dtor_requiredEncryptionContextKeys()).contains(_2_key)) || (((_1_input).dtor_encryptionContext()).>contains(_2_key));
      } else {
        return true;
      }
    }))).apply(input), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Reporoduced encryption context key did not exist in provided encryption context.")));
    if ((_0_valueOrError0).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
      return (_0_valueOrError0).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
    } else {
      software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _3_suite = AlgorithmSuites_Compile.__default.GetSuite((input).dtor_algorithmSuiteId());
      Wrappers_Compile.Outcome _4_valueOrError1 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), (((_3_suite).dtor_signature()).is_ECDSA()) == (((input).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Encryption Context missing verification key.")));
      if ((_4_valueOrError1).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
        return (_4_valueOrError1).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
      } else {
        Wrappers_Compile.Outcome _5_valueOrError2 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), (((_3_suite).dtor_signature()).is_None()) == (!((input).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(dafny.DafnySequence.asString("Verification key can not exist in non-signed Algorithm Suites.")));
        if ((_5_valueOrError2).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
          return (_5_valueOrError2).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
        } else {
          Wrappers_Compile.Result>, software.amazon.cryptography.materialproviders.internaldafny.types.Error> _6_valueOrError3 = __default.DecodeVerificationKey((input).dtor_encryptionContext());
          if ((_6_valueOrError3).IsFailure(Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
            return (_6_valueOrError3).PropagateFailure(Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
          } else {
            Wrappers_Compile.Option> _7_verificationKey = (_6_valueOrError3).Extract(Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor());
            return Wrappers_Compile.Result.create_Success(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials.create(_3_suite, (input).dtor_encryptionContext(), (input).dtor_requiredEncryptionContextKeys(), Wrappers_Compile.Option.>create_None(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), _7_verificationKey, Wrappers_Compile.Option.>create_None(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()))));
          }
        }
      }
    }
  }
  public static Wrappers_Compile.Result>, software.amazon.cryptography.materialproviders.internaldafny.types.Error> DecodeVerificationKey(dafny.DafnyMap, ? extends dafny.DafnySequence> encryptionContext) {
    if ((encryptionContext).>contains(__default.EC__PUBLIC__KEY__FIELD())) {
      dafny.DafnySequence _0_utf8Key = ((dafny.DafnySequence)(java.lang.Object)((encryptionContext).get(__default.EC__PUBLIC__KEY__FIELD())));
      Wrappers_Compile.Result, software.amazon.cryptography.materialproviders.internaldafny.types.Error> _1_valueOrError0 = (UTF8.__default.Decode(_0_utf8Key)).MapFailure(dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((java.util.function.Function, software.amazon.cryptography.materialproviders.internaldafny.types.Error>)(_2_e_boxed0) -> {
        dafny.DafnySequence _2_e = ((dafny.DafnySequence)(java.lang.Object)(_2_e_boxed0));
        return software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(_2_e);
      }));
      if ((_1_valueOrError0).IsFailure(dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
        return (_1_valueOrError0).>>PropagateFailure(dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())));
      } else {
        dafny.DafnySequence _3_base64Key = (_1_valueOrError0).Extract(dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor());
        Wrappers_Compile.Result, software.amazon.cryptography.materialproviders.internaldafny.types.Error> _4_valueOrError1 = (Base64_Compile.__default.Decode(_3_base64Key)).MapFailure(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), dafny.DafnySequence._typeDescriptor(dafny.TypeDescriptor.CHAR), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((java.util.function.Function, software.amazon.cryptography.materialproviders.internaldafny.types.Error>)(_5_e_boxed0) -> {
          dafny.DafnySequence _5_e = ((dafny.DafnySequence)(java.lang.Object)(_5_e_boxed0));
          return software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_AwsCryptographicMaterialProvidersException(_5_e);
        }));
        if ((_4_valueOrError1).IsFailure(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
          return (_4_valueOrError1).>>PropagateFailure(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())));
        } else {
          dafny.DafnySequence _6_key = (_4_valueOrError1).Extract(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor());
          return Wrappers_Compile.Result.>, software.amazon.cryptography.materialproviders.internaldafny.types.Error>create_Success(Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), Wrappers_Compile.Option.>create_Some(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), _6_key));
        }
      }
    } else {
      return Wrappers_Compile.Result.>, software.amazon.cryptography.materialproviders.internaldafny.types.Error>create_Success(Wrappers_Compile.Option.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), Wrappers_Compile.Option.>create_None(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())));
    }
  }
  public static boolean ValidEncryptionMaterialsTransition(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials oldMat, software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials newMat)
  {
    return ((((((((((java.util.Objects.equals((newMat).dtor_algorithmSuite(), (oldMat).dtor_algorithmSuite())) && (((newMat).dtor_encryptionContext()).equals((oldMat).dtor_encryptionContext()))) && (((newMat).dtor_requiredEncryptionContextKeys()).equals((oldMat).dtor_requiredEncryptionContextKeys()))) && (java.util.Objects.equals((newMat).dtor_signingKey(), (oldMat).dtor_signingKey()))) && (((((oldMat).dtor_plaintextDataKey()).is_None()) && (((newMat).dtor_plaintextDataKey()).is_Some())) || (java.util.Objects.equals((oldMat).dtor_plaintextDataKey(), (newMat).dtor_plaintextDataKey())))) && (((newMat).dtor_plaintextDataKey()).is_Some())) && ((java.math.BigInteger.valueOf(((oldMat).dtor_encryptedDataKeys()).length())).compareTo(java.math.BigInteger.valueOf(((newMat).dtor_encryptedDataKeys()).length())) <= 0)) && ((((oldMat).dtor_encryptedDataKeys()).asDafnyMultiset()).isSubsetOf(((newMat).dtor_encryptedDataKeys()).asDafnyMultiset()))) && (!(!((((oldMat).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None())) || (((((newMat).dtor_symmetricSigningKeys()).is_Some()) && (((oldMat).dtor_symmetricSigningKeys()).is_Some())) && (((((oldMat).dtor_symmetricSigningKeys()).dtor_value()).asDafnyMultiset()).isSubsetOf((((newMat).dtor_symmetricSigningKeys()).dtor_value()).asDafnyMultiset()))))) && (__default.ValidEncryptionMaterials(oldMat))) && (__default.ValidEncryptionMaterials(newMat));
  }
  public static boolean ValidEncryptionMaterials(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials encryptionMaterials) {
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv0 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv1 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv2 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv3 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv4 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv5 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv6 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv7 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv8 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv9 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv10 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv11 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv12 = encryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials _pat_let_tv13 = encryptionMaterials;
    return (AlgorithmSuites_Compile.__default.AlgorithmSuite_q((encryptionMaterials).dtor_algorithmSuite())) && (((boolean)(java.lang.Object)(dafny.Helpers.Let((encryptionMaterials).dtor_algorithmSuite(), boxed4 -> {
      software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _pat_let2_0 = ((software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo)(java.lang.Object)(boxed4));
      return ((boolean)(java.lang.Object)(dafny.Helpers.Let(_pat_let2_0, boxed5 -> {
        software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _0_suite = ((software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo)(java.lang.Object)(boxed5));
        return ((((((((((((_0_suite).dtor_signature()).is_None()) == (((_pat_let_tv0).dtor_signingKey()).is_None())) && (!(((_pat_let_tv1).dtor_plaintextDataKey()).is_Some()) || (java.util.Objects.equals(java.math.BigInteger.valueOf(AlgorithmSuites_Compile.__default.GetEncryptKeyLength(_0_suite)), java.math.BigInteger.valueOf((((_pat_let_tv2).dtor_plaintextDataKey()).dtor_value()).length()))))) && (!(((_pat_let_tv3).dtor_plaintextDataKey()).is_None()) || ((java.math.BigInteger.valueOf(((_pat_let_tv4).dtor_encryptedDataKeys()).length())).signum() == 0))) && ((!(((_0_suite).dtor_signature()).is_None())) == (((_pat_let_tv5).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD())))) && ((((_0_suite).dtor_signature()).is_ECDSA()) == (((_pat_let_tv6).dtor_signingKey()).is_Some()))) && ((!(((_0_suite).dtor_signature()).is_None())) == (((_pat_let_tv7).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD())))) && (!((((_0_suite).dtor_symmetricSignature()).is_HMAC()) && (((_pat_let_tv8).dtor_symmetricSigningKeys()).is_Some())) || (java.util.Objects.equals(java.math.BigInteger.valueOf((((_pat_let_tv9).dtor_symmetricSigningKeys()).dtor_value()).length()), java.math.BigInteger.valueOf(((_pat_let_tv10).dtor_encryptedDataKeys()).length()))))) && (!(((_0_suite).dtor_symmetricSignature()).is_HMAC()) || (((_pat_let_tv11).dtor_symmetricSigningKeys()).is_Some()))) && (!(((_0_suite).dtor_symmetricSignature()).is_None()) || (((_pat_let_tv12).dtor_symmetricSigningKeys()).is_None()))) && (((java.util.function.Function)(_1_encryptionMaterials) -> dafny.Helpers.Quantifier(((_1_encryptionMaterials).dtor_requiredEncryptionContextKeys()).UniqueElements(), true, ((_forall_var_0_boxed0) -> {
          dafny.DafnySequence _forall_var_0 = ((dafny.DafnySequence)(java.lang.Object)(_forall_var_0_boxed0));
          dafny.DafnySequence _2_key = (dafny.DafnySequence)_forall_var_0;
          if (UTF8.ValidUTF8Bytes._Is(_2_key)) {
            return !(((_1_encryptionMaterials).dtor_requiredEncryptionContextKeys()).contains(_2_key)) || (((_1_encryptionMaterials).dtor_encryptionContext()).>contains(_2_key));
          } else {
            return true;
          }
        }))).apply(_pat_let_tv13));
      }
      )));
    }
    ))));
  }
  public static boolean EncryptionMaterialsHasPlaintextDataKey(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials encryptionMaterials) {
    return ((((encryptionMaterials).dtor_plaintextDataKey()).is_Some()) && ((java.math.BigInteger.valueOf(((encryptionMaterials).dtor_encryptedDataKeys()).length())).signum() == 1)) && (__default.ValidEncryptionMaterials(encryptionMaterials));
  }
  public static Wrappers_Compile.Result EncryptionMaterialAddEncryptedDataKeys(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials encryptionMaterials, dafny.DafnySequence encryptedDataKeysToAdd, Wrappers_Compile.Option>> symmetricSigningKeysToAdd)
  {
    Wrappers_Compile.Outcome _0_valueOrError0 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), __default.ValidEncryptionMaterials(encryptionMaterials), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Attempt to modify invalid encryption material.")));
    if ((_0_valueOrError0).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
      return (_0_valueOrError0).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
    } else {
      Wrappers_Compile.Outcome _1_valueOrError1 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((encryptionMaterials).dtor_plaintextDataKey()).is_Some(), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Adding encrypted data keys without a plaintext data key is not allowed.")));
      if ((_1_valueOrError1).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
        return (_1_valueOrError1).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
      } else {
        Wrappers_Compile.Outcome _2_valueOrError2 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), !((symmetricSigningKeysToAdd).is_None()) || ((((encryptionMaterials).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None()), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Adding encrypted data keys without a symmetric signing key when using symmetric signing is not allowed.")));
        if ((_2_valueOrError2).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
          return (_2_valueOrError2).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
        } else {
          Wrappers_Compile.Outcome _3_valueOrError3 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), !((symmetricSigningKeysToAdd).is_Some()) || (!((((encryptionMaterials).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Adding encrypted data keys with a symmetric signing key when not using symmetric signing is not allowed.")));
          if ((_3_valueOrError3).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
            return (_3_valueOrError3).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
          } else {
            Wrappers_Compile.Option>> _4_symmetricSigningKeys = (((symmetricSigningKeysToAdd).is_None()) ? ((encryptionMaterials).dtor_symmetricSigningKeys()) : (Wrappers_Compile.Option.>>create_Some(dafny.DafnySequence.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), dafny.DafnySequence.>concatenate(((encryptionMaterials).dtor_symmetricSigningKeys()).dtor_value(), (symmetricSigningKeysToAdd).dtor_value()))));
            return Wrappers_Compile.Result.create_Success(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials.create((encryptionMaterials).dtor_algorithmSuite(), (encryptionMaterials).dtor_encryptionContext(), dafny.DafnySequence.concatenate((encryptionMaterials).dtor_encryptedDataKeys(), encryptedDataKeysToAdd), (encryptionMaterials).dtor_requiredEncryptionContextKeys(), (encryptionMaterials).dtor_plaintextDataKey(), (encryptionMaterials).dtor_signingKey(), _4_symmetricSigningKeys));
          }
        }
      }
    }
  }
  public static Wrappers_Compile.Result EncryptionMaterialAddDataKey(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials encryptionMaterials, dafny.DafnySequence plaintextDataKey, dafny.DafnySequence encryptedDataKeysToAdd, Wrappers_Compile.Option>> symmetricSigningKeysToAdd)
  {
    software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _0_suite = (encryptionMaterials).dtor_algorithmSuite();
    Wrappers_Compile.Outcome _1_valueOrError0 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), __default.ValidEncryptionMaterials(encryptionMaterials), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Attempt to modify invalid encryption material.")));
    if ((_1_valueOrError0).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
      return (_1_valueOrError0).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
    } else {
      Wrappers_Compile.Outcome _2_valueOrError1 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((encryptionMaterials).dtor_plaintextDataKey()).is_None(), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Attempt to modify plaintextDataKey.")));
      if ((_2_valueOrError1).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
        return (_2_valueOrError1).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
      } else {
        Wrappers_Compile.Outcome _3_valueOrError2 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), java.util.Objects.equals(java.math.BigInteger.valueOf(AlgorithmSuites_Compile.__default.GetEncryptKeyLength(_0_suite)), java.math.BigInteger.valueOf((plaintextDataKey).length())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("plaintextDataKey does not match Algorithm Suite specification.")));
        if ((_3_valueOrError2).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
          return (_3_valueOrError2).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
        } else {
          Wrappers_Compile.Outcome _4_valueOrError3 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((symmetricSigningKeysToAdd).is_None()) == ((((encryptionMaterials).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None()), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Adding encrypted data keys without a symmetric signing key when using symmetric signing is not allowed.")));
          if ((_4_valueOrError3).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
            return (_4_valueOrError3).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
          } else {
            Wrappers_Compile.Outcome _5_valueOrError4 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((symmetricSigningKeysToAdd).is_Some()) == (!((((encryptionMaterials).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidEncryptionMaterialsTransition(dafny.DafnySequence.asString("Adding encrypted data keys with a symmetric signing key when not using symmetric signing is not allowed.")));
            if ((_5_valueOrError4).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
              return (_5_valueOrError4).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor());
            } else {
              Wrappers_Compile.Option>> _6_symmetricSigningKeys = (((symmetricSigningKeysToAdd).is_None()) ? ((encryptionMaterials).dtor_symmetricSigningKeys()) : (Wrappers_Compile.Option.>>create_Some(dafny.DafnySequence.>_typeDescriptor(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor())), dafny.DafnySequence.>concatenate(((encryptionMaterials).dtor_symmetricSigningKeys()).dtor_value(), (symmetricSigningKeysToAdd).dtor_value()))));
              return Wrappers_Compile.Result.create_Success(software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.EncryptionMaterials.create((encryptionMaterials).dtor_algorithmSuite(), (encryptionMaterials).dtor_encryptionContext(), dafny.DafnySequence.concatenate((encryptionMaterials).dtor_encryptedDataKeys(), encryptedDataKeysToAdd), (encryptionMaterials).dtor_requiredEncryptionContextKeys(), Wrappers_Compile.Option.>create_Some(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), plaintextDataKey), (encryptionMaterials).dtor_signingKey(), _6_symmetricSigningKeys));
            }
          }
        }
      }
    }
  }
  public static boolean DecryptionMaterialsTransitionIsValid(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials oldMat, software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials newMat)
  {
    return ((((((((java.util.Objects.equals((newMat).dtor_algorithmSuite(), (oldMat).dtor_algorithmSuite())) && (((newMat).dtor_encryptionContext()).equals((oldMat).dtor_encryptionContext()))) && (((newMat).dtor_requiredEncryptionContextKeys()).equals((oldMat).dtor_requiredEncryptionContextKeys()))) && (java.util.Objects.equals((newMat).dtor_verificationKey(), (oldMat).dtor_verificationKey()))) && (((oldMat).dtor_plaintextDataKey()).is_None())) && (((newMat).dtor_plaintextDataKey()).is_Some())) && (((oldMat).dtor_symmetricSigningKey()).is_None())) && (__default.ValidDecryptionMaterials(oldMat))) && (__default.ValidDecryptionMaterials(newMat));
  }
  public static boolean ValidDecryptionMaterials(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials decryptionMaterials) {
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv0 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv1 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv2 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv3 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv4 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv5 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv6 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv7 = decryptionMaterials;
    software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials _pat_let_tv8 = decryptionMaterials;
    return (AlgorithmSuites_Compile.__default.AlgorithmSuite_q((decryptionMaterials).dtor_algorithmSuite())) && (((boolean)(java.lang.Object)(dafny.Helpers.Let((decryptionMaterials).dtor_algorithmSuite(), boxed6 -> {
      software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _pat_let3_0 = ((software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo)(java.lang.Object)(boxed6));
      return ((boolean)(java.lang.Object)(dafny.Helpers.Let(_pat_let3_0, boxed7 -> {
        software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _0_suite = ((software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo)(java.lang.Object)(boxed7));
        return ((((((!(((_pat_let_tv0).dtor_plaintextDataKey()).is_Some()) || (java.util.Objects.equals(java.math.BigInteger.valueOf(AlgorithmSuites_Compile.__default.GetEncryptKeyLength(_0_suite)), java.math.BigInteger.valueOf((((_pat_let_tv1).dtor_plaintextDataKey()).dtor_value()).length())))) && ((!(((_0_suite).dtor_signature()).is_None())) == (((_pat_let_tv2).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD())))) && ((((_0_suite).dtor_signature()).is_ECDSA()) == (((_pat_let_tv3).dtor_verificationKey()).is_Some()))) && ((!(((_0_suite).dtor_signature()).is_None())) == (((_pat_let_tv4).dtor_encryptionContext()).>contains(__default.EC__PUBLIC__KEY__FIELD())))) && (!(!(((_0_suite).dtor_symmetricSignature()).is_None())) || ((((_pat_let_tv5).dtor_plaintextDataKey()).is_Some()) == (((_pat_let_tv6).dtor_symmetricSigningKey()).is_Some())))) && (!(((_0_suite).dtor_symmetricSignature()).is_None()) || (((_pat_let_tv7).dtor_symmetricSigningKey()).is_None()))) && (((java.util.function.Function)(_1_decryptionMaterials) -> dafny.Helpers.Quantifier(((_1_decryptionMaterials).dtor_requiredEncryptionContextKeys()).UniqueElements(), true, ((_forall_var_0_boxed0) -> {
          dafny.DafnySequence _forall_var_0 = ((dafny.DafnySequence)(java.lang.Object)(_forall_var_0_boxed0));
          dafny.DafnySequence _2_k = (dafny.DafnySequence)_forall_var_0;
          if (UTF8.ValidUTF8Bytes._Is(_2_k)) {
            return !(((_1_decryptionMaterials).dtor_requiredEncryptionContextKeys()).contains(_2_k)) || (((_1_decryptionMaterials).dtor_encryptionContext()).>contains(_2_k));
          } else {
            return true;
          }
        }))).apply(_pat_let_tv8));
      }
      )));
    }
    ))));
  }
  public static Wrappers_Compile.Result DecryptionMaterialsAddDataKey(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials decryptionMaterials, dafny.DafnySequence plaintextDataKey, Wrappers_Compile.Option> symmetricSigningKey)
  {
    software.amazon.cryptography.materialproviders.internaldafny.types.AlgorithmSuiteInfo _0_suite = (decryptionMaterials).dtor_algorithmSuite();
    Wrappers_Compile.Outcome _1_valueOrError0 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), __default.ValidDecryptionMaterials(decryptionMaterials), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidDecryptionMaterialsTransition(dafny.DafnySequence.asString("Attempt to modify invalid decryption material.")));
    if ((_1_valueOrError0).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
      return (_1_valueOrError0).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
    } else {
      Wrappers_Compile.Outcome _2_valueOrError1 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((decryptionMaterials).dtor_plaintextDataKey()).is_None(), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidDecryptionMaterialsTransition(dafny.DafnySequence.asString("Attempt to modify plaintextDataKey.")));
      if ((_2_valueOrError1).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
        return (_2_valueOrError1).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
      } else {
        Wrappers_Compile.Outcome _3_valueOrError2 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), java.util.Objects.equals(java.math.BigInteger.valueOf(AlgorithmSuites_Compile.__default.GetEncryptKeyLength(_0_suite)), java.math.BigInteger.valueOf((plaintextDataKey).length())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidDecryptionMaterialsTransition(dafny.DafnySequence.asString("plaintextDataKey does not match Algorithm Suite specification.")));
        if ((_3_valueOrError2).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
          return (_3_valueOrError2).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
        } else {
          Wrappers_Compile.Outcome _4_valueOrError3 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((symmetricSigningKey).is_Some()) == (!((((decryptionMaterials).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None())), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidDecryptionMaterialsTransition(dafny.DafnySequence.asString("symmetric signature key must be added with plaintextDataKey if using an algorithm suite with symmetric signing.")));
          if ((_4_valueOrError3).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
            return (_4_valueOrError3).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
          } else {
            Wrappers_Compile.Outcome _5_valueOrError4 = Wrappers_Compile.__default.Need(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), ((symmetricSigningKey).is_None()) == ((((decryptionMaterials).dtor_algorithmSuite()).dtor_symmetricSignature()).is_None()), software.amazon.cryptography.materialproviders.internaldafny.types.Error.create_InvalidDecryptionMaterialsTransition(dafny.DafnySequence.asString("symmetric signature key cannot be added with plaintextDataKey if using an algorithm suite without symmetric signing.")));
            if ((_5_valueOrError4).IsFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor())) {
              return (_5_valueOrError4).PropagateFailure(software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor());
            } else {
              return Wrappers_Compile.Result.create_Success(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.Error._typeDescriptor(), software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials.create((decryptionMaterials).dtor_algorithmSuite(), (decryptionMaterials).dtor_encryptionContext(), (decryptionMaterials).dtor_requiredEncryptionContextKeys(), Wrappers_Compile.Option.>create_Some(dafny.DafnySequence._typeDescriptor(BoundedInts_Compile.uint8._typeDescriptor()), plaintextDataKey), (decryptionMaterials).dtor_verificationKey(), symmetricSigningKey));
            }
          }
        }
      }
    }
  }
  public static boolean DecryptionMaterialsWithoutPlaintextDataKey(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials decryptionMaterials) {
    return (((decryptionMaterials).dtor_plaintextDataKey()).is_None()) && (__default.ValidDecryptionMaterials(decryptionMaterials));
  }
  public static boolean DecryptionMaterialsWithPlaintextDataKey(software.amazon.cryptography.materialproviders.internaldafny.types.DecryptionMaterials decryptionMaterials) {
    return (((decryptionMaterials).dtor_plaintextDataKey()).is_Some()) && (__default.ValidDecryptionMaterials(decryptionMaterials));
  }
  public static dafny.DafnySequence EC__PUBLIC__KEY__FIELD()
  {
    dafny.DafnySequence _0_s = dafny.DafnySequence. of((byte) 97, (byte) 119, (byte) 115, (byte) 45, (byte) 99, (byte) 114, (byte) 121, (byte) 112, (byte) 116, (byte) 111, (byte) 45, (byte) 112, (byte) 117, (byte) 98, (byte) 108, (byte) 105, (byte) 99, (byte) 45, (byte) 107, (byte) 101, (byte) 121);
    return _0_s;
  }
  public static dafny.DafnySet> RESERVED__KEY__VALUES()
  {
    return dafny.DafnySet.> of(__default.EC__PUBLIC__KEY__FIELD());
  }
  @Override
  public java.lang.String toString() {
    return "Materials._default";
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy