# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

# Package: crypto/mbedtls

syscfg.defs:
  # Enabled curves
  MBEDTLS_ECP_DP_SECP192R1:
    value: 0
  MBEDTLS_ECP_DP_SECP224R1:
    value: 1
  MBEDTLS_ECP_DP_SECP256R1:
    value: 0
  MBEDTLS_ECP_DP_SECP384R1:
    value: 0
  MBEDTLS_ECP_DP_SECP521R1:
    value: 0
  MBEDTLS_ECP_DP_SECP192K1:
    value: 0
  MBEDTLS_ECP_DP_SECP224K1:
    value: 0
  MBEDTLS_ECP_DP_SECP256K1:
    value: 0
  MBEDTLS_ECP_DP_BP256R1:
    value: 0
  MBEDTLS_ECP_DP_BP384R1:
    value: 0
  MBEDTLS_ECP_DP_BP512R1:
    value: 0
  MBEDTLS_ECP_DP_CURVE25519:
    value: 0

  # Ciphers
  MBEDTLS_AES_C:
    value: 1
  MBEDTLS_ARC4_C:
    value: 0
  MBEDTLS_BLOWFISH_C:
    value: 0
  MBEDTLS_CAMELLIA_C:
    value: 0
  MBEDTLS_DES_C:
    description: '3DES'
    value: 0

  # Random number generator based on AES-256
  MBEDTLS_CTR_DRBG_C:
    value: 0

  # NIST key-wrap algo
  MBEDTLS_NIST_KW_C:
    value: 0

  # Stream ciphers
  MBEDTLS_CHACHA20_C:
    value: 0
  MBEDTLS_CHACHAPOLY_C:
    value: 0

  # MAC
  MBEDTLS_POLY1305_C:
    value: 0

  # Cipher modes
  MBEDTLS_CIPHER_MODE_CBC:
    value: 0
  MBEDTLS_CIPHER_MODE_CFB:
    value: 0
  MBEDTLS_CIPHER_MODE_CTR:
    value: 0
  MBEDTLS_CIPHER_MODE_OFB:
    value: 0
  MBEDTLS_CIPHER_MODE_XTS:
    value: 0
  MBEDTLS_CCM_C:
    value: 0

  # Hash functions
  MBEDTLS_MD5_C:
    value: 0
  MBEDTLS_SHA1_C:
    value: 0
  MBEDTLS_SHA512_C:
    value: 0
  MBEDTLS_RIPEMD160_C:
    value: 0

  # HKDF
  MBEDTLS_HKDF_C:
    value: 0

  # base64 encoding (required for PEM)
  MBEDTLS_BASE64_C:
    value: 1

  # Timing interface - FIXME: better disable by default?
  MBEDTLS_TIMING_C:
    value: 0

  MBEDTLS_ENTROPY_C:
    value: 1

  # PKCS#1 v1.5 not supported by MCUBoot
  MBEDTLS_PKCS1_V15:
    value: 1
  MBEDTLS_PKCS1_V21:
    value: 1

  # Prime numbers generation
  MBEDTLS_GENPRIME:
    value: 0

  # Key-exchange mechanisms
  MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED:
    value: 0
  MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED:
    value: 0
  MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED:
    value: 0
  MBEDTLS_KEY_EXCHANGE_RSA_ENABLED:
    value: 0

  # SSL/TLS support
  MBEDTLS_SSL_TLS_C:
    value: 0
