public static final KeyTemplate eciesP256HkdfHmacSha256Aes128CtrHmacSha256Template() {
    return exceptionIsBug(
        () ->
            KeyTemplate.createFrom(
                EciesParameters.builder()
                    .setCurveType(EciesParameters.CurveType.NIST_P256)
                    .setHashType(EciesParameters.HashType.SHA256)
                    .setNistCurvePointFormat(EciesParameters.PointFormat.UNCOMPRESSED)
                    .setVariant(EciesParameters.Variant.TINK)
                    .setDemParameters(
                        AesCtrHmacAeadParameters.builder()
                            .setAesKeySizeBytes(16)
                            .setHmacKeySizeBytes(32)
                            .setTagSizeBytes(16)
                            .setIvSizeBytes(16)
                            .setHashType(AesCtrHmacAeadParameters.HashType.SHA256)
                            .setVariant(AesCtrHmacAeadParameters.Variant.NO_PREFIX)
                            .build())
                    .build()));
  }
@return a {@link KeyTemplate} that generates new instances of ECIES-AEAD-HKDF key pairs with
    the following parameters:
    <ul>
      <li>KEM: ECDH over NIST P-256
      <li>DEM: AES128-CTR-HMAC-SHA256 with the following parameters
          <ul>
            <li>AES key size: 16 bytes
            <li>AES CTR IV size: 16 bytes
            <li>HMAC key size: 32 bytes
            <li>HMAC tag size: 16 bytes
          </ul>
      <li>KDF: HKDF-HMAC-SHA256 with an empty salt
      <li>EC Point Format: Uncompressed
      <li>Prefix type: {@link KeyTemplate.OutputPrefixType#TINK}
    </ul>
java_src/src/main/java/com/google/crypto/tink/hybrid/EciesAeadHkdfPrivateKeyManager.java