From 463c58a18d3144cb3f362fcbf3f55ba13696b9b9 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 6 May 2020 14:59:37 +0200 Subject: [PATCH 01/20] Update mbed headers to 5.15.3-rc1 --- .../atmel-rf-driver/NanostackRfPhyAtmel.h | 46 + .../atmel-rf-driver/source/AT86RF215Reg.h | 262 ++++++ .../atmel-rf-driver/source/AT86RFReg.h | 1 + .../atmel-rf-driver/source/rfbits.h | 73 ++ .../stm-s2lp-rf-driver/NanostackRfPhys2lp.h | 74 +- .../crypto_platform_spe.h | 4 +- .../crypto/COMPONENT_SPE/crypto_spe.h | 4 +- .../blockdevice/COMPONENT_SD/SDBlockDevice.h | 12 +- .../wifi/esp8266-driver/ESP8266/ESP8266.h | 14 +- .../wifi/esp8266-driver/ESP8266Interface.h | 41 +- cores/arduino/mbed/drivers/AnalogIn.h | 8 +- cores/arduino/mbed/drivers/AnalogOut.h | 14 +- cores/arduino/mbed/drivers/CAN.h | 19 +- cores/arduino/mbed/drivers/I2C.h | 7 + cores/arduino/mbed/drivers/I2CSlave.h | 7 + cores/arduino/mbed/drivers/PwmOut.h | 34 + cores/arduino/mbed/drivers/QSPI.h | 16 + cores/arduino/mbed/drivers/SPIMaster.h | 39 + cores/arduino/mbed/drivers/SPISlave.h | 9 + cores/arduino/mbed/drivers/Serial.h | 22 + cores/arduino/mbed/drivers/SerialBase.h | 72 +- cores/arduino/mbed/drivers/UARTSerial.h | 7 + .../cellular/framework/API/CellularContext.h | 6 + .../cellular/framework/API/CellularDevice.h | 33 +- .../cellular/framework/API/CellularSMS.h | 4 + .../cellular/framework/AT/ATHandler.h | 8 + .../framework/AT/AT_CellularContext.h | 3 + .../cellular/framework/AT/AT_CellularDevice.h | 34 +- .../framework/AT/AT_CellularNetwork.h | 7 + .../cellular/framework/AT/AT_CellularSMS.h | 4 + .../cellular/framework/AT/AT_CellularStack.h | 7 +- .../mbed-coap/mbed-coap/sn_config.h | 15 +- .../mbed-client-libservice/ip6string.h | 2 +- .../mbed/features/lwipstack/LWIPStack.h | 30 +- .../mbed/features/lwipstack/lwipopts.h | 4 +- .../mbedtls/inc/mbedtls/check_config.h | 26 +- .../features/mbedtls/inc/mbedtls/config.h | 35 +- .../mbed/features/mbedtls/inc/mbedtls/error.h | 8 +- .../features/mbedtls/inc/mbedtls/pkcs11.h | 121 ++- .../mbedtls/inc/mbedtls/ssl_internal.h | 45 +- .../features/mbedtls/inc/mbedtls/version.h | 8 +- .../mbedtls/mbed-crypto/inc/mbedtls/asn1.h | 389 +++++++-- .../mbed-crypto/inc/mbedtls/asn1write.h | 27 +- .../mbedtls/mbed-crypto/inc/mbedtls/bignum.h | 20 +- .../mbed-crypto/inc/mbedtls/ctr_drbg.h | 282 ++++-- .../mbed-crypto/inc/mbedtls/hmac_drbg.h | 309 ++++--- .../mbed-crypto/inc/mbedtls/md_internal.h | 37 +- .../mbedtls/mbed-crypto/inc/mbedtls/pk.h | 76 +- .../mbed-crypto/inc/mbedtls/psa_util.h | 210 ++--- .../mbedtls/mbed-crypto/inc/mbedtls/rsa.h | 9 +- .../mbedtls/mbed-crypto/inc/mbedtls/sha512.h | 18 +- .../mbedtls/mbed-crypto/inc/psa/crypto.h | 807 ++++++++++-------- .../mbed-crypto/inc/psa/crypto_compat.h | 196 +++++ .../mbed-crypto/inc/psa/crypto_extra.h | 80 +- .../mbed-crypto/inc/psa/crypto_se_driver.h | 8 + .../mbed-crypto/inc/psa/crypto_sizes.h | 80 +- .../mbed-crypto/inc/psa/crypto_types.h | 37 +- .../mbed-crypto/inc/psa/crypto_values.h | 293 ++++--- .../COMPONENT_NSPE/crypto_struct.h | 7 +- .../COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h | 6 + .../COMPONENT_SPE/crypto_struct_spe.h | 12 +- .../mbedtls/platform/inc/shared_rng.h | 93 ++ .../coap-service/coap_service_api.h | 10 +- .../coap-service/unittest/stub/mbedtls_stub.h | 2 + .../mbed-mesh-api/MeshInterfaceNanostack.h | 15 +- .../sal-stack-nanostack/nanostack/fhss_api.h | 3 +- .../nanostack/fhss_config.h | 5 +- .../nanostack/fhss_test_api.h | 46 + .../nanostack/fhss_ws_extension.h | 9 + .../nanostack/mac_common_defines.h | 1 + .../sal-stack-nanostack/nanostack/mlme.h | 2 + .../sal-stack-nanostack/nanostack/ns_sha256.h | 16 +- .../nanostack/nwk_stats_api.h | 4 +- .../nanostack/platform/arm_hal_phy.h | 19 +- .../nanostack/socket_api.h | 63 +- .../sal-stack-nanostack/nanostack/sw_mac.h | 7 + .../nanostack/ws_bbr_api.h | 97 ++- .../nanostack/ws_management_api.h | 300 ++++++- .../6LoWPAN/Bootstraps/protocol_6lowpan.h | 2 + .../Bootstraps/protocol_6lowpan_interface.h | 2 + .../6LoWPAN/IPHC_Decode/lowpan_context.h | 2 +- .../source/6LoWPAN/MAC/mac_helper.h | 6 + .../6LoWPAN/Thread/thread_neighbor_class.h | 2 +- .../6LoWPAN/lowpan_adaptation_interface.h | 4 +- .../source/6LoWPAN/ws/ws_bbr_api_internal.h | 7 +- .../source/6LoWPAN/ws/ws_bootstrap.h | 6 +- .../source/6LoWPAN/ws/ws_cfg_settings.h | 184 ++++ .../source/6LoWPAN/ws/ws_common.h | 85 +- .../source/6LoWPAN/ws/ws_common_defines.h | 66 +- .../source/6LoWPAN/ws/ws_config.h | 101 ++- .../source/6LoWPAN/ws/ws_eapol_pdu.h | 20 +- .../source/6LoWPAN/ws/ws_neighbor_class.h | 1 - .../source/6LoWPAN/ws/ws_pae_auth.h | 30 +- .../source/6LoWPAN/ws/ws_pae_controller.h | 55 +- .../source/6LoWPAN/ws/ws_pae_lib.h | 35 +- .../source/6LoWPAN/ws/ws_pae_nvm_data.h | 13 +- .../source/6LoWPAN/ws/ws_pae_supp.h | 60 +- .../source/6LoWPAN/ws/ws_pae_timers.h | 35 +- .../source/Common_Protocols/icmpv6.h | 1 + .../source/Core/include/ns_buffer.h | 2 +- .../source/Core/include/ns_error_types.h | 4 +- .../source/Core/include/ns_socket.h | 6 +- .../DHCPv6_Server/DHCPv6_server_service.h | 4 +- .../source/DHCPv6_client/dhcpv6_client_api.h | 7 +- .../source/MAC/IEEE802_15_4/mac_defines.h | 5 + .../source/MAC/IEEE802_15_4/mac_mlme.h | 2 +- .../MAC/IEEE802_15_4/mac_security_mib.h | 6 +- .../source/NWK_INTERFACE/Include/protocol.h | 1 + .../NWK_INTERFACE/Include/protocol_stats.h | 1 + .../source/RPL/rpl_control.h | 36 +- .../source/RPL/rpl_downward.h | 3 +- .../source/RPL/rpl_objective.h | 5 +- .../source/RPL/rpl_policy.h | 8 + .../source/RPL/rpl_structures.h | 10 +- .../source/RPL/rpl_upward.h | 11 +- .../source/Security/kmp/kmp_api.h | 60 +- .../eap_tls_sec_prot/supp_eap_tls_sec_prot.h | 22 - .../fwh_sec_prot/supp_fwh_sec_prot.h | 22 - .../protocols/key_sec_prot/key_sec_prot.h | 14 +- .../source/Security/protocols/sec_prot.h | 28 +- .../source/Security/protocols/sec_prot_cfg.h | 29 + .../source/Security/protocols/sec_prot_keys.h | 66 ++ .../source/Service_Libs/Trickle/trickle.h | 5 + .../source/Service_Libs/etx/etx.h | 27 +- .../source/Service_Libs/fhss/fhss_common.h | 2 + .../source/Service_Libs/fhss/fhss_ws.h | 7 +- .../source/Service_Libs/utils/ns_crc.h | 2 +- .../source/libDHCPv6/libDHCPv6.h | 60 +- .../source/libDHCPv6/libDHCPv6_server.h | 67 +- .../features/netsocket/CellularInterface.h | 27 +- .../mbed/features/netsocket/DTLSSocket.h | 7 +- .../mbed/features/netsocket/EMACInterface.h | 12 + .../netsocket/InternetDatagramSocket.h | 1 + .../mbed/features/netsocket/InternetSocket.h | 26 +- cores/arduino/mbed/features/netsocket/L3IP.h | 10 +- .../features/netsocket/NetworkInterface.h | 45 +- .../mbed/features/netsocket/NetworkStack.h | 28 +- .../features/netsocket/OnboardNetworkStack.h | 55 +- .../mbed/features/netsocket/PPPInterface.h | 9 + .../arduino/mbed/features/netsocket/Socket.h | 35 +- .../mbed/features/netsocket/TCPSocket.h | 56 +- .../mbed/features/netsocket/TLSSocket.h | 78 +- .../features/netsocket/TLSSocketWrapper.h | 63 +- .../mbed/features/netsocket/UDPSocket.h | 122 +-- .../COMPONENT_WHD/interface/WhdSTAInterface.h | 9 + .../TARGET_RDA_EMAC/RdaWiFiInterface.h | 11 + .../wifi_emac/wifi_emac.h | 7 +- .../mbed/features/netsocket/nsapi_dns.h | 10 +- .../mbed/features/netsocket/nsapi_types.h | 13 + .../storage/filesystem/fat/ChaN/ffconf.h | 80 +- .../storage/kvstore/tdbstore/TDBStore.h | 8 +- .../features/storage/nvstore/source/nvstore.h | 1 + cores/arduino/mbed/hal/analogin_api.h | 38 + cores/arduino/mbed/hal/analogout_api.h | 34 +- cores/arduino/mbed/hal/can_api.h | 10 + cores/arduino/mbed/hal/gpio_api.h | 28 + cores/arduino/mbed/hal/gpio_irq_api.h | 22 + cores/arduino/mbed/hal/i2c_api.h | 86 ++ cores/arduino/mbed/hal/pwmout_api.h | 37 + cores/arduino/mbed/hal/qspi_api.h | 30 + cores/arduino/mbed/hal/serial_api.h | 123 ++- cores/arduino/mbed/hal/spi_api.h | 104 +++ cores/arduino/mbed/hal/static_pinmap.h | 363 ++++++++ cores/arduino/mbed/hal/watchdog_api.h | 12 +- cores/arduino/mbed/platform/ATCmdParser.h | 18 + cores/arduino/mbed/platform/Stream.h | 6 +- .../mbed/platform/cxxsupport/mstd_cstddef | 22 +- .../mbed/platform/cxxsupport/mstd_mutex | 2 +- cores/arduino/mbed/platform/mbed_interface.h | 2 +- cores/arduino/mbed/platform/mbed_retarget.h | 40 +- cores/arduino/mbed/platform/mbed_version.h | 4 +- .../TARGET_MCU_NRF52840/PeripheralPinMaps.h | 116 +++ .../TARGET_MCU_NRF52840/PortNames.h | 31 +- 173 files changed, 6053 insertions(+), 1807 deletions(-) create mode 100644 cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RF215Reg.h create mode 100644 cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h create mode 100644 cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_compat.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/inc/shared_rng.h create mode 100644 cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_test_api.h create mode 100644 cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_cfg_settings.h create mode 100644 cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_cfg.h create mode 100644 cores/arduino/mbed/hal/static_pinmap.h create mode 100644 cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PeripheralPinMaps.h diff --git a/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h index a5e6baa7..028663f6 100644 --- a/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h +++ b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/atmel-rf-driver/NanostackRfPhyAtmel.h @@ -24,6 +24,9 @@ #include "NanostackRfPhy.h" +// Uncomment to use testing gpios attached to TX/RX processes +// #define TEST_GPIOS_ENABLED + // Arduino pin defaults for convenience #if !defined(ATMEL_SPI_MOSI) #define ATMEL_SPI_MOSI D11 @@ -52,8 +55,24 @@ #if !defined(ATMEL_I2C_SCL) #define ATMEL_I2C_SCL D15 #endif +#if !defined(TEST_PIN_TX) +#define TEST_PIN_TX D6 +#endif +#if !defined(TEST_PIN_RX) +#define TEST_PIN_RX D3 +#endif +#if !defined(TEST_PIN_CSMA) +#define TEST_PIN_CSMA D4 +#endif +#if !defined(TEST_PIN_SPARE_1) +#define TEST_PIN_SPARE_1 D2 +#endif +#if !defined(TEST_PIN_SPARE_2) +#define TEST_PIN_SPARE_2 D8 +#endif class RFBits; +class TestPins; class NanostackRfPhyAtmel : public NanostackRfPhy { public: @@ -70,6 +89,7 @@ class NanostackRfPhyAtmel : public NanostackRfPhy { AT24Mac _mac; uint8_t _mac_addr[8]; RFBits *_rf; + TestPins *_test_pins; bool _mac_set; const PinName _spi_mosi; @@ -81,5 +101,31 @@ class NanostackRfPhyAtmel : public NanostackRfPhy { const PinName _spi_irq; }; +#ifdef TEST_GPIOS_ENABLED +#define TEST_TX_STARTED test_pins->TEST1 = 1; +#define TEST_TX_DONE test_pins->TEST1 = 0; +#define TEST_RX_STARTED test_pins->TEST2 = 1; +#define TEST_RX_DONE test_pins->TEST2 = 0; +#define TEST_CSMA_STARTED test_pins->TEST3 = 1; +#define TEST_CSMA_DONE test_pins->TEST3 = 0; +#define TEST_SPARE_1_ON test_pins->TEST4 = 1; +#define TEST_SPARE_1_OFF test_pins->TEST4 = 0; +#define TEST_SPARE_2_ON test_pins->TEST5 = 1; +#define TEST_SPARE_2_OFF test_pins->TEST5 = 0; +extern void (*fhss_uc_switch)(void); +extern void (*fhss_bc_switch)(void); +#else +#define TEST_TX_STARTED +#define TEST_TX_DONE +#define TEST_RX_STARTED +#define TEST_RX_DONE +#define TEST_CSMA_STARTED +#define TEST_CSMA_DONE +#define TEST_SPARE_1_ON +#define TEST_SPARE_1_OFF +#define TEST_SPARE_2_ON +#define TEST_SPARE_2_OFF +#endif //TEST_GPIOS_ENABLED + #endif /* MBED_CONF_NANOSTACK_CONFIGURATION */ #endif /* NANOSTACK_RF_PHY_ATMEL_H_ */ diff --git a/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RF215Reg.h b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RF215Reg.h new file mode 100644 index 00000000..5463570f --- /dev/null +++ b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RF215Reg.h @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2020 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed 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. + */ + +#ifndef AT86RF215REG_H_ +#define AT86RF215REG_H_ +#ifdef __cplusplus +extern "C" { +#endif + + +/*Register addresses*/ +#define RF09_IRQS 0x00 +#define RF24_IRQS 0x01 +#define BBC0_IRQS 0x02 +#define BBC1_IRQS 0x03 +#define RF_CFG 0x06 +#define RF_IQIFC1 0x0B +#define RF_PN 0x0D +#define RF_VN 0x0E +#define RF_IRQM 0x00 +#define RF_STATE 0x02 +#define RF_CMD 0x03 +#define RF_CS 0x04 +#define RF_CCF0L 0x05 +#define RF_CCF0H 0x06 +#define RF_CNL 0x07 +#define RF_CNM 0x08 +#define RF_RXBWC 0x09 +#define RF_RXDFE 0x0A +#define RF_AGCC 0x0B +#define RF_AGCS 0x0C +#define RF_RSSI 0x0D +#define RF_EDC 0x0E +#define RF_EDV 0x10 +#define RF_TXCUTC 0x12 +#define RF_TXDFE 0x13 +#define BBC_IRQM 0x00 +#define BBC_PC 0x01 +#define BBC_RXFLL 0x04 +#define BBC_RXFLH 0x05 +#define BBC_TXFLL 0x06 +#define BBC_TXFLH 0x07 +#define BBC_FBLL 0x08 +#define BBC_FBLH 0x09 +#define BBC_OQPSKC0 0x10 +#define BBC_OQPSKC1 0x11 +#define BBC_OQPSKC2 0x12 +#define BBC_OQPSKC3 0x13 +#define BBC_OQPSKPHRTX 0x14 +#define BBC_OQPSKPHRRX 0x15 +#define BBC_AFC0 0x20 +#define BBC_AFFTM 0x22 +#define BBC_MACEA0 0x25 +#define BBC_MACPID0F0 0x2D +#define BBC_MACSHA0F0 0x2F +#define BBC_AMCS 0x40 +#define BBC_AMEDT 0x41 +#define BBC_AMAACKTL 0x43 +#define BBC_AMAACKTH 0x44 +#define BBC_FSKC0 0x60 +#define BBC_FSKC1 0x61 +#define BBC_FSKC2 0x62 +#define BBC_FSKC3 0x63 +#define BBC_FSKPLL 0x65 +#define BBC_FSKPHRTX 0x6A +#define BBC_FSKPHRRX 0x6B +#define BBC0_FBRXS 0x2000 +#define BBC0_FBTXS 0x2800 +#define BBC1_FBRXS 0x3000 +#define BBC1_FBTXS 0x3800 + +// RF_AGCC +#define AGCI (1 << 6) +#define AVGS 0x30 +#define AVGS_8_SAMPLES (0 << 4) + +// RF_AGCS +#define TGT 0xE0 +#define TGT_1 (1 << 5) + + +// RF_RXBWC +#define BW 0x0F +#define RF_BW2000KHZ_IF2000KHZ (11 << 0) +#define RF_BW1600KHZ_IF2000KHZ (10 << 0) +#define RF_BW1250KHZ_IF2000KHZ (9 << 0) +#define RF_BW1000KHZ_IF1000KHZ (8 << 0) +#define RF_BW800KHZ_IF1000KHZ (7 << 0) +#define RF_BW630KHZ_IF1000KHZ (6 << 0) +#define RF_BW500KHZ_IF500KHZ (5 << 0) +#define RF_BW400KHZ_IF500KHZ (4 << 0) +#define RF_BW320KHZ_IF500KHZ (3 << 0) +#define RF_BW250KHZ_IF250KHZ (2 << 0) +#define RF_BW200KHZ_IF250KHZ (1 << 0) +#define RF_BW160KHZ_IF250KHZ (0 << 0) +#define IFS (1 << 4) + +// RF_TXCUTC +#define PARAMP 0xC0 +#define RF_PARAMP32U (3 << 6) +#define RF_PARAMP16U (2 << 6) +#define RF_PARAMP8U (1 << 6) +#define RF_PARAMP4U (0 << 6) +#define LPFCUT 0x0F +#define RF_FLC80KHZ (0 << 0) +#define RF_FLC100KHZ (1 << 0) +#define RF_FLC125KHZ (2 << 0) +#define RF_FLC160KHZ (3 << 0) +#define RF_FLC200KHZ (4 << 0) +#define RF_FLC250KHZ (5 << 0) +#define RF_FLC315KHZ (6 << 0) +#define RF_FLC400KHZ (7 << 0) +#define RF_FLC500KHZ (8 << 0) +#define RF_FLC625KHZ (9 << 0) +#define RF_FLC800KHZ (10 << 0) +#define RF_FLC1000KHZ (11 << 0) + +// RF_TXDFE, RF_RXDFE +#define RCUT 0xE0 +#define RCUT_4 (4 << 5) +#define RCUT_2 (2 << 5) +#define RCUT_1 (1 << 5) +#define RCUT_0 (0 << 5) +#define SR 0x0F +#define SR_10 (10 << 0) +#define SR_8 (8 << 0) +#define SR_6 (6 << 0) +#define SR_5 (5 << 0) +#define SR_4 (4 << 0) +#define SR_3 (3 << 0) +#define SR_2 (2 << 0) +#define SR_1 (1 << 0) + +// BBC_FSKC0 +#define BT 0xC0 +#define BT_20 (3 << 6) +#define BT_10 (1 << 6) +#define MIDXS 0x30 +#define MIDXS_0 (0 << 4) +#define MIDX 0x0E +#define MIDX_10 (3 << 1) +#define MIDX_075 (2 << 1) +#define MIDX_05 (1 << 1) +#define MIDX_0375 (0 << 1) + +// BBC_FSKC1 +#define SRATE 0x0F +#define SRATE_400KHZ (5 << 0) +#define SRATE_300KHZ (4 << 0) +#define SRATE_200KHZ (3 << 0) +#define SRATE_150KHZ (2 << 0) +#define SRATE_100KHZ (1 << 0) +#define SRATE_50KHZ (0 << 0) + +// BBC_FSKC2 +#define RXO 0x60 +#define RXO_DIS (0 << 5) +#define FECIE (1 << 0) + +// BBC_FSKC3 +#define SFDT 0xF0 +#define PDT 0x0F +#define PDT_6 (6 << 0) + +// BBC_AFFTM +#define TYPE_2 (1 << 2) + +// BBC_AFC0 +#define PM (1 << 4) +#define AFEN3 (1 << 3) +#define AFEN2 (1 << 2) +#define AFEN1 (1 << 1) +#define AFEN0 (1 << 0) + +// BBC_OQPSKPHRTX +#define LEG (1 << 0) + +// BBC_OQPSKC0 +#define FCHIP 0x03 +#define BB_FCHIP100 (0 << 0) +#define BB_FCHIP200 (1 << 0) +#define BB_FCHIP1000 (2 << 0) +#define BB_FCHIP2000 (3 << 0) + +// BBC_OQPSKC2 +#define FCSTLEG 0x04 +#define RXM 0x03 +#define FCS_16 (1 << 2) +#define RXM_2 (2 << 0) + +// BBC_IRQS, BBC_IRQM +#define FBLI (1 << 7) +#define AGCR (1 << 6) +#define AGCH (1 << 5) +#define TXFE (1 << 4) +#define RXEM (1 << 3) +#define RXAM (1 << 2) +#define RXFE (1 << 1) +#define RXFS (1 << 0) + +//BBC_PC +#define BBEN (1 << 2) +#define PT 0x03 +#define BB_PHYOFF (0 << 0) +#define BB_MRFSK (1 << 0) +#define BB_MROFDM (2 << 0) +#define BB_MROQPSK (3 << 0) +#define FCSOK (1 << 5) +#define TXAFCS (1 << 4) +#define FCST (1 << 3) +#define FCSFE (1 << 6) + +//BBC_AMCS +#define AACKFT (1 << 7) +#define AACK (1 << 3) +#define CCAED (1 << 2) + +// RF_IQIFC1 +#define CHPM 0x70 +#define RF_MODE_BBRF (0 << 4) +#define RF_MODE_RF (1 << 4) +#define RF_MODE_BBRF09 (4 << 4) +#define RF_MODE_BBRF24 (5 << 4) + +/*RF_CFG bits*/ +#define IRQMM 0x08 +#define IRQP 0x04 + +/*RFn_IRQM bits*/ +#define TRXRDY (1 << 1) +#define EDC (1 << 2) + +/*RFn_EDC bits*/ +#define EDM 0x03 +#define RF_EDAUTO (0 << 0) +#define RF_EDSINGLE (1 << 0) +#define RF_EDCONT (2 << 0) +#define RF_EDOFF (3 << 0) + +/*Masks*/ +#define CNH 0x01 +#define EDM 0x03 +#define CHPM 0x70 + +#ifdef __cplusplus +} +#endif + +#endif /* AT86RF215REG_H_ */ diff --git a/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RFReg.h b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RFReg.h index a1b9c248..c53d9fe9 100644 --- a/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RFReg.h +++ b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/AT86RFReg.h @@ -47,6 +47,7 @@ extern "C" { #define PART_AT86RF231 0x03 #define PART_AT86RF212 0x07 #define PART_AT86RF233 0x0B +#define PART_AT86RF215 0x34 #define VERSION_AT86RF212 0x01 #define VERSION_AT86RF212B 0x03 diff --git a/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h new file mode 100644 index 00000000..94143e6a --- /dev/null +++ b/cores/arduino/mbed/components/802.15.4_RF/atmel-rf-driver/source/rfbits.h @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2020 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed 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. + */ + +#ifndef RFBITS_H_ +#define RFBITS_H_ + +#include "DigitalIn.h" +#include "DigitalOut.h" +#include "InterruptIn.h" +#include "SPI.h" +#include +#include "Timeout.h" +#include "rtos.h" + +using namespace mbed; +using namespace rtos; + +class UnlockedSPI : public SPI { +public: + UnlockedSPI(PinName mosi, PinName miso, PinName sclk) : + SPI(mosi, miso, sclk) { } + virtual void lock() { } + virtual void unlock() { } +}; + +class RFBits { +public: + RFBits(PinName spi_mosi, PinName spi_miso, + PinName spi_sclk, PinName spi_cs, + PinName spi_rst, PinName spi_slp, PinName spi_irq); + UnlockedSPI spi; + DigitalOut CS; + DigitalOut RST; + DigitalOut SLP_TR; + InterruptIn IRQ; + Timeout ack_timer; + Timeout cal_timer; + Timeout cca_timer; + Timer tx_timer; + int init_215_driver(RFBits *_rf, TestPins *_test_pins, const uint8_t mac[8], uint8_t *rf_part_num); +#ifdef MBED_CONF_RTOS_PRESENT + Thread irq_thread; + Thread irq_thread_215; + Mutex mutex; + void rf_if_irq_task(); + void rf_irq_task(); +#endif +}; + +class TestPins { +public: + TestPins(PinName test_pin_1, PinName test_pin_2, PinName test_pin_3, PinName test_pin_4, PinName test_pin_5); + DigitalOut TEST1; + DigitalOut TEST2; + DigitalOut TEST3; + DigitalOut TEST4; + DigitalOut TEST5; +}; + +#endif /* RFBITS_H_ */ diff --git a/cores/arduino/mbed/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h b/cores/arduino/mbed/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h index 66e07011..2b9038a8 100644 --- a/cores/arduino/mbed/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h +++ b/cores/arduino/mbed/components/802.15.4_RF/stm-s2lp-rf-driver/stm-s2lp-rf-driver/NanostackRfPhys2lp.h @@ -26,98 +26,96 @@ #include "SPI.h" // Uncomment to use testing gpios attached to TX/RX processes -//#define TEST_GPIOS_ENABLED +// #define TEST_GPIOS_ENABLED #if defined(TARGET_MTB_STM_S2LP) #if !defined(S2LP_SPI_SDI) -#define S2LP_SPI_SDI PA_7 +#define S2LP_SPI_SDI PA_7 #endif #if !defined(S2LP_SPI_SDO) -#define S2LP_SPI_SDO PA_6 +#define S2LP_SPI_SDO PA_6 #endif #if !defined(S2LP_SPI_SCLK) -#define S2LP_SPI_SCLK PA_5 +#define S2LP_SPI_SCLK PA_5 #endif #if !defined(S2LP_SPI_CS) -#define S2LP_SPI_CS PC_0 +#define S2LP_SPI_CS PC_0 #endif #if !defined(S2LP_SPI_SDN) -#define S2LP_SPI_SDN PF_13 +#define S2LP_SPI_SDN PF_13 #endif #if !defined(S2LP_SPI_GPIO0) -#define S2LP_SPI_GPIO0 PA_3 +#define S2LP_SPI_GPIO0 PA_3 #endif #if !defined(S2LP_SPI_GPIO1) -#define S2LP_SPI_GPIO1 PC_3 +#define S2LP_SPI_GPIO1 PC_3 #endif #if !defined(S2LP_SPI_GPIO2) -#define S2LP_SPI_GPIO2 PF_3 +#define S2LP_SPI_GPIO2 PF_3 #endif #if !defined(S2LP_SPI_GPIO3) -#define S2LP_SPI_GPIO3 PF_10 +#define S2LP_SPI_GPIO3 PF_10 #endif #if !defined(S2LP_I2C_SDA) -#define S2LP_I2C_SDA PB_7 +#define S2LP_I2C_SDA PB_7 #endif #if !defined(S2LP_I2C_SCL) -#define S2LP_I2C_SCL PB_6 +#define S2LP_I2C_SCL PB_6 #endif #define AT24MAC #else #if !defined(S2LP_SPI_SDI) -#define S2LP_SPI_SDI D11 +#define S2LP_SPI_SDI D11 #endif #if !defined(S2LP_SPI_SDO) -#define S2LP_SPI_SDO D12 +#define S2LP_SPI_SDO D12 #endif #if !defined(S2LP_SPI_SCLK) -#define S2LP_SPI_SCLK D13 +#define S2LP_SPI_SCLK D13 #endif #if !defined(S2LP_SPI_CS) -#define S2LP_SPI_CS A1 +#define S2LP_SPI_CS A1 #endif #if !defined(S2LP_SPI_SDN) -#define S2LP_SPI_SDN D7 +#define S2LP_SPI_SDN D7 #endif -#if !defined(S2LP_SPI_TEST1) -#define S2LP_SPI_TEST1 D6 +#if !defined(TEST_PIN_TX) +#define TEST_PIN_TX D6 #endif -#if !defined(S2LP_SPI_TEST2) -#define S2LP_SPI_TEST2 D5 +#if !defined(TEST_PIN_RX) +#define TEST_PIN_RX D5 #endif -#if !defined(S2LP_SPI_TEST3) -#define S2LP_SPI_TEST3 D4 +#if !defined(TEST_PIN_CSMA) +#define TEST_PIN_CSMA D4 #endif -#if !defined(S2LP_SPI_TEST4) -#define S2LP_SPI_TEST4 D2 +#if !defined(TEST_PIN_SPARE_1) +#define TEST_PIN_SPARE_1 D2 #endif -#if !defined(S2LP_SPI_TEST5) -#define S2LP_SPI_TEST5 D8 +#if !defined(TEST_PIN_SPARE_2) +#define TEST_PIN_SPARE_2 D8 #endif #if !defined(S2LP_SPI_GPIO0) -#define S2LP_SPI_GPIO0 A0 +#define S2LP_SPI_GPIO0 A0 #endif #if !defined(S2LP_SPI_GPIO1) -#define S2LP_SPI_GPIO1 A2 +#define S2LP_SPI_GPIO1 A2 #endif #if !defined(S2LP_SPI_GPIO2) -#define S2LP_SPI_GPIO2 A3 +#define S2LP_SPI_GPIO2 A3 #endif #if !defined(S2LP_SPI_GPIO3) -#define S2LP_SPI_GPIO3 A5 +#define S2LP_SPI_GPIO3 A5 #endif #endif #include "at24mac_s2lp.h" class RFPins; +class TestPins_S2LP; class NanostackRfPhys2lp : public NanostackRfPhy { public: NanostackRfPhys2lp(PinName spi_sdi, PinName spi_sdo, PinName spi_sclk, PinName spi_cs, PinName spi_sdn -#ifdef TEST_GPIOS_ENABLED - ,PinName spi_test1, PinName spi_test2, PinName spi_test3, PinName spi_test4, PinName spi_test5 -#endif //TEST_GPIOS_ENABLED ,PinName spi_gpio0, PinName spi_gpio1, PinName spi_gpio2, PinName spi_gpio3 #ifdef AT24MAC ,PinName i2c_sda, PinName i2c_scl @@ -135,6 +133,7 @@ class NanostackRfPhys2lp : public NanostackRfPhy { #endif //AT24MAC uint8_t _mac_addr[8]; RFPins *_rf; + TestPins_S2LP *_test_pins; bool _mac_set; const PinName _spi_sdi; @@ -142,13 +141,6 @@ class NanostackRfPhys2lp : public NanostackRfPhy { const PinName _spi_sclk; const PinName _spi_cs; const PinName _spi_sdn; -#ifdef TEST_GPIOS_ENABLED - const PinName _spi_test1; - const PinName _spi_test2; - const PinName _spi_test3; - const PinName _spi_test4; - const PinName _spi_test5; -#endif //TEST_GPIOS_ENABLED const PinName _spi_gpio0; const PinName _spi_gpio1; const PinName _spi_gpio2; diff --git a/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h b/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h index 6783e292..05fe728f 100644 --- a/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h +++ b/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h @@ -87,8 +87,8 @@ typedef enum psa_sec_function_s { PSA_AEAD_FINISH, PSA_AEAD_VERIFY, PSA_AEAD_ABORT, - PSA_ASYMMETRIC_SIGN, - PSA_ASYMMETRIC_VERIFY, + PSA_SIGN_HASH, + PSA_VERIFY_HASH, PSA_ASYMMETRIC_ENCRYPT, PSA_ASYMMETRIC_DECRYPT, PSA_KEY_DERIVATION_SETUP, diff --git a/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h b/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h index 6b6bf193..be55586a 100644 --- a/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h +++ b/cores/arduino/mbed/components/TARGET_PSA/services/crypto/COMPONENT_SPE/crypto_spe.h @@ -59,8 +59,8 @@ extern "C" { #define psa_aead_finish psa_sec_aead_finish #define psa_aead_verify psa_sec_aead_verify #define psa_aead_abort psa_sec_aead_abort -#define psa_asymmetric_sign psa_sec_asymmetric_sign -#define psa_asymmetric_verify psa_sec_asymmetric_verify +#define psa_sign_hash psa_sec_sign_hash +#define psa_verify_hash psa_sec_verify_hash #define psa_asymmetric_encrypt psa_sec_asymmetric_encrypt #define psa_asymmetric_decrypt psa_sec_asymmetric_decrypt #define psa_key_derivation_setup psa_sec_key_derivation_setup diff --git a/cores/arduino/mbed/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h b/cores/arduino/mbed/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h index 8c15d934..e4c8a0c5 100644 --- a/cores/arduino/mbed/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h +++ b/cores/arduino/mbed/components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h @@ -27,6 +27,7 @@ #include "drivers/DigitalOut.h" #include "platform/platform.h" #include "platform/PlatformMutex.h" +#include "hal/static_pinmap.h" /** SDBlockDevice class * @@ -34,7 +35,7 @@ */ class SDBlockDevice : public mbed::BlockDevice { public: - /** Creates an SDBlockDevice on a SPI bus specified by pins + /** Creates an SDBlockDevice on a SPI bus specified by pins (using dynamic pin-map) * * @param mosi SPI master out, slave in pin * @param miso SPI master in, slave out pin @@ -44,6 +45,15 @@ class SDBlockDevice : public mbed::BlockDevice { * @param crc_on Enable cyclic redundancy check (defaults to disabled) */ SDBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName cs, uint64_t hz = 1000000, bool crc_on = 0); + + /** Creates an SDBlockDevice on a SPI bus specified by pins (using static pin-map) + * + * @param spi_pinmap Static SPI pin-map + * @param hz Clock speed of the SPI bus (defaults to 1MHz) + * @param crc_on Enable cyclic redundancy check (defaults to disabled) + */ + SDBlockDevice(const spi_pinmap_t &spi_pinmap, PinName cs, uint64_t hz = 1000000, bool crc_on = 0); + virtual ~SDBlockDevice(); /** Initialize a block device diff --git a/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266/ESP8266.h b/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266/ESP8266.h index 56aa7d99..a1c476f8 100644 --- a/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266/ESP8266.h +++ b/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266/ESP8266.h @@ -17,7 +17,7 @@ #ifndef ESP8266_H #define ESP8266_H -#if DEVICE_SERIAL && DEVICE_INTERRUPTIN && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_PRESENT) +#if DEVICE_SERIAL && DEVICE_INTERRUPTIN && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_API_PRESENT) #include #include "drivers/UARTSerial.h" @@ -27,8 +27,8 @@ #include "platform/ATCmdParser.h" #include "platform/Callback.h" #include "platform/mbed_error.h" -#include "rtos/ConditionVariable.h" #include "rtos/Mutex.h" +#include "rtos/ThisThread.h" // Various timeouts for different ESP8266 operations #ifndef ESP8266_CONNECT_TIMEOUT @@ -405,6 +405,14 @@ class ESP8266 { static const int8_t WIFIMODE_STATION_SOFTAP = 3; static const int8_t SOCKET_COUNT = 5; + /** + * Enables or disables uart input and deep sleep + * + * @param lock if TRUE, uart input is enabled and deep sleep is locked + * if FALSE, uart input is disabled and deep sleep is unlocked + */ + int uart_enable_input(bool lock); + private: // FW version struct fw_sdk_version _sdk_v; @@ -420,7 +428,6 @@ class ESP8266 { PinName _serial_rts; PinName _serial_cts; rtos::Mutex _smutex; // Protect serial port access - rtos::Mutex _rmutex; // Reset protection // AT Command Parser mbed::ATCmdParser _parser; @@ -471,7 +478,6 @@ class ESP8266 { bool _closed; bool _error; bool _busy; - rtos::ConditionVariable _reset_check; bool _reset_done; // Modem's address info diff --git a/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266Interface.h b/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266Interface.h index f924cd59..ae7facae 100644 --- a/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266Interface.h +++ b/cores/arduino/mbed/components/wifi/esp8266-driver/ESP8266Interface.h @@ -17,7 +17,7 @@ #ifndef ESP8266_INTERFACE_H #define ESP8266_INTERFACE_H -#if DEVICE_SERIAL && DEVICE_INTERRUPTIN && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_PRESENT) +#if DEVICE_SERIAL && DEVICE_INTERRUPTIN && defined(MBED_CONF_EVENTS_PRESENT) && defined(MBED_CONF_NSAPI_PRESENT) && defined(MBED_CONF_RTOS_API_PRESENT) #include "drivers/DigitalOut.h" #include "drivers/Timer.h" #include "ESP8266/ESP8266.h" @@ -30,7 +30,9 @@ #include "features/netsocket/WiFiAccessPoint.h" #include "features/netsocket/WiFiInterface.h" #include "platform/Callback.h" +#if MBED_CONF_RTOS_PRESENT #include "rtos/ConditionVariable.h" +#endif #include "rtos/Mutex.h" #define ESP8266_SOCKET_COUNT 5 @@ -137,6 +139,9 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { /** Get the internally stored IP address * @return IP address of the interface or null if not yet connected */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address(); /** Get the internally stored MAC address @@ -149,6 +154,9 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { * @return Null-terminated representation of the local gateway * or null if no network mask has been recieved */ + virtual nsapi_error_t get_gateway(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_gateway(); /** Get the local network mask @@ -156,8 +164,18 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { * @return Null-terminated representation of the local network mask * or null if no network mask has been recieved */ + virtual nsapi_error_t get_netmask(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_netmask(); + /** Get the network interface name + * + * @return Null-terminated representation of the network interface name + * or null if interface not exists + */ + virtual char *get_interface_name(char *interface_name); + /** Gets the current radio signal strength for active connection * * @return Connection strength in dBm (negative value) @@ -381,6 +399,15 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { ESP8266 _esp; void refresh_conn_state_cb(); + /** Status of software connection + */ + typedef enum esp_connection_software_status { + IFACE_STATUS_DISCONNECTED = 0, + IFACE_STATUS_CONNECTING = 1, + IFACE_STATUS_CONNECTED = 2, + IFACE_STATUS_DISCONNECTING = 3 + } esp_connection_software_status_t; + // HW reset pin class ResetPin { public: @@ -403,6 +430,12 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { mbed::DigitalOut _pwr_pin; } _pwr_pin; + /** Assert the reset and power pins + * ESP8266 has two pins serving similar purpose and this function asserts them both + * if they are configured in mbed_app.json. + */ + void _power_off(); + // Credentials static const int ESP8266_SSID_MAX_LENGTH = 32; /* 32 is what 802.11 defines as longest possible name */ char ap_ssid[ESP8266_SSID_MAX_LENGTH + 1]; /* The longest possible name; +1 for the \0 */ @@ -421,7 +454,9 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { struct _channel_info _ch_info; bool _if_blocking; // NetworkInterface, blocking or not +#if MBED_CONF_RTOS_PRESENT rtos::ConditionVariable _if_connected; +#endif // connect status reporting nsapi_error_t _conn_status_to_error(); @@ -437,6 +472,7 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { // Driver's state int _initialized; nsapi_error_t _connect_retval; + nsapi_error_t _disconnect_retval; bool _get_firmware_ok(); nsapi_error_t _init(void); nsapi_error_t _reset(); @@ -459,9 +495,12 @@ class ESP8266Interface : public NetworkStack, public WiFiInterface { events::EventQueue *_global_event_queue; int _oob_event_id; int _connect_event_id; + int _disconnect_event_id; void proc_oob_evnt(); void _connect_async(); + void _disconnect_async(); rtos::Mutex _cmutex; // Protect asynchronous connection logic + esp_connection_software_status_t _software_conn_stat ; }; #endif diff --git a/cores/arduino/mbed/drivers/AnalogIn.h b/cores/arduino/mbed/drivers/AnalogIn.h index 6f884920..9ff9ec7e 100644 --- a/cores/arduino/mbed/drivers/AnalogIn.h +++ b/cores/arduino/mbed/drivers/AnalogIn.h @@ -67,6 +67,13 @@ class AnalogIn { public: + /** Create an AnalogIn, connected to the specified pin + * + * @param pinmap reference to structure which holds static pinmap. + */ + AnalogIn(const PinMap &pinmap); + AnalogIn(const PinMap &&) = delete; // prevent passing of temporary objects + /** Create an AnalogIn, connected to the specified pin * * @param pin AnalogIn pin to connect to @@ -135,4 +142,3 @@ class AnalogIn { #endif #endif - diff --git a/cores/arduino/mbed/drivers/AnalogOut.h b/cores/arduino/mbed/drivers/AnalogOut.h index 2eaabefb..d7945d38 100644 --- a/cores/arduino/mbed/drivers/AnalogOut.h +++ b/cores/arduino/mbed/drivers/AnalogOut.h @@ -66,6 +66,16 @@ class AnalogOut { analogout_init(&_dac, pin); } + /** Create an AnalogOut connected to the specified pin + * + * @param pinmap reference to structure which holds static pinmap. + */ + AnalogOut(const PinMap &&) = delete; // prevent passing of temporary objects + AnalogOut(const PinMap &pinmap) + { + analogout_init_direct(&_dac, &pinmap); + } + /** Set the output voltage, specified as a percentage (float) * * @param value A floating-point value representing the output voltage, @@ -125,7 +135,9 @@ class AnalogOut { virtual ~AnalogOut() { - // Do nothing + /** Deinitialize pin configuration. + */ + analogout_free(&_dac); } protected: diff --git a/cores/arduino/mbed/drivers/CAN.h b/cores/arduino/mbed/drivers/CAN.h index 0485cf32..f7685689 100644 --- a/cores/arduino/mbed/drivers/CAN.h +++ b/cores/arduino/mbed/drivers/CAN.h @@ -170,6 +170,24 @@ class CAN : private NonCopyable { */ CAN(PinName rd, PinName td, int hz); + /** Initialize CAN interface + * + * @param pinmap reference to structure which holds static pinmap + * @param td the transmit pin + * @param hz the bus frequency in hertz + */ + CAN(const can_pinmap_t &pinmap); + CAN(const can_pinmap_t &&) = delete; // prevent passing of temporary objects + + /** Initialize CAN interface and set the frequency + * + * @param pinmap reference to structure which holds static pinmap + * @param td the transmit pin + * @param hz the bus frequency in hertz + */ + CAN(const can_pinmap_t &pinmap, int hz); + CAN(const can_pinmap_t &&, int) = delete; // prevent passing of temporary objects + virtual ~CAN(); /** Set the frequency of the CAN interface @@ -343,4 +361,3 @@ class CAN : private NonCopyable { #endif #endif // MBED_CAN_H - diff --git a/cores/arduino/mbed/drivers/I2C.h b/cores/arduino/mbed/drivers/I2C.h index 4fb06a3d..0d48ba7e 100644 --- a/cores/arduino/mbed/drivers/I2C.h +++ b/cores/arduino/mbed/drivers/I2C.h @@ -101,6 +101,13 @@ class I2C : private NonCopyable { */ I2C(PinName sda, PinName scl); + /** Create an I2C Master interface, connected to the specified pins + * + * @param static_pinmap reference to structure which holds static pinmap. + */ + I2C(const i2c_pinmap_t &static_pinmap); + I2C(const i2c_pinmap_t &&) = delete; // prevent passing of temporary objects + /** Set the frequency of the I2C interface * * @param hz The bus frequency in hertz diff --git a/cores/arduino/mbed/drivers/I2CSlave.h b/cores/arduino/mbed/drivers/I2CSlave.h index 000d480f..066fe042 100644 --- a/cores/arduino/mbed/drivers/I2CSlave.h +++ b/cores/arduino/mbed/drivers/I2CSlave.h @@ -86,6 +86,13 @@ class I2CSlave { */ I2CSlave(PinName sda, PinName scl); + /** Create an I2C Slave interface, connected to the specified pins. + * + * @param static_pinmap reference to structure which holds static pinmap. + */ + I2CSlave(const i2c_pinmap_t &static_pinmap); + I2CSlave(const i2c_pinmap_t &&) = delete; // prevent passing of temporary objects + /** Set the frequency of the I2C interface. * * @param hz The bus frequency in Hertz. diff --git a/cores/arduino/mbed/drivers/PwmOut.h b/cores/arduino/mbed/drivers/PwmOut.h index 68102caa..1bf12f47 100644 --- a/cores/arduino/mbed/drivers/PwmOut.h +++ b/cores/arduino/mbed/drivers/PwmOut.h @@ -61,6 +61,13 @@ class PwmOut { */ PwmOut(PinName pin); + /** Create a PwmOut connected to the specified pin + * + * @param pinmap reference to structure which holds static pinmap. + */ + PwmOut(const PinMap &pinmap); + PwmOut(const PinMap &&) = delete; // prevent passing of temporary objects + ~PwmOut(); /** Set the output duty-cycle, specified as a percentage (float) @@ -118,6 +125,24 @@ class PwmOut { */ void pulsewidth_us(int us); + /** Suspend PWM operation + * + * Control the PWM state. This is primarily intended + * for temporary power-saving; This call can + * allow pwm to be temporarily disabled to permit power saving without + * losing device state. The subsequent function call must be PwmOut::resume + * for PWM to resume; any other calls prior to resuming are undefined behavior. + */ + void suspend(); + + /** Resume PWM operation + * + * Control the PWM state. This is primarily intended + * to resume PWM operations after a previous PwmOut::suspend call; + * This call restores the device state prior to suspension. + */ + void resume(); + /** A operator shorthand for write() * \sa PwmOut::write() */ @@ -155,8 +180,17 @@ class PwmOut { /** Unlock deep sleep in case it is locked */ void unlock_deep_sleep(); + /** Initialize this instance */ + void init(); + + /** Power down this instance */ + void deinit(); + pwmout_t _pwm; + PinName _pin; bool _deep_sleep_locked; + bool _initialized; + float _duty_cycle; #endif }; diff --git a/cores/arduino/mbed/drivers/QSPI.h b/cores/arduino/mbed/drivers/QSPI.h index 7b70d6ae..1ef8df23 100644 --- a/cores/arduino/mbed/drivers/QSPI.h +++ b/cores/arduino/mbed/drivers/QSPI.h @@ -102,6 +102,19 @@ class QSPI : private NonCopyable { * */ QSPI(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel = NC, int mode = 0); + + /** Create a QSPI master connected to the specified pins + * + * io0-io3 is used to specify the Pins used for Quad SPI mode + * + * @param pinmap reference to structure which holds static pinmap + * @param mode Clock polarity and phase mode (0 - 3) of SPI + * (Default: Mode=0 uses CPOL=0, CPHA=0, Mode=1 uses CPOL=1, CPHA=1) + * + */ + QSPI(const qspi_pinmap_t &pinmap, int mode = 0); + QSPI(const qspi_pinmap_t &&, int = 0) = delete; // prevent passing of temporary objects + virtual ~QSPI() { } @@ -222,6 +235,8 @@ class QSPI : private NonCopyable { int _mode; //SPI mode bool _initialized; PinName _qspi_io0, _qspi_io1, _qspi_io2, _qspi_io3, _qspi_clk, _qspi_cs; //IO lines, clock and chip select + const qspi_pinmap_t *_static_pinmap; + bool (QSPI::* _init_func)(void); private: /* Private acquire function without locking/unlocking @@ -229,6 +244,7 @@ class QSPI : private NonCopyable { */ bool _acquire(void); bool _initialize(); + bool _initialize_direct(); /* * This function builds the qspi command struct to be send to Hal diff --git a/cores/arduino/mbed/drivers/SPIMaster.h b/cores/arduino/mbed/drivers/SPIMaster.h index c247b3ea..f4820f79 100644 --- a/cores/arduino/mbed/drivers/SPIMaster.h +++ b/cores/arduino/mbed/drivers/SPIMaster.h @@ -131,6 +131,35 @@ class SPI : private NonCopyable { */ SPI(PinName mosi, PinName miso, PinName sclk, PinName ssel, use_gpio_ssel_t); + /** Create a SPI master connected to the specified pins. + * + * @note This constructor passes the SSEL pin selection to the target HAL. + * Not all targets support SSEL, so this cannot be relied on in portable code. + * Portable code should use the alternative constructor that uses GPIO + * for SSEL. + * + * @note You can specify mosi or miso as NC if not used. + * + * @param static_pinmap reference to structure which holds static pinmap. + */ + SPI(const spi_pinmap_t &static_pinmap); + SPI(const spi_pinmap_t &&) = delete; // prevent passing of temporary objects + + /** Create a SPI master connected to the specified pins. + * + * @note This constructor manipulates the SSEL pin as a GPIO output + * using a DigitalOut object. This should work on any target, and permits + * the use of select() and deselect() methods to keep the pin asserted + * between transfers. + * + * @note You can specify mosi or miso as NC if not used. + * + * @param static_pinmap reference to structure which holds static pinmap. + * @param ssel SPI Chip Select pin. + */ + SPI(const spi_pinmap_t &static_pinmap, PinName ssel); + SPI(const spi_pinmap_t &&, PinName) = delete; // prevent passing of temporary objects + virtual ~SPI(); /** Configure the data transmission format. @@ -408,6 +437,12 @@ class SPI : private NonCopyable { char _write_fill; /* Select count to handle re-entrant selection */ int8_t _select_count; + /* Static pinmap data */ + const spi_pinmap_t *_static_pinmap; + /* SPI peripheral name */ + SPIName _peripheral_name; + /* Pointer to spi init function */ + void (*_init_func)(SPI *); private: void _do_construct(); @@ -425,6 +460,10 @@ class SPI : private NonCopyable { */ static spi_peripheral_s *_alloc(); + static void _do_init(SPI *obj); + static void _do_init_direct(SPI *obj); + + #endif //!defined(DOXYGEN_ONLY) }; diff --git a/cores/arduino/mbed/drivers/SPISlave.h b/cores/arduino/mbed/drivers/SPISlave.h index 5b9ae585..16a3a770 100644 --- a/cores/arduino/mbed/drivers/SPISlave.h +++ b/cores/arduino/mbed/drivers/SPISlave.h @@ -71,6 +71,15 @@ class SPISlave : private NonCopyable { */ SPISlave(PinName mosi, PinName miso, PinName sclk, PinName ssel); + /** Create a SPI slave connected to the specified pins. + * + * @note Either mosi or miso can be specified as NC if not used. + * + * @param static_pinmap reference to structure which holds static pinmap. + */ + SPISlave(const spi_pinmap_t &pinmap); + SPISlave(const spi_pinmap_t &&) = delete; // prevent passing of temporary objects + /** Configure the data transmission format. * * @param bits Number of bits per SPI frame (4 - 16). diff --git a/cores/arduino/mbed/drivers/Serial.h b/cores/arduino/mbed/drivers/Serial.h index d167e695..5d81420b 100644 --- a/cores/arduino/mbed/drivers/Serial.h +++ b/cores/arduino/mbed/drivers/Serial.h @@ -73,6 +73,17 @@ class Serial : public SerialBase, public Stream, private NonCopyable { */ Serial(PinName tx, PinName rx, const char *name = NULL, int baud = MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE); + /** Create a Serial port, connected to the specified transmit and receive pins + * + * @param static_pinmap reference to structure which holds static pinmap. + * @param name The name of the stream associated with this serial port (optional) + * @param baud The baud rate of the serial port (optional, defaults to MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE or 9600) + * + * @note + * Either tx or rx may be specified as NC (Not Connected) if unused + */ + Serial(const serial_pinmap_t &static_pinmap, const char *name = NULL, int baud = MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE); + Serial(const serial_pinmap_t &&, const char * = NULL, int = MBED_CONF_PLATFORM_DEFAULT_SERIAL_BAUD_RATE) = delete; // prevent passing of temporary objects /** Create a Serial port, connected to the specified transmit and receive pins, with the specified baud * @@ -85,6 +96,17 @@ class Serial : public SerialBase, public Stream, private NonCopyable { */ Serial(PinName tx, PinName rx, int baud); + /** Create a Serial port, connected to the specified transmit and receive pins, with the specified baud + * + * @param static_pinmap reference to structure which holds static pinmap. + * @param baud The baud rate of the serial port + * + * @note + * Either tx or rx may be specified as NC (Not Connected) if unused + */ + Serial(const serial_pinmap_t &static_pinmap, int baud); + Serial(const serial_pinmap_t &&, int) = delete; // prevent passing of temporary objects + /* Stream gives us a FileHandle with non-functional poll()/readable()/writable. Pass through * the calls from the SerialBase instead for backwards compatibility. This problem is * part of why Stream and Serial should be deprecated. diff --git a/cores/arduino/mbed/drivers/SerialBase.h b/cores/arduino/mbed/drivers/SerialBase.h index 5213f325..3f02c4ec 100644 --- a/cores/arduino/mbed/drivers/SerialBase.h +++ b/cores/arduino/mbed/drivers/SerialBase.h @@ -155,6 +155,30 @@ class SerialBase : private NonCopyable { */ void send_break(); + /** Enable serial input + * + * If both serial input and serial output are disabled, the + * peripheral is freed. If either serial input or serial + * output is re-enabled, the peripheral is reinitialized. + * + * On re-initialization rx interrupts will be enabled if a + * rx handler is attached. The rx handler is called once + * during re-initialization. + */ + void enable_input(bool enable = true); + + /** Enable serial output + * + * If both serial input and serial output are disabled, the + * peripheral is freed. If either serial input or serial + * output is re-enabled, the peripheral is reinitialized. + * + * On re-initialization tx interrupts will be enabled if a + * tx handler is attached. The tx handler is called once + * during re-initialization. + */ + void enable_output(bool enable = true); + #if !defined(DOXYGEN_ONLY) protected: @@ -176,6 +200,13 @@ class SerialBase : private NonCopyable { * @param flow2 the second flow control pin (CTS for RTSCTS) */ void set_flow_control(Flow type, PinName flow1 = NC, PinName flow2 = NC); + + /** Set the flow control type on the serial port + * + * @param type the flow control type (Disabled, RTS, CTS, RTSCTS) + * @param pinmap reference to structure which holds static pinmap + */ + void set_flow_control(Flow type, const serial_fc_pinmap_t &static_pinmap); #endif static void _irq_handler(uint32_t id, SerialIrq irq_type); @@ -289,25 +320,52 @@ class SerialBase : private NonCopyable { #if !defined(DOXYGEN_ONLY) protected: SerialBase(PinName tx, PinName rx, int baud); + SerialBase(const serial_pinmap_t &static_pinmap, int baud); virtual ~SerialBase(); int _base_getc(); int _base_putc(int c); + /** Initialize serial port + */ + void _init(); + void _init_direct(); + /* Pointer to serial init function */ + void (SerialBase::*_init_func)(); + + /** Deinitialize serial port + */ + void _deinit(); + #if DEVICE_SERIAL_ASYNCH CThunk _thunk_irq; - DMAUsage _tx_usage; - DMAUsage _rx_usage; + DMAUsage _tx_usage = DMA_USAGE_NEVER; + DMAUsage _rx_usage = DMA_USAGE_NEVER; event_callback_t _tx_callback; event_callback_t _rx_callback; - bool _tx_asynch_set; - bool _rx_asynch_set; + bool _tx_asynch_set = false; + bool _rx_asynch_set = false; +#endif + + serial_t _serial {}; + Callback _irq[IrqCnt]; + int _baud; + bool _rx_enabled = true; + bool _tx_enabled = true; + const PinName _tx_pin; + const PinName _rx_pin; + const serial_pinmap_t *_static_pinmap = NULL; + void (SerialBase::*_set_flow_control_dp_func)(Flow, PinName, PinName) = NULL; + +#if DEVICE_SERIAL_FC + Flow _flow_type = Disabled; + PinName _flow1 = NC; + PinName _flow2 = NC; + const serial_fc_pinmap_t *_static_pinmap_fc = NULL; + void (SerialBase::*_set_flow_control_sp_func)(Flow, const serial_fc_pinmap_t &) = NULL; #endif - serial_t _serial; - Callback _irq[IrqCnt]; - int _baud; #endif }; diff --git a/cores/arduino/mbed/drivers/UARTSerial.h b/cores/arduino/mbed/drivers/UARTSerial.h index e23a4a65..85cffa88 100644 --- a/cores/arduino/mbed/drivers/UARTSerial.h +++ b/cores/arduino/mbed/drivers/UARTSerial.h @@ -58,6 +58,13 @@ class UARTSerial : private SerialBase, public FileHandle, private NonCopyable +#include "UARTSerial.h" + /** * If application calls associated FileHandle only from single thread context * then locking between AT command and response is not needed. However, @@ -219,6 +221,12 @@ class ATHandler { */ void set_send_delay(uint16_t send_delay); + /** Sets UARTSerial filehandle to given baud rate + * + * @param baud_rate + */ + void set_baud(int baud_rate); + protected: void event(); #if defined AT_HANDLER_MUTEX && defined MBED_CONF_RTOS_PRESENT diff --git a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularContext.h b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularContext.h index 5ccb5f20..8825884a 100644 --- a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularContext.h +++ b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularContext.h @@ -35,6 +35,7 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { // from CellularBase/NetworkInterface virtual nsapi_error_t set_blocking(bool blocking); virtual NetworkStack *get_stack(); + virtual nsapi_error_t get_ip_address(SocketAddress *address); virtual const char *get_ip_address(); virtual char *get_interface_name(char *interface_name); virtual void attach(mbed::Callback status_cb); @@ -48,7 +49,9 @@ class AT_CellularContext : public CellularContext, public AT_CellularBase { virtual nsapi_error_t connect(const char *sim_pin, const char *apn = 0, const char *uname = 0, const char *pwd = 0); virtual void set_credentials(const char *apn, const char *uname = 0, const char *pwd = 0); + virtual nsapi_error_t get_netmask(SocketAddress *address); virtual const char *get_netmask(); + virtual nsapi_error_t get_gateway(SocketAddress *address); virtual const char *get_gateway(); // from CellularContext diff --git a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularDevice.h b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularDevice.h index 10ceebef..2de495c8 100755 --- a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularDevice.h +++ b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularDevice.h @@ -39,6 +39,8 @@ class AT_CellularDevice : public CellularDevice { AT_CellularDevice(FileHandle *fh); virtual ~AT_CellularDevice(); + virtual nsapi_error_t clear(); + virtual nsapi_error_t hard_power_on(); virtual nsapi_error_t hard_power_off(); @@ -61,14 +63,10 @@ class AT_CellularDevice : public CellularDevice { virtual CellularNetwork *open_network(FileHandle *fh = NULL); - virtual CellularSMS *open_sms(FileHandle *fh = NULL); - virtual CellularInformation *open_information(FileHandle *fh = NULL); virtual void close_network(); - virtual void close_sms(); - virtual void close_information(); virtual void set_timeout(int timeout); @@ -117,13 +115,6 @@ class AT_CellularDevice : public CellularDevice { */ virtual AT_CellularNetwork *open_network_impl(ATHandler &at); - /** Create new instance of AT_CellularSMS or if overridden, modem specific implementation. - * - * @param at ATHandler reference for communication with the modem. - * @return new instance of class AT_CellularSMS - */ - virtual AT_CellularSMS *open_sms_impl(ATHandler &at); - /** Create new instance of AT_CellularInformation or if overridden, modem specific implementation. * * @param at ATHandler reference for communication with the modem. @@ -133,8 +124,26 @@ class AT_CellularDevice : public CellularDevice { virtual CellularContext *get_context_list() const; - AT_CellularNetwork *_network; + virtual nsapi_error_t set_baud_rate(int baud_rate); + +#if MBED_CONF_CELLULAR_USE_SMS + virtual CellularSMS *open_sms(FileHandle *fh = NULL); + + virtual void close_sms(); + + /** Create new instance of AT_CellularSMS or if overridden, modem specific implementation. + * + * @param at ATHandler reference for communication with the modem. + * @return new instance of class AT_CellularSMS + */ + virtual AT_CellularSMS *open_sms_impl(ATHandler &at); + AT_CellularSMS *_sms; + +#endif // MBED_CONF_CELLULAR_USE_SMS + + AT_CellularNetwork *_network; + AT_CellularInformation *_information; AT_CellularContext *_context_list; int _default_timeout; @@ -151,6 +160,7 @@ class AT_CellularDevice : public CellularDevice { // Sets up parameters for AT handler, for now only the send delay and URCs. // This kind of routine is needed for initialisation routines that are virtual and therefore cannot be called from constructor. void setup_at_handler(); + virtual nsapi_error_t set_baud_rate_impl(int baud_rate); private: void urc_nw_deact(); diff --git a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularNetwork.h b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularNetwork.h index 04cf48b2..fa265bcd 100644 --- a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularNetwork.h +++ b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularNetwork.h @@ -110,6 +110,13 @@ class AT_CellularNetwork : public CellularNetwork, public AT_CellularBase { * Can be overridden by the target class. */ virtual void get_context_state_command(); + + /** Clear the network and contexts to a known default state + * + * @return NSAPI_ERROR_OK on success + */ + nsapi_error_t clear(); + private: void urc_creg(); void urc_cereg(); diff --git a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularSMS.h b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularSMS.h index c0e19ac7..0e8d100f 100644 --- a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularSMS.h +++ b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularSMS.h @@ -18,6 +18,8 @@ #ifndef AT_CELLULAR_SMS_H_ #define AT_CELLULAR_SMS_H_ +#if MBED_CONF_CELLULAR_USE_SMS + #include "CellularSMS.h" #include "AT_CellularBase.h" #include "Callback.h" @@ -167,4 +169,6 @@ class AT_CellularSMS: public CellularSMS, public AT_CellularBase { } // namespace mbed +#endif //MBED_CONF_CELLULAR_USE_SMS + #endif // AT_CELLULAR_SMS_H_ diff --git a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularStack.h b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularStack.h index 2402289b..7b706d52 100644 --- a/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularStack.h +++ b/cores/arduino/mbed/features/cellular/framework/AT/AT_CellularStack.h @@ -43,6 +43,9 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { public: // NetworkStack + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address(); /** @@ -109,7 +112,7 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { closed(false), started(false), tx_ready(false), - rx_avail(false), + tls_socket(false), pending_bytes(0) { } @@ -126,7 +129,7 @@ class AT_CellularStack : public NetworkStack, public AT_CellularBase { bool closed; // socket has been closed by a peer bool started; // socket has been opened on modem stack bool tx_ready; // socket is ready for sending on modem stack - bool rx_avail; // socket has data for reading on modem stack + bool tls_socket; // socket uses modem's internal TLS socket functionality nsapi_size_t pending_bytes; // The number of received bytes pending }; diff --git a/cores/arduino/mbed/features/frameworks/mbed-coap/mbed-coap/sn_config.h b/cores/arduino/mbed/features/frameworks/mbed-coap/mbed-coap/sn_config.h index f04ffe80..a5c45caf 100644 --- a/cores/arduino/mbed/features/frameworks/mbed-coap/mbed-coap/sn_config.h +++ b/cores/arduino/mbed/features/frameworks/mbed-coap/mbed-coap/sn_config.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 ARM Limited. All rights reserved. + * Copyright (c) 2020 ARM Limited. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * Licensed under the Apache License, Version 2.0 (the License); you may * not use this file except in compliance with the License. @@ -98,6 +98,11 @@ * \brief Sets the CoAP re-send interval in seconds. * By default is 10 seconds. */ + +#ifdef MBED_CONF_MBED_CLIENT_DEFAULT_RESPONSE_TIMEOUT +#define DEFAULT_RESPONSE_TIMEOUT MBED_CONF_MBED_CLIENT_DEFAULT_RESPONSE_TIMEOUT +#endif + #ifndef DEFAULT_RESPONSE_TIMEOUT #define DEFAULT_RESPONSE_TIMEOUT 10 /**< Default re-sending timeout as seconds */ #endif @@ -219,8 +224,12 @@ * \brief Maximum time in seconds howe long message is kept for duplicate detection. * By default 60 seconds. */ +#ifdef MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED +#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED MBED_CONF_MBED_CLIENT_SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED +#endif + #ifndef SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED -#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED 60 /** RESPONSE_TIMEOUT * RESPONSE_RANDOM_FACTOR * (2 ^ MAX_RETRANSMIT - 1) + the expected maximum round trip time **/ +#define SN_COAP_DUPLICATION_MAX_TIME_MSGS_STORED 300 /** RESPONSE_TIMEOUT * RESPONSE_RANDOM_FACTOR * (2 ^ MAX_RETRANSMIT - 1) + the expected maximum round trip time **/ #endif /** @@ -234,7 +243,7 @@ #endif #ifndef SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED -#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED 60 /**< Maximum time in seconds of data (messages and payload) to be stored for blockwising */ +#define SN_COAP_BLOCKWISE_MAX_TIME_DATA_STORED 300 /**< Maximum time in seconds of data (messages and payload) to be stored for blockwising */ #endif /** diff --git a/cores/arduino/mbed/features/frameworks/nanostack-libservice/mbed-client-libservice/ip6string.h b/cores/arduino/mbed/features/frameworks/nanostack-libservice/mbed-client-libservice/ip6string.h index 0f3cec56..34ee097b 100644 --- a/cores/arduino/mbed/features/frameworks/nanostack-libservice/mbed-client-libservice/ip6string.h +++ b/cores/arduino/mbed/features/frameworks/nanostack-libservice/mbed-client-libservice/ip6string.h @@ -57,7 +57,7 @@ uint_fast8_t ip6_prefix_tos(const void *prefix, uint_fast8_t prefix_len, char *p * IPv4 tunneling addresses are not covered. * * \param ip6addr IPv6 address in string format. - * \param len Lenght of ipv6 string, maximum of 41. + * \param len Length of ipv6 string, maximum of 41. * \param dest buffer for address. MUST be 16 bytes. Filled with 0 on error. * \return boolean set to true if conversion succeed, false if it didn't */ diff --git a/cores/arduino/mbed/features/lwipstack/LWIPStack.h b/cores/arduino/mbed/features/lwipstack/LWIPStack.h index a5756645..a5fa44a8 100644 --- a/cores/arduino/mbed/features/lwipstack/LWIPStack.h +++ b/cores/arduino/mbed/features/lwipstack/LWIPStack.h @@ -93,12 +93,10 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { */ virtual char *get_mac_address(char *buf, nsapi_size_t buflen); - /** Copies IP address of the network interface to user supplied buffer - * - * @param buf buffer to which IP address will be copied as "W:X:Y:Z" - * @param buflen size of supplied buffer - * @return Pointer to a buffer, or NULL if the buffer is too small - */ + /** @copydoc NetworkStack::get_ip_address */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_ip_address(char *buf, nsapi_size_t buflen); /** Get the IPv6 link local address in SocketAddress representation @@ -115,6 +113,9 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { * @param interface_name naame of the interface * @return Pointer to a buffer, or NULL if the buffer is too small */ + virtual nsapi_error_t get_ip_address_if(const char *interface_name, SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_ip_address_if(char *buf, nsapi_size_t buflen, const char *interface_name); /** Copies netmask of the network interface to user supplied buffer @@ -123,6 +124,9 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { * @param buflen size of supplied buffer * @return Pointer to a buffer, or NULL if the buffer is too small */ + virtual nsapi_error_t get_netmask(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_netmask(char *buf, nsapi_size_t buflen); /** Copies gateway address of the network interface to user supplied buffer @@ -131,6 +135,9 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { * @param buflen size of supplied buffer * @return Pointer to a buffer, or NULL if the buffer is too small */ + virtual nsapi_error_t get_gateway(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_gateway(char *buf, nsapi_size_t buflen); private: @@ -142,6 +149,7 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { static void netif_link_irq(struct netif *netif); static void netif_status_irq(struct netif *netif); static Interface *our_if_from_netif(struct netif *netif); + static void delete_interface(OnboardNetworkStack::Interface **interface_out); #if LWIP_ETHERNET static err_t emac_low_level_output(struct netif *netif, struct pbuf *p); @@ -201,6 +209,8 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { void *hw; /**< alternative implementation pointer - used for PPP */ }; + mbed_rtos_storage_semaphore_t remove_interface_sem; + osSemaphoreId_t remove_interface; mbed_rtos_storage_semaphore_t linked_sem; osSemaphoreId_t linked; mbed_rtos_storage_semaphore_t unlinked_sem; @@ -275,6 +285,14 @@ class LWIP : public OnboardNetworkStack, private mbed::NonCopyable { */ virtual nsapi_error_t add_ppp_interface(PPP &ppp, bool default_if, OnboardNetworkStack::Interface **interface_out); + /** Remove a network interface from IP stack + * + * Removes layer 3 IP objects,network interface from stack list . + * @param[out] interface_out pointer to stack interface object controlling the EMAC + * @return NSAPI_ERROR_OK on success, or error code + */ + nsapi_error_t remove_ethernet_interface(OnboardNetworkStack::Interface **interface_out) override; + /** Remove a network interface from IP stack * * Removes layer 3 IP objects,network interface from stack list, and shutdown device driver . diff --git a/cores/arduino/mbed/features/lwipstack/lwipopts.h b/cores/arduino/mbed/features/lwipstack/lwipopts.h index 4f720de3..0a866f39 100644 --- a/cores/arduino/mbed/features/lwipstack/lwipopts.h +++ b/cores/arduino/mbed/features/lwipstack/lwipopts.h @@ -81,9 +81,7 @@ #define SYS_LIGHTWEIGHT_PROT 1 -#ifndef LWIP_RAW -#define LWIP_RAW 0 -#endif +#define LWIP_RAW MBED_CONF_LWIP_RAW_SOCKET_ENABLED #define MEMP_NUM_TCPIP_MSG_INPKT MBED_CONF_LWIP_MEMP_NUM_TCPIP_MSG_INPKT #define TCPIP_MBOX_SIZE MBED_CONF_LWIP_TCPIP_MBOX_SIZE diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h index 1c93331a..46d9117f 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h @@ -45,7 +45,7 @@ #endif /* Fix the config here. Not convenient to put an #ifdef _WIN32 in config.h as - * it would confuse config.pl. */ + * it would confuse config.py. */ #if !defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) && \ !defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) #define MBEDTLS_PLATFORM_SNPRINTF_ALT @@ -342,6 +342,14 @@ #error "MBEDTLS_PKCS11_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_PKCS11_C) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_PKCS11_C is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_PKCS11_C is deprecated and will be removed in a future version of Mbed TLS" +#endif +#endif /* MBEDTLS_PKCS11_C */ + #if defined(MBEDTLS_PLATFORM_EXIT_ALT) && !defined(MBEDTLS_PLATFORM_C) #error "MBEDTLS_PLATFORM_EXIT_ALT defined, but not all prerequisites" #endif @@ -769,6 +777,22 @@ #error "MBEDTLS_HAVE_INT32/MBEDTLS_HAVE_INT64 and MBEDTLS_HAVE_ASM cannot be defined simultaneously" #endif /* (MBEDTLS_HAVE_INT32 || MBEDTLS_HAVE_INT64) && MBEDTLS_HAVE_ASM */ +#if defined(MBEDTLS_SSL_PROTO_SSL3) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_SSL_PROTO_SSL3 is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_SSL_PROTO_SSL3 is deprecated and will be removed in a future version of Mbed TLS" +#endif +#endif /* MBEDTLS_SSL_PROTO_SSL3 */ + +#if defined(MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO is deprecated and will be removed in a future version of Mbed TLS" +#endif +#endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */ + /* * Avoid warning from -pedantic. This is a convenient place for this * workaround since this is included by every single file before the diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h index f828368c..4a913cfa 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h @@ -249,27 +249,27 @@ /** * \def MBEDTLS_DEPRECATED_WARNING * - * Mark deprecated functions so that they generate a warning if used. - * Functions deprecated in one version will usually be removed in the next - * version. You can enable this to help you prepare the transition to a new - * major version by making sure your code is not using these functions. + * Mark deprecated functions and features so that they generate a warning if + * used. Functionality deprecated in one version will usually be removed in the + * next version. You can enable this to help you prepare the transition to a + * new major version by making sure your code is not using this functionality. * * This only works with GCC and Clang. With other compilers, you may want to * use MBEDTLS_DEPRECATED_REMOVED * - * Uncomment to get warnings on using deprecated functions. + * Uncomment to get warnings on using deprecated functions and features. */ //#define MBEDTLS_DEPRECATED_WARNING /** * \def MBEDTLS_DEPRECATED_REMOVED * - * Remove deprecated functions so that they generate an error if used. - * Functions deprecated in one version will usually be removed in the next - * version. You can enable this to help you prepare the transition to a new - * major version by making sure your code is not using these functions. + * Remove deprecated functions and features so that they generate an error if + * used. Functionality deprecated in one version will usually be removed in the + * next version. You can enable this to help you prepare the transition to a + * new major version by making sure your code is not using this functionality. * - * Uncomment to get errors on using deprecated functions. + * Uncomment to get errors on using deprecated functions and features. */ //#define MBEDTLS_DEPRECATED_REMOVED @@ -1587,6 +1587,9 @@ * Enable support for receiving and parsing SSLv2 Client Hello messages for the * SSL Server module (MBEDTLS_SSL_SRV_C). * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. + * * Uncomment this macro to enable support for SSLv2 Client Hello messages. */ //#define MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO @@ -1618,6 +1621,9 @@ * Requires: MBEDTLS_MD5_C * MBEDTLS_SHA1_C * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. + * * Comment this macro to disable support for SSL 3.0 */ //#define MBEDTLS_SSL_PROTO_SSL3 @@ -2828,7 +2834,10 @@ /** * \def MBEDTLS_PKCS11_C * - * Enable wrapper for PKCS#11 smartcard support. + * Enable wrapper for PKCS#11 smartcard support via the pkcs11-helper library. + * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. * * Module: library/pkcs11.c * Caller: library/pk.c @@ -3275,7 +3284,7 @@ /* MPI / BIGNUM options */ //#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ -#define MBEDTLS_MPI_MAX_SIZE 512 +#define MBEDTLS_MPI_MAX_SIZE 512 /* CTR_DRBG options */ //#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ @@ -3534,7 +3543,7 @@ * on it, and considering stronger message digests instead. * */ -// #define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES +//#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES /** * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/error.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/error.h index 06bb1c9c..82b01881 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/error.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/error.h @@ -52,9 +52,10 @@ * For historical reasons, low-level error codes are divided in even and odd, * even codes were assigned first, and -1 is reserved for other errors. * - * Low-level module errors (0x0002-0x007E, 0x0003-0x007F) + * Low-level module errors (0x0002-0x007E, 0x0001-0x007F) * * Module Nr Codes assigned + * ERROR 2 0x006E 0x0001 * MPI 7 0x0002-0x0010 * GCM 3 0x0012-0x0014 0x0013-0x0013 * BLOWFISH 3 0x0016-0x0018 0x0017-0x0017 @@ -86,7 +87,7 @@ * CHACHA20 3 0x0051-0x0055 * POLY1305 3 0x0057-0x005B * CHACHAPOLY 2 0x0054-0x0056 - * PLATFORM 1 0x0070-0x0072 + * PLATFORM 2 0x0070-0x0072 * * High-level module nr (3 bits - 0x0...-0x7...) * Name ID Nr of Errors @@ -112,6 +113,9 @@ extern "C" { #endif +#define MBEDTLS_ERR_ERROR_GENERIC_ERROR -0x0001 /**< Generic error */ +#define MBEDTLS_ERR_ERROR_CORRUPTION_DETECTED -0x006E /**< This is a bug in the library */ + /** * \brief Translate a mbed TLS error code into a string representation, * Result is truncated if necessary and always includes a terminating diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs11.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs11.h index d9f45db6..cf8d8c42 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs11.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs11.h @@ -47,6 +47,8 @@ extern "C" { #endif +#if defined(MBEDTLS_DEPRECATED_REMOVED) + /** * Context for PKCS #11 private keys. */ @@ -56,47 +58,71 @@ typedef struct mbedtls_pkcs11_context int len; } mbedtls_pkcs11_context; +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif + /** * Initialize a mbedtls_pkcs11_context. * (Just making memory references valid.) + * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. */ -void mbedtls_pkcs11_init( mbedtls_pkcs11_context *ctx ); +MBEDTLS_DEPRECATED void mbedtls_pkcs11_init( mbedtls_pkcs11_context *ctx ); /** * Fill in a mbed TLS certificate, based on the given PKCS11 helper certificate. * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. + * * \param cert X.509 certificate to fill * \param pkcs11h_cert PKCS #11 helper certificate * * \return 0 on success. */ -int mbedtls_pkcs11_x509_cert_bind( mbedtls_x509_crt *cert, pkcs11h_certificate_t pkcs11h_cert ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_x509_cert_bind( mbedtls_x509_crt *cert, + pkcs11h_certificate_t pkcs11h_cert ); /** * Set up a mbedtls_pkcs11_context storing the given certificate. Note that the * mbedtls_pkcs11_context will take over control of the certificate, freeing it when * done. * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. + * * \param priv_key Private key structure to fill. * \param pkcs11_cert PKCS #11 helper certificate * * \return 0 on success */ -int mbedtls_pkcs11_priv_key_bind( mbedtls_pkcs11_context *priv_key, - pkcs11h_certificate_t pkcs11_cert ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_priv_key_bind( + mbedtls_pkcs11_context *priv_key, + pkcs11h_certificate_t pkcs11_cert ); /** * Free the contents of the given private key context. Note that the structure * itself is not freed. * + * \deprecated This function is deprecated and will be removed in a + * future version of the library. + * * \param priv_key Private key structure to cleanup */ -void mbedtls_pkcs11_priv_key_free( mbedtls_pkcs11_context *priv_key ); +MBEDTLS_DEPRECATED void mbedtls_pkcs11_priv_key_free( + mbedtls_pkcs11_context *priv_key ); /** * \brief Do an RSA private key decrypt, then remove the message * padding * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * * \param ctx PKCS #11 context * \param mode must be MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's signature * \param input buffer holding the encrypted data @@ -110,15 +136,18 @@ void mbedtls_pkcs11_priv_key_free( mbedtls_pkcs11_context *priv_key ); * of ctx->N (eg. 128 bytes if RSA-1024 is used) otherwise * an error is thrown. */ -int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, - int mode, size_t *olen, - const unsigned char *input, - unsigned char *output, - size_t output_max_len ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, + int mode, size_t *olen, + const unsigned char *input, + unsigned char *output, + size_t output_max_len ); /** * \brief Do a private RSA to sign a message digest * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * * \param ctx PKCS #11 context * \param mode must be MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's signature * \param md_alg a MBEDTLS_MD_XXX (use MBEDTLS_MD_NONE for signing raw data) @@ -132,28 +161,58 @@ int mbedtls_pkcs11_decrypt( mbedtls_pkcs11_context *ctx, * \note The "sig" buffer must be as large as the size * of ctx->N (eg. 128 bytes if RSA-1024 is used). */ -int mbedtls_pkcs11_sign( mbedtls_pkcs11_context *ctx, - int mode, - mbedtls_md_type_t md_alg, - unsigned int hashlen, - const unsigned char *hash, - unsigned char *sig ); +MBEDTLS_DEPRECATED int mbedtls_pkcs11_sign( mbedtls_pkcs11_context *ctx, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + unsigned char *sig ); /** * SSL/TLS wrappers for PKCS#11 functions + * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. */ -static inline int mbedtls_ssl_pkcs11_decrypt( void *ctx, int mode, size_t *olen, - const unsigned char *input, unsigned char *output, - size_t output_max_len ) +MBEDTLS_DEPRECATED static inline int mbedtls_ssl_pkcs11_decrypt( void *ctx, + int mode, size_t *olen, + const unsigned char *input, unsigned char *output, + size_t output_max_len ) { return mbedtls_pkcs11_decrypt( (mbedtls_pkcs11_context *) ctx, mode, olen, input, output, output_max_len ); } -static inline int mbedtls_ssl_pkcs11_sign( void *ctx, - int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, - int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, - const unsigned char *hash, unsigned char *sig ) +/** + * \brief This function signs a message digest using RSA. + * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * + * \param ctx The PKCS #11 context. + * \param f_rng The RNG function. This parameter is unused. + * \param p_rng The RNG context. This parameter is unused. + * \param mode The operation to run. This must be set to + * MBEDTLS_RSA_PRIVATE, for compatibility with rsa.c's + * signature. + * \param md_alg The message digest algorithm. One of the MBEDTLS_MD_XXX + * must be passed to this function and MBEDTLS_MD_NONE can be + * used for signing raw data. + * \param hashlen The message digest length (for MBEDTLS_MD_NONE only). + * \param hash The buffer holding the message digest. + * \param sig The buffer that will hold the ciphertext. + * + * \return \c 0 if the signing operation was successful. + * \return A non-zero error code on failure. + * + * \note The \p sig buffer must be as large as the size of + * ctx->N. For example, 128 bytes if RSA-1024 is + * used. + */ +MBEDTLS_DEPRECATED static inline int mbedtls_ssl_pkcs11_sign( void *ctx, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, + const unsigned char *hash, unsigned char *sig ) { ((void) f_rng); ((void) p_rng); @@ -161,11 +220,25 @@ static inline int mbedtls_ssl_pkcs11_sign( void *ctx, hashlen, hash, sig ); } -static inline size_t mbedtls_ssl_pkcs11_key_len( void *ctx ) +/** + * This function gets the length of the private key. + * + * \deprecated This function is deprecated and will be removed in a future + * version of the library. + * + * \param ctx The PKCS #11 context. + * + * \return The length of the private key. + */ +MBEDTLS_DEPRECATED static inline size_t mbedtls_ssl_pkcs11_key_len( void *ctx ) { return ( (mbedtls_pkcs11_context *) ctx )->len; } +#undef MBEDTLS_DEPRECATED + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + #ifdef __cplusplus } #endif diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h index f703da99..6332d148 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h @@ -319,7 +319,8 @@ struct mbedtls_ssl_handshake_params mbedtls_ecdh_context ecdh_ctx; /*!< ECDH key exchange */ #if defined(MBEDTLS_USE_PSA_CRYPTO) - psa_ecc_curve_t ecdh_psa_curve; + psa_key_type_t ecdh_psa_type; + uint16_t ecdh_bits; psa_key_handle_t ecdh_psa_privkey; unsigned char ecdh_psa_peerkey[MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH]; size_t ecdh_psa_peerkey_len; @@ -1062,4 +1063,46 @@ int mbedtls_ssl_decrypt_buf( mbedtls_ssl_context const *ssl, mbedtls_ssl_transform *transform, mbedtls_record *rec ); +/* Length of the "epoch" field in the record header */ +static inline size_t mbedtls_ssl_ep_len( const mbedtls_ssl_context *ssl ) +{ +#if defined(MBEDTLS_SSL_PROTO_DTLS) + if( ssl->conf->transport == MBEDTLS_SSL_TRANSPORT_DATAGRAM ) + return( 2 ); +#else + ((void) ssl); +#endif + return( 0 ); +} + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +int mbedtls_ssl_resend_hello_request( mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + +void mbedtls_ssl_set_timer( mbedtls_ssl_context *ssl, uint32_t millisecs ); +int mbedtls_ssl_check_timer( mbedtls_ssl_context *ssl ); + +void mbedtls_ssl_reset_in_out_pointers( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_update_out_pointers( mbedtls_ssl_context *ssl, + mbedtls_ssl_transform *transform ); +void mbedtls_ssl_update_in_pointers( mbedtls_ssl_context *ssl ); + +int mbedtls_ssl_session_reset_int( mbedtls_ssl_context *ssl, int partial ); + +#if defined(MBEDTLS_SSL_DTLS_ANTI_REPLAY) +void mbedtls_ssl_dtls_replay_reset( mbedtls_ssl_context *ssl ); +#endif + +void mbedtls_ssl_handshake_wrapup_free_hs_transform( mbedtls_ssl_context *ssl ); + +#if defined(MBEDTLS_SSL_RENEGOTIATION) +int mbedtls_ssl_start_renegotiation( mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_SSL_RENEGOTIATION */ + +#if defined(MBEDTLS_SSL_PROTO_DTLS) +size_t mbedtls_ssl_get_current_mtu( const mbedtls_ssl_context *ssl ); +void mbedtls_ssl_buffering_free( mbedtls_ssl_context *ssl ); +void mbedtls_ssl_flight_free( mbedtls_ssl_flight_item *flight ); +#endif /* MBEDTLS_SSL_PROTO_DTLS */ + #endif /* ssl_internal.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h index f78e40a5..35af4cc4 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h @@ -39,7 +39,7 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 19 +#define MBEDTLS_VERSION_MINOR 21 #define MBEDTLS_VERSION_PATCH 0 /** @@ -47,9 +47,9 @@ * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x02130000 -#define MBEDTLS_VERSION_STRING "2.19.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.19.0" +#define MBEDTLS_VERSION_NUMBER 0x02150000 +#define MBEDTLS_VERSION_STRING "2.21.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.21.0" #if defined(MBEDTLS_VERSION_C) diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1.h index ab947ab7..33b30041 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1.h @@ -52,7 +52,7 @@ #define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 /**< ASN1 tag was of an unexpected value. */ #define MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 /**< Error when trying to determine the length or invalid length. */ #define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 /**< Actual length differs from expected length. */ -#define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 /**< Data is invalid. (not used) */ +#define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 /**< Data is invalid. */ #define MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A /**< Memory allocation failed */ #define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C /**< Buffer too small when writing ASN.1 data structure. */ @@ -75,6 +75,7 @@ #define MBEDTLS_ASN1_OCTET_STRING 0x04 #define MBEDTLS_ASN1_NULL 0x05 #define MBEDTLS_ASN1_OID 0x06 +#define MBEDTLS_ASN1_ENUMERATED 0x0A #define MBEDTLS_ASN1_UTF8_STRING 0x0C #define MBEDTLS_ASN1_SEQUENCE 0x10 #define MBEDTLS_ASN1_SET 0x11 @@ -89,6 +90,18 @@ #define MBEDTLS_ASN1_CONSTRUCTED 0x20 #define MBEDTLS_ASN1_CONTEXT_SPECIFIC 0x80 +/* Slightly smaller way to check if tag is a string tag + * compared to canonical implementation. */ +#define MBEDTLS_ASN1_IS_STRING_TAG( tag ) \ + ( ( tag ) < 32u && ( \ + ( ( 1u << ( tag ) ) & ( ( 1u << MBEDTLS_ASN1_BMP_STRING ) | \ + ( 1u << MBEDTLS_ASN1_UTF8_STRING ) | \ + ( 1u << MBEDTLS_ASN1_T61_STRING ) | \ + ( 1u << MBEDTLS_ASN1_IA5_STRING ) | \ + ( 1u << MBEDTLS_ASN1_UNIVERSAL_STRING ) | \ + ( 1u << MBEDTLS_ASN1_PRINTABLE_STRING ) | \ + ( 1u << MBEDTLS_ASN1_BIT_STRING ) ) ) != 0 ) ) + /* * Bit masks for each of the components of an ASN.1 tag as specified in * ITU X.690 (08/2015), section 8.1 "General rules for encoding", @@ -119,6 +132,10 @@ ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf)->len ) || \ memcmp( (oid_str), (oid_buf)->p, (oid_buf)->len) != 0 ) +#define MBEDTLS_OID_CMP_RAW(oid_str, oid_buf, oid_buf_len) \ + ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf_len) ) || \ + memcmp( (oid_str), (oid_buf), (oid_buf_len) ) != 0 ) + #ifdef __cplusplus extern "C" { #endif @@ -176,119 +193,342 @@ mbedtls_asn1_named_data; * \brief Get the length of an ASN.1 element. * Updates the pointer to immediately behind the length. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param len The variable that will receive the value + * \param p On entry, \c *p points to the first byte of the length, + * i.e. immediately after the tag. + * On successful completion, \c *p points to the first byte + * after the length, i.e. the first byte of the content. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On successful completion, \c *len contains the length + * read from the ASN.1 input. * - * \return 0 if successful, MBEDTLS_ERR_ASN1_OUT_OF_DATA on reaching - * end of data, MBEDTLS_ERR_ASN1_INVALID_LENGTH if length is - * unparseable. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_OUT_OF_DATA if the ASN.1 element + * would end beyond \p end. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the length is unparseable. */ int mbedtls_asn1_get_len( unsigned char **p, - const unsigned char *end, - size_t *len ); + const unsigned char *end, + size_t *len ); /** - * \brief Get the tag and length of the tag. Check for the requested tag. + * \brief Get the tag and length of the element. + * Check for the requested tag. * Updates the pointer to immediately behind the tag and length. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param len The variable that will receive the length - * \param tag The expected tag + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * after the length, i.e. the first byte of the content. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On successful completion, \c *len contains the length + * read from the ASN.1 input. + * \param tag The expected tag. * - * \return 0 if successful, MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if tag did - * not match requested tag, or another specific ASN.1 error code. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the data does not start + * with the requested tag. + * \return #MBEDTLS_ERR_ASN1_OUT_OF_DATA if the ASN.1 element + * would end beyond \p end. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the length is unparseable. */ int mbedtls_asn1_get_tag( unsigned char **p, - const unsigned char *end, - size_t *len, int tag ); + const unsigned char *end, + size_t *len, int tag ); /** * \brief Retrieve a boolean ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param val The variable that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value (\c 0 or \c 1). * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BOOLEAN. */ int mbedtls_asn1_get_bool( unsigned char **p, - const unsigned char *end, - int *val ); + const unsigned char *end, + int *val ); /** * \brief Retrieve an integer ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param val The variable that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value. * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 INTEGER. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. */ int mbedtls_asn1_get_int( unsigned char **p, - const unsigned char *end, - int *val ); + const unsigned char *end, + int *val ); + +/** + * \brief Retrieve an enumerated ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value. + * + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 ENUMERATED. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + */ +int mbedtls_asn1_get_enum( unsigned char **p, + const unsigned char *end, + int *val ); /** * \brief Retrieve a bitstring ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param bs The variable that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p is equal to \p end. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param bs On success, ::mbedtls_asn1_bitstring information about + * the parsed value. * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input contains + * extra data after a valid BIT STRING. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BIT STRING. */ int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end, - mbedtls_asn1_bitstring *bs); + mbedtls_asn1_bitstring *bs ); /** * \brief Retrieve a bitstring ASN.1 tag without unused bits and its * value. * Updates the pointer to the beginning of the bit/octet string. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param len Length of the actual bit/octect string in bytes + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * of the content of the BIT STRING. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On success, \c *len is the length of the content in bytes. * - * \return 0 if successful or a specific ASN.1 error code. + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_INVALID_DATA if the input starts with + * a valid BIT STRING with a nonzero number of unused bits. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BIT STRING. */ -int mbedtls_asn1_get_bitstring_null( unsigned char **p, const unsigned char *end, - size_t *len ); +int mbedtls_asn1_get_bitstring_null( unsigned char **p, + const unsigned char *end, + size_t *len ); /** - * \brief Parses and splits an ASN.1 "SEQUENCE OF " - * Updated the pointer to immediately behind the full sequence tag. + * \brief Parses and splits an ASN.1 "SEQUENCE OF ". + * Updates the pointer to immediately behind the full sequence tag. + * + * This function allocates memory for the sequence elements. You can free + * the allocated memory with mbedtls_asn1_sequence_free(). * - * \param p The position in the ASN.1 data - * \param end End of data - * \param cur First variable in the chain to fill - * \param tag Type of sequence + * \note On error, this function may return a partial list in \p cur. + * You must set `cur->next = NULL` before calling this function! + * Otherwise it is impossible to distinguish a previously non-null + * pointer from a pointer to an object allocated by this function. * - * \return 0 if successful or a specific ASN.1 error code. + * \note If the sequence is empty, this function does not modify + * \c *cur. If the sequence is valid and non-empty, this + * function sets `cur->buf.tag` to \p tag. This allows + * callers to distinguish between an empty sequence and + * a one-element sequence. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p is equal to \p end. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param cur A ::mbedtls_asn1_sequence which this function fills. + * When this function returns, \c *cur is the head of a linked + * list. Each node in this list is allocated with + * mbedtls_calloc() apart from \p cur itself, and should + * therefore be freed with mbedtls_free(). + * The list describes the content of the sequence. + * The head of the list (i.e. \c *cur itself) describes the + * first element, `*cur->next` describes the second element, etc. + * For each element, `buf.tag == tag`, `buf.len` is the length + * of the content of the content of the element, and `buf.p` + * points to the first byte of the content (i.e. immediately + * past the length of the element). + * Note that list elements may be allocated even on error. + * \param tag Each element of the sequence must have this tag. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input contains + * extra data after a valid SEQUENCE OF \p tag. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the input starts with + * an ASN.1 SEQUENCE in which an element has a tag that + * is different from \p tag. + * \return #MBEDTLS_ERR_ASN1_ALLOC_FAILED if a memory allocation failed. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 SEQUENCE. */ int mbedtls_asn1_get_sequence_of( unsigned char **p, - const unsigned char *end, - mbedtls_asn1_sequence *cur, - int tag); + const unsigned char *end, + mbedtls_asn1_sequence *cur, + int tag ); +/** + * \brief Free a heap-allocated linked list presentation of + * an ASN.1 sequence, including the first element. + * + * There are two common ways to manage the memory used for the representation + * of a parsed ASN.1 sequence: + * - Allocate a head node `mbedtls_asn1_sequence *head` with mbedtls_calloc(). + * Pass this node as the `cur` argument to mbedtls_asn1_get_sequence_of(). + * When you have finished processing the sequence, + * call mbedtls_asn1_sequence_free() on `head`. + * - Allocate a head node `mbedtls_asn1_sequence *head` in any manner, + * for example on the stack. Make sure that `head->next == NULL`. + * Pass `head` as the `cur` argument to mbedtls_asn1_get_sequence_of(). + * When you have finished processing the sequence, + * call mbedtls_asn1_sequence_free() on `head->cur`, + * then free `head` itself in the appropriate manner. + * + * \param seq The address of the first sequence component. This may + * be \c NULL, in which case this functions returns + * immediately. + */ +void mbedtls_asn1_sequence_free( mbedtls_asn1_sequence *seq ); + +/** + * \brief Traverse an ASN.1 SEQUENCE container and + * call a callback for each entry. + * + * This function checks that the input is a SEQUENCE of elements that + * each have a "must" tag, and calls a callback function on the elements + * that have a "may" tag. + * + * For example, to validate that the input is a SEQUENCE of `tag1` and call + * `cb` on each element, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0xff, tag1, 0, 0, cb, ctx); + * ``` + * + * To validate that the input is a SEQUENCE of ANY and call `cb` on + * each element, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0, 0, 0, 0, cb, ctx); + * ``` + * + * To validate that the input is a SEQUENCE of CHOICE {NULL, OCTET STRING} + * and call `cb` on each element that is an OCTET STRING, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0xfe, 0x04, 0xff, 0x04, cb, ctx); + * ``` + * + * The callback is called on the elements with a "may" tag from left to + * right. If the input is not a valid SEQUENCE of elements with a "must" tag, + * the callback is called on the elements up to the leftmost point where + * the input is invalid. + * + * \warning This function is still experimental and may change + * at any time. + * + * \param p The address of the pointer to the beginning of + * the ASN.1 SEQUENCE header. This is updated to + * point to the end of the ASN.1 SEQUENCE container + * on a successful invocation. + * \param end The end of the ASN.1 SEQUENCE container. + * \param tag_must_mask A mask to be applied to the ASN.1 tags found within + * the SEQUENCE before comparing to \p tag_must_value. + * \param tag_must_val The required value of each ASN.1 tag found in the + * SEQUENCE, after masking with \p tag_must_mask. + * Mismatching tags lead to an error. + * For example, a value of \c 0 for both \p tag_must_mask + * and \p tag_must_val means that every tag is allowed, + * while a value of \c 0xFF for \p tag_must_mask means + * that \p tag_must_val is the only allowed tag. + * \param tag_may_mask A mask to be applied to the ASN.1 tags found within + * the SEQUENCE before comparing to \p tag_may_value. + * \param tag_may_val The desired value of each ASN.1 tag found in the + * SEQUENCE, after masking with \p tag_may_mask. + * Mismatching tags will be silently ignored. + * For example, a value of \c 0 for \p tag_may_mask and + * \p tag_may_val means that any tag will be considered, + * while a value of \c 0xFF for \p tag_may_mask means + * that all tags with value different from \p tag_may_val + * will be ignored. + * \param cb The callback to trigger for each component + * in the ASN.1 SEQUENCE that matches \p tag_may_val. + * The callback function is called with the following + * parameters: + * - \p ctx. + * - The tag of the current element. + * - A pointer to the start of the current element's + * content inside the input. + * - The length of the content of the current element. + * If the callback returns a non-zero value, + * the function stops immediately, + * forwarding the callback's return value. + * \param ctx The context to be passed to the callback \p cb. + * + * \return \c 0 if successful the entire ASN.1 SEQUENCE + * was traversed without parsing or callback errors. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input + * contains extra data after a valid SEQUENCE + * of elements with an accepted tag. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the input starts + * with an ASN.1 SEQUENCE in which an element has a tag + * that is not accepted. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 SEQUENCE. + * \return A non-zero error code forwarded from the callback + * \p cb in case the latter returns a non-zero value. + */ +int mbedtls_asn1_traverse_sequence_of( + unsigned char **p, + const unsigned char *end, + unsigned char tag_must_mask, unsigned char tag_must_val, + unsigned char tag_may_mask, unsigned char tag_may_val, + int (*cb)( void *ctx, int tag, + unsigned char* start, size_t len ), + void *ctx ); #if defined(MBEDTLS_BIGNUM_C) /** - * \brief Retrieve a MPI value from an integer ASN.1 tag. + * \brief Retrieve an integer ASN.1 tag and its value. * Updates the pointer to immediately behind the full tag. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param X The MPI that will receive the value + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param X On success, the parsed value. * - * \return 0 if successful or a specific ASN.1 or MPI error code. + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 INTEGER. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + * \return An MPI error code if the parsed value is too large. */ int mbedtls_asn1_get_mpi( unsigned char **p, - const unsigned char *end, - mbedtls_mpi *X ); + const unsigned char *end, + mbedtls_mpi *X ); #endif /* MBEDTLS_BIGNUM_C */ /** @@ -296,10 +536,14 @@ int mbedtls_asn1_get_mpi( unsigned char **p, * Updates the pointer to immediately behind the full * AlgorithmIdentifier. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param alg The buffer to receive the OID - * \param params The buffer to receive the params (if any) + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the AlgorithmIdentifier element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param alg The buffer to receive the OID. + * \param params The buffer to receive the parameters. + * This is zeroized if there are no parameters. * * \return 0 if successful or a specific ASN.1 or MPI error code. */ @@ -313,9 +557,12 @@ int mbedtls_asn1_get_alg( unsigned char **p, * Updates the pointer to immediately behind the full * AlgorithmIdentifier. * - * \param p The position in the ASN.1 data - * \param end End of data - * \param alg The buffer to receive the OID + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the AlgorithmIdentifier element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param alg The buffer to receive the OID. * * \return 0 if successful or a specific ASN.1 or MPI error code. */ @@ -339,15 +586,19 @@ mbedtls_asn1_named_data *mbedtls_asn1_find_named_data( mbedtls_asn1_named_data * /** * \brief Free a mbedtls_asn1_named_data entry * - * \param entry The named data entry to free + * \param entry The named data entry to free. + * This function calls mbedtls_free() on + * `entry->oid.p` and `entry->val.p`. */ void mbedtls_asn1_free_named_data( mbedtls_asn1_named_data *entry ); /** - * \brief Free all entries in a mbedtls_asn1_named_data list - * Head will be set to NULL + * \brief Free all entries in a mbedtls_asn1_named_data list. * - * \param head Pointer to the head of the list of named data entries to free + * \param head Pointer to the head of the list of named data entries to free. + * This function calls mbedtls_asn1_free_named_data() and + * mbedtls_free() on each list element and + * sets \c *head to \c NULL. */ void mbedtls_asn1_free_named_data_list( mbedtls_asn1_named_data **head ); diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1write.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1write.h index 336f2daf..0bce28ed 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1write.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/asn1write.h @@ -100,6 +100,7 @@ int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start, * \param p The reference to the current position pointer. * \param start The start of the buffer, for bounds-checking. * \param X The MPI to write. + * It must be non-negative. * * \return The number of bytes written to \p p on success. * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. @@ -184,12 +185,28 @@ int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, * \param p The reference to the current position pointer. * \param start The start of the buffer, for bounds-checking. * \param val The integer value to write. + * It must be non-negative. * * \return The number of bytes written to \p p on success. * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. */ int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val ); +/** + * \brief Write an enum tag (#MBEDTLS_ASN1_ENUMERATED) and value + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param val The integer value to write. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val ); + /** * \brief Write a string in ASN.1 format using a specific * string encoding tag. @@ -232,7 +249,7 @@ int mbedtls_asn1_write_printable_string( unsigned char **p, /** * \brief Write a UTF8 string in ASN.1 format using the UTF8String - * string encoding tag (#MBEDTLS_ASN1_PRINTABLE_STRING). + * string encoding tag (#MBEDTLS_ASN1_UTF8_STRING). * * \note This function works backwards in data buffer. * @@ -332,9 +349,13 @@ int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start, * through (will be updated in case of a new entry). * \param oid The OID to look for. * \param oid_len The size of the OID. - * \param val The data to store (can be \c NULL if you want to fill - * it by hand). + * \param val The associated data to store. If this is \c NULL, + * no data is copied to the new or existing buffer. * \param val_len The minimum length of the data buffer needed. + * If this is 0, do not allocate a buffer for the associated + * data. + * If the OID was already present, enlarge, shrink or free + * the existing buffer to fit \p val_len. * * \return A pointer to the new / existing entry on success. * \return \c NULL if if there was a memory allocation error. diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/bignum.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/bignum.h index 2c5ace69..1d00c560 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/bignum.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/bignum.h @@ -185,7 +185,7 @@ extern "C" { */ typedef struct mbedtls_mpi { - int s; /*!< integer sign */ + int s; /*!< Sign: -1 if the mpi is negative, 1 otherwise */ size_t n; /*!< total # of limbs */ mbedtls_mpi_uint *p; /*!< pointer to limbs */ } @@ -594,6 +594,24 @@ int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ); */ int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ); +/** + * \brief Check if an MPI is less than the other in constant time. + * + * \param X The left-hand MPI. This must point to an initialized MPI + * with the same allocated length as Y. + * \param Y The right-hand MPI. This must point to an initialized MPI + * with the same allocated length as X. + * \param ret The result of the comparison: + * \c 1 if \p X is less than \p Y. + * \c 0 if \p X is greater than or equal to \p Y. + * + * \return 0 on success. + * \return MBEDTLS_ERR_MPI_BAD_INPUT_DATA if the allocated length of + * the two input MPIs is not the same. + */ +int mbedtls_mpi_lt_mpi_ct( const mbedtls_mpi *X, const mbedtls_mpi *Y, + unsigned *ret ); + /** * \brief Compare an MPI with an integer. * diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/ctr_drbg.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/ctr_drbg.h index ffaf8ad7..234e6a03 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/ctr_drbg.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/ctr_drbg.h @@ -1,7 +1,8 @@ /** * \file ctr_drbg.h * - * \brief This file contains CTR_DRBG definitions and functions. + * \brief This file contains definitions and functions for the + * CTR_DRBG pseudorandom generator. * * CTR_DRBG is a standardized way of building a PRNG from a block-cipher * in counter mode operation, as defined in NIST SP 800-90A: @@ -9,13 +10,19 @@ * Bit Generators. * * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 - * as the underlying block cipher. - * - * \warning Using 128-bit keys for CTR_DRBG limits the security of generated - * keys and operations that use random values generated to 128-bit security. + * (if \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled at compile time) + * as the underlying block cipher, with a derivation function. + * + * The security strength as defined in NIST SP 800-90A is + * 128 bits when AES-128 is used (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY enabled) + * and 256 bits otherwise, provided that #MBEDTLS_CTR_DRBG_ENTROPY_LEN is + * kept at its default value (and not overridden in config.h) and that the + * DRBG instance is set up with default parameters. + * See the documentation of mbedtls_ctr_drbg_seed() for more + * information. */ /* - * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * Copyright (C) 2006-2019, Arm Limited (or its affiliates), All Rights Reserved * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -56,9 +63,19 @@ #define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ #if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) -#define MBEDTLS_CTR_DRBG_KEYSIZE 16 /**< The key size used by the cipher (compile-time choice: 128 bits). */ +#define MBEDTLS_CTR_DRBG_KEYSIZE 16 +/**< The key size in bytes used by the cipher. + * + * Compile-time choice: 16 bytes (128 bits) + * because #MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled. + */ #else -#define MBEDTLS_CTR_DRBG_KEYSIZE 32 /**< The key size used by the cipher (compile-time choice: 256 bits). */ +#define MBEDTLS_CTR_DRBG_KEYSIZE 32 +/**< The key size in bytes used by the cipher. + * + * Compile-time choice: 32 bytes (256 bits) + * because \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is disabled. + */ #endif #define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ @@ -73,21 +90,31 @@ * \{ */ +/** \def MBEDTLS_CTR_DRBG_ENTROPY_LEN + * + * \brief The amount of entropy used per seed by default, in bytes. + */ #if !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) #if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) +/** This is 48 bytes because the entropy module uses SHA-512 + * (\c MBEDTLS_ENTROPY_FORCE_SHA256 is disabled). + */ #define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 -/**< The amount of entropy used per seed by default: - *
  • 48 with SHA-512.
  • - *
  • 32 with SHA-256.
+ +#else /* defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) */ + +/** This is 32 bytes because the entropy module uses SHA-256 + * (the SHA512 module is disabled or + * \c MBEDTLS_ENTROPY_FORCE_SHA256 is enabled). */ -#else -#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 32 -/**< Amount of entropy used per seed by default: - *
  • 48 with SHA-512.
  • - *
  • 32 with SHA-256.
+#if !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) +/** \warning To achieve a 256-bit security strength, you must pass a nonce + * to mbedtls_ctr_drbg_seed(). */ -#endif -#endif +#endif /* !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) */ +#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 32 +#endif /* defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) */ +#endif /* !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) */ #if !defined(MBEDTLS_CTR_DRBG_RESEED_INTERVAL) #define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 @@ -106,7 +133,7 @@ #if !defined(MBEDTLS_CTR_DRBG_MAX_SEED_INPUT) #define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 -/**< The maximum size of seed or reseed buffer. */ +/**< The maximum size of seed or reseed buffer in bytes. */ #endif /* \} name SECTION: Module settings */ @@ -120,20 +147,49 @@ extern "C" { #endif +#if MBEDTLS_CTR_DRBG_ENTROPY_LEN >= MBEDTLS_CTR_DRBG_KEYSIZE * 3 / 2 +/** The default length of the nonce read from the entropy source. + * + * This is \c 0 because a single read from the entropy source is sufficient + * to include a nonce. + * See the documentation of mbedtls_ctr_drbg_seed() for more information. + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN 0 +#else +/** The default length of the nonce read from the entropy source. + * + * This is half of the default entropy length because a single read from + * the entropy source does not provide enough material to form a nonce. + * See the documentation of mbedtls_ctr_drbg_seed() for more information. + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN ( MBEDTLS_CTR_DRBG_ENTROPY_LEN + 1 ) / 2 +#endif + /** * \brief The CTR_DRBG context structure. */ typedef struct mbedtls_ctr_drbg_context { unsigned char counter[16]; /*!< The counter (V). */ - int reseed_counter; /*!< The reseed counter. */ + int reseed_counter; /*!< The reseed counter. + * This is the number of requests that have + * been made since the last (re)seeding, + * minus one. + * Before the initial seeding, this field + * contains the amount of entropy in bytes + * to use as a nonce for the initial seeding, + * or -1 if no nonce length has been explicitly + * set (see mbedtls_ctr_drbg_set_nonce_len()). + */ int prediction_resistance; /*!< This determines whether prediction resistance is enabled, that is whether to systematically reseed before each random generation. */ size_t entropy_len; /*!< The amount of entropy grabbed on each - seed or reseed operation. */ - int reseed_interval; /*!< The reseed interval. */ + seed or reseed operation, in bytes. */ + int reseed_interval; /*!< The reseed interval. + * This is the maximum number of requests + * that can be made between reseedings. */ mbedtls_aes_context aes_ctx; /*!< The AES context. */ @@ -164,17 +220,86 @@ void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ); * \brief This function seeds and sets up the CTR_DRBG * entropy source for future reseeds. * - * \note Personalization data can be provided in addition to the more generic - * entropy source, to make this instantiation as unique as possible. + * A typical choice for the \p f_entropy and \p p_entropy parameters is + * to use the entropy module: + * - \p f_entropy is mbedtls_entropy_func(); + * - \p p_entropy is an instance of ::mbedtls_entropy_context initialized + * with mbedtls_entropy_init() (which registers the platform's default + * entropy sources). + * + * The entropy length is #MBEDTLS_CTR_DRBG_ENTROPY_LEN by default. + * You can override it by calling mbedtls_ctr_drbg_set_entropy_len(). + * + * The entropy nonce length is: + * - \c 0 if the entropy length is at least 3/2 times the entropy length, + * which guarantees that the security strength is the maximum permitted + * by the key size and entropy length according to NIST SP 800-90A §10.2.1; + * - Half the entropy length otherwise. + * You can override it by calling mbedtls_ctr_drbg_set_nonce_len(). + * With the default entropy length, the entropy nonce length is + * #MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN. + * + * You can provide a nonce and personalization string in addition to the + * entropy source, to make this instantiation as unique as possible. + * See SP 800-90A §8.6.7 for more details about nonces. + * + * The _seed_material_ value passed to the derivation function in + * the CTR_DRBG Instantiate Process described in NIST SP 800-90A §10.2.1.3.2 + * is the concatenation of the following strings: + * - A string obtained by calling \p f_entropy function for the entropy + * length. + */ +#if MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN == 0 +/** + * - If mbedtls_ctr_drbg_set_nonce_len() has been called, a string + * obtained by calling \p f_entropy function for the specified length. + */ +#else +/** + * - A string obtained by calling \p f_entropy function for the entropy nonce + * length. If the entropy nonce length is \c 0, this function does not + * make a second call to \p f_entropy. + */ +#endif +/** + * - The \p custom string. + * + * \note To achieve the nominal security strength permitted + * by CTR_DRBG, the entropy length must be: + * - at least 16 bytes for a 128-bit strength + * (maximum achievable strength when using AES-128); + * - at least 32 bytes for a 256-bit strength + * (maximum achievable strength when using AES-256). + * + * In addition, if you do not pass a nonce in \p custom, + * the sum of the entropy length + * and the entropy nonce length must be: + * - at least 24 bytes for a 128-bit strength + * (maximum achievable strength when using AES-128); + * - at least 48 bytes for a 256-bit strength + * (maximum achievable strength when using AES-256). * * \param ctx The CTR_DRBG context to seed. + * It must have been initialized with + * mbedtls_ctr_drbg_init(). + * After a successful call to mbedtls_ctr_drbg_seed(), + * you may not call mbedtls_ctr_drbg_seed() again on + * the same context unless you call + * mbedtls_ctr_drbg_free() and mbedtls_ctr_drbg_init() + * again first. * \param f_entropy The entropy callback, taking as arguments the * \p p_entropy context, the buffer to fill, and the - length of the buffer. - * \param p_entropy The entropy context. - * \param custom Personalization data, that is device-specific - identifiers. Can be NULL. - * \param len The length of the personalization data. + * length of the buffer. + * \p f_entropy is always called with a buffer size + * less than or equal to the entropy length. + * \param p_entropy The entropy context to pass to \p f_entropy. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * This must be at most + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * - #MBEDTLS_CTR_DRBG_ENTROPY_LEN. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure. @@ -197,7 +322,8 @@ void mbedtls_ctr_drbg_free( mbedtls_ctr_drbg_context *ctx ); * The default value is off. * * \note If enabled, entropy is gathered at the beginning of - * every call to mbedtls_ctr_drbg_random_with_add(). + * every call to mbedtls_ctr_drbg_random_with_add() + * or mbedtls_ctr_drbg_random(). * Only use this if your entropy source has sufficient * throughput. * @@ -209,18 +335,61 @@ void mbedtls_ctr_drbg_set_prediction_resistance( mbedtls_ctr_drbg_context *ctx, /** * \brief This function sets the amount of entropy grabbed on each - * seed or reseed. The default value is - * #MBEDTLS_CTR_DRBG_ENTROPY_LEN. + * seed or reseed. + * + * The default value is #MBEDTLS_CTR_DRBG_ENTROPY_LEN. + * + * \note The security strength of CTR_DRBG is bounded by the + * entropy length. Thus: + * - When using AES-256 + * (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is disabled, + * which is the default), + * \p len must be at least 32 (in bytes) + * to achieve a 256-bit strength. + * - When using AES-128 + * (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled) + * \p len must be at least 16 (in bytes) + * to achieve a 128-bit strength. * * \param ctx The CTR_DRBG context. - * \param len The amount of entropy to grab. + * \param len The amount of entropy to grab, in bytes. + * This must be at most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * and at most the maximum length accepted by the + * entropy function that is set in the context. */ void mbedtls_ctr_drbg_set_entropy_len( mbedtls_ctr_drbg_context *ctx, size_t len ); +/** + * \brief This function sets the amount of entropy grabbed + * as a nonce for the initial seeding. + * + * Call this function before calling mbedtls_ctr_drbg_seed() to read + * a nonce from the entropy source during the initial seeding. + * + * \param ctx The CTR_DRBG context. + * \param len The amount of entropy to grab for the nonce, in bytes. + * This must be at most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * and at most the maximum length accepted by the + * entropy function that is set in the context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if \p len is + * more than #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED + * if the initial seeding has already taken place. + */ +int mbedtls_ctr_drbg_set_nonce_len( mbedtls_ctr_drbg_context *ctx, + size_t len ); + /** * \brief This function sets the reseed interval. - * The default value is #MBEDTLS_CTR_DRBG_RESEED_INTERVAL. + * + * The reseed interval is the number of calls to mbedtls_ctr_drbg_random() + * or mbedtls_ctr_drbg_random_with_add() after which the entropy function + * is called again. + * + * The default value is #MBEDTLS_CTR_DRBG_RESEED_INTERVAL. * * \param ctx The CTR_DRBG context. * \param interval The reseed interval. @@ -233,8 +402,12 @@ void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, * extracts data from the entropy source. * * \param ctx The CTR_DRBG context. - * \param additional Additional data to add to the state. Can be NULL. + * \param additional Additional data to add to the state. Can be \c NULL. * \param len The length of the additional data. + * This must be less than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - \c entropy_len + * where \c entropy_len is the entropy length + * configured for the context. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure. @@ -246,7 +419,8 @@ int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, * \brief This function updates the state of the CTR_DRBG context. * * \param ctx The CTR_DRBG context. - * \param additional The data to update the state with. + * \param additional The data to update the state with. This must not be + * \c NULL unless \p add_len is \c 0. * \param add_len Length of \p additional in bytes. This must be at * most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. * @@ -264,14 +438,23 @@ int mbedtls_ctr_drbg_update_ret( mbedtls_ctr_drbg_context *ctx, * \brief This function updates a CTR_DRBG instance with additional * data and uses it to generate random data. * - * \note The function automatically reseeds if the reseed counter is exceeded. + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. * * \param p_rng The CTR_DRBG context. This must be a pointer to a * #mbedtls_ctr_drbg_context structure. * \param output The buffer to fill. - * \param output_len The length of the buffer. - * \param additional Additional data to update. Can be NULL. - * \param add_len The length of the additional data. + * \param output_len The length of the buffer in bytes. + * \param additional Additional data to update. Can be \c NULL, in which + * case the additional data is empty regardless of + * the value of \p add_len. + * \param add_len The length of the additional data + * if \p additional is not \c NULL. + * This must be less than #MBEDTLS_CTR_DRBG_MAX_INPUT + * and less than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - \c entropy_len + * where \c entropy_len is the entropy length + * configured for the context. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or @@ -284,12 +467,14 @@ int mbedtls_ctr_drbg_random_with_add( void *p_rng, /** * \brief This function uses CTR_DRBG to generate random data. * - * \note The function automatically reseeds if the reseed counter is exceeded. + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * * * \param p_rng The CTR_DRBG context. This must be a pointer to a * #mbedtls_ctr_drbg_context structure. * \param output The buffer to fill. - * \param output_len The length of the buffer. + * \param output_len The length of the buffer in bytes. * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or @@ -336,7 +521,7 @@ MBEDTLS_DEPRECATED void mbedtls_ctr_drbg_update( * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error. - * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on reseed * failure. */ int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); @@ -350,8 +535,10 @@ int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char * * \return \c 0 on success. * \return #MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error. - * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or - * #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG on failure. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on + * reseed failure. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if the existing + * seed file is too large. */ int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); #endif /* MBEDTLS_FS_IO */ @@ -368,11 +555,6 @@ int mbedtls_ctr_drbg_self_test( int verbose ); #endif /* MBEDTLS_SELF_TEST */ -/* Internal functions (do not call directly) */ -int mbedtls_ctr_drbg_seed_entropy_len( mbedtls_ctr_drbg_context *, - int (*)(void *, unsigned char *, size_t), void *, - const unsigned char *, size_t, size_t ); - #ifdef __cplusplus } #endif diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/hmac_drbg.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/hmac_drbg.h index 46536a1f..00be9df4 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/hmac_drbg.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/hmac_drbg.h @@ -1,10 +1,14 @@ /** * \file hmac_drbg.h * - * \brief HMAC_DRBG (NIST SP 800-90A) + * \brief The HMAC_DRBG pseudorandom generator. + * + * This module implements the HMAC_DRBG pseudorandom generator described + * in NIST SP 800-90A: Recommendation for Random Number Generation Using + * Deterministic Random Bit Generators. */ /* - * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * Copyright (C) 2006-2019, ARM Limited, All Rights Reserved * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -104,38 +108,72 @@ typedef struct mbedtls_hmac_drbg_context } mbedtls_hmac_drbg_context; /** - * \brief HMAC_DRBG context initialization - * Makes the context ready for mbedtls_hmac_drbg_seed(), - * mbedtls_hmac_drbg_seed_buf() or - * mbedtls_hmac_drbg_free(). + * \brief HMAC_DRBG context initialization. + * + * This function makes the context ready for mbedtls_hmac_drbg_seed(), + * mbedtls_hmac_drbg_seed_buf() or mbedtls_hmac_drbg_free(). * - * \param ctx HMAC_DRBG context to be initialized + * \param ctx HMAC_DRBG context to be initialized. */ void mbedtls_hmac_drbg_init( mbedtls_hmac_drbg_context *ctx ); /** - * \brief HMAC_DRBG initial seeding - * Seed and setup entropy source for future reseeds. - * - * \param ctx HMAC_DRBG context to be seeded - * \param md_info MD algorithm to use for HMAC_DRBG - * \param f_entropy Entropy callback (p_entropy, buffer to fill, buffer - * length) - * \param p_entropy Entropy context - * \param custom Personalization data (Device specific identifiers) - * (Can be NULL) - * \param len Length of personalization data - * - * \note The "security strength" as defined by NIST is set to: - * 128 bits if md_alg is SHA-1, - * 192 bits if md_alg is SHA-224, - * 256 bits if md_alg is SHA-256 or higher. - * Note that SHA-256 is just as efficient as SHA-224. + * \brief HMAC_DRBG initial seeding. + * + * Set the initial seed and set up the entropy source for future reseeds. + * + * A typical choice for the \p f_entropy and \p p_entropy parameters is + * to use the entropy module: + * - \p f_entropy is mbedtls_entropy_func(); + * - \p p_entropy is an instance of ::mbedtls_entropy_context initialized + * with mbedtls_entropy_init() (which registers the platform's default + * entropy sources). + * + * You can provide a personalization string in addition to the + * entropy source, to make this instantiation as unique as possible. * - * \return 0 if successful, or - * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or - * MBEDTLS_ERR_MD_ALLOC_FAILED, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED. + * \note By default, the security strength as defined by NIST is: + * - 128 bits if \p md_info is SHA-1; + * - 192 bits if \p md_info is SHA-224; + * - 256 bits if \p md_info is SHA-256, SHA-384 or SHA-512. + * Note that SHA-256 is just as efficient as SHA-224. + * The security strength can be reduced if a smaller + * entropy length is set with + * mbedtls_hmac_drbg_set_entropy_len(). + * + * \note The default entropy length is the security strength + * (converted from bits to bytes). You can override + * it by calling mbedtls_hmac_drbg_set_entropy_len(). + * + * \note During the initial seeding, this function calls + * the entropy source to obtain a nonce + * whose length is half the entropy length. + * + * \param ctx HMAC_DRBG context to be seeded. + * \param md_info MD algorithm to use for HMAC_DRBG. + * \param f_entropy The entropy callback, taking as arguments the + * \p p_entropy context, the buffer to fill, and the + * length of the buffer. + * \p f_entropy is always called with a length that is + * less than or equal to the entropy length. + * \param p_entropy The entropy context to pass to \p f_entropy. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT + * and also at most + * #MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT - \p entropy_len * 3 / 2 + * where \p entropy_len is the entropy length + * described above. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info is + * invalid. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED if there was not enough + * memory to allocate context data. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if the call to \p f_entropy failed. */ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, @@ -146,98 +184,131 @@ int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, /** * \brief Initilisation of simpified HMAC_DRBG (never reseeds). - * (For use with deterministic ECDSA.) * - * \param ctx HMAC_DRBG context to be initialised - * \param md_info MD algorithm to use for HMAC_DRBG - * \param data Concatenation of entropy string and additional data - * \param data_len Length of data in bytes + * This function is meant for use in algorithms that need a pseudorandom + * input such as deterministic ECDSA. + * + * \param ctx HMAC_DRBG context to be initialised. + * \param md_info MD algorithm to use for HMAC_DRBG. + * \param data Concatenation of the initial entropy string and + * the additional data. + * \param data_len Length of \p data in bytes. * - * \return 0 if successful, or - * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or - * MBEDTLS_ERR_MD_ALLOC_FAILED. + * \return \c 0 if successful. or + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info is + * invalid. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED if there was not enough + * memory to allocate context data. */ int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx, const mbedtls_md_info_t * md_info, const unsigned char *data, size_t data_len ); /** - * \brief Enable / disable prediction resistance (Default: Off) + * \brief This function turns prediction resistance on or off. + * The default value is off. * - * Note: If enabled, entropy is used for ctx->entropy_len before each call! - * Only use this if you have ample supply of good entropy! + * \note If enabled, entropy is gathered at the beginning of + * every call to mbedtls_hmac_drbg_random_with_add() + * or mbedtls_hmac_drbg_random(). + * Only use this if your entropy source has sufficient + * throughput. * - * \param ctx HMAC_DRBG context - * \param resistance MBEDTLS_HMAC_DRBG_PR_ON or MBEDTLS_HMAC_DRBG_PR_OFF + * \param ctx The HMAC_DRBG context. + * \param resistance #MBEDTLS_HMAC_DRBG_PR_ON or #MBEDTLS_HMAC_DRBG_PR_OFF. */ void mbedtls_hmac_drbg_set_prediction_resistance( mbedtls_hmac_drbg_context *ctx, int resistance ); /** - * \brief Set the amount of entropy grabbed on each reseed - * (Default: given by the security strength, which - * depends on the hash used, see \c mbedtls_hmac_drbg_init() ) + * \brief This function sets the amount of entropy grabbed on each + * seed or reseed. + * + * See the documentation of mbedtls_hmac_drbg_seed() for the default value. * - * \param ctx HMAC_DRBG context - * \param len Amount of entropy to grab, in bytes + * \param ctx The HMAC_DRBG context. + * \param len The amount of entropy to grab, in bytes. */ void mbedtls_hmac_drbg_set_entropy_len( mbedtls_hmac_drbg_context *ctx, size_t len ); /** - * \brief Set the reseed interval - * (Default: MBEDTLS_HMAC_DRBG_RESEED_INTERVAL) + * \brief Set the reseed interval. * - * \param ctx HMAC_DRBG context - * \param interval Reseed interval + * The reseed interval is the number of calls to mbedtls_hmac_drbg_random() + * or mbedtls_hmac_drbg_random_with_add() after which the entropy function + * is called again. + * + * The default value is #MBEDTLS_HMAC_DRBG_RESEED_INTERVAL. + * + * \param ctx The HMAC_DRBG context. + * \param interval The reseed interval. */ void mbedtls_hmac_drbg_set_reseed_interval( mbedtls_hmac_drbg_context *ctx, int interval ); /** - * \brief HMAC_DRBG update state + * \brief This function updates the state of the HMAC_DRBG context. * - * \param ctx HMAC_DRBG context - * \param additional Additional data to update state with, or NULL - * \param add_len Length of additional data, or 0 + * \param ctx The HMAC_DRBG context. + * \param additional The data to update the state with. + * If this is \c NULL, there is no additional data. + * \param add_len Length of \p additional in bytes. + * Unused if \p additional is \c NULL. * * \return \c 0 on success, or an error from the underlying * hash calculation. - * - * \note Additional data is optional, pass NULL and 0 as second - * third argument if no additional data is being used. */ int mbedtls_hmac_drbg_update_ret( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t add_len ); /** - * \brief HMAC_DRBG reseeding (extracts data from entropy source) - * - * \param ctx HMAC_DRBG context - * \param additional Additional data to add to state (Can be NULL) - * \param len Length of additional data - * - * \return 0 if successful, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * \brief This function reseeds the HMAC_DRBG context, that is + * extracts data from the entropy source. + * + * \param ctx The HMAC_DRBG context. + * \param additional Additional data to add to the state. + * If this is \c NULL, there is no additional data + * and \p len should be \c 0. + * \param len The length of the additional data. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT + * and also at most + * #MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT - \p entropy_len + * where \p entropy_len is the entropy length + * (see mbedtls_hmac_drbg_set_entropy_len()). + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy function failed. */ int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, const unsigned char *additional, size_t len ); /** - * \brief HMAC_DRBG generate random with additional update input - * - * Note: Automatically reseeds if reseed_counter is reached or PR is enabled. - * - * \param p_rng HMAC_DRBG context - * \param output Buffer to fill - * \param output_len Length of the buffer - * \param additional Additional data to update with (can be NULL) - * \param add_len Length of additional data (can be 0) - * - * \return 0 if successful, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or - * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG, or - * MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG. + * \brief This function updates an HMAC_DRBG instance with additional + * data and uses it to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \param p_rng The HMAC_DRBG context. This must be a pointer to a + * #mbedtls_hmac_drbg_context structure. + * \param output The buffer to fill. + * \param output_len The length of the buffer in bytes. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * \param additional Additional data to update with. + * If this is \c NULL, there is no additional data + * and \p add_len should be \c 0. + * \param add_len The length of the additional data. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy source failed. + * \return #MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG if + * \p output_len > #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * \return #MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG if + * \p add_len > #MBEDTLS_HMAC_DRBG_MAX_INPUT. */ int mbedtls_hmac_drbg_random_with_add( void *p_rng, unsigned char *output, size_t output_len, @@ -245,24 +316,29 @@ int mbedtls_hmac_drbg_random_with_add( void *p_rng, size_t add_len ); /** - * \brief HMAC_DRBG generate random - * - * Note: Automatically reseeds if reseed_counter is reached or PR is enabled. - * - * \param p_rng HMAC_DRBG context - * \param output Buffer to fill - * \param out_len Length of the buffer - * - * \return 0 if successful, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or - * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG + * \brief This function uses HMAC_DRBG to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \param p_rng The HMAC_DRBG context. This must be a pointer to a + * #mbedtls_hmac_drbg_context structure. + * \param output The buffer to fill. + * \param out_len The length of the buffer in bytes. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy source failed. + * \return #MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG if + * \p out_len > #MBEDTLS_HMAC_DRBG_MAX_REQUEST. */ int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len ); /** * \brief Free an HMAC_DRBG context * - * \param ctx HMAC_DRBG context to free. + * \param ctx The HMAC_DRBG context to free. */ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ); @@ -273,17 +349,16 @@ void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ); #define MBEDTLS_DEPRECATED #endif /** - * \brief HMAC_DRBG update state + * \brief This function updates the state of the HMAC_DRBG context. * * \deprecated Superseded by mbedtls_hmac_drbg_update_ret() * in 2.16.0. * - * \param ctx HMAC_DRBG context - * \param additional Additional data to update state with, or NULL - * \param add_len Length of additional data, or 0 - * - * \note Additional data is optional, pass NULL and 0 as second - * third argument if no additional data is being used. + * \param ctx The HMAC_DRBG context. + * \param additional The data to update the state with. + * If this is \c NULL, there is no additional data. + * \param add_len Length of \p additional in bytes. + * Unused if \p additional is \c NULL. */ MBEDTLS_DEPRECATED void mbedtls_hmac_drbg_update( mbedtls_hmac_drbg_context *ctx, @@ -293,26 +368,31 @@ MBEDTLS_DEPRECATED void mbedtls_hmac_drbg_update( #if defined(MBEDTLS_FS_IO) /** - * \brief Write a seed file + * \brief This function writes a seed file. * - * \param ctx HMAC_DRBG context - * \param path Name of the file + * \param ctx The HMAC_DRBG context. + * \param path The name of the file. * - * \return 0 if successful, 1 on file error, or - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * \return \c 0 on success. + * \return #MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED on reseed + * failure. */ int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); /** - * \brief Read and update a seed file. Seed is added to this - * instance - * - * \param ctx HMAC_DRBG context - * \param path Name of the file - * - * \return 0 if successful, 1 on file error, - * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED or - * MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG + * \brief This function reads and updates a seed file. The seed + * is added to this instance. + * + * \param ctx The HMAC_DRBG context. + * \param path The name of the file. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED on + * reseed failure. + * \return #MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG if the existing + * seed file is too large. */ int mbedtls_hmac_drbg_update_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); #endif /* MBEDTLS_FS_IO */ @@ -320,9 +400,10 @@ int mbedtls_hmac_drbg_update_seed_file( mbedtls_hmac_drbg_context *ctx, const ch #if defined(MBEDTLS_SELF_TEST) /** - * \brief Checkup routine + * \brief The HMAC_DRBG Checkup routine. * - * \return 0 if successful, or 1 if the test failed + * \return \c 0 if successful. + * \return \c 1 if the test failed. */ int mbedtls_hmac_drbg_self_test( int verbose ); #endif diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/md_internal.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/md_internal.h index 267cebad..0922dff9 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/md_internal.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/md_internal.h @@ -46,42 +46,17 @@ extern "C" { */ struct mbedtls_md_info_t { - /** Digest identifier */ - mbedtls_md_type_t type; - /** Name of the message digest */ const char * name; + /** Digest identifier */ + mbedtls_md_type_t type; + /** Output length of the digest function in bytes */ - int size; + unsigned char size; /** Block length of the digest function in bytes */ - int block_size; - - /** Digest initialisation function */ - int (*starts_func)( void *ctx ); - - /** Digest update function */ - int (*update_func)( void *ctx, const unsigned char *input, size_t ilen ); - - /** Digest finalisation function */ - int (*finish_func)( void *ctx, unsigned char *output ); - - /** Generic digest function */ - int (*digest_func)( const unsigned char *input, size_t ilen, - unsigned char *output ); - - /** Allocate a new context */ - void * (*ctx_alloc_func)( void ); - - /** Free the given context */ - void (*ctx_free_func)( void *ctx ); - - /** Clone state from a context */ - void (*clone_func)( void *dst, const void *src ); - - /** Internal use only */ - int (*process_func)( void *ctx, const unsigned char *input ); + unsigned char block_size; }; #if defined(MBEDTLS_MD2_C) @@ -104,7 +79,9 @@ extern const mbedtls_md_info_t mbedtls_sha224_info; extern const mbedtls_md_info_t mbedtls_sha256_info; #endif #if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) extern const mbedtls_md_info_t mbedtls_sha384_info; +#endif extern const mbedtls_md_info_t mbedtls_sha512_info; #endif diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/pk.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/pk.h index d750004d..99e7a55a 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/pk.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/pk.h @@ -101,6 +101,58 @@ typedef struct mbedtls_pk_rsassa_pss_options } mbedtls_pk_rsassa_pss_options; +/** + * \brief Maximum size of a signature made by mbedtls_pk_sign(). + */ +/* We need to set MBEDTLS_PK_SIGNATURE_MAX_SIZE to the maximum signature + * size among the supported signature types. Do it by starting at 0, + * then incrementally increasing to be large enough for each supported + * signature mechanism. + * + * The resulting value can be 0, for example if MBEDTLS_ECDH_C is enabled + * (which allows the pk module to be included) but neither MBEDTLS_ECDSA_C + * nor MBEDTLS_RSA_C nor any opaque signature mechanism (PSA or RSA_ALT). + */ +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE 0 + +#if ( defined(MBEDTLS_RSA_C) || defined(MBEDTLS_PK_RSA_ALT_SUPPORT) ) && \ + MBEDTLS_MPI_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* For RSA, the signature can be as large as the bignum module allows. + * For RSA_ALT, the signature size is not necessarily tied to what the + * bignum module can do, but in the absence of any specific setting, + * we use that (rsa_alt_sign_wrap in pk_wrap will check). */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE MBEDTLS_MPI_MAX_SIZE +#endif + +#if defined(MBEDTLS_ECDSA_C) && \ + MBEDTLS_ECDSA_MAX_LEN > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* For ECDSA, the ecdsa module exports a constant for the maximum + * signature size. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE MBEDTLS_ECDSA_MAX_LEN +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#if PSA_SIGNATURE_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* PSA_SIGNATURE_MAX_SIZE is the maximum size of a signature made + * through the PSA API in the PSA representation. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE PSA_SIGNATURE_MAX_SIZE +#endif + +#if PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* The Mbed TLS representation is different for ECDSA signatures: + * PSA uses the raw concatenation of r and s, + * whereas Mbed TLS uses the ASN.1 representation (SEQUENCE of two INTEGERs). + * Add the overhead of ASN.1: up to (1+2) + 2 * (1+2+1) for the + * types, lengths (represented by up to 2 bytes), and potential leading + * zeros of the INTEGERs and the SEQUENCE. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE ( PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 ) +#endif +#endif /* defined(MBEDTLS_USE_PSA_CRYPTO) */ + /** * \brief Types for interfacing with the debug module */ @@ -442,8 +494,13 @@ int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options, * \param md_alg Hash algorithm used (see notes) * \param hash Hash of the message to sign * \param hash_len Hash length or 0 (see notes) - * \param sig Place to write the signature - * \param sig_len Number of bytes written + * \param sig Place to write the signature. + * It must have enough room for the signature. + * #MBEDTLS_PK_SIGNATURE_MAX_SIZE is always enough. + * You may use a smaller buffer if it is large enough + * given the key type. + * \param sig_len On successful return, + * the number of bytes written to \p sig. * \param f_rng RNG function * \param p_rng RNG parameter * @@ -474,16 +531,21 @@ int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, * * \param ctx The PK context to use. It must have been set up * with a private key. - * \param md_alg Hash algorithm used (see notes) + * \param md_alg Hash algorithm used (see notes for mbedtls_pk_sign()) * \param hash Hash of the message to sign - * \param hash_len Hash length or 0 (see notes) - * \param sig Place to write the signature - * \param sig_len Number of bytes written + * \param hash_len Hash length or 0 (see notes for mbedtls_pk_sign()) + * \param sig Place to write the signature. + * It must have enough room for the signature. + * #MBEDTLS_PK_SIGNATURE_MAX_SIZE is always enough. + * You may use a smaller buffer if it is large enough + * given the key type. + * \param sig_len On successful return, + * the number of bytes written to \p sig. * \param f_rng RNG function * \param p_rng RNG parameter * \param rs_ctx Restart context (NULL to disable restart) * - * \return See \c mbedtls_pk_sign(), or + * \return See \c mbedtls_pk_sign(). * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of * operations was reached: see \c mbedtls_ecp_set_max_ops(). */ diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/psa_util.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/psa_util.h index 8d18fcc5..513bc5fe 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/psa_util.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/psa_util.h @@ -160,79 +160,96 @@ static inline psa_algorithm_t mbedtls_psa_translate_md( mbedtls_md_type_t md_alg /* Translations for ECC. */ static inline int mbedtls_psa_get_ecc_oid_from_id( - psa_ecc_curve_t curve, char const **oid, size_t *oid_len ) + psa_ecc_curve_t curve, size_t bits, + char const **oid, size_t *oid_len ) { switch( curve ) { + case PSA_ECC_CURVE_SECP_R1: + switch( bits ) + { #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) - case PSA_ECC_CURVE_SECP192R1: - *oid = MBEDTLS_OID_EC_GRP_SECP192R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192R1 ); - return( 0 ); + case 192: + *oid = MBEDTLS_OID_EC_GRP_SECP192R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) - case PSA_ECC_CURVE_SECP224R1: - *oid = MBEDTLS_OID_EC_GRP_SECP224R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224R1 ); - return( 0 ); + case 224: + *oid = MBEDTLS_OID_EC_GRP_SECP224R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) - case PSA_ECC_CURVE_SECP256R1: - *oid = MBEDTLS_OID_EC_GRP_SECP256R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256R1 ); - return( 0 ); + case 256: + *oid = MBEDTLS_OID_EC_GRP_SECP256R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) - case PSA_ECC_CURVE_SECP384R1: - *oid = MBEDTLS_OID_EC_GRP_SECP384R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP384R1 ); - return( 0 ); + case 384: + *oid = MBEDTLS_OID_EC_GRP_SECP384R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP384R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) - case PSA_ECC_CURVE_SECP521R1: - *oid = MBEDTLS_OID_EC_GRP_SECP521R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP521R1 ); - return( 0 ); + case 521: + *oid = MBEDTLS_OID_EC_GRP_SECP521R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP521R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ + } + break; + case PSA_ECC_CURVE_SECP_K1: + switch( bits ) + { #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) - case PSA_ECC_CURVE_SECP192K1: - *oid = MBEDTLS_OID_EC_GRP_SECP192K1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192K1 ); - return( 0 ); + case 192: + *oid = MBEDTLS_OID_EC_GRP_SECP192K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192K1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) - case PSA_ECC_CURVE_SECP224K1: - *oid = MBEDTLS_OID_EC_GRP_SECP224K1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224K1 ); - return( 0 ); + case 224: + *oid = MBEDTLS_OID_EC_GRP_SECP224K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224K1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) - case PSA_ECC_CURVE_SECP256K1: - *oid = MBEDTLS_OID_EC_GRP_SECP256K1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256K1 ); - return( 0 ); + case 256: + *oid = MBEDTLS_OID_EC_GRP_SECP256K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256K1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ + } + break; + case PSA_ECC_CURVE_BRAINPOOL_P_R1: + switch( bits ) + { #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) - case PSA_ECC_CURVE_BRAINPOOL_P256R1: - *oid = MBEDTLS_OID_EC_GRP_BP256R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP256R1 ); - return( 0 ); + case 256: + *oid = MBEDTLS_OID_EC_GRP_BP256R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP256R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) - case PSA_ECC_CURVE_BRAINPOOL_P384R1: - *oid = MBEDTLS_OID_EC_GRP_BP384R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP384R1 ); - return( 0 ); + case 384: + *oid = MBEDTLS_OID_EC_GRP_BP384R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP384R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) - case PSA_ECC_CURVE_BRAINPOOL_P512R1: - *oid = MBEDTLS_OID_EC_GRP_BP512R1; - *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP512R1 ); - return( 0 ); + case 512: + *oid = MBEDTLS_OID_EC_GRP_BP512R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP512R1 ); + return( 0 ); #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ + } + break; } - - return( -1 ); + (void) oid; + (void) oid_len; + return( -1 ); } #define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH 1 @@ -315,85 +332,6 @@ static inline int mbedtls_psa_get_ecc_oid_from_id( #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ -static inline psa_ecc_curve_t mbedtls_psa_translate_ecc_group( mbedtls_ecp_group_id grpid ) -{ - switch( grpid ) - { -#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) - case MBEDTLS_ECP_DP_SECP192R1: - return( PSA_ECC_CURVE_SECP192R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) - case MBEDTLS_ECP_DP_SECP224R1: - return( PSA_ECC_CURVE_SECP224R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) - case MBEDTLS_ECP_DP_SECP256R1: - return( PSA_ECC_CURVE_SECP256R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) - case MBEDTLS_ECP_DP_SECP384R1: - return( PSA_ECC_CURVE_SECP384R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) - case MBEDTLS_ECP_DP_SECP521R1: - return( PSA_ECC_CURVE_SECP521R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) - case MBEDTLS_ECP_DP_BP256R1: - return( PSA_ECC_CURVE_BRAINPOOL_P256R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) - case MBEDTLS_ECP_DP_BP384R1: - return( PSA_ECC_CURVE_BRAINPOOL_P384R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) - case MBEDTLS_ECP_DP_BP512R1: - return( PSA_ECC_CURVE_BRAINPOOL_P512R1 ); -#endif -#if defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) - case MBEDTLS_ECP_DP_CURVE25519: - return( PSA_ECC_CURVE_CURVE25519 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) - case MBEDTLS_ECP_DP_SECP192K1: - return( PSA_ECC_CURVE_SECP192K1 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) - case MBEDTLS_ECP_DP_SECP224K1: - return( PSA_ECC_CURVE_SECP224K1 ); -#endif -#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) - case MBEDTLS_ECP_DP_SECP256K1: - return( PSA_ECC_CURVE_SECP256K1 ); -#endif -#if defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) - case MBEDTLS_ECP_DP_CURVE448: - return( PSA_ECC_CURVE_CURVE448 ); -#endif - default: - return( 0 ); - } -} - - -#define MBEDTLS_PSA_ECC_KEY_BITS_OF_CURVE( curve ) \ - ( curve == PSA_ECC_CURVE_SECP192R1 ? 192 : \ - curve == PSA_ECC_CURVE_SECP224R1 ? 224 : \ - curve == PSA_ECC_CURVE_SECP256R1 ? 256 : \ - curve == PSA_ECC_CURVE_SECP384R1 ? 384 : \ - curve == PSA_ECC_CURVE_SECP521R1 ? 521 : \ - curve == PSA_ECC_CURVE_SECP192K1 ? 192 : \ - curve == PSA_ECC_CURVE_SECP224K1 ? 224 : \ - curve == PSA_ECC_CURVE_SECP256K1 ? 256 : \ - curve == PSA_ECC_CURVE_BRAINPOOL_P256R1 ? 256 : \ - curve == PSA_ECC_CURVE_BRAINPOOL_P384R1 ? 384 : \ - curve == PSA_ECC_CURVE_BRAINPOOL_P512R1 ? 512 : \ - 0 ) - -#define MBEDTLS_PSA_ECC_KEY_BYTES_OF_CURVE( curve ) \ - ( ( MBEDTLS_PSA_ECC_KEY_BITS_OF_CURVE( curve ) + 7 ) / 8 ) - /* Translations for PK layer */ static inline int mbedtls_psa_err_translate_pk( psa_status_t status ) @@ -427,13 +365,18 @@ static inline int mbedtls_psa_err_translate_pk( psa_status_t status ) /* This function transforms an ECC group identifier from * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 * into a PSA ECC group identifier. */ -static inline psa_ecc_curve_t mbedtls_psa_parse_tls_ecc_group( - uint16_t tls_ecc_grp_reg_id ) +#if defined(MBEDTLS_ECP_C) +static inline psa_key_type_t mbedtls_psa_parse_tls_ecc_group( + uint16_t tls_ecc_grp_reg_id, size_t *bits ) { - /* The PSA identifiers are currently aligned with those from - * the TLS Supported Groups registry, so no conversion is necessary. */ - return( (psa_ecc_curve_t) tls_ecc_grp_reg_id ); + const mbedtls_ecp_curve_info *curve_info = + mbedtls_ecp_curve_info_from_tls_id( tls_ecc_grp_reg_id ); + if( curve_info == NULL ) + return( 0 ); + return( PSA_KEY_TYPE_ECC_KEY_PAIR( + mbedtls_ecc_group_to_psa( curve_info->grp_id, bits ) ) ); } +#endif /* MBEDTLS_ECP_C */ /* This function takes a buffer holding an EC public key * exported through psa_export_public_key(), and converts @@ -460,15 +403,12 @@ static inline int mbedtls_psa_tls_psa_ec_to_ecpoint( unsigned char *src, * exchanges) and converts it into a format that the PSA key * agreement API understands. */ -static inline int mbedtls_psa_tls_ecpoint_to_psa_ec( psa_ecc_curve_t curve, - unsigned char const *src, +static inline int mbedtls_psa_tls_ecpoint_to_psa_ec( unsigned char const *src, size_t srclen, unsigned char *dst, size_t dstlen, size_t *olen ) { - ((void) curve); - if( srclen > dstlen ) return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/rsa.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/rsa.h index 840540b0..ec8d0d8d 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/rsa.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/rsa.h @@ -907,7 +907,8 @@ int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, * the size of the hash corresponding to \p md_alg. * \param sig The buffer to hold the signature. This must be a writable * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes - * for an 2048-bit RSA modulus. + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. * * \return \c 0 if the signing operation was successful. * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. @@ -954,7 +955,8 @@ int mbedtls_rsa_pkcs1_sign( mbedtls_rsa_context *ctx, * the size of the hash corresponding to \p md_alg. * \param sig The buffer to hold the signature. This must be a writable * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes - * for an 2048-bit RSA modulus. + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. * * \return \c 0 if the signing operation was successful. * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. @@ -1015,7 +1017,8 @@ int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, * the size of the hash corresponding to \p md_alg. * \param sig The buffer to hold the signature. This must be a writable * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes - * for an 2048-bit RSA modulus. + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. * * \return \c 0 if the signing operation was successful. * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/sha512.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/sha512.h index 48923e5b..8e54ce01 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/sha512.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/mbedtls/sha512.h @@ -59,8 +59,10 @@ typedef struct mbedtls_sha512_context uint64_t total[2]; /*!< The number of Bytes processed. */ uint64_t state[8]; /*!< The intermediate digest state. */ unsigned char buffer[128]; /*!< The data block being processed. */ +#if !defined(MBEDTLS_SHA512_NO_SHA384) int is384; /*!< Determines which function to use: 0: Use SHA-512, or 1: Use SHA-384. */ +#endif } mbedtls_sha512_context; @@ -101,7 +103,11 @@ void mbedtls_sha512_clone( mbedtls_sha512_context *dst, * * \param ctx The SHA-512 context to use. This must be initialized. * \param is384 Determines which function to use. This must be - * either \c for SHA-512, or \c 1 for SHA-384. + * either \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will return + * #MBEDTLS_ERR_SHA512_BAD_INPUT_DATA. * * \return \c 0 on success. * \return A negative error code on failure. @@ -169,6 +175,9 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx, * \param ctx The SHA-512 context to use. This must be initialized. * \param is384 Determines which function to use. This must be either * \c 0 for SHA-512 or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will fail to work. */ MBEDTLS_DEPRECATED void mbedtls_sha512_starts( mbedtls_sha512_context *ctx, int is384 ); @@ -239,6 +248,10 @@ MBEDTLS_DEPRECATED void mbedtls_sha512_process( * \param is384 Determines which function to use. This must be either * \c 0 for SHA-512, or \c 1 for SHA-384. * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will return + * #MBEDTLS_ERR_SHA512_BAD_INPUT_DATA. + * * \return \c 0 on success. * \return A negative error code on failure. */ @@ -273,6 +286,9 @@ int mbedtls_sha512_ret( const unsigned char *input, * be a writable buffer of length \c 64 Bytes. * \param is384 Determines which function to use. This must be either * \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will fail to work. */ MBEDTLS_DEPRECATED void mbedtls_sha512( const unsigned char *input, size_t ilen, diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto.h index d5e713e0..2b07b747 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto.h @@ -57,6 +57,22 @@ extern "C" { * algorithms, key types, policies, etc. */ #include "crypto_types.h" +/** \defgroup version API version + * @{ + */ + +/** + * The major version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MAJOR 1 + +/** + * The minor version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MINOR 0 + +/**@}*/ + /* The file "crypto_values.h" declares macros to build and analyze values * of integral types defined in "crypto_types.h". */ #include "crypto_values.h" @@ -226,7 +242,14 @@ static psa_key_usage_t psa_get_key_usage_flags( /** Declare the permitted algorithm policy for a key. * * The permitted algorithm policy of a key encodes which algorithm or - * algorithms are permitted to be used with this key. + * algorithms are permitted to be used with this key. The following + * algorithm policies are supported: + * - 0 does not allow any cryptographic operation with the key. The key + * may be used for non-cryptographic actions such as exporting (if + * permitted by the usage flags). + * - An algorithm value permits this particular algorithm. + * - An algorithm wildcard built from #PSA_ALG_ANY_HASH allows the specified + * signature scheme with any hash algorithm. * * This function overwrites any algorithm policy * previously set in \p attributes. @@ -266,6 +289,8 @@ static psa_algorithm_t psa_get_key_algorithm( * * \param[out] attributes The attribute structure to write to. * \param type The key type to write. + * If this is 0, the key type in \p attributes + * becomes unspecified. */ static void psa_set_key_type(psa_key_attributes_t *attributes, psa_key_type_t type); @@ -281,6 +306,9 @@ static void psa_set_key_type(psa_key_attributes_t *attributes, * * \param[out] attributes The attribute structure to write to. * \param bits The key size in bits. + * If this is 0, the key size in \p attributes + * becomes unspecified. Keys of size 0 are + * not supported. */ static void psa_set_key_bits(psa_key_attributes_t *attributes, size_t bits); @@ -367,15 +395,18 @@ void psa_reset_key_attributes(psa_key_attributes_t *attributes); * keys that can be opened with psa_open_key(). Such keys have a key identifier * in the vendor range, as documented in the description of #psa_key_id_t. * - * The application must eventually close the handle with psa_close_key() - * to release associated resources. If the application dies without calling - * psa_close_key(), the implementation should perform the equivalent of a - * call to psa_close_key(). + * The application must eventually close the handle with psa_close_key() or + * psa_destroy_key() to release associated resources. If the application dies + * without calling one of these functions, the implementation should perform + * the equivalent of a call to psa_close_key(). * * Some implementations permit an application to open the same key multiple - * times. Applications that rely on this behavior will not be portable to - * implementations that only permit a single key handle to be opened. See - * also :ref:\`key-handles\`. + * times. If this is successful, each call to psa_open_key() will return a + * different key handle. + * + * \note Applications that rely on opening a key multiple times will not be + * portable to implementations that only permit a single key handle to be + * opened. See also :ref:\`key-handles\`. * * \param id The persistent identifier of the key. * \param[out] handle On success, a handle to the key. @@ -422,13 +453,18 @@ psa_status_t psa_open_key(psa_key_id_t id, * Closing the key handle makes the handle invalid, and the key handle * must not be used again by the application. * - * If the key is currently in use in a multipart operation, then closing the - * last remaining handle to the key will abort the multipart operation. + * \note If the key handle was used to set up an active + * :ref:\`multipart operation \`, then closing the + * key handle can cause the multipart operation to fail. Applications should + * maintain the key handle until after the multipart operation has finished. * * \param handle The key handle to close. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. * * \retval #PSA_SUCCESS + * \p handle was a valid handle or \c 0. It is now closed. * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE @@ -438,6 +474,144 @@ psa_status_t psa_open_key(psa_key_id_t id, */ psa_status_t psa_close_key(psa_key_handle_t handle); +/** Make a copy of a key. + * + * Copy key material from one location to another. + * + * This function is primarily useful to copy a key from one location + * to another, since it populates a key using the material from + * another key which may have a different lifetime. + * + * This function may be used to share a key with a different party, + * subject to implementation-defined restrictions on key sharing. + * + * The policy on the source key must have the usage flag + * #PSA_KEY_USAGE_COPY set. + * This flag is sufficient to permit the copy if the key has the lifetime + * #PSA_KEY_LIFETIME_VOLATILE or #PSA_KEY_LIFETIME_PERSISTENT. + * Some secure elements do not provide a way to copy a key without + * making it extractable from the secure element. If a key is located + * in such a secure element, then the key must have both usage flags + * #PSA_KEY_USAGE_COPY and #PSA_KEY_USAGE_EXPORT in order to make + * a copy of the key outside the secure element. + * + * The resulting key may only be used in a way that conforms to + * both the policy of the original key and the policy specified in + * the \p attributes parameter: + * - The usage flags on the resulting key are the bitwise-and of the + * usage flags on the source policy and the usage flags in \p attributes. + * - If both allow the same algorithm or wildcard-based + * algorithm policy, the resulting key has the same algorithm policy. + * - If either of the policies allows an algorithm and the other policy + * allows a wildcard-based algorithm policy that includes this algorithm, + * the resulting key allows the same algorithm. + * - If the policies do not allow any algorithm in common, this function + * fails with the status #PSA_ERROR_INVALID_ARGUMENT. + * + * The effect of this function on implementation-defined attributes is + * implementation-defined. + * + * \param source_handle The key to copy. It must be a valid key handle. + * \param[in] attributes The attributes for the new key. + * They are used as follows: + * - The key type and size may be 0. If either is + * nonzero, it must match the corresponding + * attribute of the source key. + * - The key location (the lifetime and, for + * persistent keys, the key identifier) is + * used directly. + * - The policy constraints (usage flags and + * algorithm policy) are combined from + * the source key and \p attributes so that + * both sets of restrictions apply, as + * described in the documentation of this function. + * \param[out] target_handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \p source_handle is invalid. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The lifetime or identifier in \p attributes are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The policy constraints on the source and specified in + * \p attributes are incompatible. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p attributes specifies a key type or key size + * which does not match the attributes of the source key. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key does not have the #PSA_KEY_USAGE_COPY usage flag. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key is not exportable and its lifetime does not + * allow copying it to the target's lifetime. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_copy_key(psa_key_handle_t source_handle, + const psa_key_attributes_t *attributes, + psa_key_handle_t *target_handle); + + +/** + * \brief Destroy a key. + * + * This function destroys a key from both volatile + * memory and, if applicable, non-volatile storage. Implementations shall + * make a best effort to ensure that that the key material cannot be recovered. + * + * This function also erases any metadata such as policies and frees + * resources associated with the key. To free all resources associated with + * the key, all handles to the key must be closed or destroyed. + * + * Destroying the key makes the handle invalid, and the key handle + * must not be used again by the application. Using other open handles to the + * destroyed key in a cryptographic operation will result in an error. + * + * If a key is currently in use in a multipart operation, then destroying the + * key will cause the multipart operation to fail. + * + * \param handle Handle to the key to erase. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p handle was a valid handle and the key material that it + * referred to has been erased. + * Alternatively, \p handle is \c 0. + * \retval #PSA_ERROR_NOT_PERMITTED + * The key cannot be erased because it is + * read-only, either due to a policy or due to physical restrictions. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * There was an failure in communication with the cryptoprocessor. + * The key material may still be present in the cryptoprocessor. + * \retval #PSA_ERROR_STORAGE_FAILURE + * The storage is corrupted. Implementations shall make a best effort + * to erase key material even in this stage, however applications + * should be aware that it may be impossible to guarantee that the + * key material is not recoverable in such cases. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * An unexpected condition which is not a storage corruption or + * a communication failure occurred. The cryptoprocessor may have + * been compromised. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_destroy_key(psa_key_handle_t handle); + /**@}*/ /** \defgroup import_export Key import and export @@ -452,6 +626,13 @@ psa_status_t psa_close_key(psa_key_handle_t handle); * and to the documentation of psa_export_key() for the format for * other key types. * + * The key data determines the key size. The attributes may optionally + * specify a key size; in this case it must match the size determined + * from the key data. A key size of 0 in \p attributes indicates that + * the key size is solely determined by the key data. + * + * Implementations must reject an attempt to import a key of size 0. + * * This specification supports a single format for each key type. * Implementations may support other formats as long as the standard * format is supported. Implementations that support other formats @@ -459,7 +640,6 @@ psa_status_t psa_close_key(psa_key_handle_t handle); * minimize the risk that an invalid input is accidentally interpreted * according to a different format. * - * \param[in] attributes The attributes for the new key. * The key size is always determined from the * \p data buffer. @@ -503,8 +683,6 @@ psa_status_t psa_close_key(psa_key_handle_t handle); * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE - * \p operation is either not initialized or is in use - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -514,47 +692,7 @@ psa_status_t psa_import_key(const psa_key_attributes_t *attributes, size_t data_length, psa_key_handle_t *handle); -/** - * \brief Destroy a key. - * - * This function destroys a key from both volatile - * memory and, if applicable, non-volatile storage. Implementations shall - * make a best effort to ensure that that the key material cannot be recovered. - * - * This function also erases any metadata such as policies and frees all - * resources associated with the key. - * - * Destroying a key will invalidate all existing handles to the key. - * - * If the key is currently in use in a multipart operation, then destroying the - * key will abort the multipart operation. - * - * \param handle Handle to the key to erase. - * - * \retval #PSA_SUCCESS - * The key material has been erased. - * \retval #PSA_ERROR_NOT_PERMITTED - * The key cannot be erased because it is - * read-only, either due to a policy or due to physical restrictions. - * \retval #PSA_ERROR_INVALID_HANDLE - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * There was an failure in communication with the cryptoprocessor. - * The key material may still be present in the cryptoprocessor. - * \retval #PSA_ERROR_STORAGE_FAILURE - * The storage is corrupted. Implementations shall make a best effort - * to erase key material even in this stage, however applications - * should be aware that it may be impossible to guarantee that the - * key material is not recoverable in such cases. - * \retval #PSA_ERROR_CORRUPTION_DETECTED - * An unexpected condition which is not a storage corruption or - * a communication failure occurred. The cryptoprocessor may have - * been compromised. - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_destroy_key(psa_key_handle_t handle); + /** * \brief Export a key in binary format. @@ -714,93 +852,7 @@ psa_status_t psa_export_public_key(psa_key_handle_t handle, size_t data_size, size_t *data_length); -/** Make a copy of a key. - * - * Copy key material from one location to another. - * - * This function is primarily useful to copy a key from one location - * to another, since it populates a key using the material from - * another key which may have a different lifetime. - * - * This function may be used to share a key with a different party, - * subject to implementation-defined restrictions on key sharing. - * - * The policy on the source key must have the usage flag - * #PSA_KEY_USAGE_COPY set. - * This flag is sufficient to permit the copy if the key has the lifetime - * #PSA_KEY_LIFETIME_VOLATILE or #PSA_KEY_LIFETIME_PERSISTENT. - * Some secure elements do not provide a way to copy a key without - * making it extractable from the secure element. If a key is located - * in such a secure element, then the key must have both usage flags - * #PSA_KEY_USAGE_COPY and #PSA_KEY_USAGE_EXPORT in order to make - * a copy of the key outside the secure element. - * - * The resulting key may only be used in a way that conforms to - * both the policy of the original key and the policy specified in - * the \p attributes parameter: - * - The usage flags on the resulting key are the bitwise-and of the - * usage flags on the source policy and the usage flags in \p attributes. - * - If both allow the same algorithm or wildcard-based - * algorithm policy, the resulting key has the same algorithm policy. - * - If either of the policies allows an algorithm and the other policy - * allows a wildcard-based algorithm policy that includes this algorithm, - * the resulting key allows the same algorithm. - * - If the policies do not allow any algorithm in common, this function - * fails with the status #PSA_ERROR_INVALID_ARGUMENT. - * - * The effect of this function on implementation-defined attributes is - * implementation-defined. - * - * \param source_handle The key to copy. It must be a valid key handle. - * \param[in] attributes The attributes for the new key. - * They are used as follows: - * - The key type and size may be 0. If either is - * nonzero, it must match the corresponding - * attribute of the source key. - * - The key location (the lifetime and, for - * persistent keys, the key identifier) is - * used directly. - * - The policy constraints (usage flags and - * algorithm policy) are combined from - * the source key and \p attributes so that - * both sets of restrictions apply, as - * described in the documentation of this function. - * \param[out] target_handle On success, a handle to the newly created key. - * \c 0 on failure. - * - * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_INVALID_HANDLE - * \p source_handle is invalid. - * \retval #PSA_ERROR_ALREADY_EXISTS - * This is an attempt to create a persistent key, and there is - * already a persistent key with the given identifier. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The lifetime or identifier in \p attributes are invalid. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * The policy constraints on the source and specified in - * \p attributes are incompatible. - * \retval #PSA_ERROR_INVALID_ARGUMENT - * \p attributes specifies a key type or key size - * which does not match the attributes of the source key. - * \retval #PSA_ERROR_NOT_PERMITTED - * The source key does not have the #PSA_KEY_USAGE_COPY usage flag. - * \retval #PSA_ERROR_NOT_PERMITTED - * The source key is not exportable and its lifetime does not - * allow copying it to the target's lifetime. - * \retval #PSA_ERROR_INSUFFICIENT_MEMORY - * \retval #PSA_ERROR_INSUFFICIENT_STORAGE - * \retval #PSA_ERROR_COMMUNICATION_FAILURE - * \retval #PSA_ERROR_HARDWARE_FAILURE - * \retval #PSA_ERROR_STORAGE_FAILURE - * \retval #PSA_ERROR_CORRUPTION_DETECTED - * \retval #PSA_ERROR_BAD_STATE - * The library has not been previously initialized by psa_crypto_init(). - * It is implementation-dependent whether a failure to initialize - * results in this error code. - */ -psa_status_t psa_copy_key(psa_key_handle_t source_handle, - const psa_key_attributes_t *attributes, - psa_key_handle_t *target_handle); + /**@}*/ @@ -880,7 +932,7 @@ psa_status_t psa_hash_compare(psa_algorithm_t alg, const uint8_t *input, size_t input_length, const uint8_t *hash, - const size_t hash_length); + size_t hash_length); /** The type of the state data structure for multipart hash operations. * @@ -935,7 +987,7 @@ static psa_hash_operation_t psa_hash_operation_init(void); * -# Allocate an operation object which will be passed to all the functions * listed here. * -# Initialize the operation object with one of the methods described in the - * documentation for #psa_hash_operation_t, e.g. PSA_HASH_OPERATION_INIT. + * documentation for #psa_hash_operation_t, e.g. #PSA_HASH_OPERATION_INIT. * -# Call psa_hash_setup() to specify the algorithm. * -# Call psa_hash_update() zero, one or more times, passing a fragment * of the message each time. The hash that is calculated is the hash @@ -943,14 +995,16 @@ static psa_hash_operation_t psa_hash_operation_init(void); * -# To calculate the hash, call psa_hash_finish(). * To compare the hash with an expected value, call psa_hash_verify(). * - * The application may call psa_hash_abort() at any time after the operation + * If an error occurs at any step after a call to psa_hash_setup(), the + * operation will need to be reset by a call to psa_hash_abort(). The + * application may call psa_hash_abort() at any time after the operation * has been initialized. * * After a successful call to psa_hash_setup(), the application must * eventually terminate the operation. The following events terminate an * operation: - * - A failed call to psa_hash_update(). - * - A call to psa_hash_finish(), psa_hash_verify() or psa_hash_abort(). + * - A successful call to psa_hash_finish() or psa_hash_verify(). + * - A call to psa_hash_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -965,15 +1019,12 @@ static psa_hash_operation_t psa_hash_operation_init(void); * \retval #PSA_ERROR_INVALID_ARGUMENT * \p alg is not a hash algorithm. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (already set up and not - * subsequently completed). + * The operation state is not valid (it must be inactive). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE - * \p operation is either not initialized or is in use - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -985,7 +1036,8 @@ psa_status_t psa_hash_setup(psa_hash_operation_t *operation, * * The application must call psa_hash_setup() before calling this function. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). * * \param[in,out] operation Active hash operation. * \param[in] input Buffer containing the message fragment to hash. @@ -994,14 +1046,12 @@ psa_status_t psa_hash_setup(psa_hash_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or already completed). + * The operation state is not valid (it muct be active). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid. - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -1016,7 +1066,9 @@ psa_status_t psa_hash_update(psa_hash_operation_t *operation, * This function calculates the hash of the message formed by concatenating * the inputs passed to preceding calls to psa_hash_update(). * - * When this function returns, the operation becomes inactive. + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). * * \warning Applications should not call this function if they expect * a specific value for the hash. Call psa_hash_verify() instead. @@ -1037,7 +1089,7 @@ psa_status_t psa_hash_update(psa_hash_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or already completed). + * The operation state is not valid (it must be active). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p hash buffer is too small. You can determine a * sufficient buffer size by calling #PSA_HASH_SIZE(\c alg) @@ -1047,8 +1099,6 @@ psa_status_t psa_hash_update(psa_hash_operation_t *operation, * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid. - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -1067,7 +1117,9 @@ psa_status_t psa_hash_finish(psa_hash_operation_t *operation, * compares the calculated hash with the expected hash passed as a * parameter to this function. * - * When this function returns, the operation becomes inactive. + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). * * \note Implementations shall make the best effort to ensure that the * comparison between the actual hash and the expected hash is performed @@ -1083,14 +1135,12 @@ psa_status_t psa_hash_finish(psa_hash_operation_t *operation, * The hash of the message was calculated successfully, but it * differs from the expected hash. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or already completed). + * The operation state is not valid (it must be active). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid. - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -1107,11 +1157,7 @@ psa_status_t psa_hash_verify(psa_hash_operation_t *operation, * psa_hash_setup() again. * * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_hash_setup(), whether it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_hash_operation_t operation = {0}`. + * been initialized by one of the methods described in #psa_hash_operation_t. * * In particular, calling psa_hash_abort() after the operation has been * terminated by a call to psa_hash_abort(), psa_hash_finish() or @@ -1120,14 +1166,10 @@ psa_status_t psa_hash_verify(psa_hash_operation_t *operation, * \param[in,out] operation Initialized hash operation. * * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active hash operation. * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid. - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -1151,18 +1193,14 @@ psa_status_t psa_hash_abort(psa_hash_operation_t *operation); * * \retval #PSA_SUCCESS * \retval #PSA_ERROR_BAD_STATE - * \p source_operation is not an active hash operation. + * The \p source_operation state is not valid (it must be active). * \retval #PSA_ERROR_BAD_STATE - * \p target_operation is active. + * The \p target_operation state is not valid (it must be inactive). * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_BAD_STATE - * The operation state is either not initialized or has already been setup. - * \retval #PSA_ERROR_BAD_STATE - * The operation state is either not initialized or has already been setup. - * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize * results in this error code. @@ -1262,7 +1300,7 @@ psa_status_t psa_mac_verify(psa_key_handle_t handle, const uint8_t *input, size_t input_length, const uint8_t *mac, - const size_t mac_length); + size_t mac_length); /** The type of the state data structure for multipart MAC operations. * @@ -1321,7 +1359,7 @@ static psa_mac_operation_t psa_mac_operation_init(void); * -# Allocate an operation object which will be passed to all the functions * listed here. * -# Initialize the operation object with one of the methods described in the - * documentation for #psa_mac_operation_t, e.g. PSA_MAC_OPERATION_INIT. + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. * -# Call psa_mac_sign_setup() to specify the algorithm and key. * -# Call psa_mac_update() zero, one or more times, passing a fragment * of the message each time. The MAC that is calculated is the MAC @@ -1329,13 +1367,15 @@ static psa_mac_operation_t psa_mac_operation_init(void); * -# At the end of the message, call psa_mac_sign_finish() to finish * calculating the MAC value and retrieve it. * - * The application may call psa_mac_abort() at any time after the operation + * If an error occurs at any step after a call to psa_mac_sign_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation * has been initialized. * * After a successful call to psa_mac_sign_setup(), the application must * eventually terminate the operation through one of the following methods: - * - A failed call to psa_mac_update(). - * - A call to psa_mac_sign_finish() or psa_mac_abort(). + * - A successful call to psa_mac_sign_finish(). + * - A call to psa_mac_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -1361,8 +1401,7 @@ static psa_mac_operation_t psa_mac_operation_init(void); * \retval #PSA_ERROR_STORAGE_FAILURE * The key could not be retrieved from storage. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (already set up and not - * subsequently completed). + * The operation state is not valid (it must be inactive). * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -1381,7 +1420,7 @@ psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, * -# Allocate an operation object which will be passed to all the functions * listed here. * -# Initialize the operation object with one of the methods described in the - * documentation for #psa_mac_operation_t, e.g. PSA_MAC_OPERATION_INIT. + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. * -# Call psa_mac_verify_setup() to specify the algorithm and key. * -# Call psa_mac_update() zero, one or more times, passing a fragment * of the message each time. The MAC that is calculated is the MAC @@ -1390,13 +1429,15 @@ psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, * calculating the actual MAC of the message and verify it against * the expected value. * - * The application may call psa_mac_abort() at any time after the operation + * If an error occurs at any step after a call to psa_mac_verify_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation * has been initialized. * * After a successful call to psa_mac_verify_setup(), the application must * eventually terminate the operation through one of the following methods: - * - A failed call to psa_mac_update(). - * - A call to psa_mac_verify_finish() or psa_mac_abort(). + * - A successful call to psa_mac_verify_finish(). + * - A call to psa_mac_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -1422,8 +1463,7 @@ psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, * \retval #PSA_ERROR_STORAGE_FAILURE * The key could not be retrieved from storage * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (already set up and not - * subsequently completed). + * The operation state is not valid (it must be inactive). * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -1438,7 +1478,8 @@ psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, * The application must call psa_mac_sign_setup() or psa_mac_verify_setup() * before calling this function. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). * * \param[in,out] operation Active MAC operation. * \param[in] input Buffer containing the message fragment to add to @@ -1448,7 +1489,7 @@ psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or already completed). + * The operation state is not valid (it must be active). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE @@ -1469,7 +1510,9 @@ psa_status_t psa_mac_update(psa_mac_operation_t *operation, * This function calculates the MAC of the message formed by concatenating * the inputs passed to preceding calls to psa_mac_update(). * - * When this function returns, the operation becomes inactive. + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). * * \warning Applications should not call this function if they expect * a specific value for the MAC. Call psa_mac_verify_finish() instead. @@ -1492,7 +1535,8 @@ psa_status_t psa_mac_update(psa_mac_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or already completed). + * The operation state is not valid (it must be an active mac sign + * operation). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p mac buffer is too small. You can determine a * sufficient buffer size by calling PSA_MAC_FINAL_SIZE(). @@ -1520,7 +1564,9 @@ psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, * compares the calculated MAC with the expected MAC passed as a * parameter to this function. * - * When this function returns, the operation becomes inactive. + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). * * \note Implementations shall make the best effort to ensure that the * comparison between the actual MAC and the expected MAC is performed @@ -1536,7 +1582,8 @@ psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, * The MAC of the message was calculated successfully, but it * differs from the expected MAC. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or already completed). + * The operation state is not valid (it must be an active mac verify + * operation). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE @@ -1559,12 +1606,7 @@ psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, * psa_mac_sign_setup() or psa_mac_verify_setup() again. * * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_mac_sign_setup() or psa_mac_verify_setup(), whether - * it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_mac_operation_t operation = {0}`. + * been initialized by one of the methods described in #psa_mac_operation_t. * * In particular, calling psa_mac_abort() after the operation has been * terminated by a call to psa_mac_abort(), psa_mac_sign_finish() or @@ -1573,8 +1615,6 @@ psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, * \param[in,out] operation Initialized MAC operation. * * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active MAC operation. * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED @@ -1594,7 +1634,8 @@ psa_status_t psa_mac_abort(psa_mac_operation_t *operation); /** Encrypt a message using a symmetric cipher. * * This function encrypts a message with a random IV (initialization - * vector). + * vector). Use the multipart operation interface with a + * #psa_cipher_operation_t object to provide other forms of IV. * * \param handle Handle to the key to use for the operation. * It must remain valid until the operation @@ -1738,7 +1779,7 @@ static psa_cipher_operation_t psa_cipher_operation_init(void); * listed here. * -# Initialize the operation object with one of the methods described in the * documentation for #psa_cipher_operation_t, e.g. - * PSA_CIPHER_OPERATION_INIT. + * #PSA_CIPHER_OPERATION_INIT. * -# Call psa_cipher_encrypt_setup() to specify the algorithm and key. * -# Call either psa_cipher_generate_iv() or psa_cipher_set_iv() to * generate or set the IV (initialization vector). You should use @@ -1748,14 +1789,16 @@ static psa_cipher_operation_t psa_cipher_operation_init(void); * of the message each time. * -# Call psa_cipher_finish(). * - * The application may call psa_cipher_abort() at any time after the operation + * If an error occurs at any step after a call to psa_cipher_encrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation * has been initialized. * * After a successful call to psa_cipher_encrypt_setup(), the application must * eventually terminate the operation. The following events terminate an * operation: - * - A failed call to any of the \c psa_cipher_xxx functions. - * - A call to psa_cipher_finish() or psa_cipher_abort(). + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -1781,8 +1824,7 @@ static psa_cipher_operation_t psa_cipher_operation_init(void); * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_STORAGE_FAILURE * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (already set up and not - * subsequently completed). + * The operation state is not valid (it must be inactive). * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -1800,7 +1842,7 @@ psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, * listed here. * -# Initialize the operation object with one of the methods described in the * documentation for #psa_cipher_operation_t, e.g. - * PSA_CIPHER_OPERATION_INIT. + * #PSA_CIPHER_OPERATION_INIT. * -# Call psa_cipher_decrypt_setup() to specify the algorithm and key. * -# Call psa_cipher_set_iv() with the IV (initialization vector) for the * decryption. If the IV is prepended to the ciphertext, you can call @@ -1810,14 +1852,16 @@ psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, * of the message each time. * -# Call psa_cipher_finish(). * - * The application may call psa_cipher_abort() at any time after the operation + * If an error occurs at any step after a call to psa_cipher_decrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation * has been initialized. * * After a successful call to psa_cipher_decrypt_setup(), the application must * eventually terminate the operation. The following events terminate an * operation: - * - A failed call to any of the \c psa_cipher_xxx functions. - * - A call to psa_cipher_finish() or psa_cipher_abort(). + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -1843,8 +1887,7 @@ psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_STORAGE_FAILURE * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (already set up and not - * subsequently completed). + * The operation state is not valid (it must be inactive). * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -1863,7 +1906,8 @@ psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, * The application must call psa_cipher_encrypt_setup() before * calling this function. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). * * \param[in,out] operation Active cipher operation. * \param[out] iv Buffer where the generated IV is to be written. @@ -1874,7 +1918,7 @@ psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or IV already set). + * The operation state is not valid (it must be active, with no IV set). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p iv buffer is too small. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY @@ -1900,7 +1944,8 @@ psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, * The application must call psa_cipher_encrypt_setup() before * calling this function. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). * * \note When encrypting, applications should use psa_cipher_generate_iv() * instead of this function, unless implementing a protocol that requires @@ -1913,7 +1958,8 @@ psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or IV already set). + * The operation state is not valid (it must be an active cipher + * encrypt operation, with no IV set). * \retval #PSA_ERROR_INVALID_ARGUMENT * The size of \p iv is not acceptable for the chosen algorithm, * or the chosen algorithm does not use an IV. @@ -1940,7 +1986,8 @@ psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, * 2. If the algorithm requires an IV, call psa_cipher_generate_iv() * (recommended when encrypting) or psa_cipher_set_iv(). * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). * * \param[in,out] operation Active cipher operation. * \param[in] input Buffer containing the message fragment to @@ -1954,8 +2001,8 @@ psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, IV required but - * not set, or already completed). + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p output buffer is too small. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY @@ -1986,7 +2033,9 @@ psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, * formed by concatenating the inputs passed to preceding calls to * psa_cipher_update(). * - * When this function returns, the operation becomes inactive. + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). * * \param[in,out] operation Active cipher operation. * \param[out] output Buffer where the output is to be written. @@ -1996,9 +2045,17 @@ psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, * * \retval #PSA_SUCCESS * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, IV required but - * not set, or already completed). + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p output buffer is too small. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY @@ -2024,12 +2081,7 @@ psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, * psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup() again. * * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(), - * whether it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_cipher_operation_t operation = {0}`. + * been initialized as described in #psa_cipher_operation_t. * * In particular, calling psa_cipher_abort() after the operation has been * terminated by a call to psa_cipher_abort() or psa_cipher_finish() @@ -2038,8 +2090,6 @@ psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, * \param[in,out] operation Initialized cipher operation. * * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active cipher operation. * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED @@ -2230,7 +2280,7 @@ static psa_aead_operation_t psa_aead_operation_init(void); * listed here. * -# Initialize the operation object with one of the methods described in the * documentation for #psa_aead_operation_t, e.g. - * PSA_AEAD_OPERATION_INIT. + * #PSA_AEAD_OPERATION_INIT. * -# Call psa_aead_encrypt_setup() to specify the algorithm and key. * -# If needed, call psa_aead_set_lengths() to specify the length of the * inputs to the subsequent calls to psa_aead_update_ad() and @@ -2246,14 +2296,16 @@ static psa_aead_operation_t psa_aead_operation_init(void); * of the message to encrypt each time. * -# Call psa_aead_finish(). * - * The application may call psa_aead_abort() at any time after the operation + * If an error occurs at any step after a call to psa_aead_encrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation * has been initialized. * * After a successful call to psa_aead_encrypt_setup(), the application must * eventually terminate the operation. The following events terminate an * operation: - * - A failed call to any of the \c psa_aead_xxx functions. - * - A call to psa_aead_finish(), psa_aead_verify() or psa_aead_abort(). + * - A successful call to psa_aead_finish(). + * - A call to psa_aead_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -2267,7 +2319,9 @@ static psa_aead_operation_t psa_aead_operation_init(void); * * \retval #PSA_SUCCESS * Success. - * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE * \retval #PSA_ERROR_NOT_PERMITTED * \retval #PSA_ERROR_INVALID_ARGUMENT * \p handle is not compatible with \p alg. @@ -2295,7 +2349,7 @@ psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, * listed here. * -# Initialize the operation object with one of the methods described in the * documentation for #psa_aead_operation_t, e.g. - * PSA_AEAD_OPERATION_INIT. + * #PSA_AEAD_OPERATION_INIT. * -# Call psa_aead_decrypt_setup() to specify the algorithm and key. * -# If needed, call psa_aead_set_lengths() to specify the length of the * inputs to the subsequent calls to psa_aead_update_ad() and @@ -2308,14 +2362,16 @@ psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, * of the ciphertext to decrypt each time. * -# Call psa_aead_verify(). * - * The application may call psa_aead_abort() at any time after the operation + * If an error occurs at any step after a call to psa_aead_decrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation * has been initialized. * * After a successful call to psa_aead_decrypt_setup(), the application must * eventually terminate the operation. The following events terminate an * operation: - * - A failed call to any of the \c psa_aead_xxx functions. - * - A call to psa_aead_finish(), psa_aead_verify() or psa_aead_abort(). + * - A successful call to psa_aead_verify(). + * - A call to psa_aead_abort(). * * \param[in,out] operation The operation object to set up. It must have * been initialized as per the documentation for @@ -2329,7 +2385,9 @@ psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, * * \retval #PSA_SUCCESS * Success. - * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE * \retval #PSA_ERROR_NOT_PERMITTED * \retval #PSA_ERROR_INVALID_ARGUMENT * \p handle is not compatible with \p alg. @@ -2358,7 +2416,8 @@ psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, * The application must call psa_aead_encrypt_setup() before * calling this function. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). * * \param[in,out] operation Active AEAD operation. * \param[out] nonce Buffer where the generated nonce is to be @@ -2370,7 +2429,8 @@ psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or nonce already set). + * The operation state is not valid (it must be an active aead encrypt + operation, with no nonce set). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p nonce buffer is too small. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY @@ -2393,10 +2453,11 @@ psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, * This function sets the nonce for the authenticated * encryption or decryption operation. * - * The application must call psa_aead_encrypt_setup() before - * calling this function. + * The application must call psa_aead_encrypt_setup() or + * psa_aead_decrypt_setup() before calling this function. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). * * \note When encrypting, applications should use psa_aead_generate_nonce() * instead of this function, unless implementing a protocol that requires @@ -2409,7 +2470,8 @@ psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, or nonce already set). + * The operation state is not valid (it must be active, with no nonce + * set). * \retval #PSA_ERROR_INVALID_ARGUMENT * The size of \p nonce is not acceptable for the chosen algorithm. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY @@ -2442,6 +2504,9 @@ psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, * this function is not required. * - For vendor-defined algorithm, refer to the vendor documentation. * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * * \param[in,out] operation Active AEAD operation. * \param ad_length Size of the non-encrypted additional * authenticated data in bytes. @@ -2450,8 +2515,9 @@ psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, already completed, - * or psa_aead_update_ad() or psa_aead_update() already called). + * The operation state is not valid (it must be active, and + * psa_aead_update_ad() and psa_aead_update() must not have been + * called yet). * \retval #PSA_ERROR_INVALID_ARGUMENT * At least one of the lengths is not acceptable for the chosen * algorithm. @@ -2480,7 +2546,8 @@ psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). * * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, * there is no guarantee that the input is valid. Therefore, until @@ -2496,8 +2563,9 @@ psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, nonce not set, - * psa_aead_update() already called, or operation already completed). + * The operation state is not valid (it must be active, have a nonce + * set, have lengths set if required by the algorithm, and + * psa_aead_update() must not have been called yet). * \retval #PSA_ERROR_INVALID_ARGUMENT * The total input length overflows the additional data length that * was previously specified with psa_aead_set_lengths(). @@ -2524,7 +2592,8 @@ psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). * 3. Call psa_aead_update_ad() to pass all the additional data. * - * If this function returns an error status, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). * * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, * there is no guarantee that the input is valid. Therefore, until @@ -2564,8 +2633,8 @@ psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, nonce not set - * or already completed). + * The operation state is not valid (it must be active, have a nonce + * set, and have lengths set if required by the algorithm). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p output buffer is too small. * You can determine a sufficient buffer size by calling @@ -2611,7 +2680,9 @@ psa_status_t psa_aead_update(psa_aead_operation_t *operation, * #PSA_AEAD_TAG_LENGTH(\c alg) where \c alg is the AEAD algorithm * that the operation performs. * - * When this function returns, the operation becomes inactive. + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). * * \param[in,out] operation Active AEAD operation. * \param[out] ciphertext Buffer where the last part of the ciphertext @@ -2635,8 +2706,8 @@ psa_status_t psa_aead_update(psa_aead_operation_t *operation, * \retval #PSA_SUCCESS * Success. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, nonce not set, - * decryption, or already completed). + * The operation state is not valid (it must be an active encryption + * operation with a nonce set). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p ciphertext or \p tag buffer is too small. * You can determine a sufficient buffer size for \p ciphertext by @@ -2674,12 +2745,26 @@ psa_status_t psa_aead_finish(psa_aead_operation_t *operation, * * The operation must have been set up with psa_aead_decrypt_setup(). * - * This function finishes the authentication of the additional data - * formed by concatenating the inputs passed to preceding calls to - * psa_aead_update_ad() with the ciphertext formed by concatenating the - * inputs passed to preceding calls to psa_aead_update(). + * This function finishes the authenticated decryption of the message + * components: * - * When this function returns, the operation becomes inactive. + * - The additional data consisting of the concatenation of the inputs + * passed to preceding calls to psa_aead_update_ad(). + * - The ciphertext consisting of the concatenation of the inputs passed to + * preceding calls to psa_aead_update(). + * - The tag passed to this function call. + * + * If the authentication tag is correct, this function outputs any remaining + * plaintext and reports success. If the authentication tag is not correct, + * this function returns #PSA_ERROR_INVALID_SIGNATURE. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual tag and the expected tag is performed + * in constant time. * * \param[in,out] operation Active AEAD operation. * \param[out] plaintext Buffer where the last part of the plaintext @@ -2699,9 +2784,12 @@ psa_status_t psa_aead_finish(psa_aead_operation_t *operation, * * \retval #PSA_SUCCESS * Success. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculations were successful, but the authentication tag is + * not correct. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid (not set up, nonce not set, - * encryption, or already completed). + * The operation state is not valid (it must be an active decryption + * operation with a nonce set). * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p plaintext buffer is too small. * You can determine a sufficient buffer size for \p plaintext by @@ -2740,22 +2828,15 @@ psa_status_t psa_aead_verify(psa_aead_operation_t *operation, * psa_aead_encrypt_setup() or psa_aead_decrypt_setup() again. * * You may call this function any time after the operation object has - * been initialized by any of the following methods: - * - A call to psa_aead_encrypt_setup() or psa_aead_decrypt_setup(), - * whether it succeeds or not. - * - Initializing the \c struct to all-bits-zero. - * - Initializing the \c struct to logical zeros, e.g. - * `psa_aead_operation_t operation = {0}`. + * been initialized as described in #psa_aead_operation_t. * * In particular, calling psa_aead_abort() after the operation has been - * terminated by a call to psa_aead_abort() or psa_aead_finish() - * is safe and has no effect. + * terminated by a call to psa_aead_abort(), psa_aead_finish() or + * psa_aead_verify() is safe and has no effect. * * \param[in,out] operation Initialized AEAD operation. * * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE - * \p operation is not an active AEAD operation. * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED @@ -2798,7 +2879,7 @@ psa_status_t psa_aead_abort(psa_aead_operation_t *operation); * \retval #PSA_ERROR_BUFFER_TOO_SMALL * The size of the \p signature buffer is too small. You can * determine a sufficient buffer size by calling - * #PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) * where \c key_type and \c key_bits are the type and bit-size * respectively of \p handle. * \retval #PSA_ERROR_NOT_SUPPORTED @@ -2814,13 +2895,13 @@ psa_status_t psa_aead_abort(psa_aead_operation_t *operation); * It is implementation-dependent whether a failure to initialize * results in this error code. */ -psa_status_t psa_asymmetric_sign(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *hash, - size_t hash_length, - uint8_t *signature, - size_t signature_size, - size_t *signature_length); +psa_status_t psa_sign_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length); /** * \brief Verify the signature a hash or short message using a public key. @@ -2860,12 +2941,12 @@ psa_status_t psa_asymmetric_sign(psa_key_handle_t handle, * It is implementation-dependent whether a failure to initialize * results in this error code. */ -psa_status_t psa_asymmetric_verify(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *hash, - size_t hash_length, - const uint8_t *signature, - size_t signature_length); +psa_status_t psa_verify_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length); /** * \brief Encrypt a short message with a public key. @@ -3048,23 +3129,31 @@ static psa_key_derivation_operation_t psa_key_derivation_operation_init(void); * cryptographic material. * * To derive a key: - * - Start with an initialized object of type #psa_key_derivation_operation_t. - * - Call psa_key_derivation_setup() to select the algorithm. - * - Provide the inputs for the key derivation by calling - * psa_key_derivation_input_bytes() or psa_key_derivation_input_key() - * as appropriate. Which inputs are needed, in what order, and whether - * they may be keys and if so of what type depends on the algorithm. - * - Optionally set the operation's maximum capacity with - * psa_key_derivation_set_capacity(). You may do this before, in the middle - * of or after providing inputs. For some algorithms, this step is mandatory - * because the output depends on the maximum capacity. - * - To derive a key, call psa_key_derivation_output_key(). - * To derive a byte string for a different purpose, call - * - psa_key_derivation_output_bytes(). - * Successive calls to these functions use successive output bytes - * calculated by the key derivation algorithm. - * - Clean up the key derivation operation object with - * psa_key_derivation_abort(). + * -# Start with an initialized object of type #psa_key_derivation_operation_t. + * -# Call psa_key_derivation_setup() to select the algorithm. + * -# Provide the inputs for the key derivation by calling + * psa_key_derivation_input_bytes() or psa_key_derivation_input_key() + * as appropriate. Which inputs are needed, in what order, and whether + * they may be keys and if so of what type depends on the algorithm. + * -# Optionally set the operation's maximum capacity with + * psa_key_derivation_set_capacity(). You may do this before, in the middle + * of or after providing inputs. For some algorithms, this step is mandatory + * because the output depends on the maximum capacity. + * -# To derive a key, call psa_key_derivation_output_key(). + * To derive a byte string for a different purpose, call + * psa_key_derivation_output_bytes(). + * Successive calls to these functions use successive output bytes + * calculated by the key derivation algorithm. + * -# Clean up the key derivation operation object with + * psa_key_derivation_abort(). + * + * If this function returns an error, the key derivation operation object is + * not changed. + * + * If an error occurs at any step after a call to psa_key_derivation_setup(), + * the operation will need to be reset by a call to psa_key_derivation_abort(). + * + * Implementations must reject an attempt to derive a key of size 0. * * \param[in,out] operation The key derivation operation object * to set up. It must @@ -3085,7 +3174,7 @@ static psa_key_derivation_operation_t psa_key_derivation_operation_init(void); * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_STORAGE_FAILURE * \retval #PSA_ERROR_BAD_STATE - * The operation state is either not initialized or has already been setup. + * The operation state is not valid (it must be inactive). * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -3107,7 +3196,7 @@ psa_status_t psa_key_derivation_setup( * \retval #PSA_SUCCESS * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid. + * The operation state is not valid (it must be active). * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_BAD_STATE @@ -3135,7 +3224,7 @@ psa_status_t psa_key_derivation_get_capacity( * In this case, the operation object remains valid and its capacity * remains unchanged. * \retval #PSA_ERROR_BAD_STATE - * The operation state is not valid. + * The operation state is not valid (it must be active). * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED @@ -3163,9 +3252,15 @@ psa_status_t psa_key_derivation_set_capacity( * Refer to the documentation of each key derivation or key agreement * algorithm for information. * - * This function passes direct inputs. Some inputs must be passed as keys - * using psa_key_derivation_input_key() instead of this function. Refer to - * the documentation of individual step types for information. + * This function passes direct inputs, which is usually correct for + * non-secret inputs. To pass a secret input, which should be in a key + * object, call psa_key_derivation_input_key() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). * * \param[in,out] operation The key derivation operation object to use. * It must have been set up with @@ -3187,7 +3282,7 @@ psa_status_t psa_key_derivation_set_capacity( * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_STORAGE_FAILURE * \retval #PSA_ERROR_BAD_STATE - * The value of \p step is not valid given the state of \p operation. + * The operation state is not valid for this input \p step. * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -3205,10 +3300,16 @@ psa_status_t psa_key_derivation_input_bytes( * Refer to the documentation of each key derivation or key agreement * algorithm for information. * - * This function passes key inputs. Some inputs must be passed as keys - * of the appropriate type using this function, while others must be - * passed as direct inputs using psa_key_derivation_input_bytes(). Refer to - * the documentation of individual step types for information. + * This function obtains input from a key object, which is usually correct for + * secret inputs or for non-secret personalization strings kept in the key + * store. To pass a non-secret parameter which is not in the key store, + * call psa_key_derivation_input_bytes() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). * * \param[in,out] operation The key derivation operation object to use. * It must have been set up with @@ -3226,14 +3327,15 @@ psa_status_t psa_key_derivation_input_bytes( * \retval #PSA_ERROR_INVALID_ARGUMENT * \c step is not compatible with the operation's algorithm. * \retval #PSA_ERROR_INVALID_ARGUMENT - * \c step does not allow key inputs. + * \c step does not allow key inputs of the given type + * or does not allow key inputs at all. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED * \retval #PSA_ERROR_STORAGE_FAILURE * \retval #PSA_ERROR_BAD_STATE - * The value of \p step is not valid given the state of \p operation. + * The operation state is not valid for this input \p step. * \retval #PSA_ERROR_BAD_STATE * The library has not been previously initialized by psa_crypto_init(). * It is implementation-dependent whether a failure to initialize @@ -3253,6 +3355,9 @@ psa_status_t psa_key_derivation_input_key( * The output of this key derivation can be extracted by reading from the * resulting operation to produce keys and other cryptographic material. * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * * \param[in,out] operation The key derivation operation object to use. * It must have been set up with * psa_key_derivation_setup() with a @@ -3283,6 +3388,8 @@ psa_status_t psa_key_derivation_input_key( * * \retval #PSA_SUCCESS * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this key agreement \p step. * \retval #PSA_ERROR_INVALID_HANDLE * \retval #PSA_ERROR_NOT_PERMITTED * \retval #PSA_ERROR_INVALID_ARGUMENT @@ -3291,6 +3398,8 @@ psa_status_t psa_key_derivation_input_key( * \c private_key. * \retval #PSA_ERROR_NOT_SUPPORTED * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow an input resulting from a key agreement. * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE @@ -3317,6 +3426,10 @@ psa_status_t psa_key_derivation_key_agreement( * stream. * The operation's capacity decreases by the number of bytes read. * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * * \param[in,out] operation The key derivation operation object to read from. * \param[out] output Buffer where the output will be written. * \param output_length Number of bytes to output. @@ -3330,6 +3443,8 @@ psa_status_t psa_key_derivation_key_agreement( * subsequent calls to this function will not * succeed, even with a smaller output buffer. * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE @@ -3349,11 +3464,18 @@ psa_status_t psa_key_derivation_output_bytes( * * This function calculates output bytes from a key derivation algorithm * and uses those bytes to generate a key deterministically. + * The key's location, usage policy, type and size are taken from + * \p attributes. + * * If you view the key derivation's output as a stream of bytes, this * function destructively reads as many bytes as required from the * stream. * The operation's capacity decreases by the number of bytes read. * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * * How much output is produced and consumed from the operation, and how * the key is derived, depends on the key type: * @@ -3380,10 +3502,10 @@ psa_status_t psa_key_derivation_output_bytes( * length is determined by the curve, and sets the mandatory bits * accordingly. That is: * - * - #PSA_ECC_CURVE_CURVE25519: draw a 32-byte string - * and process it as specified in RFC 7748 §5. - * - #PSA_ECC_CURVE_CURVE448: draw a 56-byte string - * and process it as specified in RFC 7748 §5. + * - Curve25519 (#PSA_ECC_CURVE_MONTGOMERY, 255 bits): draw a 32-byte + * string and process it as specified in RFC 7748 §5. + * - Curve448 (#PSA_ECC_CURVE_MONTGOMERY, 448 bits): draw a 56-byte + * string and process it as specified in RFC 7748 §5. * * - For key types for which the key is represented by a single sequence of * \p bits bits with constraints as to which bit sequences are acceptable, @@ -3428,6 +3550,11 @@ psa_status_t psa_key_derivation_output_bytes( * In all cases, the data that is read is discarded from the operation. * The operation's capacity is decreased by the number of bytes read. * + * For algorithms that take an input step #PSA_KEY_DERIVATION_INPUT_SECRET, + * the input to that step must be provided with psa_key_derivation_input_key(). + * Future versions of this specification may include additional restrictions + * on the derived key based on the attributes and strength of the secret key. + * * \param[in] attributes The attributes for the new key. * \param[in,out] operation The key derivation operation object to read from. * \param[out] handle On success, a handle to the newly created key. @@ -3450,7 +3577,12 @@ psa_status_t psa_key_derivation_output_bytes( * implementation in general or in this particular location. * \retval #PSA_ERROR_INVALID_ARGUMENT * The provided key attributes are not valid for the operation. + * \retval #PSA_ERROR_NOT_PERMITTED + * The #PSA_KEY_DERIVATION_INPUT_SECRET input was not provided through + * a key. * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). * \retval #PSA_ERROR_INSUFFICIENT_MEMORY * \retval #PSA_ERROR_INSUFFICIENT_STORAGE * \retval #PSA_ERROR_COMMUNICATION_FAILURE @@ -3469,22 +3601,19 @@ psa_status_t psa_key_derivation_output_key( /** Abort a key derivation operation. * - * Once a key derivation operation has been aborted, its capacity is zero. - * Aborting an operation frees all associated resources except for the - * \c operation structure itself. + * Aborting an operation frees all associated resources except for the \c + * operation structure itself. Once aborted, the operation object can be reused + * for another operation by calling psa_key_derivation_setup() again. * - * This function may be called at any time as long as the operation - * object has been initialized to #PSA_KEY_DERIVATION_OPERATION_INIT, to - * psa_key_derivation_operation_init() or a zero value. In particular, - * it is valid to call psa_key_derivation_abort() twice, or to call - * psa_key_derivation_abort() on an operation that has not been set up. + * This function may be called at any time after the operation + * object has been initialized as described in #psa_key_derivation_operation_t. * - * Once aborted, the key derivation operation object may be called. + * In particular, it is valid to call psa_key_derivation_abort() twice, or to + * call psa_key_derivation_abort() on an operation that has not been set up. * * \param[in,out] operation The operation to abort. * * \retval #PSA_SUCCESS - * \retval #PSA_ERROR_BAD_STATE * \retval #PSA_ERROR_COMMUNICATION_FAILURE * \retval #PSA_ERROR_HARDWARE_FAILURE * \retval #PSA_ERROR_CORRUPTION_DETECTED @@ -3591,7 +3720,9 @@ psa_status_t psa_generate_random(uint8_t *output, * \brief Generate a key or key pair. * * The key is generated randomly. - * Its location, policy, type and size are taken from \p attributes. + * Its location, usage policy, type and size are taken from \p attributes. + * + * Implementations must reject an attempt to generate a key of size 0. * * The following type-specific considerations apply: * - For RSA keys (#PSA_KEY_TYPE_RSA_KEY_PAIR), diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_compat.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_compat.h new file mode 100644 index 00000000..1ed5f052 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_compat.h @@ -0,0 +1,196 @@ +/** + * \file psa/crypto_compat.h + * + * \brief PSA cryptography module: Backward compatibility aliases + * + * This header declares alternative names for macro and functions. + * New application code should not use these names. + * These names may be removed in a future version of Mbed Crypto. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + */ +/* + * Copyright (C) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_COMPAT_H +#define PSA_CRYPTO_COMPAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +/* + * Mechanism for declaring deprecated values + */ +#if defined(MBEDTLS_DEPRECATED_WARNING) && !defined(MBEDTLS_PSA_DEPRECATED) +#define MBEDTLS_PSA_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_PSA_DEPRECATED +#endif + +typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t; +typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t; +typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t; +typedef MBEDTLS_PSA_DEPRECATED psa_ecc_curve_t mbedtls_deprecated_psa_ecc_curve_t; +typedef MBEDTLS_PSA_DEPRECATED psa_dh_group_t mbedtls_deprecated_psa_dh_group_t; + +#define MBEDTLS_DEPRECATED_CONSTANT( type, value ) \ + ( (mbedtls_deprecated_##type) ( value ) ) + +/* + * Deprecated PSA Crypto error code definitions (PSA Crypto API <= 1.0 beta2) + */ +#define PSA_ERROR_UNKNOWN_ERROR \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_GENERIC_ERROR ) +#define PSA_ERROR_OCCUPIED_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_ALREADY_EXISTS ) +#define PSA_ERROR_EMPTY_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_DOES_NOT_EXIST ) +#define PSA_ERROR_INSUFFICIENT_CAPACITY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_INSUFFICIENT_DATA ) +#define PSA_ERROR_TAMPERING_DETECTED \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_CORRUPTION_DETECTED ) + +/* + * Deprecated PSA Crypto numerical encodings (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_KEY_USAGE_SIGN \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH ) +#define PSA_KEY_USAGE_VERIFY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH ) + +/* + * Deprecated PSA Crypto size calculation macros (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGNATURE_MAX_SIZE ) +#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) ) + +/* + * Deprecated PSA Crypto function names (PSA Crypto API <= 1.0 beta3) + */ +MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_sign( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ) +{ + return psa_sign_hash( key, alg, hash, hash_length, signature, signature_size, signature_length ); +} + +MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_verify( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length ) +{ + return psa_verify_hash( key, alg, hash, hash_length, signature, signature_length ); +} + + + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/* + * Size-specific elliptic curve and Diffie-Hellman group names + */ +#define PSA_ECC_CURVE_SECP160K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP192K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP224K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP256K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP160R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP192R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP224R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP256R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP384R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP521R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP160R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R2 ) +#define PSA_ECC_CURVE_SECT163K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT233K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT239K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT283K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT409K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT571K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT163R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT193R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT233R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT283R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT409R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT571R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT163R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R2 ) +#define PSA_ECC_CURVE_SECT193R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R2 ) +#define PSA_ECC_CURVE_BRAINPOOL_P256R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_BRAINPOOL_P384R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_BRAINPOOL_P512R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_CURVE25519 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_MONTGOMERY ) +#define PSA_ECC_CURVE_CURVE448 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_MONTGOMERY ) + +#define PSA_DH_GROUP_FFDHE2048 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE3072 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE4096 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE6144 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE8192 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_COMPAT_H */ diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h index 636c8811..e9fa3118 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_extra.h @@ -32,6 +32,8 @@ #include "mbedtls/platform_util.h" +#include "crypto_compat.h" + #ifdef __cplusplus extern "C" { #endif @@ -39,28 +41,6 @@ extern "C" { /* UID for secure storage seed */ #define PSA_CRYPTO_ITS_RANDOM_SEED_UID 0xFFFFFF52 -/* - * Deprecated PSA Crypto error code definitions - */ -#if !defined(MBEDTLS_DEPRECATED_REMOVED) -#define PSA_ERROR_UNKNOWN_ERROR \ - MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_GENERIC_ERROR ) -#endif - -#if !defined(MBEDTLS_DEPRECATED_REMOVED) -#define PSA_ERROR_OCCUPIED_SLOT \ - MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_ALREADY_EXISTS ) -#endif - -#if !defined(MBEDTLS_DEPRECATED_REMOVED) -#define PSA_ERROR_EMPTY_SLOT \ - MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_DOES_NOT_EXIST ) -#endif - -#if !defined(MBEDTLS_DEPRECATED_REMOVED) -#define PSA_ERROR_INSUFFICIENT_CAPACITY \ - MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( PSA_ERROR_INSUFFICIENT_DATA ) -#endif /** \addtogroup attributes * @{ @@ -193,6 +173,9 @@ static inline void psa_clear_key_slot_number( * \retval #PSA_ERROR_ALREADY_EXISTS * There is already a key with the identifier specified in * \p attributes. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The secure element driver for the specified lifetime does not + * support registering a key. * \retval #PSA_ERROR_INVALID_ARGUMENT * \p attributes specifies a lifetime which is not located * in a secure element. @@ -346,7 +329,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, * string. The length of the byte string is the length of the base prime `p` * in bytes. */ -#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x60020000) +#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x4002) /** DSA key pair (private and public key). * @@ -364,7 +347,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, * Add 1 to the resulting integer and use this as the private key *x*. * */ -#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x70020000) +#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x7002) /** Whether a key type is an DSA key (pair or public-only). */ #define PSA_KEY_TYPE_IS_DSA(type) \ @@ -388,7 +371,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, #define PSA_ALG_DSA(hash_alg) \ (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) #define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000) -#define PSA_ALG_DSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) +#define PSA_ALG_DSA_DETERMINISTIC_FLAG PSA_ALG_ECDSA_DETERMINISTIC_FLAG /** Deterministic DSA signature with hashing. * * This is the deterministic variant defined by RFC 6979 of @@ -435,8 +418,7 @@ psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, * #PSA_KEY_TYPE_DH_KEY_PAIR(#PSA_DH_GROUP_CUSTOM), the group data comes * from domain parameters set by psa_set_key_domain_parameters(). */ -/* This value is reserved for private use in the TLS named group registry. */ -#define PSA_DH_GROUP_CUSTOM ((psa_dh_group_t) 0x01fc) +#define PSA_DH_GROUP_CUSTOM ((psa_dh_group_t) 0x7e) /** @@ -576,6 +558,50 @@ psa_status_t psa_get_key_domain_parameters( /**@}*/ +/** \defgroup psa_tls_helpers TLS helper functions + * @{ + */ + +#if defined(MBEDTLS_ECP_C) +#include + +/** Convert an ECC curve identifier from the Mbed TLS encoding to PSA. + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param grpid An Mbed TLS elliptic curve identifier + * (`MBEDTLS_ECP_DP_xxx`). + * \param[out] bits On success, the bit size of the curve. + * + * \return The corresponding PSA elliptic curve identifier + * (`PSA_ECC_CURVE_xxx`). + * \return \c 0 on failure (\p grpid is not recognized). + */ +psa_ecc_curve_t mbedtls_ecc_group_to_psa( mbedtls_ecp_group_id grpid, + size_t *bits ); + +/** Convert an ECC curve identifier from the PSA encoding to Mbed TLS. + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param curve A PSA elliptic curve identifier + * (`PSA_ECC_CURVE_xxx`). + * \param byte_length The byte-length of a private key on \p curve. + * + * \return The corresponding Mbed TLS elliptic curve identifier + * (`MBEDTLS_ECP_DP_xxx`). + * \return #MBEDTLS_ECP_DP_NONE if \c curve is not recognized. + * \return #MBEDTLS_ECP_DP_NONE if \p byte_length is not + * correct for \p curve. + */ +mbedtls_ecp_group_id mbedtls_ecc_group_of_psa( psa_ecc_curve_t curve, + size_t byte_length ); +#endif /* MBEDTLS_ECP_C */ + +/**@}*/ + #ifdef __cplusplus } #endif diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h index a43e0db4..7ac1ed1c 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_se_driver.h @@ -927,7 +927,14 @@ typedef psa_status_t (*psa_drv_se_allocate_key_t)( * sake of initial device provisioning or onboarding. Such a mechanism may * be added to a future version of the PSA Cryptography API specification. * + * This function may update the driver's persistent data through + * \p persistent_data. The core will save the updated persistent data at the + * end of the key creation process. See the description of + * ::psa_drv_se_allocate_key_t for more information. + * * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. * \param[in] attributes Attributes of the key. * \param method The way in which the key is being created. * \param[in] key_slot Slot where the key is to be stored. @@ -946,6 +953,7 @@ typedef psa_status_t (*psa_drv_se_allocate_key_t)( */ typedef psa_status_t (*psa_drv_se_validate_slot_number_t)( psa_drv_se_context_t *drv_context, + void *persistent_data, const psa_key_attributes_t *attributes, psa_key_creation_method_t method, psa_key_slot_number_t key_slot); diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h index bcca7248..1f04222c 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_sizes.h @@ -190,47 +190,6 @@ #define PSA_VENDOR_ECC_MAX_CURVE_BITS 0 #endif -/** Bit size associated with an elliptic curve. - * - * \param curve An elliptic curve (value of type #psa_ecc_curve_t). - * - * \return The size associated with \p curve, in bits. - * This may be 0 if the implementation does not support - * the specified curve. - */ -#define PSA_ECC_CURVE_BITS(curve) \ - ((curve) == PSA_ECC_CURVE_SECT163K1 ? 163 : \ - (curve) == PSA_ECC_CURVE_SECT163R1 ? 163 : \ - (curve) == PSA_ECC_CURVE_SECT163R2 ? 163 : \ - (curve) == PSA_ECC_CURVE_SECT193R1 ? 193 : \ - (curve) == PSA_ECC_CURVE_SECT193R2 ? 193 : \ - (curve) == PSA_ECC_CURVE_SECT233K1 ? 233 : \ - (curve) == PSA_ECC_CURVE_SECT233R1 ? 233 : \ - (curve) == PSA_ECC_CURVE_SECT239K1 ? 239 : \ - (curve) == PSA_ECC_CURVE_SECT283K1 ? 283 : \ - (curve) == PSA_ECC_CURVE_SECT283R1 ? 283 : \ - (curve) == PSA_ECC_CURVE_SECT409K1 ? 409 : \ - (curve) == PSA_ECC_CURVE_SECT409R1 ? 409 : \ - (curve) == PSA_ECC_CURVE_SECT571K1 ? 571 : \ - (curve) == PSA_ECC_CURVE_SECT571R1 ? 571 : \ - (curve) == PSA_ECC_CURVE_SECP160K1 ? 160 : \ - (curve) == PSA_ECC_CURVE_SECP160R1 ? 160 : \ - (curve) == PSA_ECC_CURVE_SECP160R2 ? 160 : \ - (curve) == PSA_ECC_CURVE_SECP192K1 ? 192 : \ - (curve) == PSA_ECC_CURVE_SECP192R1 ? 192 : \ - (curve) == PSA_ECC_CURVE_SECP224K1 ? 224 : \ - (curve) == PSA_ECC_CURVE_SECP224R1 ? 224 : \ - (curve) == PSA_ECC_CURVE_SECP256K1 ? 256 : \ - (curve) == PSA_ECC_CURVE_SECP256R1 ? 256 : \ - (curve) == PSA_ECC_CURVE_SECP384R1 ? 384 : \ - (curve) == PSA_ECC_CURVE_SECP521R1 ? 521 : \ - (curve) == PSA_ECC_CURVE_BRAINPOOL_P256R1 ? 256 : \ - (curve) == PSA_ECC_CURVE_BRAINPOOL_P384R1 ? 384 : \ - (curve) == PSA_ECC_CURVE_BRAINPOOL_P512R1 ? 512 : \ - (curve) == PSA_ECC_CURVE_CURVE25519 ? 255 : \ - (curve) == PSA_ECC_CURVE_CURVE448 ? 448 : \ - 0) - /** \def PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN * * This macro returns the maximum length of the PSK supported @@ -247,21 +206,6 @@ */ #define PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN 128 -/** \def PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE - * - * Maximum size of an asymmetric signature. - * - * This macro must expand to a compile-time constant integer. This value - * should be the maximum size of a MAC supported by the implementation, - * in bytes, and must be no smaller than this maximum. - */ -#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \ - PSA_BITS_TO_BYTES( \ - PSA_VENDOR_RSA_MAX_KEY_BITS > PSA_VENDOR_ECC_MAX_CURVE_BITS ? \ - PSA_VENDOR_RSA_MAX_KEY_BITS : \ - PSA_VENDOR_ECC_MAX_CURVE_BITS \ - ) - /** The maximum size of a block cipher supported by the implementation. */ #define PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE 16 @@ -426,7 +370,7 @@ #define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ (PSA_BITS_TO_BYTES(curve_bits) * 2) -/** Sufficient signature buffer size for psa_asymmetric_sign(). +/** Sufficient signature buffer size for psa_sign_hash(). * * This macro returns a sufficient buffer size for a signature using a key * of the specified type and size, with the specified algorithm. @@ -444,7 +388,7 @@ * * \return If the parameters are valid and supported, return * a buffer size in bytes that guarantees that - * psa_asymmetric_sign() will not fail with + * psa_sign_hash() will not fail with * #PSA_ERROR_BUFFER_TOO_SMALL. * If the parameters are a valid combination that is not supported * by the implementation, this macro shall return either a @@ -452,11 +396,27 @@ * If the parameters are not valid, the * return value is unspecified. */ -#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \ +#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \ (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \ ((void)alg, 0)) +#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \ + PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) + +/** \def PSA_SIGNATURE_MAX_SIZE + * + * Maximum size of an asymmetric signature. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a signature supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +#define PSA_SIGNATURE_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \ + PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \ + PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE) + /** Sufficient output buffer size for psa_asymmetric_encrypt(). * * This macro returns a sufficient buffer size for a ciphertext produced using @@ -681,7 +641,7 @@ * * \return If the parameters are valid and supported, return * a buffer size in bytes that guarantees that - * psa_asymmetric_sign() will not fail with + * psa_sign_hash() will not fail with * #PSA_ERROR_BUFFER_TOO_SMALL. * If the parameters are a valid combination that is not supported * by the implementation, this macro shall return either a diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h index b79c3b52..d96c66e5 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_types.h @@ -63,13 +63,29 @@ typedef int32_t psa_status_t; /** \brief Encoding of a key type. */ -typedef uint32_t psa_key_type_t; +typedef uint16_t psa_key_type_t; -/** The type of PSA elliptic curve identifiers. */ -typedef uint16_t psa_ecc_curve_t; +/** The type of PSA elliptic curve family identifiers. + * + * The curve identifier is required to create an ECC key using the + * PSA_KEY_TYPE_ECC_KEY_PAIR() or PSA_KEY_TYPE_ECC_PUBLIC_KEY() + * macros. + * + * Values defined by this standard will never be in the range 0x80-0xff. + * Vendors who define additional families must use an encoding in this range. + */ +typedef uint8_t psa_ecc_curve_t; -/** The type of PSA Diffie-Hellman group identifiers. */ -typedef uint16_t psa_dh_group_t; +/** The type of PSA Diffie-Hellman group family identifiers. + * + * The group identifier is required to create an Diffie-Hellman key using the + * PSA_KEY_TYPE_DH_KEY_PAIR() or PSA_KEY_TYPE_DH_PUBLIC_KEY() + * macros. + * + * Values defined by this standard will never be in the range 0x80-0xff. + * Vendors who define additional families must use an encoding in this range. + */ +typedef uint8_t psa_dh_group_t; /** \brief Encoding of a cryptographic algorithm. * @@ -206,11 +222,12 @@ typedef uint32_t psa_key_usage_t; * values: * * - lifetime: #PSA_KEY_LIFETIME_VOLATILE. - * - key identifier: unspecified. - * - type: \c 0. - * - key size: \c 0. - * - usage flags: \c 0. - * - algorithm: \c 0. + * - key identifier: 0 (which is not a valid key identifier). + * - type: \c 0 (meaning that the type is unspecified). + * - key size: \c 0 (meaning that the size is unspecified). + * - usage flags: \c 0 (which allows no usage except exporting a public key). + * - algorithm: \c 0 (which allows no cryptographic usage, but allows + * exporting). * * A typical sequence to create a key is as follows: * -# Create and initialize an attribute structure. diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h index b53e1c76..baaabff1 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/inc/psa/crypto_values.h @@ -149,7 +149,7 @@ * * \warning If a function returns this error, it is undetermined * whether the requested action has completed or not. Implementations - * should return #PSA_SUCCESS on successful completion whenver + * should return #PSA_SUCCESS on successful completion whenever * possible, however functions may return #PSA_ERROR_COMMUNICATION_FAILURE * if the requested action was completed successfully in an external * cryptoprocessor but there was a breakdown of communication before @@ -282,26 +282,29 @@ * * Zero is not the encoding of any key type. */ -#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000) +#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x0000) -/** Vendor-defined flag +/** Vendor-defined key type flag. * * Key types defined by this standard will never have the * #PSA_KEY_TYPE_VENDOR_FLAG bit set. Vendors who define additional key types * must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should * respect the bitwise structure used by standard encodings whenever practical. */ -#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000) +#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x8000) -#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x70000000) -#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x40000000) -#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x50000000) -#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x60000000) -#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x70000000) +#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7000) +#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x1000) +#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x2000) +#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x4000) +#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x7000) -#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x10000000) +#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x3000) -/** Whether a key type is vendor-defined. */ +/** Whether a key type is vendor-defined. + * + * See also #PSA_KEY_TYPE_VENDOR_FLAG. + */ #define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) @@ -310,8 +313,8 @@ * This encompasses both symmetric keys and non-key data. */ #define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ - (((type) & PSA_KEY_TYPE_CATEGORY_MASK & ~(psa_key_type_t)0x10000000) == \ - PSA_KEY_TYPE_CATEGORY_SYMMETRIC) + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_RAW || \ + ((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC) /** Whether a key type is asymmetric: either a key pair or a public key. */ #define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ @@ -354,7 +357,7 @@ * * A "key" of this type cannot be used for any cryptographic operation. * Applications may use this type to store arbitrary data in the keystore. */ -#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x50000001) +#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x1001) /** HMAC key. * @@ -364,21 +367,21 @@ * HMAC keys should generally have the same size as the underlying hash. * This size can be calculated with #PSA_HASH_SIZE(\c alg) where * \c alg is the HMAC algorithm or the underlying hash algorithm. */ -#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x51000000) +#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x1100) /** A secret for key derivation. * * The key policy determines which key derivation algorithm the key * can be used for. */ -#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x52000000) +#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x1200) /** Key for a cipher, AEAD or MAC algorithm based on the AES block cipher. * * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or * 32 bytes (AES-256). */ -#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x40000001) +#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x2400) /** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES). * @@ -389,17 +392,17 @@ * deprecated and should only be used to decrypt legacy data. 3-key 3DES * is weak and deprecated and should only be used in legacy protocols. */ -#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x40000002) +#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x2301) /** Key for a cipher, AEAD or MAC algorithm based on the * Camellia block cipher. */ -#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x40000003) +#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x2403) /** Key for the RC4 stream cipher. * * Note that RC4 is weak and deprecated and should only be used in * legacy protocols. */ -#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x40000004) +#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x2002) /** Key for the ChaCha20 stream cipher or the Chacha20-Poly1305 AEAD algorithm. * @@ -408,23 +411,31 @@ * Implementations must support 12-byte nonces, may support 8-byte nonces, * and should reject other sizes. */ -#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x40000005) +#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x2004) /** RSA public key. */ -#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x60010000) +#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x4001) /** RSA key pair (private and public key). */ -#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x70010000) +#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x7001) /** Whether a key type is an RSA key (pair or public-only). */ #define PSA_KEY_TYPE_IS_RSA(type) \ (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) -#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x60030000) -#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x70030000) -#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff) -/** Elliptic curve key pair. */ +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x4100) +#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x7100) +#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x00ff) +/** Elliptic curve key pair. + * + * \param curve A value of type ::psa_ecc_curve_t that identifies the + * ECC curve to be used. + */ #define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve)) -/** Elliptic curve public key. */ +/** Elliptic curve public key. + * + * \param curve A value of type ::psa_ecc_curve_t that identifies the + * ECC curve to be used. + */ #define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) @@ -447,61 +458,94 @@ ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ 0)) -/* The encoding of curve identifiers is currently aligned with the - * TLS Supported Groups Registry (formerly known as the - * TLS EC Named Curve Registry) - * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 - * The values are defined by RFC 8422 and RFC 7027. */ -#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001) -#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002) -#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003) -#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004) -#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005) -#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006) -#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007) -#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008) -#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009) -#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a) -#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b) -#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c) -#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d) -#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e) -#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f) -#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010) -#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011) -#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012) -#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013) -#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014) -#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015) -#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016) -#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017) -#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018) -#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019) -#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a) -#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b) -#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c) -/** Curve25519. - * - * This is the curve defined in Bernstein et al., - * _Curve25519: new Diffie-Hellman speed records_, LNCS 3958, 2006. - * The algorithm #PSA_ALG_ECDH performs X25519 when used with this curve. - */ -#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d) -/** Curve448 - * - * This is the curve defined in Hamburg, - * _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. - * The algorithm #PSA_ALG_ECDH performs X448 when used with this curve. - */ -#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e) - -#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x60040000) -#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x70040000) -#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x0000ffff) -/** Diffie-Hellman key pair. */ +/** SEC Koblitz curves over prime fields. + * + * This family comprises the following curves: + * secp192k1, secp224k1, secp256k1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECP_K1 ((psa_ecc_curve_t) 0x17) + +/** SEC random curves over prime fields. + * + * This family comprises the following curves: + * secp192k1, secp224r1, secp256r1, secp384r1, secp521r1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECP_R1 ((psa_ecc_curve_t) 0x12) +/* SECP160R2 (SEC2 v1, obsolete) */ +#define PSA_ECC_CURVE_SECP_R2 ((psa_ecc_curve_t) 0x1b) + +/** SEC Koblitz curves over binary fields. + * + * This family comprises the following curves: + * sect163k1, sect233k1, sect239k1, sect283k1, sect409k1, sect571k1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECT_K1 ((psa_ecc_curve_t) 0x27) + +/** SEC random curves over binary fields. + * + * This family comprises the following curves: + * sect163r1, sect233r1, sect283r1, sect409r1, sect571r1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECT_R1 ((psa_ecc_curve_t) 0x22) + +/** SEC additional random curves over binary fields. + * + * This family comprises the following curve: + * sect163r2. + * It is defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECT_R2 ((psa_ecc_curve_t) 0x2b) + +/** Brainpool P random curves. + * + * This family comprises the following curves: + * brainpoolP160r1, brainpoolP192r1, brainpoolP224r1, brainpoolP256r1, + * brainpoolP320r1, brainpoolP384r1, brainpoolP512r1. + * It is defined in RFC 5639. + */ +#define PSA_ECC_CURVE_BRAINPOOL_P_R1 ((psa_ecc_curve_t) 0x30) + +/** Curve25519 and Curve448. + * + * This family comprises the following Montgomery curves: + * - 255-bit: Bernstein et al., + * _Curve25519: new Diffie-Hellman speed records_, LNCS 3958, 2006. + * The algorithm #PSA_ALG_ECDH performs X25519 when used with this curve. + * - 448-bit: Hamburg, + * _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. + * The algorithm #PSA_ALG_ECDH performs X448 when used with this curve. + */ +#define PSA_ECC_CURVE_MONTGOMERY ((psa_ecc_curve_t) 0x41) + +#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x4200) +#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x7200) +#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x00ff) +/** Diffie-Hellman key pair. + * + * \param group A value of type ::psa_dh_group_t that identifies the + * Diffie-Hellman group to be used. + */ #define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ (PSA_KEY_TYPE_DH_KEY_PAIR_BASE | (group)) -/** Diffie-Hellman public key. */ +/** Diffie-Hellman public key. + * + * \param group A value of type ::psa_dh_group_t that identifies the + * Diffie-Hellman group to be used. + */ #define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ (PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE | (group)) @@ -524,17 +568,16 @@ ((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \ 0)) -/* The encoding of group identifiers is currently aligned with the - * TLS Supported Groups Registry (formerly known as the - * TLS EC Named Curve Registry) - * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 - * The values are defined by RFC 7919. */ -#define PSA_DH_GROUP_FFDHE2048 ((psa_dh_group_t) 0x0100) -#define PSA_DH_GROUP_FFDHE3072 ((psa_dh_group_t) 0x0101) -#define PSA_DH_GROUP_FFDHE4096 ((psa_dh_group_t) 0x0102) -#define PSA_DH_GROUP_FFDHE6144 ((psa_dh_group_t) 0x0103) -#define PSA_DH_GROUP_FFDHE8192 ((psa_dh_group_t) 0x0104) +/** Diffie-Hellman groups defined in RFC 7919 Appendix A. + * + * This family includes groups with the following key sizes (in bits): + * 2048, 3072, 4096, 6144, 8192. A given implementation may support + * all of these sizes or only a subset. + */ +#define PSA_DH_GROUP_RFC7919 ((psa_dh_group_t) 0x03) +#define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \ + (((type) >> 8) & 7) /** The block size of a block cipher. * * \param type A cipher key type (value of type #psa_key_type_t). @@ -554,14 +597,19 @@ * \warning This macro may evaluate its argument multiple times. */ #define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \ - ( \ - (type) == PSA_KEY_TYPE_AES ? 16 : \ - (type) == PSA_KEY_TYPE_DES ? 8 : \ - (type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \ - (type) == PSA_KEY_TYPE_ARC4 ? 1 : \ - 0) + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ + 1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \ + 0u) +/** Vendor-defined algorithm flag. + * + * Algorithms defined by this standard will never have the #PSA_ALG_VENDOR_FLAG + * bit set. Vendors who define additional algorithms must use an encoding with + * the #PSA_ALG_VENDOR_FLAG bit set and should respect the bitwise structure + * used by standard encodings whenever practical. + */ #define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) + #define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) #define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000) #define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000) @@ -572,6 +620,10 @@ #define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x20000000) #define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x30000000) +/** Whether an algorithm is vendor-defined. + * + * See also #PSA_ALG_VENDOR_FLAG. + */ #define PSA_ALG_IS_VENDOR_DEFINED(alg) \ (((alg) & PSA_ALG_VENDOR_FLAG) != 0) @@ -665,11 +717,15 @@ (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) #define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) - +/** MD2 */ #define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001) +/** MD4 */ #define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002) +/** MD5 */ #define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003) +/** PSA_ALG_RIPEMD160 */ #define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004) +/** SHA1 */ #define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005) /** SHA2-224 */ #define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008) @@ -705,17 +761,17 @@ * Then you may create and use a key as follows: * - Set the key usage field using #PSA_ALG_ANY_HASH, for example: * ``` - * psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN); // or VERIFY + * psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH); // or VERIFY * psa_set_key_algorithm(&attributes, PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH)); * ``` * - Import or generate key material. - * - Call psa_asymmetric_sign() or psa_asymmetric_verify(), passing + * - Call psa_sign_hash() or psa_verify_hash(), passing * an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each * call to sign or verify a message may use a different hash. * ``` - * psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...); - * psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...); - * psa_asymmetric_sign(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...); * ``` * * This value may not be used to build other algorithms that are @@ -1136,11 +1192,12 @@ */ #define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) #define PSA_ALG_IS_ECDSA(alg) \ - (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \ PSA_ALG_ECDSA_BASE) #define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ - (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) + (((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0) #define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) #define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ @@ -1579,7 +1636,7 @@ * * For a key pair, this concerns the private key. */ -#define PSA_KEY_USAGE_SIGN ((psa_key_usage_t)0x00000400) +#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00000400) /** Whether the key may be used to verify a message signature. * @@ -1589,7 +1646,7 @@ * * For a key pair, this concerns the public key. */ -#define PSA_KEY_USAGE_VERIFY ((psa_key_usage_t)0x00000800) +#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00000800) /** Whether the key may be used to derive other keys. */ @@ -1603,31 +1660,43 @@ /** A secret input for key derivation. * - * This must be a key of type #PSA_KEY_TYPE_DERIVE. + * This should be a key of type #PSA_KEY_TYPE_DERIVE + * (passed to psa_key_derivation_input_key()) + * or the shared secret resulting from a key agreement + * (obtained via psa_key_derivation_key_agreement()). + * + * The secret can also be a direct input (passed to + * key_derivation_input_bytes()). In this case, the derivation operation + * may not be used to derive keys: the operation will only allow + * psa_key_derivation_output_bytes(), not psa_key_derivation_output_key(). */ #define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t)0x0101) /** A label for key derivation. * - * This must be a direct input. + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. */ #define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t)0x0201) /** A salt for key derivation. * - * This must be a direct input. + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. */ #define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t)0x0202) /** An information string for key derivation. * - * This must be a direct input. + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. */ #define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t)0x0203) /** A seed for key derivation. * - * This must be a direct input. + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. */ #define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t)0x0204) diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h index f177d5d9..938abd07 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h @@ -255,6 +255,7 @@ typedef struct psa_tls12_prf_key_derivation_s struct psa_key_derivation_s { psa_algorithm_t alg; + unsigned int can_output_key : 1; size_t capacity; union { @@ -268,7 +269,7 @@ struct psa_key_derivation_s }; /* This only zeroes out the first byte in the union, the rest is unspecified. */ -#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, {0}} +#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, 0, {0}} static inline struct psa_key_derivation_s psa_key_derivation_operation_init( void ) { const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; @@ -329,14 +330,14 @@ typedef uint16_t psa_key_attributes_flag_t; typedef struct { psa_key_type_t type; + psa_key_bits_t bits; psa_key_lifetime_t lifetime; psa_key_id_t id; psa_key_policy_t policy; - psa_key_bits_t bits; psa_key_attributes_flag_t flags; } psa_core_key_attributes_t; -#define PSA_CORE_KEY_ATTRIBUTES_INIT {0, 0, PSA_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0, 0} +#define PSA_CORE_KEY_ATTRIBUTES_INIT {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, PSA_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0} struct psa_key_attributes_s { diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h index 900a72bd..86bf7a7b 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h @@ -66,6 +66,12 @@ */ void psa_unregister_all_se_drivers( void ); +/** Initialize all secure element drivers. + * + * Called from psa_crypto_init(). + */ +psa_status_t psa_init_all_se_drivers( void ); + /** A structure that describes a registered secure element driver. * * A secure element driver table entry contains a pointer to the diff --git a/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_SPE/crypto_struct_spe.h b/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_SPE/crypto_struct_spe.h index 1ecfbfb8..35a25f1f 100644 --- a/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_SPE/crypto_struct_spe.h +++ b/cores/arduino/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_SPE/crypto_struct_spe.h @@ -255,6 +255,7 @@ typedef struct psa_tls12_prf_key_derivation_s struct psa_key_derivation_s { psa_algorithm_t alg; + unsigned int can_output_key : 1; size_t capacity; union { @@ -268,7 +269,7 @@ struct psa_key_derivation_s }; /* This only zeroes out the first byte in the union, the rest is unspecified. */ -#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, {0}} +#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, 0, {0}} static inline struct psa_key_derivation_s psa_key_derivation_operation_init( void ) { const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; @@ -329,10 +330,10 @@ typedef uint16_t psa_key_attributes_flag_t; typedef struct { psa_key_type_t type; + psa_key_bits_t bits; psa_key_lifetime_t lifetime; psa_key_id_t id; psa_key_policy_t policy; - psa_key_bits_t bits; psa_key_attributes_flag_t flags; } psa_core_key_attributes_t; @@ -343,14 +344,14 @@ typedef struct typedef struct { psa_key_type_t type; + psa_key_bits_t bits; psa_key_lifetime_t lifetime; psa_app_key_id_t id; psa_key_policy_t policy; - psa_key_bits_t bits; - uint16_t flags; + psa_key_attributes_flag_t flags; } psa_client_core_key_attributes_t; -#define PSA_CORE_KEY_ATTRIBUTES_INIT {0, 0, PSA_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0, 0} +#define PSA_CORE_KEY_ATTRIBUTES_INIT {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, PSA_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0} struct psa_key_attributes_s { @@ -367,6 +368,7 @@ struct psa_key_attributes_s #else #define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, NULL, 0} #endif + typedef struct psa_client_key_attributes_s { psa_client_core_key_attributes_t core; diff --git a/cores/arduino/mbed/features/mbedtls/platform/inc/shared_rng.h b/cores/arduino/mbed/features/mbedtls/platform/inc/shared_rng.h new file mode 100644 index 00000000..76fc6073 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/inc/shared_rng.h @@ -0,0 +1,93 @@ +/* + * shared_rng.h + * + * Copyright (C) 2019-2020, Arm Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + */ + +#ifndef SHARED_RNG_H +#define SHARED_RNG_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_SSL_CONF_RNG) + +#define MBED_SHARED_RNG_NOT_INITIALIZED -1 /**< init_global_rng not called before global_rng */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "mbedtls/hmac_drbg.h" +#include "mbedtls/entropy.h" + +/** + * \brief Initializes hmac ready for rng + * + * \return 0 if successful, or + * MBEDTLS_ERR_MD_BAD_INPUT_DATA, or + * MBEDTLS_ERR_MD_ALLOC_FAILED, or + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED. + */ +int init_global_rng(); + +/** + * \brief Global HMAC_DRBG generate random + * + * \note Automatically reseeds if reseed_counter is reached or PR is enabled. + * \note init_global_rng function must be called + * before calling this function! + * + * \param ctx DRBG context + * \param dst Buffer to fill + * \param len Length of the buffer + * + * \return 0 if successful, or + * MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED, or + * MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG or + * MBED_SHARED_RNG_NOT_INITIALIZED + */ +int global_rng( void *ctx, unsigned char *dst, size_t len ); + +/** + * \brief Free allocated resources + */ +void free_global_rng(); + +/** + * \brief Getter function for global hmac context + * + * \return global hmac context + */ +mbedtls_hmac_drbg_context *get_global_hmac_drbg(); + +/** + * \brief Getter function for global entropy context + * + * \return global entropy context + */ +mbedtls_entropy_context *get_global_entropy(); + +#ifdef __cplusplus +} +#endif + +#endif // MBEDTLS_SSL_CONF_RNG +#endif // SHARED_RNG_H diff --git a/cores/arduino/mbed/features/nanostack/coap-service/coap-service/coap_service_api.h b/cores/arduino/mbed/features/nanostack/coap-service/coap-service/coap_service_api.h index 99fcf03e..edacd971 100644 --- a/cores/arduino/mbed/features/nanostack/coap-service/coap-service/coap_service_api.h +++ b/cores/arduino/mbed/features/nanostack/coap-service/coap-service/coap_service_api.h @@ -184,7 +184,7 @@ extern void coap_service_close_secure_connection(int8_t service_id, uint8_t dest * \param destination_addr_ptr Receiver IPv6 address. * \param port Receiver port number. * \param *data_ptr Pointer to the data. - * \param data_len Lenght of the data. + * \param data_len Length of the data. * * \return 0 for success / -1 for failure */ @@ -199,7 +199,7 @@ typedef int coap_service_virtual_socket_send_cb(int8_t service_id, uint8_t desti * \param source_addr_ptr Receiver IPv6 address. * \param port Receiver port number. * \param *data_ptr Pointer to the data - * \param data_len Lenght of the data + * \param data_len Length of the data * * \return 0 for success / -1 for failure */ @@ -257,7 +257,7 @@ extern int8_t coap_service_unregister_uri(int8_t service_id, const char *uri); * \param *uri Uri address. * \param cont_type Content type can be found from sn_coap_header. * \param payload_ptr Pointer to message content. - * \param payload_len Lenght of the message. + * \param payload_len Length of the message. * \param *request_response_cb Callback to inform result of the request. * * \return msg_id Id number of the current message. @@ -276,7 +276,7 @@ extern uint16_t coap_service_request_send(int8_t service_id, uint8_t options, co * \param message_code Message code can be found from sn_coap_header. * \param content_type Content type can be found from sn_coap_header. * \param payload_ptr Pointer to message content. - * \param payload_len Lenght of the message. + * \param payload_len Length of the message. * * \return -1 For failure *- 0 For success @@ -295,7 +295,7 @@ extern int8_t coap_service_response_send(int8_t service_id, uint8_t options, sn_ * \param message_code Message code can be found from sn_coap_header. * \param content_type Content type can be found from sn_coap_header. * \param payload_ptr Pointer to message content. - * \param payload_len Lenght of the message. + * \param payload_len Length of the message. * * \return -1 For failure *- 0 For success diff --git a/cores/arduino/mbed/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h b/cores/arduino/mbed/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h index 2ad72cb9..1910f9c5 100644 --- a/cores/arduino/mbed/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h +++ b/cores/arduino/mbed/features/nanostack/coap-service/test/coap-service/unittest/stub/mbedtls_stub.h @@ -24,11 +24,13 @@ #include "mbedtls/platform.h" #include "mbedtls/ssl.h" #include "mbedtls/ctr_drbg.h" +#include "mbedtls/hmac_drbg.h" #include "mbedtls/x509_crt.h" #include "mbedtls/sha256.h" #include "mbedtls/entropy.h" #include "mbedtls/pk.h" #include "mbedtls/platform.h" +#include "mbedtls/md.h" #define HANDSHAKE_FINISHED_VALUE 8888 diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h index 77ab9a55..9a782bff 100644 --- a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h @@ -25,9 +25,15 @@ class Nanostack::Interface : public OnboardNetworkStack::Interface, private mbed::NonCopyable { public: + virtual nsapi_error_t get_ip_address(SocketAddress *address); + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_ip_address(char *buf, nsapi_size_t buflen); virtual char *get_mac_address(char *buf, nsapi_size_t buflen); + virtual nsapi_error_t get_netmask(SocketAddress *address); + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_netmask(char *buf, nsapi_size_t buflen); + virtual nsapi_error_t get_gateway(SocketAddress *address); + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_gateway(char *buf, nsapi_size_t buflen); virtual void attach(mbed::Callback status_cb); virtual nsapi_connection_status_t get_connection_status() const; @@ -99,9 +105,10 @@ class InterfaceNanostack : public virtual NetworkInterface { */ virtual nsapi_error_t disconnect(); - /** Get the internally stored IP address - /return IP address of the interface or null if not yet connected - */ + /** @copydoc NetworkInterface::get_ip_address */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address(); /** Get the internally stored MAC address @@ -161,7 +168,7 @@ class InterfaceNanostack : public virtual NetworkInterface { Nanostack::Interface *_interface; - char ip_addr_str[40]; + SocketAddress ip_addr; char mac_addr_str[24]; mbed::Callback _connection_status_cb; bool _blocking; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_api.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_api.h index 84c0c17c..be5a90c1 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_api.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_api.h @@ -122,9 +122,10 @@ typedef void fhss_data_tx_done(const fhss_api_t *api, bool waiting_ack, bool tx_ * @param api FHSS instance. * @param handle Handle of the data request. * @param frame_type Frame type of packet (Frames types are defined by FHSS api). + * @param channel Channel wanted to black list temporarily. * @return true if frame has to be queued for retransmission, false otherwise. */ -typedef bool fhss_data_tx_fail(const fhss_api_t *api, uint8_t handle, int frame_type); +typedef bool fhss_data_tx_fail(const fhss_api_t *api, uint8_t handle, int frame_type, uint8_t channel); /** * @brief Change synchronization state. diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_config.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_config.h index a388f564..9a286128 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_config.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_config.h @@ -116,9 +116,12 @@ typedef struct fhss_ws_configuration { /** Broadcast fixed channel */ uint8_t broadcast_fixed_channel; - /** Channel mask. */ + /** Channel mask. Wi-SUN will use this for broadcast */ uint32_t channel_mask[8]; + /** Wi-SUN specific unicast channel mask */ + uint32_t unicast_channel_mask[8]; + /** Vendor defined channel function. */ fhss_vendor_defined_cf *vendor_defined_cf; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_test_api.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_test_api.h new file mode 100644 index 00000000..270c5a27 --- /dev/null +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_test_api.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ + +/** + * \file fhss_test_api.h + * \brief + */ + +#ifndef FHSS_TEST_API_H +#define FHSS_TEST_API_H + + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Set optimal packet length + * + * \param fhss_api FHSS instance. + * \param packet_length Optimal packet length + * + * \return 0 Success + * \return -1 Failure + */ +int8_t fhss_set_optimal_packet_length(const fhss_api_t *fhss_api, uint16_t packet_length); + +#ifdef __cplusplus +} +#endif + +#endif // FHSS_TEST_API_H diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_ws_extension.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_ws_extension.h index 1d8e2998..ac2e1b44 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_ws_extension.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/nanostack/fhss_ws_extension.h @@ -30,6 +30,14 @@ extern "C" { #endif +/** + * @brief ws_channel_mask_t WS neighbour supported channel mask + */ +typedef struct ws_channel_mask { + uint16_t channel_count; /** DIO interval min; DEFAULT_DIO_INTERVAL_MIN; 2^value in milliseconds; range 1-255; default */ + uint8_t dio_interval_doublings; /**> DIO interval doublings; DEFAULT_DIO_INTERVAL_DOUBLINGS; range 1-8; default */ + uint8_t dio_redundancy_constant; /**> DIO redundancy constant; DEFAULT_DIO_REDUNDANCY_CONSTANT; range 0-10; default */ + uint16_t dag_max_rank_increase; + uint16_t min_hop_rank_increase; + uint16_t rpl_parent_candidate_max; /**< RPL parent candidate maximum value; default 5 */ + uint16_t rpl_selected_parent_max; /**< RPL selected parent maximum value; default 2 */ +} ws_rpl_cfg_t; + +/** + * \brief Struct ws_fhss_cfg_t Frequency hopping configuration + */ +typedef struct ws_fhss_cfg_s { + uint8_t fhss_uc_dwell_interval; /**< FHSS unicast dwell interval; range 15-250 milliseconds; default 255 */ + uint8_t fhss_bc_dwell_interval; /**< FHSS broadcast dwell interval; range 15-250 milliseconds; default 255 */ + uint32_t fhss_bc_interval; /**< FHSS broadcast interval; duration between broadcast dwell intervals. range: 0-16777216 milliseconds; default 1020 */ + uint8_t fhss_uc_channel_function; /**< FHSS WS unicast channel function; default 2 direct hash channel function */ + uint8_t fhss_bc_channel_function; /**< FHSS WS broadcast channel function; default 2 direct hash channel function */ + uint16_t fhss_uc_fixed_channel; /**< FHSS unicast fixed channel; default 0xffff */ + uint16_t fhss_bc_fixed_channel; /**< FHSS broadcast fixed channel; default 0xffff */ + uint32_t fhss_channel_mask[8]; /**< FHSS channel mask; default; 0xffffffff * 8 */ +} ws_fhss_cfg_t; + +/** + * \brief Struct ws_mpl_cfg_t Multicast configuration + */ +typedef struct ws_mpl_cfg_s { + uint16_t mpl_trickle_imin; /**< MPL trickle parameters Imin; DATA_MESSAGE_IMIN; seconds; range 1-255; default 10 */ + uint16_t mpl_trickle_imax; /**< MPL trickle parameters Imax; DATA_MESSAGE_IMAX; seconds; range (2-2^8)*Imin‬; default 10 */ + uint8_t mpl_trickle_k; /**< MPL trickle parameters k; default 8 */ + uint8_t mpl_trickle_timer_exp; /**< MPL trickle parameters timer expirations; default 3 */ + uint16_t seed_set_entry_lifetime; /**< MPL minimum seed set lifetime; seconds; default 960 */ +} ws_mpl_cfg_t; + +/** + * \brief Struct ws_sec_timer_cfg_t Security timers configuration + */ +typedef struct ws_sec_timer_cfg_s { + uint32_t gtk_expire_offset; /**< GTK lifetime; GTK_EXPIRE_OFFSET; minutes; default 43200 */ + uint32_t pmk_lifetime; /**< PMK lifetime; minutes; default 172800 */ + uint32_t ptk_lifetime; /**< PTK lifetime; minutes; default 86400 */ + uint16_t gtk_new_act_time; /**< GTK_NEW_ACTIVATION_TIME (1/X of expire offset); default 720 */ + uint16_t revocat_lifetime_reduct; /**< REVOCATION_LIFETIME_REDUCTION (reduction of lifetime); default 30 */ + uint16_t gtk_request_imin; /**< GTK_REQUEST_IMIN; minutes; range 1-255; default 4 */ + uint16_t gtk_request_imax; /**< GTK_REQUEST_IMAX; minutes; range (2-2^8)*Imin; default 64 */ + uint16_t gtk_max_mismatch; /**< GTK_MAX_MISMATCH; minutes; default 64 */ + uint8_t gtk_new_install_req; /**< GTK_NEW_INSTALL_REQUIRED; percent of GTK lifetime; range 1-100; default 80 */ +} ws_sec_timer_cfg_t; + +/** + * \brief Struct ws_sec_prot_cfg_t Security protocols configuration + */ +typedef struct ws_sec_prot_cfg_s { + uint16_t sec_prot_retry_timeout; /**< Security protocol retry timeout; seconds; default 330 */ + uint16_t sec_prot_trickle_imin; /**< Security protocol trickle parameters Imin; seconds; default 30 */ + uint16_t sec_prot_trickle_imax; /**< Security protocol trickle parameters Imax; seconds; default 90 */ + uint8_t sec_prot_trickle_timer_exp; /**< Security protocol trickle timer expirations; default 2 */ + uint16_t sec_max_ongoing_authentication; /**< Pae authenticator max Accept ongoing authentication count */ +} ws_sec_prot_cfg_t; + +/** + * \brief Struct ws_nw_size_cfg_t Network size configuration + */ +typedef struct ws_cfg_s { + ws_gen_cfg_t gen; /**< General configuration */ + ws_phy_cfg_t phy; /**< Physical layer configuration */ + ws_timing_cfg_t timing; /**< Timing configuration */ + ws_rpl_cfg_t rpl; /**< RPL configuration */ + ws_fhss_cfg_t fhss; /**< Frequency hopping configuration */ + ws_mpl_cfg_t mpl; /**< Multicast configuration */ + ws_sec_timer_cfg_t sec_timer; /**< Security timers configuration */ + ws_sec_prot_cfg_t sec_prot; /**< Security protocols configuration */ +} ws_cfg_t; + +/** Configuration setting errors. */ +#define CFG_SETTINGS_PARAMETER_ERROR -1 /**< Function parameter error */ +#define CFG_SETTINGS_OTHER_ERROR -2 /**< Other error */ +#define CFG_SETTINGS_ERROR_NW_SIZE_CONF -10 /**< Network size configuration error */ +#define CFG_SETTINGS_ERROR_GEN_CONF -11 /**< General configuration error */ +#define CFG_SETTINGS_ERROR_PHY_CONF -12 /**< Physical layer configuration error */ +#define CFG_SETTINGS_ERROR_TIMING_CONF -13 /**< Timing configuration error */ +#define CFG_SETTINGS_ERROR_RPL_CONF -14 /**< RPL configuration error */ +#define CFG_SETTINGS_ERROR_FHSS_CONF -15 /**< Frequency hopping configuration error */ +#define CFG_SETTINGS_ERROR_MPL_CONF -16 /**< Multicast configuration error */ +#define CFG_SETTINGS_ERROR_SEC_TIMER_CONF -17 /**< Security timers configuration error */ +#define CFG_SETTINGS_ERROR_SEC_PROT_CONF -18 /**< Security protocols configuration error */ + +int8_t ws_cfg_settings_init(void); +int8_t ws_cfg_settings_default_set(void); +int8_t ws_cfg_settings_interface_set(protocol_interface_info_entry_t *cur); +int8_t ws_cfg_network_size_configure(protocol_interface_info_entry_t *cur, uint16_t network_size); + +int8_t ws_cfg_network_size_get(ws_gen_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_network_size_validate(ws_gen_cfg_t *cfg, ws_gen_cfg_t *new_cfg); +int8_t ws_cfg_network_size_set(protocol_interface_info_entry_t *cur, ws_gen_cfg_t *cfg, ws_gen_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_gen_get(ws_gen_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_gen_validate(ws_gen_cfg_t *cfg, ws_gen_cfg_t *new_cfg); +int8_t ws_cfg_gen_set(protocol_interface_info_entry_t *cur, ws_gen_cfg_t *cfg, ws_gen_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_phy_get(ws_phy_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_phy_validate(ws_phy_cfg_t *cfg, ws_phy_cfg_t *new_cfg); +int8_t ws_cfg_phy_set(protocol_interface_info_entry_t *cur, ws_phy_cfg_t *cfg, ws_phy_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_timing_get(ws_timing_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_timing_validate(ws_timing_cfg_t *cfg, ws_timing_cfg_t *new_cfg); +int8_t ws_cfg_timing_set(protocol_interface_info_entry_t *cur, ws_timing_cfg_t *cfg, ws_timing_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_rpl_get(ws_rpl_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_rpl_validate(ws_rpl_cfg_t *cfg, ws_rpl_cfg_t *new_cfg); +int8_t ws_cfg_rpl_set(protocol_interface_info_entry_t *cur, ws_rpl_cfg_t *cfg, ws_rpl_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_mpl_get(ws_mpl_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_mpl_validate(ws_mpl_cfg_t *cfg, ws_mpl_cfg_t *new_cfg); +int8_t ws_cfg_mpl_set(protocol_interface_info_entry_t *cur, ws_mpl_cfg_t *cfg, ws_mpl_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_fhss_get(ws_fhss_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_fhss_validate(ws_fhss_cfg_t *cfg, ws_fhss_cfg_t *new_cfg); +int8_t ws_cfg_fhss_set(protocol_interface_info_entry_t *cur, ws_fhss_cfg_t *cfg, ws_fhss_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_sec_timer_get(ws_sec_timer_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_sec_timer_validate(ws_sec_timer_cfg_t *cfg, ws_sec_timer_cfg_t *new_cfg); +int8_t ws_cfg_sec_timer_set(protocol_interface_info_entry_t *cur, ws_sec_timer_cfg_t *cfg, ws_sec_timer_cfg_t *new_cfg, uint8_t *flags); + +int8_t ws_cfg_sec_prot_get(ws_sec_prot_cfg_t *cfg, uint8_t *flags); +int8_t ws_cfg_sec_prot_validate(ws_sec_prot_cfg_t *cfg, ws_sec_prot_cfg_t *new_cfg); +int8_t ws_cfg_sec_prot_set(protocol_interface_info_entry_t *cur, ws_sec_prot_cfg_t *cfg, ws_sec_prot_cfg_t *new_cfg, uint8_t *flags); + +#endif // WS_CFG_STORAGE_H_ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common.h index 6a89708f..3aa154c0 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common.h @@ -25,6 +25,7 @@ #include "fhss_config.h" #include "net_fhss.h" #include "NWK_INTERFACE/Include/protocol.h" +#include "6LoWPAN/ws/ws_config.h" #include "6LoWPAN/ws/ws_common_defines.h" #include "6LoWPAN/ws/ws_neighbor_class.h" #include "Service_Libs/mac_neighbor_table/mac_neighbor_table.h" @@ -34,18 +35,25 @@ extern uint16_t test_max_child_count_override; struct ws_pan_information_s; struct ws_neighbor_class_s; +struct ws_excluded_channel_data_s; +struct ws_cfg_s; typedef struct parent_info_s { - uint16_t pan_id; /**< PAN ID */ - uint8_t addr[8]; /**< address */ - uint8_t link_quality; /**< LQI value measured during reception of the MPDU */ - int8_t signal_dbm; /**< This extension for normal IEEE 802.15.4 Data indication */ + uint16_t pan_id; /**< PAN ID */ + uint8_t addr[8]; /**< address */ + uint8_t link_quality; /**< LQI value measured during reception of the MPDU */ + int8_t signal_dbm; /**< This extension for normal IEEE 802.15.4 Data indication */ ws_pan_information_t pan_information; - ws_utt_ie_t ws_utt; - ws_us_ie_t ws_us; - uint32_t timestamp; /**< Timestamp when packet was received */ + ws_utt_ie_t ws_utt; + ws_us_ie_t ws_us; + uint32_t timestamp; /**< Timestamp when packet was received */ + uint32_t age; /**< Age of entry in 100ms ticks */ + uint8_t excluded_channel_data[32]; //Channel mask Max length and it accept 8 different range + ns_list_link_t link; } parent_info_t; +typedef NS_LIST_HEAD(parent_info_t, link) parent_info_list_t; + typedef struct ws_nud_table_entry { void *neighbor_info; uint16_t timer; /*!< Timer which resolution is 100ms*/ @@ -55,41 +63,45 @@ typedef struct ws_nud_table_entry { ns_list_link_t link; } ws_nud_table_entry_t; +#define NO_PENDING_PROCESS 0 +#define PENDING_KEY_INDEX_ADVERTISMENT 1 +#define PENDING_KEY_INDEX_ACTIVATE 2 + +typedef struct { + unsigned state: 2; + uint8_t index; +} ws_pending_key_index_t; + typedef NS_LIST_HEAD(ws_nud_table_entry_t, link) ws_nud_table_list_t; typedef struct ws_info_s { - char network_name[33]; // Network name max 32 octets + terminating 0. - uint16_t network_pan_id; - trickle_t trickle_pan_config_solicit; trickle_t trickle_pan_config; trickle_t trickle_pan_advertisement_solicit; trickle_t trickle_pan_advertisement; trickle_params_t trickle_params_pan_discovery; - uint8_t network_size_config; // configuration for network size selection of application. uint8_t rpl_state; // state from rpl_event_t uint8_t pas_requests; // Amount of PAN solicits sent - parent_info_t parent_info; - uint32_t pan_version_timer; /**< border router version udate timeout */ - uint32_t pan_version_timeout_timer; /**< routers will fallback to previous state after this */ + parent_info_t parent_info[WS_PARENT_LIST_SIZE]; + parent_info_list_t parent_list_free; + parent_info_list_t parent_list_reserved; + uint16_t aro_registration_timer; /**< Aro registration timer */ + uint16_t rpl_version_timer; /**< RPL version update timeout */ + uint32_t pan_timeout_timer; /**< routers will fallback to previous state after this */ + uint32_t pan_config_sol_max_timeout; uint8_t gtkhash[32]; + uint16_t network_pan_id; bool configuration_learned: 1; bool trickle_pas_running: 1; bool trickle_pa_running: 1; bool trickle_pcs_running: 1; bool trickle_pc_running: 1; - // default fhss parameters for this device - uint8_t fhss_uc_dwell_interval; - uint8_t fhss_bc_dwell_interval; - uint32_t fhss_bc_interval; - uint8_t fhss_uc_channel_function; - uint8_t fhss_bc_channel_function; - uint16_t fhss_uc_fixed_channel; - uint16_t fhss_bc_fixed_channel; - uint32_t fhss_channel_mask[8]; + uint16_t trickle_pc_consistency_block_period; + ws_pending_key_index_t pending_key_index_info; ws_nud_table_entry_t nud_table_entrys[ACTIVE_NUD_PROCESS_MAX]; ws_nud_table_list_t active_nud_process; ws_nud_table_list_t free_nud_entries; + struct ws_cfg_s *cfg; /**< Wi-SUN configuration */ struct ws_pan_information_s pan_information; ws_hopping_schedule_t hopping_schdule; struct ws_statistics *stored_stats_ptr; @@ -102,14 +114,18 @@ typedef struct ws_info_s { int8_t ws_generate_channel_list(uint32_t *channel_mask, uint16_t number_of_channels, uint8_t regulatory_domain); -int8_t ws_common_regulatory_domain_config(protocol_interface_info_entry_t *cur); +uint32_t ws_decode_channel_spacing(uint8_t channel_spacing); + +uint32_t ws_get_datarate_using_operating_mode(uint8_t operating_mode); + +phy_modulation_index_e ws_get_modulation_index_using_operating_mode(uint8_t operating_mode); + +int8_t ws_common_regulatory_domain_config(protocol_interface_info_entry_t *cur, ws_hopping_schedule_t *hopping_schdule); uint16_t ws_common_channel_number_calc(uint8_t regulatory_domain, uint8_t operating_class); int8_t ws_common_allocate_and_init(protocol_interface_info_entry_t *cur); -void ws_common_network_size_configure(protocol_interface_info_entry_t *cur, uint16_t network_size); - void ws_common_seconds_timer(protocol_interface_info_entry_t *cur, uint32_t seconds); void ws_common_fast_timer(protocol_interface_info_entry_t *cur, uint16_t ticks); @@ -120,16 +136,17 @@ void ws_common_aro_failure(protocol_interface_info_entry_t *cur, const uint8_t * void ws_common_neighbor_remove(protocol_interface_info_entry_t *cur, const uint8_t *ll_address); -bool ws_common_allow_child_registration(protocol_interface_info_entry_t *cur, const uint8_t *eui64); - -void ws_common_etx_validate(protocol_interface_info_entry_t *interface, mac_neighbor_table_entry_t *neigh); +uint8_t ws_common_allow_child_registration(protocol_interface_info_entry_t *cur, const uint8_t *eui64); bool ws_common_negative_aro_mark(protocol_interface_info_entry_t *interface, const uint8_t *eui64); +uint32_t ws_common_version_timeout_get(uint8_t config); -uint32_t ws_common_version_lifetime_get(uint8_t config); +uint32_t ws_common_latency_estimate_get(protocol_interface_info_entry_t *cur); -uint32_t ws_common_version_timeout_get(uint8_t config); +uint32_t ws_common_datarate_get(protocol_interface_info_entry_t *cur); + +uint32_t ws_common_network_size_estimate_get(protocol_interface_info_entry_t *cur); #define ws_info(cur) ((cur)->ws_info) #else @@ -139,9 +156,11 @@ uint32_t ws_common_version_timeout_get(uint8_t config); #define ws_common_aro_failure(cur, ll_address) #define ws_common_neighbor_remove(cur, ll_address) #define ws_common_fast_timer(cur, ticks) ((void) 0) -#define ws_common_allow_child_registration(cur, eui64) (false) -#define ws_common_etx_validate(interface, neigh) ((void) 0) +#define ws_common_allow_child_registration(cur, eui64) (2) #define ws_common_negative_aro_mark(interface, eui64)(false) +#define ws_common_latency_estimate_get(cur) 0 +#define ws_common_datarate_get(cur) 0 +#define ws_common_network_size_estimate_get(cur) 0 #endif //HAVE_WS #endif //WS_COMMON_H_ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common_defines.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common_defines.h index 4be2964e..d2797f8e 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common_defines.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_common_defines.h @@ -51,6 +51,12 @@ #define WS_FT_ACK 5 /**< Enhanced ACK */ #define WS_FT_EAPOL 6 /**< EAPOL message inside MPX */ +/* WS exluded channel Control */ +#define WS_EXC_CHAN_CTRL_NONE 0 /**< No excluded channels */ +#define WS_EXC_CHAN_CTRL_RANGE 1 /**< Excluded channels are in 1 or multiple channel range */ +#define WS_EXC_CHAN_CTRL_BITMASK 2 /**< Excluded channels are marked to bitmask which length based on configured channels */ + +#define WS_EXCLUDED_MAX_RANGE_TO_SEND 3 /** * @brief ws_pan_information_t PAN information @@ -64,6 +70,26 @@ typedef struct ws_pan_information_s { unsigned version: 3; /**< Pan version support. */ } ws_pan_information_t; +/** + * @brief ws_excluded_channel_range_data_t Excludd Chanel range information + */ +typedef struct ws_excluded_channel_range_data_s { + uint16_t range_start; + uint16_t range_end; +} ws_excluded_channel_range_data_t; + +/** + * @brief ws_excluded_channel_data_t Excludd Chanel information + */ +typedef struct ws_excluded_channel_data_s { + unsigned excuded_channel_ctrl: 2; + unsigned excluded_range_length: 3; + ws_excluded_channel_range_data_t exluded_range[WS_EXCLUDED_MAX_RANGE_TO_SEND]; + uint16_t excluded_channel_count; + uint8_t channel_mask_bytes_inline; + uint32_t channel_mask[8]; +} ws_excluded_channel_data_t; + /** * @brief ws_hopping_schedule_t Chanel hopping schedule information */ @@ -84,8 +110,8 @@ typedef struct ws_hopping_schedule_s { uint16_t bc_fixed_channel; uint16_t fhss_bsi; uint32_t fhss_broadcast_interval; - uint32_t channel_mask[8]; uint_fast24_t ch0_freq; // Default should be derived from regulatory domain + ws_excluded_channel_data_t excluded_channels; } ws_hopping_schedule_t; /** @@ -137,6 +163,22 @@ typedef struct ws_channel_function_three { uint8_t *channel_list; } ws_channel_function_three_t; +/** + * @brief ws_excluded_channel_range_t WS excluded channel range + */ +typedef struct ws_excluded_channel_range { + uint8_t number_of_range; + uint8_t *range_start; +} ws_excluded_channel_range_t; + +/** + * @brief ws_excluded_channel_mask_t WS excluded channel mask + */ +typedef struct ws_excluded_channel_mask { + uint8_t *channel_mask; + uint8_t mask_len_inline; +} ws_excluded_channel_mask_t; + /** * @brief ws_us_ie_t WS US-IE read */ @@ -155,6 +197,10 @@ typedef struct ws_us_ie { ws_channel_function_zero_t zero; ws_channel_function_three_t three; } function; + union { + ws_excluded_channel_range_t range; + ws_excluded_channel_mask_t mask; + } excluded_channels; } ws_us_ie_t; /** @@ -186,10 +232,12 @@ typedef struct ws_bs_ie { #define WS_FAN_VERSION_1_0 1 #define WS_NEIGHBOR_LINK_TIMEOUT 2200 -#define WS_NEIGHBOR_TEMPORARY_LINK_MIN_TIMEOUT 120 +#define WS_NEIGHBOR_TEMPORARY_LINK_MIN_TIMEOUT_LARGE 520 +#define WS_NEIGHBOR_TEMPORARY_LINK_MIN_TIMEOUT_SMALL 260 #define WS_NEIGHBOR_NUD_TIMEOUT WS_NEIGHBOR_LINK_TIMEOUT / 2 -#define WS_NEIGBOR_ETX_SAMPLE_MAX 3 +#define WS_NEIGHBOR_ETX_SAMPLE_MAX 3 +#define WS_NEIGHBOR_FIRST_ETX_SAMPLE_MIN_COUNT 3 //This can't be bigger than WS_NEIGHBOR_ETX_SAMPLE_MAX #define WS_NEIGHBOUR_MAX_CANDIDATE_PROBE 5 #define WS_PROBE_INIT_BASE_SECONDS 8 @@ -203,9 +251,16 @@ typedef struct ws_bs_ie { #define WS_ETX_MIN_SAMPLE_COUNT 4 #define WS_ETX_MAX_UPDATE 1024 +#define WS_ETX_MAX 1024 #define WS_ETX_MIN_WAIT_TIME 60 +#define WS_RPL_PARENT_CANDIDATE_MAX 5 +#define WS_RPL_SELECTED_PARENT_MAX 2 + +#define WS_CERTIFICATE_RPL_PARENT_CANDIDATE_MAX 8 +#define WS_CERTIFICATE_RPL_SELECTED_PARENT_MAX 4 + /** * Wi-sun spesific non-preferred prefix policy label */ @@ -240,6 +295,11 @@ typedef struct ws_bs_ie { */ #define WS_TACK_MAX_MS 5 +/* + * Config new version consistent filter period in 100ms periods + */ +#define WS_CONFIG_CONSISTENT_FILTER_PERIOD 100 + // With FHSS we need to check CCA twice on TX channel #define WS_NUMBER_OF_CSMA_PERIODS 2 // Interval between two CCA checks diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_config.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_config.h index ee05b7fb..b2a9bd18 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_config.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_config.h @@ -27,21 +27,44 @@ * */ -#define WS_RPL_DIO_IMIN 15 -#define WS_RPL_DIO_DOUBLING 2 -#define WS_RPL_DIO_REDUNDANCY 0 +#define WS_RPL_DIO_IMIN_SMALL 15 +#define WS_RPL_DIO_DOUBLING_SMALL 2 +#define WS_RPL_DIO_REDUNDANCY_SMALL 0 +#define WS_RPL_DIO_IMIN_MEDIUM 15 +#define WS_RPL_DIO_DOUBLING_MEDIUM 5 +#define WS_RPL_DIO_REDUNDANCY_MEDIUM 10 + +#define WS_RPL_DIO_IMIN_LARGE 19 +#define WS_RPL_DIO_DOUBLING_LARGE 1 +#define WS_RPL_DIO_REDUNDANCY_LARGE 10 // May need some tuning still + +#define WS_RPL_DIO_IMIN_AUTOMATIC 14 +#define WS_RPL_DIO_DOUBLING_AUTOMATIC 3 +#define WS_RPL_DIO_REDUNDANCY_AUTOMATIC 0 + +#define WS_RPL_MIN_HOP_RANK_INCREASE 196 +#define WS_RPL_MAX_HOP_RANK_INCREASE 2048 + +#define WS_CERTIFICATE_RPL_MIN_HOP_RANK_INCREASE 128 +#define WS_CERTIFICATE_RPL_MAX_HOP_RANK_INCREASE 0 + +/* + * RPL DAO timeout maximum value. This will force DAO timeout to happen before this time + */ +#define WS_RPL_DAO_MAX_TIMOUT (3600*2) /* Border router version change interval * - * Minimum interval at which a Border Router shall increment its PAN Version value. + * Amount of version increases border router makes during PAN_TIMEOUT time */ -#define PAN_VERSION_SMALL_NETWORK_LIFETIME 4*60 -#define PAN_VERSION_MEDIUM_NETWORK_LIFETIME 15*60 -#define PAN_VERSION_LARGE_NETWORK_LIFETIME 30*60 //30min +#define PAN_VERSION_CHANGE_INTERVAL 3 -#define RPL_VERSION_LIFETIME 5*3600 +// RPL version number update intervall +// after restart version numbers are increased faster and then slowed down when network is stable +#define RPL_VERSION_LIFETIME 12*3600 +#define RPL_VERSION_LIFETIME_RESTART 3600 /* Border router connection lost timeout * @@ -93,10 +116,11 @@ extern uint8_t DEVICE_MIN_SENS; * IMIN = 10 seconds, IMAX = 3 doublings */ -#define DATA_MESSAGE_IMIN (10 * 1000) +#define DATA_MESSAGE_IMIN 10 #define DATA_MESSAGE_TIMER_EXPIRATIONS 3 -#define DATA_MESSAGE_IMAX (DATA_MESSAGE_IMIN) -#define MPL_SEED_SET_ENTRY_TIMEOUT (DATA_MESSAGE_IMAX * 24 * 4 / 1000) // 10 seconds per hop making this 240 seconds +#define DATA_MESSAGE_IMAX 80 +#define DATA_MESSAGE_K 8 +#define MPL_SEED_SET_ENTRY_TIMEOUT (DATA_MESSAGE_IMAX * 24 * 4) // 10 seconds per hop making this 240 seconds /* DHCP client timeout configuration values * @@ -130,6 +154,7 @@ extern uint8_t DEVICE_MIN_SENS; * MAC frame counter NVM storing configuration */ #define FRAME_COUNTER_STORE_INTERVAL 60 // Time interval (on seconds) between frame counter store operations +#define FRAME_COUNTER_STORE_TRIGGER 5 // Delay (on seconds) before storing, when storing of frame counters is triggered #define FRAME_COUNTER_INCREMENT 1000 // How much frame counter is incremented on start up #define FRAME_COUNTER_STORE_THRESHOLD 800 // How much frame counter must increment before it is stored @@ -139,6 +164,58 @@ extern uint8_t DEVICE_MIN_SENS; */ #define WS_MAX_DAO_RETRIES 3 // With 40s, 80s, 160s, 320s, 640s #define WS_MAX_DAO_INITIAL_TIMEOUT 400 // With 40s initial value exponentially increasing -#define WS_MIN_DIO_MULTICAST_CONFIG_ADVERTISMENT_COUNT 10 // Define 10 multicast advertisment when learn config or learn config update +#define WS_MIN_DIO_MULTICAST_CONFIG_ADVERTISMENT_COUNT 0xff // Advertisment config at every MC DIO +#define WS_MAX_PARENT_SET_COUNT 2 // maximum amount of parents selected by node + +#define WS_NODE_RPL_SOFT_MEM_LIMIT 4*1024 // Limit when RPL start purge unused data +#define WS_NODE_RPL_HARD_MEM_LIMIT 6*1024 // Limit when RPL memory allocation start limit allocation + +/* + * Candidate parent list parameters + */ + +#define WS_PARENT_LIST_SIZE 10 +#define WS_PARENT_LIST_MAX_AGE 3600*10 // 1 hour in 100ms ticks +#define WS_PARENT_LIST_MAX_PAN_IN_DISCOVERY 5 // During discovery state how many neighbours per pan +#define WS_PARENT_LIST_MAX_PAN_IN_ACTIVE 2 // During active state two nodes per pan is allowed + +/* + * Modifications for base specification. + * + * ERRATA changes after 1.0 specification release. + */ +#define WISUN_1_0_ERRATA_FIX + +/* + * Security protocol message retry configuration parameters + */ +#define SEC_PROT_SMALL_IMIN 30 // Retries done in 30 seconds +#define SEC_PROT_SMALL_IMAX 90 // Largest value 90 seconds +#define SEC_PROT_RETRY_TIMEOUT_SMALL 330 // Retry timeout for small network additional 30 seconds for authenticator delay + +#define SEC_PROT_LARGE_IMIN 60 // Retries done in 60 seconds +#define SEC_PROT_LARGE_IMAX 240 // Largest value 240 seconds +#define SEC_PROT_RETRY_TIMEOUT_LARGE 750 // Retry timeout for large network additional 30 seconds for authenticator delay + +#define SEC_PROT_TIMER_EXPIRATIONS 2 // Number of retries + +// Maximum number of simultaneous EAP-TLS negotiations +#define MAX_SIMULTANEOUS_EAP_TLS_NEGOTIATIONS_SMALL 3 +#define MAX_SIMULTANEOUS_EAP_TLS_NEGOTIATIONS_MEDIUM 20 +#define MAX_SIMULTANEOUS_EAP_TLS_NEGOTIATIONS_LARGE 50 + +/* + * Security protocol timer configuration parameters + */ +#define MINUTES_IN_DAY 24 * 60 +#define DEFAULT_GTK_EXPIRE_OFFSET 43200 // 30 days +#define DEFAULT_PMK_LIFETIME 4 * 30 * MINUTES_IN_DAY // 4 months +#define DEFAULT_PTK_LIFETIME 2 * 30 * MINUTES_IN_DAY // 2 months +#define DEFAULT_GTK_NEW_ACTIVATION_TIME 720 // default 1/720 * 30 days --> 60 minutes +#define DEFAULT_REVOCATION_LIFETIME_REDUCTION 30 // default 1/30 * 30 days --> 1 day +#define DEFAULT_GTK_REQUEST_IMIN 4 // 4 minutes +#define DEFAULT_GTK_REQUEST_IMAX 64 // 64 minutes +#define DEFAULT_GTK_MAX_MISMATCH 64 // 64 minutes +#define DEFAULT_GTK_NEW_INSTALL_REQUIRED 80 // 80 percent of GTK lifetime --> 24 days #endif /* WS_CONFIG_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_eapol_pdu.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_eapol_pdu.h index fc99e082..75f4ef40 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_eapol_pdu.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_eapol_pdu.h @@ -127,6 +127,22 @@ int8_t ws_eapol_pdu_cb_register(protocol_interface_info_entry_t *interface_ptr, */ int8_t ws_eapol_pdu_cb_unregister(protocol_interface_info_entry_t *interface_ptr, const eapol_pdu_recv_cb_data_t *cb_data); +typedef enum { + EAPOL_PDU_TX_OK = 0, // Successful + EAPOL_PDU_TX_ERR_TX_NO_ACK = -1, // No acknowledge was received + EAPOL_PDU_TX_ERR_UNSPEC = -2, // Other reason +} eapol_pdu_tx_status_e; + +/** + * ws_eapol_pdu_tx_status will be called when TX status is known + * + * \param interface_ptr interface + * \param tx_status tx status + * \param tx_identifier tx identifier + * + */ +typedef int8_t ws_eapol_pdu_tx_status(protocol_interface_info_entry_t *interface_ptr, eapol_pdu_tx_status_e tx_status, uint8_t tx_identifier); + /** * ws_eapol_pdu_send_to_mpx send EAPOL PDU to MPX * @@ -135,11 +151,13 @@ int8_t ws_eapol_pdu_cb_unregister(protocol_interface_info_entry_t *interface_ptr * \param data EAPOL PDU * \param size PDU size * \param buffer pointer to allocated buffer + * \param tx_status tx status callback + * \param tx_identifier tx identifier * * \return < 0 failure * \return >= 0 success * */ -int8_t ws_eapol_pdu_send_to_mpx(protocol_interface_info_entry_t *interface_ptr, const uint8_t *eui_64, void *data, uint16_t size, void *buffer); +int8_t ws_eapol_pdu_send_to_mpx(protocol_interface_info_entry_t *interface_ptr, const uint8_t *eui_64, void *data, uint16_t size, void *buffer, ws_eapol_pdu_tx_status tx_status, uint8_t tx_identifier); #endif /* WS_EAPOL_PDU_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_neighbor_class.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_neighbor_class.h index 2a0cbe2c..c381b43f 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_neighbor_class.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_neighbor_class.h @@ -32,7 +32,6 @@ typedef struct ws_neighbor_class_entry { bool broadcast_timing_info_stored: 1; bool broadcast_shedule_info_stored: 1; bool synch_done : 1; - bool accelerated_etx_probe : 1; bool negative_aro_send : 1; bool unicast_data_rx : 1; } ws_neighbor_class_entry_t; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_auth.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_auth.h index 5c0f35d9..5bf680f4 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_auth.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_auth.h @@ -47,34 +47,14 @@ * \param next_gtks next group keys to be used * \param cert_chain certificate chain * \param timer_settings timer settings + * \param sec_timer_cfg timer configuration + * \param sec_prot_cfg protocol configuration * * \return < 0 failure * \return >= 0 success * */ -int8_t ws_pae_auth_init(protocol_interface_info_entry_t *interface_ptr, sec_prot_gtk_keys_t *gtks, sec_prot_gtk_keys_t *next_gtks, const sec_prot_certs_t *certs, timer_settings_t *timer_settings); - -/** - * ws_pae_auth_timing_adjust Adjust retries and timings of the security protocols - * - * Timing value is a generic number between 0 to 32 that goes from fast and - * reactive network to low bandwidth and long latency. - * - * example value definitions: - * 0-8 very fast network - * 9-16 medium network - * 16-24 slow network - * 25-32 extremely slow network - * - * There is no need to have lots variations in every layer if protocol is not very active in any case. - * - * \param timing Timing value. - * - * \return < 0 failure - * \return >= 0 success - * - */ -int8_t ws_pae_auth_timing_adjust(uint8_t timing); +int8_t ws_pae_auth_init(protocol_interface_info_entry_t *interface_ptr, sec_prot_gtk_keys_t *gtks, sec_prot_gtk_keys_t *next_gtks, const sec_prot_certs_t *certs, sec_timer_cfg_t *sec_timer_cfg, sec_prot_cfg_t *sec_prot_cfg); /** * ws_pae_auth_addresses_set set relay addresses @@ -231,8 +211,8 @@ void ws_pae_auth_cb_register(protocol_interface_info_entry_t *interface_ptr, ws_ #else -#define ws_pae_auth_init(interface_ptr, gtks, next_gtks, certs, timer_settings) 1 -#define ws_pae_auth_timing_adjust(timing) 1 +#define ws_pae_auth_init(interface_ptr, gtks, next_gtks, certs, sec_timer_cfg, sec_prot_cfg) 1 +#define ws_pae_auth_timing_adjust(timing) #define ws_pae_auth_addresses_set(interface_ptr, local_port, remote_addr, remote_port) 1 #define ws_pae_auth_delete NULL #define ws_pae_auth_cb_register(interface_ptr, hash_set, nw_key_insert, nw_key_index_set) {(void) hash_set;} diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_controller.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_controller.h index 717ca112..9a16b769 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_controller.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_controller.h @@ -20,7 +20,17 @@ #ifdef HAVE_WS +typedef enum { + AUTH_RESULT_OK = 0, // Successful + AUTH_RESULT_ERR_NO_MEM = -1, // No memory + AUTH_RESULT_ERR_TX_NO_ACK = -2, // No acknowledge was received + AUTH_RESULT_ERR_UNSPEC = -3 // Other reason +} auth_result_e; + struct nvm_tlv_entry; +struct ws_sec_timer_cfg_s; +struct ws_sec_prot_cfg_s; + /** * ws_pae_controller_set_target sets EAPOL target for PAE supplicant * @@ -82,18 +92,20 @@ int8_t ws_pae_controller_authenticator_start(protocol_interface_info_entry_t *in int8_t ws_pae_controller_init(protocol_interface_info_entry_t *interface_ptr); /** - * ws_pae_controller_init initializes PAE supplicant + * ws_pae_controller_config_set sets PAE controller configuration * * \param interface_ptr interface + * \param sec_timer_cfg timer configuration or NULL if not set + * \param sec_prot_cfg protocol configuration or NULL if not set * * \return < 0 failure * \return >= 0 success * */ -int8_t ws_pae_controller_supp_init(protocol_interface_info_entry_t *interface_ptr); +int8_t ws_pae_controller_configure(protocol_interface_info_entry_t *interface_ptr, struct ws_sec_timer_cfg_s *sec_timer_cfg, struct ws_sec_prot_cfg_s *sec_prot_cfg); /** - * ws_pae_controller_init initializes PAE authenticator + * ws_pae_controller_init initializes PAE supplicant * * \param interface_ptr interface * @@ -101,10 +113,10 @@ int8_t ws_pae_controller_supp_init(protocol_interface_info_entry_t *interface_pt * \return >= 0 success * */ -int8_t ws_pae_controller_auth_init(protocol_interface_info_entry_t *interface_ptr); +int8_t ws_pae_controller_supp_init(protocol_interface_info_entry_t *interface_ptr); /** - * ws_pae_controller_stop stop PAE controller (e.g. on interface down) + * ws_pae_controller_init initializes PAE authenticator * * \param interface_ptr interface * @@ -112,10 +124,10 @@ int8_t ws_pae_controller_auth_init(protocol_interface_info_entry_t *interface_pt * \return >= 0 success * */ -int8_t ws_pae_controller_stop(protocol_interface_info_entry_t *interface_ptr); +int8_t ws_pae_controller_auth_init(protocol_interface_info_entry_t *interface_ptr); /** - * ws_pae_controller_delete delete PAE controller (e.g. failure to create interface) + * ws_pae_controller_stop stop PAE controller (e.g. on interface down) * * \param interface_ptr interface * @@ -123,29 +135,18 @@ int8_t ws_pae_controller_stop(protocol_interface_info_entry_t *interface_ptr); * \return >= 0 success * */ -int8_t ws_pae_controller_delete(protocol_interface_info_entry_t *interface_ptr); +int8_t ws_pae_controller_stop(protocol_interface_info_entry_t *interface_ptr); /** - * ws_pae_controller_timing_adjust Adjust retries and timings of the security protocols - * - * Timing value is a generic number between 0 to 32 that goes from fast and - * reactive network to low bandwidth and long latency. - * - * example value definitions: - * 0-8 very fast network - * 9-16 medium network - * 16-24 slow network - * 25-32 extremely slow network - * - * There is no need to have lots variations in every layer if protocol is not very active in any case. + * ws_pae_controller_delete delete PAE controller (e.g. failure to create interface) * - * \param timing Timing value. + * \param interface_ptr interface * * \return < 0 failure * \return >= 0 success * */ -int8_t ws_pae_controller_timing_adjust(uint8_t timing); +int8_t ws_pae_controller_delete(protocol_interface_info_entry_t *interface_ptr); /** * ws_pae_controller_certificate_chain_set set certificate chain @@ -467,9 +468,10 @@ typedef void ws_pae_controller_nw_send_key_index_set(protocol_interface_info_ent * * \param interface_ptr interface * \param counter frame counter + * \param slot key slot (MAC key descriptor), from 0 to 4 * */ -typedef void ws_pae_controller_nw_frame_counter_set(protocol_interface_info_entry_t *interface_ptr, uint32_t counter); +typedef void ws_pae_controller_nw_frame_counter_set(protocol_interface_info_entry_t *interface_ptr, uint32_t counter, uint8_t slot); /** * ws_pae_controller_nw_frame_counter_read network frame counter read callback @@ -478,16 +480,17 @@ typedef void ws_pae_controller_nw_frame_counter_set(protocol_interface_info_entr * \param counter frame counter * */ -typedef void ws_pae_controller_nw_frame_counter_read(protocol_interface_info_entry_t *interface_ptr, uint32_t *counter); +typedef void ws_pae_controller_nw_frame_counter_read(protocol_interface_info_entry_t *interface_ptr, uint32_t *counter, uint8_t slot); /** * ws_pae_controller_auth_completed authentication completed callback * * \param interface_ptr interface - * \param success true if authentication was successful + * \param result result, either ok or failure reason + * \param target_eui_64 EAPOL target in case of failure or NULL * */ -typedef void ws_pae_controller_auth_completed(protocol_interface_info_entry_t *interface_ptr, bool success); +typedef void ws_pae_controller_auth_completed(protocol_interface_info_entry_t *interface_ptr, auth_result_e result, uint8_t *target_eui_64); /** * ws_pae_controller_pan_ver_increment PAN version increment callback diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_lib.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_lib.h index 69b4a7ae..b045fd00 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_lib.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_lib.h @@ -88,7 +88,7 @@ int8_t ws_pae_lib_kmp_list_delete(kmp_list_t *kmp_list, kmp_api_t *kmp); void ws_pae_lib_kmp_list_free(kmp_list_t *kmp_list); /** - * ws_pae_lib_kmp_list_type_get gets KMP entry from KMP list based on KMP type + * ws_pae_lib_kmp_list_type_get gets KMP from KMP list based on KMP type * * \param kmp_list KMP list * \param type type @@ -99,6 +99,18 @@ void ws_pae_lib_kmp_list_free(kmp_list_t *kmp_list); */ kmp_api_t *ws_pae_lib_kmp_list_type_get(kmp_list_t *kmp_list, kmp_type_e type); +/** + * ws_pae_lib_kmp_list_instance_id_get gets KMP from KMP list based on instance identifier + * + * \param kmp_list KMP list + * \param instance_id instance identifier + * + * \return KMP on success + * \return NULL on failure + * + */ +kmp_api_t *ws_pae_lib_kmp_list_instance_id_get(kmp_list_t *kmp_list, uint8_t instance_id); + /** * ws_pae_lib_kmp_list_entry_get gets KMP entry from KMP list based on KMP * @@ -221,7 +233,7 @@ bool ws_pae_lib_supp_list_timer_update(supp_list_t *active_supp_list, supp_list_ * \param seconds seconds * */ -void ws_pae_lib_supp_list_slow_timer_update(supp_list_t *supp_list, timer_settings_t *timer_settings, uint16_t seconds); +void ws_pae_lib_supp_list_slow_timer_update(supp_list_t *supp_list, sec_timer_cfg_t *timer_settings, uint16_t seconds); /** * ws_pae_lib_supp_list_timer_update updates supplicant timers @@ -260,6 +272,25 @@ void ws_pae_lib_supp_delete(supp_entry_t *entry); */ void ws_pae_lib_supp_timer_ticks_set(supp_entry_t *entry, uint32_t ticks); +/** + * ws_pae_lib_supp_timer_ticks_add adds supplicant timer ticks + * + * \param entry supplicant entry + * \param ticks ticks + * + */ +void ws_pae_lib_supp_timer_ticks_add(supp_entry_t *entry, uint32_t ticks); + +/** + * ws_pae_lib_supp_timer_is_running checks whether supplicant timer is running + * + * \param entry supplicant entry + * + * \return TRUE timer is running, FALSE timer is not running + * + */ +bool ws_pae_lib_supp_timer_is_running(supp_entry_t *entry); + /** * ws_pae_lib_supp_list_to_active move supplicant to active supplicants list * diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_nvm_data.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_nvm_data.h index ce763d78..86ebedad 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_nvm_data.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_nvm_data.h @@ -76,27 +76,22 @@ int8_t ws_pae_nvm_store_keys_tlv_read(nvm_tlv_entry_t *tlv_entry, sec_prot_keys_ * ws_pae_nvm_store_frame_counter_tlv_create create NVM frame counter TLV * * \param tlv_entry TLV entry buffer pointer - * \param index index - * \param hash hash - * \param frame_counter frame counter - * + * \param counters frame counters * */ -void ws_pae_nvm_store_frame_counter_tlv_create(nvm_tlv_entry_t *tlv_entry, uint8_t index, uint8_t *hash, uint32_t frame_counter); +void ws_pae_nvm_store_frame_counter_tlv_create(nvm_tlv_entry_t *tlv_entry, frame_counters_t *counters); /** * ws_pae_nvm_store_frame_counter_tlv_read read from NVM frame counter TLV * * \param tlv_entry TLV entry - * \param index index - * \param hash hash - * \param frame_counter frame counter + * \param counters frame counters * * \return < 0 failure * \return >= 0 success * */ -int8_t ws_pae_nvm_store_frame_counter_tlv_read(nvm_tlv_entry_t *tlv_entry, uint8_t *index, uint8_t *hash, uint32_t *frame_counter); +int8_t ws_pae_nvm_store_frame_counter_tlv_read(nvm_tlv_entry_t *tlv_entry, frame_counters_t *counters); nvm_tlv_entry_t *ws_pae_buffer_allocate(void); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_supp.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_supp.h index 24de962f..3bfbc095 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_supp.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_supp.h @@ -38,13 +38,14 @@ * * \param interface_ptr interface * \param cert_chain certificate chain - * \param timer_settings timer settings + * \param sec_timer_cfg timer configuration + * \param sec_prot_cfg protocol configuration * * \return < 0 failure * \return >= 0 success * */ -int8_t ws_pae_supp_init(protocol_interface_info_entry_t *interface_ptr, const sec_prot_certs_t *certs, timer_settings_t *timer_settings); +int8_t ws_pae_supp_init(protocol_interface_info_entry_t *interface_ptr, const sec_prot_certs_t *certs, sec_timer_cfg_t *sec_timer_cfg, sec_prot_cfg_t *sec_prot_cfg); /** * ws_pae_supp_delete deletes PAE supplicant @@ -57,29 +58,6 @@ int8_t ws_pae_supp_init(protocol_interface_info_entry_t *interface_ptr, const se */ int8_t ws_pae_supp_delete(protocol_interface_info_entry_t *interface_ptr); - -/** - * ws_pae_supp_timing_adjust Adjust retries and timings of the 4WH protocol - * - * Timing value is a generic number between 0 to 32 that goes from fast and - * reactive network to low bandwidth and long latency. - * - * example value definitions: - * 0-8 very fast network - * 9-16 medium network - * 16-24 slow network - * 25-32 extremely slow network - * - * There is no need to have lots variations in every layer if protocol is not very active in any case. - * - * \param timing Timing value. - * - * \return < 0 failure - * \return >= 0 success - * - */ -int8_t ws_pae_supp_timing_adjust(uint8_t timing); - /** * ws_pae_supp_fast_timer PAE supplicant fast timer call * @@ -182,6 +160,18 @@ int8_t ws_pae_supp_gtk_hash_update(protocol_interface_info_entry_t *interface_pt */ int8_t ws_pae_supp_nw_key_index_update(protocol_interface_info_entry_t *interface_ptr, uint8_t index); +/** + * ws_pae_supp_gtks_set set supplicant GTKs + * + * \param interface_ptr interface + * \param gtks GTKs + * + * \return < 0 failure + * \return >= 0 success + * + */ +int8_t ws_pae_supp_gtks_set(protocol_interface_info_entry_t *interface_ptr, sec_prot_gtk_keys_t *gtks); + /** * ws_pae_supp_eapol_target_remove remove EAPOL target set using authentication start * @@ -206,10 +196,11 @@ typedef void ws_pae_supp_nw_key_index_set(protocol_interface_info_entry_t *inter * ws_pae_supp_auth_completed authentication completed callback * * \param interface_ptr interface - * \param success true if authentication was successful + * \param result result, either ok or failure reason + * \param target_eui_64 EAPOL target in case of failure or NULL * */ -typedef void ws_pae_supp_auth_completed(protocol_interface_info_entry_t *interface_ptr, bool success); +typedef void ws_pae_supp_auth_completed(protocol_interface_info_entry_t *interface_ptr, auth_result_e result, uint8_t *target_eui_64); /** * ws_pae_supp_nw_key_insert network key insert callback @@ -223,6 +214,16 @@ typedef void ws_pae_supp_auth_completed(protocol_interface_info_entry_t *interfa */ typedef int8_t ws_pae_supp_nw_key_insert(protocol_interface_info_entry_t *interface_ptr, sec_prot_gtk_keys_t *gtks); +/** + * ws_pae_supp_gtk_hash_ptr_get get pointer to GTK hash storage callback + * + * \param interface_ptr interface + * + * \return pointer to GTK has storage or NULL + * + */ +typedef uint8_t *ws_pae_supp_gtk_hash_ptr_get(protocol_interface_info_entry_t *interface_ptr); + /** * ws_pae_supp_cb_register register PEA supplicant callbacks * @@ -232,11 +233,11 @@ typedef int8_t ws_pae_supp_nw_key_insert(protocol_interface_info_entry_t *interf * \param nw_key_index_set network send key index callback * */ -void ws_pae_supp_cb_register(protocol_interface_info_entry_t *interface_ptr, ws_pae_supp_auth_completed *completed, ws_pae_supp_nw_key_insert *nw_key_insert, ws_pae_supp_nw_key_index_set *nw_key_index_set); +void ws_pae_supp_cb_register(protocol_interface_info_entry_t *interface_ptr, ws_pae_supp_auth_completed *completed, ws_pae_supp_nw_key_insert *nw_key_insert, ws_pae_supp_nw_key_index_set *nw_key_index_set, ws_pae_supp_gtk_hash_ptr_get *gtk_hash_ptr_get); #else -#define ws_pae_supp_init(interface_ptr, certs, timer_settings) 1 +#define ws_pae_supp_init(interface_ptr, certs, sec_timer_cfg, sec_prot_cfg) 1 #define ws_pae_supp_delete NULL #define ws_pae_supp_timing_adjust(timing) 1 #define ws_pae_supp_cb_register(interface_ptr, completed, nw_key_insert, nw_key_index_set) @@ -249,6 +250,7 @@ void ws_pae_supp_cb_register(protocol_interface_info_entry_t *interface_ptr, ws_ #define ws_pae_supp_border_router_addr_read NULL #define ws_pae_supp_gtk_hash_update NULL #define ws_pae_supp_nw_key_index_update NULL +#define ws_pae_supp_gtks_set(interface_ptr, gtks) #define ws_pae_supp_eapol_target_remove(interface_ptr) #endif diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_timers.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_timers.h index 55b80a4d..ec792996 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_timers.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/6LoWPAN/ws/ws_pae_timers.h @@ -18,25 +18,26 @@ #ifndef WS_PAE_TIMERS_H_ #define WS_PAE_TIMERS_H_ -typedef struct { - uint32_t gtk_expire_offset; // GTK lifetime; GTK_EXPIRE_OFFSET (seconds) - uint32_t pmk_lifetime; // PMK lifetime (seconds) - uint32_t ptk_lifetime; // PTK lifetime (seconds) - uint16_t gtk_new_act_time; // GTK_NEW_ACTIVATION_TIME (1/X of expire offset) - uint16_t revocat_lifetime_reduct; // REVOCATION_LIFETIME_REDUCTION (reduction of lifetime) - uint16_t gtk_request_imin; // GTK_REQUEST_IMIN (seconds) - uint16_t gtk_request_imax; // GTK_REQUEST_IMAX (seconds) - uint16_t gtk_max_mismatch; // GTK_MAX_MISMATCH (seconds) - uint8_t gtk_new_install_req; // GTK_NEW_INSTALL_REQUIRED (percent of GTK lifetime) -} timer_settings_t; +typedef struct sec_timer_cfg_s { + uint32_t gtk_expire_offset; /* GTK lifetime; GTK_EXPIRE_OFFSET (seconds) */ + uint32_t pmk_lifetime; /* PMK lifetime (seconds) */ + uint32_t ptk_lifetime; /* PTK lifetime (seconds) */ + uint16_t gtk_new_act_time; /* GTK_NEW_ACTIVATION_TIME (1/X of expire offset) */ + uint16_t revocat_lifetime_reduct; /* REVOCATION_LIFETIME_REDUCTION (reduction of lifetime) */ + uint16_t gtk_request_imin; /* GTK_REQUEST_IMIN (seconds) */ + uint16_t gtk_request_imax; /* GTK_REQUEST_IMAX (seconds) */ + uint16_t gtk_max_mismatch; /* GTK_MAX_MISMATCH (seconds) */ + uint8_t gtk_new_install_req; /* GTK_NEW_INSTALL_REQUIRED (percent of GTK lifetime) */ +} sec_timer_cfg_t; /** * ws_pae_timers_settings_init initializes timer settings structure * * \param timer_settings timer settings + * \param new_timer_settings new timer settings * */ -void ws_pae_timers_settings_init(timer_settings_t *timer_settings); +void ws_pae_timers_settings_init(sec_timer_cfg_t *timer_settings, ws_sec_timer_cfg_t *new_timer_settings); /** * ws_pae_timers_lifetime_set sets GTK, PTK and PTK lifetimes @@ -47,7 +48,7 @@ void ws_pae_timers_settings_init(timer_settings_t *timer_settings); * \param ptk_lifetime PTK lifetime * */ -void ws_pae_timers_lifetime_set(timer_settings_t *timer_settings, uint32_t gtk_lifetime, uint32_t pmk_lifetime, uint32_t ptk_lifetime); +void ws_pae_timers_lifetime_set(sec_timer_cfg_t *timer_settings, uint32_t gtk_lifetime, uint32_t pmk_lifetime, uint32_t ptk_lifetime); /** * ws_pae_timers_gtk_time_settings_set sets GTK, PTK and PTK lifetimes @@ -59,7 +60,7 @@ void ws_pae_timers_lifetime_set(timer_settings_t *timer_settings, uint32_t gtk_l * \param max_mismatch max mismatch * */ -void ws_pae_timers_gtk_time_settings_set(timer_settings_t *timer_settings, uint8_t revocat_lifetime_reduct, uint8_t new_activation_time, uint8_t new_install_req, uint32_t max_mismatch); +void ws_pae_timers_gtk_time_settings_set(sec_timer_cfg_t *timer_settings, uint8_t revocat_lifetime_reduct, uint8_t new_activation_time, uint8_t new_install_req, uint32_t max_mismatch); /** * ws_pae_timers_gtk_new_install_required GTK new install required check @@ -71,7 +72,7 @@ void ws_pae_timers_gtk_time_settings_set(timer_settings_t *timer_settings, uint8 * \return false GTK install not required * */ -bool ws_pae_timers_gtk_new_install_required(timer_settings_t *timer_settings, uint32_t seconds); +bool ws_pae_timers_gtk_new_install_required(sec_timer_cfg_t *timer_settings, uint32_t seconds); /** * ws_pae_timers_gtk_new_activation_time GTK new activation time @@ -83,7 +84,7 @@ bool ws_pae_timers_gtk_new_install_required(timer_settings_t *timer_settings, ui * \return false GTK new activation time not expired * */ -bool ws_pae_timers_gtk_new_activation_time(timer_settings_t *timer_settings, uint32_t seconds); +bool ws_pae_timers_gtk_new_activation_time(sec_timer_cfg_t *timer_settings, uint32_t seconds); /** * ws_pae_timers_gtk_revocation_lifetime_get GTK revocation lifetime get @@ -93,6 +94,6 @@ bool ws_pae_timers_gtk_new_activation_time(timer_settings_t *timer_settings, uin * \return GTK revocation lifetime * */ -uint32_t ws_pae_timers_gtk_revocation_lifetime_get(timer_settings_t *timer_settings); +uint32_t ws_pae_timers_gtk_revocation_lifetime_get(sec_timer_cfg_t *timer_settings); #endif /* WS_PAE_TIMERS_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.h index c209e2af..3ae2aa14 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Common_Protocols/icmpv6.h @@ -117,6 +117,7 @@ typedef enum slaac_src { #define ARO_SUCCESS 0 #define ARO_DUPLICATE 1 #define ARO_FULL 2 +#define ARO_TOPOLOGICALLY_INCORRECT 8 extern void icmpv6_init(void); extern struct buffer *icmpv6_down(struct buffer *buf); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_buffer.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_buffer.h index 7ebb6e05..b33148a1 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_buffer.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_buffer.h @@ -322,7 +322,7 @@ struct socket *buffer_socket_set(buffer_t *buf, struct socket *socket); } while(0) /** get data length*/ -#define buffer_data_length(x) (int16_t)(x->buf_end - x->buf_ptr) +#define buffer_data_length(x) (int)(x->buf_end - x->buf_ptr) /** get data length Set*/ #define buffer_data_length_set(x,z) ((x)->buf_end = (x)->buf_ptr + (z)) diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_error_types.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_error_types.h index c1f12cd0..31d15d3f 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_error_types.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_error_types.h @@ -22,11 +22,11 @@ * \enum error_t * \brief System generic error. */ -typedef enum error_t { +typedef enum { eOK = 0, /*!< no error */ eFALSE = 1, /*!< no result */ eBUSY = 2, /*!< resource busy */ eSYSTEM /*!< error code readable in sys_error */ -} error_t; +} socket_error_t; #endif /* NS_ERROR_TYPES_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_socket.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_socket.h index 5e1c566e..941c7403 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_socket.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Core/include/ns_socket.h @@ -190,7 +190,7 @@ extern void socket_init(void); extern int8_t socket_event_handler_id_get(void); extern bool socket_data_queued_event_push(socket_t *socket); extern void socket_event_push(uint8_t sock_event, socket_t *socket, int8_t interface_id, void *session_ptr, uint16_t length); -extern error_t socket_create(socket_family_t family, socket_type_t type, uint8_t protocol, int8_t *sid, uint16_t port, void (*passed_fptr)(void *), bool buffer_type); +extern socket_error_t socket_create(socket_family_t family, socket_type_t type, uint8_t protocol, int8_t *sid, uint16_t port, void (*passed_fptr)(void *), bool buffer_type); extern socket_t *socket_new_incoming_connection(socket_t *listen_socket); void socket_connection_abandoned(socket_t *socket, int8_t interface_id, uint8_t reason); void socket_connection_complete(socket_t *socket, int8_t interface_id); @@ -201,8 +201,8 @@ extern void socket_id_detach(int8_t sid); extern buffer_t *socket_buffer_read(socket_t *socket); extern socket_t *socket_lookup(socket_family_t family, uint8_t protocol, const sockaddr_t *local_addr, const sockaddr_t *remote_addr); extern socket_t *socket_lookup_ipv6(uint8_t protocol, const sockaddr_t *local_addr, const sockaddr_t *remote_addr, bool allow_wildcards); -extern error_t socket_port_validate(uint16_t port, uint8_t protocol); -extern error_t socket_up(buffer_t *buf); +extern socket_error_t socket_port_validate(uint16_t port, uint8_t protocol); +extern socket_error_t socket_up(buffer_t *buf); extern bool socket_message_validate_iov(const struct ns_msghdr *msg, uint16_t *length_out); extern int16_t socket_buffer_sendmsg(int8_t sid, buffer_t *buf, const struct ns_msghdr *msg, int flags); extern socket_t *socket_pointer_get(int8_t socket); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_Server/DHCPv6_server_service.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_Server/DHCPv6_server_service.h index d8c45e73..8f8616f4 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_Server/DHCPv6_server_service.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_Server/DHCPv6_server_service.h @@ -45,6 +45,7 @@ int DHCPv6_server_service_init(int8_t interface, uint8_t guaPrefix[static 16], u void DHCPv6_server_service_callback_set(int8_t interface, uint8_t guaPrefix[static 16], dhcp_address_prefer_remove_cb *remove_cb, dhcp_address_add_notify_cb *add_cb); +int DHCPv6_server_service_duid_update(int8_t interface, uint8_t guaPrefix[static 16], uint8_t *duid_ptr, uint16_t duid_type, uint8_t duid_length); /* Delete dhcp thread dhcp router ID server. * @@ -65,8 +66,9 @@ void DHCPv6_server_service_timeout_cb(uint32_t timeUpdateInSeconds); * /param interface interface id of this thread instance. * /param guaPrefix Prefix which will be removed * /param mode true trig autonous mode, false define address by default suffics + client id + * /param autonomous_skip_list true skip address list allocation when autonous mode is selected */ -int DHCPv6_server_service_set_address_autonous_flag(int8_t interface, uint8_t guaPrefix[static 16], bool mode); +int DHCPv6_server_service_set_address_autonous_flag(int8_t interface, uint8_t guaPrefix[static 16], bool mode, bool autonomous_skip_list); /* SET max accepted clients to server, Default is 200 diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_client/dhcpv6_client_api.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_client/dhcpv6_client_api.h index 60c2ff7f..ccfc6c1d 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_client/dhcpv6_client_api.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/DHCPv6_client/dhcpv6_client_api.h @@ -32,9 +32,10 @@ * if only one thread instance is supported this is needed to call only once. * * /param interface interface id of this instance. + * /param link_type DHCPV6_DUID_HARDWARE_IEEE_802_NETWORKS_TYPE, DHCPV6_DUID_HARDWARE_EUI64_TYPE or DHCPV6_DUID_HARDWARE_EUI48_TYPE * */ -void dhcp_client_init(int8_t interface); +void dhcp_client_init(int8_t interface, uint16_t link_type); /* Set configurations for DHCP client * @@ -72,15 +73,13 @@ void dhcp_client_delete(int8_t interface); * /param interface interface where address is got * /param dhcp_addr dhcp server ML16 address where address is registered. * /param prefix dhcp server ML16 address where address is registered. - * /param mac64 64 bit mac address for identifieng client. - * /param link_type Link hardware type. * /param error_cb error callback that is called if address cannot be created or becomes invalid. * /param register_status true if address registered. * */ typedef void (dhcp_client_global_adress_cb)(int8_t interface, uint8_t dhcp_addr[static 16], uint8_t prefix[static 16], bool register_status); -int dhcp_client_get_global_address(int8_t interface, uint8_t dhcp_addr[static 16], uint8_t prefix[static 16], uint8_t mac64[static 8], uint16_t link_type, dhcp_client_global_adress_cb *error_cb); +int dhcp_client_get_global_address(int8_t interface, uint8_t dhcp_addr[static 16], uint8_t prefix[static 16], dhcp_client_global_adress_cb *error_cb); /* Renew all leased adddresses might be used when short address changes * diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_defines.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_defines.h index 119c2c2e..28c2e62c 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_defines.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_defines.h @@ -39,6 +39,7 @@ typedef enum mac_event_t { MAC_TIMER_CCA, MAC_TX_FAIL, MAC_TX_TIMEOUT, + MAC_ACK_SECURITY_FAIL, MAC_UNKNOWN_DESTINATION, MAC_TX_PRECOND_FAIL } mac_event_t; @@ -201,6 +202,7 @@ typedef struct protocol_interface_rf_mac_setup { mac_scan_type_t scan_type; uint8_t mac_channel; + uint8_t mac_tx_start_channel; //uint8_t cca_failure; /* MAC TX Queue */ @@ -223,6 +225,8 @@ typedef struct protocol_interface_rf_mac_setup { uint8_t aUnitBackoffPeriod; uint8_t number_of_csma_ca_periods; /**< Number of CSMA-CA periods */ uint16_t multi_cca_interval; /**< Length of the additional CSMA-CA period(s) in microseconds */ + uint16_t phy_mtu_size; + phy_802_15_4_mode_t current_mac_mode; /* Indirect queue parameters */ struct mac_pre_build_frame *indirect_pd_data_request_queue; struct mac_pre_build_frame enhanced_ack_buffer; @@ -243,6 +247,7 @@ typedef struct protocol_interface_rf_mac_setup { uint32_t mlme_tick_count; uint32_t symbol_rate; uint32_t symbol_time_us; + uint32_t datarate; uint8_t max_ED; uint16_t mlme_ED_counter; mac_tx_status_t mac_tx_status; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_mlme.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_mlme.h index fb251c80..2cf6a79a 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_mlme.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_mlme.h @@ -106,7 +106,7 @@ void mac_mlme_event_cb(void *mac_ptr); void mac_mlme_set_active_state(struct protocol_interface_rf_mac_setup *entry, bool new_state); -struct protocol_interface_rf_mac_setup *mac_mlme_data_base_allocate(uint8_t *mac64, struct arm_device_driver_list *dev_driver, struct mac_description_storage_size_s *storage_sizes); +struct protocol_interface_rf_mac_setup *mac_mlme_data_base_allocate(uint8_t *mac64, struct arm_device_driver_list *dev_driver, struct mac_description_storage_size_s *storage_sizes, uint16_t mtu_size); void mac_mlme_data_base_deallocate(struct protocol_interface_rf_mac_setup *rf_mac); uint8_t mac_mlme_set_new_sqn(struct protocol_interface_rf_mac_setup *rf_setup); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_security_mib.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_security_mib.h index 9ca75cd5..150d8ea6 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_security_mib.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/MAC/IEEE802_15_4/mac_security_mib.h @@ -27,7 +27,7 @@ typedef struct mlme_key_descriptor_s { mlme_key_id_lookup_descriptor_t *KeyIdLookupList; mlme_key_device_descriptor_t *KeyDeviceList; mlme_key_usage_descriptor_t *KeyUsageList; - uint32_t *KeyDeviceFrameCouterList; + uint32_t *KeyDeviceFrameCounterList; uint32_t KeyFrameCounter; uint8_t Key[16]; uint8_t KeyDeviceListSize; @@ -51,7 +51,9 @@ int8_t mac_sec_mib_key_description_set(uint8_t atribute_index, mlme_key_descript mlme_device_descriptor_t *mac_sec_mib_device_description_get_attribute_index(struct protocol_interface_rf_mac_setup *rf_mac_setup, uint8_t attribute_index); -mlme_device_descriptor_t *mac_sec_mib_device_description_get(struct protocol_interface_rf_mac_setup *rf_mac_setup, const uint8_t *address, uint8_t type); +mlme_device_descriptor_t *mac_sec_mib_device_description_get(struct protocol_interface_rf_mac_setup *rf_mac_setup, const uint8_t *address, uint8_t type, uint16_t pan_id); + +void mac_sec_mib_device_description_pan_update(struct protocol_interface_rf_mac_setup *rf_mac_setup, uint16_t pan_id); uint8_t mac_mib_device_descption_attribute_get_by_descriptor(struct protocol_interface_rf_mac_setup *rf_mac_setup, mlme_device_descriptor_t *descriptor); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol.h index 6173d0a3..2a1b3fbb 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol.h @@ -375,6 +375,7 @@ struct protocol_interface_info_entry { trickle_params_t mpl_control_trickle_params; uint16_t mpl_seed_set_entry_lifetime; uint8_t mpl_seed_id[16]; + struct mpl_domain *mpl_domain; #endif if_6lowpan_dad_entry_t if_6lowpan_dad_process; lowpan_context_list_t lowpan_contexts; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol_stats.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol_stats.h index 47d00081..e8ee77f2 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol_stats.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/NWK_INTERFACE/Include/protocol_stats.h @@ -44,6 +44,7 @@ typedef enum { STATS_BUFFER_HEADROOM_FAIL, STATS_ETX_1ST_PARENT, STATS_ETX_2ND_PARENT, + STATS_AL_TX_QUEUE_SIZE } nwk_stats_type_t; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_control.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_control.h index 17290fdd..613d47eb 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_control.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_control.h @@ -35,14 +35,15 @@ typedef enum rpl_event { RPL_EVENT_DAO_DONE, /* Simplistic trigger for bootstrap advance - a DAO registration completed */ RPL_EVENT_LOCAL_REPAIR_START, /* RPL start scanning new parent by multicast DIS user can disable beacon request responser here*/ RPL_EVENT_LOCAL_REPAIR_NO_MORE_DIS, /* RPL not sending DIS anymore user can report bootstrap error */ - RPL_EVENT_DAO_PARENT_SWITCH, /* RPL indicate that DAO downward Parent state have been updated */ + RPL_EVENT_DAO_PARENT_ADD, /* RPL indicate that DAO downward Parent has been added */ } rpl_event_t; typedef void rpl_domain_callback_t(rpl_event_t event, void *handle); typedef void rpl_prefix_callback_t(struct prefix_entry_t *prefix, void *handle, uint8_t *parent_link_local); -typedef bool rpl_new_parent_callback_t(uint8_t *ll_parent_address, void *handle); +typedef bool rpl_new_parent_callback_t(uint8_t *ll_parent_address, void *handle, struct rpl_instance *instance, uint16_t candidate_rank); + typedef struct rpl_domain { NS_LIST_HEAD_INCOMPLETE(struct rpl_instance) instances; @@ -54,6 +55,8 @@ typedef struct rpl_domain { int8_t non_storing_downstream_interface; /* As part of shutdown, we can force entering leaf mode */ bool force_leaf; + /* if false routes are not set to routing table, instead default route is added for DODAGID */ + bool process_routes; rpl_domain_callback_t *callback; rpl_prefix_callback_t *prefix_cb; rpl_new_parent_callback_t *new_parent_add; @@ -129,39 +132,54 @@ struct rpl_dodag *rpl_control_create_dodag_root(rpl_domain_t *domain, uint8_t in void rpl_control_delete_dodag_root(rpl_domain_t *domain, struct rpl_dodag *dodag); void rpl_control_update_dodag_route(struct rpl_dodag *dodag, const uint8_t *prefix, uint8_t prefix_len, uint8_t flags, uint32_t lifetime, bool age); void rpl_control_update_dodag_prefix(struct rpl_dodag *dodag, const uint8_t *prefix, uint8_t prefix_len, uint8_t flags, uint32_t lifetime, uint32_t preftime, bool age); -void rpl_control_increment_dodag_version(struct rpl_dodag *dodag); +uint8_t rpl_control_increment_dodag_version(struct rpl_dodag *dodag); void rpl_control_update_dodag_config(struct rpl_dodag *dodag, const rpl_dodag_conf_t *conf); void rpl_control_set_dodag_pref(struct rpl_dodag *dodag, uint8_t pref); void rpl_control_increment_dtsn(struct rpl_dodag *dodag); /* Force leaf behaviour on a domain - useful before shutdown, and in conjunction with poison */ void rpl_control_force_leaf(rpl_domain_t *domain, bool leaf); +/*Process routes from DIOs and add those as real routes. if routes are not processed assume DODAGID as default route*/ +void rpl_control_process_routes(rpl_domain_t *domain, bool process_routes); /* Manually send poison on all existing instances a few times */ void rpl_control_poison(rpl_domain_t *domain, uint8_t poison_count); +/* force DAO to verify connections before given time*/ +void rpl_control_dao_timeout(rpl_domain_t *domain, uint16_t seconds); + /* APIs to create domains and map them to interfaces */ rpl_domain_t *rpl_control_create_domain(void); void rpl_control_delete_domain(rpl_domain_t *domain); void rpl_control_set_domain_on_interface(struct protocol_interface_info_entry *cur, rpl_domain_t *domain, bool downstream); void rpl_control_remove_domain_from_interface(struct protocol_interface_info_entry *cur); void rpl_control_free_domain_instances_from_interface(struct protocol_interface_info_entry *cur); -void rpl_control_set_callback(rpl_domain_t *domain, rpl_domain_callback_t callback, rpl_prefix_callback_t prefix_learn_cb, rpl_new_parent_callback_t new_parent_add, void *cb_handle); +void rpl_control_set_callback(rpl_domain_t *domain, rpl_domain_callback_t callback, rpl_prefix_callback_t prefix_learn_cb, rpl_new_parent_callback_t new_parent_add, void *cb_handle); /* Target publishing */ void rpl_control_publish_host_address(rpl_domain_t *domain, const uint8_t addr[16], uint32_t lifetime); void rpl_control_unpublish_address(rpl_domain_t *domain, const uint8_t addr[16]); bool rpl_control_is_dodag_parent(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16]); bool rpl_control_is_dodag_parent_candidate(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16], uint16_t candidate_cmp_limiter); -uint16_t rpl_control_parent_candidate_list_size(struct protocol_interface_info_entry *interface, bool parent_list); +bool rpl_control_probe_parent_candidate(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16]); +bool rpl_possible_better_candidate(struct protocol_interface_info_entry *interface, struct rpl_instance *rpl_instance, const uint8_t ll_addr[16], uint16_t candidate_rank, uint16_t etx); +uint16_t rpl_control_parent_candidate_list_size(struct protocol_interface_info_entry *interface, bool parent_list); +uint16_t rpl_control_candidate_list_size(struct protocol_interface_info_entry *interface, struct rpl_instance *rpl_instance); +uint16_t rpl_control_selected_parent_count(struct protocol_interface_info_entry *interface, struct rpl_instance *rpl_instance); void rpl_control_neighbor_delete(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16]); +void rpl_control_neighbor_delete_from_instance(struct protocol_interface_info_entry *interface, struct rpl_instance *rpl_instance, const uint8_t ll_addr[16]); +bool rpl_control_find_worst_neighbor(struct protocol_interface_info_entry *interface, struct rpl_instance *rpl_instance, uint8_t ll_addr[16]); + /* Parent link confirmation API extension */ void rpl_control_request_parent_link_confirmation(bool requested); void rpl_control_set_dio_multicast_min_config_advertisment_count(uint8_t min_count); +void rpl_control_set_address_registration_timeout(uint16_t timeout_in_minutes); void rpl_control_set_dao_retry_count(uint8_t count); +void rpl_control_set_minimum_dao_target_refresh(uint16_t seconds); void rpl_control_set_initial_dao_ack_wait(uint16_t timeout_in_ms); +void rpl_control_set_mrhof_parent_set_size(uint16_t parent_set_size); void rpl_control_register_address(struct protocol_interface_info_entry *interface, const uint8_t addr[16]); -void rpl_control_address_register_done(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16], uint8_t status); +bool rpl_control_address_register_done(struct protocol_interface_info_entry *interface, const uint8_t ll_addr[16], uint8_t status); /* Configure and return the routing lookup predicate for a specified RPL instance ID */ ipv6_route_predicate_fn_t *rpl_control_get_route_predicate(rpl_domain_t *domain, uint8_t instance_id, const uint8_t src[16], const uint8_t dst[16]); @@ -176,6 +194,7 @@ bool rpl_control_read_dodag_info(const struct rpl_instance *instance, struct rpl const rpl_dodag_conf_t *rpl_control_get_dodag_config(const struct rpl_instance *instance); const uint8_t *rpl_control_preferred_parent_addr(const struct rpl_instance *instance, bool global); uint16_t rpl_control_current_rank(const struct rpl_instance *instance); +uint8_t rpl_policy_mrhof_parent_set_size_get(const rpl_domain_t *domain); #else /* HAVE_RPL */ @@ -184,8 +203,9 @@ uint16_t rpl_control_current_rank(const struct rpl_instance *instance); #define rpl_control_remove_domain_from_interface(cur) ((void) 0) #define rpl_control_free_domain_instances_from_interface(cur) ((void) 0) #define rpl_control_register_address(interface, addr) ((void) 0) -#define rpl_control_address_register_done(interface, ll_addr, status) ((void) 0) - +#define rpl_control_address_register_done(interface, ll_addr, status) (false) +#define rpl_policy_mrhof_parent_set_size_get(domain) (0) +#define rpl_control_set_mrhof_parent_set_size(parent_set_size) #endif /* HAVE_RPL */ #endif /* RPL_CONTROL_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_downward.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_downward.h index a8c66a79..b2b8faa5 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_downward.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_downward.h @@ -38,11 +38,12 @@ void rpl_instance_delete_published_dao_target(struct rpl_instance *instance, con struct rpl_dao_target *rpl_instance_match_dao_target(struct rpl_instance *instance, const uint8_t *prefix, uint8_t prefix_len); void rpl_instance_dao_request(struct rpl_instance *instance, struct rpl_neighbour *neighbour); +void rpl_instance_dao_timeout(struct rpl_instance *instance, uint16_t seconds); void rpl_instance_dao_trigger(struct rpl_instance *instance, uint16_t delay); void rpl_instance_dao_acked(struct rpl_instance *instance, const uint8_t src[16], int8_t interface_id, uint8_t dao_sequence, uint8_t status); void rpl_instance_parent_address_reg_timer_update(struct rpl_instance *instance, uint16_t seconds); void rpl_instance_send_address_registration(rpl_instance_t *instance, const uint8_t addr[16]); -void rpl_instance_address_registration_done(protocol_interface_info_entry_t *interface, rpl_instance_t *instance, rpl_neighbour_t *neighbour, uint8_t status); +bool rpl_instance_address_registration_done(protocol_interface_info_entry_t *interface, rpl_instance_t *instance, rpl_neighbour_t *neighbour, uint8_t status); struct rpl_dao_target *rpl_instance_get_active_target_confirmation(struct rpl_instance *instance); #ifdef HAVE_RPL_DAO_HANDLING diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_objective.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_objective.h index 67c35fd7..7e8293a3 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_objective.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_objective.h @@ -28,9 +28,12 @@ typedef struct rpl_objective { uint16_t ocp; /* Run the parent selection algorithm - see rpl_of0.c for detailed info */ void (*parent_selection)(struct rpl_instance *); - /* Return the path cost of a neighbour (for debug prints only) */ + /* Return the path cost of a neighbour */ uint16_t (*path_cost)(const struct rpl_neighbour *); bool (*neighbour_acceptable)(const struct rpl_instance *, const struct rpl_neighbour *); + /* Could someone with specified rank be a significantly better candidate than the existing one? */ + /* (In future, this API could be extended to pass a metric pointer as well as rank) */ + bool (*possible_better_candidate)(const struct rpl_instance *, const struct rpl_neighbour *existing, uint16_t rank, uint16_t etx); ns_list_link_t link; } rpl_objective_t; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_policy.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_policy.h index c51adc81..ac9ca67a 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_policy.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_policy.h @@ -29,9 +29,14 @@ bool rpl_policy_request_dao_acks(const rpl_domain_t *domain, uint8_t mop); uint16_t rpl_policy_initial_dao_ack_wait(const rpl_domain_t *domain, uint8_t mop); void rpl_policy_set_initial_dao_ack_wait(uint16_t timeout_in_ms); +void rpl_policy_set_minimum_dao_target_refresh(uint16_t seconds); +uint16_t rpl_policy_minimum_dao_target_refresh(void); + void rpl_policy_set_dao_retry_count(uint8_t count); int8_t rpl_policy_dao_retry_count(); +int rpl_policy_forward_link_etx_threshold_set(uint16_t etx_full_forward, uint16_t etx_full_drop); + int8_t rpl_policy_srh_next_hop_interface(rpl_domain_t *domain, int8_t if_id, const uint8_t *next_hop); uint16_t rpl_policy_modify_downward_cost_to_root_neighbour(rpl_domain_t *domain, int8_t if_id, const uint8_t *next_hop, uint16_t cost); @@ -59,6 +64,7 @@ uint_fast8_t rpl_policy_of0_rank_factor(const rpl_domain_t *domain); bool rpl_policy_of0_dodag_preference_supersedes_grounded(const rpl_domain_t *domain); uint_fast8_t rpl_policy_of0_max_backup_successors(const rpl_domain_t *domain); +void rpl_policy_set_mrhof_parent_set_size(uint8_t parent_set_size); uint_fast8_t rpl_policy_mrhof_parent_set_size(const rpl_domain_t *domain); uint16_t rpl_policy_mrhof_max_link_metric(const rpl_domain_t *domain); uint16_t rpl_policy_mrhof_parent_switch_threshold(const rpl_domain_t *domain); @@ -67,5 +73,7 @@ bool rpl_policy_parent_confirmation_requested(void); void rpl_policy_set_parent_confirmation_request(bool confirmation_requested); uint8_t rpl_policy_dio_multicast_config_advertisment_min_count(void); void rpl_policy_set_dio_multicast_config_advertisment_min_count(uint8_t min_count); +uint16_t rpl_policy_address_registration_timeout(); +void rpl_policy_set_address_registration_timeout(uint16_t timeout_in_minutes); #endif /* RPL_POLICY_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_structures.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_structures.h index 1d4dcc0c..56463cb5 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_structures.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_structures.h @@ -32,10 +32,6 @@ struct rpl_objective; /* Descriptor for a RPL neighbour within a DODAG - * - * The neighbour is normally associated with a DODAG Version, but may not be, - * if the version has been retired, and we haven't since heard from that - * neighbour. In that case dodag_version is NULL. * * Note that global address is only needed with downward routes, but I don't * think it's worth optimising for an "upward-only" build. (Unless to be a RPL @@ -45,7 +41,7 @@ struct rpl_objective; * first in the instance candidate_neighbour list, in order of preference. */ struct rpl_neighbour { - rpl_dodag_version_t *dodag_version; // Back pointer to DODAG Version (may be NULL, if not dodag_parent) + rpl_dodag_version_t *dodag_version; // Back pointer to DODAG Version uint8_t ll_address[16]; // Link-local address (source of DIO) uint8_t global_address[16]; // Global address (from DIO RIO) bool dodag_parent: 1; // This is a DODAG parent (if true, dodag_version may not be NULL) @@ -56,6 +52,7 @@ struct rpl_neighbour { unsigned dodag_pref: 4; // Preference indication for DODAG parents (0=best) uint8_t dao_path_control; // Path control bit assignments for DAO parent uint8_t old_dao_path_control; + uint8_t addr_reg_failures; // Address registration failure count (missing ACK) int8_t interface_id; uint8_t g_mop_prf; uint8_t dtsn; @@ -87,10 +84,11 @@ struct rpl_dodag { rpl_dodag_conf_t config; /* Configuration from DIO */ uint8_t info_version; /* Version for g_mop_prf and config */ bool root: 1; /* We are the root of this DODAG */ + bool was_root: 1; /* If we have ever been a root in this DODAG */ bool leaf: 1; /* We are a leaf in this DODAG (by policy) */ bool have_config: 1; /* We have the config */ bool used: 1; /* We have ever been a member of this DODAG? */ - uint8_t new_config_advertisment_count; /* We have advertiment new config at multicasti DIO */ + uint8_t new_config_advertisment_count; /* We have advertiment new config at multicasti DIO max updated value is 0xfe*/ NS_LIST_HEAD(rpl_dodag_version_t, link) versions; /* List of DODAG versions (newest first) */ prefix_list_t prefixes; /* Prefixes advertised in DIO PIOs */ rpl_dio_route_list_t routes; /* Routes advertised in DIO RIOs*/ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_upward.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_upward.h index 2780f672..b3b51b38 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_upward.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/RPL/rpl_upward.h @@ -70,6 +70,7 @@ bool rpl_instance_am_root(const rpl_instance_t *instance); uint8_t rpl_instance_mop(const rpl_instance_t *instance); rpl_dodag_version_t *rpl_instance_current_dodag_version(const rpl_instance_t *instance); rpl_neighbour_t *rpl_instance_preferred_parent(const rpl_instance_t *instance); +bool rpl_instance_possible_better_candidate(const rpl_instance_t *instance, rpl_neighbour_t *replacing, uint16_t candidate_rank, uint16_t etx); rpl_dodag_version_t *rpl_instance_predicate_match(rpl_instance_t *instance, uint8_t pred, uint8_t instance_id, const uint8_t *dodagid, uint8_t version_num); void rpl_instance_inconsistency(rpl_instance_t *instance); void rpl_instance_consistent_rx(rpl_instance_t *instance); @@ -77,15 +78,16 @@ void rpl_instance_increment_dtsn(rpl_instance_t *instance); void rpl_dodag_set_pref(rpl_dodag_t *dodag, uint8_t pref); void rpl_instance_poison(rpl_instance_t *instance, uint8_t count); void rpl_instance_force_leaf(rpl_instance_t *instance); -void rpl_instance_trigger_parent_selection(rpl_instance_t *instance, uint16_t delay); +void rpl_instance_trigger_parent_selection(rpl_instance_t *instance, uint16_t delay, rpl_dodag_t *dodag); void rpl_instance_remove_interface(rpl_instance_t *instance, int8_t if_id); void rpl_instance_dio_trigger(rpl_instance_t *instance, struct protocol_interface_info_entry *cur, const uint8_t *addr); void rpl_instance_set_local_repair(rpl_instance_t *instance, bool repair); bool rpl_instance_local_repair(const rpl_instance_t *instance); uint16_t rpl_instance_current_rank(const rpl_instance_t *instance); +uint16_t rpl_instance_candidate_rank(const rpl_neighbour_t *candidate); bool rpl_instance_address_is_parent(rpl_instance_t *instance, const uint8_t *ipv6_addr); bool rpl_instance_address_is_candidate(rpl_instance_t *instance, const uint8_t *ipv6_addr, uint16_t candidate_amount); -uint16_t rpl_instance_address_candidate_count(rpl_instance_t *instance, bool selected_parents); +uint16_t rpl_instance_address_candidate_count(const rpl_instance_t *instance, bool selected_parents); void rpl_instance_neighbor_delete(rpl_instance_t *instance, const uint8_t *ipv6_addr); void rpl_instance_slow_timer(rpl_instance_t *instance, uint16_t seconds); @@ -97,8 +99,10 @@ uint8_t rpl_dodag_mop(const rpl_dodag_t *dodag); void rpl_dodag_set_root(rpl_dodag_t *dodag, bool root); #ifdef HAVE_RPL_ROOT bool rpl_dodag_am_root(const rpl_dodag_t *dodag); +bool rpl_dodag_was_root(const rpl_dodag_t *dodag); #else #define rpl_dodag_am_root(dodag) false +#define rpl_dodag_was_root(dodag) false #endif uint8_t rpl_dodag_get_version_number_as_root(const rpl_dodag_t *dodag); void rpl_dodag_set_version_number_as_root(rpl_dodag_t *dodag, uint8_t number); @@ -131,6 +135,7 @@ void rpl_dodag_version_raise_greediness(rpl_dodag_version_t *version, uint16_t p bool rpl_dodag_version_rank_indicates_possible_sub_dodag(const rpl_dodag_version_t *version, uint16_t rank); rpl_neighbour_t *rpl_lookup_neighbour_by_ll_address(const rpl_instance_t *instance, const uint8_t *addr, int8_t if_id); +rpl_neighbour_t *rpl_lookup_last_candidate_from_list(const rpl_instance_t *instance); rpl_neighbour_t *rpl_create_neighbour(rpl_dodag_version_t *instance, const uint8_t *ll_addr, int8_t if_id, uint8_t g_mop_prf, uint8_t dtsn); void rpl_delete_neighbour(rpl_instance_t *instance, rpl_neighbour_t *neighbour); bool rpl_dodag_update_config(rpl_dodag_t *dodag, const rpl_dodag_conf_t *conf, const uint8_t *src, bool *become_leaf); @@ -142,7 +147,7 @@ bool rpl_neighbour_update_dtsn(rpl_neighbour_t *neighbour, uint8_t dtsn); rpl_instance_t *rpl_neighbour_instance(const rpl_neighbour_t *neighbour); -void rpl_instance_neighbours_changed(rpl_instance_t *instance, const rpl_dodag_t *dodag); +void rpl_instance_neighbours_changed(rpl_instance_t *instance, rpl_dodag_t *dodag); void rpl_instance_run_parent_selection(rpl_instance_t *instance); void rpl_upward_print_instance(rpl_instance_t *instance, route_print_fn_t *print_fn); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/kmp/kmp_api.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/kmp/kmp_api.h index c690aa9e..062b36b4 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/kmp/kmp_api.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/kmp/kmp_api.h @@ -43,18 +43,26 @@ typedef enum { IEEE_802_11_GKH_KEY = 17 } kmp_type_e; - typedef enum { - KMP_RESULT_OK = 0, - KMP_RESULT_ERR_NO_MEM = -1, - KMP_RESULT_ERR_UNSPEC = -2 + KMP_RESULT_OK = 0, // Successful + KMP_RESULT_ERR_NO_MEM = -1, // No memory + KMP_RESULT_ERR_TX_NO_ACK = -2, // No acknowledge was received + KMP_RESULT_ERR_UNSPEC = -3 // Other reason } kmp_result_e; +typedef enum { + KMP_TX_OK = 0, // Successful + KMP_TX_ERR_TX_NO_ACK = -1, // No acknowledge was received + KMP_TX_ERR_UNSPEC = -2, // Other reason +} kmp_tx_status_e; + typedef void kmp_sec_keys_t; typedef struct sec_prot_s sec_prot_t; typedef struct kmp_api_s kmp_api_t; typedef struct kmp_service_s kmp_service_t; +struct ws_cfg_settings_s; + /** * kmp_api_create_request KMP-CREATE.request * @@ -117,11 +125,12 @@ typedef void kmp_api_finished(kmp_api_t *kmp); * * \param service KMP service * \param type KMP type + * \param cfg configuration * * \return KMP instance or NULL * */ -kmp_api_t *kmp_api_create(kmp_service_t *service, kmp_type_e type); +kmp_api_t *kmp_api_create(kmp_service_t *service, kmp_type_e type, sec_prot_cfg_t *cfg); /** * kmp_api_start start KMP api @@ -201,6 +210,16 @@ void kmp_api_data_set(kmp_api_t *kmp, void *data); */ void *kmp_api_data_get(kmp_api_t *kmp); +/** + * kmp_api_id_get get KMP instance identifier + * + * \param kmp instance + * + * \return instance identifier + * + */ +uint8_t kmp_api_instance_id_get(kmp_api_t *kmp); + /** * kmp_api_addr_set set address * @@ -262,6 +281,17 @@ int8_t kmp_service_delete(kmp_service_t *service); */ typedef kmp_api_t *kmp_service_incoming_ind(kmp_service_t *service, kmp_type_e type, const kmp_addr_t *addr); +/** + * kmp_service_tx_status_ind Notifies application about TX status + * + * \param service KMP service + * \param instance_id KMP instance identifier + * + * \return KMP instance or NULL + * + */ +typedef kmp_api_t *kmp_service_tx_status_ind(kmp_service_t *service, uint8_t instance_id); + /** * kmp_service_addr_get gets addressing information related to KMP * @@ -290,13 +320,15 @@ typedef kmp_api_t *kmp_service_api_get(kmp_service_t *service, kmp_api_t *kmp, k * * \param service KMP service * \param incoming_ind incoming message callback + * \param tx_status tx status callback * \param addr_get gets addressing information callback + * \param api_get gets KMP API from KMP service * * \return < 0 failure * \return >= 0 success * */ -int8_t kmp_service_cb_register(kmp_service_t *service, kmp_service_incoming_ind *incoming_ind, kmp_service_addr_get *addr_get, kmp_service_api_get *api_get); +int8_t kmp_service_cb_register(kmp_service_t *service, kmp_service_incoming_ind *incoming_ind, kmp_service_tx_status_ind *tx_status_ind, kmp_service_addr_get *addr_get, kmp_service_api_get *api_get); /** * kmp_service_msg_if_receive receive a message @@ -321,12 +353,13 @@ int8_t kmp_service_msg_if_receive(kmp_service_t *service, kmp_type_e kmp_id, con * \param addr address * \param pdu pdu * \param size pdu size + * \param tx_identifier TX identifier * * \return < 0 failure * \return >= 0 success * */ -typedef int8_t kmp_service_msg_if_send(kmp_service_t *service, kmp_type_e type, const kmp_addr_t *addr, void *pdu, uint16_t size); +typedef int8_t kmp_service_msg_if_send(kmp_service_t *service, kmp_type_e type, const kmp_addr_t *addr, void *pdu, uint16_t size, uint8_t tx_identifier); /** * kmp_service_msg_if_register registers message interface @@ -341,6 +374,19 @@ typedef int8_t kmp_service_msg_if_send(kmp_service_t *service, kmp_type_e type, */ int8_t kmp_service_msg_if_register(kmp_service_t *service, kmp_service_msg_if_send *send, uint8_t header_size); +/** + * kmp_service_tx_status tx status indication + * + * \param service KMP service + * \param tx_status tx status + * \param tx_identifier tx identifier + * + * \return < 0 failure + * \return >= 0 success + * + */ +int8_t kmp_service_tx_status_indication(kmp_service_t *service, kmp_tx_status_e tx_status, uint8_t tx_identifier); + /** * kmp_sec_prot_size security protocol data size * diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/eap_tls_sec_prot/supp_eap_tls_sec_prot.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/eap_tls_sec_prot/supp_eap_tls_sec_prot.h index 2b1dded5..78ececd7 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/eap_tls_sec_prot/supp_eap_tls_sec_prot.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/eap_tls_sec_prot/supp_eap_tls_sec_prot.h @@ -33,27 +33,5 @@ */ int8_t supp_eap_tls_sec_prot_register(kmp_service_t *service); -/** - * supp_eap_sec_prot_timing_adjust Adjust retries and timings of the 4WH protocol - * - * Timing value is a generic number between 0 to 32 that goes from fast and - * reactive network to low bandwidth and long latency. - * - * example value definitions: - * 0-8 very fast network - * 9-16 medium network - * 16-24 slow network - * 25-32 extremely slow network - * - * There is no need to have lots variations in every layer if protocol is not very active in any case. - * - * \param timing Timing value. - * - * \return < 0 failure - * \return >= 0 success - * - */ -int8_t supp_eap_sec_prot_timing_adjust(uint8_t timing); - #endif /* SUPP_EAP_TLS_SEC_PROT_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/fwh_sec_prot/supp_fwh_sec_prot.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/fwh_sec_prot/supp_fwh_sec_prot.h index 83696258..2cb2284e 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/fwh_sec_prot/supp_fwh_sec_prot.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/fwh_sec_prot/supp_fwh_sec_prot.h @@ -34,26 +34,4 @@ */ int8_t supp_fwh_sec_prot_register(kmp_service_t *service); -/** - * supp_fwh_sec_prot_timing_adjust Adjust retries and timings of the 4WH protocol - * - * Timing value is a generic number between 0 to 32 that goes from fast and - * reactive network to low bandwidth and long latency. - * - * example value definitions: - * 0-8 very fast network - * 9-16 medium network - * 16-24 slow network - * 25-32 extremely slow network - * - * There is no need to have lots variations in every layer if protocol is not very active in any case. - * - * \param timing Timing value. - * - * \return < 0 failure - * \return >= 0 success - * - */ -int8_t supp_fwh_sec_prot_timing_adjust(uint8_t timing); - #endif /* SUPP_FWH_SEC_PROT_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/key_sec_prot/key_sec_prot.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/key_sec_prot/key_sec_prot.h index 9cb00897..e059ab7b 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/key_sec_prot/key_sec_prot.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/key_sec_prot/key_sec_prot.h @@ -26,13 +26,23 @@ */ /** - * key_sec_prot_register register EAPOL-Key protocol to KMP service + * supp_key_sec_prot_register register supplicant EAPOL-Key protocol to KMP service * * \param service KMP service * * \return < 0 failure * \return >= 0 success */ -int8_t key_sec_prot_register(kmp_service_t *service); +int8_t supp_key_sec_prot_register(kmp_service_t *service); + +/** + * auth_key_sec_prot_register register authenticator EAPOL-Key protocol to KMP service + * + * \param service KMP service + * + * \return < 0 failure + * \return >= 0 success + */ +int8_t auth_key_sec_prot_register(kmp_service_t *service); #endif /* KEY_SEC_PROT_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot.h index 59929a72..556d769f 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot.h @@ -30,9 +30,11 @@ typedef enum { SEC_RESULT_OK = 0, SEC_RESULT_ERR_NO_MEM = -1, - SEC_RESULT_TIMEOUT = -2, - SEC_RESULT_ERROR = -3, - SEC_RESULT_CONF_ERROR = -4 + SEC_RESULT_ERR_TX_NO_ACK = -2, + SEC_RESULT_ERR_UNSPEC = -3, + SEC_RESULT_TIMEOUT = -4, + SEC_RESULT_ERROR = -5, + SEC_RESULT_CONF_ERROR = -6 } sec_prot_result_e; typedef enum { @@ -50,6 +52,12 @@ typedef enum { SEC_PROT_TYPE_TLS } sec_prot_type_e; +typedef enum { + SEC_PROT_TX_OK = 0, // Successful + SEC_PROT_TX_ERR_TX_NO_ACK = -1, // No acknowledge was received + SEC_PROT_TX_ERR_UNSPEC = -2, // Other reason +} sec_prot_tx_status_e; + /** * sec_prot_create_request KMP-CREATE.request to security protocol * @@ -137,6 +145,18 @@ typedef int8_t sec_prot_receive(sec_prot_t *prot, void *pdu, uint16_t size); */ typedef int8_t sec_prot_send(sec_prot_t *prot, void *pdu, uint16_t size); +/** + * sec_prot_tx_status_ind tx status indication + * + * \param prot protocol + * \param tx_status tx status + * + * \return < 0 failure + * \return >= 0 success + * + */ +typedef int8_t sec_prot_tx_status_ind(sec_prot_t *prot, sec_prot_tx_status_e tx_status); + /** * sec_prot_delete delete the protocol data * @@ -232,6 +252,7 @@ struct sec_prot_s { sec_prot_send *send; /**< Protocol send */ sec_prot_receive *receive; /**< Protocol receive */ + sec_prot_tx_status_ind *tx_status_ind; /**< TX status indication */ sec_prot_delete *delete; /**< Protocol delete */ @@ -247,6 +268,7 @@ struct sec_prot_s { sec_prot_receive_disable *receive_disable; /**< Disable receiving of messages */ sec_prot_keys_t *sec_keys; /**< Security keys storage pointer */ + sec_prot_cfg_t *cfg; /**< Configuration pointer */ uint8_t header_size; /**< Header size */ sec_prot_int_data_t *data; /**< Protocol internal data */ }; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_cfg.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_cfg.h new file mode 100644 index 00000000..fa2a88da --- /dev/null +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_cfg.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2020, Arm Limited and affiliates. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ + +#ifndef SEC_PROT_CFG_H_ +#define SEC_PROT_CFG_H_ + +/* Security protocol configuration settings */ + +typedef struct sec_prot_cfg_s { + trickle_params_t sec_prot_trickle_params; + uint16_t sec_prot_retry_timeout; + uint16_t sec_max_ongoing_authentication; +} sec_prot_cfg_t; + +#endif /* SEC_PROT_CONF_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_keys.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_keys.h index 1653810b..9df42293 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_keys.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Security/protocols/sec_prot_keys.h @@ -54,6 +54,7 @@ #define GTK_HASH_LEN 8 #define GTK_ALL_HASHES_LEN GTK_HASH_LEN * GTK_NUM +#define INS_GTK_HASH_LEN 2 #define PMK_LIFETIME_INSTALL 0xFFFFF #define PTK_LIFETIME_INSTALL 0xFFFFF @@ -71,18 +72,24 @@ typedef struct { bool updated: 1; /**< Group Transient Keys has been updated */ } sec_prot_gtk_keys_t; +typedef struct { + uint8_t hash[INS_GTK_HASH_LEN]; /**< Inserted GTKs for a PTK hash */ +} sec_prot_gtk_hash_t; + // Security key data typedef struct { uint64_t pmk_key_replay_cnt; /**< Pairwise Master Key replay counter */ uint8_t pmk[PMK_LEN]; /**< Pairwise Master Key (256 bits) */ uint8_t ptk[PTK_LEN]; /**< Pairwise Transient Key (384 bits) */ uint8_t ptk_eui_64[8]; /**< Remote EUI-64 used to derive PTK or NULL */ + sec_prot_gtk_hash_t ins_gtk_hash[GTK_NUM]; /**< Hashes for inserted GTKs for a PTK */ sec_prot_gtk_keys_t *gtks; /**< Group Transient Keys */ const sec_prot_certs_t *certs; /**< Certificates */ uint32_t pmk_lifetime; /**< PMK lifetime in seconds */ uint32_t ptk_lifetime; /**< PTK lifetime in seconds */ uint8_t gtkl; /**< Remote GTKL information */ int8_t gtk_set_index; /**< Index of GTK to set */ + unsigned ins_gtk_hash_set: 4; /**< Hash for inserted GTKs for a PTK set */ bool pmk_set: 1; /**< Pairwise Master Key set */ bool ptk_set: 1; /**< Pairwise Transient Key set */ bool pmk_key_replay_cnt_set: 1; /**< Pairwise Master Key replay counter set */ @@ -92,6 +99,18 @@ typedef struct { bool ptk_mismatch: 1; /**< Remote PTK mismatch reported */ } sec_prot_keys_t; +// Frame counter data +typedef struct { + uint8_t gtk[GTK_LEN]; /**< GTK of the frame counter */ + uint32_t frame_counter; /**< Current frame counter */ + uint32_t stored_frame_counter; /**< Stored Frame counter */ + bool set : 1; /**< Value has been set */ +} frame_counter_t; + +typedef struct { + frame_counter_t counter[GTK_NUM]; /**< Frame counter for each GTK key */ +} frame_counters_t; + /* * GTK mismatch types, list is ordered according to priority of mismatch i.e. if there * are both hash and lifetime mismatch, hash has greater priority @@ -632,6 +651,27 @@ bool sec_prot_keys_gtk_status_is_live(sec_prot_gtk_keys_t *gtks, uint8_t index); */ void sec_prot_keys_gtks_hash_generate(sec_prot_gtk_keys_t *gtks, uint8_t *gtk_hash); +/** + * sec_prot_keys_gtk_hash_generate generate GTK hash for a GTK + * + * \param gtk GTK key + * \param gtk_hash GTK hash for a GTK + * + * \return < 0 failure + * \return >= 0 success + */ +int8_t sec_prot_keys_gtk_hash_generate(uint8_t *gtk, uint8_t *gtk_hash); + +/** + * sec_prot_keys_gtk_valid_check check if GTK is valid + * + * \param gtk GTK key + * + * \return < 0 failure + * \return >= 0 success + */ +int8_t sec_prot_keys_gtk_valid_check(uint8_t *gtk); + /** * sec_prot_keys_gtks_hash_update update GTKs based on GTK hash * @@ -731,4 +771,30 @@ int8_t sec_prot_keys_gtk_install_index_get(sec_prot_gtk_keys_t *gtks); */ uint8_t sec_prot_keys_gtk_count(sec_prot_gtk_keys_t *gtks); +/** + * sec_prot_keys_ptk_installed_gtk_hash_clear_all clear GTK hashes of the GTKs that has been installed + * to supplicant using the PTK + * \param sec_keys security keys + * + */ +void sec_prot_keys_ptk_installed_gtk_hash_clear_all(sec_prot_keys_t *sec_keys); + +/** + * sec_prot_keys_ptk_installed_gtk_hash_set set GTK hash of the GTK that has been installed + * to supplicant using the current PTK + * + * \param sec_keys security keys + * + */ +void sec_prot_keys_ptk_installed_gtk_hash_set(sec_prot_keys_t *sec_keys); + +/** + * sec_prot_keys_ptk_installed_gtk_hash_set check if PTK is being used to store new GTK for the index + * for the supplicant i.e. GTK hash would change + * + * \param sec_keys security keys + * + */ +bool sec_prot_keys_ptk_installed_gtk_hash_mismatch_check(sec_prot_keys_t *sec_keys, uint8_t gtk_index); + #endif /* SEC_PROT_KEYS_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/Trickle/trickle.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/Trickle/trickle.h index 60ffa25f..a6c95782 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/Trickle/trickle.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/Trickle/trickle.h @@ -76,5 +76,10 @@ bool trickle_running(const trickle_t *t, const trickle_params_t *params); /* Stop the timer (by setting e to infinite) */ void trickle_stop(trickle_t *t); +/* + * Call return max time after n count expiration period 0 return 1 Imin - 1 period + * + */ +uint32_t trickle_timer_max(const trickle_params_t *params, uint8_t trickle_timer_expiration); #endif /* TRICKLE_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/etx/etx.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/etx/etx.h index 55c12545..c785cc5c 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/etx/etx.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/etx/etx.h @@ -64,7 +64,6 @@ typedef struct etx_sample_storage_s { uint16_t attempts_count; /*!< TX attempt count */ uint8_t etx_timer; /*!< Count down from configured value 0 means that ETX Update is possible done again*/ uint8_t received_acks; /*!< Received ACK's */ - uint8_t sample_count; /*!< Finished TX count */ } etx_sample_storage_t; /** @@ -237,17 +236,6 @@ uint8_t etx_accum_failures_callback_register(nwk_interface_id nwk_id, int8_t int */ void etx_neighbor_remove(int8_t interface_id, uint8_t attribute_index); -/** - * \brief A function to add ETX neighbor - * - * Notifies ETX module that neighbor has been added. Calls ETX value change callback - * if that is set. - * - * \param attribute_index Neighbour attribute index - * - */ -void etx_neighbor_add(int8_t interface_id, uint8_t attribute_index); - /** * \brief A function for update cached ETX calculation * @@ -266,13 +254,14 @@ void etx_cache_timer(int8_t interface_id, uint16_t seconds_update); * ETX update will happen when min wait time is reached and also reached min etx sample count. * * \param min_wait_time how many seconds must wait before do new ETX - * \param etx_min_sample_count define how many completed TX process must be done for new ETX. Min accepted value is 4. + * \param etx_min_attempts_count define how many TX attempts process must be done for new ETX. Min accepted value is 4. + * \param init_etx_sample_count How Many sample is need to init etx calculate * * \return true Enable is OK * \return false Memory allocation fail * */ -bool etx_cached_etx_parameter_set(uint8_t min_wait_time, uint8_t etx_min_sample_count); +bool etx_cached_etx_parameter_set(uint8_t min_wait_time, uint8_t etx_min_attempts_count, uint8_t init_etx_sample_count); /** @@ -285,4 +274,14 @@ bool etx_cached_etx_parameter_set(uint8_t min_wait_time, uint8_t etx_min_sample_ */ void etx_max_update_set(uint16_t etx_max_update); +/** + * \brief A function for set Maxium ETX value + * + * ETX RFC define that that Max value is 0xffff but this API cuold make that Poor link start go down slowly. + * + * \param etx_max 0 No limit for higher value means. This pameter will change normal ETX which could be 0xffff. + * + */ +void etx_max_set(uint16_t etx_max); + #endif /* ETX_H_ */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_common.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_common.h index 35e1d0cc..724351d0 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_common.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_common.h @@ -40,6 +40,8 @@ struct fhss_structure { int8_t fhss_event_timer; uint8_t active_fhss_events; uint16_t number_of_channels; + uint16_t number_of_uc_channels; + uint16_t optimal_packet_length; fhss_states fhss_state; uint32_t fhss_timeout; uint32_t fhss_timer; diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_ws.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_ws.h index 917b5998..c3d31fa6 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_ws.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/fhss/fhss_ws.h @@ -21,8 +21,10 @@ * At least 4 channel retries must be used: (Initial channel + WS_NUMBER_OF_CHANNEL_RETRIES) * MAC attempts = (1+4)*4=20 attempts */ #define WS_NUMBER_OF_CHANNEL_RETRIES 4 -//TX/RX slot length in milliseconds -#define WS_MAX_TXRX_SLOT_LEN_MS 100 +// TX slot length is optimised to this packet length +#define OPTIMAL_PACKET_LENGTH 500 +// Default TX/RX slot length in milliseconds. Is used when datarate is not given by PHY. +#define WS_TXRX_SLOT_LEN_MS 100 // Default minimum broadcast synchronization interval in seconds #define DEFAULT_MIN_SYNCH_INTERVAL 60 // Drift compensation allowed if at least SYNCH_COMPENSATION_MIN_INTERVAL (seconds) since last synchronization @@ -55,5 +57,6 @@ int fhss_ws_set_parent(fhss_structure_t *fhss_structure, const uint8_t eui64[8], int fhss_ws_remove_parent(fhss_structure_t *fhss_structure, const uint8_t eui64[8]); int fhss_ws_configuration_set(fhss_structure_t *fhss_structure, const fhss_ws_configuration_t *fhss_configuration); int fhss_ws_set_hop_count(fhss_structure_t *fhss_structure, const uint8_t hop_count); +void fhss_set_txrx_slot_length(fhss_structure_t *fhss_structure); #endif /*FHSS_WS_H_*/ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/utils/ns_crc.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/utils/ns_crc.h index f229b97e..92fad322 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/utils/ns_crc.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/Service_Libs/utils/ns_crc.h @@ -31,7 +31,7 @@ uint16_t crc16_ccitt(uint8_t *message, int nBytes); /** * @param data data which crc will be calculate - * @param data_length Lenght of data pointer + * @param data_length Length of data pointer * @param polynomial Polynomial which will be used to calculate CRC, POLYNOMIAL_CRC15_CCIT, POLYNOMIAL_CRC15_ANSI * @return Calculated 16bit CRC value */ diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6.h index e3cb6128..c495a18f 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6.h @@ -26,10 +26,18 @@ #include "ns_list.h" +typedef struct dhcp_duid_options_params { + uint16_t type; + uint16_t duid_length; + uint8_t *duid; +} dhcp_duid_options_params_t; + typedef struct { - uint16_t linkType; - uint8_t *linkID; + uint16_t link_type; + uint32_t link_time; + uint8_t *link_id; } dhcp_link_options_params_t; + typedef struct { uint16_t type; uint16_t len; @@ -49,8 +57,8 @@ typedef struct { } dhcpv6_ia_non_temporal_address_s; typedef struct { - dhcp_link_options_params_t clientDUID; - dhcp_link_options_params_t serverDUID; + dhcp_duid_options_params_t clientDUID; + dhcp_duid_options_params_t serverDUID; uint32_t transaction_ID; uint32_t iaId; uint32_t T0; @@ -66,7 +74,7 @@ typedef struct { typedef struct { uint8_t messageType; uint32_t transActionId; - dhcp_link_options_params_t clientDUID; + dhcp_duid_options_params_t clientDUID; uint32_t iaID; uint32_t timerT0; uint32_t timerT1; @@ -93,19 +101,19 @@ typedef struct dhcpv6_ia_nontemp_addres_entry_t { typedef struct dhcpv6_client_server_entry_s { int8_t interfaceId; uint8_t instanceId; // instance identifying specific client + uint8_t dyn_server_duid_length; bool useServerAddress; //This indicate bool iaNonTemporalStructValid; bool GlobalAddress; uint8_t server_address[16]; - uint8_t serverLinkId[8]; - uint16_t serverLinkType; - uint8_t clientId[8]; - uint16_t clientLinkIdType; + uint8_t *serverDynamic_DUID; uint32_t T0; uint32_t T1; uint32_t IAID; //Take random for that uint32_t transActionId; //Client save this and use for get uint32_t reNewTimer; + dhcp_duid_options_params_t clientDUID; + dhcp_duid_options_params_t serverDUID; dhcpv6_ia_nontemp_addres_entry_t iaNontemporalAddress; // Dynamical Part ns_list_link_t link; /*!< List link entry */ } dhcpv6_client_server_data_t; @@ -188,7 +196,10 @@ typedef struct dhcpv6_relay_msg { #define DHCPV6_SERVER_ID_MAC64_OPTION_LEN 0x000c /** Server Identifier END */ /** Common for server and Client Identifier option */ +#define DHCPV6_DUID_LINK_LAYER_PLUS_TIME_TYPE 0x0001 +#define DHCPV6_DUID_EN_TYPE 0x0002 #define DHCPV6_DUID_LINK_LAYER_TYPE 0x0003 +#define DHCPV6_DUID_UUID_TYPE 0x0004 #define DHCPV6_DUID_HARDWARE_IEEE_802_NETWORKS_TYPE 0x0006 #define DHCPV6_DUID_HARDWARE_EUI64_TYPE 0x001b #define DHCPV6_DUID_HARDWARE_EUI48_TYPE 0x0001 @@ -226,7 +237,7 @@ typedef struct dhcpv6_relay_msg { /** DHCPv6 client Nontemporal address and server data allocate, free and search */ -dhcpv6_client_server_data_t *libdhcvp6_nontemporalAddress_server_data_allocate(int8_t interfaceId, uint8_t instanceId, uint8_t *duiId, uint16_t duiLinkType, uint8_t *nonTemporalPrefix, uint8_t *serverIPv6Address); +dhcpv6_client_server_data_t *libdhcvp6_nontemporalAddress_server_data_allocate(int8_t interfaceId, uint8_t instanceId, uint8_t *nonTemporalPrefix, uint8_t *serverIPv6Address); void libdhcvp6_nontemporalAddress_server_data_free(dhcpv6_client_server_data_t *removedEntry); uint32_t libdhcpv6_renew_time_define(dhcpv6_client_server_data_t *addresInfo); @@ -262,26 +273,29 @@ int libdhcpv6_message_option_discover(uint8_t *ptr, uint16_t data_len, uint16_t #define libdhcpv6_client_last_transaction_time_option_size() 8 /** Dynamic Option lengths */ -uint16_t libdhcpv6_duid_option_size(uint16_t linkType); +uint16_t libdhcpv6_duid_option_size(uint16_t duidLength); +uint8_t libdhcpv6_duid_linktype_size(uint16_t linkType); uint16_t libdhcvp6_request_option_size(uint8_t optionCnt); uint16_t libdhcpv6_non_temporal_address_size(bool addressDefined); -uint16_t libdhcpv6_solication_message_length(uint16_t clientLinkType, bool addressDefined, uint8_t requestOptionCount); -uint16_t libdhcpv6_address_request_message_len(uint16_t clientLinkType, uint16_t serverLinkType, uint8_t requstOptionCnt, bool add_address); +uint16_t libdhcpv6_solication_message_length(uint16_t clientDUIDLength, bool addressDefined, uint8_t requestOptionCount); +uint16_t libdhcpv6_address_request_message_len(uint16_t clientDUIDLength, uint16_t serverDUIDLength, uint8_t requstOptionCnt, bool add_address); #ifdef HAVE_DHCPV6_SERVER -uint16_t libdhcpv6_address_reply_message_len(uint16_t clientLinkType, uint16_t serverLinkType, uint16_t vendorDataLen, bool rapidCommon, bool status); +uint16_t libdhcpv6_address_reply_message_len(uint16_t clientDUIDLength, uint16_t serverDUIDLength, uint16_t vendorDataLen, bool rapidCommon, bool status); #else -#define libdhcpv6_address_reply_message_len(clientLinkType, serverLinkType, vendorDataLen, rapidCommon, status) 0 +#define libdhcpv6_address_reply_message_len(clientDUIDLength, serverDUIDLength, vendorDataLen, rapidCommon, status) 0 #endif -uint8_t *libdhcpv6_generic_nontemporal_address_message_write(uint8_t *ptr, dhcpv6_solication_base_packet_s *packet, dhcpv6_ia_non_temporal_address_s *nonTemporalAddress, dhcp_link_options_params_t *serverLink); +uint8_t *libdhcpv6_generic_nontemporal_address_message_write(uint8_t *ptr, dhcpv6_solication_base_packet_s *packet, dhcpv6_ia_non_temporal_address_s *nonTemporalAddress, dhcp_duid_options_params_t *serverLink); uint8_t *libdhcpv6_reply_message_write(uint8_t *ptr, dhcpv6_reply_packet_s *replyPacket, dhcpv6_ia_non_temporal_address_s *nonTemporalAddress, dhcpv6_vendor_data_packet_s *vendorData); uint8_t *libdhcpv6_dhcp_relay_msg_write(uint8_t *ptr, uint8_t type, uint8_t hop_limit, uint8_t *peer_addres, uint8_t *link_address); uint8_t *libdhcpv6_dhcp_option_header_write(uint8_t *ptr, uint16_t length); int libdhcpv6_get_IA_address(uint8_t *ptr, uint16_t data_length, dhcp_ia_non_temporal_params_t *params); -int libdhcpv6_get_duid_by_selected_type_id_opt(uint8_t *ptr, uint16_t data_length, uint16_t type, dhcp_link_options_params_t *params); -int libdhcpv6_compare_DUID(dhcp_link_options_params_t *targetId, dhcp_link_options_params_t *parsedId); +int libdhcpv6_get_duid_by_selected_type_id_opt(uint8_t *ptr, uint16_t data_length, uint16_t type, dhcp_duid_options_params_t *params); +bool libdhcpv6_duid_length_validate(uint16_t duid_type, uint16_t duid_length); +int libdhcpv6_get_link_address_from_duid(uint8_t *ptr, uint16_t data_length, uint16_t type, dhcp_link_options_params_t *params); +int libdhcpv6_compare_DUID(dhcp_duid_options_params_t *targetId, dhcp_duid_options_params_t *parsedId); /** * This Function write dhcpv6 basic header @@ -346,23 +360,23 @@ uint8_t *libdhcvp6_request_option_write(uint8_t *ptr, uint8_t optionCnt, uint16_ * * return incremented pointer after write */ -uint8_t *libdhcpv6_duid_option_write(uint8_t *ptr, uint16_t duidRole, const dhcp_link_options_params_t *duid); +uint8_t *libdhcpv6_duid_option_write(uint8_t *ptr, uint16_t duidRole, const dhcp_duid_options_params_t *duid); uint8_t *libdhcpv6_ia_address_option_write(uint8_t *ptr, const uint8_t *addressPtr, uint32_t preferredValidLifeTime, uint32_t validLifeTime); uint8_t *libdhcpv6_identity_association_option_write(uint8_t *ptr, uint32_t iaID, uint32_t TimerT1, uint32_t TimerT2, bool withAddress); uint8_t *libdhcpv6_identity_association_option_write_with_status(uint8_t *ptr, uint32_t iaID, uint32_t TimerT1, uint32_t TimerT2, uint16_t status); uint8_t *libdhcpv6_status_code_write(uint8_t *ptr, uint16_t statusCode); uint8_t *libdhcpv6_prefix_delegation_info_option_write(uint8_t *ptr, uint32_t iaId); -int libdhcpv6_reply_message_option_validate(dhcp_link_options_params_t *clientId, dhcp_link_options_params_t *serverId, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params, uint8_t *ptr, uint16_t data_length); +int libdhcpv6_reply_message_option_validate(dhcp_duid_options_params_t *clientId, dhcp_duid_options_params_t *serverId, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params, uint8_t *ptr, uint16_t data_length); #ifdef HAVE_DHCPV6_SERVER -int libdhcpv6_renew_message_options_validate(uint8_t *ptr, uint16_t data_length, dhcp_link_options_params_t *clientLinkData, dhcp_link_options_params_t *serverLinkData, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params); -int libdhcpv6_solication_message_options_validate(uint8_t *ptr, uint16_t data_length, dhcp_link_options_params_t *clientLink, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params); +int libdhcpv6_renew_message_options_validate(uint8_t *ptr, uint16_t data_length, dhcp_duid_options_params_t *clientLinkData, dhcp_duid_options_params_t *serverLinkData, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params); +int libdhcpv6_solication_message_options_validate(uint8_t *ptr, uint16_t data_length, dhcp_duid_options_params_t *clientLink, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params); #else #define libdhcpv6_renew_message_options_validate(ptr, data_length, clientLinkData, serverLinkData, dhcp_ia_non_temporal_params) -1 #define libdhcpv6_solication_message_options_validate(ptr, data_length, clientLink, dhcp_ia_non_temporal_params) -1 #endif -int libdhcpv6_advertisment_message_option_validate(dhcp_link_options_params_t *clientId, dhcp_link_options_params_t *serverId, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params, uint8_t *ptr, uint16_t data_length); +int libdhcpv6_advertisment_message_option_validate(dhcp_duid_options_params_t *clientId, dhcp_duid_options_params_t *serverId, dhcp_ia_non_temporal_params_t *dhcp_ia_non_temporal_params, uint8_t *ptr, uint16_t data_length); bool libdhcpv6_rapid_commit_option_at_packet(uint8_t *ptr, uint16_t length); bool libdhcpv6_time_elapsed_option_at_packet(uint8_t *ptr, uint16_t length); bool libdhcpv6_relay_msg_read(uint8_t *ptr, uint16_t length, dhcpv6_relay_msg_t *relay_msg); diff --git a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6_server.h b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6_server.h index 02977f3b..3b4c0643 100644 --- a/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6_server.h +++ b/cores/arduino/mbed/features/nanostack/sal-stack-nanostack/source/libDHCPv6/libDHCPv6_server.h @@ -26,29 +26,38 @@ #ifdef HAVE_DHCPV6_SERVER #include "ns_list.h" +#include "libDHCPv6/libDHCPv6.h" + +#define MAX_SUPPORTED_ADDRESS_LIST_SIZE 0x0000fffd +#define DHCP_ADDRESS_ID_START 2 + typedef void (dhcp_address_prefer_remove_cb)(int8_t interfaceId, uint8_t *targetAddress, void *prefix_info); -typedef struct dhcpv6_alloacted_address_entry_s { - uint8_t nonTemporalAddress[16]; +typedef struct dhcpv6_allocated_address_entry_s { uint8_t linkId[8]; /*!< Services UL64 */ - uint16_t linkType; uint32_t iaID; uint32_t T0; uint32_t T1; uint32_t preferredLifetime; uint32_t lifetime; + uint16_t linkType; + uint16_t allocatedID; ns_list_link_t link; /*!< List link entry */ -} dhcpv6_alloacted_address_entry_t; +} dhcpv6_allocated_address_entry_t; -typedef NS_LIST_HEAD(dhcpv6_alloacted_address_entry_t, link) dhcpv6_alloacted_address_list_t; -typedef struct thread_dhcpv6_server_data_s { - uint8_t prefix[8]; /*!< Services Prefix */ - uint16_t maxSuppertedClients; - uint32_t clientIdSequence; /*!< Define */ - dhcpv6_alloacted_address_list_t allocatedAddressList; - ns_list_link_t link; /*!< List link entry */ -} dhcpv6_server_data_entry_t; +typedef struct dhcpv6_allocated_address_s { + uint8_t nonTemporalAddress[16]; + uint8_t linkId[8]; /*!< Services UL64 */ + uint16_t linkType; + uint32_t iaID; + uint32_t T0; + uint32_t T1; + uint32_t preferredLifetime; + uint32_t lifetime; +} dhcpv6_allocated_address_t; + +typedef NS_LIST_HEAD(dhcpv6_allocated_address_entry_t, link) dhcpv6_allocated_address_list_t; typedef struct dhcp_address_cache_update { uint8_t *allocatedAddress; @@ -59,31 +68,37 @@ typedef struct dhcp_address_cache_update { typedef bool (dhcp_address_add_notify_cb)(int8_t interfaceId, dhcp_address_cache_update_t *address_info, void *route_src); typedef struct dhcpv6_gua_server_entry_s { - int8_t interfaceId; - bool enableAddressAutonous; - uint16_t socketInstance_id; - uint8_t guaPrefix[8]; - uint8_t serverDUID[8]; - uint16_t serverLinkType; - uint32_t maxSuppertedClients; - uint32_t clientIdDefaultSuffics; - uint32_t clientIdSequence; /*!< Define */ - uint32_t validLifetime; - dhcp_address_prefer_remove_cb *removeCb; + int8_t interfaceId; + bool enableAddressAutonous: 1; + bool disableAddressListAllocation: 1; + uint16_t socketInstance_id; + uint8_t guaPrefix[8]; + uint8_t serverDynamic_DUID_length; + uint32_t maxSupportedClients; + uint8_t clientIdDefaultSuffics[6]; + uint16_t firstFreedId; + uint16_t firstUnusedId; /*!< This is first unused Id */ + uint32_t validLifetime; + dhcp_duid_options_params_t serverDUID; + uint8_t *serverDynamic_DUID; + dhcp_address_prefer_remove_cb *removeCb; dhcp_address_add_notify_cb *addCb; - dhcpv6_alloacted_address_list_t allocatedAddressList; + dhcpv6_allocated_address_list_t allocatedAddressList; + dhcpv6_allocated_address_t tempAddressEntry; ns_list_link_t link; /*!< List link entry */ } dhcpv6_gua_server_entry_s; bool libdhcpv6_gua_server_list_empty(void); dhcpv6_gua_server_entry_s *libdhcpv6_gua_server_allocate(uint8_t *prefix, int8_t interfaceId, uint8_t *serverDUID, uint16_t serverDUIDType); +int libdhcpv6_server_duid_set(dhcpv6_gua_server_entry_s *server_info, uint8_t *duid_ptr, uint16_t duid_type, uint8_t duid_length); void libdhcpv6_gua_server_free_by_prefix_and_interfaceid(uint8_t *prefix, int8_t interfaceId); void libdhcpv6_gua_servers_time_update(uint32_t timeUpdateInSeconds); void libdhcpv6_address_rm_from_allocated_list(dhcpv6_gua_server_entry_s *serverInfo, const uint8_t *address); -dhcpv6_alloacted_address_entry_t *libdhcpv6_address_get_from_allocated_list(dhcpv6_gua_server_entry_s *serverInfo, const uint8_t *address); +dhcpv6_allocated_address_t *libdhcpv6_address_get_from_allocated_list(dhcpv6_gua_server_entry_s *serverInfo, const uint8_t *address); dhcpv6_gua_server_entry_s *libdhcpv6_server_data_get_by_prefix_and_interfaceid(int8_t interfaceId, const uint8_t *prefixPtr); dhcpv6_gua_server_entry_s *libdhcpv6_server_data_get_by_prefix_and_socketinstance(uint16_t socketInstance, uint8_t *prefixPtr); -dhcpv6_alloacted_address_entry_t *libdhcpv6_address_allocated_list_scan(dhcpv6_gua_server_entry_s *serverInfo, uint8_t *euid64, uint16_t linkType, uint32_t iaID, uint32_t T0, uint32_t T1, bool allocateNew); +dhcpv6_allocated_address_t *libdhcpv6_address_allocated_list_scan(dhcpv6_gua_server_entry_s *serverInfo, uint8_t *euid64, uint16_t linkType, uint32_t iaID, uint32_t T0, uint32_t T1, bool allocateNew); +void libdhcpv6_allocated_address_write(uint8_t *ptr, dhcpv6_allocated_address_entry_t *address, dhcpv6_gua_server_entry_s *serverInfo); #else #define libdhcpv6_gua_server_list_empty() true #define libdhcpv6_server_data_get_by_prefix_and_interfaceid(interfaceId, prefixPtr) NULL diff --git a/cores/arduino/mbed/features/netsocket/CellularInterface.h b/cores/arduino/mbed/features/netsocket/CellularInterface.h index 37199c65..34e2bf7b 100644 --- a/cores/arduino/mbed/features/netsocket/CellularInterface.h +++ b/cores/arduino/mbed/features/netsocket/CellularInterface.h @@ -95,25 +95,22 @@ class CellularInterface: public NetworkInterface { */ virtual bool is_connected() = 0; - /** Get the local IP address. - * - * @return Null-terminated representation of the local IP address, - * or null if no IP address has been received. - */ + /** @copydoc NetworkInterface::get_ip_address */ + virtual nsapi_error_t get_ip_address(SocketAddress *address) = 0; + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address() = 0; - /** Get the local network mask. - * - * @return Null-terminated representation of the local network mask, - * or null if no network mask has been received. - */ + /** @copydoc NetworkInterface::get_netmask */ + virtual nsapi_error_t get_netmask(SocketAddress *address) = 0; + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_netmask() = 0; - /** Get the local gateways. - * - * @return Null-terminated representation of the local gateway, - * or null if no network mask has been received. - */ + /** @copydoc NetworkInterface::get_gateway */ + virtual nsapi_error_t get_gateway(SocketAddress *address) = 0; + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_gateway() = 0; /** @copydoc NetworkInterface::cellularBase diff --git a/cores/arduino/mbed/features/netsocket/DTLSSocket.h b/cores/arduino/mbed/features/netsocket/DTLSSocket.h index beacc49d..66252a6c 100644 --- a/cores/arduino/mbed/features/netsocket/DTLSSocket.h +++ b/cores/arduino/mbed/features/netsocket/DTLSSocket.h @@ -71,7 +71,8 @@ class DTLSSocket : public DTLSSocketWrapper { * socket's constructor. * * @param stack Network stack as target for socket. - * @return 0 on success, negative error code on failure. + * @return NSAPI_ERROR_OK on success, negative error code on failure. + * See @ref UDPSocket::open. */ virtual nsapi_error_t open(NetworkStack *stack) { @@ -93,8 +94,10 @@ class DTLSSocket : public DTLSSocketWrapper { * * @param host Hostname of the remote host. * @param port Port of the remote host. - * @return 0 on success, negative error code on failure. + * @return NSAPI_ERROR_OK on success, negative error code on failure. + * See @ref TLSSocketWrapper::connect. */ + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") nsapi_error_t connect(const char *host, uint16_t port); private: diff --git a/cores/arduino/mbed/features/netsocket/EMACInterface.h b/cores/arduino/mbed/features/netsocket/EMACInterface.h index d6f71c81..1e493ea3 100644 --- a/cores/arduino/mbed/features/netsocket/EMACInterface.h +++ b/cores/arduino/mbed/features/netsocket/EMACInterface.h @@ -64,6 +64,9 @@ class EMACInterface : public virtual NetworkInterface { * @param gateway Null-terminated representation of the local gateway * @return 0 on success, negative error code on failure */ + virtual nsapi_error_t set_network(const SocketAddress &ip_address, const SocketAddress &netmask, const SocketAddress &gateway); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual nsapi_error_t set_network(const char *ip_address, const char *netmask, const char *gateway); /** Enable or disable DHCP on the network @@ -101,6 +104,9 @@ class EMACInterface : public virtual NetworkInterface { * @return Null-terminated representation of the local IP address * or null if no IP address has been received */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address(); /** Get the IPv6 link local address @@ -115,6 +121,9 @@ class EMACInterface : public virtual NetworkInterface { * @return Null-terminated representation of the local network mask * or null if no network mask has been received */ + virtual nsapi_error_t get_netmask(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_netmask(); /** Get the local gateways @@ -122,6 +131,9 @@ class EMACInterface : public virtual NetworkInterface { * @return Null-terminated representation of the local gateway * or null if no network mask has been received */ + virtual nsapi_error_t get_gateway(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_gateway(); /** Get the network interface name diff --git a/cores/arduino/mbed/features/netsocket/InternetDatagramSocket.h b/cores/arduino/mbed/features/netsocket/InternetDatagramSocket.h index 019a215a..060521f9 100644 --- a/cores/arduino/mbed/features/netsocket/InternetDatagramSocket.h +++ b/cores/arduino/mbed/features/netsocket/InternetDatagramSocket.h @@ -47,6 +47,7 @@ class InternetDatagramSocket : public InternetSocket { * @retval int Other negative error codes for stack-related failures. * See @ref NetworkStack::socket_send. */ + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual nsapi_size_or_error_t sendto(const char *host, uint16_t port, const void *data, nsapi_size_t size); diff --git a/cores/arduino/mbed/features/netsocket/InternetSocket.h b/cores/arduino/mbed/features/netsocket/InternetSocket.h index 6f1dc3e1..3d803ef0 100644 --- a/cores/arduino/mbed/features/netsocket/InternetSocket.h +++ b/cores/arduino/mbed/features/netsocket/InternetSocket.h @@ -46,7 +46,11 @@ class InternetSocket : public Socket { * @note Not needed if stack is passed to the socket's constructor. * * @param stack Network stack as target for socket. - * @return 0 on success, negative error code on failure (@see nsapi_types.h). + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_PARAMETER in case the provided stack was invalid + * or a stack was already created and socket opened successfully. + * @retval int negative error codes for stack-related failures. + * See @ref NetworkStack::socket_open. */ nsapi_error_t open(NetworkStack *stack); @@ -61,28 +65,34 @@ class InternetSocket : public Socket { /** Close any open connection, and deallocate any memory associated * with the socket. Called from destructor if socket is not closed. * - * @return 0 on success, negative error code on failure (@see nsapi_types.h). + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_SOCKET if socket is not open. + * @retval int negative error codes for stack-related failures. + * See @ref NetworkStack::socket_close. */ virtual nsapi_error_t close(); /** Subscribe to an IP multicast group. * * @param address Multicast group IP address. - * @return 0 on success, negative error code on failure (@see nsapi_types.h). + * @return NSAPI_ERROR_OK on success, negative error code on failure (@see InternetSocket::setsockopt). */ int join_multicast_group(const SocketAddress &address); /** Leave an IP multicast group. * * @param address Multicast group IP address. - * @return 0 on success, negative error code on failure (@see nsapi_types.h). + * @return NSAPI_ERROR_OK on success, negative error code on failure (@see InternetSocket::setsockopt). */ int leave_multicast_group(const SocketAddress &address); /** Bind the socket to a port on which to receive data. * * @param port Local port to bind. - * @return 0 on success, negative error code on failure (@see nsapi_types.h). + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_SOCKET if socket is not open. + * @retval int negative error codes for stack-related failures. + * See @ref NetworkStack::socket_bind. */ nsapi_error_t bind(uint16_t port); @@ -91,8 +101,12 @@ class InternetSocket : public Socket { * * @param address Null-terminated local address to bind. * @param port Local port to bind. - * @return 0 on success, negative error code on failure (@see nsapi_types.h). + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_SOCKET if socket is not open. + * @retval int negative error codes for stack-related failures. + * See @ref NetworkStack::socket_bind. */ + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") nsapi_error_t bind(const char *address, uint16_t port); /** @copydoc Socket::bind diff --git a/cores/arduino/mbed/features/netsocket/L3IP.h b/cores/arduino/mbed/features/netsocket/L3IP.h index e89b183b..f71c53a6 100644 --- a/cores/arduino/mbed/features/netsocket/L3IP.h +++ b/cores/arduino/mbed/features/netsocket/L3IP.h @@ -21,7 +21,7 @@ #include #include "Callback.h" #include "NetStackMemoryManager.h" - +#include "SocketAddress.h" /** * This interface should be used to abstract low level access to networking hardware @@ -118,25 +118,25 @@ class L3IP { * * @param address An IP4 multicast group address */ - virtual void add_ipv4_multicast_group(const char *address) = 0; + virtual void add_ipv4_multicast_group(const SocketAddress &address) = 0; /** Add device to an IP6 multicast group * * @param address An IP6 multicast group address */ - virtual void add_ipv6_multicast_group(const char *address) = 0; + virtual void add_ipv6_multicast_group(const SocketAddress &address) = 0; /** Remove device from an IPV4 multicast group * * @param address An IPV4 multicast group address */ - virtual void remove_ipv4_multicast_group(const char *address) = 0; + virtual void remove_ipv4_multicast_group(const SocketAddress &address) = 0; /** Remove device from an IPV6 multicast group * * @param address An IPV6 multicast group address */ - virtual void remove_ipv6_multicast_group(const char *address) = 0; + virtual void remove_ipv6_multicast_group(const SocketAddress &address) = 0; /** Request reception of all multicast packets * diff --git a/cores/arduino/mbed/features/netsocket/NetworkInterface.h b/cores/arduino/mbed/features/netsocket/NetworkInterface.h index ef97733d..a03909d7 100644 --- a/cores/arduino/mbed/features/netsocket/NetworkInterface.h +++ b/cores/arduino/mbed/features/netsocket/NetworkInterface.h @@ -102,30 +102,50 @@ class NetworkInterface: public DNS { /** Get the local IP address * - * @return Null-terminated representation of the local IP address - * or null if not yet connected + * @param address SocketAddress representation of the local IP address + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid + * @retval NSAPI_ERROR_NO_ADDRESS if the address cannot be obtained from stack */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address(); /** Get the IPv6 link local address * - * @address SocketAddress representation of the link local IPv6 address - * @return NSAPI_ERROR_OK on success, negative error code on failure + * @param address SocketAddress representation of the link local IPv6 address + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid */ virtual nsapi_error_t get_ipv6_link_local_address(SocketAddress *address); /** Get the local network mask. * - * @return Null-terminated representation of the local network mask - * or null if no network mask has been received. + * @param address SocketAddress representation of netmask + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid + * @retval NSAPI_ERROR_NO_ADDRESS if the address cannot be obtained from stack */ + virtual nsapi_error_t get_netmask(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_netmask(); /** Get the local gateway. * - * @return Null-terminated representation of the local gateway - * or null if no network mask has been received. + * @param address SocketAddress representation of gateway address + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid + * @retval NSAPI_ERROR_NO_ADDRESS if the address cannot be obtained from stack */ + virtual nsapi_error_t get_gateway(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_gateway(); /** Get the network interface name @@ -139,11 +159,14 @@ class NetworkInterface: public DNS { * Implicitly disables DHCP, which can be enabled in set_dhcp. * Requires that the network is disconnected. * - * @param ip_address Null-terminated representation of the local IP address - * @param netmask Null-terminated representation of the local network mask - * @param gateway Null-terminated representation of the local gateway + * @param ip_address SocketAddress object containing the local IP address + * @param netmask SocketAddress object containing the local network mask + * @param gateway SocketAddress object containing the local gateway * @return NSAPI_ERROR_OK on success, negative error code on failure */ + virtual nsapi_error_t set_network(const SocketAddress &ip_address, const SocketAddress &netmask, const SocketAddress &gateway); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual nsapi_error_t set_network(const char *ip_address, const char *netmask, const char *gateway); /** Enable or disable DHCP on connecting the network. diff --git a/cores/arduino/mbed/features/netsocket/NetworkStack.h b/cores/arduino/mbed/features/netsocket/NetworkStack.h index e7cd244e..4fbd23b3 100644 --- a/cores/arduino/mbed/features/netsocket/NetworkStack.h +++ b/cores/arduino/mbed/features/netsocket/NetworkStack.h @@ -43,24 +43,38 @@ class NetworkStack: public DNS { /** Get the local IP address * - * @return Null-terminated representation of the local IP address - * or null if not yet connected + * @param address SocketAddress representation of the local IP address + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid + * @retval NSAPI_ERROR_NO_ADDRESS if the address cannot be obtained from stack */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address(); /** Get the IPv6 link local address * - * @address SocketAddress representation of the link local IPv6 address - * @return NSAPI_ERROR_OK on success, negative error code on failure + * @param address SocketAddress representation of the link local IPv6 address + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid */ virtual nsapi_error_t get_ipv6_link_local_address(SocketAddress *address); /** Get the local IP address on interface name * + * @param address SocketAddress representation of the link local IPv6 address * @param interface_name Network interface_name - * @return Null-terminated representation of the local IP address - * or null if not yet connected + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_UNSUPPORTED if this feature is not supported + * @retval NSAPI_ERROR_PARAMETER if the provided pointer is invalid + * @retval NSAPI_ERROR_NO_ADDRESS if the address cannot be obtained from stack */ + virtual nsapi_error_t get_ip_address_if(SocketAddress *address, const char *interface_name); + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual const char *get_ip_address_if(const char *interface_name); /** Translates a hostname to an IP address with specific version @@ -190,7 +204,7 @@ class NetworkStack: public DNS { protected: friend class InternetSocket; - friend class UDPSocket; + friend class InternetDatagramSocket; friend class TCPSocket; friend class TCPServer; diff --git a/cores/arduino/mbed/features/netsocket/OnboardNetworkStack.h b/cores/arduino/mbed/features/netsocket/OnboardNetworkStack.h index 0a0c8430..16f1a791 100644 --- a/cores/arduino/mbed/features/netsocket/OnboardNetworkStack.h +++ b/cores/arduino/mbed/features/netsocket/OnboardNetworkStack.h @@ -109,52 +109,40 @@ class OnboardNetworkStack : public NetworkStack { virtual char *get_mac_address(char *buf, nsapi_size_t buflen) = 0; - /** Copies IP address of the network interface to user supplied buffer - * - * @param buf buffer to which IP address will be copied as "W:X:Y:Z" - * @param buflen size of supplied buffer - * @param interface_name Network interface name - * @return Pointer to a buffer, or NULL if the buffer is too small - */ + /** @copydoc NetworkStack::get_ip_address */ + virtual nsapi_error_t get_ip_address(SocketAddress *address) = 0; + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_ip_address(char *buf, nsapi_size_t buflen) = 0; - /** Copies IPv6 link local address of the network interface in SocketAddress format - * - * @address SocketAddress representation of the link local IPv6 address - * @return NSAPI_ERROR_OK on success, negative error code on failure - */ + /** @copydoc NetworkStack::get_ipv6_link_local_address */ virtual nsapi_error_t get_ipv6_link_local_address(SocketAddress *address) { return NSAPI_ERROR_UNSUPPORTED; } - /** Copies IP address of the network interface to user supplied buffer - * - * @param buf buffer to which IP address will be copied as "W:X:Y:Z" - * @param buflen size of supplied buffer - * @param interface_name Network interface name - * @return Pointer to a buffer, or NULL if the buffer is too small - */ + /** @copydoc NetworkStack::get_ip_address_if */ + virtual nsapi_error_t get_ip_address_if(SocketAddress *address, const char *interface_name) + { + return NSAPI_ERROR_UNSUPPORTED; + } + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_ip_address_if(char *buf, nsapi_size_t buflen, const char *interface_name) { return NULL; }; - /** Copies netmask of the network interface to user supplied buffer - * - * @param buf buffer to which netmask will be copied as "W:X:Y:Z" - * @param buflen size of supplied buffer - * @return Pointer to a buffer, or NULL if the buffer is too small - */ + /** @copydoc NetworkStack::get_netmask */ + virtual nsapi_error_t get_netmask(SocketAddress *address) = 0; + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_netmask(char *buf, nsapi_size_t buflen) = 0; - /** Copies gateway address of the network interface to user supplied buffer - * - * @param buf buffer to which gateway address will be copied as "W:X:Y:Z" - * @param buflen size of supplied buffer - * @return Pointer to a buffer, or NULL if the buffer is too small - */ + /** @copydoc NetworkStack::get_gateway */ + virtual nsapi_error_t get_gateway(SocketAddress *address) = 0; + + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") virtual char *get_gateway(char *buf, nsapi_size_t buflen) = 0; }; @@ -181,6 +169,11 @@ class OnboardNetworkStack : public NetworkStack { return NSAPI_ERROR_UNSUPPORTED; }; + virtual nsapi_error_t remove_ethernet_interface(Interface **interface_out) + { + return NSAPI_ERROR_OK; + }; + virtual nsapi_error_t remove_l3ip_interface(Interface **interface_out) { return NSAPI_ERROR_OK; diff --git a/cores/arduino/mbed/features/netsocket/PPPInterface.h b/cores/arduino/mbed/features/netsocket/PPPInterface.h index 33f550eb..dd5dde37 100644 --- a/cores/arduino/mbed/features/netsocket/PPPInterface.h +++ b/cores/arduino/mbed/features/netsocket/PPPInterface.h @@ -80,6 +80,15 @@ class PPPInterface : public virtual NetworkInterface { */ virtual const char *get_ip_address(); + /** @copydoc NetworkInterface::get_ip_address */ + virtual nsapi_error_t get_ip_address(SocketAddress *address); + + /** @copydoc NetworkInterface::get_netmask */ + virtual nsapi_error_t get_netmask(SocketAddress *address); + + /** @copydoc NetworkInterface::get_gateway */ + virtual nsapi_error_t get_gateway(SocketAddress *address); + /** Get the local network mask * * @return Null-terminated representation of the local network mask diff --git a/cores/arduino/mbed/features/netsocket/Socket.h b/cores/arduino/mbed/features/netsocket/Socket.h index 48e3bca5..2384554b 100644 --- a/cores/arduino/mbed/features/netsocket/Socket.h +++ b/cores/arduino/mbed/features/netsocket/Socket.h @@ -49,7 +49,8 @@ class Socket { * Closes any open connection and deallocates any memory associated * with the socket. Called from destructor if socket is not closed. * - * @return NSAPI_ERROR_OK on success, negative error code on failure + * @return NSAPI_ERROR_OK on success. + * Negative subclass-dependent error code on failure. */ virtual nsapi_error_t close() = 0; @@ -68,7 +69,8 @@ class Socket { * a new one before attempting to reconnect. * * @param address The SocketAddress of the remote peer. - * @return NSAPI_ERROR_OK on success, negative error code on failure. + * @return NSAPI_ERROR_OK on success. + * Negative subclass-dependent error code on failure. */ virtual nsapi_error_t connect(const SocketAddress &address) = 0; @@ -84,8 +86,8 @@ class Socket { * * @param data Buffer of data to send to the host. * @param size Size of the buffer in bytes. - * @return Number of sent bytes on success, negative error - * code on failure. + * @return NSAPI_ERROR_OK on success. + * Negative subclass-dependent error code on failure. */ virtual nsapi_size_or_error_t send(const void *data, nsapi_size_t size) = 0; @@ -105,8 +107,8 @@ class Socket { * * @param data Destination buffer for data received from the host. * @param size Size of the buffer in bytes. - * @return Number of received bytes on success, negative error - * code on failure. If no data is available to be received + * @return Number of received bytes on success, negative, subclass-dependent + * error code on failure. If no data is available to be received * and the peer has performed an orderly shutdown, * recv() returns 0. */ @@ -125,7 +127,7 @@ class Socket { * @param address Remote address * @param data Buffer of data to send to the host * @param size Size of the buffer in bytes - * @return Number of sent bytes on success, negative error + * @return Number of sent bytes on success, negative subclass-dependent error * code on failure */ virtual nsapi_size_or_error_t sendto(const SocketAddress &address, @@ -148,8 +150,8 @@ class Socket { * @param address Destination for the source address or NULL * @param data Destination buffer for datagram received from the host * @param size Size of the buffer in bytes - * @return Number of received bytes on success, negative error - * code on failure + * @return Number of received bytes on success, negative subclass-dependent + * error code on failure */ virtual nsapi_size_or_error_t recvfrom(SocketAddress *address, void *data, nsapi_size_t size) = 0; @@ -160,7 +162,8 @@ class Socket { * data. If the IP address is zeroed, only the port is bound. * * @param address Local address to bind. - * @return NSAPI_ERROR_OK on success, negative error code on failure. + * @return NSAPI_ERROR_OK on success, negative subclass-dependent error + * code on failure. */ virtual nsapi_error_t bind(const SocketAddress &address) = 0; @@ -222,7 +225,9 @@ class Socket { * @param optname Level-specific option name. * @param optval Option value. * @param optlen Length of the option value. - * @return NSAPI_ERROR_OK on success, negative error code on failure. + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_SOCKET if socket is not open. + * @retval int Negative error code on failure, see @ref NetworkStack::setsockopt. */ virtual nsapi_error_t setsockopt(int level, int optname, const void *optval, unsigned optlen) = 0; @@ -239,7 +244,9 @@ class Socket { * @param optname Level-specific option name. * @param optval Destination for option value. * @param optlen Length of the option value. - * @return NSAPI_ERROR_OK on success, negative error code on failure. + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_SOCKET if socket is not open. + * @retval int Negative error code on failure, see @ref NetworkStack::getsockopt. */ virtual nsapi_error_t getsockopt(int level, int optname, void *optval, unsigned *optlen) = 0; @@ -276,7 +283,9 @@ class Socket { * associated. * * @param address Pointer to SocketAddress structure. - * @return NSAPI_ERROR_OK on success, negative error code on failure. + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_SOCKET if socket is not connected. + * @retval NSAPI_ERROR_NO_CONNECTION if the remote peer was not set. */ virtual nsapi_error_t getpeername(SocketAddress *address) = 0; }; diff --git a/cores/arduino/mbed/features/netsocket/TCPSocket.h b/cores/arduino/mbed/features/netsocket/TCPSocket.h index 4acddce8..0da69761 100644 --- a/cores/arduino/mbed/features/netsocket/TCPSocket.h +++ b/cores/arduino/mbed/features/netsocket/TCPSocket.h @@ -77,8 +77,15 @@ class TCPSocket : public InternetSocket { * * @param host Hostname of the remote host * @param port Port of the remote host - * @return 0 on success, negative error code on failure + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_IN_PROGRESS if the operation is ongoing + * @retval NSAPI_ERROR_NO_SOCKET if the socket has not been allocated + * @retval NSAPI_ERROR_DNS_FAILURE if the DNS address of host could not be resolved + * @retval NSAPI_ERROR_IS_CONNECTED if the connection is already established + * @retval int Other negative error codes for stack-related failures. + * See NetworkStack::socket_connect(). */ + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") nsapi_error_t connect(const char *host, uint16_t port); /** Connects TCP socket to a remote host @@ -87,7 +94,13 @@ class TCPSocket : public InternetSocket { * indicated address. * * @param address The SocketAddress of the remote host - * @return 0 on success, negative error code on failure + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_IN_PROGRESS if the operation is ongoing + * @retval NSAPI_ERROR_NO_SOCKET if the socket has not been allocated + * @retval NSAPI_ERROR_DNS_FAILURE if the DNS address of host could not be resolved + * @retval NSAPI_ERROR_IS_CONNECTED if the connection is already established + * @retval int Other negative error codes for stack-related failures. + * See NetworkStack::socket_connect(). */ virtual nsapi_error_t connect(const SocketAddress &address); @@ -102,8 +115,12 @@ class TCPSocket : public InternetSocket { * * @param data Buffer of data to send to the host * @param size Size of the buffer in bytes - * @return Number of sent bytes on success, negative error - * code on failure + * @retval int Number of sent bytes on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly + * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled + * and send cannot be performed immediately + * @retval int Other negative error codes for stack-related failures. + * See @ref NetworkStack::socket_send. */ virtual nsapi_size_or_error_t send(const void *data, nsapi_size_t size); @@ -118,10 +135,12 @@ class TCPSocket : public InternetSocket { * * @param data Destination buffer for data received from the host * @param size Size of the buffer in bytes - * @return Number of received bytes on success, negative error - * code on failure. If no data is available to be received - * and the peer has performed an orderly shutdown, - * recv() returns 0. + * @retval int Number of received bytes on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly + * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled + * and send cannot be performed immediately + * @retval int Other negative error codes for stack-related failures. + * See @ref NetworkStack::socket_recv. */ virtual nsapi_size_or_error_t recv(void *data, nsapi_size_t size); @@ -136,8 +155,12 @@ class TCPSocket : public InternetSocket { * @param address Remote address * @param data Buffer of data to send to the host * @param size Size of the buffer in bytes - * @return Number of sent bytes on success, negative error - * code on failure + * @retval int Number of sent bytes on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly + * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled + * and send cannot be performed immediately + * @retval int Other negative error codes for stack-related failures. + * See @ref NetworkStack::socket_send. */ virtual nsapi_size_or_error_t sendto(const SocketAddress &address, const void *data, nsapi_size_t size); @@ -154,8 +177,12 @@ class TCPSocket : public InternetSocket { * @param address Destination for the source address or NULL * @param data Destination buffer for datagram received from the host * @param size Size of the buffer in bytes - * @return Number of received bytes on success, negative error - * code on failure + * @retval int Number of received bytes on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly + * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled + * and send cannot be performed immediately + * @retval int Other negative error codes for stack-related failures. + * See @ref NetworkStack::socket_recv. */ virtual nsapi_size_or_error_t recvfrom(SocketAddress *address, void *data, nsapi_size_t size); @@ -182,7 +209,10 @@ class TCPSocket : public InternetSocket { * * @param backlog Number of pending connections that can be queued * simultaneously, defaults to 1 - * @return 0 on success, negative error code on failure + * @retval NSAPI_ERROR_OK on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly + * @retval int Other negative error codes for stack-related failures. + * See @ref NetworkStack::socket_listen. */ virtual nsapi_error_t listen(int backlog = 1); diff --git a/cores/arduino/mbed/features/netsocket/TLSSocket.h b/cores/arduino/mbed/features/netsocket/TLSSocket.h index 1ce1e7d3..4fde0037 100644 --- a/cores/arduino/mbed/features/netsocket/TLSSocket.h +++ b/cores/arduino/mbed/features/netsocket/TLSSocket.h @@ -23,7 +23,6 @@ #define _MBED_HTTPS_TLS_TCP_SOCKET_H_ #include "netsocket/TCPSocket.h" -#include "TLSSocketWrapper.h" #include "mbedtls/platform.h" #include "mbedtls/ssl.h" @@ -31,9 +30,13 @@ #include "mbedtls/ctr_drbg.h" #include "mbedtls/error.h" +#if !defined(MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET) || !(MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET) + // This class requires Mbed TLS SSL/TLS client code #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) +#include "TLSSocketWrapper.h" + /** * \brief TLSSocket is a wrapper around TCPSocket for interacting with TLS servers. * @@ -62,7 +65,7 @@ class TLSSocket : public TLSSocketWrapper { * clear internal TLS memory structures. * * @param stack Network stack as target for socket. - * @return 0 on success, negative error code on failure. + * @return NSAPI_ERROR_OK on success. See @ref TCPSocket::open */ virtual nsapi_error_t open(NetworkStack *stack) { @@ -87,15 +90,82 @@ class TLSSocket : public TLSSocketWrapper { * * @param host Hostname of the remote host. * @param port Port of the remote host. - * @return 0 on success, negative error code on failure. + * @return NSAPI_ERROR_OK on success, negative error code on failure. + * See @ref TLSSocketWrapper::connect. */ + MBED_DEPRECATED_SINCE("mbed-os-5.15", "String-based APIs are deprecated") nsapi_error_t connect(const char *host, uint16_t port); private: TCPSocket tcp_socket; }; - #endif // MBEDTLS_SSL_CLI_C + +#else // MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET + +class TLSSocket : public TCPSocket { +public: + TLSSocket(); + virtual ~TLSSocket(); + + /** Set hostname. + * + * TLSSocket requires hostname used to verify the certificate. + * If hostname is not given in constructor, this function must be used before + * starting the TLS handshake. + * + * @param hostname Hostname of the remote host, used for certificate checking. + */ + nsapi_error_t set_hostname(const char *hostname); + + /** Sets the certification of Root CA. + * + * @note Must be called after open() before calling connect() + * + * @param root_ca Root CA Certificate in any Mbed TLS-supported format. + * @param len Length of certificate (including terminating 0 for PEM). + * @return NSAPI_ERROR_OK on success, negative error code on failure. + */ + virtual nsapi_error_t set_root_ca_cert(const void *root_ca, size_t len); + + /** Sets the certification of Root CA. + * + * @note Must be called after open() before calling connect() + * + * @param root_ca_pem Root CA Certificate in PEM format. + */ + virtual nsapi_error_t set_root_ca_cert(const char *root_ca_pem); + + + /** Sets client certificate, and client private key. + * + * @param client_cert Client certification in PEM or DER format. + * @param client_cert_len Certificate size including the terminating null byte for PEM data. + * @param client_private_key_pem Client private key in PEM or DER format. + * @param client_private_key_len Key size including the terminating null byte for PEM data + * @return NSAPI_ERROR_OK on success, negative error code on failure. + */ + virtual nsapi_error_t set_client_cert_key(const void *client_cert, size_t client_cert_len, + const void *client_private_key_pem, size_t client_private_key_len); + + /** Sets client certificate, and client private key. + * + * @param client_cert_pem Client certification in PEM format. + * @param client_private_key_pem Client private key in PEM format. + * @return NSAPI_ERROR_OK on success, negative error code on failure. + */ + virtual nsapi_error_t set_client_cert_key(const char *client_cert_pem, const char *client_private_key_pem); + + // From TCPSocket + virtual nsapi_error_t connect(const char *host, uint16_t port); + virtual nsapi_error_t connect(const SocketAddress &address); + +protected: + virtual nsapi_error_t enable_tlssocket(); +}; + +#endif // MBED_CONF_NSAPI_OFFLOAD_TLSSOCKET + #endif // _MBED_HTTPS_TLS_TCP_SOCKET_H_ /** @} */ diff --git a/cores/arduino/mbed/features/netsocket/TLSSocketWrapper.h b/cores/arduino/mbed/features/netsocket/TLSSocketWrapper.h index 7bd423c5..f4cbfe0c 100644 --- a/cores/arduino/mbed/features/netsocket/TLSSocketWrapper.h +++ b/cores/arduino/mbed/features/netsocket/TLSSocketWrapper.h @@ -29,11 +29,26 @@ #include "mbedtls/ssl.h" #include "mbedtls/entropy.h" #include "mbedtls/ctr_drbg.h" +#include "mbedtls/hmac_drbg.h" #include "mbedtls/error.h" // This class requires Mbed TLS SSL/TLS client code #if defined(MBEDTLS_SSL_CLI_C) || defined(DOXYGEN_ONLY) +#if defined(MBEDTLS_CTR_DRBG_C) +#define DRBG_CTX mbedtls_ctr_drbg_context +#define DRBG_INIT mbedtls_ctr_drbg_init +#define DRBG_RANDOM mbedtls_ctr_drbg_random +#define DRBG_FREE mbedtls_ctr_drbg_free +#elif defined(MBEDTLS_HMAC_DRBG_C) +#define DRBG_CTX mbedtls_hmac_drbg_context +#define DRBG_INIT mbedtls_hmac_drbg_init +#define DRBG_RANDOM mbedtls_hmac_drbg_random +#define DRBG_FREE mbedtls_hmac_drbg_free +#else +#error "CTR or HMAC must be defined for TLSSocketWrapper!" +#endif + /** * TLSSocket is a wrapper around Socket for interacting with TLS servers. * @@ -66,6 +81,9 @@ class TLSSocketWrapper : public Socket { virtual ~TLSSocketWrapper(); /** Set hostname. + * + * @note Implementation is inside following defines: + * #if defined(MBEDTLS_X509_CRT_PARSE_C) && !defined(MBEDTLS_X509_REMOVE_HOSTNAME_VERIFICATION) * * TLSSocket requires hostname used to verify the certificate. * If hostname is not given in constructor, this function must be used before @@ -81,7 +99,9 @@ class TLSSocketWrapper : public Socket { * * @param root_ca Root CA Certificate in any Mbed TLS-supported format. * @param len Length of certificate (including terminating 0 for PEM). - * @return 0 on success, negative error code on failure. + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_NO_MEMORY in case there is not enough memory to allocate certificate. + * @retval NSAPI_ERROR_PARAMETER in case the provided root_ca parameter failed parsing. */ nsapi_error_t set_root_ca_cert(const void *root_ca, size_t len); @@ -99,7 +119,8 @@ class TLSSocketWrapper : public Socket { * @param client_cert_len Certificate size including the terminating null byte for PEM data. * @param client_private_key_pem Client private key in PEM or DER format. * @param client_private_key_len Key size including the terminating null byte for PEM data - * @return 0 on success, negative error code on failure. + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_PARAMETER in case the provided root_ca parameter failed parsing. */ nsapi_error_t set_client_cert_key(const void *client_cert, size_t client_cert_len, const void *client_private_key_pem, size_t client_private_key_len); @@ -108,7 +129,8 @@ class TLSSocketWrapper : public Socket { * * @param client_cert_pem Client certification in PEM format. * @param client_private_key_pem Client private key in PEM format. - * @return 0 on success, negative error code on failure. + * @retval NSAPI_ERROR_OK on success. + * @retval NSAPI_ERROR_PARAMETER in case the provided root_ca parameter failed parsing. */ nsapi_error_t set_client_cert_key(const char *client_cert_pem, const char *client_private_key_pem); @@ -119,7 +141,12 @@ class TLSSocketWrapper : public Socket { * * @param data Buffer of data to send to the host. * @param size Size of the buffer in bytes. - * @return Number of sent bytes on success, negative error code on failure. + * @retval int Number of sent bytes on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly. + * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled + * and send cannot be performed immediately. + * @retval NSAPI_ERROR_DEVICE_ERROR in case of tls-related errors. + * See @ref mbedtls_ssl_write. */ virtual nsapi_error_t send(const void *data, nsapi_size_t size); @@ -130,18 +157,26 @@ class TLSSocketWrapper : public Socket { * * @param data Destination buffer for data received from the host. * @param size Size of the buffer in bytes. - * @return Number of received bytes on success, negative error - * code on failure. If no data is available to be received - * and the peer has performed an orderly shutdown, - * recv() returns 0. + * @retval int Number of sent bytes on success + * @retval NSAPI_ERROR_NO_SOCKET in case socket was not created correctly. + * @retval NSAPI_ERROR_WOULD_BLOCK in case non-blocking mode is enabled + * and send cannot be performed immediately. + * @retval NSAPI_ERROR_DEVICE_ERROR in case of tls-related errors. + * See @ref mbedtls_ssl_read. + * @return 0 if no data is available to be received + * and the peer has performed an orderly shutdown. */ virtual nsapi_size_or_error_t recv(void *data, nsapi_size_t size); /* = Functions inherited from Socket = */ virtual nsapi_error_t close(); - /* + /** + * Connect the transport socket and start handshake. + * * @note: In case connect() returns an error, the state of the socket is * unspecified. A new socket should be created before reconnecting. + * + * See @ref Socket::connect and @ref start_handshake */ virtual nsapi_error_t connect(const SocketAddress &address = SocketAddress()); virtual nsapi_size_or_error_t sendto(const SocketAddress &address, const void *data, nsapi_size_t size); @@ -217,7 +252,11 @@ class TLSSocketWrapper : public Socket { * does not happen twice. * * @param first_call is this a first call to Socket::connect() API. - * @return 0 on success, negative error code on failure + * @retval NSAPI_ERROR_OK if we happen to complete the request on the first call. + * @retval NSAPI_ERROR_IN_PROGRESS if the first call did not complete the request. + * @retval NSAPI_ERROR_NO_SOCKET in case the transport socket was not created correctly. + * @retval NSAPI_ERROR_AUTH_FAILURE in case of tls-related authentication errors. + * See @ref mbedtls_ctr_drbg_seed or @ref mbedtls_hmac_drbg_seed, @ref mbedtls_ssl_setup. @ref mbedtls_ssl_handshake. */ nsapi_error_t start_handshake(bool first_call); @@ -266,7 +305,9 @@ class TLSSocketWrapper : public Socket { #ifdef MBEDTLS_X509_CRT_PARSE_C mbedtls_pk_context _pkctx; #endif - mbedtls_ctr_drbg_context _ctr_drbg; + + DRBG_CTX _drbg; + mbedtls_entropy_context _entropy; rtos::EventFlags _event_flag; diff --git a/cores/arduino/mbed/features/netsocket/UDPSocket.h b/cores/arduino/mbed/features/netsocket/UDPSocket.h index 44025389..bde85b98 100644 --- a/cores/arduino/mbed/features/netsocket/UDPSocket.h +++ b/cores/arduino/mbed/features/netsocket/UDPSocket.h @@ -23,12 +23,14 @@ #include "netsocket/InternetSocket.h" #include "netsocket/NetworkStack.h" #include "netsocket/NetworkInterface.h" +#include "netsocket/InternetDatagramSocket.h" #include "rtos/EventFlags.h" +#include "ICMPSocket.h" /** UDP socket implementation. */ -class UDPSocket : public InternetSocket { +class UDPSocket : public InternetDatagramSocket { public: /** Create an uninitialized socket. * @@ -53,129 +55,13 @@ class UDPSocket : public InternetSocket { open(stack); } - /** Destroy a socket. - * - * @note Closes socket if the socket is still open. - */ - virtual ~UDPSocket(); - - /** Send data to the specified host and port. - * - * By default, sendto blocks until data is sent. If socket is set to - * nonblocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned - * immediately. - * - * @param host Domain name of the remote host or a dotted notation IP address. - * @param port Port of the remote host. - * @param data Buffer of data to send to the host. - * @param size Size of the buffer in bytes. - * @return Number of sent bytes on success, negative error - * code on failure. - */ - virtual nsapi_size_or_error_t sendto(const char *host, uint16_t port, - const void *data, nsapi_size_t size); - - /** Send data to the specified address. - * - * By default, sendto blocks until data is sent. If socket is set to - * nonblocking or times out, NSAPI_ERROR_WOULD_BLOCK is returned - * immediately. - * - * @param address The SocketAddress of the remote host. - * @param data Buffer of data to send to the host. - * @param size Size of the buffer in bytes. - * @return Number of sent bytes on success, negative error - * code on failure. - */ - virtual nsapi_size_or_error_t sendto(const SocketAddress &address, - const void *data, nsapi_size_t size); - - /** Receive a datagram and store the source address in address if it's not NULL. - * - * By default, recvfrom blocks until a datagram is received. If socket is set to - * nonblocking or times out with no datagram, NSAPI_ERROR_WOULD_BLOCK - * is returned. - * - * @note If the datagram is larger than the buffer, the excess data is silently discarded. - * - * @note If socket is connected, only packets coming from connected peer address - * are accepted. - * - * @note recvfrom() is allowed write to address and data buffers even if error occurs. - * - * @param address Destination for the source address or NULL. - * @param data Destination buffer for datagram received from the host. - * @param size Size of the buffer in bytes. - * @return Number of received bytes on success, negative error - * code on failure. - */ - virtual nsapi_size_or_error_t recvfrom(SocketAddress *address, - void *data, nsapi_size_t size); - - /** Set the remote address for next send() call and filtering - * of incoming packets. To reset the address, zero initialized - * SocketAddress must be in the address parameter. - * - * @param address The SocketAddress of the remote host. - * @return 0 on success, negative error code on failure. - */ - virtual nsapi_error_t connect(const SocketAddress &address); - - /** Send a datagram to connected remote address. - * - * By default, send blocks until all data is sent. If socket is set to - * nonblocking or times out, a partial amount can be written. - * NSAPI_ERROR_WOULD_BLOCK is returned if no data was written. - * - * @note The socket must be connected to a remote host before send() call. - * - * @param data Buffer of data to send to the host. - * @param size Size of the buffer in bytes. - * @return Number of sent bytes on success, negative error - * code on failure. - */ - virtual nsapi_size_or_error_t send(const void *data, nsapi_size_t size); - - /** Receive data from a socket. - * - * This is equivalent to calling recvfrom(NULL, data, size). - * - * If the socket is connected, only packets coming from a connected peer address - * are accepted. - * - * By default, recv blocks until some data is received. If socket is set to - * nonblocking or times out, NSAPI_ERROR_WOULD_BLOCK can be returned to - * indicate no data. - * - * @note recv() is allowed write to data buffer even if error occurs. - * - * @param data Pointer to buffer for data received from the host. - * @param size Size of the buffer in bytes. - * @return Number of received bytes on success, negative error - * code on failure. - */ - virtual nsapi_size_or_error_t recv(void *data, nsapi_size_t size); - - /** Not implemented for UDP. - * - * @param error Not used. - * @return NSAPI_ERROR_UNSUPPORTED - */ - virtual Socket *accept(nsapi_error_t *error = NULL); - - /** Not implemented for UDP. - * - * @param backlog Not used. - * @return NSAPI_ERROR_UNSUPPORTED - */ - virtual nsapi_error_t listen(int backlog = 1); - #if !defined(DOXYGEN_ONLY) protected: virtual nsapi_protocol_t get_proto(); #endif //!defined(DOXYGEN_ONLY) + }; diff --git a/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/WhdSTAInterface.h b/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/WhdSTAInterface.h index 2bda49d1..4dd10989 100644 --- a/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/WhdSTAInterface.h +++ b/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_Cypress/COMPONENT_WHD/interface/WhdSTAInterface.h @@ -191,6 +191,15 @@ class WhdSTAInterface : public WiFiInterface, public EMACInterface { /* set ioctl value */ int wifi_set_ioctl_value(uint32_t ioctl, uint32_t value) ; + /* get ioctl value */ + int wifi_get_ioctl_value(uint32_t ioctl, uint32_t *value); + + /* get ioctl buffer */ + int wifi_get_ioctl_buffer(uint32_t ioctl, uint8_t *buffer, uint16_t len); + + /* set ioctl buffer */ + int wifi_set_ioctl_buffer(uint32_t ioctl, uint8_t *buffer, uint16_t len); + /* get WHD ifp value */ int wifi_get_ifp(whd_interface_t *ifp); diff --git a/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.h b/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.h index f35c0989..7be55d36 100644 --- a/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.h +++ b/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_RDA_EMAC/RdaWiFiInterface.h @@ -107,6 +107,14 @@ class RDAWiFiInterface : public EMACInterface, public WiFiInterface */ virtual nsapi_error_t disconnect(); + /** Restart the interface + * + * Attempts to reconnect to a WiFi network. Ssid and passphrase has been stored. + * + * @return 0 on success, negative error code on failure + */ + virtual nsapi_error_t reconnect(); + /** Scan for available networks * * This function will block. If the @a count is 0, function will only return count of available networks, so that @@ -121,6 +129,9 @@ class RDAWiFiInterface : public EMACInterface, public WiFiInterface virtual nsapi_size_or_error_t scan(WiFiAccessPoint *res, nsapi_size_t count); virtual nsapi_size_or_error_t init(); + + virtual nsapi_size_or_error_t set_msg_queue(void *queue); + private: char _ssid[33]; char _pass[65]; diff --git a/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_STM/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h b/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_STM/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h index 22e68baa..f8fe5cee 100644 --- a/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_STM/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h +++ b/cores/arduino/mbed/features/netsocket/emac-drivers/TARGET_STM/TARGET_STM32F4/TARGET_MODULE_UBLOX_ODIN_W2/wifi_emac/wifi_emac.h @@ -124,8 +124,13 @@ class OdinWiFiEMAC : public EMAC { virtual void remove_multicast_group(const uint8_t *address); virtual void set_all_multicast(bool all); + cbWLAN_Handle get_wifi_emac_handle(); + void set_wifi_emac_handle(cbWLAN_Handle _handle); + private: + cbWLAN_Handle handle = cbWLAN_DEFAULT_HANDLE; + emac_link_input_cb_t emac_link_input_cb; /**< Callback for incoming data */ emac_link_state_change_cb_t emac_link_state_cb; /**< Link state change callback */ EMACMemoryManager *memory_manager; @@ -138,7 +143,7 @@ class OdinWiFiEMAC : public EMAC { friend void handleWlanStatusIndication(void *dummy, cbWLAN_StatusIndicationInfo status, void *data); friend void handleWlanPacketIndication(void *dummy, cbWLAN_PacketIndicationInfo *packetInfo); - friend void send_wlan_packet(void *buf); + friend void send_wlan_packet(OdinWiFiEMAC *ptr, void *buf); }; #endif /* WIFI_EMAC_H_ */ diff --git a/cores/arduino/mbed/features/netsocket/nsapi_dns.h b/cores/arduino/mbed/features/netsocket/nsapi_dns.h index 7f5d134a..1870c82f 100644 --- a/cores/arduino/mbed/features/netsocket/nsapi_dns.h +++ b/cores/arduino/mbed/features/netsocket/nsapi_dns.h @@ -216,7 +216,7 @@ nsapi_size_or_error_t nsapi_dns_query_multiple(S *stack, const char *host, * @param id Unique id of the hostname translation operation * @return 0 on success, negative error code on failure */ -nsapi_error_t nsapi_dns_query_async_cancel(nsapi_error_t id); +nsapi_error_t nsapi_dns_query_async_cancel(nsapi_size_or_error_t id); /** Set a call in callback * @@ -228,6 +228,14 @@ nsapi_error_t nsapi_dns_query_async_cancel(nsapi_error_t id); */ void nsapi_dns_call_in_set(call_in_callback_cb_t callback); +/** + * @brief nsapi_dns_reset Resets all internal states and frees reserved memory, see NOTE! + * Can be used to clean up system resources when there is no need for network connections. + * NOTE: Does NOT clear asynchronous ongoing operations! + * Currently only cleans up DNS cache (if used) + */ +void nsapi_dns_reset(); + /** Add a domain name server to list of servers to query * * @param addr Destination for the host address diff --git a/cores/arduino/mbed/features/netsocket/nsapi_types.h b/cores/arduino/mbed/features/netsocket/nsapi_types.h index 00e07588..fa0ef691 100644 --- a/cores/arduino/mbed/features/netsocket/nsapi_types.h +++ b/cores/arduino/mbed/features/netsocket/nsapi_types.h @@ -215,6 +215,7 @@ typedef void *nsapi_socket_t; typedef enum nsapi_protocol { NSAPI_TCP, /*!< Socket is of TCP type */ NSAPI_UDP, /*!< Socket is of UDP type */ + NSAPI_ICMP, /*!< Socket is of ICMP type */ } nsapi_protocol_t; /** Enum of standardized stack option levels @@ -269,6 +270,18 @@ typedef enum nsapi_socket_option { NSAPI_BIND_TO_DEVICE, /*!< Bind socket network interface name*/ } nsapi_socket_option_t; +typedef enum nsapi_tlssocket_level { + NSAPI_TLSSOCKET_LEVEL = 7099, /*!< TLSSocket option level - see nsapi_tlssocket_option_t for options*/ +} nsapi_tlssocket_level_t; + +typedef enum nsapi_tlssocket_option { + NSAPI_TLSSOCKET_SET_HOSTNAME, /*!< Set host name */ + NSAPI_TLSSOCKET_SET_CACERT, /*!< Set server CA certificate */ + NSAPI_TLSSOCKET_SET_CLCERT, /*!< Set client certificate */ + NSAPI_TLSSOCKET_SET_CLKEY, /*!< Set client key */ + NSAPI_TLSSOCKET_ENABLE /*!< Enable TLSSocket */ +} nsapi_tlssocket_option_t; + /** Supported IP protocol versions of IP stack * * @enum nsapi_ip_stack diff --git a/cores/arduino/mbed/features/storage/filesystem/fat/ChaN/ffconf.h b/cores/arduino/mbed/features/storage/filesystem/fat/ChaN/ffconf.h index 22e12942..70c8d940 100644 --- a/cores/arduino/mbed/features/storage/filesystem/fat/ChaN/ffconf.h +++ b/cores/arduino/mbed/features/storage/filesystem/fat/ChaN/ffconf.h @@ -4,20 +4,20 @@ #define FFCONF_DEF 89352 /* Revision ID */ -#define FFS_DBG 0 +#define FFS_DBG MBED_CONF_FAT_CHAN_FFS_DBG /*---------------------------------------------------------------------------/ / Function Configurations /---------------------------------------------------------------------------*/ -#define FF_FS_READONLY 0 +#define FF_FS_READONLY MBED_CONF_FAT_CHAN_FF_FS_READONLY /* This option switches read-only configuration. (0:Read/Write or 1:Read-only) / Read-only configuration removes writing API functions, f_write(), f_sync(), / f_unlink(), f_mkdir(), f_chmod(), f_rename(), f_truncate(), f_getfree() / and optional writing functions as well. */ -#define FF_FS_MINIMIZE 0 +#define FF_FS_MINIMIZE MBED_CONF_FAT_CHAN_FF_FS_MINIMIZE /* This option defines minimization level to remove some basic API functions. / / 0: Basic functions are fully enabled. @@ -27,7 +27,7 @@ / 3: f_lseek() function is removed in addition to 2. */ -#define FF_USE_STRFUNC 0 +#define FF_USE_STRFUNC MBED_CONF_FAT_CHAN_FF_USE_STRFUNC /* This option switches string functions, f_gets(), f_putc(), f_puts() and f_printf(). / / 0: Disable string functions. @@ -35,34 +35,34 @@ / 2: Enable with LF-CRLF conversion. */ -#define FF_USE_FIND 0 +#define FF_USE_FIND MBED_CONF_FAT_CHAN_FF_USE_FIND /* This option switches filtered directory read functions, f_findfirst() and / f_findnext(). (0:Disable, 1:Enable 2:Enable with matching altname[] too) */ -#define FF_USE_MKFS 1 +#define FF_USE_MKFS MBED_CONF_FAT_CHAN_FF_USE_MKFS /* This option switches f_mkfs() function. (0:Disable or 1:Enable) */ -#define FF_USE_FASTSEEK 0 +#define FF_USE_FASTSEEK MBED_CONF_FAT_CHAN_FF_USE_FASTSEEK /* This option switches fast seek function. (0:Disable or 1:Enable) */ -#define FF_USE_EXPAND 0 +#define FF_USE_EXPAND MBED_CONF_FAT_CHAN_FF_USE_EXPAND /* This option switches f_expand function. (0:Disable or 1:Enable) */ -#define FF_USE_CHMOD 0 +#define FF_USE_CHMOD MBED_CONF_FAT_CHAN_FF_USE_CHMOD /* This option switches attribute manipulation functions, f_chmod() and f_utime(). / (0:Disable or 1:Enable) Also FF_FS_READONLY needs to be 0 to enable this option. */ -#define FF_USE_LABEL 0 +#define FF_USE_LABEL MBED_CONF_FAT_CHAN_FF_USE_LABEL /* This option switches volume label functions, f_getlabel() and f_setlabel(). / (0:Disable or 1:Enable) */ -#define FF_USE_FORWARD 0 +#define FF_USE_FORWARD MBED_CONF_FAT_CHAN_FF_USE_FORWARD /* This option switches f_forward() function. (0:Disable or 1:Enable) */ @@ -70,7 +70,7 @@ / Locale and Namespace Configurations /---------------------------------------------------------------------------*/ -#define FF_CODE_PAGE 437 +#define FF_CODE_PAGE MBED_CONF_FAT_CHAN_FF_CODE_PAGE /* This option specifies the OEM code page to be used on the target system. / Incorrect code page setting can cause a file open failure. / @@ -99,8 +99,8 @@ */ -#define FF_USE_LFN 3 -#define FF_MAX_LFN 255 +#define FF_USE_LFN MBED_CONF_FAT_CHAN_FF_USE_LFN +#define FF_MAX_LFN MBED_CONF_FAT_CHAN_FF_MAX_LFN /* The FF_USE_LFN switches the support for LFN (long file name). / / 0: Disable LFN. FF_MAX_LFN has no effect. @@ -119,7 +119,7 @@ / ff_memfree() in ffsystem.c, need to be added to the project. */ -#define FF_LFN_UNICODE 0 +#define FF_LFN_UNICODE MBED_CONF_FAT_CHAN_FF_LFN_UNICODE /* This option switches the character encoding on the API when LFN is enabled. / / 0: ANSI/OEM in current CP (TCHAR = char) @@ -130,15 +130,15 @@ / When LFN is not enabled, this option has no effect. */ -#define FF_LFN_BUF 255 -#define FF_SFN_BUF 12 +#define FF_LFN_BUF MBED_CONF_FAT_CHAN_FF_LFN_BUF +#define FF_SFN_BUF MBED_CONF_FAT_CHAN_FF_SFN_BUF /* This set of options defines size of file name members in the FILINFO structure / which is used to read out directory items. These values should be suffcient for / the file names to read. The maximum possible length of the read file name depends / on character encoding. When LFN is not enabled, these options have no effect. */ -#define FF_STRF_ENCODE 3 +#define FF_STRF_ENCODE MBED_CONF_FAT_CHAN_FF_STRF_ENCODE /* When FF_LFN_UNICODE >= 1 with LFN enabled, string I/O functions, f_gets(), / f_putc(), f_puts and f_printf() convert the character encoding in it. / This option selects assumption of character encoding ON THE FILE to be @@ -151,7 +151,7 @@ */ -#define FF_FS_RPATH 1 +#define FF_FS_RPATH MBED_CONF_FAT_CHAN_FF_FS_RPATH /* This option configures support for relative path. / / 0: Disable relative path and remove related functions. @@ -164,12 +164,12 @@ / Drive/Volume Configurations /---------------------------------------------------------------------------*/ -#define FF_VOLUMES 4 +#define FF_VOLUMES MBED_CONF_FAT_CHAN_FF_VOLUMES /* Number of volumes (logical drives) to be used. (1-10) */ -#define FF_STR_VOLUME_ID 0 -#define FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" +#define FF_STR_VOLUME_ID MBED_CONF_FAT_CHAN_FF_STR_VOLUME_ID +#define FF_VOLUME_STRS MBED_CONF_FAT_CHAN_FF_VOLUME_STRS /* FF_STR_VOLUME_ID switches string support for volume ID. / When FF_STR_VOLUME_ID is set to 1, also pre-defined strings can be used as drive / number in the path name. FF_VOLUME_STRS defines the drive ID strings for each @@ -177,7 +177,7 @@ / the drive ID strings are: A-Z and 0-9. */ -#define FF_MULTI_PARTITION 0 +#define FF_MULTI_PARTITION MBED_CONF_FAT_CHAN_FF_MULTI_PARTITION /* This option switches support for multiple volumes on the physical drive. / By default (0), each logical drive number is bound to the same physical drive / number and only an FAT volume found on the physical drive will be mounted. @@ -186,8 +186,8 @@ / funciton will be available. */ -#define FF_MIN_SS 512 -#define FF_MAX_SS 4096 +#define FF_MIN_SS MBED_CONF_FAT_CHAN_FF_MIN_SS +#define FF_MAX_SS MBED_CONF_FAT_CHAN_FF_MAX_SS /* This set of options configures the range of sector size to be supported. (512, / 1024, 2048 or 4096) Always set both 512 for most systems, generic memory card and / harddisk. But a larger value may be required for on-board flash memory and some @@ -196,13 +196,13 @@ / GET_SECTOR_SIZE command. */ -#define FF_USE_TRIM 1 +#define FF_USE_TRIM MBED_CONF_FAT_CHAN_FF_USE_TRIM /* This option switches support for ATA-TRIM. (0:Disable or 1:Enable) / To enable Trim function, also CTRL_TRIM command should be implemented to the / disk_ioctl() function. */ -#define FF_FS_NOFSINFO 0 +#define FF_FS_NOFSINFO MBED_CONF_FAT_CHAN_FF_FS_NOFSINFO /* If you need to know correct free space on the FAT32 volume, set bit 0 of this / option, and f_getfree() function at first time after volume mount will force / a full FAT scan. Bit 1 controls the use of last allocated cluster number. @@ -219,20 +219,20 @@ / System Configurations /---------------------------------------------------------------------------*/ -#define FF_FS_TINY 1 +#define FF_FS_TINY MBED_CONF_FAT_CHAN_FF_FS_TINY /* This option switches tiny buffer configuration. (0:Normal or 1:Tiny) / At the tiny configuration, size of file object (FIL) is shrinked FF_MAX_SS bytes. / Instead of private sector buffer eliminated from the file object, common sector / buffer in the filesystem object (FATFS) is used for the file data transfer. */ -#define FF_FS_EXFAT 0 +#define FF_FS_EXFAT MBED_CONF_FAT_CHAN_FF_FS_EXFAT /* This option switches support for exFAT filesystem. (0:Disable or 1:Enable) / When enable exFAT, also LFN needs to be enabled. / Note that enabling exFAT discards ANSI C (C89) compatibility. */ -#define FF_FS_HEAPBUF 1 +#define FF_FS_HEAPBUF MBED_CONF_FAT_CHAN_FF_FS_HEAPBUF /* This option enables the use of the heap for allocating buffers. Otherwise / _MAX_SS sized buffers are allocated statically in relevant structures (in / FATFS if _FS_TINY, otherwise in FATFS and FIL) @@ -240,10 +240,10 @@ / on underlying sector size. */ -#define FF_FS_NORTC 0 -#define FF_NORTC_MON 1 -#define FF_NORTC_MDAY 1 -#define FF_NORTC_YEAR 2017 +#define FF_FS_NORTC MBED_CONF_FAT_CHAN_FF_FS_NORTC +#define FF_NORTC_MON MBED_CONF_FAT_CHAN_FF_NORTC_MON +#define FF_NORTC_MDAY MBED_CONF_FAT_CHAN_FF_NORTC_MDAY +#define FF_NORTC_YEAR MBED_CONF_FAT_CHAN_FF_NORTC_YEAR /* The option FF_FS_NORTC switches timestamp functiton. If the system does not have / any RTC function or valid timestamp is not needed, set FF_FS_NORTC = 1 to disable / the timestamp function. All objects modified by FatFs will have a fixed timestamp @@ -254,7 +254,7 @@ / These options have no effect at read-only configuration (FF_FS_READONLY = 1). */ -#define FF_FS_LOCK 0 +#define FF_FS_LOCK MBED_CONF_FAT_CHAN_FF_FS_LOCK /* The option FF_FS_LOCK switches file lock function to control duplicated file open / and illegal operation to open objects. This option must be 0 when FF_FS_READONLY / is 1. @@ -266,9 +266,9 @@ / lock control is independent of re-entrancy. */ -#define FF_FS_REENTRANT 0 -#define FF_FS_TIMEOUT 1000 -#define FF_SYNC_t HANDLE +#define FF_FS_REENTRANT MBED_CONF_FAT_CHAN_FF_FS_REENTRANT +#define FF_FS_TIMEOUT MBED_CONF_FAT_CHAN_FF_FS_TIMEOUT +#define FF_SYNC_t MBED_CONF_FAT_CHAN_FF_SYNC_t /* The option FF_FS_REENTRANT switches the re-entrancy (thread safe) of the FatFs / module itself. Note that regardless of this option, file access to different / volume is always re-entrant and volume control functions, f_mount(), f_mkfs() @@ -288,8 +288,8 @@ /* #include // O/S definitions */ -#define FLUSH_ON_NEW_CLUSTER 0 /* Sync the file on every new cluster */ -#define FLUSH_ON_NEW_SECTOR 1 /* Sync the file on every new sector */ +#define FLUSH_ON_NEW_CLUSTER MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_CLUSTER /* Sync the file on every new cluster */ +#define FLUSH_ON_NEW_SECTOR MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_SECTOR /* Sync the file on every new sector */ /* Only one of these two defines needs to be set to 1. If both are set to 0 the file is only sync when closed. Clusters are group of sectors (eg: 8 sectors). Flushing on new cluster means diff --git a/cores/arduino/mbed/features/storage/kvstore/tdbstore/TDBStore.h b/cores/arduino/mbed/features/storage/kvstore/tdbstore/TDBStore.h index e2a40d6e..5732946f 100644 --- a/cores/arduino/mbed/features/storage/kvstore/tdbstore/TDBStore.h +++ b/cores/arduino/mbed/features/storage/kvstore/tdbstore/TDBStore.h @@ -61,8 +61,7 @@ class TDBStore : public KVStore { * the available data and clean corrupted and erroneous records. * * @returns MBED_SUCCESS Success. - * MBED_ERROR_READ_FAILED Unable to read from media. - * MBED_ERROR_WRITE_FAILED Unable to write to media. + * @returns Negative error code on failure. */ virtual int init(); @@ -309,7 +308,6 @@ class TDBStore : public KVStore { uint32_t _prog_size; uint8_t *_work_buf; char *_key_buf; - bool _variant_bd_erase_unit_size; void *_inc_set_handle; void *_iterator_table[_max_open_iterators]; @@ -366,8 +364,8 @@ class TDBStore : public KVStore { * * @param[in] area Area. * @param[in] offset Offset of record in area. - * @param[in] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. - * @param[in] data_buf Data buffer. + * @param[out] key Key - must not include '*' '/' '?' ':' ';' '\' '"' '|' ' ' '<' '>' '\'. + * @param[out] data_buf Data buffer. * @param[in] data_buf_size Data buffer size. * @param[out] actual_data_size Actual data size. * @param[in] data_offset Offset in data. diff --git a/cores/arduino/mbed/features/storage/nvstore/source/nvstore.h b/cores/arduino/mbed/features/storage/nvstore/source/nvstore.h index 2890437a..97dde855 100644 --- a/cores/arduino/mbed/features/storage/nvstore/source/nvstore.h +++ b/cores/arduino/mbed/features/storage/nvstore/source/nvstore.h @@ -294,6 +294,7 @@ class NVStore : private mbed::NonCopyable { uint8_t *_page_buf; // Private constructor, as class is a singleton + MBED_DEPRECATED_SINCE("mbed-os-5.15", "NVStore is deprecated in favor of KVStore") NVStore(); /** diff --git a/cores/arduino/mbed/hal/analogin_api.h b/cores/arduino/mbed/hal/analogin_api.h index fdf91dc6..d172607c 100644 --- a/cores/arduino/mbed/hal/analogin_api.h +++ b/cores/arduino/mbed/hal/analogin_api.h @@ -35,9 +35,40 @@ typedef struct analogin_s analogin_t; /** * \defgroup hal_analogin Analogin hal functions + * + * # Defined behaviour + * * The function ::analogin_init initializes the analogin_t control structure + * * The function ::analogin_free returns the pin owned by the Analogin object to its reset state + * * The function ::analogin_read reads the input voltage, represented as a float in the range [0.0 (GND), 1.0 (VCC)] + * * The function ::analogin_read_u16 reads the value from analogin pin, represented as an unsigned 16bit value [0.0 (GND), MAX_UINT16 (VCC)] + * * The accuracy of the ADC is +/- 10% + * * The ADC operations ::analogin_read, ::analogin_read_u16 take less than 20us to complete + * + * # Undefined behaviour + * + * * ::analogin_init is called with invalid pin (which does not support analog input function) + * * Calling ::analogin_read, ::analogin_read_u16 before ::analogin_init * @{ */ +/** + * \defgroup hal_analogin_tests Analogin hal tests + * The Analogin HAL tests ensure driver conformance to defined behaviour. + * + * To run the Analogin hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-analogin + * + */ + +/** Initialize the analogin peripheral + * + * Configures the pin used by analogin. + * @param obj The analogin object to initialize + * @param pinmap pointer to structure which holds static pinmap + */ +void analogin_init_direct(analogin_t *obj, const PinMap *pinmap); + /** Initialize the analogin peripheral * * Configures the pin used by analogin. @@ -46,6 +77,13 @@ typedef struct analogin_s analogin_t; */ void analogin_init(analogin_t *obj, PinName pin); +/** Release the analogin peripheral + * + * Releases the pin used by analogin. + * @param obj The analogin object to initialize + */ +void analogin_free(analogin_t *obj); + /** Read the input voltage, represented as a float in the range [0.0, 1.0] * * @param obj The analogin object diff --git a/cores/arduino/mbed/hal/analogout_api.h b/cores/arduino/mbed/hal/analogout_api.h index 95531cc7..42129070 100644 --- a/cores/arduino/mbed/hal/analogout_api.h +++ b/cores/arduino/mbed/hal/analogout_api.h @@ -35,9 +35,42 @@ typedef struct dac_s dac_t; /** * \defgroup hal_analogout Analogout hal functions + * + * # Defined behaviour + * * The function ::analogout_init initializes the dac_t control structure + * * The function ::analogout_write sets the output voltage, specified as a percentage (float) in range [0.0 (GND), 1.0 (VCC)] + * * The function ::analogout_write_u16 sets the output voltage, specified as unsigned 16-bit value [0 (GND), MAX_UINT16 (VCC)] + * * The function ::analogout_read reads the current voltage value on the pin and returns a floating-point value representing the current voltage in range [0.0 (GND), 1.0 (VCC)] + * * The function ::analogout_read_u16 reads the current voltage value on the pin and returns the output voltage, specified as unsigned 16-bit value [0 (GND), MAX_UINT16 (VCC)] + * * The accuracy of the DAC is +/- 10% + * * The DAC operations ::analogout_write, ::analogout_write_u16, ::analogout_read, ::analogout_read_u16 take less than 20us to complete + * * The function ::analogout_free releases the analogout object + * + * # Undefined behaviour + * + * * ::analogout_init is called with invalid pin (which does not support analog output function) + * * Calling other functions before ::analogout_init * @{ */ +/** + * \defgroup hal_analogin_tests Analogout hal tests + * The Analogout HAL tests ensure driver conformance to defined behaviour. + * + * To run the Analogout hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-analogout + * + */ + +/** Initialize the analogout peripheral + * + * Configures the pin used by analogout. + * @param obj The analogout object to initialize + * @param pinmap pointer to structure which holds static pinmap + */ +void analogout_init_direct(dac_t *obj, const PinMap *pinmap); + /** Initialize the analogout peripheral * * Configures the pin used by analogout. @@ -48,7 +81,6 @@ void analogout_init(dac_t *obj, PinName pin); /** Release the analogout object * - * Note: This is not currently used in the mbed-drivers * @param obj The analogout object */ void analogout_free(dac_t *obj); diff --git a/cores/arduino/mbed/hal/can_api.h b/cores/arduino/mbed/hal/can_api.h index 675c7a1b..39ac050a 100644 --- a/cores/arduino/mbed/hal/can_api.h +++ b/cores/arduino/mbed/hal/can_api.h @@ -55,12 +55,22 @@ typedef enum { MODE_TEST_SILENT } CanMode; +typedef struct { + int peripheral; + PinName rd_pin; + int rd_function; + PinName td_pin; + int td_function; +} can_pinmap_t; + typedef void (*can_irq_handler)(uint32_t id, CanIrqType type); typedef struct can_s can_t; void can_init(can_t *obj, PinName rd, PinName td); +void can_init_direct(can_t *obj, const can_pinmap_t *pinmap); void can_init_freq(can_t *obj, PinName rd, PinName td, int hz); +void can_init_freq_direct(can_t *obj, const can_pinmap_t *pinmap, int hz); void can_free(can_t *obj); int can_frequency(can_t *obj, int hz); diff --git a/cores/arduino/mbed/hal/gpio_api.h b/cores/arduino/mbed/hal/gpio_api.h index 48f2d316..cafba8d1 100644 --- a/cores/arduino/mbed/hal/gpio_api.h +++ b/cores/arduino/mbed/hal/gpio_api.h @@ -34,6 +34,18 @@ extern "C" { * # Defined behavior * * ::gpio_init and other init functions can be called with NC or a valid PinName for the target - Verified by ::gpio_nc_test * * ::gpio_is_connected can be used to test whether a gpio_t object was initialized with NC - Verified by ::gpio_nc_test + * * ::gpio_init initializes the GPIO pin + * * ::gpio_free returns the pin owned by the GPIO object to its reset state + * * ::gpio_mode sets the mode of the given pin + * * ::gpio_dir sets the direction of the given pin + * * ::gpio_write sets the gpio output value + * * ::gpio_read reads the input value + * * ::gpio_init_in inits the input pin and sets mode to PullDefault + * * ::gpio_init_in_ex inits the input pin and sets the mode + * * ::gpio_init_out inits the pin as an output, with predefined output value 0 + * * ::gpio_init_out_ex inits the pin as an output and sets the output value + * * ::gpio_init_inout inits the pin to be input/output and set pin mode and value + * * The GPIO operations ::gpio_write, ::gpio_read take less than 20us to complete * * # Undefined behavior * * Calling any ::gpio_mode, ::gpio_dir, ::gpio_write or ::gpio_read on a gpio_t object that was initialized @@ -43,6 +55,16 @@ extern "C" { * @{ */ +/** + * \defgroup hal_gpio_tests GPIO HAL tests + * The GPIO HAL tests ensure driver conformance to defined behaviour. + * + * To run the GPIO hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-gpio,tests-mbed_hal-gpio + * + */ + /** Set the given pin as GPIO * * @param pin The pin to be set as GPIO @@ -64,6 +86,12 @@ int gpio_is_connected(const gpio_t *obj); */ void gpio_init(gpio_t *obj, PinName pin); +/** Releases the GPIO pin + * + * @param obj The GPIO object to release + */ +void gpio_free(gpio_t *obj); + /** Set the input pin mode * * @param obj The GPIO object (must be connected) diff --git a/cores/arduino/mbed/hal/gpio_irq_api.h b/cores/arduino/mbed/hal/gpio_irq_api.h index 931c8001..e08b049c 100644 --- a/cores/arduino/mbed/hal/gpio_irq_api.h +++ b/cores/arduino/mbed/hal/gpio_irq_api.h @@ -45,9 +45,31 @@ typedef void (*gpio_irq_handler)(uint32_t id, gpio_irq_event event); /** * \defgroup hal_gpioirq GPIO IRQ HAL functions + * + * # Defined behavior + * * ::gpio_irq_init initializes the GPIO IRQ pin + * * ::gpio_irq_init attaches the interrupt handler + * * ::gpio_irq_free releases the GPIO IRQ pin + * * ::gpio_irq_set enables/disables pin IRQ event + * * ::gpio_irq_enable enables GPIO IRQ + * * ::gpio_irq_disable disables GPIO IRQ + * + * # Undefined behavior + * * Calling other function before ::gpio_irq_init + * * @{ */ +/** + * \defgroup hal_gpioirq_tests GPIO IRQ HAL tests + * The GPIO IRQ HAL tests ensure driver conformance to defined behaviour. + * + * To run the GPIO IRQ hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-gpio_irq + * + */ + /** Initialize the GPIO IRQ pin * * @param obj The GPIO object to initialize diff --git a/cores/arduino/mbed/hal/i2c_api.h b/cores/arduino/mbed/hal/i2c_api.h index 3ade94ce..9a719858 100644 --- a/cores/arduino/mbed/hal/i2c_api.h +++ b/cores/arduino/mbed/hal/i2c_api.h @@ -64,15 +64,94 @@ enum { I2C_ERROR_BUS_BUSY = -2 }; +typedef struct { + int peripheral; + PinName sda_pin; + int sda_function; + PinName scl_pin; + int scl_function; +} i2c_pinmap_t; + #ifdef __cplusplus extern "C" { #endif /** * \defgroup hal_GeneralI2C I2C Configuration Functions + * + * # Defined behavior + * * ::i2c_init initializes i2c_t control structure + * * ::i2c_init configures the pins used by I2C + * * ::i2c_free returns the pins owned by the I2C object to their reset state + * * ::i2c_frequency configure the I2C frequency + * * ::i2c_start sends START command + * * ::i2c_read reads `length` bytes from the I2C slave specified by `address` to the `data` buffer + * * ::i2c_read reads generates a stop condition on the bus at the end of the transfer if `stop` parameter is non-zero + * * ::i2c_read reads returns the number of symbols received from the bus + * * ::i2c_write writes `length` bytes to the I2C slave specified by `address` from the `data` buffer + * * ::i2c_write generates a stop condition on the bus at the end of the transfer if `stop` parameter is non-zero + * * ::i2c_write returns zero on success, error code otherwise + * * ::i2c_reset resets the I2C peripheral + * * ::i2c_byte_read reads and return one byte from the specfied I2C slave + * * ::i2c_byte_read uses `last` parameter to inform the slave that all bytes have been read + * * ::i2c_byte_write writes one byte to the specified I2C slave + * * ::i2c_byte_write returns 0 if NAK was received, 1 if ACK was received, 2 for timeout + * * ::i2c_slave_mode enables/disables I2S slave mode + * * ::i2c_slave_receive returns: 1 - read addresses, 2 - write to all slaves, 3 write addressed, 0 - the slave has not been addressed + * * ::i2c_slave_read reads `length` bytes from the I2C master to the `data` buffer + * * ::i2c_slave_read returns non-zero if a value is available, 0 otherwise + * * ::i2c_slave_write writes `length` bytes to the I2C master from the `data` buffer + * * ::i2c_slave_write returns non-zero if a value is available, 0 otherwise + * * ::i2c_slave_address configures I2C slave address + * * ::i2c_transfer_asynch starts I2C asynchronous transfer + * * ::i2c_transfer_asynch writes `tx_length` bytes to the I2C slave specified by `address` from the `tx` buffer + * * ::i2c_transfer_asynch reads `rx_length` bytes from the I2C slave specified by `address` to the `rx` buffer + * * ::i2c_transfer_asynch generates a stop condition on the bus at the end of the transfer if `stop` parameter is non-zero + * * The callback given to ::i2c_transfer_asynch is invoked when the transfer completes + * * ::i2c_transfer_asynch specifies the logical OR of events to be registered + * * The ::i2c_transfer_asynch function may use the `DMAUsage` hint to select the appropriate async algorithm + * * ::i2c_irq_handler_asynch returns event flags if a transfer termination condition was met, otherwise returns 0. + * * ::i2c_active returns non-zero if the I2C module is active or 0 if it is not + * * ::i2c_abort_asynch aborts an on-going async transfer + * + * # Undefined behavior + * * Calling ::i2c_init multiple times on the same `i2c_t` + * * Calling any function other than ::i2c_init on a non-initialized `i2c_t` + * * Initialising the `I2C` peripheral with invalid `SDA` and `SCL` pins. + * * Passing pins that cannot be on the same peripheral + * * Passing an invalid pointer as `obj` to any function + * * Use of a `null` pointer as an argument to any function. + * * Initialising the peripheral in slave mode if slave mode is not supported + * * Operating the peripheral in slave mode without first specifying and address using ::i2c_slave_address + * * Setting an address using i2c_slave_address after initialising the peripheral in master mode + * * Setting an address to an `I2C` reserved value + * * Specifying an invalid address when calling any `read` or `write` functions + * * Setting the length of the transfer or receive buffers to larger than the buffers are + * * Passing an invalid pointer as `handler` + * * Calling ::i2c_abort_async when no transfer is currently in progress + * + * * @{ */ +/** + * \defgroup hal_GeneralI2C_tests I2C hal tests + * The I2C HAL tests ensure driver conformance to defined behaviour. + * + * To run the I2C hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-i2c + * + */ + +/** Initialize the I2C peripheral. It sets the default parameters for I2C + * peripheral, and configures its specifieds pins. + * + * @param obj The I2C object + * @param pinmap Pinmap pointer to structure which holds static pinmap + */ +void i2c_init_direct(i2c_t *obj, const i2c_pinmap_t *pinmap); + /** Initialize the I2C peripheral. It sets the default parameters for I2C * peripheral, and configures its specifieds pins. * @@ -82,6 +161,13 @@ extern "C" { */ void i2c_init(i2c_t *obj, PinName sda, PinName scl); +/** Release a I2C object + * + * Return the pins owned by the I2C object to their reset state + * @param obj The I2C object to deinitialize + */ +void i2c_free(i2c_t *obj); + /** Configure the I2C frequency * * @param obj The I2C object diff --git a/cores/arduino/mbed/hal/pwmout_api.h b/cores/arduino/mbed/hal/pwmout_api.h index 62d5d709..977f7c64 100644 --- a/cores/arduino/mbed/hal/pwmout_api.h +++ b/cores/arduino/mbed/hal/pwmout_api.h @@ -35,9 +35,46 @@ typedef struct pwmout_s pwmout_t; /** * \defgroup hal_pwmout Pwmout hal functions + * + * # Defined behavior + * * ::pwmout_init initializes the pwmout_t control structure + * * ::pwmout_free deinitializes the pwmout object + * * ::pwmout_write sets the output duty-cycle in range <0.0f, 1.0f> + * * ::pwmout_read returns the current float-point output duty-cycle in range <0.0f, 1.0f> + * * ::pwmout_period sets the PWM period specified in seconds, keeping the duty cycle the same + * * ::pwmout_period_ms sets the PWM period specified in miliseconds, keeping the duty cycle the same + * * ::pwmout_period_us sets the PWM period specified in microseconds, keeping the duty cycle the same + * * ::pwmout_pulsewidth sets the PWM pulsewidth specified in seconds, keeping the period the same + * * ::pwmout_pulsewidth_ms sets the PWM pulsewidth specified in miliseconds, keeping the period the same + * * ::pwmout_pulsewidth_us sets the PWM pulsewidth specified in microseconds, keeping the period the same + * * The accuracy of the PWM is +/- 10% + * * The PWM operations ::pwmout_write, ::pwmout_read, ::pwmout_read, ::pwmout_period_ms, ::pwmout_period_us + * ::pwmout_pulsewidth, ::pwmout_pulsewidth_ms, ::pwmout_pulsewidth_us take less than 20us to complete + * + * # Undefined behavior + * * Calling other function before ::pwmout_init + * * Calling ::pwmout_init with NC as pwmout pin + * * @{ */ +/** + * \defgroup hal_pwmout_tests GPIO IRQ HAL tests + * The Pwmout HAL tests ensure driver conformance to defined behaviour. + * + * To run the Pwmout hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-pwm + * + */ + +/** Initialize the pwm out peripheral and configure the pin + * + * @param obj The pwmout object to initialize + * @param pinmap pointer to structure which holds static pinmap + */ +void pwmout_init_direct(pwmout_t *obj, const PinMap *pinmap); + /** Initialize the pwm out peripheral and configure the pin * * @param obj The pwmout object to initialize diff --git a/cores/arduino/mbed/hal/qspi_api.h b/cores/arduino/mbed/hal/qspi_api.h index 2d7d65b0..f753de2c 100644 --- a/cores/arduino/mbed/hal/qspi_api.h +++ b/cores/arduino/mbed/hal/qspi_api.h @@ -39,6 +39,22 @@ extern "C" { */ typedef struct qspi_s qspi_t; +typedef struct { + int peripheral; + PinName data0_pin; + int data0_function; + PinName data1_pin; + int data1_function; + PinName data2_pin; + int data2_function; + PinName data3_pin; + int data3_function; + PinName sclk_pin; + int sclk_function; + PinName ssel_pin; + int ssel_function; +} qspi_pinmap_t; + /** QSPI Bus width * * Some parts of commands provide variable bus width @@ -124,6 +140,20 @@ typedef enum qspi_status { */ qspi_status_t qspi_init(qspi_t *obj, PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName ssel, uint32_t hz, uint8_t mode); +/** Initialize QSPI peripheral. + * + * It should initialize QSPI pins (io0-io3, sclk and ssel), set frequency, clock polarity and phase mode. The clock for the peripheral should be enabled + * + * @param obj QSPI object + * @param pinmap pointer to structure which holds static pinmap + * @param hz The bus frequency + * @param mode Clock polarity and phase mode (0 - 3) + * @return QSPI_STATUS_OK if initialisation successfully executed + QSPI_STATUS_INVALID_PARAMETER if invalid parameter found + QSPI_STATUS_ERROR otherwise + */ +qspi_status_t qspi_init_direct(qspi_t *obj, const qspi_pinmap_t *pinmap, uint32_t hz, uint8_t mode); + /** Deinitilize QSPI peripheral * * It should release pins that are associated with the QSPI object, and disable clocks for QSPI peripheral module that was associated with the object diff --git a/cores/arduino/mbed/hal/serial_api.h b/cores/arduino/mbed/hal/serial_api.h index 32eb362f..78a1ee8a 100644 --- a/cores/arduino/mbed/hal/serial_api.h +++ b/cores/arduino/mbed/hal/serial_api.h @@ -70,9 +70,11 @@ typedef enum { ParityForced0 = 4 } SerialParity; +/** Serial interrupt sources + */ typedef enum { - RxIrq, - TxIrq + RxIrq, /**< Receive Data Register Full */ + TxIrq /**< Transmit Data Register Empty */ } SerialIrq; typedef enum { @@ -102,15 +104,113 @@ typedef struct serial_s serial_t; #endif +typedef struct { + int peripheral; + PinName tx_pin; + int tx_function; + PinName rx_pin; + int rx_function; + bool stdio_config; +} serial_pinmap_t; + +typedef struct { + int peripheral; + PinName tx_flow_pin; + int tx_flow_function; + PinName rx_flow_pin; + int rx_flow_function; +} serial_fc_pinmap_t; + #ifdef __cplusplus extern "C" { #endif /** * \defgroup hal_GeneralSerial Serial Configuration Functions + * + * # Defined behavior + * * ::serial_init initializes the ::serial_t + * * ::serial_init sets the default parameters for serial peripheral (9600 bps, 8N1 format) + * * ::serial_init configures the specified pins + * * ::serial_free releases the serial peripheral + * * ::serial_baud configures the baud rate + * * at least 9600 bps the baud rate must be supported + * * ::serial_format configures the transmission format (number of bits, parity and the number of stop bits) + * * at least 8N1 format must be supported + * * ::serial_irq_handler registers the interrupt handler which will be invoked when the interrupt fires. + * * ::serial_irq_set enables or disables the serial RX or TX IRQ. + * * If `RxIrq` is enabled by ::serial_irq_set, ::serial_irq_handler will be invoked whenever + * Receive Data Register Full IRQ is generated. + * * If `TxIrq` is enabled by ::serial_irq_set, ::serial_irq_handler will be invoked whenever + * Transmit Data Register Empty IRQ is generated. + * * If the interrupt condition holds true, when the interrupt is enabled with ::serial_irq_set, + * the ::serial_irq_handler is called instantly. + * * ::serial_getc returns the character from serial buffer. + * * ::serial_getc is a blocking call (waits for the character). + * * ::serial_putc sends a character. + * * ::serial_putc is a blocking call (waits for a peripheral to be available). + * * ::serial_readable returns non-zero value if a character can be read, 0 otherwise. + * * ::serial_writable returns non-zero value if a character can be written, 0 otherwise. + * * ::serial_clear clears the ::serial_t RX/TX buffers + * * ::serial_break_set sets the break signal. + * * ::serial_break_clear clears the break signal. + * * ::serial_pinout_tx configures the TX pin as an output (to be used in half-duplex mode). + * * ::serial_set_flow_control configures serial flow control. + * * ::serial_set_flow_control sets flow control in the hardware if a serial peripheral supports it, + * otherwise software emulation is used. + * * ::serial_tx_asynch starts the serial asynchronous transfer. + * * ::serial_tx_asynch writes `tx_length` bytes from the `tx` to the bus. + * * ::serial_tx_asynch must support 8 data bits + * * The callback given to ::serial_tx_asynch is invoked when the transfer completes. + * * ::serial_tx_asynch specifies the logical OR of events to be registered. + * * The ::serial_tx_asynch function may use the `DMAUsage` hint to select the appropriate async algorithm. + * * ::serial_rx_asynch starts the serial asynchronous transfer. + * * ::serial_rx_asynch reads `rx_length` bytes to the `rx` buffer. + * * ::serial_rx_asynch must support 8 data bits + * * The callback given to ::serial_rx_asynch is invoked when the transfer completes. + * * ::serial_rx_asynch specifies the logical OR of events to be registered. + * * The ::serial_rx_asynch function may use the `DMAUsage` hint to select the appropriate async algorithm. + * * ::serial_rx_asynch specifies a character in range 0-254 to be matched, 255 is a reserved value. + * * If SERIAL_EVENT_RX_CHARACTER_MATCH event is not registered, the `char_match` is ignored. + * * The SERIAL_EVENT_RX_CHARACTER_MATCH event is set in the callback when SERIAL_EVENT_RX_CHARACTER_MATCH event is + * registered AND `char_match` is present in the received data. + * * ::serial_tx_active returns non-zero if the TX transaction is ongoing, 0 otherwise. + * * ::serial_rx_active returns non-zero if the RX transaction is ongoing, 0 otherwise. + * * ::serial_irq_handler_asynch returns event flags if a transfer termination condition was met, otherwise returns 0. + * * ::serial_irq_handler_asynch takes no longer than one packet transfer time (packet_bits / baudrate) to execute. + * * ::serial_tx_abort_asynch aborts the ongoing TX transaction. + * * ::serial_tx_abort_asynch disables the enabled interupt for TX. + * * ::serial_tx_abort_asynch flushes the TX hardware buffer if TX FIFO is used. + * * ::serial_rx_abort_asynch aborts the ongoing RX transaction. + * * ::serial_rx_abort_asynch disables the enabled interupt for RX. + * * ::serial_rx_abort_asynch flushes the TX hardware buffer if RX FIFO is used. + * * Correct operation guaranteed when interrupt latency is shorter than one packet transfer time (packet_bits / baudrate) + * if the flow control is not used. + * * Correct operation guaranteed regardless of interrupt latency if the flow control is used. + * + * # Undefined behavior + * * Calling ::serial_init multiple times on the same `serial_t` without ::serial_free. + * * Passing invalid pin to ::serial_init, ::serial_pinout_tx. + * * Calling any function other than ::serial_init on am uninitialized or freed `serial_t`. + * * Passing an invalid pointer as `obj` to any function. + * * Passing an invalid pointer as `handler` to ::serial_irq_handler, ::serial_tx_asynch, ::serial_rx_asynch. + * * Calling ::serial_tx_abort while no async TX transfer is being processed. + * * Calling ::serial_rx_abort while no async RX transfer is being processed. + * * Devices behavior is undefined when the interrupt latency is longer than one packet transfer time + * (packet_bits / baudrate) if the flow control is not used. * @{ */ +/** + * \defgroup hal_GeneralSerial_tests Serial hal tests + * The Serial HAL tests ensure driver conformance to defined behavior. + * + * To run the Serial hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-uart + * + */ + /** Initialize the serial peripheral. It sets the default parameters for serial * peripheral, and configures its specifieds pins. * @@ -120,6 +220,15 @@ extern "C" { */ void serial_init(serial_t *obj, PinName tx, PinName rx); +/** Initialize the serial peripheral. It sets the default parameters for serial + * peripheral, and configures its specifieds pins. + * + * @param obj The serial object + * @param pinmap pointer to structure which holds static pinmap + */ +void serial_init_direct(serial_t *obj, const serial_pinmap_t *pinmap); + + /** Release the serial peripheral, not currently invoked. It requires further * resource management. * @@ -221,6 +330,15 @@ void serial_pinout_tx(PinName tx); * @param txflow The RX pin name */ void serial_set_flow_control(serial_t *obj, FlowControl type, PinName rxflow, PinName txflow); + +/** Configure the serial for the flow control. It sets flow control in the hardware + * if a serial peripheral supports it, otherwise software emulation is used. + * + * @param obj The serial object + * @param type The type of the flow control. Look at the available FlowControl types. + * @param pinmap Pointer to structure which holds static pinmap + */ +void serial_set_flow_control_direct(serial_t *obj, FlowControl type, const serial_fc_pinmap_t *pinmap); #endif /** Get the pins that support Serial TX @@ -293,7 +411,6 @@ int serial_tx_asynch(serial_t *obj, const void *tx, size_t tx_length, uint8_t tx * @param rx_width Deprecated argument * @param handler The serial handler * @param event The logical OR of events to be registered - * @param handler The serial handler * @param char_match A character in range 0-254 to be matched * @param hint A suggestion for how to use DMA with this transfer */ diff --git a/cores/arduino/mbed/hal/spi_api.h b/cores/arduino/mbed/hal/spi_api.h index a6ac1a3d..d1cb2a1a 100644 --- a/cores/arduino/mbed/hal/spi_api.h +++ b/cores/arduino/mbed/hal/spi_api.h @@ -53,15 +53,106 @@ typedef struct spi_s spi_t; #endif +typedef struct { + int peripheral; + PinName mosi_pin; + int mosi_function; + PinName miso_pin; + int miso_function; + PinName sclk_pin; + int sclk_function; + PinName ssel_pin; + int ssel_function; +} spi_pinmap_t; + +/** + * Describes the capabilities of a SPI peripherals + */ +typedef struct { + /** Minimum frequency supported must be set by target device and it will be assessed during + * testing. + */ + uint32_t minimum_frequency; + /** Maximum frequency supported must be set by target device and it will be assessed during + * testing. + */ + uint32_t maximum_frequency; + /** Each bit represents the corresponding word length. lsb => 1bit, msb => 32bit. */ + uint32_t word_length; + uint16_t slave_delay_between_symbols_ns; /**< specifies required number of ns between transmission of successive symbols in slave mode. */ + uint8_t clk_modes; /**< specifies supported modes from spi_mode_t. Each bit represents the corresponding mode. */ + bool support_slave_mode; /**< If true, the device can handle SPI slave mode using hardware management on the specified ssel pin. */ + bool hw_cs_handle; /**< If true, in SPI master mode Chip Select can be handled by hardware. */ + bool async_mode; /**< If true, in async mode is supported. */ + +} spi_capabilities_t; + #ifdef __cplusplus extern "C" { #endif /** * \defgroup hal_GeneralSPI SPI Configuration Functions + * + * # Defined behavior + * * ::spi_init initializes the spi_t control structure + * * ::spi_init configures the pins used by SPI + * * ::spi_get_capabilities() fills the given `spi_capabilities_t` instance + * * ::spi_get_capabilities() should consider the `ssel` pin when evaluation the `support_slave_mode` and `hw_cs_handle` capability + * * ::spi_get_capabilities(): if the given `ssel` pin cannot be managed by hardware, `support_slave_mode` and `hw_cs_handle` should be false + * * At least a symbol width of 8bit must be supported + * * The supported frequency range must include the range [0.2..2] MHz + * * ::spi_free returns the pins owned by the SPI object to their reset state + * * ::spi_format sets the number of bits per frame + * * ::spi_format configures clock polarity and phase + * * ::spi_format configures master/slave mode + * * ::spi_frequency sets the SPI baud rate + * * ::spi_master_write writes a symbol out in master mode and receives a symbol + * * ::spi_master_block_write writes `tx_length` words to the bus + * * ::spi_master_block_write reads `rx_length` words from the bus + * * ::spi_master_block_write returns the maximum of tx_length and rx_length + * * ::spi_master_block_write specifies the write_fill which is default data transmitted while performing a read + * * ::spi_get_module returns non-zero if a value is available to read from SPI channel, 0 otherwise + * * ::spi_slave_read returns a received value out of the SPI receive buffer in slave mode + * * ::spi_slave_read blocks until a value is available + * * ::spi_slave_write writes a value to the SPI peripheral in slave mode + * * ::spi_slave_write blocks until the SPI peripheral can be written to + * * ::spi_busy returns non-zero if the peripheral is currently transmitting, 0 otherwise + * * ::spi_master_transfer starts the SPI asynchronous transfer + * * ::spi_master_transfer writes `tx_len` words to the bus + * * ::spi_master_transfer reads `rx_len` words from the bus + * * ::spi_master_transfer specifies the bit width of buffer words + * * The callback given to ::spi_master_transfer is invoked when the transfer completes (with a success or an error) + * * ::spi_master_transfer specifies the logical OR of events to be registered + * * The ::spi_master_transfer function may use the `DMAUsage` hint to select the appropriate async algorithm + * * ::spi_irq_handler_asynch reads the received values out of the RX FIFO + * * ::spi_irq_handler_asynch writes values into the TX FIFO + * * ::spi_irq_handler_asynch checks for transfer termination conditions, such as buffer overflows or transfer complete + * * ::spi_irq_handler_asynch returns event flags if a transfer termination condition was met, otherwise 0 + * * ::spi_abort_asynch aborts an on-going async transfer + * * ::spi_active returns non-zero if the SPI port is active or zero if it is not + * + * # Undefined behavior + * * Calling ::spi_init multiple times on the same `spi_t` without ::spi_free + * * Calling any function other than ::spi_init on a non-initialized or freed `spi_t` + * * Passing pins that cannot be on the same peripheral + * * Passing an invalid pointer as `obj` to any function + * * Passing an invalid pointer as `handler` to ::spi_master_transfer + * * Calling ::spi_abort while no async transfer is being processed (no transfer or a synchronous transfer) + * * @{ */ +/** + * \defgroup hal_GeneralSPI_tests SPI hal tests + * The SPI HAL tests ensure driver conformance to defined behaviour. + * + * To run the SPI hal tests use the command: + * + * mbed test -t -m -n tests-mbed_hal_fpga_ci_test_shield-spi + * + */ + #ifdef DEVICE_SPI_COUNT /** * Returns a variant of the SPIName enum uniquely identifying a SPI peripheral of the device. @@ -73,6 +164,19 @@ extern "C" { SPIName spi_get_peripheral_name(PinName mosi, PinName miso, PinName mclk); #endif +/** + * Fills the given spi_capabilities_t structure with the capabilities of the given peripheral. + */ +void spi_get_capabilities(PinName ssel, bool slave, spi_capabilities_t *cap); + +/** Initialize the SPI peripheral + * + * Configures the pins used by SPI, sets a default format and frequency, and enables the peripheral + * @param[out] obj The SPI object to initialize + * @param[in] pinmap pointer to structure which holds static pinmap + */ +void spi_init_direct(spi_t *obj, const spi_pinmap_t *pinmap); + /** Initialize the SPI peripheral * * Configures the pins used by SPI, sets a default format and frequency, and enables the peripheral diff --git a/cores/arduino/mbed/hal/static_pinmap.h b/cores/arduino/mbed/hal/static_pinmap.h new file mode 100644 index 00000000..fafed9cc --- /dev/null +++ b/cores/arduino/mbed/hal/static_pinmap.h @@ -0,0 +1,363 @@ +/* mbed Microcontroller Library + * Copyright (c) 2018-2019 ARM Limited + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ +#ifndef STATIC_PINMAP_H +#define STATIC_PINMAP_H + +#include "PinNames.h" +#include "spi_api.h" +#include "pwmout_api.h" +#include "analogin_api.h" +#include "analogout_api.h" +#include "i2c_api.h" +#include "serial_api.h" +#include "qspi_api.h" +#include "can_api.h" +#include + +#if STATIC_PINMAP_READY +#include "PeripheralPinMaps.h" + + +#if defined(DEVICE_PWMOUT) && defined(PINMAP_PWM) +MSTD_CONSTEXPR_FN_14 PinMap get_pwm_pinmap(const PinName pin) +{ + for (const PinMap &pinmap : PINMAP_PWM) { + if (pinmap.pin == pin) { + return {pin, pinmap.peripheral, pinmap.function}; + } + } + return {NC, (int) NC, (int) NC}; +} +#endif // DEVICE_PWMOUT + +#if defined(DEVICE_ANALOGIN) && defined(PINMAP_ANALOGIN) +MSTD_CONSTEXPR_FN_14 PinMap get_analogin_pinmap(const PinName pin) +{ + for (const PinMap &pinmap : PINMAP_ANALOGIN) { + if (pinmap.pin == pin) { + return {pin, pinmap.peripheral, pinmap.function}; + } + } + +#if PINMAP_ANALOGIN_INTERNAL + for (const PinMap &pinmap : PINMAP_ANALOGIN_INTERNAL) { + if (pinmap.pin == pin) { + return {pin, pinmap.peripheral, pinmap.function}; + } + } +#endif + + return {NC, (int) NC, (int) NC}; +} +#endif // DEVICE_ANALOGIN + +#if defined(DEVICE_ANALOGOUT) && defined(PINMAP_ANALOGOUT) +MSTD_CONSTEXPR_FN_14 PinMap get_analogout_pinmap(const PinName pin) +{ + for (const PinMap &pinmap : PINMAP_ANALOGOUT) { + if (pinmap.pin == pin) { + return {pin, pinmap.peripheral, pinmap.function}; + } + } + return {NC, (int) NC, (int) NC}; +} +#endif // DEVICE_ANALOGOUT + +#if defined(DEVICE_I2C) && defined(PINMAP_I2C_SDA) && defined(PINMAP_I2C_SCL) +MSTD_CONSTEXPR_FN_14 i2c_pinmap_t get_i2c_pinmap(const PinName sda, const PinName scl) +{ + const PinMap *sda_map = nullptr; + for (const PinMap &pinmap : PINMAP_I2C_SDA) { + if (pinmap.pin == sda) { + sda_map = &pinmap; + break; + } + } + + const PinMap *scl_map = nullptr; + for (const PinMap &pinmap : PINMAP_I2C_SCL) { + if (pinmap.pin == scl) { + scl_map = &pinmap; + break; + } + } + + if (!sda_map || !scl_map || sda_map->peripheral != scl_map->peripheral) { + return {(int) NC, NC, (int) NC, NC, (int) NC}; + } + + return {sda_map->peripheral, sda_map->pin, sda_map->function, scl_map->pin, scl_map->function}; +} +#endif //DEVICE_I2C + +#if defined(DEVICE_SERIAL) && defined(PINMAP_UART_TX) && defined(PINMAP_UART_RX) +MSTD_CONSTEXPR_FN_14 serial_pinmap_t get_uart_pinmap(const PinName tx, const PinName rx) +{ + const PinMap *tx_map = nullptr; + for (const PinMap &pinmap : PINMAP_UART_TX) { + if (pinmap.pin == tx) { + tx_map = &pinmap; + break; + } + } + + const PinMap *rx_map = nullptr; + for (const PinMap &pinmap : PINMAP_UART_RX) { + if (pinmap.pin == rx) { + rx_map = &pinmap; + break; + } + } + + if (!tx_map || !rx_map || rx_map->peripheral != tx_map->peripheral) { + return {(int) NC, NC, (int) NC, NC, (int) NC, false}; + } + + if (tx_map->pin == STDIO_UART_TX && rx_map->pin == STDIO_UART_RX) { + return {tx_map->peripheral, tx_map->pin, tx_map->function, rx_map->pin, rx_map->function, true}; + } else { + return {tx_map->peripheral, tx_map->pin, tx_map->function, rx_map->pin, rx_map->function, false}; + } +} + +#if defined(DEVICE_SERIAL_FC) && defined(PINMAP_UART_RTS) && defined(PINMAP_UART_CTS) +MSTD_CONSTEXPR_FN_14 serial_fc_pinmap_t get_uart_fc_pinmap(const PinName rxflow, const PinName txflow) +{ + const PinMap *rts_map = nullptr; + for (const PinMap &pinmap : PINMAP_UART_RTS) { + if (pinmap.pin == rxflow) { + rts_map = &pinmap; + break; + } + } + + const PinMap *cts_map = nullptr; + for (const PinMap &pinmap : PINMAP_UART_CTS) { + if (pinmap.pin == txflow) { + cts_map = &pinmap; + break; + } + } + + if ((!rts_map || !cts_map) || (rts_map->peripheral != cts_map->peripheral)) { + return {(int) NC, NC, (int) NC, NC, (int) NC}; + } + + return {cts_map->peripheral, cts_map->pin, cts_map->function, rts_map->pin, rts_map->function}; +} +#endif // DEVICE_SERIAL_FC +#endif // DEVICE_SERIAL + +#if defined(DEVICE_SPI) && defined(PINMAP_SPI_MOSI) && defined(PINMAP_SPI_MISO) && defined(PINMAP_SPI_SCLK) && defined(PINMAP_SPI_SSEL) +MSTD_CONSTEXPR_FN_14 spi_pinmap_t get_spi_pinmap(const PinName mosi, const PinName miso, const PinName sclk, const PinName ssel) +{ + const PinMap *mosi_map = nullptr; + for (const PinMap &pinmap : PINMAP_SPI_MOSI) { + if (pinmap.pin == mosi) { + mosi_map = &pinmap; + break; + } + } + + const PinMap *miso_map = nullptr; + for (const PinMap &pinmap : PINMAP_SPI_MISO) { + if (pinmap.pin == miso) { + miso_map = &pinmap; + break; + } + } + + const PinMap *sclk_map = nullptr; + for (const PinMap &pinmap : PINMAP_SPI_SCLK) { + if (pinmap.pin == sclk) { + sclk_map = &pinmap; + break; + } + } + + const PinMap *ssel_map = nullptr; + for (const PinMap &pinmap : PINMAP_SPI_SSEL) { + if (pinmap.pin == ssel) { + ssel_map = &pinmap; + break; + } + } + + if ((!mosi_map || !miso_map || !sclk_map || !ssel_map) || + (mosi_map->peripheral != miso_map->peripheral || mosi_map->peripheral != sclk_map->peripheral) || + (ssel_map->pin != NC && mosi_map->peripheral != ssel_map->peripheral)) { + return {(int) NC, NC, (int) NC, NC, (int) NC, NC, (int) NC, NC, (int) NC}; + } + + return {mosi_map->peripheral, mosi_map->pin, mosi_map->function, miso_map->pin, miso_map->function, sclk_map->pin, sclk_map->function, ssel_map->pin, ssel_map->function}; +} +#endif // DEVICE_SPI + +#if defined(DEVICE_CAN) && defined(PINMAP_CAN_RD) && defined(PINMAP_CAN_TD) +MSTD_CONSTEXPR_FN_14 can_pinmap_t get_can_pinmap(const PinName rd, const PinName td) +{ + const PinMap *rd_map = nullptr; + for (const PinMap &pinmap : PINMAP_CAN_RD) { + if (pinmap.pin == rd) { + rd_map = &pinmap; + break; + } + } + + const PinMap *td_map = nullptr; + for (const PinMap &pinmap : PINMAP_CAN_TD) { + if (pinmap.pin == td) { + td_map = &pinmap; + break; + } + } + + if (!rd_map || !td_map || rd_map->peripheral != td_map->peripheral) { + return {(int) NC, NC, (int) NC, NC, (int) NC}; + } + + return {rd_map->peripheral, rd_map->pin, rd_map->function, td_map->pin, td_map->function}; +} +#endif //DEVICE_CAN + +#if defined(DEVICE_QSPI) && defined(PINMAP_QSPI_DATA0) && defined(PINMAP_QSPI_DATA1) && defined(PINMAP_QSPI_DATA2) && defined(PINMAP_QSPI_DATA3) && defined(PINMAP_QSPI_SCLK) && defined(PINMAP_QSPI_SSEL) +MSTD_CONSTEXPR_FN_14 qspi_pinmap_t get_qspi_pinmap(const PinName data0, const PinName data1, const PinName data2, const PinName data3, const PinName sclk, const PinName ssel) +{ + const PinMap *data0_map = nullptr; + for (const PinMap &pinmap : PINMAP_QSPI_DATA0) { + if (pinmap.pin == data0) { + data0_map = &pinmap; + break; + } + } + + const PinMap *data1_map = nullptr; + for (const PinMap &pinmap : PINMAP_QSPI_DATA1) { + if (pinmap.pin == data1) { + data1_map = &pinmap; + break; + } + } + + const PinMap *data2_map = nullptr; + for (const PinMap &pinmap : PINMAP_QSPI_DATA2) { + if (pinmap.pin == data2) { + data2_map = &pinmap; + break; + } + } + + const PinMap *data3_map = nullptr; + for (const PinMap &pinmap : PINMAP_QSPI_DATA3) { + if (pinmap.pin == data3) { + data3_map = &pinmap; + break; + } + } + + const PinMap *sclk_map = nullptr; + for (const PinMap &pinmap : PINMAP_QSPI_SCLK) { + if (pinmap.pin == sclk) { + sclk_map = &pinmap; + break; + } + } + + const PinMap *ssel_map = nullptr; + for (const PinMap &pinmap : PINMAP_QSPI_SSEL) { + if (pinmap.pin == ssel) { + ssel_map = &pinmap; + break; + } + } + + if (!data0_map || !data1_map || !data2_map || !data3_map || !sclk_map || !ssel_map || data0_map->peripheral != data1_map->peripheral || data0_map->peripheral != data2_map->peripheral || data0_map->peripheral != data3_map->peripheral || data0_map->peripheral != sclk_map->peripheral || data0_map->peripheral != ssel_map->peripheral) { + return {(int) NC, NC, (int) NC, NC, (int) NC, NC, (int) NC, NC, (int) NC}; + } + + return {data0_map->peripheral, data0_map->pin, data0_map->function, data1_map->pin, data1_map->function, data2_map->pin, data2_map->function, data3_map->pin, data3_map->function, sclk_map->pin, sclk_map->function, ssel_map->pin, ssel_map->function}; +} +#endif //DEVICE_QSPI + +#else // STATIC_PINMAP_READY + +#if DEVICE_PWMOUT +MSTD_CONSTEXPR_FN_14 PinMap get_pwm_pinmap(const PinName pin) +{ + return {pin, (int) NC, (int) NC}; +} +#endif // DEVICE_PWMOUT + +#if DEVICE_ANALOGIN +MSTD_CONSTEXPR_FN_14 PinMap get_analogin_pinmap(const PinName pin) +{ + return {pin, (int) NC, (int) NC}; +} +#endif // DEVICE_ANALOGIN + +#if DEVICE_ANALOGOUT +MSTD_CONSTEXPR_FN_14 PinMap get_analogout_pinmap(const PinName pin) +{ + return {pin, (int) NC, (int) NC}; +} +#endif // DEVICE_ANALOGOUT + +#if DEVICE_I2C +MSTD_CONSTEXPR_FN_14 i2c_pinmap_t get_i2c_pinmap(const PinName sda, const PinName scl) +{ + return {(int) NC, sda, (int) NC, scl, (int) NC}; +} +#endif //DEVICE_I2C + +#if DEVICE_SERIAL +MSTD_CONSTEXPR_FN_14 serial_pinmap_t get_uart_pinmap(const PinName tx, const PinName rx) +{ + return {(int) NC, tx, (int) NC, rx, (int) NC, false}; +} + +#if DEVICE_SERIAL_FC +MSTD_CONSTEXPR_FN_14 serial_fc_pinmap_t get_uart_fc_pinmap(const PinName rxflow, const PinName txflow) +{ + return {(int) NC, txflow, (int) NC, rxflow, (int) NC}; +} +#endif // DEVICE_SERIAL_FC +#endif // DEVICE_SERIAL + +#if DEVICE_SPI +MSTD_CONSTEXPR_FN_14 spi_pinmap_t get_spi_pinmap(const PinName mosi, const PinName miso, const PinName sclk, const PinName ssel) +{ + return {(int) NC, mosi, (int) NC, miso, (int) NC, sclk, (int) NC, ssel, (int) NC}; +} +#endif // DEVICE_SERIAL + +#if DEVICE_CAN +MSTD_CONSTEXPR_FN_14 can_pinmap_t get_can_pinmap(const PinName rd, const PinName td) +{ + return {(int) NC, rd, (int) NC, td, (int) NC}; +} +#endif //DEVICE_CAN + +#if DEVICE_QSPI +MSTD_CONSTEXPR_FN_14 qspi_pinmap_t get_qspi_pinmap(const PinName data0, const PinName data1, const PinName data2, const PinName data3, const PinName sclk, const PinName ssel) +{ + return {(int) NC, data0, (int) NC, data1, (int) NC, data2, (int) NC, data3, (int) NC, sclk, (int) NC, ssel, (int) NC}; +} +#endif //DEVICE_QSPI + +#endif // STATIC_PINMAP_READY + +#endif // STATIC_PINMAP_H diff --git a/cores/arduino/mbed/hal/watchdog_api.h b/cores/arduino/mbed/hal/watchdog_api.h index 4bb41d53..22236110 100644 --- a/cores/arduino/mbed/hal/watchdog_api.h +++ b/cores/arduino/mbed/hal/watchdog_api.h @@ -47,7 +47,9 @@ * already initialized the hardware watchdog timer. * * Maximum supported timeout is `UINT32_MAX` milliseconds; minimum timeout * is 1 millisecond. - * * The watchdog should trigger at or after the timeout value. + * * The uncalibrated watchdog should trigger at or after the timeout value + * multiplied by the frequency accuracy ratio of its oscillator (typical_frequency / max_frequency). + * * The calibrated watchdog should trigger at or after the timeout value. * * The watchdog should trigger before twice the timeout value. * * # Undefined behavior @@ -99,6 +101,14 @@ typedef struct { * You can stop the watchdog after it starts without a reset. */ bool disable_watchdog; + /** + * Typical frequency of not calibrated watchdog clock in Hz. + */ + uint32_t clock_typical_frequency; + /** + * Maximum frequency of not calibrated watchdog clock in Hz. + */ + uint32_t clock_max_frequency; } watchdog_features_t; diff --git a/cores/arduino/mbed/platform/ATCmdParser.h b/cores/arduino/mbed/platform/ATCmdParser.h index c48235f7..4e6ff3e6 100644 --- a/cores/arduino/mbed/platform/ATCmdParser.h +++ b/cores/arduino/mbed/platform/ATCmdParser.h @@ -79,6 +79,24 @@ class ATCmdParser : private NonCopyable { }; oob *_oobs; + /** + * Receive an AT response + * + * Receives a formatted response using scanf style formatting + * @see scanf + * + * Responses are parsed line at a time. + * If multiline is set to false parse only one line otherwise parse multiline response + * Any received data that does not match the response is ignored until + * a timeout occurs. + * + * @param response scanf-like format string of response to expect + * @param ... all scanf-like arguments to extract from response + * @param multiline determinate if parse one or multiple lines. + * @return number of bytes read or -1 on failure + */ + int vrecvscanf(const char *response, std::va_list args, bool multiline); + public: /** diff --git a/cores/arduino/mbed/platform/Stream.h b/cores/arduino/mbed/platform/Stream.h index b25783f3..03bc7dc2 100644 --- a/cores/arduino/mbed/platform/Stream.h +++ b/cores/arduino/mbed/platform/Stream.h @@ -45,6 +45,7 @@ class Stream : public FileLike, private NonCopyable { Stream(const char *name = NULL); virtual ~Stream(); +#if !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY int putc(int c); int puts(const char *s); int getc(); @@ -59,7 +60,7 @@ class Stream : public FileLike, private NonCopyable { return _file; } -protected: +#endif // !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY virtual int close(); virtual ssize_t write(const void *buffer, size_t length); virtual ssize_t read(void *buffer, size_t length); @@ -70,10 +71,13 @@ class Stream : public FileLike, private NonCopyable { virtual int sync(); virtual off_t size(); +protected: virtual int _putc(int c) = 0; virtual int _getc() = 0; +#if !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY std::FILE *_file; +#endif // !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY /** Acquire exclusive access to this object. */ diff --git a/cores/arduino/mbed/platform/cxxsupport/mstd_cstddef b/cores/arduino/mbed/platform/cxxsupport/mstd_cstddef index 937f80ed..0afe5bfc 100644 --- a/cores/arduino/mbed/platform/cxxsupport/mstd_cstddef +++ b/cores/arduino/mbed/platform/cxxsupport/mstd_cstddef @@ -27,8 +27,12 @@ * - - MSTD_CONSTEXPR_XX_14 macros that can be used to mark * things that are valid as constexpr only for C++14 or later, * permitting constexpr use where ARM C 5 would reject it. + * - - MSTD_CONSTEXPR_XX_11 macros that can be used to permit + * constexpr alternatives for C. */ +#if __cplusplus + #include /* Macros that can be used to mark functions and objects that are @@ -42,6 +46,9 @@ #define MSTD_CONSTEXPR_OBJ_14 const #endif +#define MSTD_CONSTEXPR_FN_11 constexpr +#define MSTD_CONSTEXPR_OBJ_11 constexpr + #ifdef __CC_ARM // [expr.alignof] @@ -54,8 +61,7 @@ #define alignas(N) __attribute__((aligned(N))) #endif -namespace std -{ +namespace std { // [cstddef.syn] using nullptr_t = decltype(nullptr); @@ -63,8 +69,7 @@ using nullptr_t = decltype(nullptr); #endif // __CC_ARM -namespace mstd -{ +namespace mstd { using std::size_t; using std::ptrdiff_t; using std::nullptr_t; @@ -72,4 +77,13 @@ using std::max_align_t; } +#else // __cplusplus + +#define MSTD_CONSTEXPR_FN_14 inline +#define MSTD_CONSTEXPR_OBJ_14 const +#define MSTD_CONSTEXPR_FN_11 inline +#define MSTD_CONSTEXPR_OBJ_11 const + +#endif // __cplusplus + #endif // MSTD_CSTDDEF_ diff --git a/cores/arduino/mbed/platform/cxxsupport/mstd_mutex b/cores/arduino/mbed/platform/cxxsupport/mstd_mutex index c30f966e..c95d21f5 100644 --- a/cores/arduino/mbed/platform/cxxsupport/mstd_mutex +++ b/cores/arduino/mbed/platform/cxxsupport/mstd_mutex @@ -373,7 +373,7 @@ private: template void call_once(once_flag &flag, Callable&& f, Args&&... args) { - if (!(core_util_atomic_load_explicit(&flag.__guard, mbed_memory_order_acquire) & 1)) { + if (!(core_util_atomic_load_explicit((uint8_t *)&flag.__guard, mbed_memory_order_acquire) & 1)) { if (__cxa_guard_acquire(&flag.__guard)) { mstd::invoke(mstd::forward(f), mstd::forward(args)...); __cxa_guard_release(&flag.__guard); diff --git a/cores/arduino/mbed/platform/mbed_interface.h b/cores/arduino/mbed/platform/mbed_interface.h index 279eca72..cb90c95e 100644 --- a/cores/arduino/mbed/platform/mbed_interface.h +++ b/cores/arduino/mbed/platform/mbed_interface.h @@ -168,7 +168,7 @@ void mbed_error_vprintf(const char *format, va_list arg) MBED_PRINTF(1, 0); * FileHandle::write of the stderr device is. The default * serial console is safe, either buffered or not. If the * console has not previously been initialized, an attempt - * to use this from interrupt may during console initialization. + * to use this from interrupt may crash during console initialization. * Special handling of `mbed_error` relaxes various system traps * to increase the chance of initialization working. * diff --git a/cores/arduino/mbed/platform/mbed_retarget.h b/cores/arduino/mbed/platform/mbed_retarget.h index c5058280..56c2d8b3 100644 --- a/cores/arduino/mbed/platform/mbed_retarget.h +++ b/cores/arduino/mbed/platform/mbed_retarget.h @@ -82,6 +82,7 @@ typedef unsigned int gid_t; ///< Group ID /** \addtogroup platform-public-api */ /** @{*/ +#if !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY /** * \defgroup platform_retarget Retarget functions * @{ @@ -90,7 +91,6 @@ typedef unsigned int gid_t; ///< Group ID /* DIR declarations must also be here */ #if __cplusplus namespace mbed { - class FileHandle; class DirHandle; @@ -185,6 +185,7 @@ typedef mbed::DirHandle DIR; #else typedef struct Dir DIR; #endif +#endif // !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY /* The intent of this section is to unify the errno error values to match * the POSIX definitions for the GCC_ARM, ARMCC and IAR compilers. This is @@ -559,6 +560,7 @@ struct pollfd { #if __cplusplus extern "C" { #endif +#if !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY int open(const char *path, int oflag, ...); #ifndef __IAR_SYSTEMS_ICC__ /* IAR provides fdopen itself */ #if __cplusplus @@ -567,12 +569,14 @@ extern "C" { FILE *fdopen(int fildes, const char *mode); #endif #endif +#endif // !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY ssize_t write(int fildes, const void *buf, size_t nbyte); ssize_t read(int fildes, void *buf, size_t nbyte); + int fsync(int fildes); + int isatty(int fildes); +#if !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY off_t lseek(int fildes, off_t offset, int whence); int ftruncate(int fildes, off_t length); - int isatty(int fildes); - int fsync(int fildes); int fstat(int fildes, struct stat *st); int fcntl(int fildes, int cmd, ...); int poll(struct pollfd fds[], nfds_t nfds, int timeout); @@ -586,11 +590,12 @@ extern "C" { long telldir(DIR *); void seekdir(DIR *, long); int mkdir(const char *name, mode_t n); +#endif // !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY #if __cplusplus }; // extern "C" namespace mbed { - +#if !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY /** This call is an analogue to POSIX fdopen(). * * It associates a C stream to an already-opened FileHandle, to allow you to @@ -619,6 +624,33 @@ std::FILE *fdopen(mbed::FileHandle *fh, const char *mode); */ int bind_to_fd(mbed::FileHandle *fh); +#else +/** Targets may implement this to override how to write to the console. + * + * If the target has provided minimal_console_putc, this is called + * to give the target a chance to specify an alternative minimal console. + * + * If this is not provided, serial_putc will be used if + * `target.console-uart` is `true`, else there will not be an output. + * + * @param c The char to write + * @return The written char + */ +int minimal_console_putc(int c); + +/** Targets may implement this to override how to read from the console. + * + * If the target has provided minimal_console_getc, this is called + * to give the target a chance to specify an alternative minimal console. + * + * If this is not provided, serial_getc will be used if + * `target.console-uart` is `true`, else no input would be captured. + * + * @return The char read from the serial port + */ +int minimal_console_getc(); +#endif // !MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY + } // namespace mbed #endif // __cplusplus diff --git a/cores/arduino/mbed/platform/mbed_version.h b/cores/arduino/mbed/platform/mbed_version.h index 2a1ec9c8..79fce455 100644 --- a/cores/arduino/mbed/platform/mbed_version.h +++ b/cores/arduino/mbed/platform/mbed_version.h @@ -38,14 +38,14 @@ * * @note 99 is default value for development version (master branch) */ -#define MBED_MINOR_VERSION 14 +#define MBED_MINOR_VERSION 15 /** MBED_PATCH_VERSION * Mbed OS patch version * * @note 99 is default value for development version (master branch) */ -#define MBED_PATCH_VERSION 2 +#define MBED_PATCH_VERSION 3 #define MBED_ENCODE_VERSION(major, minor, patch) ((major)*10000 + (minor)*100 + (patch)) diff --git a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PeripheralPinMaps.h b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PeripheralPinMaps.h new file mode 100644 index 00000000..22023d45 --- /dev/null +++ b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PeripheralPinMaps.h @@ -0,0 +1,116 @@ +/* mbed Microcontroller Library + * Copyright (c) 2006-2013 ARM Limited + * + * Licensed 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. + */ + +#ifndef MBED_PERIPHERALPINMAPS_H +#define MBED_PERIPHERALPINMAPS_H + +#include + +typedef enum { + NRF_SAADC_CHANNEL_0 = 0, + NRF_SAADC_CHANNEL_1 = 1, + NRF_SAADC_CHANNEL_2 = 2, + NRF_SAADC_CHANNEL_3 = 3, + NRF_SAADC_CHANNEL_4 = 4, + NRF_SAADC_CHANNEL_5 = 5, + NRF_SAADC_CHANNEL_6 = 6, + NRF_SAADC_CHANNEL_7 = 7, +} nrf_saadc_channel_t; + +/************ADC***************/ +/* The third "function" value is used to select the correct ADC channel */ +#if DEVICE_ANALOGIN +MSTD_CONSTEXPR_OBJ_11 PinMap PinMap_ADC[] = { + { p2, ADC0_0, NRF_SAADC_CHANNEL_0 }, + { p3, ADC0_0, NRF_SAADC_CHANNEL_1 }, + { p4, ADC0_0, NRF_SAADC_CHANNEL_2 }, + { p5, ADC0_0, NRF_SAADC_CHANNEL_3 }, + { p28, ADC0_0, NRF_SAADC_CHANNEL_4 }, + { p29, ADC0_0, NRF_SAADC_CHANNEL_5 }, + { p30, ADC0_0, NRF_SAADC_CHANNEL_6 }, + { p31, ADC0_0, NRF_SAADC_CHANNEL_7 }, + { NC, NC, NC } +}; +#endif + +// Pinmap used for testing only +MSTD_CONSTEXPR_OBJ_11 PinMap All_pins[] = { + {P0_0, 0, 0}, + {P0_1, 0, 0}, + {P0_2, 0, 0}, + {P0_3, 0, 0}, + {P0_4, 0, 0}, + {P0_5, 0, 0}, + {P0_6, 0, 0}, + {P0_7, 0, 0}, + {P0_8, 0, 0}, + {P0_9, 0, 0}, + {P0_10, 0, 0}, + {P0_11, 0, 0}, + {P0_12, 0, 0}, + {P0_13, 0, 0}, + {P0_14, 0, 0}, + {P0_15, 0, 0}, + {P0_16, 0, 0}, + {P0_17, 0, 0}, + {P0_18, 0, 0}, + {P0_19, 0, 0}, + {P0_20, 0, 0}, + {P0_21, 0, 0}, + {P0_22, 0, 0}, + {P0_23, 0, 0}, + {P0_24, 0, 0}, + {P0_25, 0, 0}, + {P0_28, 0, 0}, + {P0_29, 0, 0}, + {P0_30, 0, 0}, + {P0_31, 0, 0}, + + {P1_0, 0, 0}, + {P1_1, 0, 0}, + {P1_2, 0, 0}, + {P1_3, 0, 0}, + {P1_4, 0, 0}, + {P1_5, 0, 0}, + {P1_6, 0, 0}, + {P1_7, 0, 0}, + {P1_8, 0, 0}, + {P1_9, 0, 0}, + {P1_10, 0, 0}, + {P1_11, 0, 0}, + {P1_12, 0, 0}, + {P1_13, 0, 0}, + {P1_14, 0, 0}, + {P1_15, 0, 0}, + + {NC, NC, 0} +}; + +#define PINMAP_ANALOGIN PinMap_ADC +#define PINMAP_ANALOGOUT All_pins +#define PINMAP_I2C_SDA All_pins +#define PINMAP_I2C_SCL All_pins +#define PINMAP_UART_TX All_pins +#define PINMAP_UART_RX All_pins +#define PINMAP_UART_CTS All_pins +#define PINMAP_UART_RTS All_pins +#define PINMAP_SPI_SCLK All_pins +#define PINMAP_SPI_MOSI All_pins +#define PINMAP_SPI_MISO All_pins +#define PINMAP_SPI_SSEL All_pins +#define PINMAP_PWM All_pins + +#endif diff --git a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PortNames.h b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PortNames.h index b0162fb1..4aa24481 100644 --- a/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PortNames.h +++ b/cores/arduino/mbed/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/TARGET_MCU_NRF52840/PortNames.h @@ -1,28 +1,28 @@ -/* +/* * Copyright (c) 2013 Nordic Semiconductor ASA * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list + * + * 1. Redistributions of source code must retain the above copyright notice, this list * of conditions and the following disclaimer. * - * 2. Redistributions in binary form, except as embedded into a Nordic Semiconductor ASA - * integrated circuit in a product or a software update for such product, must reproduce - * the above copyright notice, this list of conditions and the following disclaimer in + * 2. Redistributions in binary form, except as embedded into a Nordic Semiconductor ASA + * integrated circuit in a product or a software update for such product, must reproduce + * the above copyright notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the distribution. * - * 3. Neither the name of Nordic Semiconductor ASA nor the names of its contributors may be - * used to endorse or promote products derived from this software without specific prior + * 3. Neither the name of Nordic Semiconductor ASA nor the names of its contributors may be + * used to endorse or promote products derived from this software without specific prior * written permission. * - * 4. This software, with or without modification, must only be used with a + * 4. This software, with or without modification, must only be used with a * Nordic Semiconductor ASA integrated circuit. * - * 5. Any software provided in binary or object form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * + * 5. Any software provided in binary or object form under this license must not be reverse + * engineered, decompiled, modified and/or disassembled. + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -33,7 +33,7 @@ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * + * */ #ifndef MBED_PORTNAMES_H @@ -43,6 +43,9 @@ extern "C" { #endif +/* If this macro is defined, then constexpr utility functions for pin-map seach can be used. */ +#define STATIC_PINMAP_READY 1 + typedef enum { Port0 = 0, //GPIO pins 0-31 -> 0.0-0.31 From 10ad267fbf30647d2fefbd6dada7f567f2f01cb8 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 11 Jun 2020 12:21:40 +0200 Subject: [PATCH 02/20] Modify USB assert patch to handle OUT ep --- ...-avoid-10862-by-not-firing-the-assert.patch | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/patches/0002-HACK-avoid-10862-by-not-firing-the-assert.patch b/patches/0002-HACK-avoid-10862-by-not-firing-the-assert.patch index 261e01db..671a9df9 100644 --- a/patches/0002-HACK-avoid-10862-by-not-firing-the-assert.patch +++ b/patches/0002-HACK-avoid-10862-by-not-firing-the-assert.patch @@ -26,7 +26,25 @@ index 3ee73c8ba7..c6a088069e 100644 + } } } + +--- a/drivers/source/usb/USBDevice.cpp ++++ b/drivers/source/usb/USBDevice.cpp +@@ -1007,10 +1008,11 @@ void USBDevice::in(usb_ep_t endpoint) + + endpoint_info_t *info = &_endpoint_info[EP_TO_INDEX(endpoint)]; +- MBED_ASSERT(info->pending >= 1); +- info->pending -= 1; +- if (info->callback) { +- info->callback(); ++ if (info->pending >= 1) { ++ info->pending -= 1; ++ if (info->callback) { ++ info->callback(); ++ } + } + } + -- 2.23.0 From 9f76ea4a078161b6137a58d64714e48f4f993158 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Wed, 6 May 2020 15:00:46 +0200 Subject: [PATCH 03/20] Update nano33ble variant --- variants/ARDUINO_NANO33BLE/defines.txt | 19 ++++---- variants/ARDUINO_NANO33BLE/includes.txt | 3 ++ variants/ARDUINO_NANO33BLE/ldflags.txt | 1 + variants/ARDUINO_NANO33BLE/libs/libmbed.a | Bin 17627304 -> 17932392 bytes variants/ARDUINO_NANO33BLE/mbed_config.h | 55 ++++++++++++++++++++++ 5 files changed, 68 insertions(+), 10 deletions(-) diff --git a/variants/ARDUINO_NANO33BLE/defines.txt b/variants/ARDUINO_NANO33BLE/defines.txt index 415ba004..2e46f256 100644 --- a/variants/ARDUINO_NANO33BLE/defines.txt +++ b/variants/ARDUINO_NANO33BLE/defines.txt @@ -1,7 +1,6 @@ -DARM_MATH_CM4 -DBOARD_PCA10056 --D__CMSIS_RTOS -DCMSIS_VECTAB_VIRTUAL -DCMSIS_VECTAB_VIRTUAL_HEADER_FILE=\"cmsis_nvic.h\" -DCOMPONENT_FLASHIAP=1 @@ -9,13 +8,11 @@ -DCOMPONENT_PSA_SRV_EMUL=1 -DCOMPONENT_PSA_SRV_IMPL=1 -DCONFIG_GPIO_AS_PINRESET --D__CORTEX_M4 -DDEVICE_ANALOGIN=1 -DDEVICE_FLASH=1 --DDEVICE_I2C=2 +-DDEVICE_I2C=1 -DDEVICE_I2C_ASYNCH=1 -DDEVICE_INTERRUPTIN=1 --DDEVICE_ITM=1 -DDEVICE_LPTICKER=1 -DDEVICE_PORTIN=1 -DDEVICE_PORTINOUT=1 @@ -34,13 +31,10 @@ -DFEATURE_BLE=1 -DFEATURE_CRYPTOCELL310=1 -DFEATURE_STORAGE=1 --D__FPU_PRESENT=1 --D__MBED__=1 --DMBED_BUILD_TIMESTAMP=1575279460.2487955 --D__MBED_CMSIS_RTOS_CM +-DMBEDTLS_CONFIG_HW_SUPPORT +-DMBED_BUILD_TIMESTAMP=1588769573.9861534 -DMBED_MPU_CUSTOM -DMBED_TICKLESS --DMBEDTLS_CONFIG_HW_SUPPORT -DNRF52840_XXAA -DNRF52_PAN_20 -DSWI_DISABLE0 @@ -66,5 +60,10 @@ -DTOOLCHAIN_GCC -DTOOLCHAIN_GCC_ARM -DWSF_MAX_HANDLERS=10 +-D__CMSIS_RTOS +-D__CORTEX_M4 +-D__FPU_PRESENT=1 +-D__MBED_CMSIS_RTOS_CM +-D__MBED__=1 -DMBED_NO_GLOBAL_USING_DIRECTIVE=1 --DUSE_ARDUINO_PINOUT \ No newline at end of file +-DUSE_ARDUINO_PINOUT diff --git a/variants/ARDUINO_NANO33BLE/includes.txt b/variants/ARDUINO_NANO33BLE/includes.txt index 04355c54..37990316 100644 --- a/variants/ARDUINO_NANO33BLE/includes.txt +++ b/variants/ARDUINO_NANO33BLE/includes.txt @@ -273,6 +273,9 @@ -iwithprefixbefore/mbed/features/cellular/framework/targets/GENERIC -iwithprefixbefore/mbed/features/cellular/framework/targets/GEMALTO/CINTERION -iwithprefixbefore/mbed/features/cellular/framework/targets/GEMALTO +-iwithprefixbefore/mbed/features/cellular/framework/targets/Altair/ALT1250/PPP +-iwithprefixbefore/mbed/features/cellular/framework/targets/Altair/ALT1250 +-iwithprefixbefore/mbed/features/cellular/framework/targets/Altair -iwithprefixbefore/mbed/features/cellular/framework/targets -iwithprefixbefore/mbed/features/cellular/framework/device -iwithprefixbefore/mbed/features/cellular/framework/common diff --git a/variants/ARDUINO_NANO33BLE/ldflags.txt b/variants/ARDUINO_NANO33BLE/ldflags.txt index ab5dce2c..69719ad7 100644 --- a/variants/ARDUINO_NANO33BLE/ldflags.txt +++ b/variants/ARDUINO_NANO33BLE/ldflags.txt @@ -5,6 +5,7 @@ -DMBED_RAM_START=0x20000000 -DMBED_ROM_SIZE=0x100000 -DMBED_ROM_START=0x0 +-DXIP_ENABLE=0 -Wl,--gc-sections -Wl,--wrap,_calloc_r -Wl,--wrap,_free_r diff --git a/variants/ARDUINO_NANO33BLE/libs/libmbed.a b/variants/ARDUINO_NANO33BLE/libs/libmbed.a index cb433e94dc4dd14a602b1561ce93540cac3c838f..f0d59ab765009915e36de0fcf57ed934f6fee422 100644 GIT binary patch delta 1976453 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%0D3G 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 z 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

Kg>Rn&s!eM{RkURm9wBrj-WPl^Fg4=5!4^b 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%0D*tU23Fps$Z;iF~X1^XeM7;mS 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

r;AZp`@_>g`s*x|xamJz#vV(; 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 z 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.{Jhp+Uk3|hoo29=GFHmsrzZ`l{vVFzP{HQ*9unI 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%0A=-<9@EuKAYZDp#Kz$a5}wh@{;jf*9+FQaug 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 iKDA&U#{h4oPUC9U~-qi9!Fi7#2mDi(~! zsU!+6=wCCDb)RO%&SDv8Uu;XpZ`UH8mczaODLUT<%^RC8WpIaYrva?i- zG@fhU9V&-A=oYWPh=r%Wiw%@ABzEota-r6IN;&A^2C5K0Uc0@J&s)UeM0~ko5hjSK zFvsJEXucJUws#e`vJaqrwYpK|n7Eh)Xg96bbG^Q(W+3>ggyGBWTPMQLx`v z#pD=6uUFK;X~)K)+kLO9H%}OXXsd(2;)|EC^w>mH(QuU-c$-wU;0_QF&__WvoZkdq zwMM0QjtwEIV4tt5XO`<|`dLxYS>eWglVBgGs!ci@;6{4(?!3`^EUh3FXYTDCRCQj4 z!Evsh=os?}SZkoFk8pQ|f(txjCcsrxwHS9#%YZwq1(6t4Z9Bz~ict|q9ry(8R#iO$ zvxvd~{9tG7!}WIie~NndnxyafxYpPeHeUz)M@4v)6rSxU?-m^0>WI}I~> z7K{#iMWv45xZ(-E!WDJUX1@4+7N6P_+RiR2>cU9|pM7*H;UJb88!6~QpsC)jD7dz8 z^L2+fNtwVkIc1EWWJ>_K7C-XcsIKDMzlJ;|6m0cR~)57Y$1LEF8&A ziNiwA-VzRBOfow5V;wteqO0moMC-tPU>|O(V@{67&3pjpkzV^dCX3)b7qh6no=Giw zpwu$*8_nUJ0`+2dnAExF!4$H%WSesI8Q>+d+HE3S0|c*xpYDR;xH&WsyLEOSlN!Yf zIdh2T`6kXX3Jz>`@zz7f^`3;9tVK<#BT60Eep%McO8}sn(x!*~I~>zYp_|!u9N4@% z(8a*a<*3SH>7&y=+v;h4~?nvEpU`8EG&Io_@r3g@uMbh@rt__0GnrU~Qqa8O(TJAs{D$sxtovpd~1J>9|wy=GMq#c~ZJAZ%!$jc^! z5gJ7~z$&4>*GIAlA&7ORM;FD4oLzhba%i@5>1Efzf4 z8`;l_nv!Wy?WN}q`4IPw?8imz&x*XIlf`+@0Xe;1_+Lomg-#ajT|_VsXiri$#eBPy zB@Rr(6%PtDP(+=q&gaeepM@*<< zCX@kyTp&oG7~y{zG=~5{6|nn@f&Sb0tko>0D@b#9ohRg0i=2(XI}Tf;gxEG8D#Bcoeu*yqE_r?rxOq}C4;z35X1=CD0c z3+_V2;XWgNqVvEEh%`FZV5``R`>w_PrV=lnxt0YDJaX9Obs{;nNQw@q*}|`Pv8kF{BQA}{VZgFKooJclR%&0_9z7s8>ak>>k1w-mKCWJmMQ`CQtqjf zM%$2d;GY7-e-ZwnKy3r$TJQ_PcWBO)!{+=zE?`qHz*FnU)}F->W5v<%R+?+dTKpoN zkm$LM%Un8kC&YV$j)qy|_ zVhn1oI^-S)GhJn6sQ}#`AkGqmk6Rmgj5$3U5WNnBuh*fE94=J)E>;!HQ)R#X>!>W< zS;CvFW4>(;zE6&o@HWV{*w+w-t8fCHc~-9Q)o}Zm$H>b2F>nI}%mTvH8AcvEN)w&O z^uqb}bvTxIZaptv#}b0mXM-V^Q7x8!2v!o7ZD3N%fM51HfM2RkJT?7;4%8+TH9cc?? zReI$jo(W`V{OjKVURzS9;y?ri(z>Fv8-KQ*)y6yil|I57HidllM{K6JoZB|AzW6@E zm<_C=bRm>~yn)S-9)$9&jVxI@{SoiJk;S#N#iJH}l6LV+s;@EjV5Cnu0I-Lob%al# z47lG%06!PCxqXe!YV^h6p99f5;w0_G0)BBLJk>G$)kZvGGp&=J*VRLUzk-=#9xZBF zuML{%NJUXia*-K335hgcA`Hh5HO(zTQ7zyn`P=9+G(bh?TJ#ywX|Hs5vZ*I4uW&p94%^tX7aersHDjAH?zRb+{fru#%!PAz+%z-lU60jsAD5N zZ$^`TfL_#a7MTd@3J&YSxwwR5UW0-n3~AbtBs#Nh<3P6gOKo#5Kfaj-WZZTsHbd4S zKfXfha#6cEkSMunW%U~eruS+uc5!(NHU&PY!7FURq!fM7;3F28qSI&8T-0H)R!22t z3i|@k$qS(z$VMa}{mkzr2tGZwfVo0#*A+uH27zsERO;9|>NKE!2G@gmnAW2mfC$tA zqVsz~<)^o>^t9^#8Pzss*N{a>Ak|DXsN&`>K0?NYmZ(+>t@9ji-^v1pcEg~eU}Ul6 zPJ{f?#XD^Q4bKIEKW`Z%y?_IEbYdrP5G&T~44$I;AU)*(ac7uOqH_fxvAHOch<<@Q zX1q{Ybv%wadAuFeVkiG_D`VaXI6Gw?=t9co-)&{>+csDVUX@9B70)9=wl?VlcYr57 zMe3o+%BNUIN>V^wWP1Xi9)(Q&MCUdlbQy#wz$r!83Fe~!P>t=p@MBg_s#Tqz`k1BK zFSo&GJ+G-ZS{uyi9E#5DX?VCH>YVn`N8EQC3w$d9M_Pz?UFJy6T#b4j)nezDb8%*0 zgLM&gP+eZt1*R;(&VpAaYLB|Ice#54*=s-K6SlDk$>$DVxsAmKHX{#YKak+ zDW3e>ZEUQaoG4K^RBpFssvYz}DbiZHX5vq`qc7*9F=AS}2regr zSQ#<`|wfkst>K@pvB3m5H(T_ z-(6tzI2W>r2SKCyY6I$*h58(ZdXDO*hBedax~$l5!FMb@k3*fECe5gxHH5UdcvK)t zvZk*#C>W#0_CDAd>B1fE0~EVtF((2Vl#bksTo56o-#T<&PboaBkKQj_9YfKhdMu0TgNe6Ml0i&KBFQj%fR|wE?c9gF7w*J$ej)lw!UO{526RvC~qF*=zs+bW;^i_fm%m(f-~{s89{P+70m93ppr< z;W$#~$sRL@L3IR^+f|(=dmJ5ZRL~$=Wd-i$s>5ZUlbiSlyRlcZ^fte^n}zx$(y2ZK z11*<7-;I}$J8d>J1yv&J!?u)Ou?{w5)h@EN-YGCCh378EV~uBxin;1apxYvKKqEIS zOpaHX)qGhRIha=7?*bttLQmHZzl+Y>fS5@HW;IrY@tU-h@mfd(I+gXez7Y- zP|WZMt35@z{uyYWaLPUHGlO0T{zHMMM}o#m(fs`{q*S~7j3<4TiRK@w@bEpjL%A33 z4t2U%;cTG6xK+;-{QN$^6Gfl(8w^<(!$fI(7d0Lx%KJl6SXAE?Fuol|-MSZQFDKi>nVVVk#j$X=G7TMTnitton(#ECEp=q=QRmc!~$6Ge~L zc-xf103CdEB}~t_<1VWZAT?P`@b}|$_Oh(BxF3 zM+8+*(SaH;C_bVh{sN&nnj)wVJlYH~#IhGK(K*G5dBmJV-2{zD zeNO$=<8!_n{N$}g*HQnJAA|MStr#tKq#giF9IFYjaodgUlnaFPEJ%OFsvZ!YQv5HI z{)$y=#C>_dewLj>9M3^C89z726i+O}F^0I%s0_!|^szSA=U!tzXFsc1kOil>I^KGB z1P(4q;hz)dcgr@h4x0R<(NcC0gO2dRtg8-@mTiLKiF%1F??4|?=zyQ-tg{Mrqj5uY zuA+|WSS^;co~{{;xR9o+0{H$wvc*O^4RgdF^Y^~RzsK8R>`LU9*d-WdN`gnoO&r-!A1c;Pa8l|_(0CA?-u%=dRvAy!zBq)bxKcI` z{uC_~!E-)k!3~CEU7&VQ)HWFQdY)`OkH=q^LAI5m>V6r31VgcY`yo6>W>lRRrk~nc zk#_NwpR(-OHupg4qM}B2b`>9sbUd~4-e-`(Nkv`xHGlRg%c)!g=RVciiuzd^(h-dI zAGr>*9NERxXeB|Q+)Po-qd|iJzP$fo*0LShqN=~5;rVaM>0&B)J+cOZDU!zn{G$db znQ>(HxdA?_GvnyUx;q|Nt7`11&8|52Jc4(PYE`GsZc=AVB_s?h{4kN!s|Rw&O`6|M zL_^7fRu7ugH9s2dLBmXR7NUIr43tmu_QOv-Yzh(5$gWnKnY8ne8HGadjO!*FAVJ!A z&H+f5U{{m<#CpE%2)4+^qOR(@rof1gP@}r2zyu&I0??<9WQn_o8n^+0_bui>FuL6F ztSE^_wYdY>fSM3C6Qx3vmQLOM5&*{uu+Ws)7NqsgL%^#9oQZMiKN0gxI9osA+5m3>`Si}~4OC`RQ^kFiLrFN{0&XF1eA zjt3uS^BsbLz#};g07N|_OCyLreE`7?)alcQPzf*#2?qU4 zUeu+DsFcOtXIKC9*E!s}5 z#PMH?hyy=C&u#y8!cLE+Q%z9_dTLGHOp#Q$&VsJnc83w#v6mq6rL9*GrTq1qBm^C> zox>KpY?%eWOwfh`+p7LBGcD=ZLl2s6>+&;1YN>{E3PIy+JDqR{T0(w9N`Kq*9z<>n zo~8J}460{Kr+Z}j*Dr#q+Q$7#1Xjb(9h7d%#^94JuW&v(C`nm(gKWmh zn{nzBTO<^yo5`YcKVSP9i>S0B750_aexyHHBnY(*VuP*5Z0n(QRMHR})2%VhV#Y-i z$?F>^dy=zl8|xPcRc?z zFy~d`gHGcd$`mxRDKq&zt^kq12-7Gca?}KqU`p5GPy!~{qK^fkD^9&oFxZPA(8hN9 z@X+-?tg0@UjZOG;fe6>L7i}w=FaWfn-lzu)Y*7VWUbdL=*r6%X((N(zzIHw^?~@xE z>Z~Sci_W%y$nsu;4^sN3NPqds9;h4qZ8hRT;u>5U&4I&6iX!|I0}TqsT)K=8Kf|(` z(#qlWXdIuUHv%J)B-^A57#GSdEN3Gkq^K7sDAw^HV*iSf`_QnmQUe1h;=UM}-<8sa z!0!`rM6`u;;lG}NW)NW7p2mR}%l&4OP-Td9Z+{w1pWvuil}<|1K+JkxWc_+$T~ar{ z0w{bS`iONszrvthAZlXWFZTg|vKS%OJw@a2f1*RIr+o>$9{K}K`otwV>$akYv*FPc z>kh^0PEMk~8Z>~jLx$s0te>?OKwl$=(WrEj&Ho(V@;QsIvULekA8TUrgT~M)xA2G8 z-ze)O{@6lFYpEvY-faVuWS|C7x~$#CT>gT!htIjw7c4#G;AeQ!C_oeS=hv%xNCEw@ ze8ww^eC-#m7niGkE_#K~t!c~YA*xWdjWP^+!1#tk)m&RI_(`#e`~Z5TwlV_8CM2&r zI|O0JVMvZ%6^uTujfSsHw)9$yrc zN*ts8REOxsL8(TM3<^F;ywAZ~JJCI@-@@dPEt~M3Z*(VXk7tzfeKAUGWUc#}QW|4T z8{NP<6+TqiGPy<$c&?-j(w_pQZL~9*Bs8eA2rJlCQu3LHG+2D&^`Y7c^2O2BpD{$F z_a(on3;DAzS!!f69I%mQOMWl0-wWIrY6cp2Kz(+c*E);ob`6w1lA_BbS?VFzXvy!| zXqS^CBI9!tb<&UZ<6v(kYA;t zsscekKzeV2AR-+^L`4(@L_OEFbNTq3_w$}V;4Gi;o$Ghc&d$v4%+Bsk39ajMV-Q+% zr1!<@(KE>^5RMfEMu^L>ni>?qi_z1@%GG~t=w5iQcYk%mC$3NMuDt;xR3D{XSe!kt zS~>J#PpI~ZYXr4w^4%2Y^89W_-<+AgJ zR%+pV5Y8|w>jU=x2m0qK>|qr8_n`kq7h*8TpK{G96PmZ28~WY<8u~Btz52&;XFR{= z2z9u_P8q7#wMZZ z4{cG^#;~xh>r^?Gl8I|izi}+3MD;!R>do>*&ckYNetx_cvEvC&nHgT@048m;Jv)+b zPFqnOkKMRZx8%b6D)y@J6gY{}YtE%(SW>ypjJ$^ZJ~!Y~kf*Rcp(htbu2~Px!(n!9 zv2_zwGS}`3p)v7Znrj=BZc0y{169oXei$m=$0@W9x+O zq^;9X=@l<}$1M&YM=??1uj9Aq0%hzQZ{eW}jKF=yU2>)!Pbm<$0Nu^;>yUazzXcXJ zJC3I$r=LPgn>ehtJ6-Xa;veDSC2@FmB5$L-pbNf@8(qy~ig&l{Za7536Zy|ZC+Y-# zrpk+T>so9zN3vrkzAUn<<4jgKJjI?K>W@dUjIM{hKF7R=eQHnGUtlskkvxRt45lJy zNGWoAW zRj!Ls2}YLKj4M%LQ_n4*w=*Ae9@Ri~7tc7`7VE0~BkWEyLu*J@r(=$UszdFDg*i37 zQC*BV65a|wiRJHT&%xt+B1fZI9>)%aH#~uns~;6Tj>F|~9_Q|22%%~%yIIx8oLnBs z)2JhkW;pygK8oD)*wuEi%#)NfnuhXscw0?f;jyFNx6R{Y_W1&Jjk>M*AK`y z-zxMPulr)>3_8_Mr{qtVF&M+{W+iOFN)`Rwv`xMiRz&W_NV#PH5*h6^=%Kbc2K92v*pTH1uV*aJ(u67bcAQfN2#roGNsS zIyRC0RmPXc6*?q8vKT(@L3jt0MABn*{XXVLkfIF7{4C~i~+E(;y*jV7rU0L%m z=0ZodyWfl~MoU5?D?E&Qn&7R%U^CpreCde}TZaO-G*5bhsGRX&-EQB*_sj_yIR6#C z<#3zzR z_(%?R%qktU*Eiyl#nY(HUFtPaeeiK5{$+1$GB#1Xq5YEDhsHlgetgdrU&tH#QdK;L zH^-tkye2;2joQR@nm20Lb=>W?C$^Rkqk}tWTh|WtcE}S~z8$A$!$1sUohRp8oC)?! z9Gw%t+!Oc02Y5E)+q~lpIE&AglW<^KJTBtWxi>cG?DaFzPj64`2c`J@TiDo)Z{>+y z#ZxDgu7!0_JT3}w1)Ji$4aT39RSZvF8J-oB^SwR(i?8A-Vxbs1Gv@ykd1lN)G3X6z zW5eIE<=q&oyfue(iPjC-;cIU%DdrZ@L}B( znTe{6b!|fXy|{4BQ{J3Q@KJ=fIQ-#zg>dK9uTqM5ius(WUty`XT5$RgT=1Bfhn|RN ze46swg>K^_J3o6Oj^MjiEaNs_c_(q~$_Ju+1_#+i?Z>j|iRAHk(bzn<54_C!#~%C7UpekP;YuI;Y-b<; z0prudW48*u8&*fT;!O@N?B3+-*S$f!*21A1yViczyQ2POcTDi- z_=z$-*=yg!P8_%-B+7-mV1je!^PBW5cw6htzNevl2m5y8oe6z!@{?M|I_hOj`Lw|h@&s$M^0gEG??ZoDsCp;MX>&BS8 zy6NZ}n^zaYS?0mdui-7q_TYQo^tx8WFigGIj#y^}O?p);;$_2CYTzaYRnCeS%nxRE zbG$L9m#`wvMKSf*g*zr&5gqQZ&mVussOPn!BC#*1CvrZ9?!l52erPcs^p~i+Sh0B` zKS4G14{X$S;i!CRSHl-zp2&l!UaN-r%#ZE48d<@J9r$trhXkF)^Md0hE8_Lzwc8v( zO19$qW%1E6@y3@cj}@D{HO3@7Z<^2K`X^$=35K@SER*XudnZ;c_;|j{m;q<7bcU)o z?VEU|dlD<7nqS{RB!ym_ZuIWOWpXZeMcuI0)X@|YTH3O&CZohV;ELEdD?^*%D3{rTz<3lV(6zn_K=Jo@_tk>^iy9V za!uxS9B$Gj%vsJ$-k!mqm307v&doBXif?I{-w`Hh&1#%7Lu;tI!BC&pZuI#p>V*+8 zNRwE`lRr0m#B&!~jqw{6lk^g%j^APP)*pXX)-~KS7t6dSC)Z!dm$TH6#qJk6Tmkx@ z_7!Z2zCz!gLN$I}YsMU(FJEIh)ptY?S`}l$yvZ>E!6> zu9Wyc_A_`2r3F}U|5snpC_UHCot`^bs8P`Zev6Str~1t@_p%%ydqO6W9oR#u+9_%@$=CsaT+5`X?vzPw%(z1&0L-y-)=$jv*~L>~>= z7k*PQN!+!8yDRXv6@OON>wC>hn0UO#svyUp$v@SbQtEuM|K^~7wm0S_KEP;f(fm7G z`2b-YTrb=$m3PCQ5GIL-rtnY{-uS|?vex6CxfVK;FX2tP*#u*{USZq+%v0`>$sJn% zE5)UaGNy*(mRh5Z^S)ykxmo7S%fw$YPLE@nm&1ecuo>R?^?;R?x)0AJ%jFQ$@qF^g z8k5NVujfB&muHW9J4xjJ)0GE=D*u-Dqr}6)cys4};ufdt<&;W2ukwFZ99eCWcz`^QQ0J{Z{;aHy`!Sn* zj&%j6wJ`zocFl?@`bq(JF5-zb5ix;A=qHR9B~L_7Ku^UE2Z|am-?%xw931+>|49w; zts_qgz?(b#w{hRxEaUE>tt_55z{K&42|Nn|Z*lmuvUcsqlAVj6wz)`fHbjiJa^~h| zUj|NY@t-VANnGVu@Z-u1cOp1O*r%Tp!B6CT5I$EC3v^e8&|NoKSTV%$JRLlf1#j+M zpE-cL{u8<@9zS&7Y5(Va`}4j@JOfVmw(dM0h5O^kPTaQ?Pt(Ogab@SdX_Xj+V(3&| z#Zlm-c>gSHawlTMtN&a0-pZGoLu-mc1@`eZzCMjhZP*I$v-lpFw@UcK{=^to?o^ch zh#VfzPiT^OK0}_gkhhNb!>`i^@kxPY&Z?EprK>6VT5}_>6e6d|8wkTVCh>G+JbxE& zE%AqAx^c(cEb}FTsSKUs%Oq{+fRCu7-ACZ^X=U|8kGVEDO|GRB$<4FO@zim=aT=_w zZO-Ux_>OM8cW{3x#RcEc zT8d>ZBcbO8=PupvthUanR#pl0mz!nIK>meQ@)S4CYhq-0EFEv1@Q2@n(PJ2w^mL4r zxt$Y3{1TVfV2}0L7oH{_fM=3w48@(^Hr&9JebNHcanXI)#pn?`A05Huvs@IhFaCIH&romr|h097LYK zh__+*v$B?`0~e-Y`jU~;kno!XMSjr!#R&~zwY$=E+wHtCA`ADRl>t_^W44d z(F5nG_v!Fd%z$OM56_0g+erN3^ts0|iOZaA-=(xo7>WtuNu+q|5Nhqm)}c;`+bQ*` za{sAY_~^{rE1^~gtzMS-#BtpG??#)X@-r}A*d>{_2>fBa?5w(-QmpjWMYxzN_L1Q& z&SJyl6Idv(q_}fyF6MzBUwq|6G52=o&)Ya_?t0elTlO&47O!=WzT*)5IXreRV)Vh1J;$&VNxP_&T(>dK~ z_CrciCtgjOH@A-^?4yPHSjopbjVt1Qj3J>G8gUyJq&7)BKX3De?#%9k7HmPD#xPjs zc$CDSw?vrV>m2$4mv=JG!yi%-llOEohNrIMtu6kntgg6IA(lDxWT(R2ltKk7;laEO zJXnRcO?onZjcAN}YVa}5}sST~U*)K+= zDm5&elh0cR=e4NR1D=|eGhp+Kyw0e84Sd-xqf<|MoW-Ru()aS>ztppZ6aH6hm@9Se z|B9j3U4!%boSGBs`<(uZxB8q4m-5Cr$+=UL|LZTiVeZtP;m*Ot)Z{r&r4F@2$ND%^VCK|WBfJ8 zUpM@5{W9Jud+BCwI~23qB&E*xI@9YO!{tm1r_Qw&{pO3bV&)u-^Ev4~3Wa6wEt0x2 z;s4jq*LqLb_T6|w&W>*i=g3ZPn%de5lq-{-*6r27PHd$Od7Q<~QYTvF zvP(2i{UtiavZK7+lkLLZ#AJ4raW-^Hjdv<`N*(-vZTjZ_TEz*1LwDA2Y;TXj7-GIM z&Ig@SQ=Gn?Q;7P50y zMgQU6H9=ff+`y#y`1{uOuMw!G1qxcAq)Q={|bsNo&^W*MK~j`RMN{p-2Z!yZrN z%3QcW9Qg!z0Ge8n(!_xhFb;R{-CR?JpA#@jnH z`}b?9HGE~t*m=AW3+=>oUz(lZoi?H|da}L0cp8W9bTz2&`twe0_K zpI?W&_nCr8;RC&gN#lL~e8as@_TKMO>jp4(;XkKde8Z_%yW|un>{h;5=iZ>QRkLgK zEaAW4EF0@dcJAdU^Vpd(uVCba2X#tjKdAF`-#?tj#Y^F;@DK6dc-tT6Tw zGc0>X)l%GvmBL@? z?2Jcc;>TO%oR*jJ6wU4*Ok3$+baIvlSBEd#`ciHueSBJ7H+$c<8au6nKL0R=D$9&`%g$)S;!f6x=p|-`0l3gMd?leza+O@m6kAP z-!Z>)yiM-7z`%&8qP24*II+LInKygUsaUPuAshHmxc|0w`X*jLL|3_2y(c@{`J#jVhE>tTj za-8>V&s3{69{v3&93#9eE!Bzf#7AbIJe79lWovu(@`~v-Y-?8b&CK*gk$6jayHWay zFe@{=&9mvhj>KxY(W&&H6_$PIRCXo1;zr>=G9%tgy;*li`2rPwddg&WOs<2ITzZgwuC zr(m8c?if5J3(*$>rj&98S&8DizBgVM}I^8zkDgP{grPz_fU)42&Vg%xqQ{>aCS5$65KMsbO7NL$X^BkRQ zn@-BF$X*n`RgI9NDIQ>|@p^|i`7D4zWN@-Urfo3qN_(ja=c%8v1Psmg~G4`64y z^*k~kMZK7E2F3lW$y#(A7Io#;vOUGG$uBAQmi=JRGs-r@R2U;C(7yxbJ>_|F5$$7} zkCZ==n`tlGe4%_u9;2yY=8F7D_21>=Onjy8DUK<{&qbUPoQ*nUEG-&l5|xX}R9ZO9 zlvl1QYtWvyX{`LLY)fCUO;_btIfK{(y}ZaVq-^kw_aB^r1(wv z1^KG#1LW&;plv3~IjS#|OK5-FY?6E2de9tE4<~3}+gwn-CT~%E!S{>uBl#EYf*)gR zxF%6dNO4(`-VT^*vbpT2_U<9EEcRpveh7a{PErputh*J{zPu3b+L>pACkvt zZQGo$$z>5!dPNO4XidD~EB_(?q}8#$tp(A4P8mxxvBR};QJG4s;Ei9os;ogPVVPBK zRV(NYunh~(*rtmbddS|if^CKz z#qJmFlsn6pXd&D5RURTo%eN`^g_y29S1zXWZ~_?RPvtf`7tjBG6^_fV=p5{?q5Qr4 zh0ekrt;)VS$e8j-`W}8uS1u@1C^m4*DOZuT=~SH5E0nSPw^753bTYoqSMD!|(s#J$ zD#Qc6D`!${u`g8qP_Cu;%H}iWFXSOQj{A$-Qy zCFAK+I5nkmNts3q*rtkdZP|cgcl>9SJIKy3=!v&YFBJyLH)tMg?kc|{r_tQDnWwx& zuAs5D`9yiE+)1Ntb6EMbJV$W=@wK{I{_m*aXNoV+A1iz6A!7~&XgK!lP|hz4(tvGB zDwmTLDZWXlt=w3)pkCW_Q0`Vw%YP3REZYoJ!!Q}7_%iw(<@cmR|MHn7${)#f6#J2G zRo*QRQ0!5CTKR&!9D0C1eCCb{_vIh-0d_R04>1QKWHiMtR{50+%M@w?rkrvWS%dz9 zi}ol#E89`*W)|$GLND2m;!vq!%46gNic3|zr#w$CqTl<>N6MebY>GWMcPk&3C+JO| zx!~rYxu%BiD0VEoul!j4L$CTwL<5L9kxRx?oJydua!Hv+zxA0a%C%(!`i;*#tK1mj&q|pDC$aPFAGY^}n`qW7&f4^OYs z&kR={CnwS4eltrsOMXDt_{?hMjdDv!pV^~)M4q6l@Z2k3YpCV_77HtUpv9wX!EQXG7voFbp5ANb5O%GG6Uy2xjmDYuc&H{$ZYz-PLv&`0*Cr2^(H z<*{-CO~t1a<#}=;EgCSZlsCvtbiU8*Qa&h;(&T_S7gXW0yiOAX<|pOf2u~p342?AbQPjMk>E8C(+D+ znWa2mE~05+<|E4Y{|#!`L|X^UF69IA2yGcKUnzepuhI$ub65FS`3J2OFrKCm!w;7^ zX?nmUC>MmG<-Z6Em;9!T8Zu;Mdckk%DmRfW=vRKzLAk4ZnV$BW{>pF2x9Du28LvE5 zzSoq?|4g4*pu%$b5p{fKlk(?sH{I_yXXPz&eYJleSIYG=Tke#5DRvh*CvU3$qr6XN_=3j9&vNK6 zxhY1ZfJ~-){ieLENHHRHl^ZHQOL4yrvNN6LGXv!))hEg+^i{uE91;t`GIn6V8`Q9q zVt@zaQ98wEF3al_{r{-;2l6rP>o+-DxW-cSm!w=+xfI3lD^M;3mDz#w6g8DCDem~9 za#!Wv6#Wm9L+QIdGgkRsIh{`Onfb~~E=ZFG{p#(mzC&fpJ^gnP)t}y)RtdTq93HdEW z|2O4b`I~%1-}ITtR<8Le`Y$X?$g-|MQ%QxIvL40$pe>c#%NOZCw&^cNsy<#$k+bDI zy4W_$mDk8ms4vXy3yCeUuT;1|F^hgs{#p4i<)~-fI~J5hDEd!Vt|gz9ZPosg@&JlC z@unO}gE%&120P$viUBTC4=dzq>JKy7$~)y=>IpOFWay-Rxc^PH|0wU%2)tKe7bTik zroehEJi`LUth%g2m)oYT>_9Q#?rQHN2hb(~GtL=ZKO-f0RK0zz@*T-tqd0gAdtp$U zF0@U8EFnu%JWNH3{%XiN^pk*TE4!=SNA{=f1BK04x5Lbm%jH&i)M?ZJ<5{dtsDD#} z;_)ggS5t1H+*uBgZ%aphEI*gW=aetY>vX5j{4N78xH%8S@Sl=}Xvu)7@B%;Np`*4Mcs&&M*qq|L)LrF3IfUZ5 z9;-ZqqW|~h0@~7N*2^#CX?caB|J(9zkR8o^<{z1}quWCsnU5C7@1L@Y>a}HkS~y^y zm%ZdrwU3hHXi~s9a;0pwSv~BKyJ=IOIi`G8eogb^6NP-Ny5~jIF-3lwH(>HPU7KZe zPC3tr8Ff?T-{oV~1D!&>JKr_SC=u+%fME=jL+H-|Gf7UN7?`8>MRF;<8!(&YUe%Av z)AEA6L~jJlFY+I^j^ideqX8q3gEq$Lkd%{TVcHNcc;yUPnb!B2y2?#uOIp`wUXnd1 zCSb7g7>dVxCnVNE(^Z%&vuLh>StmbNeV;r;qXOolyrcSk`8$mW7^{o>K;bec_2YA% zax&#Qs3*?FS|wom%3w&RdaI0F`PQkQ zY`Kk=3Ny!@S6gMI1uMPe#zwLk#VEg^+*$cmicuOMU#HIo%qZoFax!g>b%gRFxm>Q1 zpSlLkHWj{*hvYGO(QmHEpH%-{KBnjKNwB+X0g4eUB2(xYzo{Y{s@_tz4T;63lM3Bv zO`myPj#d3#Ia|I@pYog4a;xgQ_lWw%~{CZdOQ6>7_N@>Qqoa~bi4 zrZM6f$x?Z-@&@HiPFM66JfnDC&EG5ksQg$t=PT~RC&|JTgD*uf|0>8TvbJm}Tgvuy zq%kkKIcR#TVGtdTqZ5?J%NcSuwJfttc_kf&qn?zv$$jz=t?V-w6veP)*jNC9o}} z+*-D$DR^s9?k)S#V)$`Jd5j!Si}=h8<@e~f<9()pa*gXi9QM_9Fg|aiJT}JJo-P;{_PMKR4kOk=zuPG;M zs@_mGr8u8XXZf1yugf>-L$8@Er&El>0yksFICfy_K9$+@cdyy4d{`c*IPKZj%2(x0 zdf#jADL<4?=sjFCpby0Gqh)UT6V4bP%2-DfS3^m9*K0DAtI1mQj@L9*ZY|r>+g|gM za&Os>-twAZ%46hsdc$jGD8Em+jkJIrI04p5HLR1L(kouGLwTP(B2UY&=tZx&s(f4i zBp=8}^eddz@HL3X%>hH-Lq@Z38YhcVLm^p=;`sV><%+T@J?=I2m7B>{^r+W#RDMbJ zpohI?pz@n?#A{qf;G{wmRhTAc(*0huPD^Qt|OaJ{Iyl?BwwMJ-2;^0l%pw@zRAk7 zg6hbkShKBAUMI6D-o$n*AC{*nwjRD!zA1mC*qnQ)Z2BSdxt7uN9~|PP94yQZY$KOe zAw$-Xb?6sf(_Fc&>_qW7=T+qa@=c1*aO0FG%UKj3pBE{wa1ELbDr}-SImIsJgYp>7 z_L}p`SL98)3Cq3mL-`l|)N8`YYr-(lxOJ&UUNnH zw)~MU@|uUrW&kp#+@=d~k{aa%`4pXxQ;fmT@}I7T4Eny;)KqRLn^DJW+ADXFFVopx z(_eY096@Jdu~wcgXVV#8vsiiM0Bs|zVPTpVXV`%l^IdWuo#HhomCws>Db8nfTlt=R zKqq;P!6MAzgvp$A0?vG;oGgnCGg*%1akUHztq3Vr23iW5(c zP#z~I(pFwGQ+b|TNLzT#D&_TZBW>n2JC*m#!?cmtoPAx(|3x)ip*sTR2j%1+t?~_dn^yFiUzH!r zzi9?e2l)oX9Ey=~^f|vNs9ao@q)q%Ln4v9l+%Qri+m)#*e>K83D9IO z&V1nJ{2{UYC$Xcj*OX90S(!m|VO$_^AKfPY!}H93IdjF-ce$H|HGRKU!q z70|I-h0o;|6wCQhiZMSU&(kwlI-CJ7o8u$}3luHE6ikJS)4X z-c$CW7M@Avpd3s8_L!;4b6kUF9y|W@nB{6%BR9~89-d zTtqS46>_cIEVt33UUM7<*>O<~H{|zpQNTQrW`z4dIVtL~$^|GMsEACZ*Dz(uRb@?D z-*1{IKPTId;9Fgi*YsuqzNv=May-q0ZwHj$mkVhDymQFi@}%0&%Wr7{J`PC>-@`K7 z6mu?mWHEGL3gTISiS)C8Nt5N>9-Ygt;t;Ja>ZzxEjYi?Kjhw3b966ujjHhemPI*l2 zXXOQ&={G;hKUMeYeHaHy;#)<3&=hbxOhJm#FQuHW96E}oh~I?vrbqj;YHzFd?#iJJ zd`#^yW*DSp{N_EmRBllFXCbku>`~zWJ?b$R_#_w%hH>FFzETj zW0tT0*Q;TR+)mef%mL*S@=LnbV=gJ*l6UB8kNHdH7>A4r$|dvCR(?}LmLA8oC#I~j z3XNn3*@>dPw{kz_;mT9wLb*OTrY%be|#PZ)! zh3>MS97MA`W{mQ9I?rQfD8Db4$`#b{m`{|q%H1@6>a}Den%6R|l{?BFvNw&f%rF@GqHrV&t&N$a9%jh-auLOu zqCb(lR6i(>(J>x#Uipf=Ne6q(J>`e;FFFLL)t?p$Q2R7Fiw^ae6>^I_p!O4!QrrhT!@^XLxvYlo*!2Inr8kA8mI^!Kg zEJd~Hxq$P=po~J%@2KdgxMEO7<>*}Rx_uU;==0}6870z&s`$2BG;`z%`LWu!xY=ni zIHPi~{A71XH7Q1=mF!G0uX@PWWH+Sg;oDNmNuX&;Z7ue?;Qpg6t%C(2u0gJuUi zdV0(uHJp-X=_?*{MftY8OS^l_AIkqo?-bO#;i@kbBc500r(Hazm~v@ZmUar_5^O5e zl?~|&9`l^?3$in9?=b`A5Q=AOg7RFMrTQx6&*WiwS^h}5fIeUcd_>!NjBl!&BV`P2 zjW=xNA~JlZ0R4$;kJm#hfKgwTdb!@sQd#52|4h3i?HZGO( z%OqOGV@fEOl^L{>$JA7AD4Wt}Jf__=zCmNaoz&2cj>0yL9HaUqIfcH3H&(eu^^I~1 z#mR(^$n&aSme*-{Y@8`S2&&@|9gi#gOn1#kF=ENGC>`f9Y0A&YDzq#v(xu!~wv`>| zKzz-l+(!y% zURj*-6gOqu4pTv9%G$EAY$Kni#XY8v>`(E4Ba}xgPgPzd*HFySjq)>E6wCi!6^_W0 zw6Mo~qkK(%N0adhLiv&Wn%$4RvUO$23=N zBRkN%cn+2O$N@ACUll5kl@n<$kC~}FPcEV{_++8H0fv_U%`8M<6)eA%Kgz#k%uKhx zWSK5&%4QT3)LOQuQ6BS>a&Os>hI!1enOy#HhcRjxPyN^iQhr}9pgw$pkQ*tU^DmT7 z$+N0oRsMxy_>bgY)PpU9S*~%jxcp;4g;XdjGbrk{lv_~@sJ-k+@vnz+UpbKeZJ80u z(JjU(_Fc&>_G2Z<~2Eh;(wM+{Z;Bypnpo?;M<-QaT zG(--UK^W{={*)nUDH_ILLYs(yRwEUk^!`JkjWo{_nmG|gLT<~PBYn&`5 zGh{uA5p5>h%Z?P+ap|qxkG3>s*xb_Y9mc3(vYbwjS!StRL3t*sU`D>+S1Mj`i{=K! zqu!Oj%g6KxE=Kdd+n!VAmIY)XSwfbkdn{8)xu&d3zrZDHTBy)YzCd?c<`w0>a;O|m z_gQ9|oJsLKFHrk(xlVpcKex<&d6=UAGof~Tro9;I2s2mcHp~2={HuH-3nWNq1ymcjsAs?eIQvP@^?97BC~7=SOE0Y_U`21M&#%9x#{W zHHr!RS=r2Y+w;icvLwaJVCQIj+udHpj&9NPRPLiZRC&1aB#LpLE@#os0kcAGlSk!A zijlgad_(ycH#?ojWP}H;EO#I_MbELyd6Ww&mzA~Uv$C6fh2s7Lm4_&gr5NdVS^p| zu0o|y0dLt9W86qKqcZ|nsl7ioBc;`5m3PR!@~AvXrv=P6%Gc$0^mUxgLFQQK=42;! zTt>Xr)+sSAqbS$rOV|KEq*DTBgYsu`k31qz&p3Qk2tVMLHOV#VI$IZRGRRwoK2(L3evo3NDPPoGEM4w*%%m*Pv;~4$RN)YUrsvh~k0Xl0k}V)xD$q zo}5D`S>^-fRdNlD^q4KmyX0Ov-ZJMx1}*aqJ1_#b)o@q&q4E>uu%+%DBPse%pcuhq zS(J{mOqy~Q(d{u=Xxa-@7)PL;FeLb+V7m7C-axlbOKXIJU%`H~7Zk>88S~av-f|%n0RiatbZwH*=L2$(6JYj`LIA zD)-P@#vE5ZE5D^Ra7~<`3O~y~Xf^zO%s=cZCSz$;V-l5%$fs##W1dm2ChO6P#O8~se@bhOJE38e%YQBv;$@O7Dxa1avWl!Lo6GjHo9snz8}qty zP)?FFVQBfE&q6_bV3OO_!+v=}o|jkU9r>$#OiN;~o3*Y_$b%YP)|0aPZ`r*xr^*c3m7v<`7Jq? z<}+rh@*KI4#v8Lrd4v3nPV}3jA@ODF1vOlgcj!BQ^OwxA0U58>+_C^I?l;Ai%gASF z9%E`LH_|F35_;pjq)b>In8OzLFJS3Jk4Ru zb>$!AuQc44zhP+k_kV%{rZ9@$=QaOai&1P+mQ#L4xfVtLjbtl27U#Z@Jt^)tQ0;HZ z(R3Kjg(~NM!sQ=5E>RDw`z_u$b1y{FHF&Y z30d}2F8?EOmPQs}YuQ~6mP089Fq&cj6XkRoz%_7{m&i48v)m?k%cJsCP#tIGWqF+z z@|&NOAIN{CZ=*XRIb0M*0$yyW>(pc@mR_f>|yU@IT(@%L2&5bj3D!(nK z$(i&G%Pdr0F4xPAG}dqSC?B9veskK*L32S3H{|#77x||&n{Y?W`Y@SG#>;}Tq%1Eh z$(pjUY!MRg|7}(1B43t$uog;o3CF5i; zQ5}V4NtrGy$?CGcY${vJ4zioq?Sw+^C4d?*NJgeM6cA;GUd#cb^4w1v< zIQfozPtKK#<%e>u+$gup-SV(J4s(0@S>`GW@FvA?Nq=PFx1?NK5ioZ7WwK0_W#lt5 zQ`V6Uscp=2${l1E*+af22g_luK{Hx~338g8Ewkhjxk|2+o8@-7M;?+VZHKD(92QGF7I@iZYYFYMBPgEo2+{BIOI?B^7$h0rE{bg7&b? zMCIvnj$A00$<^``xmE6x2jx*%+Vh%aF0%lyQ*1T-ruCUe2iwnV%NNitQImK9`mSw}XN&&d~M zH`z-LmT$_@^4%TUmYA->T)9N9kn7}Ua);b6kIFOhlDsZ|kPqZz>Dj4miO8MqtcjKR zWD%Jv(`6M|LpG4DWLw!uc9(tRKshX^j!|-=oGRzYEV)dsm7mJ3a<4ojPs$7Oviwd4 ze^kc<`KR>ma_306jFs^+Nfwn)%M4jX){;$R3;Kd(I=H!|>8gg_vL9`W{r;6l%Xj58 z+S)Qp)`u{kz@!MbO#U`j=&79oc|lG~2kjvFW9T zx8%EWkz6mokf-E#6eIcrU18x!fj5`qN4ffY+;U^O&N9y{zeqP&rjK%e`YCqvQyxn< zS>`?EIrKB^qo%xy9)Fr0p%*QULvxi!&@(u7neudc-fI>q zFQpf}X0tq?`Vo4`Yc9#3RsWU#?KS@WuJJI)LID;q=BaAPlr>dvuH2Pk%3r3jJ~LFl zqxw{u;WHn|PvkzeAEKE!ZKC{fzo{N7m;>&BeYCpI#LHA!RqZusZCubu_HbIQ#4RsA3x=riBQ%M{alSNSg)a}ae*UmShiXHsNk)vM9ZajI_F)ir1atB0ZV z3!iycX2~^j7cF6%FXcIk5xK7Xs|*}M{jqKG%co^EiV>_u1Nh!6B)$x7&khXeRW-aN zr%>Es293ZqFXU(Pi2RnKzpJ#Y-~1*YQViEV?6!x~ir58KmZ99{Eys>FI38LyqPSyQ zvg3gY5l7sHB$+Pj%C@qX z94@EJCGr!wPoAe3@r(4N-~24iQIixZ#2$4Uic<8LN^fJQV8{A6BPI4dmFLiVezVG{ zjB;gj%WOI5B)G1MBg9In*ky#H}V!9tVN+Z>fwskb%snEuKgmjR9{T{2h68(9~~MnXViY425~|V`7^~xn-gw5 zm&{91Pf@Pq8fG%x24~%Bd~)rj*1m4h1eM1s&!CtEv+3A?St+-wzJtyRm{an)>fh02 z0rOb?O))k(PP+9(SM0094t$PowzDNmNu-MX`mcizK* zJ0GAc1LlIfd5d+mm@g`8A6E2GG^G5Qdyc zF@3X@S5Wl#F})fvJLH%0hJ4`K!8~FI1`u}Iy+eMA0VL5o0aI3HQ1n+@`8nB6^;anF z*NevB+9OW*x{QL^>FY8UCq-2dHmiehsxn{ zlpH6g(+kGTl5=I2Tr8Kl2F-eQT*RSCa*Nz9cS&psg!;qNhj&_B-%?`SLK%Yyc}3ok z_b7_L$%pbu$RPf=+#Y-~Ok(%e&>eAfE>8P_{Rw2UEGkoFDOri)(KBUDSywicO=%E4 zVgndQ1mG!3>*Yqdi{8g? zO!A;SD$i5Qo{RE|ydm#Ve0KOvK9o;zOaL03z9(@~+H?Ct8{T}bB@SDWU34KiQ$uNoS-%uTAdI{|an<$edPI(imr&B!16=WruDQn8Q zG>9G>s?b!nr#OqqWd_Tka=08N$H|FuvYbngStbkSWXEC^mN}oD#)A_)4A%5l*zNO}8}gp~O+J)QWSEWqaj0gbjFE9NSr(P4vXrbuacn6roK1tKrV6-J zcc`Hy#bVrAwwJgFdZ^x0_L2SNU^$B7gi+(z9D**UfL9^TIFSKgDqNfSUjK0^Csn2eMOGEpYWq9Jj{R$QDCpQwDM zf~+JnWkcCi;-Z+L{#(l~v@$N|Dtk(7&WGyQTn}Bc1&3FJ93{umT6KM9Iy-PlAZ$5@ zoGY^=HeW*@p0R})a=qLb(&=J%yP|eI zSCs20ivQ=6eE#ceuf5*C-#1U5JbCg-`XtZqm-Nd4IVgwh)4du0*slU_5x97zz4POY z)G%62sx-?M*(%#)C%wgKx@5QPk^OQ&4$2`pD#xVR4`V91LMIy3LpM21qV&on>66Ja zMW)J3ig)+aZ@JmO)u2L$W-g{f5`6W&3uQsgsSeNjA%th<5Hj zah-0q?{b+Q*)Ip=pd5;5@8Nag_s4baahU|^l}XYklOx*QxK7y5_7<1Pk@>Pf24tZu zp%1!DsSL_8Ss^QBm8_PvvM#C(_hro7uU*9s`&u9VT=%OxAcy6M9F=1-{($H^8vE9)YLU8Y`z z2H7Z^WUFkG?Xp95(;tu?*(>{GzZ{Uma)gF)#ZeW;WPAcHh`~2KNsmmFUYR6QWU5S) z>C#W}Ay|&gm3i=FUJzj6Shp#ZMY321Wm!b~+wP2u!}#p0gL81y?nIuzWs!WsV(l2vluFR7GStyHSu?$Y&xj1Y< znF=9UE~_ZM-?LiQ$j!2zUVsnpWTR}7t+GwF%MRH+0dIl1f*uumWuF|R_>^%-4$Bc~ z4vb#zl<_h_dMSPbI7#|svP=uJvC?hQWv0xQxpXytvRCHI0$C)BWr-}6A&P^Za#p8|gGzUd>N)IhZMx|FK z$rO6C+oZ}gnJ)blV@`8quFR7Gc#Z>ydxb2(B3Uehv<4ZKAz3afWMxD<!`}Ht#;GR^syie{<(M>{=<1yw`^gs>(+=~gpDa^ksy%EVmWX!go{Tg1>sM{SKD`I~*i4MxhSPq`u20=$yWhXj^{bm>XR}+RZn3?Z z-3oOp?Suc$NL}zIQpXBxmMyYfcF0cICA(!$M0?<1#xeU1t2Sb158}o=heTJMXs>2B zP2F_+;2@5xJMb)G1s2I-8I)x*B+F%mtduqMT?_%2wX#k&$|l(iSMmxiDzwwdai&9d z$}ZU}`((cykb`na4$G0K_Obuqlk@n*=#3;uFU3ifB;p%VbEF%PJa(Gu5(2ZkF{FU+mBz8)cJhm2DC6-m+bV4%sbx zBHC}hLfFlu=t`Y-_J1?V7vPO!F)Oe{mdcPUmld*7R>|s!_P76LYzQyM?0k0NupE(Q zayCWSK^<#;@DTOqnfn;XE#or$W9gkVUdsmdH{WlI3>x*LeQm%vK#M zuwFLEX4xWJWt;4jU9wyD$bLB>2j!3)g<;NwA7cTUL!&ySMUYR6QD1MM4H6osNX)2`4OqnfnDL!<{llihh24tZuq4;Xj zQW=zGvO-qUY%Ex%Lba@wb+TSI$Y$AMAN($31%3n`>%l2kr;L{g(jyb4kKzn#vP_Yw zGE-(tzs!;O6hAOs5H)N9Diq2R`V)4549YTDL4U!yWLYJvWi55!hhJsAY>>^=iLXYC zh{08@DzwQ?*(JMWkL;HNa!?M*QHtN39FyjVXx}M46hF6|NW*A&RY;O4bPB$2L8i%c z>8GjjCP(JVJQBbbu06haI#bpsa3-h04 z37uz5sSMJy@%Wdi5uyu_0a-!MMFwOQJr5a>H8dX?khSzeWI)!_0%Slo(#6PtY^DJ` z{w>jlX{DDU1G1eKA_KCME=2}pH!VU2WG}rE8Ib+77#Wa*bU890hiM7^f{#QR$N;?t z8IT46;}29iWjtMt3`h?RA_LM(*CGSbN6U}_nL^hi12T<oYkc0F|WIzs2;SpRTGQa{HrOzM(5(DROe1Z(fc=|jtAU(7h8IWH35;7otv;`TE zDfAU&K&FM+XhjBOCVd?lkbc^R49Hyi7BV37X*)6?1N0qaKo-#sWI&eCcaZ@Z4zkgS z49F0D9~qDpv$Xkv`1mNj&8jM*$} zsTTuPWIa6`Q-@?D#Q>-#eoF%z%`D(+LRw@i#e|18*-np(F&(m#o)BZYWH(L4?_S7W zdJ;xh$$mN$U$rU+X*$Ld9Tko?hFO?}Ay;yg&c@IeX?*CRd zMHIuuie(AK1eb8B8bON5A!RZ|F-@ynR!~gus+3g})4{4`4PAx|$XdDr8Ibk#YGgn* z(v_H8(G+c%W{MesEwYtj>S&v6rz<4r>?{piHqqG7UkmhLg@jZA>8BZ&b0qLO_pq41T^iE_z`Y65tFj=P1@Fs+S z4VXsnMFwOhy$>0Xeu}R!%#pct3o;<{X)Q7!0~BAJSSX9=BglX(fnk2-V<`(TNFPTA zWQby*Te+;DPay-ciaw1D$Qt@AG9YW|bI5?Kr!OD_vhip>|6jxl0SmC1Vg^r(Y^B?f z0ohLR)w&(BlfH%w$Zq-uG9Y{Do5+Cdr+-2Q3`j5i02z=z+KmjzlrS3~ApEpG9ZiSXUKpIm#{H_49FnG_idNS5FJDYWCi^S8IVy!Ny zV*v*uVwl??8yM&}B!{WnVMgRAjmNMwY4AppKOo?g@iYMg|D=cFhX4|#mwFr~N%|;$ zu^^d-(MVw<(P2_$8pTf_q{~d|#mGSEr}#~U9GOd#941fZ(<3oZPzI3y>VIdj6G9iO>8h%$#hUoG5?FCsuQ!$cIR#AL&YqhMQGaY8LtflxNkUCjUXE{v6 zv3&lc(a1t3#%IcAik~=Xk*zcvKQ}7d>0JDph3uqfVC13fruYq(9@$IhAp^3X<{|^f z^7)U(APe~MmmxV!^N;~KN*5vn(j=pwj||9odLc3(J+uHBkY2hN8IV4Tv7E_aHBu;k zhbL90(WS_M%%nxgfb`QVkpY=Yi;)4DPnRPDGC)g^0a-+^ahPzi8YQ$88IVD`8X1rw z8bk(U1zn2_$SPWf49FU~9vP6eG=vPudU_*KWI&p!=;JraoHCw1 zgbYXztwRQ+mp+ONNFNQ?BLr-~6#4`*Ak*kpWI$$8{Lo#t^wX!20hvpikO7%bpGO8{ zfHorovIs_gv#^+jm+(43TaW=6q^}?YGDKUE0a-y`M+RgS#Q@)GSwr7K24pR5M+Rj5 zR6hUT!3zNku#t8k1G1UEiwwwC+KCLvc8Yng9kP>lAp^3T?mz})FYQJKWdBq?|35+o zSb&3cCo&+1X)iJ$N9iZXfHc$4??VP;Jl%~9NDu8t2BepMjtod&n2iBsK&H?=$bd|v z|3L<1CjBomApP`fWI*Op{A_Wa%%|TY12RDOA_Fp9#KtK87|0U(3o;;s^fzQchGFijO zE&X&(tjUqN^fU}>m-+PcSW_Sa^o&?j2*Yd?v2a$bDV8O4UaTpVL3%cZz{?O_fDFhA zdM+{`tLS;ifUKeCBLlLQUVsc7$LBv9^(8Cd#12UH)+<7ve-hvFs0KF~N zgbURuq8pI`SwinX24s-li44dPy&D;j6?79aAgk!T$bhV&_aOtamfjzWZ`O%6Og-I# z49G@mkpbCEA4CRZD}5LlknQvlWI%S($B+TpO&>=FWH0?Ac2QrXfeg^C$bcNAPay+x zm_CgR$Wi(%G9b7gUYfb@ph_yHM^K8nda$ufohj10&$iV1n?GLvF*Pqy^a7^lgRxir>k@?<`BIZc5K z2iS;nnnGDb_rqizSwatRno=306P%_@hUh^~Q!Xp$!I(HBtLPz4Q!Q)gB+TWB8aB0T z9O^W6vYsC1G!3$m9)bBcvYAeCnikngk8+we*-npknhx1XkHvf(*-fWnB2dJz)AX`& z9KP~H_S55?W2AXn5H; z)oGHXkIr_QWSK&7n5_5CS%! zm%fP%NFV(ZG9Xjv+sJ@Sqkl#QWG3B?3`jqH4;hfT^e@PO%!l}58oUs&00Z;`WIz_t zzaay%gnoz&$RPbYG9W{ACo&)_=s%DFSw%la24u~2KL7uT7XlVwE&UW3koELm$bf95 zpCJRXnSOx`$X5C#G9cUOzmWmiN&kZk$nNQU{{I&lU;*~huaN=SPrpS5Ryx&X+GIOD z&Sg4eCq3R}x*}p0VmBKzFpE(3(lnRpll}B$ml=?QG~H!}Ysc-WZhGKtbl{VtOvee_J1NtP)z2N{rQbUrd5Gifd|ApP_lWI*Q9 zJY)cd*~n*MAu=EXG#?p|Mf5^sK$g$~WIzV#Vq`#uXaE_I74%YMKvvO0WZ)z||Iw&n zVJR{oYiSWOAnWOs$bf95#mIncrpu85*-A^00ohKkK?Ya+t112IMHk{OK`i($K#F8IbX`92p3!;h{Gp1JX+?kOAqVw;}^F zg;pX1GL2&Lb-K)?Rmgz!Q%tnZk-4Z@q8pr^B2^o;Rv;`TE{qz-NKn~JYWIztn*O37^O52bDX=bAT7BV2? zX}BFBU;}#SJIH|a(hg)m`slmJfJ~vC$bd|v?;`^;lXf8k(oc6F12Pwe9o={#U;*aS zkB|WwpgqWdETX%R0a-$OkpUT`pCAJ=MEj5dSwVLr1F~u+pa1=MAz%U4(9e+pSxX0y z0a;J?AOo_I4k81xnSO-~$W}Up49Ir+4Kg4*XY%5L>$>{%%49NH}8!?!1ExBI1iFJK4y>q7y4Q12TnPgbc_ux(FGNnG|1S znJxYFQe*&z*~n#~5E+p9^m1fC2Iv*YfGncL$bc-NE06&hq*o&YGDIQ^A{LGsP6}7THQM<-1L`(+XtZ6h8ma z=wtzNzPn^M-G~gxUW#w}>685wzvMI^2Pvk456NMA4>BM}DW-&vNt2HLACQ5t8u4^9 zG9Wz^KmC{}y%b+9lq7xhA!I66HS%%@Ky z12RA{DY{S=(dUr?Swde#24s-Fj10&S-G&Uv3i_%$Y$~G-Q$=4x24oF=0~wID^i5EN=x@k?tf22EE}mC(+OoWjgK=evX$w!n>6865G0qIgL5ex#LvomUz`H3=(reFrB%%mq^{j||9s8bStSfa2TQ3S|++o-CFn z^cG}52I+0cfDF-%$iS(5{-aUB!X3zftfF@!1G0wRjSR?Ix(OMO_4Hn3KsM6*kOA3D zHzNbGm0D!rR6hUFXlDU)(K}=(eFPbh-SjbJK=#rnkOA3GF%x`14$>!)0Xa-D5qm_A zQp}4U3#(x=QD{O2WITNy8IT^@j0{LGeF+(mKH7o|$Q1etG9c6FYsi4iq-}8~oUMkR zzJ(0PT-uHd$b9-|WIzV!c4R;n(f5!6SwjDU49FnuLIz}r?uZMU@@T_U&<~LTSw(x0 z0a-&a-+8mFrMr;|>` z_R{Z=0ohOghYZL;x)&Lc!}LdFK#tPzPY3}U(9DLI+3b|@^fzQcdZ@v~Vd6|2e z6f>KXWeRm;9lJUxS%4LETD+;0RWv2uRLdHQna`VLEj!0jnYSs@FQ?e#_A!cA*O^?DADP~?hLyyDE35uCkBNQ{N zrX2=PiZOHPOiUS}m`N4+76MG5dY%2*G3Fy0=8UPs(ZEcpBEguu0K4<;B81pkd9}^>vfSBl%LovZ=8^y$?FDWK8otgwOk!cZK5@YVCm*dyL zVVDz^eq`aQ7~`D+m&KSlbVZC=O0UK*^icfPT0E!wt-=cEwYcYWO^k^-3Syqo@pN5` znMX0N=yHnrM32&P{O%RS^r7!)1#ZvBKW>;Wbg2&o%oDnYVt&v&^iEAo!hE2g+25pj zLHEX(1)OVgUyQkqV!F?RbPIkAj`I&{@wL+w(|T^EkHnZi(#K-VpXlQ;<{OGxJDHKe z?N8zNayV%H=@@e>#q^vy`do~8g}xADKAZ|=7_6*#TY;R411Vj4$B&fxhwZj%vlLX z#*ksMN@Q#pCaHYP3otq5dx}XZ2^_YA$tX)H=Af*jn0r!9M`O&}6mv~JrI=&#BgNd3 zgE`a#|4yV1hq;M59p-P;?J#?2JO;P_$_D0&+{JML2@bQ39*7002Mf}P4)ZI;6p%!o zJD!XcQ?J9ENe_3JOK6hA1nH3ua|iV~%%k)etd}NZ;4_`(Fdm+NJRXDFSF@4oFwfH& z4zrVDYQ|oQDH#colU5FMeB@-6!_22y4s!*~c9Vur;l6f-M6pqNo%c!DF> zVUD1fKrx@@VYo02FLao@*~oX8t@J{N*+DTg;y)BKBHa9RJb)Xdm;e#^_WQ_k?2D|KBNw`$yg@VwnGu zS?D+6v8T^tusm&cn0M$)$P&fqeb1>7qxR=U4sKiV7_#s>LPFc{D^c_HM%ho94Z9rXe7Xa}_-QxlS@0u_QKuL@zk>EU%*|moKEbY_ zeHdL&cRS2+b6~&2tfZeiObs2t2GTtk9iI&`==}_e!S2f`2D#r&F}S^*e(x{`oCYzN zeGwhS9;6t%{vQ1e55+HR#KfA}b0G(*)3{hONcW31(@%#OjJ}d$40;pA*z@1%A+ctz zA5Mxjw^58S@1sY=n&Z!a7*l=~^~IVBiXr566hp`VNsq(e*1c>TA8QUe6P}1G(&@40 zEP4_~UecMdW<5P6*3{69Sn~`$6$2URZ2V3ZofB(D>1nZM;#m+wx>M;Hv1UF!3nMt` zyjXJsJsX2tH?y%I);v$ojWv7dd9lXi!1H6x;q(HGC!`m}nuT;xtSO-v$C}saC9&p1 zdReUbhAzPmbj^cBvE~wbRjj#=E{iprC^)#-islcx$r*xvKYNT)|^bY#F_=vVpq}!W6cKoaICq9J`!uT(#J67 zls+D7{!afGYrdjeV@=Egh+)It1$_QL9cxZv;aNOJ^to8GguZ}LwDiSTb2oiC);vMC z#hTaXtFfk=zJ?XkH?YCyKn(9)NZ-aoL_4s{DMs%$P>kMvgJRU~$LEC6=)z!C7BEbA z;<*sRbI+m}mU|V&aNL_HM&H)b-dOVz#i-le6r*kT&x06cn@0O_!xW=xZ>0mV=0S?V zvoBK&p6#I+G`ly<#t`oLc@U#y!xW=qAEFo)+d?rKb_c~E*g-lPYtC2*G3a$I#bDQG zDF(SFoDXC0qh~bMY5qiAPBTd3oMvJ^+|Oxd&;u~I?E*F?IL(dpAg8hPV5j+%9^y2= z(Me7-=>m8tMpn_ooaQWggwqt!DNb_(JqqKL=+REIlOF3dztX8rbHau2IHx&-9`7`l z(GxMa?PfNnJI&+tB&T_U&UBiO=qXNf(M2%BY3`z@I?Z=sGY+$J7HxxrO&tD8NH1kc0A(@|2jKD0o z7-9tGYI>Q|d`L0k^1rmmX$}ZLjIcb0Vq|4D#fZuxiUE`xCYm zNXg$QMo3h>#=rpg;txnTTpK_Y7=+oHnBKWM+97&&ZnoRlvegLqD&;J*(Ygl+0E27(+ z=56{a#+cF9oaRUR2GV;4eA8*>(LXuOb@Xkgd4c}fY5qdDJ54`*57(oAK^Crre|4Iv z^aDIJ^l!-4m0>hKbed~e_`B2GLU$sJ^dHy|`Y{H*(SJJ4xAaq|abE@h}Y2KsXVnf4he1|Qi|HGCR!@by2`XjcK{)8>1zhFb@ zuh>xfJB9;N40d~wVvt)W#o)HjCWp>dsU1pf(U_(ma zd<^}dxh^x8p5rnBn&&cW=|T*op!qKIB)t%WTiV$uaG6i&Vhl{60hc-OYIv#3q|ic_ zIh`(bnJZ|K%iKn2yj$KYmu*G-LS7f8i zWe!~l*SpMo8p5upH{hPqa+f)v6yEGIGiZg&%%itr>BfTdm*Fi`1))er-e&Y&2WwEwlR&SjR+M_uMsT92V0^a+fr z3Bs)|a}~unqZ=s37u`oOuBee>Jkjbku-Roc(w8t+g|@iN%WL@jf5m0qXQ36TrLSWb z(l+eEweT&ZmbN3c^c`e`b|AF$U4)i)V#V}*teAFTy>tiGOS@g>2l^5AV!>}B>+hy*j{Vwwi{oG~VrUTe>bdSq?O9zqaGWZo%Oo#B$ z&~Nbcq{DcYtb^aX%msABWu6VQ@dFEZ>X40Qs=35GB!@NRc+~(j7(CId3 z(>S+ziej+Kk2Jw;jtId6aRQSbjPsK85Vu)FF@~jzdU1-FV$4donGFn9*+q|Xn;+=W zZgar(5Q9>lrqghS^#+JBD6=WXo?J~+-DV@5;WppXnQoJIBRs`z7Ep{SxtC%r$%{10 zZDPt{w%c4p=i=n{xi_KVcbnz(Ot-0^Ic{_8&2YZk+({R>@m2|92uLl((2qfiAs=T| zzzf`F#x3w7oS~%{+R;KWq$B=Tc&Xbgp@lg2OfhmJ_cnM1PHtbxMzPyGN>{kecl2tk zxDsMW#y{w4w|QwJ#0ZS6JK%M0vzTJU#S0W8Ek33^6Rife*#B)@|;i54p`- zw9ak*SPdUTpJG5m;wIRD4X01yRPsIWX}5VE;%DRCI2b_Td4!3+=r-@rm)&L$#ejtU zYv8Lmi%v2AAeUm?K`F&}gTnh@J02?fj@!IKJKW}&KfrhKnBNco>NYpf9T=}bF>GMR z{e1poyuiO%=y98aHbaaLNTI!MlTSZ!n`>yF+x&sz^nVlWcbosv&)p_=3mkBpOX(iB zSx<3V|0jym`G-6Jhp;~S4c13-)_&&$3=vM(f6Ky%+f26*r{@>YQ9M29&u;S|9dn!a zDbBtRP!orr--eDjb5bpI#+e1wjZ-=lXVt6d{&D76nhhX`DadMnlOVe>KiOz~Mhdc^1emK>T7Z*Vr?IgZTS^0QX6YXx z&JBks&I#X3FUPKIfLG#F&sJEBd-x<=jy?Aj#HrqE8)0djd7ZAtJ)}YG;-}%-I1`{{ zapo4fKF&NtLpZthcQ$aUcK>G}`rpx8;>^@%Ax_CIpg0423&k1O_bAT14pE$OJ-7+t zOzSL)GptupoLPO9ZjLj*P#b5aJO^o}|y?_h@M|HsD405;l~!#F+~EN}Sn7aYA$UOAseAYw25Y<|W!5 zXXd}m=RZzZ7NNltm7W%e6O<=VoS3|hcEy=ZbVr=oOL6{j(KgtF-=L-cz;E@w3U|jD zcPso1zp_gQaNd#bK}hK!zDk~c6=%+T4Gtk|ukrbh^M&uQfb)dADb5f6OmSXt^6T(N ze1kN_>Ay7;r~giT1O66g=24vPTSjr3?=gzgdk4JJs})_8v4!gCLyBBc-2p$I08yhKb7K0C{z7xiUXot_46nWi~{NxQXC+as9#EP zpcGQSoW6yl>M9kgDUO_K)vu#Cf@)O1iQ-7ARsA-KBdSjIyC{yVde!fvIKmoKe~98p zYgGL)x&uem@pIAO9-uh%@~WRiaR`>8ek#SGSf={f6h~ya>gQ1$nFZ7@q&Pw=QNNVp zNG+s(ISu2GtxAPzibJ zRP0s1?{q$^aLj1@xBy$^q&Rj=RX>e7@z+rO0*YhFkox5m$CM4~H&Ps1wyEDv4|JPe z_4_D}HHXz7@rO}31czQ{KxTmA;M1pmGWEJmrux|w2c!Aw7f>9NmZ)D!acmm-3>oXI zWFN<v|n9Wo_o6f**kEtL1 z3>t@Y>WAnl7=)*O^fPIaC>3t|J}>0BH=tDjE& z7-pz`KE=UtvHB%62OFS%4V{kzqi7#r8OsKantQZBFU8UGkovSxj`aF5l`r^UF(>X%R)omZ+~MRAngtbPl{(Rx1(;|2!USnW2R`4Ig?io$1Li8ga z=i~i@SN$aV079pJI<3V+png7m2v0-xOKBZKr+y8^`-}$l8!6szwCD2qj~nb@p#hJH z78syU;vrcOy*!cPjYzusnH29w0_qpi=dnlBub_B;vRVCF`Z7|lelx}Um5#6qofL0e zderZwcmp$}{xHQGnaFtqY;gQJ=;IAdDn&nyw&UHj`hNNj_K^Ddw8L$J>X*@X@wTB} zg~$m9yz}W$zmx7jXw>hgcqbG&|9~4DWgl;d63&I_dnn!*C99u8cVUCn_tRcvNc{l) z#2q%JDgi5tAY@qt1bPpcFJctcUq4x=)~9|y{Q+-^)gPmy_}g+G z#0DkP@XvUfsgO;_@W(~{0{RopGjB{Wj{3Gu`U<(D=CM znHg-r5c*-h=Q9g&0SZo<5NEvVC(#3OP^*4A^~9N6_4DXN9F?nIOcU{jNd0m;InFey z-$e0Nv0eR+g=TK#J!7v5eH8B)`4AiEqj)cwsebkyXH?F@|5Ncl6aQzw zdPZf|5hupf*d;GyZHTG0J735;Kc?AEZO%I1(Yf5NZ_awu(ZAeIelcsIV{o}$PKTG< zSLo<+>wYO~VT`ehUc$BF?N;Kkdx_7^dl{tJEyQoXB>6U@1qAFyQe=0M5<7Jp2-tP0YOU*46dUa#(rUK?N9PLr!>ibg-W7I!D>rY2eSnUxuzMi3C*w6N z?X??8irq;v?bO#nu3bk0b~`DtlimO!yNp!XZ3MU325_4Mx7mgbX}43}%-Z1SF0l{1 zne~mMx5VE57H+b?#O|VlC3f1M;Bbju53y&q|0(M+Y{{~Atix-!ku>XiJL^4c$p>$v z=eJYd0l9Y7J17Qh#-DKo?3q7D?)G^dxUAkjLK^MYq}iUf9kkj_q}_fB9GzF&8SiE- zv~?X>3AXCptQkvlBPwwd?)@GVP@I zQS{qoB;Rf$0qgoJsIiMkt=&rM?OxJo=XHT*y9GEpud#c&xGS!)vp&dL?-;zsK2L|Q zvD0>7S9t8Y9a!3Hw*%Ys0k*~Wx2zmIF3bLgTgOi6#>JU-5%JrtB-idG`F7riAYiwU zBKzfsxI&5D_z`+lb|mS%Lq8uE+am>?PFY)VyAzC zyE66RCVIS7!+l{p$KD%*yUi&HW*+u`t+EVORf?Y%cc3wZIuv}#L>fTY+}U*f81 z_RTNR%d|`Opy#*GkzD&Luw4V#=)k|RGfKZitMT7in{69gxr5lfg?rFyAH-b>S=WDX zttz|dKUo`W-oH`r{SWH3cFI?%H`-NS;U?Pcg#TuJ>*!sLU#`Q(^{=)Ihv499`zRe= zZNH(TtL@ycBhR)?U*pR0_EX}q)4u^}_9l{VKOjLnCUA6LYY!ae`mVK0 zA+Gt{FfR4lUrDAt?>mrdA0b8d>+i5*YV5M_(QCHbfTKTX-T#YRanb)!_1Uc?#qK3( zcHT(Vx42@)Ui1)K60|!>$WHwMRM>T-%5En$cG8ca)-EIUb{lE5u2Ilz7ZJP~k#@Tm zI6BwZ`9ER%yVuwUX#X0!hYqf>vwr6NT4QggqigIgh-^>&1=o(Z>wdvbMz+WJP`|oq zEbCt}xVx)y;pkfX0L1ou8IQI4Y{q^d z*KQ>Fb|(qgsr!Q>yN;CD?IdU?9RMoqGJ;ocQe#~Spw=!T^>!<1w0lXroi}05i80Cc z?duZ`v6U0%cpRPA*#{=fndVBp*qDHQ{KEqeu|2GJUuXBQUWxjF(dCm5oZ~?@G7g+` zoa+xL$J;9ooO3L;cOxqg1&m3FF4(~Z@j$c8aRAez<-~(fuCh}PLU|D7#Avyg z$}vyaPl2Pq%(@T8y?O;pIipME9E^KATxJ)u{(7VybL`wiyXD|H2ieqv=Xh-!mTp+V&2VU3KVd3x>E@zWtSpHKIH* zdhP5)lmqs>M3i42FITf%WFKL<3uSF@AIl~7YnFGRtlLVRgmTcHHVNfVP<|r1?sAqx zb`#6xm+gBNr2pOO zIf?eo$#V{J1<}|29Khv{&UN;O$#?|HQLl(zFa1y^cb%PoDC%RV=h!QfCnwsCht4_3 zF}lt^z`B14@6#2hJb?!RbyrTLA9+TM;rgyz^xe_*C413dh`z@j{9Iw8JRWJX+Yl5dEokO%I-)ee8$OFN^L&=i#`u6g%l~tafPpY6U2}en4NTEoa|- zIq!QU-&+sIec2y_h;HPL>+z6X8Xw-K(^Z(T=VwMmhyMYcBQ2&~43zS2_4{t4s# z&FrV6@38lUH{hW=0;`>cex^OR^QuJqCHq123!__~kc6AbwNsLCGhHa>+nF4K zV(gMBSUmo!eY>J=3f6+Zbu4=$<%3g^vah)`{`Rq)g7SsYm1iG`rG56iBT>Eq<&&Zh zLp92-CiK&ycccY_xF!d;0(~G|1QougP z#N(SSamg4i(cj0?sklzw zvACp)m+ZfM-z9Clq>h*L@)Ga(B?;4T$q+9|nTAWI;gYQABT|SF&3%pRgj*?=4HTpQa%8hoi6Cb{>z*j~wr(qHl+| zrUJGSk4LMV%bXBh2MS8OMtr4~g*-APQtxC3X*lJ>{l&v1NHnTOxRvTN%sb~$bmB&^> zDq3Z1rL$GXRv}v*Y*n%~#8wkqiPO>QVJn-hF}8}?N}i5ZHCuUXwXjvjRv%k+Y&mCO zpEP2hIHCzjW&fG+egXSUpGRLu2Mz4Eqpz2bF7)vl`{@ik16yX`29i!fA!w(c zglu(VxoP&k+xrvks*~{e{($~D(c9h3#X@!~7xS0wTipQ56?QMmw(BIUE}WQ7dCD^(544SSw_$12w$7 z?3{@!HnEU+G75O(cQOiNEEKbVw}33Y3XaZ@efQ)!(`+3p&Qo|05wep{L1l=Q z0#Jqq3Qm(U5(Tm2y@F zP{ALlz3JGTE*8==P>8qlGEhj$K%tTakKMvTDGNO;cZEELLE zNU z&KF&4&TN!Jb`i_>puAQ=W4X$1W!YR~%ni}<0L!&@FUvQetfkYlP{t=VStt*Umn&Ir zwOd$Tx{?PNZ}UZKXBLhWJFmBUvT!8vGwOQTO`d~?uJ?L7YtEc$G1KglIeas5y}cb> zS9$5aE$-lA!`Itgtk51^bKJ*eto86WDf?7P;O!=o!r z_M?msdHg76q5S`U-B5PT9q-q%eY2DaWxQX2 zzD+&@Pl9r`^4Mx%tBkEKw(8g#LCckm>*>BEorV6HRH&RO128vYGSLL ztsb@-*cxN2i>>5&XpOLy$5v7fT4ikIuvLea>sGA){~spytI*f6%@F%N=&z4H`ib*# zR|jvf)8^wzcFr1OZjQdSST-N`diVyrp7l=Dy^p;(!4;Eex8VX;KMG5uE9k=t@a+0} zJ|6eEYgxWv*Yk;X`q_x4$DVdJ${cj7&nL>y#?3dQulM2&=;H-=8yD*zUu=Ynji9ej zAChvh7(OY@#bSBa8B-h0Tq(<$_9m7GP}ZA_HkR>G9m})Ij5#g(CL>`1R$7L>uAPoP zUQp*Pz+wsO_8q-fvW&l=ELWk7x2uI+crjam`(2BEvOW5Xn{iN%KK?vTI0uWhp{zTY zcMkSv_l zp#79(=Z1azBk4Sp>+SUOP_97Pt0R{4uqF6}oaI`Sv!h$m#-;IzImqRDEA!Al< zk6ehmIgEOB^fn7wA1$}5SuYRm`_tHjI^M~?xe%*)1!euQ8)F%tBA$=(TPV+s-e}(W zDC1K_md8-`M^|3Qa?n1wB8K3N2fbuky8>1^JzW^)2Cp#>6 zqg<|C&T^Igl;yl~zLrK_B$F;gx!q2`5M|Fzy!SD|cW{t+A)k{s+nX=s7NTBaV;=bf z{#vj;db8cZI!8zAd5~}sRugZhT!htpgtFFN$g1BoC!|>JK-p<82=EUzSAr8%7vqD?PCK1c*hQq@-b5PhR^Tey zxbOKha52_|Qzk60MHw%7KYf9}#(~J5nioL18)bbgR~f+4LA!j{^xvR|@1 z@%DWipL_|HuCW=Hpu7;}Gou?{#&WIQ$Z`$J$#$mm^+db<608Kr=q$IOtPegDFU5ZC zyv0tt6#I23vUuc0sF?NcTkLw)J$LYP$Hza%M?2dtMSuoxvG20}66y)jd*r%|fxE>{ zz6|xZP}c!m!DW2hZn4W*{|a?|IM9GPUbMDdh6B2hJM3;;jQqI@v2}-6?R!G<+@M&Qk z%8t%k?ej}K;7nKg3_sB5d+-r2qE(%MVgQ?O93ef;G6@WIO!sQ2GyXIz1La1-}^xX$-+Kw|p7u2-U``uo@4_ z6YY1oEqEqeg|&O^PL_`uUplcEOXFkWVw6vaEFJmucv&%)PO(QaiqV7IY+&-l7WxRMgE*NuCaSr4&1kIpQNuqx!KNJ zfpQVbGi>BD*o`Z&ZtQWE?-^gZ2TMCTH`+ZbuxB4Yz06*5?vaUhY6&vYz0uApL4E%} z>|1+T2_K1#_IB1MqOOCo4%SCE+Fh()gZkn2g1Kkoqxq|GvmQJ3YTRrk%4bGD6JN$M zMhUR|?)chUuEw@wpR>FJ< z8SA~b+uK=h8ehJH_2Jv?F4SXM?60fvLOXi9owgc_E#0#34i>M*t<~6dt8r_~QPy!^ z3(K{3JIXi~`I_MT-?dn%0t;Ol-SGw2VxeZcjO9;I)|==ClpURS*jKK_O*tRfxA+L_ z-FH}bkeh(Imd^>IK6r;+%z72-Nzv7BW_|b$`y}fPsOx250CoK7*c-&nHjOWyz6ND{ zgtG?a&he!yS@zm3EO(>4I=b>6mVNe1mgm}i>rP&aa<0u-i}HMwBcE|3+I4I3Q03c= zEVqv@-NB_pb|=f7DBm1icj9#@SJ<28rkMi$&ceEZW?Rwal zW_z^jVI0k@$6{4>-g+!n{>Z+^wGxYQ&$Ij_%6f_HVL8Qq$@1$c>+fjt29$9Ib^~(y z`6G6>XU?H^-3F`}r(aQX{eVRkfDSC`GLP~vP2_Lw5U+~yARBPAMKQFxb8bgP{GvVsuqQ34!%+m_R)UOAw&F1_Hii zE$m(*mGBS3;;>kXzzCZO9B4cM#An;~Z-M$CjY8xd=SD+CIl z>oW+3!F&Rx@Bx9@5Vi@ya+pj2&8-OFw%cX|K`@#Cu51Wwf%^pZK;Ie!M_@Ywz8T<` z8nQ$I$N@P=K;K-rLSPSc-GZPA<|E**KMUu#U>GfgZAC0v%Md7p69h`Z<5>h1Fq!~n zNuVC?6F35Ww^4I!gXgwk{9O1MofuJHivZV`1lGe90+{1=1ehZN{!%TR-%kBn3*paU zOf^h?4t;fSfPi|P9U1EXoDYiW_4DKTILFM(S2gECXemHSUMPuAgm=r%Y89h!99GK^Cji6 zp6NO$>OLSz{9sqshicsmskpl9>B(_n2`KOi55wc8PC6pi#KY_RvwHDI;-GDRRti6| z3naXf^@3Y&XN?RLr54A8b`L1w9%vz@Xm=eZsT5z1}Mc(gNBFs3F zHJpE`3!Fca)s^qm1@0fo>cme{c-FW;2(Ovx3a2(DC5TVm&+>EgaP)gzXGu&<%h2^qPJeNleIkQHpJjzX zVPLirCjH*k8yddPiiX0uNRvOhWczrtbXYjgKLVOxd_oKLp5aKgif^pct7}o6~VMGt+_PBUsN%mD2cd7hns)4143%gCf!N|4Q?(p5}Y=9&*Jk@bf{)4zX0FYyz}lT(7!?K8 z^9;(G0zVBjY)VnqRXpv*(5CK(XI#XTb=fyMSK*;PPJ=goao_$krl^!?EsqGcOpxjq zBbAwMiQ`y>jKYq`YVa#5)G!&PlTn$NBs0sXP#Lw3B6g8cNQxBEkLvGJ)d6>jaDOYM zEUE1=SOLZSxdUnv`CO7w&cuo+;_EW1P>#4yiKypgRJ@FuK&VwRN++XwttB{9#&wo) z-&2-F9Z(0TmVITEvn`H8ftVfZmq$5kJER!{E6}G3FPP)l6-E2XT&E1)?|>RbDIbzi z{p9?ArzE$_C}b(r3g;=*5*d{vqwpplj!l(OIvKT_z(^U@8TD=y)16A;ka5nEdr|*% za|V+`;gvBQ)5s{)jZ?%)6zUI|yq%@^fkIuCQO=INLxJCyQO>@2fr@{e*R`*BC6#}# z9L(9V9`OE=>{vcV3BMo7j;YF|wEK4mv4BdD(*bpoYLg(Ny36H!oI?4_D4mQtM`=A^ zQUUBTDuzP+BBPuI$fC49l~MW5)*42kPj`r!O4VuT5ECfl^sIiosk@? zlu>gEXDd%hLno-f8GRAX1_{fc|_>5wl zk}z_D3cQX8n_9xieWZMia>WB#_+XLnRf(6baBPKy(McE~ia?QysTNVDxo+qbFCEK% z*9%_sQ+bFD?`9uUK()Wh6>j{P?FT1+%=QKFRRxG!Kg=G%{>{6*y6Xja%U9(K;TN)# zkrx&1)Q3XJcLVYJJ^_0CoMTwP#dZUNxFHBK05f;wY_$v5| z95heXNAU%mczd#b6A%8=^_@WIrXLH}rsgoD-HSRkp zW&Ck#Ib2KVBl+2!IJ-(8%|o|PEXpg3^#0JQ`OytyN%I1gQaz}ovY>R1Wiqh2mQeJ$ z`sT3+xcBN(otU&(@8|BW!hY1?LW)b`q0d@kf{lUVg;dU zVAERt6aIKVDaYIxk%2R?Vj%}E>-15*XOPzq?R~}(<_jqmIblT*Va~V9N`VR{j-8QW zQ9z`@*LawL=>-p-7OpuvuRW&7mq4yjG)6QR75vnL52B z7g7WLB3b%tpf@JDMPdOpbCF?nf!=RmFFfu7Q{T{U!%HMUb5=4t1V*VvaG2y^jeb@AX zggGK(WZ^@-oKSmY6g4NSbxo$^rwAxyEKz~yoB9~G7P`Huj}0g#kE2S=HynG3O~*I& z9Ra4isqevd!)^@1BH;Zu^(R;itb7Yy-$DZdzdT|tKk`yRB*JH`H7M#=0`J(Y4l zE2DhmPzo#sd!<9fUexkiWt7ZM)Oc|KaswIVEVeX9RLH3A(C2M^uzznVM2?Iqm6CV6 z_TOZ&9hI@J!2n);cfw}ke?r{Gvy+%Csg+5;aFW%9|K)+5oLD2QS-U~jsqmP2s zU+Hf{$UVI$Xui@1iz{371q{l+((9n$vfd4D7VF)`U$5$2{s-fn-+~!Mf2$|4x8Pg- z?EWeecQmDN^*L`}f8Igm!n3gW$Rk!Uh=V`Va}xPvPK@rBQ_jQc?m7DQV?b=wn{ybf z@2dBJs2({cWES$>&U>oGeLZs8+}TzbU>p(*CoMTX{7Mc!vgGvO=W~!c zy-y5O%(BF8t2oWVAoctfm%92Wq!+Q;n&ZvKO(?1CS2DYD@YG2qQ@BAT#io)OG_1xJ z6;I;+CDN{SFs1 zit}dY)Oz3=`}C`i2X|hNNwNm1Yvd8Bc#1H~iQu>bdaYG#X6|$q&2M%Ah{p z-~t0a&xyh?Qc>3}IIswQ9_sZqH1qqkHG3W5V)(l=eNb$8-r@;=FY?#I#A9|HoLtve z3$K{Z_=rtca%?%!_pjFyVaouERy2khUT0OSs%OUbX?b_{^u}-JJxE+|fs5W*89zJH z{@_1fZ}GcFV9D1s_l)LpH`?Z6ir=r^eo0e3y z`8G6|y)F*0;$^fETg+cyx;dLmJbEEUP^X%AoyU=jrdh5FAm9LtAy7+M$SIxym z&pmGb;q$`M)V4s*)-mo{q<{OOCwiCwfSo2UVC@; zQ;j?4MV0F2@;4XrtlO6d7n=>YryUsBri^f%ljris#}lvRl^$+WSG&(sRWpoxrNYMe`HAR#pHEY z%iMd?OS1>lRMtcqQrKT&YNTNu!;G7v4E+-t(3j-=B+T>SGY(&B@kjU|#E0T93R0sD zA>kB^R>BV-D(Y+adl!Gr3?c^n764VzhIl#oX!Zp(EizV$#u&p*RwYCWZi#|AMsVvw z{~j@dp!k&a78Hul=2r@C{RKr>QmUXz6BHp)LUebbYchJxP8Oo$1wXx@N*CM}&0Myi zQn>dP;<5#e;uV%HFonNP@K<~@zqb%*5H!hxpc8@&f*bz#7TmH0k7z+tDTEq?KzO;c zA;R5H@mf`~5UcnetufAbHr$2J;|yavu!l#Z4-KnQ4ZhG2Z*YKjyb5jH5)5`6j4At! zkua`{VGpS5TZ7dW&rE)Zn`aCR7(F)vnl^i*vSxDLmYPw7ZyOWg{ceU#pXX2>rWZzP{uSRc@U2GMR|%u= zg$;y-y)fuZSom&9AT;$d;Q0aMrMOp{Y{L!uZttj}wU$%|pea&%9w;mLX1f*`4E-LfZFU*k@S=+SfTv z=mKoMAQ(`DN4mB*dwQ`9@Xp49lx{W+h-0--gbv{z%4{}>{J|@leJnO+8(tOIS+T@y z@L(bMZ48bz$qQp??A5xR$If7lOa+Bwf|af`5>cQX#^70tp_e~?U4&zuWl>EI?>>*g z4T~YseJ6Qs!lAg4i4j&qm@D+`XDIJLd=KZQf}wqMVoN{6zG%16n7-x=MqLC~uY35x z-suJ}eguQ#(+w3_vna_Y<%6o|Ne zhT*OMF<(u8$}k+4!z#64n?8Nu47l)OzwXfRg&`Iq=Na_>NHD0yJK2eD>E|@7F`q&P z1L|-3X-#r=qvS&6Gnfp9XucN{H-e#~C?hW&H*Yfxgl>ba18L%O1;cj3V>s5Nwd0i<8^fxs>Pv7d|#j zO;OVv@Sc`wBrQ@czIanQOOft$^fJ?jX*yAuQTTF!iBmr@TvP@-N-77BE$6VdGw{_? zTs*jFYbn?PAeS0ymorogL7*kwa4AT90b7>UdW(lI8{Bp2YLO?UNj3??p;}22G)vp9^HnjfY!l3XiqY~2o zFyz4edxj85Pf|s|?mrDPk!B0N^4Hb4SEIWAKZXiFcfi6(%ZN=lX5Eb$e)y3bj$Nd2 z$jO6I@frh##+c#q68Q}FglQSKj4mQXo)*SWR3O*-MJ<; zw0wgsIilz1YVnT7IOu;A6MIC7N2QHPur5jEg2$YVxV!;x7taW&zid^Cm%NQep9xc_ zgbOfl{M?ST9H64n!{_23TQ18VPBo0g?q+mAxe+yu>42I5Ow8E8D}XTYo247I%P`UI9S!yIGef$SFmDgvhjs*_eGezrXQC61qLno z#;B^xRJgthiDaUr!YPQSu}(5dYK~gvbn>|&S1wZurQAZHPPa!X5~x*5WmJotmJgvu z@oIE&Itj%;posZ$C=Gd_aQG*K6@86^`L`K--PhP7yo$njp;V{F?;UaMcS#o^XRJQP z#EgE%G3pQ+xdTfkPn}ibm_Bu8Mf=eTX(zw?9o`yZ%u&)N4XB42J4+2j4I?jyDK@N( ziV20wB}QL3*Hz^QPYg4z!SG0K;OMV2pBxHAUA>FEd2zR>uF(7x|PX-G-58uhd>G=Tc<@tI}g(z;tF zS8xwqFkrbcoOtze<6BxjBNZwJSQ5mdt;Vi=_nFPUb2qlRuXnwvNQl6d!P~a-OU6~| z)arw@E>Pj3W_+_tv|_q&%R|B4a#gw*)W2wZ!TZ~c6IH$J!YwaO%&s+V;j5mJRzXUP zFuK_*TK$;&Emv2JpjJ$O+4{N7?V|FQn%{Gi=hIe2+czFm>L~gCEnC}IYH%ArQn;yz z-G5McDPBs&1yiv$zcDwps*9aTYb6C@vM(H)JHSQviLmuTo4WqkEzYY`b7~a_o>2+* z=3IxuUU+=^Ds_64)ogp~^W&v+O2d{ve^bqGJh<5$f6Cu(w0Dsb-(wZ8J)^quiD#dS zZGKWR-!{)JrL2U=X2+M}&N^cRANoADxx{*tLro&SY)2K%vH>hIvejzz|q;!8V?uDrjC0cH5f$%2c* zH(4=L5Y&n%vr)p==!EWyoMa&xC3%Wws}%g6 z6x@0XJ{CM=D|q9-PVm9|tXPWBjX;*5MY(^t5Tfu(79w?mTe9GnA-F~h-eE9*kFhfw zFYeldMfpDn?ybGX1V~F!g+iAJMh(2s&p;}06!EuWo1AV=i4<}@b9o2+y3aTq7XaS{ z3sz4fKSdnB-*}#}dvL4DkOkVX^VQILz<31XywqUC@hT=X8t<|+;;e3wD5DVUiWdF^ zan`RVn8lt>n0s0{rsZn$BYAYsMoytiM~JL{kpaq#R!;%(H5t;uW2;=BP17 zpfCI3c?t5UFJ6vv{$86B3eX2yC{89^C9l;-jec0O9Y>APP<^jJ3C+)xpm<-NgL~6I z%vD3P+a*`{`KS?3=yl?_3RqZV@%or_HpqCLYkXO?wUoD#lYmOP? z;IiQ}HEcXgn`8)t)*lU8DC|8=iN+-tdi3>$(Bnp};EBxH3f@oQ zfnnoKl=26H_rO7cpqtm5?A+!b$5K3xK`^UVr{K|pMxAf~o6uEWL1^bo=?xgJ4}|KUaIta;mk6_E)2~AEtA`V>8{^PY zXMoZ#jx7O?6PWXDT!&4R))9g>3_nFluee0{*&v8>P8c8Xq2sYVG^=p96yq-!9S7)jRfg&+0~&LHtS4&FOwMA2AeZyT5Tu{R+lWO^{p=0;z>0ZrR48{>FX zr+szVm?OZ;DJryfc+)`pGc*UdBV)DAE-5aUUQz)q=ZrdHr{5Z1@koGbNBZmtGyOsVZThAil} zxS58)aX*tc6#AQjAzx!E-l~LN-Asx8zBnFPrAxcAD6cBu zscxn*`28&SvYV+l|EvPyGE6c4HXOpZIVuHpwoHry3dsvUY=!${?Y&%n;9+ZqsW!el zWiUs!RFJEt@TSn^GD?=&)Uy>Z`Y}@opN@GyW;%f1gM!5FrdZ8D3i^RU#oSKwczW0r z$A8M>QDV~!|5uRlvp;3AWWCggZf6wW(F23HDxrH1Qzm}x3MzV-LgMdHP`xa@$!)38 zQK_P39aV-DTXS0>zS_f7=?~jWP2r-spJ{f79fpT{rn1=!8HR{${Y?#hLr-9I%}D&a zgMHXxz#L<6cDrd1enS$1pEJea7Z<_soGHW)zeUM0ccx-45*giBxrFmDMYu$9@td=}~TZ)nA0VEJ(YHTB#*eofOdWp{Ykae)A6Lw}Y3N+HH0F z1o(Ib7@D!`7GMW8n?~~)3OL?udOcq1piJ4gL(WU_JN2g1-h*0-)w*0$K-~pXjGp!k z*+;Swg-l#-TL^Vjfg5o6!^ZYaQo>2R?N| zAYKblKipk>aKm&X*M)ST$YRA`)6IU2;a8wC%$fK-P%$UNTLarxvBF^P9i>2HEjYb&a1z`oGJmaFg=N(&ckXl<(ZNYHhuQQA=U@(VUo5Z0^Rx$w_7v#IG^?z?AXkcnIr>JL+A}nq9qc-O^rs zr^R-E2A|H$kCvCnjL(aJ*0Ud}#HS{hhj}Qvr8|rI!QI?MNSbMGRn=i$n(lD*+jG8X zDQ))UqdBqnEb|y1cF!@-gOeZRJ=(Jm+h=x##HY-$I0@j^{~R~|v2I|TtLX}NmYBa( zy-X?TAZ?}<_xM&)6^2T+k*S%sjre8eQXWqARE28$SKv-tyREfH4O@5WyGY2Mv)EVs zY=wENyZc*|D*ia!&YQd09NC!)%r;3W%VU#&k}z{6jI8=ryuyiRHk$(#@aa}_|MvYS zb7yQt6(l}u&P4jaMV^k9xUS-wXU(k|W%nMBIooLei{@`tS21nP9H+%Z9}f2IF-Q5O zQik#@fwBs9>l2*#%^q_O4^Q+$BeqSwaAL6aQU$}G`zE1)lV~)6#{{!G=uTqBRSo72 zbGJ;hd*+xm@I)i}KXu9+B6pu@yJ z_HBKVFcT$=lkRqN;;!T72wr8KOlvu)er0G5Xa`z#;57kz6$_?;3%yjSpnKWu>~Luu zxkBYBbEH(9y2cz=77Z0weKk;MsdN!PJZ0|T39D;Tpsg7i2n|Pn424za z&DTQ4NqG&LOp?UR%90NKEtBfyX4*zY`xl)Udcmx7b(e7wxcy+0!93+Jtm*BJ|SUbhN+au67P1#M=pWN#zV@NW?QJFahs33z~slK;LCp~ z*HOql1H|=Tn!i)}kDF{QnT30pwpo=!&|Grr^g$K4ZMmSu90Py0n0?`3i`npRigvwf z{=nNxQHPeI@+`k>Mx|-oIMjCIa^-b7{%+%CZ?{ zQzk%$#xh^#=TU%+R}0!({Z!(Q8q1Iv_aj(V4chN=7Z~(Ov-Fm<;4B8eiH;wDh8<~^ zIQ|a?@1|MS;CGo}c)F#B-(e~rnZe*X2!Cic?8S?_(k)N_kFnV`(=r~`_p}Urq_&0T zmj1Y=xfX)F8!NkFqDE<=$YY7%G@!(*~4JEuh+~V1xc{j|l z`~j~Iw|od2hg$+*?MO>cY`TiElVYIN8yBwyuRiTADn?o61P>%q*UZ4;(uQIIIvzee zE@RN#P%40yUTYOO)MhgA_mVLK2=k^CMkaNIgTeWkmP9_7iFapOvJ}2(;gvU~tbTvXQo)6p0kNX)4a?`e zva)D;CER+`;tQ!w=`Nr?XX)0V_{czeGpIXfL8CA6^f^nhm%ABL(HO9l?=eXE%#s_2 zA2XMhM+`L}_=b0r<0Eq^)eiD|(Sx~&44(VU63n+S@#trkxDNDB5(Vbc?+Q}UPnRuj zFzkw@KkWL-5|8vG3AU|YS$6rm6BE?Xh8Ava)!nv4q2<+?+m=|C1=nv|qQg)lfxFgH z?lPGun<@7R$S(4j82^W5yAnCnpyHw_L@IECSv%NC$}{BcJCEJ{YD%P9Qkm`nRmN@9%cXDKZjM95pD(TiUfz-OF<5x%6=dl=wLZ-n!Qan1EMTdE2?{@+ z=NJQ7e}wXk?{bI)R~rKO%Yy zVQE4q11SKRB0U?meM6EV+27imJq>gGt*LmC>t26rkBC$Feb8WEL6;+VCkreE4Jq2^ z{9#RiHJp775eWQ$=9wQ(Y3=>*@GvmITHIlj$$L2O23VhlenFUDI^g2nANB=VYhhIE zJha}lzu*FMSFd%2E$gy1ke#WIhkYk}e8m@ottS{BZN0T-WFl1m-d8KuhgkQ}k)*tE zs{?em2IA#qo9${m6m)Cf*+9tN*jw#No#=xnF-AhMOYIUysWdn2~#7j zWmQCaZYJ3h+YQ+VO+)mBdZJP{IpQd5lD*azm;jaX8$L z?@o6V!Cd*g2;sHp<}q4qZiBVxZb`8ELEGdresu+PDu$PP_~L8| z1IR123o25Z9Ltn&`NOwx?(Jd?s%tJ*;z_(}^3iSTr-YAl3;m$}#kWzpS#BY(TNJYy z{gFJbcCp66`pJmbfoUD$b%_`+-^~_Ov%LUg)K6E|ogJsd6>bH2H0|D^#On#IG3-#C zcZm|OdTJu{`rURV#J`HSjWjL9Sk?PbfxBKg64kTo2cR&OghA>*If(krBx?*@R*qEH z9l^+`S0$hCdThbs4jHKxE@Q=l;KF(=Mg#h=O>jENiuz1Mx59vB)xI@dt=gKE0ZP2R z5R0I$+cBQ%^TD-&Ui^1{@Ri}I02t+6jwg`oZb?4F*~<6L*S zfAd{w5C`y6ruBxZZsbvojip<8ZQqYvI^LgZtc-?1Y#J^ zB;^B97qZPm7?$A&Iq)F@Mx9I<0r@b)J_(~j6HH|{>j5R4?qLo8AFM=?X$=e|si!!< zWJa+h8A&b_gV2r=jVK|Yr*$Rr88T=Pn|fL^16Apmw8kLm6u|2ZgUU;`iNtY5lRzvd zb{=5;mVt*=)ycDDTKi>|yxxr-Y+Z*bresWyg!kX+?Jj;j*!qE+Y9l2ZDcfCAvhdy* zYXrZP6Mq_G{f5EC7yD(%OT?~$R+q>zGs=r*l_VE)QgI84%FxuKl4{0L-y&y!}HUvaX4MWdk712D7~%igYfexJ?EhsXAQ1UsY(Hz(Sjk|xq+imrM{JmBU{JAX8A1>{-c4|MmWI|^zS`!}a zOo#<9T8{+szbe4(ly$KGUQ#N0$r|=TDq5}ZHXh$NWv%3W6ma8|^>lmz1sN!-&#C?x z#D!1>8I>fV+_x&=qb6%l9{0;UPGjePpn&eDt-tHWQqcQKFXk?(cfY1L=_Jx=JelB* zy3M>Z)=>Tz9wwZzW@@r1^q;&36L#|O@)>Ikzk!DfXRNrU!2-Ww-Ni>Lpy3T`Nc=Yx zvJ-CVYrm!Lc4MB*X9eMI5?gZix6e}w@%J~Zs2B`$px(*rOKYiTetNNGYVp9538)Py znGUnQw0_v3$!>KY`a3*+86|>rvFft*elPdKn4X5H=pciq18pPyKBFAvWkYvFV}qPy z@MoYck-yHw=pdVW$JK%?Ee#E`Mf#Sf7dw}Amdfen7BZ!W%5YoG!zFYIt)BhBcwD2Y zs|eFD579fq=I^V*xgI|WCGol>Ub5<_l8CF9l)XY)I>`hm4_IY1d8Bwiglb?KUIcqO ztgiJOk=TNHFS$e0mKuLp|JMMucq84mg?V6;^ev*+kk%QeGHs#olf&lW*^!eujh3qI zNRb<#cpQz_A??9uc$~MWLIbT$w>{v>mK|PVb$8opcXtmea2U2z6@v?};pJwDW?Kwj zkH&3gTQpjE!z{BcgLh+q=2M~261lV!G@P|2i&~4#y@MeR?06~vcL=rHj>1O{n-w#a zM9unrziZ&9&cl7hKDjo9*8Qi{RSinJr+wtB78pLv)`JzphGDi3S&LXS-1aSF-9_6- z+Y8JThD<}V6AKrPW$Q4*eM+60CbP>zYQ0)TH3276m3fiyVyR7Ca6}ZxUmsN-q@3Kbl(Z%p0Gv7+Q`3u zJMz&K5XK~7WS;82QQY^0t;W^GQeILtWoCt#Q)=@-qpdQV15VAf;nllOIKtu0i8gEd zp(8WRN1O&)PUFskcFicQSTV^K5QBa3^g7#C7IFl$)1WxbeU3%!&f(%*=iMU5y~O+eHx00x=W}|@|w{oqjUt+vLca$ZIn(VetS!*8_KqX@qtqtY|$(k zzTIH!?DrBO7X&gFN%b|xi@EgY#juUGFaZXDZA<(5(Selzz%O7M22a%E7_n@%Mf%N{ zTwxtMh}05;N~X^$D=ryah9~zv92!RLP{%w~ELv>ZYAfiip#f@X;U*#>`U5O zxCfrtAbd3IysIrgbywRch&*ib^&ecYq-`AjY72I?ZAx9zwh!Sh$UAJy3!?%k_>FCP z?VQFPv)vPv7dEz;wBO9$V0O8X3kMF{GOH?(%xR{^e>MyMH6+85v@u&k%745xxRP*t zS3#OUrjU8VIP^s-l1B7(o~Vq|Nho0srpnI9sKF9y0sgBZF*1!=%8;EyZ@x;J0C%7w zR$-<%t7XREr0b=GS|FojZm!rv`B&gK=_ox)22Xzz7|Ww>pODOgj7JeeF>yD8Fi#M+ z)@1;J`|`MvhIy?^5D7334>@y`a;-}@ikU43Q%Wd)0>$itJHak-^ybefM`^g?9;H8p zKTk}alR42cjO0o+rImqH(~E9ygd9a-@L|6QlK(_}uaW{ZVtw5QQbGsNwziC3s-+Z% zQSe$C@g9^SdPr(cw#?1-G`?rxPilm18qU*1Ve_SEloPAy+v~qqZtPjEC0QJ$!I@N^k^oIWDw|GNqz(ApH#3B`*xr;bzdj}@= zH=?CY#Sk^*oLjC2&-y$yY?-{o10s*v`ao#u6KXh>VO7K5gHEgK>RmKAjn{o#riOw} zo=Oj@buIq(;qMsiKW3W>`+oW5|0gLj*g9@o8HjdS$%0#q;1eyVl7&#kC0sG86nkLo z>$WZt-2}f7AuvVoPQg6v;JMLy6%0CIv#`D3`C3j8E!j=3woT%g1E7vy*N^OP;hu)7YX|e^g9k9H~79D*?V1fpA%a(wfMb=4gtG@-|4}fhlB3tkqRNuIapfgYebyEN{9btWh+v@tkF98@eV zzGs!d>7fCEZisXqw1a80a{5ElA+(2Ty@8_Nhi7bV3G#mFqe9?8$CBw-_J_G+nJj4q zI49!y#S3@~qUnq+!G|)z(qZn_$(T0QTRPz`Z|bI@**eno!p(2{vc7nbrVP#IT*L7D zFdx2v_nUm6Yy z+g8Anby=Keq7aT_BNV1Rd>srM@D;v$*Om&c3G;Ax{?RuX7MKPbVaoaZC@5TtgKhb; zRY998hMS6d7jAsIk1&?FcN;I=;xHbig_KHa<5GQLDN55}7#S)0;`*7i0FJfi* zu9Mt4Nzq2`agsZVdmN^XD37SC&Q>rbR8N?sfqP|x)UL$#e30cVh3%F7B0%S{PaQ~8 zf)Cf3+fPgoA5vO-bMfNE^C&&Tl|HIi&|k0>S4o-|H@j0si8Cm%e^N0{Cy4kh1oLDz zLGEU9qss9of_=yo5@9~ghuENfsZr70->Gp#H?cl9T!omO;i<5s;v|O2_r(b%fIJ4u zx=y!2_~8q3V~Y^qb$eXq+JrZfdk9{fOc3=EO$4z3?-RsuQo%6X7v#op-x0)guM{f*VsFNu`Ji+03btyqiFw=>bN8Ncfc*CAsJ_b}rho$>!9i0M*G zQ47&T=Qc{Ncon@Q5dv#uC5Sb`*8C?R_J>r!F?c5+;=>E&35uGW;!#sl!NbQoTdW9g z|06tRMCpWMdOX3BhfOYb34J0)$8m|ATdBNHNfAPw5#12Fl{@=v^1}q-{6$+t!W21} z+q8#hr&76sqp#LV`DqDGh4AO~y{b|vNo+xCOg@9-EKWBTi{sPqj%}x#$c~QXV6qZK z!r&<03Mbq^u$Mez5q=lB6FBaG(_bWr^2Qmb`+XT!ai2O7UlGI#-f+5a5k%$nJ*Qiu z-vAsaL>`zyAVFWW40gJcoG^o+E60)gi^ACnqGFWRQ3T7Jkd|D$5vwuBiJ*;Fim=`Z zfnX%Z?R7%372u6H7dzc#PDkO-6Vz~=q=m<({fXR25)Yh^ZtS3VWITY%OHM~HiQ`Bz z<74o}MlU_EyPR+sL5xu1beBQbK7&Ky%Iv4{o0gy2=7Me)-Y&AHJMyegKD8NfU(y}| zdwS206(9c$Mf|E|9LC3*j-dizODuL4@O^?-j2(hK5^OD#DSICVO zARA3;fSClb;A;qC7d}rAyY>V@EdN!4NE$scPb8Tt?g@H9S~@@wE9R?0h_vBH1w#U( zkxd26cDjuOv7pkpK>uOn#ulCJ^q)r%3%=axUQG}y(BO0*B8U~aEV;2uTj&LAB(V}q zP@)~ISq#-2-SGsmhPh66KEX(iBO?y-pG`0pPn|m5%L!u5H#yx~2x1HDa=P~r#Fn7N z25-d#NM%4xLfgKS;Ku}UG_^S0-x0(XQc@S7KN-qUOC>qosjwlhMlbIE!q%UO+RNCh zus+Lk4NRUhBwE-Mi5vln`qiKTb#X3Ei{tS~YRm$>!?tAunv1`_6zB3o{c6xd(c2G} z91O%QkXLY1L$eG$D!PFJ%YpudW1Dvf zhY2FJVS;POXYh>8_(7`QmT8$48aw9&LVblr>#_P_APg7|MJGZ+@N&rk@5Kbdo^F48 zL)WY=F7WZIm$k6EWdzyZvoG<0az)Z!t;a5mnMujxFA5q1r-iUk*fIZNAnY53Hx=lV z%ayJ=r+*A=*Nh4QYY$xzG;2m-X9(!4cKUXP3t>gRu1GV|vm8uYC*y9}QyOK>p+F_d zOanA{>=4OX-eJnWW7c|*wH8q!<(>eMD~E>&?l|=DX5D?q{owQMo4wdlh`fF&u;#hV zTH!k!1ogP^$;WozH~`NWPr@_CkGV^o;rW(d-5O7U;kDzPk+q!s$&*iDiT z6D*&ECj*e+(!9Sfw9_0?fMY!4g(^F2ZG;6fm$KSA6pA9 zT*L#-sY~C~3O`|5sW9OCd|&S;vEmAO&sIus94ve;D$aFFAjcV9C|2V^y-tb4{21)8 zIHHBnE*$r?bF=Lg+zp)lgRNP32BV_H_j8_~f?v*wp24#jY@4b`I-h`xi%D+@e+$7XO8mmh2V z9D~adw?29sUZzbWTwys^V=Rld7vLc)a+5L0KcRF{pO^k{O?%h^U*56Jp)~)(Rh<>K z{$(ph9n$^3Q1fJgm+soSx)zrYFOxEXukWJnsu&*J#buZUg74W9J9-AYaM3OmmI^6I zfa(T4k(+LK`eZeJP`eAE7GeQ$oEhqi}vA)LVplO-3R4Q(6Zp z`BgHCL`c*@ZKqHojdQM)$HZ_WLb7XL>`kb#_(RN{*B;oub`2<)guAE}(@SQ|_&2d0 z3bboM;cCAGb@_NtL#vy8Agm0ud&9W-Ly3U#J|7+IbGOHc_~#atXDgpnrnH9~EtJmh zl@^thzg!w})F`?36r!svmif2s5z_ZR3N^w1y5lIJ!?- z8i{Bu5SV6N52v`WU!l7rnRpq5clGU^6_-=R0B_B`R<5Rs&Z-3xqB~Om1xttB# zAG3GwafV{GH@S2(QqWiMraM}rur0Vp;!R;nq{u@ESL>c2x^=hz?xIC)2kAdh5rZ4} zmMP<*FvlJ(ZpuMAg72OXeLOE(~DOm??u9##CQ-EtE|(>S{q z^ZG8;R6dM!aSH;-6B(NFLQ6<7$p zvjjXo>#FO6pV$% zIPC!a0nIdw;l>|DGB?o@dXk z)5X!=ZOnXpt-x0lOy}G4ak@J(-%i(pdn~Xg!lvDJ6z#K1T;YVb!v)V*j$UAoW5e)U z&?qFe?DRp^)d^BvEwIOcaYGp1K+^?{vwm7&*Rp1~Phs)+(CUGKpw)e@gci?84f4>w zRrWY&nz2QR9Uz?<)fT^{Wv#Fs@j|$g!!I*P=z=ITnQE!BYoO^!o)WAt;fKUqx-HTQ zO}GFX21OdHFC7UOl4~j-Y=5 zFc0*9pCXS1Q}pL(167SRy?4iqUt3*>vGyUWz)SS#13rZxSqqw|vTU4~A`)Pnl{K*}L)GQ>7icn*4XPFnf{RuUMX&w2{MP zv8CK459cW-J6Gbn%-R*vOWF*n+7p~4req$rlq>BXIHTp2YNK4!0G~#4)3d6#$i*P=%fcIj1R|JN|cK^KM^1w%lcbTu~;&DluXu`Ut@*CtyvdjEo zW&BpXvnc-*P-p+5bX%!nBmWGAD}wEd?O}24%d@n>HBA-?aniFtTl!_Yz*iUBW0?(H zme_}TSjzqWsVhugV(*KEJHEvJ7|K^T<6$jMT(9U*2b4l-8rMd7*tOO?Ns9IOpOtPs z?127D?f!h*Q5e6}9uJ$A+B1;A-&tzcRY^@~K+b|4hL4hs$A8USM98MH5?1=-dm>37QdbBXtvWeolk6D2T@UTX#E;+U-x1{DE>`I=%a zl`vA_47EZjWjm=|Ak_lG43sb#a>h=TRkN4P_Ey+Z^0 zPxcLh`ls#dAznaZe&cd`1-)tbFY$omTO<2I#U@*4sB5(2C7vtne*P){!$R2rg)8g< zbrs)}*7~Ux_U`N^G_J6x;6m`~3gjMJ!F8p*C-P*=N_#o`92!>I9Ras+zeEx6U%M~c zz+;s?5073CU1cAL%w+E>yMb+nA6H>2d%rUzP%#FvQEHlRqxwuot)>^pf^A}Aj&iYtVLzYM~Q$trEi*T7z& zjHEe}6w3n%q98Gy;86K=5D6Pw#A(~?2l%2xh$ns3F9dO|OBN@*r&HC4EU22?NJc*s zL_YKwb|76u)|+4ms*wny3EMS-I^9WCCU ze-9VE`$lP?9&y4wjDeQ{2;U;#MR(0Q0~xLs{fQ|WU%)uk+fc1jeRrB4tS9HF2~*W@ zR`snGTF@zsLzy-RFU-N%sk_lV58ZeZ!hbM!HMw`88!f%b-HdKfzwn+0g6>b#fbKYwEasGiUn(1>Vgdaoo2lzTC?>o||?g=zIq z;w5)`?Q7U&@$0?zl>&bMqVEg81Y_TdOB?L77_=RTds31l*Ud?e&9H6&UbS_FIq(h)I$;VLj&cEUS7sol?I~7~Ttux1UCx~k9LNUS3QN?>_VB-=0+D#D0^EKEJ zJ1|ge);Ms3b2WHq9sN-gJDR{**spawi5jn1Z%2Pu>c4nQEEaB=MnoW2VM!={J`!P} z<^6Az@V2)j2AX}Elu#Ko+^;6%BfMbct6>@_XCu`t7B1{X-D~QlDimi){%!93HEO1x zwxRVTn*OVy+{dBA@i@Tc4OICG&ypnu3aUqZ95FRkqq1&X1;g_Jmm)`ctFbICQdx?A zwL}O*lpMER5^d`$`nu!QpudCZrGP*{ITxo-D_%-o?dynPBVk(KR#f#O7VGwbuOm*l zhy)iX%do8!xOu-GuSoH8#0WpCaW}`Q$Bf1ZVKA*v04h)y;kA&_Bh^ASDoo3vXbgU8 zbibd&3&+?AKSvxGFMN{(T7OL7C!93uWw~_;t{Og;<<|9o;;cQ#-;vCxrNf5zKZ%D6 z{to{hmhus^6a zf>Q$=cy<-G1~_67oCok-x4YcoxzY4 z=tz&XlzZ6oP>;E^VOSXosZMp|e+#K7(FQ91bJz~s107`v592(IaVUS1dN;L2rLsh! zxmXfmo!S>j2|^0AKvj_AvBcu?5u~=UYttVJv0l-6rPV0JTTqGfPdz-MEbw)ZBYMn# zRqz2tekjAEVzPXOq`|`Krpkiv`0{C(47*jpQGuAf;pnEeL|pdAaEtLCDuulPZROs$ zrR9U<_Js+-j;=_rn}Z!r33w%PG9*HLl&lH=H9K*5eSygK55I~S7bmN1HlYv7wvui3 zb(v2(CEz*a^O20g0ZO6bDdGtkg|tK{{6{^BQv#O7U7pScu~IqMY$=#Bfq>IE6Db;F z%3pFxltUHDs9%W@JCFC~NGO3U)fi(cm2@892Z`HSB`=o~|FG=<$vUmpWi9!Wm?#;8Y^dYsFJuEa`5FKUh_S{K7$wCr${0UNIZwi1UTzeK z^e!v~)?Uj`fQpuv^-v$;_!=_T;EtHqI$RC8ryI18GEs}B`k{^r^3d>jOOhl^7xr-^ z!V6&zKTP0Qn4`b?9S-e?6sc*j!ItCCE<;?n!y3@Wp=j*?U!w5}SQzezW6!}$1P;N4 za7P&X0e%g4^oFU0TTz>lk|L#|{*+OgP8WLyDkB^Q_A(rba10E-gqje4v^3K5cyzzr zA;aqsp>vGD9jK>tj$C#E-q1Os*++0q=ji^7Mc~6rZHL#WYMd!5>N~uS5UQ01`0F92$OI4|mo{GD`QA5599zym< z=f#uO3A*~P&Nx;GF?s#}waL)Lm^>?ujL8e2voU$CX@5*!ARQi(r=gYY@*qPr1PT3$ zAQaa;F7F*Mmzn-e`79DK`-_(LRZBw4yd>D<&KU^O{6sSy>1y)5DXgXEMXE095iH$G z$SV^;IUOl4YDF!wKM17KO$I;e@#l<`^6}l2LW~ralxGx$7p3AhdFNG4*+lj!sI2pPlpacP0y1)VqdvidQzqCM0hffFNz7E0S^l)lX zjk>Mxo|mpJ=^9#|34|F%SMi|AZM{{Ll7*2?&cXmL$;!)xbk*4`%=8zN zwg;0wJI?^}x_LIXK+GEW$>gTH1~Twk8ppuTV`p3~vx{~DtWLm!tCYV}UYP*dI&iBi zXx=xh8LdG^U!qm%!C*&STa8iq&7l%t@}C7-bCCEcFOZZ}oP!Iysz`Qk82v4R)*}eZ z<&7LH9tG{r^$Vq23=~BV01`*Txcj&0wTzyC!9)F)kOc3;V2-DtCSB=*3&*@HVS!5c zopukL5~qr0Qe&xYKuulmnKv0`s9m{v57ZRj;g?9mbeZQ~hfQM?(p+;M=){VcJar2u z#pjwbiAlOma>>eU4Jm6VkHb7YXBhU%M}OCO^J+}oOCaulYwdUWzv=p&WS^OL>fdyI z`qRkoFLnSlqzams|4E12s5?EA+kS#_^*#*5340Q~P~+QKC*D_rAQ| zVyYmm-ZUfmi*015s3?s{N^V0~#wc{gYP)8QLUKJw|H}dRs{--=0ow$(~8}QWRk-bJv?)}8r5jNN}8CzUJ-+h%gOcn>_CYquqmon@M zC6dy-Lr}S`Fz9LEwsv}{^6R|naA7#DdW5Z_KtTr|<;7^SS#8>{dAl(E-4@1q0vQT5 z!L-%s@o&`sSbS|@tQK>cnktRa^?FxW__2LdQjyZQ)qrD^~~ ze4Y7p;`Wu&B|8LHZiZubVOH#hUVS&uIleDJsZ#&`-0GmE4XmO(nZ({wvy; z)|3xxe@11_)S>;R`5*AdZQORgHP%0gk<40wK4#58LcnE@3--TLX#P|zZ>1>Q~ zl1N+QjsA2et#23lXSTi^Z`6nOnp8Y_1Z07yOqkS=A;8-98+{mW?2PKeI0%>m3C7{R z+1*+F1_&}+i&d!pCvxJmx4>&z*LR%GYb}H7P-g^v*wGj#_|lIZjj_R9k&!T%cXtFb zLc=~1r06swj8^sNfeO3Qjg6gq@mfttH?E+Rbg;3+u0|OC;OAO+;PR(my5#ywMO}^e z4Z7jTPtQcRJ`-q^#kc_e^XRt47%ToIP@vTqqvH&TLji*KPlA+bHO4nm;*&KgM>vd- zE_d3z>8C!LQ0n4hrBURcJKIolEASSVEpO*fNmFLRt(wa?wn_Qx-)n_t)M<<{Nb?kH z&L2$gvlW$f$PJUq#u#S`%`h|ElZuCp=*2C5|GUGVDKUmn+i^yQzoKK-w<|Ae4YxE> z)Oh0^FHI-bq^?{m&<+b_C}1e>x^(usUN!^i?njf1W1ogZuIT3|Iqz}^ehN)M(P2MIWQO;Y3xFYZ|~gFV`_ zO%G4g`7q8}rl+j1V2w0qsj;=UFprAwWVN6Z&l@8} zFz#+X4_xEZ69Vt4?bFc@bYXLL2BBdA^!{pNBit_+bz-$K;W5^c3~P+X^mKXQPtC+9 z6jIHr#)(1*%dF?5VIA5xoDB_Ff%CSGkEh7pv1+Muv#~_0Vf<%Um}BnixE{Qe`KGa0 zpke)@BB^Y(u}#3pVUrv0+;UBRsWisO*p^vTqtew)^itMtW3^VZkmZ<4%=(=Y7WgRR zJ!4x4LP}%bGd>go?319Ez%>W>Tiyt|Q8*kt_f5twa0zSFHtgQ|{f-ashU5US@+*d% z)zi*iLj!2gwr@x}e9$O)i7*zp>d6V<3?DbAh7gGHSkpTFk^wLDl_v%hl|lk}7k19-}qF6u=}4gVq; zOgdu*<(xJ;0@Wt9K9*^9K;eUFcZeEk+i7%}PsyYw#!u-zZi)&1=HJih&WACG1OKc4 zMx8Y>o&M69QBhLmS>uaJ!HZVyS{h7e$!d_ExL`aAam*)bKsJADv{DJ3!@1&P;}lA% zdRrxorVA}y@Y?|s7gRIpXB-qhL8QtM!olDZL;Bt6(*PsOTPT++K z7*8<9QjPg1@Y1%!in+&3^z)oee)%4~(ZoIx9fH5~e7-@gWL) zYVwpx|1(0^7k;G)f=NfgrXyI^(j&pNT!;E_a}0C+O!0VMv9C`&r(C5Xf76RzIH)jp zUr7^Lp|XB;6l?r?CEGjdSO#@F*ZZs3hoYztw^c&xNVuidRQ#>CLk4T559w zN+h%PhvVcWjc)*xE`*w1t3yjstxW;+V>6Qv`S#buH+4^H=nA;uk>MZX!rbW@jtWt} zZ3|EZJu}R}BtaVf#9ge`rMye)koq}+<|LY8#C?MFYNBa=BdUezbtgl)x0gvzPbQh{ z^g@440G&$aXu0~^7jQ=~_C_GJjq}q;DQ!&8>y@dUaAz}cO0smPi^-*K(+S0?wxI@$ zoNf3Mvl-R+9IFFAYGQ2r(!@+tY*0TIFg>_Iz;xQ0X-W%ra94IxVzq;*5c^PFmK*$}jjMT%@j zsqtTQrqV~ya!UF8Wsq{GyQehxm(}MWWO5tBs&AWAk~7CNSoA8GHjX*)puM@KG)fzQ zUBkPVX?tUb*L38Uh=+8rm#LMHy?88Aa4r2iy-m?753`2mlV^fUL4LZStYot{jca}_ zoJyKs3;X}_Pf9kKRMBl2Pm!$!ML+hh!B2$N5Y$Wg>{GGV_2PJiG+v@SUNFXW|_`!7?1U(fu5mRDFHLBejb zLi)Mn-WbDQr4QA?Hn|Ffo-I#Z8u$eQ!!s=_*;- zEaO809s0=>)0L?{2rtSVkO(*^e@^!;k_}_a6G`<3i#0|D8F?)AEDFD6N&rK!=Pgrw z(042XHbyNI#t;_;E47=XS+`70G<5tfaP9MVP3;=aKUVj9^vPXQE`{7Pv6D@7enhNP za?gajx(*$pX!kv9vb535ykBW~6XofX@b3z;W`~#hAG@$wz8m-L zJ1se6IBxc#D*U~=XJqj@A(aZ;Cy*7L5bRLm% zg3KKnP=6e845~HzOO-+9xM0CT*+&;Og%Mqt45$`Q|E-T+vklAS-AZ}9- zYVroHcbVfTTnBxvYB(a2@EM}a$QjDkIP4I+m`y28VGm^>7{Ox8o{x9W;_<^qjAfDj zXR!H9zR|~=)u_U@zUHO|y5HI19kdkFt>F*Yj24VGcMP750AV8UI<_HWs*V%r3_`>W zf+Rj+j%|$ZP*5!;jWrvoWSqG#O8duBXoc=H#QsF6?N;xO^^zjTn|%z*^e$jAFx1y~ zj=5B=V=G8M7DZ+Y^!0pmjL?KM3(SkS`PK#Il|fADO86~Q>0QWP&NhMPASq>`d6y=L z_l14WHozEK1T&?G@F9Cl>I0z>oj?miBlEQ_>Jbj zMfz|%R^}YS&BTyUi<+eNmH?v7=JAc{!spe<&E^0~83ON7&9|5tVl=$l0s%)B{S?LOSoae*F$#y2yxt9u$FpP*?mO6?+@Hl7C@VA!ltDQR)J={RBZK~C zgAm#fB>QE$Lj(3>ZG260_nQ;*8H-nVMfS^-EGN9i9@AvdXc@%hp9G@}S|)?`u@a+X z5MySbULVoD{pR!#E`Pj3<`l`ZQaq}l>;vY`Aq=;|ofBVPY!89_Mwv*<515;oIe+OQ zIQq~m;vw2@Eb?0%(t|_1xdO&&$W=kEi9>ui_Lb#9ry1 zAPv52wl!jk%NyLT-_1ivS8Ha+)x+yb;cRQwn?jW^WF;-j~YWoTXgPo+aOkwLCuqdBH;aNMI}bKiS(sI>(y1&HYukUef6Od2Fv_6EW{ zM(VS(o6;BEErH@P1^wLJ663||mDu1gDi!sxJSWi2EX$%s7>Q?m{_{Rw^i;M50O(O!$5TFlRH zO23WJ80eYZmUPbTi+;Lir1a%(%lTljV;9~7s% zEEpos=SsxV(2cW}tS}I(2!(-0mU1utV9^H<4RtwZNf)oc{@*!ECyVw7ib@GcB$6KVg~Qyk8~JKlZg?3|%T<=YsB|1@*BsujqAeFJ zDO8>EEtCzI1INQm(k^q%IW0{%zZP~9pWUD>UwNM$3{#rm87Y#%9t>TF z)d9GVUpf0lN@=<(OnR}}QsyQ2NG)$#%DuR8#1`}D=MAn*@~*Myq=*{JS&{bbziOa$ z6(^%;+rfh=wD0rg26`g*n<(lsbrlr%^UfJ)pR0EYT~*przzq0iz}6}EEMDGW@$xR8 zNfXywa9g#g2{@^LTjIRa9|x>@={Q8;q#Ru1vw*$`Fk(b9DZB6h%!vfdgk;=(1XLg( zg$Jzq?rCTnGrz<|=NG~5Eeoxx&#!#rbv3Ny+K)mry3~IidK|&DtgS&SWKw`+g@ZA> zOH0WQEQw-mJQY5$6nHDJe=v-mNk{hfL}eyHMZD^PB@S5ow+9v*7;L>BT5R5xh{g^| znKW;BX(SzZXqoPP60jnQw;yikN-H3~~;gkWVwy(?H<0+7NC@Wl@=n#f#^wGpieY9>d&OjhtM z8Z;a77H^LARV6YBjd`Lq7K$z#U;jLm4v1DJN^s=N)lk~I|ENLS+nRnCt?|Mh3OEbc zrlcr?dOE1tN-`;}vFa^4EC8B_SJZg5(wZP%44{KbB+!vCEi#nuE3ME|Zo*_00#w#m zvAPX)QXv>R?_pmg_|~FBqR@9)=z~1EF;gF|4vU6)2%L-zv2e9IS|$7p@(Dlv?u*QW9MO>j+4q}4^{^nIk zdq@;Rkg9sG%Hg&cVzos zGBy9KPZHg4Mh1Fkx^=r|H!7}g{m&H=&7NWPWq$CM&9Fi#`t4@UAyoMz>_;rg((9qM zef3FKBR|eEQ7ae8EICOLv#o=*%9JkY@;3YWLhBh(c!{Piu|6Z_DCo~6)|O#ySZ}p5 z2g9Fdz6`Sv}ZaUPCgzYRW7x@pj?u&s*Q|ZS z5=ef$X3cMW^^3e8(DH52jky21^(7LwJ3`675~K0#HrNPH>tkW}3)i+=3j*h|Q77ji!>gK}k1Gh{BjE`#LF zUF7<&%j^6gwBXTTT@}$L$*ItUA+wb+JqgROcF~4%C_@)HF<};<`-V z@pUIxRW*oOAGF4r`mwlg@c?;IscRWz6Nf~x*YzsSsFRgR4T&Lcp>Oz{Y~73^{#jLO3NdeGc0%(HW-(~B}aQUDz;I}uK^Cd2MR zpH(M9Xl0iJxW+!PTT5l_AK=1m$58BP>~o-BB4~$W*l@1xuxRPtr?{-LzKt8Sm9d#x z`nma3!{dKisq10u5f%MDK@%#)e`uW`Q16S@U>b4U6+&5eTq^qLxU~bVI&O`oM<=Wq z4d>|NlOOYvM$AWFdC?AU0VV?dT0mNGBK{SLqjl2Jlh)kkVn|@fU$IYOQwhZGl$Q zTGPZUg7jgn)&F11=y$sO!0LnxNSIZ*R-(~Tw@21~Afn+nEpqk!BSF%MN7fetl&M`h z%D&^4_nDIk4S@U_&1Wc2-%-X;7XtHxTJtl{RNiD6ZHliWN}Wnv8GBu?Jj5Oel)`Rk zD$<$jfJHq(woJfEE)U9&fW7TP$mYA}X(fEVCaej~M}P)Qoz=g*1ZC0cR9jUQ!B{2%Eij(mP^l3(wBg&-BClI)@R!+m|&lGSIU!?x2r|8>Dop5=8m z$~C+%&{uK!okhr`gtyFZ8_$=Sna7Y1Jzh82B+uXw15X1d?9zmm`8$=gxLtloqY;$3 ztbB-fw94;G4>~~YuO!T^rN1U(0;roi83PJlabhKVQvNS~G$0_q&DOD9^Hu5xteO<% zb1#?{_Q($wZz$;H9{F+NE(IOwfeLO^(Cp&{5p+0aa4Sk#KG%!Rr$uU|g3NrSnvVaR z??(fB*KHOH%>zu>cm<-SnlH8#t+KgU`>TFxSegLGY4?W|%G zrLGGLOk!_L&{Fh59=doIdKWg;bvt)`L=F+7HrTL3RS~EZYWsPg<&~Z;pq1XlaS>!(x z?1qxb8egb~=fh`lUz;zDUzoqY;go!gfx(K1lBO@pKhy!(O(s!>zn7n^)G@Z8o^7v7 z1$z1Yd~hM@yZ7^Bb-Mu)%&_eZmU!^N{NGe`=Ujdx&NI732kQxoFNyqffk;Yj;|N=E z6lf-XswSSEo~nVHv11HJlpj9FgqfqV{Z(XL6QHMv73%_}X&>gh{gv&zz=IUKTL1Ht z{7fGmyT8`oL*bi1pj^+7>AI42Q>07}FF_zEbo__PvrOh1Sv}W_ZU$N>gX-2z5S3rg zPZZ+mZq>)UEjKW+k3TBYs*n;NtU1UM4K-2hPY#xr7(sRPp@vxcioKBhX z1x+X_s(@ivrp_P@j4C)EAg0zanfkUbC{gR!Xz3ZTrP=!doG8!1ZDx)dC4>{pj>H(j#}ZppRE>RIp<3g(^*qwbGaNniFX zXa_bEXSB7Ey7nz-qSgJtN*{@TK_U$(DtHne0Hu>f1)?B4q>qXVtl}b(nhq^UZpF*a zh7ZPdtZT+AaTC*(z4c*lOlydDruR@$8b7pPX=4F5Hpr{nximEGse&+SHm;zIwvI1Y zhf&O)P_Q9H>?CjNlJCNTa8dIKt5V&eBYSZ{kSHmn!o>v>mDF}?fj^b4ENJAuuYU1z z;m)WNi&Rq7vVtFdlpWI3*@{6!si3u2_C}WL26S_4)V1MHz88s-?=nUs1ncA(#1V>Q zjCu=cKr;-a%^M05+1Q-lP|!Jqi-Oc?o#ygHnn01l%L_WThS~vqIdYUI)4y8I_U_PN z)9}th91%PJ@1CY?>jaaq2nre3OSfi`ZEdDEUAG!TBtu0(OD{^Ep=m+WwiXO(gs~c6 zm37aeSAJ{Zf&fIR1KgS!8VwD3y?`(!sknsU6LP2<~y8{gXhpr@u{wjVfM z&>b>s1)=17reFn|ehj4^I8*R~FX^bDtu*_Kf~PdlTK%oM;Gy`mDE)S$0M1l%p4R-w z!4b&^_nsV2kSGQXV!q-lZT_WTXspnIqPG9gR_YXFJMHf?8e5Hi4tA(a@`<%|nwx=d zurW9V5XI{(@^euedDpHxWphU}57q1tRcC_%E})U{wwiCcb);i8n+KoDj-%svUP@-) zQ|K-8E*OK8U9hmnRT=k|(4kmcL;}Ab+oj_78hzzTa3$u|a;z*F6h~s5EqyNIaSPq$ z-Cm~U#5mT7)P^9<->j4fIlW8+YS=C-sAW(h&r-t}=fZ6n!{^GSxOw&D`CZqpyDZlE zI*^wfZ5JJmvsr|3q;F|!863@GJdkMwE03V6rd};=T~d8mp}l2QgfLd~IwuTEWz~Vp z9OQM4rE!5|(AsHNOIxDu16GUeaK1B4Nnf?J#k4JDfJp#sXD>tf>X2LSlg9FJHh_2y zm)ghMo(-hCvotOIdQKX_G-+mxAC~*XXi*3>4Z%rP#g?VmEol66-Zcl zl+V3#4{2jI)xH|_676`#)--W|%KKB6u`;&u?_Yma{?t=>xY>f*i;ARKs-#($uisSG zDCaC&wOAqDd&ZU{>b9cy^-TN(2e0gfwlwjYK+_l6nhT}0W}&U62&&=zg|-;+q#)f` zXzM44r6SGCwl^W$?a#H8pZUDDyu_h}Q0|iWN&52J*n^REw2M#1%qszbp}kMTBi( zWdAukLaJD4+baZ}M*HQTANRDED=O&1hUY@4<~r2ns{27UYS!ivDRgp`ttQ}neO%ZU zV;xroIb6S{)b_;;1N}97Mj)wPu+<8s(t{UleN=OIB8Cr;`(5?~6=cAK_35GDmSKHz zV49YF_f#mDtO7gfEvx%xl2bmta81IVAcPOFXC91WqfN{zH>!wp3HbBuiA#Jdd#1tI zQQea*Wzhr^)5_V#ZL!!?hsDcu@msNHxI)o` zJ;BNuC~bb(_N0<(#=!7LaJkJ&Wy}P~aJ<21-R^Q5Q`HwL@Hj?}3R@B;5;v+@Rsrgc zTMOA#VS{~*R9Mh=-|-Em$_3DwJTuIsrP>M`-2M)I4Y~d9fG{KsvI;vXd!sEu7)Sv= zOQ3*X)q|PRSOpMO3||0ud;>#+*KBQq>z*<&TE6KE-;cE$Z3d{n&inILC`G-B_k)!B zD&kj{!S2XSxQ(0v9ZCkjNb>;41~c#U2>9{?NPVxVLeZBl^mD@4$S9*h_=`54dk0qu zuOYgXqF=Lt_YWjEiLun7?TIK<76Fr3Q(m*hsgL1!lP7EESF!{;I>HhpLxLhsw(Vh< z3UCGmY(jO?GcuED_$HPPN0!&Q=Iol;;%4N!$=E~+t+6%*$2;Jr;y-5Auux;M+rmfbu-ESBw{Q`_ce+Dwu=KJUr|xQ0b7Dt3Ej>ESZRNVH12@SEv6~y=mFa_@o5!xd*3!yEK<^2 z@7v4$XkI6fyI9*9g4%#}4e<|t6L7sDS{o+;Sf@sWGPyyIP&hxE2F_Z-`GR80`XZT9YB=Go21?yxN;o|%^xM*0eVZ?YFV{CmYBvA7G9SvD?@<71La z`uMQzq=-6I>{$idJOkHhNq5|KK$?5ZHXQCN{sBt>tGtCM$#CBGl`lPiyI?fgYHd1c z=rvn}Ksoc^7HrOS+o^_o192B%nHdfZjjFcwuHPi!+8Y@6=M|m>`HX%!XV)9Q0j91- z8eDr_eiId0cMf-%vG$JMH4MlyD&J`H#SLK8b*K*;a`!+pAr{#w=-XJk%{y#}eB(5g z?ldK6LdV%Vs_lRo=*Z{DZhag|DWXr~?CdJ8WlI!RiBLQ3{sN%~n!jqG^)2m*l;Y(J z8y_w0R+#??iMJ?yRQyhUxO%7-NU-isPgrG88(9>(a|M~6 ziHFtc(+KyI!&92CH2B&ZWC3Rs{=LH0mk}jOj#3-64*LAws6yWabbKvBGGq%wrC*FP zs7E8Qfo^=sYMg+~J7Rqdlv7rRZ^rc>!lNklD#G=N2ronUUUHm<6xK3sgsHFYhP{)*(*Y`8Q1mrqbf0B(87V4dtdo_q9N!2ZO%qx8 zmt`=Wyab2(S#m|J6R#N5S;e?er6Vl-)}DL=HuM{x!N&CTh@}RxZ!!5@$GG2Wg^a_n zUd?jC%D<~rG&bgQy}AggVfOkuQfIWb8-(GM-x}2(4KS=DGw|5wQRrBp!Xn;`^83@h zV7{*c5fVwLX0<{(^%+E1LIEd-!ENs^PwUkud955QJUI#Zx=AS85=tk72O7lcV%kuR zTFpX$dX_(&W6>CJ=NJjWW zgeTJtL$_cUPFU)%j^g2~Sol~L&Sd%H<@EN^msFJD(^Ric=aFu(NMAOE!ErkxC6ll^ zJJ#3Ef)rQ+`0GQv-l>I18B$9Z7{l* zY4_I`L+O(?Xm}KT%Rs?&Bz$Qo#kB>fhSJ)ikF&tW&XuRe6b9D9YAs?epf~VnlQkSx z!s@Cq3{Rk3e!boXhfYjY1u!K4eba<>$HohOSch9-yfLhuU9XmbyQf@$u24HWGbfYZ z4kaE&p0Jdi#BfnNbj^SWHkG)t{yXgZQgfy$#J|79w@^#BS+b{a+BM3T=E*4lFQM)! z03V80D7I2+w5oPkGzmT5_=`p01W09HQ-(xnAW`~(%e$G&&sTT8ni6=VET zkt~YZq}mh2cd}_itcBU4n2k?$x{Dd%5`xCY(b-gcGch%dYX?Xn?d@Or_^?}6eX$5T zXe4yE$BKiL6yMz*SM)BrL_9Aa$?SN?!L12miBHLU)vFw&G$OTF$h4mninbgi9>YWI z(eU7=Y$^cMMn0aQpV*E|w7t8%YO5L+YPFxgB&$QcIuUdgkp1C_A!pEm+A!A9{T z`QTO;OJoTTG(5N|8E-^c=HWxv>)fHCUj++ebm1qxWzZ1>YngRGSi93qq2hmt z(9JjO@w%_)WT=}feKOR+ouz;`?Jue6twT5iAAHB&NILTI%-|xIm>CD?_1w+jQlCBc zg-QXG{5z0ktoS9=AZg#TUsehk(vA1+7Io8usHaac7;9_|^uRX3o)dh zjvj*rmydz-%gC`i7pJq}H3s#1gc&K|7{W@Q`Bht972pRqo;4&igYDvqF<;3pCQ_)F z#kj>%qx!d=3@tA`u7%m1;COoT*fH33`NR%K?_;d0@(f?5C|3H)0)sjtp6xZlhe){$ z;h;hsIvhsV{_wOx9fvTeoUyQ?F;>Hx8R#)}i=|gRvvDG;8q| z#Lz8){o(y325)zL47!oH81ilr{UFp6v<}DOAIt{d;q{?N57p+t?%_~&n0FS0S#|%} z24M=RKf_+1QJ#Iy8)SC%L1>#BKeOxE8FS(6P#XIgZ>Qt$3Gj$wJ&bKVskdIuu7ZD; zH{wdiIRi+Av&co=9+-AC?e<}!bC;0EOEhoJ17!N?aX6<>WMt`u6KLhYOUQF5jk|<` zU!>J|sJ8(cw`rlT$BMh~GofwmB3T4&C&PnO1g zZnvr0K8fzpkH(^@!5`bF>VIM;-h>^pP<9!6UoR%ok5{qdsYMF7W{-3BWzY-g5{wX1 z;~I-&V#!y~a2J&?@$+d4Ppe_~7{U?`k%fA_xNOZB4q*i&`4`gSYxdR}I`xe`zY)@w z8SyDE+S91*4ZAnJ{H?uP;8<)r`IB)IG=6-YA{Mon2kD@PKLZynz2gj^2jAJ*tq{MQ zDH;F1O3L`&PEEy>4*b?}kKov&(pgcoz8uvbBG3`FV`w{Or9xQCtA(LMwPaD3#T)`! zk5v?N3yQL6r%8~U8plWflC}7QMus>7sDs|In{N0zdY~4}>`%G=Nk2g^+5H?_Lzx)# zk%jJLsb#z)RuIbRm2EXmX=s8YP+X*trX@HQh;;4%gghs=bp$l*4f%u|kmN{~S$7)` zeG@4aB{?4Xh-s-3bh%!x6Cy_?70)WjE8P(tT*7KRqXBuODpyDu=?=A$9&PH^jQVCc z5*ro5?+h1aIE?@B2c?<}$1}dlPLN}hRrAb_>!M~ea@KdC=*2(4UcsvZtuXvZG4ZU?IqlWe~t(4%pV zG-ht3(|AW`@pbsT9`6_=9uer=ct@641J_Lx96cIe@$qtP(;Pq2-z{8zlsnzwK#^Q< zh{=`^WJ{pdIo)xh85_fm$9J`*LoYb`QT1DeEv4=+I&iO(QfT&2#WI^e9bDt^ZPc+m z_eqAnL3DkMqbV}xe!R1cJzkV5$pEmMQ)euPNxKw;j>( z3-Kf4Tufn|f@pNYMTc21D3!WrPF1R#DLZ7S1*@o* z7JTg3FHpz|O%uBKcfT-t;!{T-+VHhQBUOLu7$HE_%Mn8bmmLHCYa%gq)p(lldVd%& zyzIEl&Eu-G{niR4C3u8R0MN7xueN(?u{gA$yGkP>Zf(RA77d1QlpwPs{;kcuT|vwwpaWfHBCPov__8 zDiVV}h&@4}OqE9b!crA;^6ffWEZxuERzZ zqXD?b0A-Z@t0RdH3>$?D*ySU&RHK33XblU0@mEJ287@qR^El=xuIg8Z0nCjXzd9I0 z>rND;2*q8Vq|D zR5So-K0z87^5raWs0ZLV4P`_ip zIpWmpI6st9kKPTYaq1v1s@>mHPr<(<&UjPs74>(X8qGdD| z_k~f$BGkahInsrKEITZNs~LDLY@Gvq3E)+-G=EC1!ywkiPzz?5(7G}kx)`+%t$H-p z_IR4OwJO+vreTgezPJAj=FpMFJs_53`EsTTSs>>d0Mp(*&m~jGKhf|{a2wK^(_R>^ zd4D>ZDm$k)*eZ~K89NadDx|Ex9ElD0i&OUUh=Jy3oqbv&9s z1WpK`6#KWgvsoat)a|e()j%h%z7A4>k8`$G?9fTx|NjhhUJ`XTSecBLQ;BpX#F-{G z6)CWZGe*24P$%}pwP^n)&W=sFLx)_>l)yNn8ftdQA|!g#?(fcWox=pod`Ey}2z5?u zEc(EOZWe|+$J3gbPCt4W;e-~u6xH1M8rPv@JHN6ctUOG7S`V6DYTnMdUE30yiXx?~ zwo8g{Z!w9Tt5v<t#X%A(!zH~u| z{g}F^J6A^ZXN}v4888)pj2x{0iKC(6m+nl!9i5?zGgEw4AV(MHG%;GFQ(c@!T_403 zIzo~Mk~I-so!tdQ?BC6~Sbl^HJEVu*oWE(B3(A>o)yjBvFudj@!)+t;pwmq0-B%r} z)VC$Sp3WqdS>4P^J$pJ&G{lXvbX07vvo})^7#lRCcm#~_j2$;>5p*SMr0pm`1ne?ZP?Y2YrioJhBXZtx5)N}Qmdp;A|O7^F4D9@$l{Q>p@ zBG^T{M}+`SF>ps3$H04n8RIkcTYumw22PjHXkpXeGpPIGV*4HWcwaFeXEWGfAAnlx z`4J6U`XGF%4>t#gfz>z`v-OPu&OTmVcd!=plf|O4E!6KM&Ep+iYF*o9LWEdTW8M;Y_Jtyc8YVCssr!tWZ%N~V5)>`S7o_0Gc)>sVp1E^OOkj*RoH)F8e*t1EclW@7K&wh;qoY+rInqa$pvrK%r{0Gm9(p3U9%*W% ztDR)n?Q{i+9k}FbGOar1d?XOvcnfw{6w=NQonWVN;=klffe#@MxHmoN{136Kf7-(A z5p1HAr*nd(fv23;wT}+~Ph50Lf^dp&71Z?;XRDA!tT9alsO=DYduR|eZz!bcpEzN( zxlyT}h65mz`4$s?;u>)8yS_+X>u}`3+ z6jzM6Q6O82%Pjs3Dd-eeoCxz_M^apEMJ4Paq_`gZhmh>u&aMeGxQlBHTC}^%2eEMf z(^4~>vI=@^G!zXpY+LVdd*3hOP>ll@#5j6Axew;yC5}LcTVRWy1Wc(B?pRKO&QapDLpE7rO*#!p#HLL zj4PDP!(0RT5-RRJxx<<`Y%qoy3qZH7LZXU;t_Ue=xNC7!F%?^Q_iJsW&t|&{)$mHx zX1=SbaGdhyyV7B0uynp_Lr6bXEkF761+owI^7&n$4hviz+eWdVBk(n7W1H`84MOX# zQGA$4hp>@1rkR|`msT%u#R@lQA0DvgD_vXQ()!SY6|R+3bQiQxdVo8WdOhh1r|M!? zqfUQ}QL}Sa#!}SjA)(Z5Y_9;?`D{zb>CA$I;L7cT(YQNnylCzXx)S(Q2QTV9;i6)UYy^Gd{($#le5y4Nhmi)x)Egx^S2Lj52Pz(kS$xifF~{>AFt<5mt!4f_Rv)_T4$*WFr7y0#Ueg4k+OQrx$zD8lGEBt|bB>q@zr-%<|J`HB zR0-~$K|n<*xiE> zCsT{vF_GM2NEVu&XJ3@}%o6Gjcv$vL_w5Qnp%)iL^U+LDeLLJrggz}ehqAa^ zhU0}-0LD0IqvY;Nm0R7#)OuoxURpKN4N|>qq`Ns?oC~8?RT4_}Cr|*d5+oqK+k5=s zWWYU&4li?SutpIt`8hXG_~Skb@DGcW!sfWQcq!X=?kIt08zO3$UX6Y=-@ufR1*E%+ z-81yh)Yn4;>I3y~k~#htU;5=pmN(VRE{vg8OWk_Ocd0uPCUZV0jHD6yo|W{h3D*`+{=;j*teGNOA>aE-`t5SSVv1YA%NXWOWPm(|v zTzp)YcDyc~amjMfhq7+CP13`)ZZK+j&o^)Hd7AdEbL&<=?}0<5OX!?8=c7w_V7K+| zCJkqKqb?!+GU)DAu6OU((xGLZcG63m-OyxxfO7SDw0lYj*umeSW45>_gm8S+4I{Ou zzE)nRdKF zYkht8vF5Xz>F?;qP29dcd)nI67upc3>D9Xyi|C(?5*heF}P^+TADQ94kE;J@vSJ&C&+* zN5cGx5h-#c)Eb}2_axHFZ`|$bN^Lwlc1{iVm%P4p2WgcZpjO3~wCT3{PxXG3pr`Eq zErMl($;Cgr!8zz$>?)+P*=}FT_}ZD-SE);F)SvhQuOv8+R%25=UMp6=o2ZqygbG_ zT9D7BzrB&^KlIVB6uTC@&qyCn!znY+$D{P(iaAX70SkMYAl#Q{?kft43i3>7{tjzL zAqf6I*$m0T%MbM}`wZueAkT%m#q(i1SYJLK>WN_}4W2hbJ&jI*^5iZ02IDqA)DuGA zj%qY{JBE42dgJ8Ixl(f#(t&8t^19|!#v!_WEv#wD%iwXRFvsM3T6)ah>Px5+Hjmq; zU>ere)33!UR>j`+qtF)EXe%J{x_hs|Y~t96`n?XMSklh(Ox^ITZI7<|J=K#*rB(G- zetxBzRF8%>xA!DqCNPXlH9Oov(xdjCJ78fi{UK8F&+ym=iYQpQ*pp;VJ`9Q~fRF`HJwxyWt&)q*qpX9TShkz_(SbL@{H5aqJYn#5(y)9TZ7#yGBx;?e4u988;Kn_m zp~F)>YT7j#UAcC!r+FRr+L;w8T^{V2;KiJn&C4uoL(@ijs)YUWQKx8>r?dX`$8~y+ zcZXaj$#=A;ZT&QvifMwJ^;DeiNoj{?f+{8wSX&l*aYfyyw{_fHEc>SUHi8vm3h z8!HZ`pO{g^t8+XiLGw8qgyD5JY#4-`QVfFQaf2HUf^@sov*3Ta9!^c?dtUv|ZIWr$ zOJf&!oLXgC7f=q%JTao?3@gssfJZB?M044`!54^1-mdF9c>7Av20l^yNGkNDWh9!2e-AxME>1oeL zmAAX;?z@>(`8LasicfOB%$IL_Kv)Ov_0;d>kCE7g5mgdZm(;v2-IF{&tCXG6WjRO6 z|MJ@;%6Q*Xq&vx)fXWo0ITGgUBZH#IZu2aWDnIa)cR52v6EBVtKreV= zggiQb+SA*r2f;0PIJF?3$GmVyg?-OkVCp6cA(;o^j)D;q_^*J9F0AqL+b%(bMM-Av z1Coe%(@Vu4d8(C^Hn1>&o;dI6*=QomUVV<7_Z%VzXhHgBk;g#GE_gDqoN;a4j;g+z z7))8S;3cNa4|i~p7d>VEOum8(^If~)nJH*~L;3n#j#@=AnI?bj8JT#MRV^2r89V+k zGc=kD^|jQn9ZzJngz;%f_{KB%A5`m4=f4A$I@MM36(sY>@8s~|I{2+QzEzj=NYCQ{_@p0rl{ zeij{vV1?Yx-dvo4)yZL7jm#vvU)^Ex}q<$wt%WhE%ftKc7|{YcDnPB1;nYuuA9%wi^rs2 z3koi)u$#z^!%c&j|AGG;LR%h=Bz2?5StVJTyBcY5ZXq;bAl=luPaE22DV(Qa#IL@v z!OqgpTA0I`Cw#W3+9;&0*1|GQBtZq~WoX}w%=bjmugeNYQU5%>o@!e;^vIHvE@*Q7 z_z)xYC_@?QPqwXj-jdy3sKfqUXU=MApTb`>r&!r-WdiE|G4>{KQC08%_`P=)U>IQ7 zWD#XRR8&+{RNQexOjO*Mg_!{q6%`eg)N%pK%*+%^J!TYGnpT!r*0tQQ#ZN9Jnw6E7 zmX)ccrIw$v{J)=b&*;FX@9*_Luh-1`KF`^ov+rx{x#@u~Q6yUWRHXR$+`fZ*!x2ZYq+#N=0t(VC5_G*Ws+*f5}mU}J1`m$VH8&sSd z!1_++c^kF)r`j86wZ*wk16Cun(_m_k8M$L*<1ZA*Nm?Mc%*>tD3`_br1B-g-Q~JOG zIm2N3pbE*U1zX)$nv1L1XUxfMaGAy3vgOADrl4#!8IW>(s~bt8;fuu&NI2aO?bqfh940NDE$4X#^nOU za`j`9`p%ZzPvkb)s5f)x;7SsHYb#M%cn+sz;_Sw^xZZ8w@0FKJ+j89jN~ccLIl{;- zKCvyUc|A8n_=-JucmT#$q87h_$m_{zws4aTiF(&5?XYqSn;rM?tGNdZN|&yD6sWe{ zhcXO-VQ1Ix%vG054?@g3m#eB72Xh}cvcLA`c2NKOpWL>>%pa`j(OkM+_WVj0UW6H! zg9ZKm_eH4YW4WD-`p!MldH=0Fn{hICDvKL^Ul9A~jd4L(n4th(Vdp-{?V~OBV4!JY zHD;TEE&epO!NW=o!c4ELZBR=;%bjObQoCydSC8pZTb6M)cMw)u`Iv9Hq}H6x?R;+t zd(Y(nmUAxG7*8V6E`u3!_l9(zboF|vBIbSlXhT2mjGg^4ceVTk_rq9037f=bEbH5u z6}Wzh#m%jk;@FLgx$ifOPXKFnIoINwX}pf}r`y!x%elw>8@X+jYN+v^4dxg&sFc3ZIr8c%R(Ng@Ze|Ok%6lnSi49B%zO*;5N|}Bb|FyxYR>vPa%mo6ND2R`1#RP9I|GFVQu%}*T| zYb!F)4Z84?XU~Bw#%gPg%`E&@WXpT~3=IBHVINv;`~7%+!9@R^e)koyds+3ri8k-V zh&NSLtW3A}!;SD<_|G)V^T?GYYFRs57cEwpfB%1HzxwvJ4sfeSH!YMMy4q%o{HIi4 zUZblGnSw8s-VIWGY2h4tU6Tt9pZ_B;Z^g@ZfZ`x3CdEtg?w93i!5|w$D}Jw0OJyU5+u}u{sFlNQt^MTG^`j5A zQO}RHty5YD43iR~GqVzD-(>&a@66I=j=Xj!b>L5m9B-8p-UIq$-0oy7aFA zxedEEz}|lSysw%w%extvq3t=^$Z|S_2ea+bBO=(;JXIjw%#jihTE9Uti-8O zSgtBgv>3Xff9v5p*w#OW1N^lW*Rc~1mJDmL^)rxfOj$o0o>a5Y*|yd!qq#>>NnSx6hT|Ay$_FT$HtUe)(<*LgrZKIYfCY(Z3}Ex-wK&6$#ML_ zx{n#xj@?>-zR&6fwitH*bJ)_-VUZ0tmunBl)-1BID7h2AxQ+!6x!RYd9K-1@Uge!# zXG@fo>=JK#t<`T8dV2~>-EGse$5nI?pYiZ{@X#H$_gK!IvD@C-Xq#Y=yJ&N9PgdKC zjW1Jd+uSS2ET+a5&mGArF| zH?WG=Y;(oc=XdK)#OSb5*Et>cIMSp~z+1M$E-!i$jwWJ#l~N8$9?1JvNN<#Ug*N5< zO9a`~Pouo|lk{GmY4)MjP}Pl@TaZ1ZQfM878~((O&`{2SxCvD&#=D3tVo9Dmy? z;|lFf{o1`2JD|gHB#ysw)sU%Ir+jXkEVGZku*Lc2Wp6Oo?Xx@$?T zj`$A6;a-r{iXUuW8nH&wMau~*entm#EuXkz2fwpTRVV*~CYHV1X&4TO?;qeZqog9~ z=g4ZxZ^+4aC;j&Qfm$r{7z$Fn***!oRc#+KQw9zrg^WxN1IVWUjO+b@tU`7 zE$Ah_*ZI(iVd!L0vu@kEqlepFg_uv@8+D;n*+kC9vt7Gb&1bpG)pVnMm_g|#x=uR- z?IVpOU~@~KT#V4*nY()-c_G*y_J4|wzh_OQR86(m_ZnoJw#UFgH8!y~_02X9MB5wA zwa^O-`W!UjtP^Hl@5W87kGB6}#EKunZKFc!4%=o{8~f)r^;!%2Vj6*x4(L=y?uZISCfdT z#h3Da>BnlG8e(Dh{g^Ehs%x74%~*t@_fB}3t29cElQ62j#Iv6R*Z);~GlIgojcbRJQsTwPSzN>WE3Y**C?xqJPKJ9N$ zQm{VzSATnV`ES-`fW2jS3RUty^EyPUms=QCw?2*hq%7A@-ExA z{O5LR&NO?LY_M$$EDHX{*S=hLrzUrLo8kBetj*oWYfS#?c?J-NX~BGy0MaT}*^ z?Fmd@IkpW8sT^yvNZBPAX7Qbn{8?g_wA?-tq2y1Uu3c_t5lUC>0Gn!m*1lFT(IkeM z4!e)kmYhvB_K?|N=I)!cWGYYG)s^^Uze zZD0EoG$!N!e8=8WIUuuyJ@yi1zM`()W5*`4_ujRKvDIDs(h58Gd-DlAdlepB15aEtFqYd?Hj=S}T22+L3SvF3u}U;kHiD5FYq`eax0w5DtP0LDgb;ke z#hIaT_@0y31Ej7Xxj3o}TS?~$ZYW(dWF@e3jurv~_o7n(+m!6=#4Py>yRwRkb$-k; zaBu*tt-;ZtKYzC4P5TI=1M_Qt*xOJ&f|=LR^9S6I2idauJ8a`hiwc?T5BoWm>W|aP zUH@x8^KY$+R&isWElwz}UJ}PD#)V_Ru&q3q)h5j}vJTaj0QIXs?d2`8PM5Bo%6!b~ zz+*f$2sNdov_N9EL`N5;64&x4I(|{`PU}aJtn>|sp~=AF!WlCrmJBa!_y8cU-JWaZ zplzo7xv4Aorblq=9vRy~&Ft*xso>!5k~Bv_%no=UmxjoO!;~nw_@FJCa@!ELbHLzu zW?{MgRcBYn8HIJ};ppZYL9GUv)5Aga7;TVX1zRr}*<0TY30FVu;rI>vV!CS`!SlJW|9yIO;SfibADb%w6CW`ILlEt<6tpC5C>reonEXaA?`OrZYey;~);F=? zmZt8R{w%faQ5-h&CG~9CNXNCv>=GpQ*eTN|`YvcR3YLML9py+sh-g+swT^a}Ljnuo zp*ae5!2>euUg#KYo=Fm&r^Ct^p2u2O=;#o?l{nL|J;92%3SGq-46#`#i`JrnM0=p z(loVsIbt#er)i&dWGVx2Me#;QqLL@8lQ%k^{+}xS1}oc&`TnNQITG|}U}mu9hiAmF z%2AHt?2Bg{X11f+ac}E34%7Pu`?0Ib7l&5YboP_6J-5cO*nShzkzw~h=V3(`BH7gi&k7u^=K7_@t@V2Rm)Mw zm0;6HaM~P-zwfoSHug(Lni8w9oG%@j5r0z78qMRLK|!d}ACc9UzjWYgf!q*@3iiqE%~ zb53u~k97nd&MDS7w3aFlUvxbSOZc8X_uL$ znG=tS?H*=g9bY!$MfR6*?QYzqVGTApi3;Le2WLB$66?hCp=wU7^R!u8jG-moKd@E2 zwR1hawtKX-vmai2#pPknG`yL>1|&N(BlyaC5%1fI8sSkztx9&j@GonE86BM8vcwg` z;#jX#=Kv9ZwIGxRWje z=G7r4iKm&_m?6&g%VmSHu(QR^BuipqnJH0!OCR^`Ll#VN z>RITYqr&ga?Xrw1&Js+&?Og0EXDL&iZNi%LHN>VFVsvFz9H}#RFvtn);FEZyj!*yA zPjxnl&c=DUf1M-uPWgJnh#CENI~rNaFHvh5=6xg7b0yBPI$Q(20~35NL`1N2y=h*} zXp3g&e!hSk%CfHev*lP?WT}0iag8)me}P7+GFs2#{A{=%g)|DXY#4C#!8B+=ONP^| zq)|^AwON?CsvmgBpIw1&b#2Q~9B*rCASGG_q=Q^c~UZmH5+bmM`Jn395GyTlPG-=Oeq+91q^clrs?$RuBj^C^Z_4Ybvu&EXGmCX~- zV06aMS7GZ5Bo~19gLFe=HMPdMy+PHZYFl!C-GWSxdzg~hm#;Wu*lSyzbiR{cbaHL% zQQXeH&3PqaTqNA)o6=jr%?ux3l!fHUIBleI4jO1#E)WdX8TE9nt=vHyWs32`_~KiIlC*X6}EAo^V0}^9OqRU6G&^xP*qU6qCULexvpW?iND6%>9BJV`}I|H zLtZ)JT!`?}wgNTlsI#)EA2nU(S8<58ybq3G?*GNW{`kR})|1}4knP$fG@=Duh)Btq z+Q>G7d#SV}Q{83W#Av3JUTorz&UB?lX4OABTgq?4;e7n|D6i&{xmD9B)$gKn zeghFR9@z4qoj5!G=TKZ&aCmqVHu|bFoGrKtr#h>ft~%pmP+ zKwj(NF%+z^+ITG$y66zlQ3<)f#?k_BpgRZTE*eVPJ zdcO9+!kFO_ULMTb=38}Zl2K~$K*UH(-YE8LXkOp2fv_}o_K1lSi{^}(ID77t2@}~* zp?U3n%2EqdWd%CiE?@Uy1}doY;dIaZ0c^$$%bOI_l#Yd)yC9r2jI6}Zs}z-8ZI{;) zw<$%Yv+lGVT?wOvyVfA7xY8=fy?xk^HapDvFh2dW61=Y-9U8cZVQi>~5m7 zG^Ge{iPl-#z-4(QINy-gY<$r6Gvz^OZB|=$$lDVbGJ4{inI&`S9q>sdQzn$L_7z?9!0b5?_49Wq>2vgO?5r? z5Jj_!z9DEH=AgN<)(;I-bJLWWm@E|<*RmwDlnJV(u#JMO`d-#A)>qq!C zC(i50Q-_#ZkvFtsC{Gx^ zNqulhUYK0|2;5gbrH6BR!)4_-eQl$!_mo&2e@a%_M_-?jxwZ5~FHtBf>FWyd%E?Ao z`nsRK=&?0rI(^ZBD`g^m(c`H~5PcmWyE1*vC*D^1Lz3 ze?=aiN?kGq{e#EyT2}Y^-699G?9_0)VHOu|WCf4qy+mXT+y4-TGpm;8#W438{AE9$ z*I+QOWu|)t2TRSC>iVJ(wCeTG7MWS;vW|Xg;L5xYQsbK7UJCO(1n(&XY(5E7C|k+=2^{$e{-v%LVJ85Bk445mx#%-CTtjDexkfaum+`5*! z@8Y#3vS06`CqDgAI)E2XUAN^5wkgGxB7e+2PI0xQb9gsXT*D(Tk!W{m?X{Lh##Dvb z+Pji6{~@h*Ipz`Xhcyci4z_o7 zq#F#{yOQO27Tdu!N7*8?)g4^zl(~w!w}Wenjy-3?-thwu9rI_4y0}tUEzT6G6Fa;7 zFElQ!!z3%44n)?tqlg<1HBDF zqYP#{Ti46gA6KV+-plp9tfLC;a39xF_S-O57%O-KU5W|)TrGXm{%*~Tbaz)*yls@@ z*tPT6tz2+4-@N{dykwU1MP8h`Ji~a91!)S`Zss<1M6a4? zAmw1fB0|)Bv(i% zycvaFnTJs{A^7|jBGAc1yCnAO(eMuHOL?xNhJc)ITD35Q$%~IhVM8IV_@_M!tftU~ zYk8pS&pMsT#O2F{uJnLe16E-G*Et3aZVLYj$GnBx z8NWGbL2cJ^lB>1Bj6T%{&FyR5AF#-!?0#Zz20N8)I_Ja%MN5AQ!7b4rfQ`#I`=7&B zjWe;c=u)M~$uM~iCg*G0Ix=R(<7V>7xKQ9?ze0R}TPpX%G< z0?v9EG$dirY^^?#P1j%Eoa_oQ3?hbRDz4aNF%;dSEtkjZ*@ofKX2Vi2?`NSSqa)b9 z;n5+=wO(v-v8$EgzYtsjE~=l5h3R6r?ueD7TkOP&YZ0u??z#}e2FxB@WQAWL70pxN z_$Vw*Wog%-RHmJ_1Xc7y5K*#8_I;VG%Wi6T8okN!Y}OQ43qxIhTxZ4PGqAlKww1q< z*#0Rlx}2>4JUlObn_S$GOmYjI>S}@Ko4ZbRwN^fC$1jNvxQ(fsRAd>vBchbX8&c9F zDUrX!U?>=b1I^VZmiR#iKTmZXF_gl4JxiF1x0X&!bFJVDxP92iC9XjB+6-5C5Z^=C zu3e`zYmW|?HMtu14?8%+MF)oB|GT|CTQ~@_f7dp4)T`+;UE%(?f`wma@W4D*M}0Zf zU;2e8MoD_y>;=NB@Wui*?Jt&tiJ?FD8RCE4&gn2H`^km68)3`?oy znIpFz12d$`@WV;>K`$$k6!a$`UVV9?3(ve6$-k4bhaFnv zYL7jQHx{{CmH&*|Sji5WO|}&MB7|@ooZ}yKZ%mWsu%vr0LKj63Eb3eO#pJoj8$5-$Sgo0v8DiuGuDiE#(f~`Ki*cIge zzbSQxJsjW;wJaVub9T{`nOOse4#Lv;#Mx}r23M{+cDZYuj{UaWg?Wf&F1)Vrm@7iv z_c-zr8e?pIozYV1h84eVqf*$S*Ih5fQ7=>90zPgMVc-G5pR!TMdcWaHRE{aA>RkgA zOhImb!!=yFs<2Vp54T};O+IeR3XD_D>zAC4R44CpMd<%GtpBhDyImL9)OTEE-X2y* zR`=6q$*kh$*AXmd=htDXXOGLzVxo?c`6vQm<8!wWF>~^TRNLD>q_w#u8cWcFfhb;raLzFS&2B z2kTuu+0=Sh5PP}a)q^=syF%F26D~R&LOZh8?;LGZUq0#jGT!tfl9+eC4zpFiL9RvY z_1|3A6x_SD`MN6`dFR*bt~hxV3%=oMIha3zY}B6KM6pKjbPV?8GW5U#9wNqj1|AzK zMz|h)4rzX`UC6$Rvw|K{*!&x=;j&&mbi=h$Msq#pcUQcOIk!1~xLPJ}CmZ9mQL9Ds z;ZtHgCr9XXUsKE}JL+)C{0~>NKsxcPqa3K)pkDmLburYCpFecW0JbQ`9m8}c_c3;^ z<9!D9X@DC;sy299c=S8QHq2yp|I4-!o}f#%&S<6Po89gpxs$pt#(gpjSefG971Zx@ zgoX=>u8Z_l%Kf0^TApUqi-u5mIe&(8v@)%Gkv-hg-J<0w*p;Vo5ebb|WW&vkS~bi2 z)T2G!*!dn+b`|g4<|j7AWS)B@i+KezqK-c9p}rjy##1|@)37j>(%0Rd{jwL2FBbN5 zxAbOD%tB%0yw0)*li>@3Acb|I+URoqfsVKaJH!2CNZ=Ou%P)`lRAyU7x?Qx&rOR=r z;UZSGM~=I=;W`kX*w{42oyC^ygD^wJxqa4r)a-HYim*6}l$oX}Xc$C!!K;){aO2rz zcTeR#?ENZsC*dxup~dbVxUoWATI?Pm4=3SbMHvUpQea2EA723yWq`5T^P`i9TV*OC zFliUKoZ+m%=gH=$y#K$MbIdjtKGj_uwg{ANH7YFs?_fk(s*A5498eDRm(K@8h^HHj@$9Sa<-JYXNQ#*mJFnox0&>ei{ zSi#)0$NgZ$aFS^b&#sj9F*ZZfJ9Mu*u|3~2kjQm-1yyBuhJ;In(~u0K3bhr6-o#sN zWJ?Z>u(H~oE7Mrcp5Fe|edmYDL43RK`ZC-Wnv;%I+=@APxVv;Z_Wf31!`%8KxInaW z+jR7n5~8uX`~Sz7UR|@#{g+%_cNvfAqN1Diz_lCIhnI!mscr9;Tc^4!YMs z4^2l$wf>+R&pRKcNK^L`J8S8(h0({|FDjD4{ygq(sT{&alX`b%E54*Ni$}MN3nCzx zz>VB_lVmg$A79Gq6ZLL)gS6Gk=g+6yBUs3gp*VJ~7JTNmg!kJ)o>Kd`54Op3uTuD( zvfpr@NRFsXxa8}7M6KV%cKqaSp`4W2sh`}dhhC=;jN-E)T3VRep~UdCFvY+Po))I_ zlor%(o3_&z6$oyH*PkYGURP}mP~?_aoA?K>n}-d;`|C}I7+Cwt3KOfn=nP<%k2d;M zkFB7xvS@rA?g81HZDbYY%Ps2U%kEDUHsTleOAShmPZIcFbq}vTdDb62y3yC%!;l6e z9Cnr zSKI154>gz-t3K~E$-lEh0iIBHCBSoEbbfx(lsSdtOD5(|nLSI&DJ&T~ZwhVxudXe% z;8xkbfu5x5T^^HciI_bpzii%=>G@@abEf5&&7LxOGI}|S13k%i%cA;Wpl3xmduVxX z+v?JVAsDi(jQ31646RSaK7haCJ*``{fBmDMl+Jz$h8BiDb=N-nNgsX(H&iC2(maCx z^5DofZWeYlu45ytp3ZU@TVnM@p`bl&^~9Tu!}N)<1s5?5pw?ME(Xy#4q+%|EB=TA4 zW#s$c6Fgn}3?!*t=knzBZhH16h{D_o9S@o%IlQxATmRTM^=`Uhtz zqfNnaxH&PO6*Q}^>8g{X)$BH&v9f$x-PG3eh8#db3X}ZsMpOS@4z#|J)BV+@DV}sW zfwmTyFuboK#L(w7kY1HILx^G5IrVIN&!ad2e)*Y5_JO+C$|e@fOl41hbzf63YHi5}ioqS@DXh9;^hsUGxjOCRp5NAB7AXGS=)birl27cwwu zUiaD{i=hA&7jDy@z5@>?bioBR2_BbOQ~p^sNkNWYf!ErB@9Q2dAk zC$wkd1;L!d*Y)e~b4RRCgI+}l-iN69VDNFXlR-PvJgwyv?dITX#42HOS5IrhMY!~#cF-ZCE7-%>D6mc1z2Xpu<+2v5X>EH0$-lTcJ7M8QwcC?xCQ~$XvZAR{27I&qnpRy@HvJyW3(q1 zQoA8!*S^_^6B^w-Nrtw5k`$ud!dU?wxd&U*4FRA%W@p66oY)8q*et#15boyf4tw+n z!GE*`&vdq=yJx5_EfqJ~$N!QX_6yPz!=W?|$KC^r$if3wu|pW!2hr((mhR01B#avTXyL($07w{f|{rwrh7`w z?0sW|g^eEU`I5cXHngW&l=y=>@h2tVOKL`;v{px1hC(NwQKF`TEtf0L z!wI>)67mWvJ)NQ_Z?hD`bOcKmbQQMbF@~Fvs)85F(JRCRjKA)Wfj@~6(YA8{F5maVMuxiKe;L$-^QV^Y^C_; z;HRrK!~}%Go!%fQl)Bx9CX(ONkfE;H;GY1Ykl|bTKfGg|oWV z2IC&EWu-HTXo11_0b+*3L6mW(8H{0+mqWKB(RD6ENNPEEWX{3JxLYi$VGkDNqGlXVmXz+GMo7B}1< zhC{;2DS}NAEMYnY+9)M^D13MH#<$5aa)qqPRg2+@@l6DIDoD!Cx(GvXz&0=_4A7Kx z;f7WLWMZ+G5p4*TOi!XJ(EY48)`6&>QXe#) zWGn~1Lz&Xh|VUJmGux4`n@hXzrdv`lZD1M{S= z;U`zMph8cnJ%Hzb67P1bDk*6c?NYsQ0c^>pD#%1PT5lXjNR}z1VEC9$AseJOj;F8? zKZ)~0x>A_hAug1EptA6jt3oF5qO3PAgEdl4{E%5L0Cd;Ob;e(iGi3jhNEF>3oiPe+ zI(O6z$;ee_V43I3cVQfbOVVA^#qu(94uqK)pX;Kfz&9wrZ_^pGD86#w9@GfBwL0T1 z3X*I|AhEC38TuhhlA@GC9hWUjlO)|zZQTaOnxSUWmFt2>K@6nGKZNuHitmHEkV>Ad z$APJvtur!sE(Z=I*^Sp3A0b)D{vVP6N9c@Bst3pkO$L?hADgF1Iqe z8MkupwY&~CU6)_3!$arqQly|X<00)Rz!#K&R8fT%K})U*Jwo!UQUcmR{G_hnC*vrH zNDRvUJTdkuO{CDbDL_soAWYN-*SO)$Uc(t)!{w8eCOj=)_i`RrVx`cQpmYP2fR#W} zTK+iUwcZLW%22xDB5>bgzQsQ8h202-7 z6G5$FEIZ)z#Ft+tYcphHJwi^(il1EdD6H{fMuA59O1e47a)H4Vy~(oiabzDwHqjlf zI;U*>FXaFj677RQrSJ}sjhjdc#P5wC3Ntyn4o*rra{mY^JdMhHJ4gwVCsl@@ zT-6a?H=(~IkQ?yRb(fQxfsUk}0Li-+Kf_J-T%ISU)kp+EF_ZBr@I3T$IIoM7jb|ZH zQYHAwRVq81=V^(veL9yXJ$ejPOt=lC3oMXI!B4KbX<}nsNSp!)Ocy8zU4gEw^rL)d zlnvJ)Em;{uc|(?s-(aax4vM3^aNGDfoRg#7WbmAviy+EUa0(*(0>VTJH58nWA=Zyt zh7=7MNhFqf798OtT%J{g2JReT}eP&!l z;R>P|aouLw1CvtByZ9djnKIC-@5|oy4UmyoUsegbEEwod@r1G_L-8F6iG*}YDv8fN_tX)MKPz`M~XaxsZg*e zcajn;9axloNs%uwbrU{O{w5_@lpUz@B8AU#7;8nLr+SYRg$=p5CrGLpNfqHIR~14a zyhBO`>8HCUM+T6&-XM~Rf!b7xq1u9S8b~peH>o`&)fPXw>N9eT*s#v)JZdtfmXzzM#U=$4Fxav?Sk$DG5|O7akynv@ zxvD(rG6YNA2vTYIq4x~RNNjS*iXZhfq~vX|Of5L6vG_qGFc?7WWRR4>sF9aqs82)v z6jD9$ldD#cLGruuUE-M_De%$SufH$m1lMquHI*=lX$yGHL zq`#5)B$Q(OXm}yT(BOwgIHWYc50jI`rW$}ENrNCM<{?<65eKPM{N$?N$RM#PzFdG9 zlt{_+nlcSkNDabIu4;;MZ!GH#J~>%|9}Q-tmNaUkkr^p`!ek6JmeeAWBFV{BD`C0y zqwLG^p3K%Xo}m_+6#0O9cr|2B-Ck1j@xvnbYIVp2&k;p7u;b|qnzCyJ&GoF)B+opo zwucU0h3Tek)3KAi3~z^376oJS$nO*EP>-&{G5N$3{%UrK=bX%PoU@_*66XDPTzJBt zU47#Vf9y-}oME^=0Lue4@95PVQ#|SV|I?t~a!5oc-DaI;{?m%(yl;)bD-MOYgY4G$ zK=#akP9$S~@7PRF8LR2Npc`BL^7LR9vN6_=o%uYxJ&~cIvLRSk)WK><)Wun`cW81M z8#U;YChDD14_+(QZJ&;Z5ylq<;;g^N8nCt8s@EAJbZ6O5<(?G*`^$UlWka~`yt<&m zW6~QEplMN8E%m%(U~eBXVr_VZ=L5xm!t|p2Ib}0T*{1&(!_^5-cytCcV0CVlr$%nL zP_1J7gHdKFRh~d*j?52L9nX0%D;{4k$;#Yccw*Vlk$&A-Mp%9eZ&qasb-?U&LCC__*B9Y&cIkDea~m3 z=(~=r)HP{lVYkb0Id1NO7Gd1QI5z!2i)s9`mVI=fMLSkg=g}*0^PdAPVp-hTSA(N= zNvO!zhJ@ll9*=A{El!xB-ZTR7EM|0yPk@GX(9yK z)uXm6a#T=-pizP)naMA%3g_NR%v1bZ6f1afRTz8iJw*E37gt%?*Y6>_S>E?_kiV^- z{2DF*qDw_5;6o^(SwsvA@wk4P0L`qV-4(p7?{CNNA|CjCcLJ|MZ7<3b;m z2kbAGLeW7W`&1bv;!V*`qGtz^n@?|~Z`bIyyfYmpt(2Z>WPu)9AP1>RPLx(jC)mzc zmV~pc(=VHG3Z+x87s6?7f;Xdym{{$L`jTj>-@>p-+#%>)oZcZVp!yVwqLCmSl0Fyu zIiSOEB>cM2Co?32K%_mnN9MyYy+V@*M7QGfdMPi2`W_%sIAepfOc0H$Ub#_!=xH1mwXk9KBqLIpK3%uZRyz1fv;eI94y5zOnP2wiyT7q zLQZd%`m;~JcsV|FDPF);i_e*VQ>;tn}^y{QtL2K#ru2e4QOzvL!`_ikTI~oB-sPviio}j5|43!Q` z7aGtXOP3qa$E2GL=p)jd2J}fOm>h=E+^d(Q{$s_}gdHZ7s_u_H`DWJc0W4yrPRBJ` z9gi7Xshnrf$N1y37ZF`nNL=l>>>i7dy~0x ze2m41atm*!68?#Y?Fer}lMEo_RH#kxAe#^#{y>-~V(bkt_}m=ML{J_uxn-0D1PlRc zOnW5~4gJxkd=WEv(3UI$dB|XqiwZHOG$qMU^-D-GHWkUd*KLBNc)-A?fSa<}pBFr> z%aM{^f8vNe`JQziP8@~e;X?el;9%VfbIrl`+9N>{?KQ`P2bx+1(^QdDO6~=Z2N(L} ze!235$eS=of}n8ofWSaEqJbGeWsO$Ll1DtA(?r(5h<*^6n<4}~L8Raek(G*td)}-H ze>w|yA-{5L?G!QVrp3&3zZSCQ^R&!QG*96NMV9F*%q{*i7>EOq^t;#vQ*^hM?_59iL3;3JOD7)mppz{ z)=E9hQ;I7v&y!}E2uOELLd`*&;6LAsPHAX*ObY;27nFsldf*m)Ebuf1okr%p9>Sqq zq9KVQpz^THhe6~q&m%C;lXj&@5+KzM6o7JG+*gazRw?r(3CaUY$-y-;+I%4B4TQ+U zFB8I}w*(#`MCm^*@CM-%h%u^t#fTUa{)2js5N!d~zf=$M>M08H=ORN|jwTJP%aj1` zR+tDm&-HMSXUcW5RD@K!prc2@5?%oi=od;x#wQm@_;@k0*XAsBlfJ!r>sq& z7nA+*GCxCSDn~uEmKbei^cH|9Cbd8kl{bxed4|W`NFSI%hyaWwbjWqP|2#bBIR0;H2_zs*(AY6w`1m*HVoeiHf@p|tCE*rP8es25qLKSwC-jyI#PCC+A-QuvO3I6b2%wqxkR;C|kYpk+ z|J_9ZP<3(<&kz*}M0B69U?)WJ^9Z^`;6g%3a0MY+?MlMUB7l$>mk>PJ4!-h}HtRu2 z(VWb|zj7`rc$i8Ic*sSD5b`vJhe#vtK>^_)kwoyIlxTRsMGkws6d@qd;5UbU80o_! z9#eRfOf>xIK)6l#vrMM=BV?^Khm-`Z7%7R!n#8}!;s1&LWDez-M5{cb)fdVnt>#k# z1V2bd?-BYynvW!;1rQ|=KF5xrF4V}yR%YOzudjVhtBi4c=MJgvarCHQX>V&HO2U_D`=EPW~TzZLic z;c-d&RnY$xhdxQ|{e%0E6*h=Ht();P{Y0WD`k2tk9frK5Ao*)yRMRW2<1iD)3E#dj!5K@R-080#6J4R^ShW z$nw7m`j$XN(LD4M7$Pu+YAXsc-3O;Uk5)-&bQH*sJVKv#<&(L=0%@lU(eyR}p-W%^ zVYMVp6EyA4Cw)2ssyvIG6@p$Na8)^doX24bfjfkTDsaERLjsQwK8>S00xt{xb%B2h zR4^q;9{UkKj7dy^%?Xir+6lV62YtX`e}RJukwtR^Z5QYwyedhP1wB*X{Q?&Wd|2S) z0@nz9S|FXMQIJDxH7u9*3ynhpj}ZQh7z(^B_}2ygL3jz32x=a}XhKB5Dv*vCDNK?& z3c9<%-h>sBG*aLgLMs0Sf-y^AIUyW;RNzX&byyh?bhW^j1nv~LTVS2Q{|G!T@D$-Z zthfl8*7tb%zd|4Pj}aYvp@W)Xf{qoKAh3$RJ8){2)-ZMW3nGe*dKiXfhmHYCa{-= z<jd(BqzAE{O*HVLz$=7s_;+FMAAx#w&&a-6V3@#IS~@2Ut6;Pi*j`|o zz7j#=f_}58bdAj)MCvYHP0`|QMoFMp91BDCgtkB+J;+TSZy;4h7aFiq+7WfsAxBuS|!-mynLKysw(1Drz z5RIn0WED3CkAjXSEQH7fb|ge*>m&606HdYg2Z56We=6Zr1XSQ^TD~Cq7`AD5)P0zVe~lZ2~qHC$WzJ8JRGQ5bjwC5#Xe9`glf? zx(G&h!X4hXkK;UVhiOR+qVw_~1 z{SclnBBL8Zkk&_W1FL9qEJ>>gUqrwNw;{I^zKq>^$R9K__zd9= zNjgu6!r3nj_$DeYLKXJIsHgBYL_`b}%gcl)mJfyl4@!KW02RY25ugu&COnL)F%ozT z=LHClqm&b#L`y}8ikzNoq6%nx6W|w;v?2<477`{rFG&+HpH0Q-jcBAlm7}pSz)Ki< z5dMsvg|Wb^@PP1FZGv41*5<)!GB=6pe$dH;$Vh2|PA5cq4-#}1A(C~hpzVZ6rXoQX z!+&0^DgGH`Gq(VdWog#JoG6ywc; z-bUC}v>m}{NqFPY9aX0=z#ESqXnzHLkr3saHxBUN7SVkWBdS;^Muh#)j0&2zq*M9N z5j3C7MLkd|=rTgo2WvTvnSu@UF$8tJFtD3&C~~u)PZJJ9fCNq58LBUC2>KS`NYvFj zAOggDG@~S~2Ln2Z_^3xxg?<|0I58Jn4g+I}VME0s3=|PM5Mn{o2349Ds}S^3Lbs?P zVSg>r`N$(ee=}hrdOm{QOIU;m3HmhQBt!^UP9eTXjH$>edLU>$VF_9jL0buDB2Nf9 zn{XELfS^kVQE^oWnm4-lBS3=Yt?WF}YQlZqYCgalLzI6o&XGaXY*&PZYlMqX*Q2PB zK5ynKAVNW>5k8DeDQFkrBj^nXdOjg)z$!u45I%-dBj^taQ6ru)Q2D0-5Cc^sZ!ADd zM$k{9oD+ghCR`^;8G;@}$dE*WE+c#zT`ECW5~2pJ5_ApWv#5{+T}xPvOwVTu;Xyqy zo=2Jp19a;VRk0RSE?feHFQVKEI)xBb?jS*D5u)myFX)AYsDf(*y_s+aik+bA2wz9~ zpB9WWgm2=QfS_*>swiguKm?FZrcqVhThJMVsIu*Xb`hfL<`Z`?zm({MDEC5t8{vD1 zv7qY-5260QB^b0yc6QT&G`8sX@YZTwX#VUV_VD7k4y+j$!k68I&F~se^5wIGUgIr& z*-h9lDHhH3R=#`|`j`kzJ70Da7Mv~u6XMHfg^x80XB8g@>v=%uH_-dJO}-W{i!U4R zt(MHwd|vF!XMNh{M{!rG8n8#LfDhK`^E4l5Me?2~o`4ktN$3$aYWh5;X0*$XkORtI zLSX{)2lneDAIGz6wGU#CbV`0wz|y-KucqV=30MmfIT7amPRXAcR0R^91&Q2?XQO`G z*_0Jb569hs?emj@cKK-HcKhaq;p&<8`B`$nvAd46?+7A>|nc`rmTqgH@wziz6*P{@>El{3;Y26%if@Vp9){hAT?jQcFG?T z6z3&js|VZXh;7O?cYtjJC!zx9*AKQ16HDzl% z=hp-*^jc?qy1>(wAT@D4LF8Jmu6njheux~f`L6cOG&s85OTy7n)gQ$N%ZOrEc)rW4 z!Pa$!GkZa5VfmiOQy|kREUarcxMF?!dM~O`8ixW(;coAfzJiNBGdC{2CVeDhI=JIt_7Jz zVPJ+H2;mv8BWxUzS3p|1?iM1=sED=b+$1syq!!M>Jwc}3CD-+Y%Y#5_{s#2|SpqVZ zJM~B}gtiJKcM7ZpY|Yfykb1q4s=Ivni`ez4KX{Q$EJfe)3X7 z+8>}#ib5pOaeGolOb(hDh3jnuTjNS)Y*wq9s2)Fp9ROB_U|;cZbs2b67RgmB1{l7s z)>g|7vmDhU4t#E3_@;mLUP>+Zv0u{2{%&^S^Q5Sj#f_|+eXOtWT4(*Q7ls>XNL0oS zo-T{%?X?60q#|I6=P7)z#LpXMnm+Xna}MZqexXSZ+Sl$I>})u}lLppT`8d%mq@mQ7 zvo+6FNA-yT+gEA}VciOAl#MHWtPf~peJ{Mt;UVbLw~-T7J|RGFSY6NL8-?LPMtqXW zfYB6|@a8KKbZX8w<`;Zoz5yn^e#&skH`pbtu>M$7pT8Sf*S~hp&y7CT(;8W)VQh&e zxKwEQh9Ck?q{1r6zRJgm>5ZJY!Q()JW3|sW3rK@eQiEXK3MA{#;pdIOtBtH%L0j0U zLRUm@eE9~T2riTg7ixT5_-`W@QZW|9c_%y`+~Z~=Cr-hMWZ?vQj&}nw8diLzSi=fK zH$}1NW*aT-Z^MpV*xBr3XHFwKbgsDx&oF&vLd!SgV|Uz>{);|NR0=0LgGZ_}oM^#j zoeB<*e9!B;DDQS?X%`juIpB3&XcfVAZ~gWXT=7cw=SEH}gcJU3=bfGry&Ji(5H5H# zG^*jdF7$v6U$HC&oux&wD?WXrxD-x!C5xUD0&^YMp6#usn}0w8Oc+qRA}KIDP+w)y`beQ!1v*LF^o{q zF^0J7`h-SKoP!fiEe-M;Igx@Wd(!~Jj=N5*Y~)05Oz~V}3BT=(=-tSLv2bC&2*e&A z7j_C4yirVvLYC8__-iA_2SH0j@#jXaAA{=^!gUOL?uIWJBKOTBH{b+b&_xZ>Cka}< zQp$cE6}xbv&c_K)BPU8xAmTJ9oQ<5Qf)n22@~)2)YZ^JR5{5F_k{-h%(i^$33odx& z{JxJ1hlLBY$&S=1CLaum>hpoux?rF23BVy3^X8-WNLk-}bPfSX)`Z*}TK+JqBWI!f zV_=QvqsU3Z*8gg;?U}7CK{wzVS*3h+gcaUGYvVO)zUxZMxp2i-&bNJR9fM6CM%E)M zzgLX@je8D$?9~ERvnR6hTQ_^AkxOPDft z#YS4i&{kG)BcVXlbP`QP6PH&nvb2W-iG`Qd%i z8`(;u;D%@tJngjw%n}~sldEy+bT`p~UpzG3S9E>amOLh17r ze%{yDa_9b7gqeBy#ePLv@f zts)fP_&D*na3U2vQZJ1{OWsWTrhgJV{nj@!_wx*Fc;b0?{0ogjVV((b29jk>QG`iV zHwx0)6Ns=;i`93~_X?&K<`B|SZV7)85Aqw{gR&lk6q@3;5bzS%5_ecrgMA%U^S?T_ zhO={_!4|`*&*_pod3b)LE*;O8^Y@tt56^!%ZWQ96{{$9kgzc-85`|qDo}a6@6t(w= z{5Cpv?eruwPAJp0?{WRd<`0}$QgVMu;p_p0b0$iYCzj=x&YoF1adz1QY|YMsZmiEc z1(x-;{O0W1=zMyMv|quUu4=}Z{NrYNaSzYEw=;C>(hZ;dHa|){tVN`8NXGW(SJ*Sh zns#N;TY9Bbrw&tafI91?db3>4wp_o{nr+C5HnXG~cktRuPBb1?E6nfJ+*&&1;bP01 z`pl+p>x%PcY#35gP*ZH(sVm-h(US2DJ6@O{6aCiA$jsUy3B_lBk~#;^v}U#e)uQ;T zX-q#pKM8lHwi%z_LO-B5br;JSpC8-!K0vkt%r>Vw70f(8nVte^QEbipTWm5inptR%KN{M5L=(!yXg`Sxi7=P(eVDgBmtP1w{l04Jv9-Tt-nr zQ4tYAQ4vvKMrTk_-{-k?8=A~~-}nCW)i0H&&pG#=yDwFB@41=V?Wyz}dz9Q8r%2I+ zP_cPb22Tj}HCM}{6GGSEDf#q-Pyrx$VyL&dM{b-Lx*diyKb{!6)k@o29PF{W=Z;^K zimj&Jee0*V%B;d%2~7#LiP=|t2$AR}XTKSTg9fIA{#~#GVFt%1T(i2XZ-3&^)m_i+ zr-#octnO*nGgcJ#*deb^4P9w{K0(~&p^g^vv9vt&j`>fiGc8nbWw-qk%Z#R7_SYM4 zH0`|qiHSzbEB5#Qc~&{&Pdy!aJUnrAPgj}0@Zs^+W`qkBj@eievZIE4oi*l65-11MULQNd zr<;ZsUCBX5-LT|K)wO{Rs(S-!qSUz?6*=10;tP)ABRB?w#CY0JwZ4>gCm}GgIJ_ZT zd$*tuaaX`DWAAz(UDgaF)(yLiub_9gVj4lk0J!k-y{sFq9!BpI5 z8V2K@z*y&=>{*w>;9iENGmu8OtrhnpaQ7g;>qLsC35PXYP8{N6QEu*#=R7h9pW5KP zFK+9v1_-cig)8nZxO7Dv(L9P3!*9{+3-D_)Qt5`_$5P~&mCzCFlZYQL)B;4$s*h;9 zVUThqs*!oYc`CBRiWv{*CxZC33{yBd+D$+4{Fo8bI(8j$%4Joks)jP*UIv$S2+rLw zVR@QV{27!;%$V3M^-0u2#ffR;S%!eEm_1Pa1)E9MZmW8m0o#{gj$ z^SMO$OuPkY@(gsv`5@vo9k*G<75Ygx%9S%hF&+4=&2ycrbRc-K%w+gbAK=_atmeKf z&ES_e_f!n6vFQki8Su7L%m`&yL~?00rVUmC6>}>GFDI9hH`hZv3f&k|CKg1J;k1m5+$FK^_$c>{c;P!SX(0-7o@RM>2bh=Kve2t+4ep*{*Me0o) z1;2Ntg&kfKszEN(`B$hSt_fU8uADcu%(Q!u1Xr=kHxP{p8X8cfR#8uz76z<7bhC8M$^rbgqGmLln78g=OgqE9&y64?E$C8^8M)KGjcFuKPhe-i{yUG zn}@PfapKzySg@JII0h{*KWITo3z>a;D7T`im121PXkM-prmqwcgBj+3GV{MQy`51X z;j+Eb(pG5+bYMmuGJRK)wEV52qUr6yKJFFMw-imtWqMCC0?(ShPmyCTGtLYGmcl$7 z+JN$P04gfXs?6IdhuyeaoQPfSs8q%0rNJ{-AG2N`Rzx#p7Rh#|FHlc~-qJFYmou^r zOm8WBZ)jB8w#=&3eW*FEJky(m>_9}(BcUeXMuARb=B1mylQH<%1R1&nXCFTcn^~P~ zdbx@eBKE$j?LhQzjtF&3@2ALZh*0zqQED@mES6FJ15O}9F+~E)`2;Flzk9o*Hb8R_LiVBW0d*1U^>~=)>e?fE*?Z@@D zcN($`o`RGxhGtdaHQ zC#%?_z8+4g6jfYQk^c`mT;m&t$_VW!;fV758TjcEUrRWEq%cat^(e08zQ<98AVEe& z{N$-ZF857v{J_qB6IPIk-ciVCIBl-#iksoX`qx*?(Xpu~RPjVIB0m$^=(@@KFDF9H zsJw-8pU(|0u4}zT$X@7bOi80C$<^K*lnNwd>RQ)e6sH~?%}tDuk-*IeSlO)7uL|6( zYDnH)NC__+w^`K+<=JQ;{}QN zi{-?J(b$Gtjnr3a#y&DQQhPWDxf;|N-0(LBrp5LnwrpO!N^zT2gP_buHtM|EnU4l& zG^b5DcBH&0FstTrTY`stjx<38#?IDg$kh@Y40x@?ZB{)_hh#IH_H>Bx!f5y^IPC6u z)!>FnH8^ZWHv53badSlQb0U)pg2A|6H|zR2-+6@TSG5`(w5|8yi-QHPLfja%kduD0 z(Gs0EL>NzuhCR_x*syt3;x?0PI?u02lrOu6aSmVJ zNF4RvBQajSzB7~}{hwdaN=l1X_{@4T@3v8?a?Mp?pV$jRIC1N~aq(vTb>?d>oMv&u zzQSbLwk_b6*`KGU$=aF&Fc*70GOuy2(JCd`40wmuxd9B>{&{*zraW_nh zmA_h-6BDErxdFNLW5v$Lzh%3&$BHliwOGkb#HsS7l+Im$eQb5fJ)!lcm1)Vc zxB8_^Fr!hdH2b(PRcfZEyQOqd54SQYC&%+g;#|iuI8eOP3m>Fb`xk|d!xY{BrTP>W zQsfG7zG7^Uv-Zkv7Yxtk$&yd9k|nqO_Bg3r92$dn4$sUU)k-p!gci!C&$AOGVMKDA z`GJ@tl2gr36=Z%7LwcSxytXuP_NgamcvL8^UnTs>_;eiN*=q2I>E?@4+Usy?&a0-G z>G3r2m_=B$2lpo!{b6@Ck=*(Rj%E}T1oLS&8 z^F97+)c*ocQGq8lI8OR6#ru-AGGS>bC;j^vQ%5dJ;lon3G$ejyK`-bS(4#Fq**>CC zn)F*13j7b_dgaSP>E0g<)6+CXHuOA_CL6#oKa`!zLW9jOBx!kQX6C(!QhF+O4PTnJ z<+65pC_Vc#kLk%kgzx;X#D6ItEDtr3r87o&-4d3YX3*2Rz?0p{ z12c&agtASM-47sDYvcssQSq$;?3H$_LWSldas%OUnX@X?(mLUir&opMv_9lAJ@r%m ztFpb~GE1o1Q|xKcS>@xgIZS7vYn|LEp-`jabAq0@0#8nXC$XS;CrC`!Q?3%rT`S(t z%2yI<+2;rgy|bt8Fi$bO<$L^KQxmu6Je! zJ?SkyftH@^VhEbKo|T(chf2H$ps^rDx{Mf|COcM#R+)$7ng>Hqpg{liU`TR*H%(8V zKo!Wd$ahBXJrooR=f0 zq^9k}R@KE@LnFM2I6jw0AB~ziWy+XQvi!EusjKp1Vx;uyF`nw`=Rz}U9iK?6l%^@& z`;|4T9`RzRahx<87mib2f}LVws}H>%YG=v55?_Xt@2*?7`j$6C%S`9(Y!~qlPQm$M zQ^MdfmR2 z=sR3@nO93`gS6C$=}LQUT55IhozMw)CVTI$Ntp}0cX<}N|K?g`-Dh^kE687}gCB&> z+$(~i+R(`TzTlDP(XHl6e^Z&U0;LKUOvBv zGssLy{`jM&Qq}u$zm(5e>6TOZB{?{lCoL(XyBf?RLk8BN8}u+;&Tf>Z(xhBB4(lIr#1NzJ? zuhh&w=9WI6h4Nf?B3HZYx;0;h56}wAWcg>ImZ<8x0n%)7I7bo=A&P^f;1HrXVEw!# znQ$l+P(kF#G%}AqgB0#M6bhmUcP~lImER79y2^ml@8?O!&v%ugKYQtODEnzCO8&R$ z<^Br>F+Y%!FG8DWfdTWxLS;q+GcGkfBrT{(q=QOc&!ANd(wN}EeUU*c7^L|)7BK1? z^)bD^C~sigq-jTgL*pJzbJiQcquL7&JwZ+I3ysFc)o@7#(2L-k7~Gvhn$K8;MpJ{P z7B0%08INk3lm9}axp5h$(3A%i-NJZC(@q3h8v7)?VQdQa>qXMg%D74f`nIINc98Sz z7%`FZ&` zMC|UdW%}h|+ z{g`9ZE1wktMqh(_gCiH?=i*x!pcB6V#^sa=Tm^b7{GO!X1odvF}?=P2=T!>U|erB!~2KGMfX?B*()B+uUNv@8z3Xj zKGC#O9d0lzy44qdHpM@>FU1`&ZZzg=nyo)z++_T{miwcZ$U|z|DV(YcqSi)xJk(R6 zqadudlWMuDNmZA~N8!M^{d-4bba2|o7^4>ogx;C#fHBsX$^z0Cqq0)V``~xL7;n5Q zXBVwZnL;moTnrc!jfUza7zkYSauwfQ0-Y?FY|Pel4R`@#s_{%M_s`d&KdVLKBY19~ z7h|M(THOqE-4D94Z-cFZ+NK%T;bD{XB1PX~ECU_67@Oy7(O+u!PV8 zwdlv?*5B9WSM1Sjr$Ibm@XHL;R`k8bSGC;p zkoCw#|0()?1$m$=jL6wEnql;U14h8c9Wd@S#%r1d959v`_h`BZbfK}-cu~{sm3+DJ zjixzy2^cGkBDMj2F#_E$p-~A3U&25emo?u%ozeRg+$I|j8dbH#-_@e~sdr*d0MtLf z7X7kJKKXQh>!cjV3IEgCwY6v-BNw?SU!PNb)gy_KCMX=1RFS z$#V4ZQ91I#A#Zo-{{g0=mCHwXCBKm0?L%Y6R#%)3t-`s3ZrkST$h@;owa@#P^U5Y3 z$jr<8xATr9{v6(1g0@NwBdC$XX5Mek@R@gByZh7WeyncVJy5v^GRE(Z<2EAppuD2-Ln1a^9M$w0O(U0; zJ2+MH93lw5@}hf~e^fM#8^TH{7(+FqOgmt&&VXlXu$GycXJHu{LLk6y;Dc znoSd8bJHjVGDWO}+!l-mq-r%=MIQXAfKkaBfsSvjD=lyWY3P|nY{~qmhgObl#(1Er z<(FyOtL?PyRag&H9)PMcw%2Acu}?gY{@d!-Q=+X{A_CKO0Lq`5^1|H}y2wy;EYkQc z*n6s)5mLxz!jz#{RN1PS!huo*4|6nsp+?m@AXgEBd@K2&cLKSsZx<0cRHNxVMC8=l zn%?VRg|SaF{J?m0ICY6=jzvU7s09(tvON*406JCk8Lm-9^eP?EZrTVe+S+`|5wZJ- z(DRU{H)>==jG2C9IcD7>d>+{~B!zme#jbN+Bqrpug_f2Ix94P+K5|hcd{mYqcHUKH4bk ze{|nJ$f?Av%&ZgfsQs!a`|7&ULwDt%+foncBw$7SU|kum*QSqwrBr|zUrijU?Qx>H z4Fzr8;Mj1rhG`3>H|hXT8L9Ap4Oa2wquUD-Z_-7I{$_w`|F$-H8g>kM(!OpL9RdrH z`nm2}k2#Nq z76uYFU+%hR<+Q%j!|$(p`28LEzkq^ooq4-;)Y*q)6*=Z^X*_l%<&7M(w^kFUXe`q- z){|eyG&T}rwK?2>Vs|a+pPdhC)(I?aA|2BG!Y{gCIHUW85!idahYr#l!@ky+*qlnb zjngcxEYmnZy0c>j+q%+pcG-WA(Tw~*Fq#p&YD2((;kzm67Y!qU_zI_p4s!ZWI*YiA z50}7~k^c>}poPY^8cQ^G)yURB1*o+ORcio!6KQx>%@cIFmfuQjrn4ISMVh~a*cuZ^ zVg-JvEJTd9Y6s72e2Lh^z-b;pD0pAvN5n?>qNZt-o|2;;8&7*}5tyz=)_A7=ILEoKT2PQ6ahlh3K0UqKi<77OM~qMj1dX@1SAo~Z> z85;AIm0B?BYeqATTq#6{S7^LSqgwU`{y@?gQIvIB(4)0{g2tOQ&e1qeq{e48?$r3I#y2$X)%b}3L7inBfT!p&e&=tlyE!aq$0m~?w zuGUyXL>qlq(;sP678KA1zt*&}W{Uv-t?55Cdfo6}gnobsd6vc^g=qiHG@~tXuwnGn zsEpen2Zm~TI1%(%A{0&0cpI^=Va(I?-5Qq@2cl>-%|(m!x0$#QJt46IKWg{`ir>)= zKGgU*u{##5Yx*aR%9`!nka=)JVZ26Vp#gM`rj_BLjo9C;>B}{i5LY0fK-K>HYk@N5 z@C?lKkOnHNwNR+6)&du4cgr+BNbHRcOw(I5K1ZxX!ZfW+J;1-RUJK-5iH!IWWu+EB zzSWE$h>KB%n*LK`j2HZ6Xum|bSJrER1)5gYYeBcwbcx0;#93IQplM~b7VebQ+CtbZ zQdVlgn5rGjAO`V{K-2eVyr0Rc8#W$u?jd)R%=s`Ld}0w<6A_Gt;%{W+T$@@ig%k!}v|p zW-Ms9k0VaQ{3}&6vNhHtPQ@#EO<$(56LB&gwKUydqq1fTg|?>06ETKQ*Ys?S6~r>w zA=316g=qf|@<&H)B?F3{(hmMkY>&Z6({E^ekJt`2B{cn|#*-SAb=xPkRa@vY@k-x% z0!6E_NMmba1srtX58zcAdlJXs4V0#D&^Sip6pgoNoS|{P#(Om?tG3Xqtl9!MX#V3G zp9ZS-ugu!Q!7eR$UE{k%pJ9BWX=UaX?!F~Geu=Rrpi*k=qvbbf`AtMj1j{u} z*Yf#VzED}Ior_9H25^mb@RWA&3~|0;yr%IZjmI_qhlq$MYqbmTEQo2Z1q>3wFCuQh z@U8I*A`;X~%Nz9JkL`wWqedR*N_wtFbX2f8BP|wxc)iU1WBygLIQ7fEGPrW4Kdw6_ zR-9<{mOlqRkdcg`6VC~TH54z3h&M{o;;j6vGK`=kkxO{eQ%$&xI92MtXE&6amOkvS zsD#-t@{rJNL?mD*aUsSK;@x;}KwJz1mqZK&2Zbxj3&eaa+%RdqCJ`ZcmmV)y6~@)@_eku= zkZCVhHEeNIlgBll(fG5*a~jVpl-qv!sA0veD0rqH*hnMZh$y-}5fzP((!^4YcyprY z0Yv0GpQ4FFHR7RH(YD6X8q0~u_vspE0xQUvqZx~cD1gNpmuXz7aka)Ojhi%X(YQ_H z4vjlC?$Y?S#=RQ%@$DM}JRr@JJLgnvfJrNgfai$lR?cfwbpzdxo5c-Oj|u3fl#NTE zsw-$3Hqn5dp2fUHgxSnhAMr2wev6$aT7(!f$;CSD_I z>_x<=-ACg9A}Zb>jYElf=odBG#Gros0G5$1L~YbqZW;2?fh7UiJm7`$-WU{jPypOX z#2B_qV-2xA>YT>6i5L_2YTQReg+HKBMh<+TVFjB1DU!f5#NOH*8}JqQzH0p(!&%gGgEkhx?6xod(0e2KiPMm|8f_wGE~7P;5z(S1X)Fg;@QGzQ8NivuS*ZCMD~V`g z3p6ewR-z?nTt=La54ajv6VdfmX*%cg`k9VhcBM4Em-xAZm9$5w%&FT0?EdWDk`9)%aNoP<=lmqS~s- z7^-W%c+jYwJ&35Cw-He*eMZZL?9~H%S2Qv z?!shc8l1#RfLgSH4Ah=Ch^RHn_Bm?HKp$vSjyH%K@gzWe0(?L4N#q!Di(%YPe8w>L z6H(}?NQ3n%dR-!NuSnAlk6uH`d{ z$?Yay6!+wqxv65jsF@t0z}*f1EUG{~0a+nb=+rl&@CkkrK_JndK-bCZbiS z0SyZJkS;|Ev|J5fU6BG!Pa<~5yHZUrAokX;#o&KEX|x_SK7m%_6IziPfGWUHBM_QX zknI?B5pgJnU`@9rqIvbwbRS|!cjjx5v1EDWP+dVx{wUhhyZWza}@At&h!$6T7K>M&f$yt0Ps->?X24 z_@Vk$SB|!x2&<7@Gveg8rgoOtGt1JeXEe8mq?w&$e^)yru-QNb!HpbOcc)CpbR_xs zhI5fG1y^b3hoae;j_F7`|2(<06fN3$~>(~)%kMKoV_N1UIGW@kF4BkBByXuc$O z(~&t9&CZk&v@}WQKSuK<9C7|rG#h*KBhF7p^JP1ncc7O4M6)yTf);e-T8|&GxaqD2 z_k|o3v%8Mm?r3(V+}9-JM6M6|ri;!8Mx5ij=S4O$Hhx9ADj$43jOPE;A>i<@y_BCc z=Hqk^W0NiWI|j0!?_tMUW)oSy6-&Mkw^wSi9bj#uX;}gswvcGL=hLp{?#V_`fvF>$y-7eV4Xxr~a>=r8c45l|u z*r`&yIm<1R{`Eq_x>An|raCsR$N+QoI(H)CW_Zyh@_JHspG?e1=AmoR>>V=i`@{_E zJGaEgW;KvAr$4>aTaA(@^I)-PZ?DPrcT+QxhoFf>vyTew5N23!cxCPSnGIy<{3-s# zgX=GrQA;`7;pG&WbNR|xS+HkMrkuO6u0QQ)l#5n~DvKpnHoRS)VkU@rjh!Kk3fqGJ-kc(fy9Q#-En;rU%8)Hx1O7z+hKnieC|&*oH^=jG zf)e}EtmH;fvJ&V}X#*bC!AD}XQ;v0Bk|BF<+aIfz4Z{ic{HrMCAwDWfh^?8n564iDE-R|<8F;DGA7;*P|S zZ}aFqqPu9_@{{pqM)K77OVyUh{=O)K(U}GQ#%0hoQ|sy;rHk*)qIK2C?w>x*Nb8Q- z7uk^*a+Gu|=ymD>5h7re;^uV}nr$Fs*$a0hmV84Nt(oIwhB5$@9G7sZc3XD$voq>@ zz>d~j`UpxGDyaFIh-O(nf|Qz**Q zVz`UWkX;gvAD+>HrYoZ}q%_KVILiAwwY(ot-aEZn%lm*R@1vr;TS!NA=%-@weM?!I zljH4ze$y)hGak&4gv*2e<~DRdtdc!8O2=JVN2DqR5broS8{V4gucaN^NUlT8e;4fN zw3R_|sa8BbN-@nRL`SYncGG(T*wNlM!F!~NPmJTOdmZDcvf=VaQZ96_Fx>snx(qpR`6K@3{>Lun*tDonxYsp0 zVaL&tEplvpCP5UPxJ;-B>X0yDzfd!8sHI|(3>=KM_x2#$pV&Ss*jwdT`{2c{9Q`1i zr5dl~vW*!LTi_FrZqOQCDE4xfFn8#gOKZ8MR4U{91*8OfC$BgO06&0 z(Fr>U#hbL^*-?uBR?GWLbeilfYk9AH98WRY``jq+FGajtVB$)ZWAL8#Q-tksjUsda z#j2h+K3PliHfTl#Rn@!_7)fyl*+0Z?m>f#g$ zs+RXjvLD_%JyFa1+wk5?N8+w1?{(5H&D^6%N2OD9VjzmnU_YKtf?CDjqEyiOVs!b~ zGHoalK=UHe-izTq(t+O{<$YQ$?^UuJ-aAdM<-HfYm+H{(jq+Yq%lmnBRH>>Ua#z<< zu?Q+61+hd5dWX=+bnf~kd;{YAdc=ojua1iI(x^a{B@EDB+`QV#c6jgfN5s3sHMT_s zxE#Dl$+t_tG{+_(R+&1Yg6=11r5n9b+nU++T(&@QcDl(r$=ZFr4Djvoi$;LNosYnfCiIar8_DoH! zCFx&;+AqhB`%*f6R7?4Q=b#+vpmIE}Ur>IsmI`UW2Hs`JGpREExpltgi>gr{V;q0$ zqx_w(ekfJwL*UT6=>8UKN6)O76r!k#NLS47nqQrZsh#tf692L)N;3X z48H6-22q1rMCZItLG&|h8;4Um=0Fr(KIdvs!H}a&Kl+FZ>2D5qF6Rp%xR}{aa_mT^ zVstx$YJxH`umyJ7y*Zu*c*~h1c@G?@=Y9h(IAq>kGg3S)+jMBtR(3BQ+}zdX@^*4| z@!&>*N-8og7;wDBxLFx+G`q{$C(=@G904I`GUYuD*lBc?83hkd&Fs1F+yQX@^ITpJ zS6M=j+zICP1FhDaYgBBkSaYtZcoXa$mcV{vYZzJFSia_5u($wb02}piZ9DUF#dDsr z_rAAUfBb!({5ZmHGxF_XcaLje`0=B2l>;803Il~bf;~3%+;i@2V^rAz{5RW-vfIDh z{<(eU_Fizg;1ZX6jYr{fFI+yVUGBT!auHn0@Q|G;>qB|t%AmB`GV);9mkj*Gp<+uI*4Gp~45X4rN;>+>m6 zW!t61BevbZyiq)1`%Ky`Mki)$#dEHDOV0U=5Kv!_{O`=Z-p8^nK;t1jHb(dV|sz|meYoqrZ5k`_!R-UETlwFq6D1+$1e z4jR=81a6o`Jb{^t1v`dKJem(0eD{qha>qnFuYyi_S+s`e{SF~pFg@59+F*LHFN2_g zLOO_9kN^G95xIOitP_Z2bXeCTY=-r3JgO)@v>~k6rEq7#0wcfkC_WQsR>k#;Gko~Q z=Gls=h!y`An5EKWl3lMNh{!VEs8~do`cxF4#rF?<)U4&}W)QOyBR&1rZu8Qb6Zbey({lKQ(>Hjz)}I&XgA- z8pJefOdmI3!WZTd&V&u3Amj0ZS>ffe=a9jL`Y;2HzK8hyx5JEo7-a%cE=5j0`mexb z*W7G+_c`%ELJgx3H#AyIb(QJ;k*Lj^b#+7-_zV;F-WoU}W}bTRH>)cArHsgY)7#34 z2ZD^ql5Qhwu9=m|_*`P_E2%vbJJU?&dOU~<=!;p29KMaBTg)`BW`rmhCAymVFu_cp zhS~!WN*9$9ojScuW?*46=^(g}A;=3Nep-X!slaq6(a6+@$lnT;%q%tGSNUR%S93Ec zRCW*Bn`!guL|c|?MrTz?U0Az{%)pbe2p=+#7b=L7WtxGW%xR0pj?o}-qg=9>*nk;W z&B|c;xn5jNTVPP}G3Mg0zB5kEQPG*HJSF>Bh;RA$!3BPhaD2N^k^nydR+z8&UUNdq zrpT$+fxnaWLIM{F!BbsI7)J!8B+n%L0f&&}QNpeQHthJ_(A@0f%XCOQDO}QQZuD(; z^4gukb-U&|-`h@Mx>7guN5w-v8is@i{EyVKv=15X-QJJcCy>q8SY}n)dZuo+_eV%o z+is`W>G#rgnU~*?729cPY1Pyp_SS_br6j0aXMD(v80@_fQm~Q#2NZu6qFo1@b<{=* zl?y{VD7pv4P+^!iIP`=FJ1vBeNpTXI9?KdR5j!e?OyfSms(atjLxqS(8`uyi!3HAIUC`Srs`egm7 zak1;hO^Y>stLlMV@#IIjazgz1i3AX+v$35Gac zp9Lc!nk3n;|&*k4}DBzu-{pD(bp-hV7THZ?z|_ z>NeCJWyq@Sk#xM`c{$*gTW+%($v*ojSi1QCBixuLP=8#;BQkG!r-l~{U8Rcux`_oa z+Olk>-Rau>hM9u>6R?|e!5Y;=rkRS_e>Cd_5cw&dx7rAZcyTN~U1U8d`M290 z&5bhbcDqyBK^n+{*{A0G-=V;BS&659iEO#u&J(%aPE2V9BRM6W+!9Yx3r|Y1$1L=u zh}oi3s=Rxc1H#rNQHHuKWEw3oAX6x+ok4G8A7O%gM?=!YmQxDz9Lu5vFn;|$&fkr zRO?q$zMNzCH+M?Qxps+l&XUPLZIm6A%k^-Uierl-L*Dt^}>F3nvFJtZoFzs;KOL4@LNP~5vT z_xD+2qqqxTl#7Wu4=y6A-QKCWf6S71E0Kf8JMfs+TOW z?=WTALc7pCe#-di)!mlb<1DHC)Xu5?ZaM0ZJoEQYVrAb|Iq0n1G4&WgaMi1$-PPqQ z?ANV2Fm*pAG=9q1sW(rS7QJtUeDR2&40s|G#~AlETd(T;W?MN^XMB#>_uS`~$_JCZ z(n9RcQhslJbVH@S1X+K7%ZtC7$v&}1$6b}=USM9mC&`fAFLq9m0jurfaxl9Dec~&X z?&{$W+OcMJ)kF41k69+idcbngne)%oq~Y;1>guGnrk2R^z9XB;@C|kv`UlxPJ_W|7 zLX%UaYJ;6>_K~x_;Ct@|G~^d&y}26v}*rozS&p88L&RH&w9f70LkGmV6-xR5YzQ# zenm%)_z{V8(cabx#*uu#3?Vt9WXi=&s-{( zdJpeR9?0V(=!mj_afQ(ibmXFv8@0R?zXN!5_=*UGk z(`wN(YtetNMehR*eK`0No&!ctlYpw!DZ-bNe$i)C?n3oX<;x5G3v|(C~cw=%i z!g#fo95zFhd(Qf3W{6gM=%16ufH6d!a?QSCq-Zr6eb<1b%pG;Z*`dGg#*{|Ehkr>l2&0oM=YtmPCes#x}?UUwJPV0`};LMl*7dArz;~#e( zmw4(lpIP%ZIk_4CB;O@(m^dI+60az!lYTYbKBFu>D4ecndFWNUb&DeYhI^%NyYqk( z|E%+17yox`f1w=oFyapRb8zpB3e3n^^WvX(8gzWM^Jqp|@n5J#zf_BUSx56#=LsaQ z#*yc}<~(^ZI_cDp;Q7!Mzeh(8G;7u{E`n>1A9*`;fbbBcLpWf?hzGwj@lCAgBEE%% zl$usg3!qn$hWjew+j^B>JMq4>r7&&)>M+;2!35k(TQb_IMfM=o`aa-HEyhEG5&w>k z+q+It#6RW)Y27AA9?PyI?@aJpyi!^@~@e!SzN0p6XBYq>=_OleA9w85L+5~orX*@{$NUx5(4LdhL^XTnU z8qa9_S)&^me?S-9Cr-gxP!dl*5~%Y1GiN;m6T8itCa5oTAv$64G|G#f~>=MNw4X>8W9&IR}ro_q^sBwT?N0;RVz|s zphd;}DW?-;jZifQT2+x8)kOfliZE~%0$`0dqOYAT?|Hx^@{j9?eWTmdx4H}XPP;z_H*|MGcL|W^X}SSXyUT;SBGPDEh+Boh z0NiB!pvw&0AZXTaI%EXXfq6(7FP_Cs_dKIJmbg}@^r>C}-I1%Au#7w$ds`cNe z^>3qol)tsv$zlun(TomPIG+ft^}6%=(WxvvRJ?@pRnFT!9xC3AG-`D(B5HLX;>L@c z{|AxY?bIz=Ef`Mvq+!^^*HLsxoWaw`%ZP8F2@~&kJ`Y&Sv5b;5TE$G__u4SSYQv}` z{g^Ied}&!kdZ#Yq7j+qNXC4XEgs8 zB434>j-D7`1r_u4DiH=D4C^M8pT^5HpQdam@1~Kf{YZ1U9&wmP)pLR_BRyD~Bmg~2 z%NJ<8TjO$NiU1BCB4esyJf;OtYkZD~9;HUp{6fb7)spEfEYQ^S*BXByUX2Y2n*LKG zzn^lMelijMvosbcQv_pCQ#GTl#u6f`VNXr>*LXcK14FB(mFWQ}RHg@dV8)~QcWGQg zY>qe6nqIGQ6R|05FDO$4Q1Fr#yiRNkvlE(DCI%osLK^Mkd(Bs-1;AIP1-haQyC4Uh zpfQzLik%CZZm6*(F%1(eO;>c)KdvUGU}u4*XDC%M65C*Jho<{z97N>F5FyPNt5KO4D8@#7O;>7ECI%2-WD)p-n!jG7GBE)8 zHchKF;W38sx~7$-0mwffJsz`bVg(q-w1aPnlMUmnrq5~ogE$fWvIhwFK8>lwQ7B_g zH_+IWXk%p4*iYjKjZ-wv2CDWypA0Czmxz0nrq^gxi_0Nb-->QTWz~G1e_##8Btzp@ z8vm)$@;Y)K5&qLP1~nFWVRP2H78_;B0A4{vkJwE+xJDzuux84L*qn81-t(Asq_}4% zkBr}I2j!cM*^T1RQe#!qmlyZi`Q}h*G4H*MWMn}va*;)9iZ>P;YO%`nvZW8F$f*Ln zz8(D@-r3#o&ULVvT(a-3>a6!|zbS8w>F;0nOVQ13+J~i-^AD4Ru(h$IXlA_>!pJ#bVb5pl03BJN)j`x)bmEzEV4hO(c4Zu~rHq(<$ULhCt)mT32-!~zWenpQQg9_A>Twu$xi(**qUt%cPP-A|Qv zu%6f$6J1TKu@1$4O4DbEDE?Gd4=Bhaq8g|n3v_$Zs1Dtpo2%Al`@)IiVS906;ZU`xv1xmi5|32@pXS6Gx$KYg%>asD5)a zt@`cpcu%BhY}!%Pu}0H-h^Ur_HGP!GL%-c@2n>)o&Dp9VKfaWnBu78STY>VOV^XWv zer#8ne8pN{4t&FeAK-p$=Sg|{=?CHDY#ZU zXZ4SAKIL+38lm$w(R`T}alSU1o#gCbq4RaoeAyjwj#?V6eeFFX(^VuZFX2D1HaXox zEeB=Z4fv2%^Y49gWZ$>;0NHa4dnn2SJN-BsVS^_z1D~1p;8WOlc7l|flihOS__YbL z@6EheS&bDKvhA%rw+!mm3&#V@cFQ(8OZ63GuJfOYH~nU@%zOXJ3>m&IFHZir68k?& zk7Dn}g7>dXm4rmtm+$3Xl=<+!HD;W|O-`vJ!%yO5)!>3J+~WV`5x2}aVaLk0xC1zY z^{;|dS+*(5Z{8>Sv1We;A3=Y);q-<|?(_LsGxT0I}W?*4&@# z$9Wdqp&|ROcmr?6pZL%%MTd8%%3?T6Tsa&S2${hQ$&)q94rH70a_rLzxL$U^pI8+o z4$9>6KG}GUt;CDsv;2u0qr`<`zMh?pSSqo->s5c^mMC$N%)Mnzwr3w(v9pkU?@4^? zv#l|1oJuhi8UM|0WN~(<#8~+9GfI;9gPp(XNyK+syQ+j$H|OJMoF_hulfFOLF>!k$ zy5%OgGIONWza&Fe{(x8NZ1PnyaQ38BdHDz17q=HqnZ9!Q7*0J0A@<0$){msh8&`bb zlQRrq$A?uYn1qG?<|Sy$?AGa{C2rPN=Fn3ZM$oqz7-iHo6oO{XTI|v*-*9JPR4_^% zk+A?eR1!e9lH1=Y&&CV+vx7RJ^xi4=H(nVfMpt+th;9fcI*2Oer$Z^&(b_jgdA}^m z``xv??{K`|Rm=O1DDUWaFNFR{E$@4!U_ze^8QLn_pSUN=PX`%j@69%Ul7dceWXJ-0 zuRrks#PF^1>;Nq5> zL28qOWTqbQH{Jm~?ctw#u8Pt#Azl{^>MyTtIQyq=M)G3KjzqUc%*~Hwq`ew(?KoDM zbIw@@{1Qab8F2~$z71y#uqWrk3{|p^G)Gca-;(I+w;b;o(-B z%#2klA9r_9q3dMqf%izkT@&R!6!8uouV(OcKqWv{mOkZgychmBr(vx7;*P|6Wi5Y( zEU%iAk;?__(TN^yUyOBs*?!drDN-_dbF3$b)CHVHmwW*q-4@zHv|7a=_k1mF)1j>r zkzi!5l^@Sbwr4L~mq_@Uywnoti4OW_IL_3L2LU57pH?e8e)j38ns-ZsknPyjHNmc9`x6aUB2Ojvx7V1+Z~yf1u>oUSuA6Q=dU9$DuLH<9A_v2ElISJ*2z zS>cm$<8biP_{q17Hy)T4POrYn6>e;~TDK^c{qqXz$-W7JqUwE~@MXE~HXYixl5o3$ z&D@u@?$A!mYj-!wd&xnzi~4}o#Ai~0ID#4fv6}dud{s-F z!oq6e1_hw8!k1<|@n;y&&0@U?RnCPKzG1)S2Ni!g{>###e(w2qE|*$nJd1&0eQz%n zm^Cy9B$gRh)I~rs>*4Yiv?EtvxGUIr6wc7+!e)lRq0&eGR0^;8OT-Y zc@U53QSM{E%L5HPM{|&VC2+FKV*l^LiS}PpQQR5^AM$(*rWLb>g@SB}aBI*hSuwP9 zI~n~$e8lHeq>)zy*Nui&~| z-du(baw+l^+TlcI?*)~cm=_mRKE*7Hq+PunPkb5C`;6(pRfwBQ zb+sni#pH#01GaTT20UY(_(HHvi#sY^SSQXSgRDfXE2}ULqFV7nErok0nCm?I;LwVx zhXSgHG+*%7k>!!t0qlPx{=6>rre1%<(2#8dl*|Qhf3XrL@}+Z&pz?LWTSWmPbe-oT zRm+#dK?#2Oet}l&X3NJN=jbev-OlGGEG=G*%&^8=zRgGhM96z*CX035WmM7!uRPgM z$j1W>lH@;*%(5=CJRKwa&WfMB2ZdT;&^m2;U&NRV5nt*!^LLyVJO>rS`oi=bK(_!HO3N@R zk^k^VJ0odb;h05PiQD?tEJ%L~4$0Vr+uas1NIr%#v|crRt5I2?Ld9e;q*(3T7R6z` zXnI;B=OE%xpj&S8I!0=h>097L3KbmB1h|pPI}!#$w#@Y1jCu-hDBVc+m0Z9^HrMnO zBMuO$;vTKMxxZuaOgFt2L@J{hO|$Aw1d!HWzUvq+bY*xvl5j;hv*JxMCtA+@`6%33 zMztaP>Th2Dq(}CJrG=-pZ2fX!_0}J7xluh!BxTA^W(O&GMVR(NF~ujq^sTXZC88vh|&p zFThl$ZByFRS?kt5pUd%KnYpoSdT;ywLMTw7oHC7ORn9Lg$!gzkj#Iap$GT@d>)npR zfm4)9BqAN)GJgf!(KxR2m3>EUCVNa)V&=S)>%j@kf~UNjz;>Ah*N}SLyBEGyxb%#3 z(hoBWH+Vk>FPe=P{)ScMO}o@};r(7Z@I+`79kf%1nyGh)_#EtLFO{H~;23XK95k#)0| z`#V)sRr<}UdN+ZA3UQh($4Jaac--L4iy2~86_NF(%0WZDRyM0vgOk7>uo+w+O*qXU zsOTXPdQy&}Z;sHD9s0fqJvGy)h#SY+(%XC(OrwZ8^(drX4VzVy5sh^IW44^bZCx`c zfgK?W39c2*4z&=!**+mx*~m`J&t$_rV>tpen?32DkxjQz&iuFf6)MJBFqDG+4qX$W z2NWoIBPdhyVeJ&nci)P>(V@A#U(umrqkcPt@I0bq#W3#gKvmpeR31;h=St>u3=8&U z#Hu2|zT8}5Wb{)m!dTN4xoU2WyO)h7hE?Nd^w4o9kwNDDaX+K}STXDbx%4h> z9DAtBICWHe4BP$RQ0W`I1rKJk#2$!^X<0G<0{;Ybs~>sD!MF-R`}ICuuoU2G$gNy# zJ-o_sn^iQIn?N>GrV6>*XB6!MgAI}wtDjj#bGZp*_W;=fH=3-`h|P>mhnG{28j}TQ zPEI}LwGuW|=ahzH&4<5>HM8V{mu{;gH80)fk+tpe?y^I4+m-&yz!q!dlbGPS6(H$=YWKaFa zQ{?@=qhqA*bGQ4XWxwPYS7xrUYF}18`R8xBc`|uOHV<>HTW?)(f@ONwd2YrAhXMZXD&f(r2>s(Q%LmeLR?VS1Dumz6zo|41^!Amnu^sbGf8LPUYgd0bl0?re|_m3{X z%hW5E#>&(WaFBP+tFvRp&%?d*x2DHRi2wS&c17%}q0{g-G%JZeV!68lN910*g`#G3 z5>`h~x&x<#mrJZ1xvW<#4r~n%ePAz66ff)^4oc4-Kl4lC&K0q;G%*$bb}o-ySJ~W; z$A#J5!xQD`$<*jQ6{*d}2Bq}rkMMT;?|*YkVUO@)Io$2N1i9&j6$w%@@~PPBpL&FM znE$u>Ejvk$P1we-_DI}%wJeg-F;MyESWtD`zNY9UmZ@j{>Ne21G{~cUOlT% zc%IwLs6Ia+JPk*8cgks5U3y)35H?L74&$&M**arPrkwo6iv!+oMSVJTY;3ytb0()% z|2ZtY)h)aJW;U00!Ie4iz{KzmrfhpM+)`HEUl5Re+a_nqwp+rvSe!o*MxUnOA+#nG4z9`` z9h9{VvBq-9xNxWH{Hfv2-s(GV4fkw-F7~`v8;b6Tu=UUo)lenlN_QocE?m<>c^WS%2F&ul(?f*Dot(hx64VY;w`m zdQ$w!A34rB!~PHOi9$-3)%Qx>IpKGrm%vxOl_Pym=EYR|=Z1ea<^1}BSV^b|uaxsm z`zFZV_d=zzrQd{v>R@H~1TyOr99#GP9V<)ap{eBo@mH*L&fLXX_dYl@_r3-<$IG8z zt@Xk|e(!33Lj!Wn}jmI?|3Gd@nOhKrS1z%{) zFg%zEkbYAIaJw;1)9{A?=NZpvx|gCC8Xtp>T#WDuO;5t_WSoMDL&n1?(*L@Np6cKO z;k7>bLvY^nnen5uWLwYJEUBrFj^~USQ&N5NW8v35Nt|VH$tK%J{MRzYTT@r;r@|id z8+r2Z$huPL{9gD}I6n)s2IfQjNhkX8U+Wc|KgcT(n?K5tr@{@p{N&6L=n8WdBmPIj z2ok|>K!lcN#52z0D(Mo^wMJRS%^^gJk*7u zj+KJyR8kQuRx-w_nD`4`(G&lz*YU!88EL5FB$2p4<2^*k_Y(hug=)mJ()sCd!w&y1 z!8Fp|RB-U#UU|c`o%pM)eL9?90q>kq<^6s!wkno?=sbfrl~|zib{5CPDDTcRn5kpM zVV<*xxsd1Z--0w!cQp~IVKXKw|IjlXw3KWOXC)&NN(t(vDyXkz?ACC8V{AiGIfu&9 zj($=41Ax|Wz3>xAoz`Qrb!)g`7Q{jAtW;w^h4RzZaO;Y4{I+bJOl)6FrwphHDT-Dx zL2?^Wj_9hOWA)*6pc#dD&?-4_S4KKcAJYf<9i-hj)KdFjMf952J4r;ERQ@7OO(;PA zsQ{3FrKC|idJv)b|8Vy1aW+@`|M>g;-uu1hVlI2`GiJ=}xnP7bBvFGI1``vbD9UAK z?~QS76eVO66&;F_r5a|G$~j4t8Wp8-N~IdzjtU_~rJ~ePC-r+i*ZVa!ob&nq@q0gJ z&-49yt+ih3eto~zTG}J%k6uMu(u;AQ1=^b8tQH{d-#uBC!ff=?8Z>LzQt?*KWFn>_ zKB0?=NTYI~b)zIDa2V-gXO7B4GhR z(iRv#2H;jA_=|m19VA|3JQw4RvLHmSe zxM`j**g=qT$nPrHU9d>7SdjjPXt7Kf<$@K0!vseNjuNaSHsT-gkh9*v>k-3Aev5;O=IQBi3?Puh4~pl&!|{({i|6nspiTXbBjyOhJ9GA?S`mYYk1%dQ$1I>Wx+i~uYbeg$y`wgL<77o6f?$e1pS zn*|pN-a)KE?GXBY!G{Gm2yPbKMr;pVeWBkH)b}2u5*`%#OTll5D?%HHHW}Sum406^mFxcNXkHM8jDswBDTncUqbC3fY_hdV-kO5PL!?oEU<^LNWLo zaX3o9;6p^T4^ImHw9q?qnurRyo|cZ168f1cAE#CzAn# zOd|Tmc0zX+>_IF+429N5+QYuSyQ3SLHu8bhLXLYD{*)b|*o zPa7_b(SqZMYp`A{^en;o#0#;_Lg;%1A0+m`mKmX+5PXU_39I5l?-G1R@I!r%Awqh9 zj815?#o&9vUjz-TFf&Hs#On>`o?t!rw3SA)!w=G_?1{fMXI0&=(vc zru=Bf7$*_YHTr~ZE7(P_8*x512MK){@fJ)V1g8kj6jmcuE)ZNS zc#ohG;D(R_+Id|;C}?eA{~#sf=PlI zf^7sZAdWVSo`Qpge+97$I%k6VDjfuDb|jW9t<^ZUjs`$|4(wh!eL9W2RmKsEWE^oj_IlEIi3}r_Ir=;-d-dd_>~0{UZ0q?43csFrz?+@q zqiF3Wu2E}G9?DTuZY)W9Z1l@jrdsn|lu!LVZ%=yW83qUPG0fCx&^~Cl#=2`pg_&(b z@UH`DpdK#)y9%wxO`wZ}E)y&l)Z-_Za{@;9m4ZRRYQZUjHG(q)=L1{P;UZxy7F?>a zZg#oX9Kdx{J<$T{h{wxD6`)Q44AAz_KCqFP47FCleZ*AEjRg-8F)%zTc$|m<ySs6JXW>tZ!?_GE9U6H<{pU?CB0tsZ*;_3jw-GI|UK zET%cy+)_ckTL%4VIccCCla(M#RGujE zfmAwRq1M|@fvKQF97Jc(0O%twmk}UP?OelQkce8=Rj@k|wN39b0v3}-tt%BQ zBck@{ks?r!6xSfX$Oo39h*_jj5VjLh5cJ5dCq4vo zyn_ta12JUu!=#bXccYDD{vIbHKlSJV`RVt7Mn39Ia>&0N_DG{KWF=N%;;H+(Ad;Sp z@mN@8i_e@RBF8)tz#1&M5wAxdN}K_u1tPNUDJh#m$#+Hrk<|YpBB{S4B5A2Y%%tr=L{j!8A_-BIp(-M?a>P1M z=zJmq-&N@DM0i>%bQuvch7m&$FoG{$=leMY&LAC+7MKVcf!7TO!l>z$#ALLu!BH}NGM5E?nsg5Su|WatCg!0O3!O-8gF-8G z9ud*jO)%^ilSY{uCFYexl&x7p&n2Rat<+OgI9N>v3foq(u#Jd9r<+Qce?S_APd9;} zbrV>E0I~XkP9*k|Rt$6z>B}%?7W1Y?M>iHQUrl}mw!Y~pDi|BcxB_jpIM_o(snzu! z=DOaa^y>Nxn)R2ZSXVdDy1G@Nxg#HRH8F@R6nYVHJaz{OT~C~ZED8x@7ZIiXgwQ96 zHAs3l5CX%A*CWY=&Lhr1jD;>DqBe{Yx{`=mF+=ECMAVL2q3enBk^ftTv5j~ul3eHy zh>H*)p-&QTM?hG=5uhj{s!>;=^)A|FXlR5UMqG{n2tA8<4+^u;i-{|ZV&{e~2wY7D zs@r<8uz`qbw_WI+L{z^$LN^lEG~a#Ldq*Hbc~?SbqyE_VHVx+6Ro}&_;9Zl_^mprq z`JYuy4zqTrse-p-lH==8yjdX-E&T&O6T1R6|HE_n^P22`bS|H}2(|rxoy&ix$^O1` z`QLT$I`%(4m!J8Lgy)lU`7yYwO3VNBT>iA2WQV{1Tt2VD()JIW$4|*{_*k249$(&t zrR{%q9>2-{p>z4aH`#ysJbsgXHayMJb6#1dBmbFm`P06ta`?}l%U{cDu9z=aj&Ck! z@bl@(myq9Zj(ulY5iI>Mt8Vi12|#D-YAw-@`N?WT7V4kR0(RnRF85 zVvyC^bQ#F#lOR#KbzqCt^y@!NP#LGHMnqJif-Tn8ZaD>4$3c$Jf7qR#$Um5cK@r+*NWpt_!}@|yeA%XeTu z-6*_AjDWQY?P})fsw|sFVfS*j8g8WV1{iy_@jqc~E?4V#vCnTb+V-bW(ob-C0xmZ@ zF3W#{@opG9{*Qxk-Qx5Z=z(MmOpQ=$eyWPKH=`3@>TL7cMe9DaEINVIfuE{U{=DCz zNM+xAV@lGBc-=J_9t4F?Il6dkd+jj@d-Brby!mjfLkS~4e#~+N$N2Mh6EyC8<~q`- zSB--4=gvQFt#j_FNfeVNe^$d}gtMFOEf^upXuq7N9)1?$mBnd1eocN(PL!aEpC=tZ zmkGOzq zKhOEPu*KL*Q8s9S)M$Hqb8uBY3mpP1f`p*QqT0~e)ir$nwpkI0KY8pGAR5#D6fXXkM)7x_5~rr2P1sd_2N-yt00cv;A^>c=F1 zYcAwR@=7)f+v0d12p?pOf$ezub0*y7Axvcy3rUGof{9t{Q7|+Y zx+9AaB9|HUZ}??Sc7qUWbNOA~tc~gfapo|${SpH~)4}+G-xA-|&5rI?F9S9I3eAsB zg+JyGuGr&E{&B)?*7kyP`)!ofd|0cXRgXKyh#4D+x7S>r2?(W@vfPnA6H+bnd9@(L zpOU}PmGX5o%*`l$N!@&xoq$}@)>-Ni7!N%?rgp-1=t(PO2+XiKL1*PYZNtOynt8pI zaw+l;f(|1jW^XIyUihyCad`oofrcUt%^p^417j`Qme4lAC}ts9?XB4Eu&JF4(|qqZ zrd%56yhM0T_*B{;rm# z`CEt5c&WYleQXIpr%G2E)~2;#YJC~Y-S?VZ>aZ)BNC#qDKvFZ?Euj)*m>6Tezz7l1$ z;&)K9!Q>}$(`Z3Ey#J9;B7SDAW(^0Mk0U5z1YDa>nbk~|OnwOE{yNkVtb^cZ)^e9% z3jgu(;b%TQI)l{^V9W@sz1BSB6u8v6~-#kfdZznDd--} z`!To|=5z3S!L5ENM7SezS);~2ksZ$pnE4z$VpZmI20yd*5>N?bLy*DQJ!`v>Jq^xS zoA^}VXVwO2k!&Ub18btf897{zx>Vhj?oW52-l(b_*Ilsc?7Gwhwd%q&=@#w{2<1aFdDZ{Or969%o<4 zs?jT3H{6}+zs# _Pkw&c%!SyH!p7^X`VDS^f@|*`VTb{OfFNMu)!Viq8H7^=6L0 z%yTzxibzaQhwphJQPt0`?D0P~R`42!F}1i@AQLxAtgs@D=2uj#6aGRg;vD{?!k>Ab z{pZL}u%gbfyhR<$_2*|k92yVP(XIo=Kpd2Bg`H#P1JyClpJyIW>+<|<%`esLJbxQp z^Ps86)f;*Kfw<8iv9N=w(MMbz4yNWtFj#Ocx|Ekg#OvETB*S34X zeunE-mlN!Tw+uWlkh>8`J5O8s*>Wu1eM^zHq^3uPrK#&$gtb>giu}7D)S?MU9* zFtKXN#M$E--niI5+;#3g7=^1Ies9RU)PKaK=B+&tu6_*?8ck1of&c?2RBj9%?hfpG*wk z21S2bqp2XIMF^-6=TuMY%ZzZC2{DX*&S8GsR40p__ z9#|kE78%B!#NOz*i6zL|YZ&9c&}tzfBIOKV83x+uwXH$;eubXK8jOVHEB%fNaZ&QNWzRcg@(xg^{K=AAtvJL-9*3DXfO`yfn5-3w2* zsU7#i^rVVj3Gk`WgktpspVlaMlM9qIk|`771ZRsJYd zw#r|s_VaBu-pmc^z$ye0=RPVxp?X_EUYTmO8ZbglB~+>%gbgbCekK-@cZ8}s3Zb?4 z`x9|X&X)VpMWm_^@AtR0zd)(_QEh2|PoheCz#nVxL+L8h^HNpxfZvM%U;Y5B`LZyY z(I*e7`Ni*f%~@&<*&|Q}U(oYMwV$@j)VE|Opy<7()}`VopbiiEz4pg_I9t+-yTeGI z0iCKRd}=OeNL%)xzpdph(~~$8dksO_U9W;(n%bKYmx~PPSnF?Tb?K~zUT}2>S7FzS zRLz{I{Io^=F)Bg5L=nf64;|u54OA7wR%h4Uo8IAuXNGQxxw-!qyV|&S>ePh(=BaRN z18%^q*#asBQ7EBdbf3sM3U->|k zd3X9c|9~P_+2io7FMMM#`vcG5j?U=*anB_VF6@71M@%)Z%j}yG*8k_mO8ssWqKMaoj;k4P<{4M@wW{Ys{y7NTa}Qx?P=pI^{5MCHHLf^Q zT$sLP#hJc^D)=x48LiZkhyCqYe;)Q{cU)9)N&i9pJL{`S?f#Be?;Nu)--F+q`0YN{ zum5WZYCm{Xq|EjHx=??YGc&+{b3a-E_gXOepuOPWw&}67V&eU#2W^V8gwqQzIDcj# z={wEbk!(L`J4f@a|B#Q-0*9fH=Pc^rFdg2TW6i`(?jAVjQ4MJAWsqEJpJpr7*Gzc~ zmSC8S9nM_9v3i*)&jZ0q)P8VWi-{~xQi5W7N?){PFiX;AyR})^Pw><_lTzY%lc0_A zv{CpH@T?zWO?U=ZA>JC;6oRn*G&>f1wPVJE$iFP9XvSWH{d2$5nA(h zS1dJQU=*v3=4)4xTHA1Kte!&RI1g=9sf{>6XfdAgXF_uXZtaLNB5z>`uEWGY%Zk9#QqGMR!944x`PNkW5>BG`XK2nlbxq&#I=G^IBf7q#1F@hkoBNu zpe52Q`iaP);{>VWmfOlmxDXQD^gfYBTpmc;uRle%G;agji082%E+haSbV`uD37jbY zW1RR{EgOx5tKsw@I94K!`XVaHrGu|@KF}w=4A!p@lJpJ!xyD7T(iWL;9#~B2%eX$D z6C~iI6!dkDa76SXrpX1-4{M`DHzK(hKmEcEJ9P=HvTX91iyvmYWVOMMGdC7p&X)3= z0|0t&@Gr-4tA1NO@x`stxYPza{wuFak5+3#qasz~Z3pM}M*&bDU*OS=8{nW>}JMhC4TeZAnmMH|_LKEWizioL(oLyX9YHSG?Co z6<#t8$9SKr#=VI1M@5En<3DafwAH!|71)<~2X@|9w8CEgiW{(Bzpy1X=$}l*zdbL3 z%-V`@uKb6;7~RwFw_ll}PW;24sk{92tVnVM)F!SQnUOh~YP zbTIu4X9GEQoME|5pWU~!oramo1l!x*venBQD-zPXX4~mtjl_z&X=2v!=jDe#S!(DL z{#Gh=lm8Lxn5kacg!cJWb!?OW(TJC!Dq-PPyJDrD^e^##Z?}@?RN-d- z@<~|oDER}ST=<@w=4mH9qEVR>awBrZa(VgtHLc7p4yU30zwY{#Z3-tW8 zd63qch=ZMHd*PQW(}&4hut1&N?9b>l0#aMJ9t#bG^(faT#;ta2xgFIDHm3S4_jxh< z!cc>^_*1PvELFY5Ut;c3|JdTMHt$pkPx*VB_p2+P@(+n$V3`HBeNC~Q%A_l@?ICLG zQ~s;nEg(#tdTBzg8dHsP<~AkbWP*F1_9t7>H(VE(j2Y1lSv~-#tbX*sHe932dc7;YZBDOJN#dmeiiqRP=YGIVJ_~_d(ppA z760=Iw_0hnigWuTW3U0gs^>Vh_DOFSRsY)MxS{i^(YVg@t_JM(f9>*Qb^Ij^)>eM; zPD|D6?gpPKc>Qwxdnz?vRlI(Aq8X*)>>1eJKkg{D;LqFXRuzr!w^Z+pI~uR*L1OgN zd1rjOnt$t6?p1r==a6eC>5YB%dTlIo8^hFe(ud+QGgW4MW{xVHAC1E?;xirN(`qk` z>zinNI@8wUGkd9+d2jYvmE=W$6X5t@LT0>{xJ{Y3xo_325VJY1zgHc4v7DTk-F}c$}v2w~2^t;!v-e+xK;tepBjQRWkvGb9W&$6Oa_%q@if3mOtW-@F9}% zxDNZcI(5;*3D|Y$G@tRP+a~) zUG(w#EOqEkWTN-^$x&)s(HcalagrCOVW3#-`SG9OmsM)Vt&C0RUg#Jxfa5IVeW43A z?Zd7{yvV~YupN6B;C%ezF-{t%s$PCJ3q8aTZ|F5K%h6_e#z~<$%8EBy8yAN=Zg*?C zt#LDGJ}dEyGujzSX!7XS!SiS;sy96}pMEZ_`nDYxr^4Tj!i8_2PvkJa5_ z=l5i(+L4pI=%FG;PRmj!z8o9Xuz9zCHO>e5$P=mF89NPq*@THxRO}es8CSu7J6BGL zSDUjZ;%JoTCM2oqxBP9Cf8DzUs?Ps@jH-XjKd)it9{C z=Bb;=A8QyKM-rKkk(Gw=5%HRQM=g;8j*|fg-w|Q)S7H?gA;>x_S!KG@Q$oog$qqO} zq)3Fjlr+MHpc|yCg=S($j+b~$ka!?`#o%*(On021XVMDHAzQav1KBSVm^Z8EZ2`66q6Pv_qf{zyfDYI}&&e1%V$V!lPM42wEg`y{6Ts zZ>QvVe0aC6P`~e*(5c-ZM-=WBaB>Ik7$hs~J8`r8>Yb>`S(n_3sXUG04SnKb z2{WB))yOZLYUX^sBZ8ZV@rLmnFhq+l zi@}>jB=3hp?-%@nh$+fRq5mz&<_*i`20!vpPP||`5&2CGIr2LSb|a!CDiOL&Yv#hj zP%*lFr@h#HGT&SFo1Y9^2~#pC%#`w~P6!f_sQ)V*e%dLBS&?(#+~? z7~cxxwBT>V6nuoSfCvyLazsunse_y;wBBS2KEKn@yeqMdY%T>ofOIa(sNe*#$AcAV zf2Q6%iWj|`6u3YP^t>4~&oi}rsK$bi5)s2E#op6`I|N@7Y!v)ZP;Wtiyf20RMzH@6 z^71PY-J|VtLZnjeA5(6YNP%U97~jr6Jm+i{rH zvbDG$ee{&~^Hs;&s=bjY;@enqiVQWjs;*64$x9JfR~a$zmL%2sd+^yi22nMEkY{fH>_e#x>3Mg)bg z3lRa-DU1|+j&v?&bqshLe48U8D<>0ChPu0fC}Vn+9YsQK*+kX+fqazBYmqptjSmtp z!6L^uwtC>cq`tguau}mEz!`_IqM#|!G@23}#+5>^CL*lsh2B6!G20__BN1UgD)ez8 z;-EVt$mh3f%ZJ$~5j2&`LX1?oFe-?M9A~?-m%|t|EbRaSS76w90l`>(J6Oqw+M-BsEsTbEga-n+S?FmKd`wLa;gl3r_!YSOZoC0w%dh<5 z>d+vZJ$Is$Hyq#3_F4lmWi8$n7uD4;c0wlQMyta;XD6xy54;_=>c#19obERWsFJ%&(y`oo>Xn3)=w&Fq$RkIsRBdUoFhLdGu-fhDne7)t4=nI01#M^* zMb*9RS#P^Ch^+>TQBTJYC0$1{2QL)*r#m%tOKFPQXC->=%{rt*FF{C0^?WeA&YK!z zhMViv-cd;Jyt}a&%#)@I9i`mrR!b0XxCmE6kMv7W8`sbBV(oY6hTTZF-3ea%ILwOG zI+|s4sPJOJd&{ii6g4I1A+J3f6;0HFGdhp;+W8lAk$FM!fCLrw0@81rs_Gg@Q5he- z=(USs)?Mw@X7;1uYH4;xIMzsC?)^!M`rs4Jh?algZbyX}#D#vQt$Uh&qv`#W!LW7s}%(m3HZX{JYym;2yxcXH^8b*RiE7|Zgy0HY9u}XQZ#sK z!BIr+4Cx!;@}y(#O9R~^qM3{9a8!@N@q-`z=r1r0WuNxe|{4f0<>IRRE{1r_}@mQ>4bo#@e(y-7KNVU{RD-eY_ zHop<;Rf?vQ^*gEgm2dmh$@}8+ntlAuUfe0Yp~4f`6PvAvFmX7P6@`#jr7_L8?JAp? zhD>VcnH>0|h54yd&?<5Q-EE#~9(mIt?3?3Ww7X)f*i~)m(`}($T-?^)=M?sgz5N=a->KN$arV<7k zrs6EM`=tRJ8wv{oe~-Y)mf6)a;&9VelPL8>Id;KB_Xy-5(s4Z#2C2K}J$Y-x*&c!4 z!^~&YZzX}F)=snGNT0xn@N*Y(8t9d&ekuf^h1^|xbSqRt&(6*_hbzzIz_#-XqpHb@%Tq6QeZP&$pAxtL-{h{G61W!QkSC`E z)?{?YCz%$lbE|#*(Fe6s@Z_|>I5UQujo38ezqv77b*TxovDVt^nwmhVH85P&*94N=Xk*&o zodDKTsL5^|F;DGWmxm_|xS{h`Vypc%fjO6^u{wmcM~0&(Hd=f`XQ(wZS!-IH#eX;I z$|J~QSBvY>>bs$YcpU_~qTuO0(*wDwK?)pePliJ)Y&jb>6d)@$Ouaol&^Pojg6p!n z(GFA!VF%Q!sE+nfSHyRShbvOMztZlDk%|?@PY&E(9>a4-T+e&{MyWVkoBluJxe(H^ zY+e8}r$6AbIfc}C)lgy$(oCA5r25pPuB;= zW#5dzrE&#-DqgHG9y~H0F-_z6$JHU@cU#T5A&_g0#2%{~0!g8Z;M|jCzX>adFD&EC zFr(!abi2TJ1N=q^*?&oU)3P7KG22&#RDlV`S4}4AbYnhg`kr)*(lbiQm}F*5K%8JV zm3EoeW^Fp9n10i@+K+adax&T?9Oei!<0Iq|7^tO9mNQ-;tHR9S*EJX=H8XmHMrCID z4+<_Q{J(2x%m|8U>kRSKFC;4;441-#oV6Kh3XXCcGIS{4hxZa9V(6GW;i{oP4 zs^@d>;sjM6Zd0qAknLVI;BB{>`P!w44L98!=wSZ8MTPMc4;MPSQt_d^nmR6v8tQdQF!;D)3LrkB~Zgr6j!-$@? z*U(G(dEKzkeNzz@!lQhasl1-XeD(bUV_T~3p};IZf#U4%w9DbHd!Ucx#xnYM&^L0~ z&1ltYejp`c#oPk7ZD+aGsxk8eU0c3}#rwQm+tjh^SuJzhkp6j!Qjq?M)yH)Au zX0lp7AsE~6$?bvr&sR0-9DMJOh8cGT28Sbc^=kL#r#p2}n!)Ln_EZ;X49IZ(~J zH*ioLvRXx{!uKD*0`{S#yoUOfftBGAnJ7c?XkYO4V`N5x^6hJMk3?a^GGs@i7t1`} zo9JtVW+lzR!cwi!d73UX_6VH;Ivyjj8BbgQJtk4yFcuW+lbbv z>0uaOQa9f^8}?j}c~#!yG*@7u;)Z|y*jcsVm3X3)y{_|)6 zpBXCLl?BRw@!rnr?5?p`o*XqUUA_B{z>*l&+Q|7%ix7FMy6f>kR%nr<4jFly^Kmv3 zs{$3Yc89a3L+h`QUJO-h;?2;kBrd`9ka(wautX%VQp5+RpL#60(|h`11= zU1AL!;o&u`ZlLP0F%TEJ%ULty0up1*1thi=Trlzx?{QX1d6j!U>6P*o@;(f=h3+cI zF)MeuVt|R`_2DUTHFAsycV&X*f)&6JuWTPCj1k1~&SIQ30YgdB)w1$6$(c1+6J_NK z0&8ggfUJB?mI*NUdIAibPjes=L?aSXBN9d<;yOmZz>Y=)R%5MTz2JJm4T2j5Hw$hR z+$Ol4cspiz4bMFh7!VN}jn;=VY^_UxF|%GD@nQLw{2Z*?qW!j7BcQ~5!&pbW0K+q4 z2WSry3k>56Vj-4C+`ul-pCxw1!3M-`NKGQ<8qW|h4@hJoN z16=F%DbRWv4k>!t4f;6EAx#eoLF?%^q-u3B&>0QpbAg6PbD=U{38Y6ev7+!R$8V83 z{A!@BxzxD@v?ik%v)SLvqLkN;PHiaP6)3cDt3WxfvF(@RYw zp6;byd_C}{N*q{;qo{WWFpG%5+-mFYfX}>Lb-o%Cz7yc$Ud}B8u|YHOjeyrm?5*0o z5oiO2s8iqeO;JJeGJ2~U$=jtC+&(=;E#5!DYjy3dUIWiQgmf=;rljE)J>j*AdaL9& zVK-0h9n&X8)vmiILXCbi5N2)ct;W*;1H!|%q^R|8!ee>g)9n3pvv=>XiTDitRv^kQ zL@w;oyNA^7m}sxP3)7uyHS#TtF;2VHytgo*>rkQ|1=?kiY;dw4YfMyMycLMG!_fI3 z(v!AThimbbXip%@D(|l{_rUHknC*0Qt48f%LVKRt@ z@p5IhugClii!z_7s>}(w){JuX``dw3S7G;y9Brzu7k1X#RMyEWROa-AWRX(@6~f;^dPfJ<58_&}!r^xA=5JZn|97Ypjd7*sDFlV};ej+FZB{ zZ%^^?mQ~gj{w=yjdgkSLDg1gmffrn)aarF&4tE6QAlR;m;dD3Eu45d+zK66c5XJDz z7%2FOE*95(IWfdMf~T~(tZOL_L;B(H#AQ81ak#2#9?c^3p<-k0{UEHcp0GFsfx{pE z;S#CEaA7)juCzDOVOSOHY^HC67-Z}=IzqdVH-SwhShQeHH-s$`35c=zv!^2y4o?n# z*ol(|68k>>Mnf6!_R%KMzaYBiGoA*Bfr+D{guVfeA`zmP1b9&a5}q68k%ZX8z$V)2 z%Oga*KOl%9bF=4i7{N(XNa6+|jm*bA>i~Svazf}B*ofyA83x-&))VouOoBwbLz?WO zNvNmM^4OxL@=-&&Ht`DNfO%tVizYUE4zu<@RMbkkQlxYzZ*HsC;Zrj6ijv8*4q6>k zSYpT+K?e4~8!>ct6)2QT!<=_(-h?R(?IoQKR2h-a~`vW{d zRvbFe8B*Jlp9;)A@u96?A^*~71ZN0MOOt`@nKTVHVS*CeWRlK7p4mP67bNCi+!j=u zHoJJ*Q8FGMez*>)4dc|oC=j8 z&pA5GXvekrW8kE*Om_fDmuBng%u2{9#knV&stF%Vr>$YkVAwI$RjMIN32moq9WMh3a&FRP3rjA4I7k6_YQh zi+#mqhO3(oAH+spDvkZ8Z*-*kr0Aa1y7uF6zm@vAAQYo~!+puB{=|fEb;`H5y-GWB zFivmo!8$s3_4G;N9WPgy!&9IOhC5z(5lnJ3mVGsHKBX1(%Koy0F-fzFVQh6v$>9_= zaoFtWwYaw?QdKP2XDiQ&mbfdYZ=i+B|1^NxZmvu9sFcUwPgc)%-Xe9nC{ z>a*3mS~>b>n_rsaRR`k_Vae_9xZI@v&7R?P9mYqQ;SIli8t88RPa_4R_2yt@9t_OE z1nQQ9flJ!-G!yk4^e?@xSB(E+ZB_>lVqI$G?8;$k+SvRSE&j6orJDX(pbsXhTR#i* zkNDK`VNZ(b+MryA0@XdLq3m_3&Hq>9KUA+0T%9+@RL!<=wwl^DELL5Z*S?iHc`ERfdM`JuSPdQ@ z7PabhAilx=G4S>OsqE$~$Cgz7aiKHK-cY?eTdZRlhLFr?#C9bnn68LJr#E-fX$?&h|P7I%oV?PnvC7 z4i1XXV}FD9KKM~DLPJRSoFo=ruX zy-B>$N}olASN&kngN=ZWIpaZnuo-G^-TnCVb6~r>hr`R(8<;4A_H&F}<1KO1M4uL# zom@Qjh{vhUTuM2UxdCPI(LGVB!!Un%k0#SQ*qy>AyUBRy!>kvYFmc=Vth)spy|veb+g z)!w1p5JWTfOYvA7dh;B*(BR1AFY_*j9v1#-zpKH6LusC)-FGvVsO-^GQX=Pqj6;ul zBvN4&Cq*qeh;Ctu8QiHJ|MvGNRxdSmN2IQhK2>>acCzvnW99PQ>|mB^e>~9Tyeiyq zpDXxjcu04+R0pGP)asf=9BUZ25-XiDNbRN!(m`h-C32i7BaJtVV)7?A>mXF)f+)i( zHH=CkMnZ6+k!6DRQiY~Gs}+W9%$iKNVsd3pfh8c-wwjQ=cP0dL*g$nFcKKA>Vu6XA zE=o=_MZN1r8D$~>ZkpfZ6h_)-0iu1%V?YauAux*hGRGOxFqM%A*ks^@oDSgDpt{u} zA_9CTalW%9oB^sQ4NIGW)&lH2BVH{YFJu{j`D{r+2p8~)+3u5n^)VN6YP9?8iVQ`ss}P$xZTo%BE-r!2IPCl>Mr8A9@z zM8vMd;gYnVi-cb+SSna1ST0y0I7|>>)AEqpdW&2oCDVhT7*q?Q7#J3Y`!zz(5S&FE ztzHRR)w^_%gbS#{11zC&w3CzEs;B)0A}#bukJ=m1T0C&Nsv4M+7`jXpzrcBbHi7E| z|1S8n;5NaXg0Bg_Blv;fe!(MxUkjcT{I{TKA`j@H2QNfik)knCFhej$kY^pxUZJ2~ zECt<5=zfAj1cwQZ64W|Bu+KRT<=mhZ%J4Ev81n^rN&+q1MQn%VKcVXd*At6Hkqq|q z*I3|-vG6g40HN#81{l-c3uDH_lc_w-eO25}-sDlLnR& zk#!Y9j}?341+~K1Mc6tk^euw764CzOCwRYBcY>h53*!kQ=;wugQRqEFYsD}K;4%mW z{YFGUUFb@QVZ>gDkkI-P0q|RqMp4ZdzE-CKKXf4(mmm+tpr7Dn#O^4@LhIWE;GjzA zYQbrOGX-Z8a}DD*p_dA-Bw|KYC-kEZhKx;oLBIN(80-|>Ma;&LF+zVN_z5vnmUIyy zeK;oY-(vnBVgVW{HxT?7VtY*4g!Tzupb`0Bz!x-UC4xf*#|hpjs5k4v-h)C@afTjf z%`>3BEC5S}FA87p$pill(iq$6!!tpDD&}7hyMXZ(Us@wC1*4G~6dXrvi>6YLos`wz zP@Vo6eU<9@bRb-PaYp3@++~0^Np9ypVoE5w3>UsSQQ_Ts@8@D6{*7wdQ1(y z;Dyw@lQaUcg^28am6(gQbRrTZn%UVFeML9Ew8Od$u|38JMC9{*L{!Poh^P@9CsOB4 zZ$Lu<)^{;nf{ux)h#H`G#iNFFAzdsT6grJmMg+V(B52(oA);M1jdB86I>r@ZK{xP- zd8N=nB2u76=ov($#B!lm5|JVsgx*L*qtqz$2SlXMA)${Fky2-fT;BMNFGw=oJTt^h zS|purjzM=NjU+54f-WWIqLC6>H^)d)tz`)FDdeMkEfVv^M5Hj6JLq1wwn%Ay_6U)& zod!s9-K>KCfOMfWtDsMkMiwM8??CJC9>@xv=b($oM>1;dL(omyha<%PC?c|`TIeZ6 zWYsLoh|&V*l2I(jyY86dk5x6kV2p|>7#FREv<%KuJKw2lt2TGTbn(!MaA&&MFfu(j zFU(pJu8(+C^LHe;qembmQB3r2i86D8De(hAva9}+jdP@MWNRGx*EHv=p-t8=Z_W-^ zgYWbw+qAwwt=m6!sXCCG9HweoXQis*yx>Un;in&AFU*ox-RjJzALXe%C$~g|BRYH* zsV$H8PEk8O54fR9h^t^LG6Qbq&Pl~VDp_;fs&P$eRCFQK%fexqKE$fSo!?DYJJ;{S zCaKoJMAcZe0cwY^kt#Ogl)2{)d`P}&NVqvqt=JTsV*aM~whkt!<$1lJf9ad!jjm`W zF;Shmt0Y0q`udNkx}!Kh1XI$v4fx>x*K7fTjYf5N8$J{5y1T^NZUkHxi*G2UI^h^T zHtZ+|j*24?dVXz!DRrecg+b{28}D_iMK=~Fs*|NLPw-u^4SGN z({U+k;}5gF(fi;EWnR0=Qw!31rmHi3o<-F96o;$Y1D`=V6h+pn%*xM^o+Dd&G11?f zc6W-Z$2(LNXf~8)<&!^*h|=OwBamoNkSw@9F%e!j4`e0p2ZU?^?M@M_HnLm3{d5Riwuofz&F!QPfFpJ}@C=_K$Re+{1J|rgbAb9P$ zuusATmPY8}K$8nex@~Ic;6W)#A2+!Wc6e`t2mA#-Pe`&+Ea^wn(-leFQGf4iWx}X= zBoD#WHWU*Ui6S-hUjJX}qg9dI3VZlyY(i4*c>-xkG(}TmqrK6qOPyAnQhKWezkL3e z6juy-Fy|ZO)?YsNcAV7@*^5ZhY6*U9eprjj&hz40bR<_e-zfL}_%D>g0f-*#(OqA) zx05d+nuU_j6Nwl;>d%&OV?|1n(F9epJ0T@$%6Y;Uw?U(?zh$m^A=cY&a~bB7NHEHV zH-CnSyV_7rYv>7|Jm*vAh<1oAj0UOBEq7+w-O&O3q)IkS%yUD)a%H{~NXDn%`R+-b ztP8v8v;M3pZ#DGl6pS(dOG9u`eC$Pc_>A+W7FK$*>oG znN@AAeETaSA#BilQ(gB??7w_~OWm9ZMS~ zK2!!Un$V6i;m)jm1OIInB11jVD|lgKB~~j;eBCU}z)cvz0(K3C4?j~YJ^l;D1Sjf+ z9mrONy@UA|FNTS=*B$S<5HEZ-;Aj2Y9c{PPq{A@v7e6EHpbv&0y5rWWyL$&)r*=X3 zO?(J_7qt){Uw=g$O?-TPOYP|$9D~y3Jlf-klL!dyZpKiincX^7Q5?*$60_8_;$YjT zLx`IdS&OQXkg3)c2lGQsLO(%bSdsf+Qie(qea{6DhqM{q8RDV`$AdzgS0eCg2t}6-Vwys7rnS}O5s6Bkha8fL0dL+z{VArUIl3*(jwGp$i zOj{D{ZJo_l>3xEou@U+5KEaEvUt6i$`vf1kIE~qdufd57wzUnl%*1!!XMB(oTZSgA z3Ms$`AxGvrp}f+5T>1M3yIDuP>Vdw&%n;6?FkG*~w(E@L8Hg;`tV3O_0K=fb+pP;c%+w}^iLbxO+!RJeD$vwlf5YCUcLkPb8WTj_*e{qe zW*gnlu=;xXLEuSPCquh`121H-#5(R{E@V<A@4E^}k%t*QzelV3dKC`ZL6%P-`ScQAbnwZ+-S5XSd=nh-jW6y_p zLxC_V#huOiRRG3(G6uSelIDQX4UE-ldjH_Xp)X8NG_n(>OhQQ~Oiw{m zbG8(GvvyttwpePfSWvh` zMVBJP$t>bP!%L9|IvA;I7_FV2-;pvp!3M+7tW90R%)Z<6ni^FWY~!27qH~*P2)%*1 z?h0V(BYHo_vmjGFR2J+InvNQ(jeT0iDf-7mM_%appld>ck-mhbXQX+G5iw$Erxh~= z4}`(z^itNei_9%(qFhEsJi>cRt~NK;YYVI)$rF(>Q6P8Y=PDYSyb{b1Vs9LB7zy*h zn1^>HGc6cVKO%6RpzVkERwQNoirkL+6v1$}xAPEeE0S&+P!yt0A;j)1dq0xKilk@{ zT(zo00PSUFdITD9XeJ~_eFVGqrignHU@P*479s4cf!)mO+ku`Ed8ZFv<3Z^`w4zp{ zrH2~!5;kpF$B`<$M~)9eXx3&ipZNW)T+f>bc*YB0vE1;v3O}=!C;VoUO=rvv z7Om~{lFliQ)?EYPTyu&+v8uYt!SS)gZp@af>JB!V2IOHp`Lw0oqUeTytbQ37%nOy$ zFdBw^U|5MCE0>nL7z8W4>v0Cu_dO!RD#?dgib@8j+GbafY#3c{nkhEzm4hf`(MB~k ze604Y+kA@fGi!NtoK3cGBIq*OMEy5>iO6ww5PT@ZtZk$pWOo3`63RZr$T^HgnhhPF zAbw`8uIwmA#$vWBNmhzYJN?0^C&RX=LUFx%DZ6*P`mW{7@`ew~gH^7GrLe$fqdIld z)hTs{Tu?VqV=989R1wdt;mM`ctH(UN=^#^4vrop>qx=tZQdNBiy#1wh?|tzqOuA=m z2v-LdJcEh-(BS@PWSjXVY9x&SG}u( zr=alA>+0a~)c>tZZ@JXoby0o($KIy9M+DQo+L6!Ezo#m`+A=0TNgeMnGt^KzGI*b5 z)~Qdf4Gu`Z-!|>E1ly)kK(cFH$kDDpf(zPA)p-oIP*#izer#@07mN;e==k-#BD-Z5 zJHEZ0oNXs|vRh``sZf=0tu&o;MX8zJv@M`sEgT(u7n8dy#{_S{(ZjEg3AQ$0RNsyX zwoCi;|B$m$bs8J&W`3l`j|~pQuDC5@gTu|EDy%Zt%RH(2R|YSQJcICNBo^Yh9QE#n zGrOzb9~j$0y;B*yGGr(89E5n-Eeq}LKKo*yor=?La_p9!>`p!#TM<%=?1*f;Rkj^n zWXHMw9)is-cAD!0qri^WqFJXAI$PS z;9hR0bhHz)?GAbLgh zc~7||V^BXP#kEuy1%l&yec>{Fwio%MYkT^>HA0F*aGn1%p{#e$sJh<+|I=O%n;OQ_vxaFGO(4T+7@=U?sawlLfsL za(lX#D1Q(+yjR^H435P{;9r8l%$ybQrDd+2>-t`Mde?cL=DNO9J;ntK%uT9#TyRxh zGLt0NHO+}`yifym$VC%##TueNoUNoz5#)AJk|OVy$A z!D;4(h9MJzkK$zHBWaz~H=V+g8%E9yz7nNoZ*7;Tid#i^)X6?Gum|UtwEk*s#rwF6 z=F2o3uJz*B7*)6^*s7s%Vepvezc0cm&zzxgr%efI?_j=@Jjs9 z`F3o5iB`4Yz-z(Ss89$!1-B>MA-I%?wNHJ!Dez&^%dwCk=FbRj7u+TImf-t>p9oSn zlJfN>e85vepK%bKJ3>qgHWAwP`j%7BDZ!zTT`BZ6 zf;_yQ+WeD*)^jh&*SDayhyM%2V6osbVmpj_g{~7^PsH%;Nui$=e1X^+hinS{w%~h2 z^xIzuenmvUe-QIuh#`ao$8qTt2q&WROAxxHU~9p4L?2=2TAwYs_#e8Fl zSlCRQfiGTy9}53tBI@vQ!4pIX{zd4s(GAaj6dZ4@y7lcOb<41FuWEPy3ztT$Ms2sS zG*YW>`#9KE9lHEUI}hY`VeclQB<&Gw6#PJCcbb?O1(V~#IibFK=*o-;6k|6AbyhC! zMSU=(M@NifNdkR>d4e1zG6nSaCt!D>i!`cUPdwc=1Ie&9JuXjJ`V zfWw3yAvj8~ns_}DO|V9AhTts0xq=))vk)y6TrRj$Bl4CbYFbz?xIu8E;5PMzcUe|w zH_6#3HiG*E_X{2pJSuox@PyzQ;v&&g02(fbb_?ni4Dj_Gnm~Qr3oyemSO3``%ueG1 z289#}77LcDiw*?a7E}t!jk+m z%P+%Q1-B6~G1)G-lNf=oM1s4CXz%t2HWE>JKM>pp4DrkGelmcEh*`(5MKm?#P$EXe|ZniRca13vM8y z7ucu~XJ*!=gwU98Ckfn1yc}6BxSKcxSuWT}94a~=zGXT zUWW`8)EBp+xhWzIEGD9_Di!4VGh2^xL7ut5W@4BiuM)V(!V<$MGJuuD`N&|wYT~WP zV8NRIkG3~~tE&3q#qT-y9`3zN_cDVZ_cEv`Di@p;6&w&m1)Op$Q11k&IF;G}q?P?L z1qYT>fsYd+-0=`@B=Q?p}MI*4}%q zwby327#&RWE>24-y~%VKGlPvr^UUbL5Hn#cL(GI{8Da)7Z_~>mm>pmZ%LB8DAqM7oh8U3Y(@_|R zvf*e9KsFY^1CK?bJmC6+F7QB`!f>EQ^FG7Dkk}glhd|GZA=b!P&3R%#^($%5O_z&1A%Y!h*R(+0mEsiDMR%9c82Kr zpBSRYTl)c`r&lmU&$a?Hk9&3@L-gnshEYuM(fr(V%?#0VzGlG3VZ6fA_seNtwiZvX zrdYu~LTp}5vjM?!IV{+7AfOHq?GFi7dRnw!gWPX{)?N*hsu4OMbE#5?AmivFgM3Ps z0Kh$AP)3aa;*u(g^+Ku@RWzI7jw*T!P^zzjMh+enYl7vWX~)deQ*Td@E&~}(>CXUJ zoB{dv61^P@IV~_CJp=vQU{Az_+D(lxvXd4XVMduEjP`b5R-^++yU-K66yGu^qL~euezJfl)5H2$Wb)cU!?d5rF*Xnqg=-A zSVL2QlbX=o#fmBa8sLRtROgFAG_0Y|ILcBI{E*m&YGFJUIZE?GkbKHx9Be*)8Xra# zjB?Q?prj)h1NBN1G%>n_u5(D(-5=|QH7|K`5PON5x+H7O}*$CCXz5X6hAy?8~SCK(cx?Fei0={C0k$E;*%# zY*|U{YNL;KG;}~8bw2S$sOQEid#Vtzz9>O{eV|8!)@6wO+~tNV(WT3n=owyx1gZX5 z5bP_2LD^y{*{=%av|x?BwGc^cT6=}=9!AEdjdmY_9@uE_M%C5!c{+Y$hmvdUtv$9HyPNI)EPM67 zwx0UUcC#LaP8xUG+pTV{)nObdA7}*HZ}rI+EcDJxPBUeWw8PHD#adW&I}9C}nx8(@ zk###RN|a3g*i1|Lri1Ob9CJ)LCS%LTX&k=C{R2h33wsl}&%*lcYznxMV<~-~N22<1 zlppSKcf>qv`Pe`I9(UzE?nC#uZ{6b_g_+m#Aw5x3Nqs+g&O(n&G?_g&UbK6IarC7efH^et+uc|^-r=t?fGcCBVV8rui_O{y05Tb)hmU$9?t>$dBF&hJ_*T+ zGil>%_WsEOF#Os1kjl0h2(}Ho=VLF!Z~+cT3`Z-*g~f&R=Agd4J^8QO8;qbZ$?w{8 zq|7+5RH*UiOx$PRI|K}@tA+Ziwy;aT>s@=iG*0%7`31hiq%<&_{;=!lCVWI!9L@M8 zGn6JJy#WQRBj^*xtmEAW{2kJI!*QB88M{a0A5=yLRbhH6}QW+A1UXBD6qNRIa zfw`g{7QU{s&l=gM;8$dGFacb6+xvE#R4XIP|D1&z^$k$yDr4jk8F|Zy@UtJN6Xu%xu42J{wwWN9?K9gN~cnmf#V)*{=j%R?LGGG)^=n zYhfkZ{BOHKs8uw#Z2tzOxk~B(#>`BB$t@_cl`(1>RWhoE4zK+he7J8+;QIqFRkXn| zf|7qn={vr<$WV0@WQ8w@|E}7DJBqkQNMC@At3 zYUEJX1dKqMwHTqyA0U*5Vm?5|d#Q3T4Cv)E>LkqqN-9H07!g?H!Ie-(hp$f0YbOoE zDqKt7e*ijoGnC(dyZGDoI4P|?YcgGrEeO#jcZDh#%)seVx+Fu(ruXm!%KLhHsi)&{ zd#*rf1MR+8jMsjMJR|7vhjx2uxiw3n8`wT!K;aK>b}&JLDW)G4`VsbzkN#cwu;r!4 zl}Olo-KJ1|7zH~^GNro9&Js31@PeHsezXJx2|KrzSOI!|Y>5pmbx|oB#T1`TqWWEK z6WL;&A5cT@8HTDw@8NZY#QSialtno;t=oiC^N@2GXmbZaDe#UEI!bJ`fA)W6)`*@y zVXvd}pSo|GhU@*Yy*G89aw5P}anjyKd;5A{e=?5=vcgzJ;UF@b!+ohXex{#i-f4Rm z9Y)#Cv-XGR>?vH^GQaz@r;EfxYSh>Oln4k}<@TJQyz;JnPk1bZ(@s10I z+CP2{_TbNfU~V|S8*%yGSIs8aa?iyt!H1s9+h!r_dAqqP8irPPlsB!I!Bc z9$#gf&eZh+an6;!Q;8VyL@1vl+$F6<~a zdC`a*XDps>WKxc|h~ssjXjUqCxj2O0oNez+J^!{})jx~bs_UwuSx?pm1*`#mI3&{u zEt1rX7wDm%(2X;1+4XI_5D-&cp88gJLae)yL8$N(6B#Y{-8*FRD*WV?S&np}sunNr z{UJEU{ntyiBejl+^wVIyjdmIe1F89tOQ&;Bo$4mx;ek=ujTCINTBzd3#dw)yyUPmo z;z(Onhma}!RKx(!4axB@lQt!#JHIsCQJVsTEBtDexOfho4{?;-rDwRbD8=)yP)C~J zpIIk#)Hg0FN~|lpF))oj33Kc#?R2F%XHABWOXyNr%MV9|Wk`*av+mE#`T6i{Rwm^4 zo_?xpwQ<7GiCOus3peK1rTw^X)W!h`hoUotszf|+H8z{W<-0Vo<7Kr%jUdF?OmVGl>L}N-ud$q3R8JdKnjma6gataP=9qkCiqaod*9TRZ`s*H971!oS;%+5mV zAHU&S!5Lq;fq8Kt+7T60c!{%%tXq9!0NQq6W9ow=pNBs2-DpqT8j1bB^w=9mIw2@q9q5GO4-kpDLRNFa5>65Ri z@v1)zYuoFwV!gc30D3-Z6*a^=e5XX1F@gLrBPU~{$^@Z!&3#QvPYx&X&-iPKFrNl>t zu<`5^2jeirne9?MW#*Gv2zvmVD3GQY*^fEsc!g^yCnyOfw%`sw*d#Rn$%VqBVDxHR zN9$7M5XCDGp3-7%L2-$fKl%WH*{r-Q%w(^1=m&9;G!q4Z*PTbWpcI4?r<*=gvX7Eu zos<&{p3T|kdo6D1RI7r17;ZeAG)M$1O784f1@Gbfv%E^VuYi&7B*7?-EMFYpwT}l7 zqt(!lqs>H{*L&P&jP8d&Jkxvy!Nm3gzi2FId_O^Pl2J1Lg7GJ82xZh%Gy;EgvYjJ! zKom!bLu=ym`2S0_N&>o|h6F z-@wTDB5Y}P(YcO}sZ{HYJ0bt5<^*?i9Jte8&{KLR$BQ8Lc`KZur0wh&qP`u4`x1_+ z|3x(>Z_vk~o^Lxld<4A}3J_hSR#aCO9zp>&$3R$N9Ak5|19;Tt=ouE8B1th)s6~>J zq_(lF1rnVk#ix6Y*+2t?Y_g^}`Uo9pQi@|MTtXMeHNoP!-o?>h6kwUTyCYbFO?%kK zP0rGHppOR62%sM(I^rmLjk6V5KlvoubD_Iqr$|j^J(l^AD}1TuttxD2$A;oavCx;A zUjD?}Q{T(+9v;XEk26y3;f7WoYk$XDk&dT3_R;L(Y27G)%L86CtcPPP`Fx~hx)t8p8XyZdaWjaErqisoqZjisLkY-K42)0X>BU*pX+dqDQ4=kg9ozsf0 zHKuxd%Cj8rYr%S&b?sd!DQu20d*%*z9MORl)_0`CBJA=^9_hFyf`>GGjN?9f=eLb! z+WN{SGoAf%w;7h{#%HXw2q)<2Pl_!x>8su5fCs_wZTXm7Y^8t0FCZA)r?{hq9QZ}mAiiK0; zM{hj+T#ipf3Mz73EFFZn-q>G`V2IN<4&L(pcL&3Vm8~b==zo&kfXh_4nc-YTX`b=5 z?8g4|J=Om+hOj}ptG5c7X5zws5BWkRM@(VFbgS;k18&e+k-*0 zl;bQ1x5v|WuH%AN={6LTB_Wp>f=+Ys_;zSVhOIQ3ISixlA~3^fjpjH*E3QQ|jKfpJ zr~ykr+VRTL0Y@!{oiv(*UVt`@=5K~wLGO9Z=&1@W`e-z~?&1z+pk}lIKhiZCH^YG% z%`=|e4?BVa{ElEogrl%I_zR#}qhE=n%S#=(V$*2q{VX<3ne_Ct4rcnFVc??n%N&Um zd^jkWT+1A0v1|-2T;^yiw53hU9PPv7T3$rk%?jCb42Hy|x@lj;4#tLHWm#u>t^= zi~*!~P`whxjAKa!GAS7cH=3AhgU4@eb6~T*0-1EhayU*oO4W0?rt!+!$Kev`QBy>u zv=l*dsPdP(U^AKsX=u=-@^_YEDv_muvKUOGSqw@jdGHsY4HFbKtT@e?rmYY;}f zF_HGHaI}@m{4_Yy$)b>E;87G|C2C&-^hpZ%GAo$eLF-J&I}d1KuENl-Scw!4Orp&z zIR$@AHC0vsywos>kBh&obYzQ{C)0pcjt9k>0(xzgV}w{Tg}hfgI)G(S8G%A&u0}Ey z(`dqKbi#5fUyY3SCf{b!*TWmUuSTHJH@`D5P)wDhomVR4ZcRQkqRJ5~MPcN?zJ?_KbCp)DczH)?&o10Deu|866qaxnb{LX4jl|jOSs5rTjLni_b0TEE(`yh z$KRcwxCt&3{sd7z#wKE_@Q2xjJ&lY4yI_qY#OH7B3hh|@Q|D=1li>xR za+jQeXF?HvO^7mApIv7_$D6<4Fg36`v}+vLQuCKJf*B=l*HKg6wkVHzv*Uf?zw);| z;BWh4hg0u9Or}@zJCgay{8lYY?ml$kuzL_&)e81hubWXIc$#)Oj%me%LG)5BM#`}u z`kUd|AiQje5wk`aU?uN@S#c9<7lv#dwo|$!GiqBLWT5&*kD^3%4qvdXf6@sLDeTx? z!-txsC@>exNI2A=pW9fDE3Up!k-S6!+mGNH^g>@Sc9#t?;34lcgOE(K3j5-|^)NJ& z^`*W#s@UU*7YZn*R}ff3wh?IGmw{~pRw~D!_?YTM?7W_%G?REWggWoVd>9RSnn}rD zn{auS(#*J?Bn05(XMPk<3`DI#CI{(ytMOq~69=G^XWfVF_d4RqwdlK!VDQB3b6^}} ziX&y8ZE;dpuykQ*=^G@rc%LI#+XKwpihwcgJs0<3(@aaHLSOv}j6NOSGo85K(Jit6 zT|-sJVsRlUq#X}joM8aeix1K{!Snil$MYgRy&hKh)E6)QJmWA@-8x4Sz5J@91I6ay z$&NuORexZ|_v>p8JlW|9c-=8oE31?R!1mEKy0`(aKGsfwxS)v#?AfRt*u2h!falm2 z2xH}8+PnqhOBtqh=&q}c&zY-hKj)!U_7lH}n;z>+4WSVD#2;-9-0v95B|IcApC~q? zNfuP#`9gD#EoLErVz!lADC&(2GaWqpyqVTKzY7_C0(NLE9%HP6&2c)rYA?8DOCW|Q z{<|oO%Jzq27P;{vWW#xf_xAVd9peASV6~jjhtaVVSRDUnw1ypZj1?j*>N-4BmAYiB zQkP+#jUPBdba+pdEQ{3R_DIN)?Z4Hi*FYRi?^S!l^_nWJ&U+DxL z)`^%#M_hHuWFy`x+WO32!Bt}hGclju=xDdG6_8k8>kR#aX?LT;B+R3{%si|xd85#6 zcBmAeJc_}1vk~-mH@ii~5Eeo3T1JVCl9{WBz0dcHsMU!l%k~a3NA11w1?s&)cN*=%o;Nzmwoq zjUm5Nj;><9NCQtf2Ez0%<*`0Q^Ip<%eEi2chx2 zBZA&|$nH(ipE)AQ`nWytZrn_a{bipyUJTXQcn)rQusH!D+n0{nL;bM#l5dcKENOy0 z7q4Tp68bxSqYC`5@G#a09TrJk)4q7wFSztE5D0Z)slRKs$_vX5IabSBquT;6g>G|Cn{^_Y)8{aI{oRZUma~I z_BY4h^kvloY-8FvyHe6tOqL40Q=%R>kX8K_@PE^Ocj)Lsh*M9eZaB`|BfC~s;1~aN zm?(dgz8C%dyJH>Iz6?zUpV4|h`sPoEML7x!Vip7`bFj3U_gjMKfupUAo|2o6Ndiqf zHa?2#*Dip8oJpW{&FvRPlYeOl9uod_K``b>-4FAV=;VFrQB?Em0{FMWqTB#4((MAS zZ2l^aE!RYEYubYGcSao9T?$*?K732kPo>^#yu~@l_5jc}3dlx_w zF|{9NYV$~Q)u~63y7?)CoLnF-z73_AU)SMLg-SdYRx)aw&e##r0-;EMlsf%5KTHkh ztC>i7e=G>{!@!UeX9JDtsA{Z(?E1FA??>ur`(j?9@fH;2bQhQ`R-pOOUZ}l1$BV(OmzCFlTksjmM9{23xBx6a`BXVA9pRd=ugK>;iA?fq zVb&4b3{V1D80IU>y!h>2c~er$Px+p{xB@hY^#hs(aEWG6z$9=6hSeiZ{J0@ziejsX zYo3h6`mrDOjtP0vX~=Wo6hI zT5Hw+j@AkBrP%B;VerOgUWRbTvb(EtMDT9$@2*f2@18h?vOkjKj^HHa@JNy=FDIP_ zDB_?qh#~f{Jb@Xe0!H`3@fy&(4^}6}i_x^dy11PY$HFLfN7Awy*s-6SaNcS}#CXOf z(z>;7XK4>r2#2#)KBKYcoyPD!RR}ju6~f{8Q^I(Vin$CYszSI)>dAJpda}J=J=u0q zPqrxkQVx$(a|J_e@mDd-SDJ!W`Fpz3;$^YsQdB}CVqYZJtc`kz2JuBnWR*UoEJG(l zRCBiKUZBFq8RC5Ntm>AtK|0T|8+^(gD*j~^9$<)}!ZZ*ngGrjBst0epa9>e#PIZ5! z!XH%lBg1fdVfjuA4Zm1trrlfmhSMA8Oor;!lXQZOb|>Lc??>;$>zVx)aag2P%Mh7; z$Pk73o*@d$2Bf(%%mrb6N9KNTBTQl#PGaTGSQ;1TF=v%a91!M3COjB zdl$QrP`w)d9fnBowCX-f1qc5Ek1;dUL^Bgz-gF??nM~1V^CKy@lgrx!=jWo3MKKj& zkZgV%tdkNDvmMoiIf**X7!pjy_h(_cR)*=QYuI?$^{LJ=OVcnZpo}s$7OTG3B6Ag= z#quvahFyClv_5igVMCI?9UMX!f#EQ=5AZr${f}5iSnFi<&0E;VZGpJI>Bl^?vB3%&iQA1l9JDSvn|t2dsnl%^5g0+(7Y+3OArR?Fj>=K7fQO4h)3U z^%{yd>46NhbPRDatMdf2fJi0(Hqhu4S2#7)noxjo6OBd@Y2XWvs@{k&p)}fcid97d z>P(=~nU5HmMZ{k`W)l?Ts$PTed?XHOH4SsHA=SPeT$OarEOmviwK`qoT(0(7Z)i!D z@75RNpi%qMJ{=vI3B?Q?!F@)AQS*mxv)^crh2G|74hN6ooque{6eHWelx>-9*+;qn zrfX^V<8N+jTnwkfG1=Hg?i+5vh)_OO2zy?MQ*r7&WdUgM^QXM;V0P;A2q&c4pbeQ+ z$%5x&>(1kGLmj*2#}Td1j>JmYHe3gui7c5;HCfEKrdMEz#S@a-Yf)3|lhY`f<;ur| zVFo{&nnPPJKB?zz8Wa>@K{-$>nSQbFA=r)?gm*zA-!V%~sK{02?v0`h^$0 zscOEQqEl8UYrgztb+YD56PM<$N65S?fP&@=KPUqqY(U|}9~AJ|&>U;N{E70zE1bR1 zI_%ZNC}_U0(K>ixUfuS3pF=?Ng=J&#!r`>VD?rbzN7j5{AqxD0|IvK$K=VZ}{$FXa zcwUcpjuNO(CI*&r-qTID&v8+cZDkmJ^myYi54Kk+tjgCv|5o~KMV4I3|JN%~p0WDNzX-pudBmZjv?(KJ~JXtjKb82H8heX*u>*ItcDC^w3vnu*H`DOCAEAU#&ATvs|G(n-Y+=dAJiKaU2k9Qy`7IRLI@rH69&@C5P&v3Sr$$^IA}v0Gficp(!f4f*(dFc3&+BE z)yS)AD(;i}DsjsryU-)z${;=-eqsZ>rghVO%yR8wLe@al)zJj3whAXKpKhohN*x zGwH5#r>Ak`X}v(t+^3Hfy3)lLT%q*Q15i1#c{`x417#L^Ym9TUkm9k9b$(&ecInYw zKI?jt9Zr)F)d8KM8>_)B2>iJ76aUcAB&RbXXa>`rNFfoPf<~7H@DWADIAcQgFeVfR zjR1ALLF>UC&Dk3W-oTm#fo)lv9pIT(PMeS*+*<`YEV>A6vdOp zH^yjK)dVh9JD~+nIk$LwK_Taj%QqHj4te62I2Vgl`!A>O=*O|3>agBuHtQi#18n(3 z8-^S!Z}985TJ0MC7wQ&64eWZG|Ao2*TeH(@)A?VhTU2ulU84_~pK*qk^7T^=!`oIY z2iUda4`=(ij7R9cSR7@%RmQ)Lf4#7az5U5*9@-l?3b0xRUs==Y*Q2x9#TT!k%5fRP zhgCU#0~8Is^IL>WjLW&KrK6;WQA*KpO-)hk!^MN@MmdM}hN%b5crFq?Cbv-CILEb` zE_qNL(a;wD&*9H!2vQTzgsGYl3Y+4X9Kp8(iXrX{OTnUv)h>p|q%8i!dpXNXIhAKj zjVL$#tg>Id9L?u4fcU71?GM3A;cj%5z5HZr#`C=fqp0w@Qw_uKcjO|@kwg>{UU#Zt z`1j|EPWGC_^+r0H?)WRkGp83&KXHWDn=LKfTh7EM2C0k5CcX)Vlmg_URmfg`^EgIF z({8jnyjT>coVcJ*BH!e0XWFBb+I)wXX&ky#j1eB@x@x>9!|Pjb5GnqG@rS2c8MltQ zKI`l)bfKBgI;Y0HfI>mBg7rg?6B20IMHpA0cu=gkt|P(g<31kSGH1F-HIGfWQ*5Tcl18UdJ7c<=uKOB#QT;@HCr|!nXJ;+h^#3T{mgPLg6W_n_Yzjzl(X>0PCv19Z zLr_%)OusJwBFB$*_0BZWLjy|vsA8LQmEiKU+3wUEp=;2o)_EU{yI^@g{WvsbYgYT2 z$;Hl9zfCubU;ENaA*Z5gLmgq4!T*#U2-kJu=H-t^`lZ`@XvN*$U-pv!VgF+K{)>Z_ zl%w~cS>L7Q<6u!Zl(&5B9$})5U%A6P$LpLw`22_7!Lgz$(X;=sGgc^YA+Yy2<(Tb_ zLIg)}vg8_-8c33M}yqD{02N&LQ!6>bZZU zdhVa5p8Fl@5w(yd+E?Cnn!NJf0omX?e6j=^C$hyD{34DqZ!olCaxjdC{U6L1F#(cn zh8@9&;2EBT^cbdSG`}(gA0gY5b<8=$pLO~_bLRLR?5oVl{wQ4tZPEq63hd|31Ug&r zr9on37*#&-Wh9OJ+?gw$?Mp9w?tBnj^_a8Hhs5H3wC*gN!4z=LS?#wK!MTzgtDPbg zZaC+(i8uR`c-}bz8i;x4ojJlJ+H~FtA!Ps0a4F$D_CIseWEtssXPk5u^dL)lr`~n} z4=OHArvVq7ZKZCYBu5m?3Hf-Qh>+cW}6UgXlGc1H=B}1@zWvGB!EeiC_Cs zbT@M-rFLAwD#7D{6Z%m(gAZVAb}eLEP1qG-j&ta%L+Fntq+zC*i_Uh&L1@z&kd-vr z)I7x^eT7l~7^U}e#Ys_F{7RuLw5`49Owp#;Y>K_k=4|r+!g>F_YpiGK7tRSy+=Q>EU5~^g{?PAyo_=vB*hD5BD$aLII;m)t(+Q401vN3j(`<3PfM1~pM;ij9R6f0 zl!iu59BbqcoVZpO#euO#=Aj6pu@S*~!^69Y6MsOOg}|cmGO&1DOrv{=u~;Hy!|mF? zfzDJb!!sN&qRm2CU?p+{k6@z(NngN9qw$fo9rt+MhXTqqXp%$wPUF;fcx^yvt>BZ5 z9K`irU!ov#pj0`KUju;nhzbAlLZH0Lj5&zh{0H*Hm}WY_r4r3Lyary$DL&vOzXXiK zEVq<~60bO;@vc3vaAmvGm3A4Yk+21@dauEsNn!#kyrm$@Gjg0vySc)VGHwW0hH zoODVI)rPi50O=$CB_Oyooqw@#T&NHt9R(W5NN?OW!$fVY|Knvf+Q!4|&P- z9RI~a}qh<2< z>(1+15+CxzldOvZ0zAL`;(S<7)+k)MsF+m{OgVqyT=Y|OR3!O4hB6TH&Iiha&+9AptI5$+5eh{P|z8;t0`pO6q{BR!^>@;gpuBZtn?EG=(j+!Q6 z<^1Yp;LOBjolYAHjk zpA`(jUtYzqlz!Mas<)@f;+pTJ*b70`3>Zetr)|#=lQD~70LCOkuvz7M>7jVSh20TI zh9?fzv@r~=8qFStabR~bY^Sbe9YBwHT7nSE_5^I0SUeZID#TG7r15;(*45fu+SLnN z5ehIuXyu#i>M0)VMfV#mxUk2LW4-7lcI<*fI*X7ABzPm_O?K z1xmabO&fb6mhT`g+(iz0mV+87pzN=9#?%-{K~boI6cc&CBKaoDjEfH<*-OR*Lu6gir9Sx^mPps z6SiPHUw~R^t8)gwyvZlUd?bKm zl))}+cpbm~%SrJSjAA|;wnb2_{tEwt zS2Ac_ZJH~ugEvCyO1#(#DwcyT80#(iCjRm4RpfOAICyoZ#B^7ysGf3&jtGU-ieEj` zjWi`76NE^n0)*(1B!?KLgy@Qj==z0RM@bQaO+U2M$^Qn5q)RgWh+NA3y;<9VKAC z?lPqan9#SqTqptab&o1uck*>Z$8(C{>+(~eNHN&+(*Re4NF^N|sufE4JXUr-MCZ9Q z*rgMM6?8SjwGGYs^21Y8=-nZ%f&XW$U$IP}V-JOo_|H|yb1Ku7?nggo+1pXfeXa~D zI~`)AjiVpNyj*&JG_~$mh-;O@T$!GTajxMIc$x$gnQP{m$$N||n)1)M{r)GbO4HXX z(-aPJ&80{yHLnhczvHBKvHu65p5+r=b>7&CraN2@2~+87PXN?>m_cjiW#DQpj$ZPr za9|18v1N=a4uP}gfE}3ghq)Ie7R#^?1pCC zmj}(1aG}x+Rjxd*?UwY399I4K=ZbsWC+=}af|9p<>@|U&n^c2#TtW}h*MO#EgU86-mHoar>Sz=Evnpht434C{?DuDw{6t9%ynOJk#de? z<>mwIy+@-M7Tc>z7WaV^GJd+U=NDgr{SbD~2JvJ#7h8XZvsB6Bewe~xw+H-MhA7il z43YR{Pe8e=+DkD3gZbJQ)03CdDGafmGjmI{!bAYWco;%qn4r=8$PhHfipeM1ASY(n z1=V1P;~`%`X2oXt{U|I%f3v$E4&*w(bZiC~4pNugT#YAbiL1^eUQVZ%3Q9xiSR1G@ z7}mIOejFZcAl(#bXAb+R4swb$u3XVDfL>UGbueK7@~7)lO0kA~HWydG*1E=tnFAnN zho?*Syf_t}3G1+!E*U`oS_gbB@DO)R1HSl|{kZDB-er?)19`!Yu>v2QXb4bIC+Ta}$Cvdxfqg+N>fefcSMn3Y% zssJ5ot;*i&pL5|28F;f0U<7)jA0-b81lQ&{mqFTq^?JK5z+RIjX=hJmgrYE}x zVu@_3&I|Pxg3b7e6mEZUG;5=)oj5;>)@{T(`zHuzg0gC#MocknD1FO#zGPgb>YmMoRx`Y?G}i$onupV89AX#=HLi9>wne~Z4Ra{3%3*;? zP>eOITX-r?sz7b}(Z!4Yyi)g2`TvJ&T%Y#km*{kJF>*%VSz;7jluxSBrcL+_QVzn7 zp5@;gw7Co-U}@ZQYLm;Zy^EO(oN@KR>)8&;mj~Yx05~ z9@}=;c9Uq6@1-VsbRJi|SUQtS@+gv?aBoQ#Xp!GQteSF3_&S0jMin-Q@>{J|(?Z~Q zag)7xUZIpRNJfYfLO8NUHxbA)91&kI{%~)QQOsiDFIdAX*9J)^c!s{_dR>SQ8s~IM zVJ<18uOzgQLL&JVm86|&l`P$yPVItJ{NqdQ54vK6w<-IeYbWhl=jhCQL?hQbf^2Vs z66TC5lIWW^TFC%~6+9GEgzhoe|$w4AC-6>`i0Fx?0_{bqlBZvse%Re%k3>+Gd)j zuO=}sYv8b)QP=}&df;IZzl=28?H%;1wScda>a+Dj4OyDi%H>cgLxBkyT0A47;S;mG zQNxtdw3&v~kk-gS%D>o`YjE3mU}(nj+Mx^1-56IUWvoToJ}ym%K8{>L-pA@Ij^uIm!x4oUc$hVKduF49T*I| z&$}kK&dSLhJc4VXDM7RNqv+mQAsI^9jPz;Sg4VtX`6X{O^T`Px&A;HfOb<1=!sScW zInB3vudO|P#rFk{TOpS)cd(S9YaE(2G&5DMq0*Rh7HAS3js7q9&Pc}{VV{*;mze1% zZ|Ew#E7Rn7Ue~QY#)@(BZ=dzXb>3?=mB+70+FsecvyNZU&OUxc7}axVuk1`YgkR|k zzB`pmyh;Xq<+yvJ-+E1AmxjH+_>|(&m&W&QXlgj4PB}d@BIH}!zUvdS+6~pL>>%Io zj-BqkA}s@jkVCa(Zd~uZu634X1u~t}Dm!W@3Ss2Tb2D1WvHawmOF3b`_1Ulbu77cW zSA%9{;LwolVD)~oQY5`PkRFi37#eM;d)f`dM2;!Mb(yvAl6TIYOUeM7fX4k7{vO94 zchwyH4gUGoE$%M<2H`gh9CfzgzhsTAw~ZRVaCIq_8-EEmJ|~(cH~rMCX_+6(O+ROW zkT|n3Wr5EMO^2C{t8R?3-Jf&e#;Q$n!`FIOqREXyqVJ(T8KW{XGmLVl7}xu()2$rgTM|%Xh7En;ZqR#_?DvGp@|c5ITe(x=*f7*X(XXyQA-gQO5O} zl_-o4y5!;HY-PM~F-nyYz`g!%WBnzs>jonau`Kl(x}0b&C(5P0aHFQixZXN6Hj5L} zmc(Ww=?Th!vu1E|a-Eb3nQ&4bOO5ha+S2e(VKaHWl%2ehTZ_=cZgCQvm?_(PsBhNs z8=6|BbhVe_T-J=wXRaBt;Eo>Vo@|A`mLBHb=3Z_K=uPLo!nEqA@$=S<8a!fV2%hP++YW7uit5y< z+J=*nN88YhJaxcpVguA)7Ii{s;?gtBvH7lNZ&+>rv~qZs(pZ;YO>~JBAdz!SWTp9>C3nNr!x~2yDNM;fvxW84r62VG}iGoGE(_R z+>3)L%a4D+3ar)s8*x~E%zJh@Z>Ex1%?G0ZEF~6jYL@Yc#f$j6$birO0o1tMH>^}i z6Daxa{{@bO!#!gm22Mv>ECzlMIf?ojARhtU7AJxt@M-@HplHB`ToWnBz}^wRA@5D) zGEJ8XPFzf@aFB3SUNxm^Fo@~izuAsgK`Sq$50T_PY7e1 z&G3uiN@<4i24#cKgJ=-(sA(E10xzrV#aB`B&c_KZ=pnB+xrI1JD*g~-JAB3crc~at zwD74FuTsB#T#P!e_mL?4?h*|1;~C;EiH{-hYAt8P-2;}yQI56RYivtKnF@L^+~Rbv zr@8*XXpks}mTg|TyuNAa3I**0Tj4OOnqumtQ?_t2Y9nW_q9DvR#&DyB3%_$n^W%tCqwQ{D=<0#A0sm z8P@9D1__4)tECN;&h);K}xWtH&00{?3hbudk!gK>+N*E-_p z;-HU%^Y#mZRSHXz5}i`yB1z~E3UPP1w?({Uks}F_l2j!5+oZ_xQqTe^YP=NOSBkPo z!FUj4yd?FN!eKWdMhY8FeSUSdij34chT_H0fVraoJ?X8chktbqnR*#)ZT}!qdynt; z{~diuE@iSLBuZg%c=m%!5#Lt|O_jo8Bx9;1#6bW3?s9L}QqSMOW=f&=dlbf&PT(?{ z`bm-VB%@V|>@0POkw&LVT{=sn;p`*D8$u-O1gU$f)Jr4kgjA_J11lZ^k)pDt$RsHo z50Gdhap=)HhdwCvNRs?4{O`C_$t*E1Lel!$HDKc-8-#4 zHI%@FNA2IP->G(4VH{bvLJDS`4b8RBZn?Ts#dA*F1fQ)BptLA=`&V3UDEh5`%s-rR zF6K-0`Wl>JZGX7}sU~ekE9zg({5%f)_wFJ;f(DGK+T0C~lE{`n=xU^U3{}Lr)U&3bnXKJt@m=TrbAm`;LDuj(tE}m+|vY_KG+>g7q#v-)MRl_puUH_VIXf_ zY#>)JhOC1M4W4{&cg}ycpQTFwVunX0-K$5F{6S%Vs_hS*_uBChl5UK@Zvq)lJa6?K z;6F|r=Ap0{4{f{a$Hfso1O1l>;wafF z2;Ho1ZlfS3$cWYEUG3=QMOTe5Sy1f{{(={|wnGu{$eyBAo@qOrR)NNuVbe2?8Y2f; zXicw`IAiY|5=a#vKMHJhz!{%nyXf%BibyKkircI^TB0Qg)g`$c?e9(@Ue#%PjDoo;;fR$wdWy_) z!G=-65K|;7bolWQ3qXwLeq7tyJP;SjW)C*gO9S4*%Z#sO#KPb~<=DxsX~tsI?T@MF zMpAtw?!|t!%elnJ%X=XHyF$sgUJjy${2Jwk7UPn!r1H9@gbCJ6s7`*xD1;e#2Nb9Y z!}AXpb3eDxSzN!Rt6Ps5jJyX6#35lh9bd86LQU`84>jj>T*lqX>fFswok554J=~M* zT>1!13!0w_Q7#JbJ}3}ZhQ7mX(c!ov`xGvnSClx-=?i&}15e(21Ztu+Y!&Jsw^hT+ zknC0p6{ktzy&BxS`Uh&-YGzY`X%{MXezz|j+@6mt8=+r*S%iGKb`!4nm3;QGu01c) zftvQRA_n5gA8$#Eu$yf8*j+}`FMtg{u5t#10c;hq>B#+t2wvO+@#5Gd>{K{w-fjls zR?i9AWZsoj%1_6%e4I!Q+#HO5$7+%_MfbR$Qr*0Z3ec@+e`r#C)i?7E$%kLxIk$C4EY`dg` zEo3lh1f(1{rpz!Yk`LQcg&}0i0;A7d0GVcuSk#8E-gTn<4$$G>6@^=pH7A{Ul$H(E z;%8oT`B0e$PV<|%r(O1{vkm#ZTNF#V_v0plZ;bmIz0@$J1MS)m8Y~mt4L;B{TsTLM z>nfm{o`zU=CxMC&U~rim10?Dk@3v7{5Lf4|q8@bXm6lRo$kq?0^YQL-s%-hE&< z&;xDU8I-u}evsVh0*v{-){=?5NR%W%^z+fI>2s*BGpZZaKB%8W4acXnq1ruqqvuwF z8RpI(2p%j0MVY6Yx~x^Cp_%Jn-omK8P(kU^HYoEzqCw4n^q8#gfCL4DpOd{EjN@3CPA~c(Smu zBqmy=Y+T322ynYIRF7PSC^XlD4S!AojK*=6Bd~EJIpN2Z0|^(nALAEdRx@0rXy-8m zN^Zl&3>TJzOex=@c&U(=f-x5G6zz0j$WFAqs30=*QsN=+ZQH_f`&` z-W6ymj)%i+TZYS^#;3Z|R5yw4O-4_8y znOv^nYIy+1bG!iBXqpyg3{jJTg;~?I0i{RT3qd|)*iR8vvAapdf2+c4D*R1_JWV*9 z7Y_nJ6T=v=L{)dJ3RxADpNo;N)goM96`#Sd2RboNMT}G7WQK|Ad`1M8&T$6w8Mej+ z3f28D6|Q6meXxzH`*{_<#L!P+e{g(xngPDc_;?7%<#6c4Pt^!#874scTy_7T!k-vo zOtU2-PKXsi8TvEqg6BU}H#5)}-=3j2Mw9C9qryQ9_1N#IZuvo#QbZ_F5q5^HFbY)n ze1>7DvFiSp3RkI6W>TeVG%vCn@MVVCxZtU}`D!G)8&vm6)!n4JzXI&W0e)Zv3i68z z|6(X%qG=VpNre$AY)y@q)&|2Wz(Hp(p)~+a0 zDvuJtG!+g~p-cjRmq`F1CYu~?5?wsFAHQ=p$Z3#4hB&=y(`4-dtfdBF{mL zOQ-!GI0uxeNCF9TqHyC2D$$cAx$D6rDkj1+UF&5-ExG+}Ot}+i+R_S8J_-cm8 zuUH4z1ImbKMIQZKyZ|w~?qis)QmPRurIIw{v+!Mi8WTRvT#A7sHxfKExjuesBf%{< z5=Qzo#>4Gm2-f&q)jgjfX8&TPGyK@WX3AHVQcP(hQ74RdcvQ~XN%gx6uKK$MEc+ff(?rbp-sik zrkVP-RC~6_1go9cALlPFOi+Hwr+;g@dnWGBFD;Bzki~=DakO+PTRa(p(AK&7NKZTyK=jo#;=aCt&>d;m*s64kJtg7ss&X4FP>8GZjys+=WUJ%GV)5u>93&jRp*IpS79^D zdbub8S3aH1lsj%K3`ga-eQEUStnjK_+;vYFq%4~pDUe#{qN+D*&xTX&s4ztn#jK_n zOqFNm!c`W!v`yS0Zt;C{>pPl!nUmJZ5s)1>mA-!n1tC3qlF`pLoUqFyCVy+_;-0tA5GVa%Iw0d&Haj*ed^}7C z;CK6Rh}Tn%hY2C~ngQ?&%y(4$wk<(uw)$;Q5((+2SNsq}{?>qYl*mRGTla<+4$qo2 z#YaYDp{&KBpB6j&uEv*3@NG*BB?8Ra2;onMg?s}v{=Z%6X5@q`%+5(c z0sQ(b=OLybY`YPQMrh$Q_@n&{Vmaf<1d~LkIKhIoi|MZ9XSe; z<|v@ox1)TkM&aQ69Y8+4WhJbTZ(4Fyd^Gd3kObv*pBxnO>pii4#JoH~vp&rY4)#%M zpvKX#5#S^8Wup*&koL}cR}4dTRPcF5P)OuGv6h1R=i-&D?ZK({M9ReSZ9_9~JwPCD z*Q3)tDV)W;evQ)Oqk=-(-;>0A(3M&e&SuC@di`Tcq6$k!0u}V!927E0O^v4re{Z(o znU@?E5KPmHcj~cLDc@P(ixtzJ2iCPVw@=7b76mRH=Jf5--H-Hm)T_~8_M*J*L_5Dn z60luEQ=)Hp1Qbq+(qWaj!Vgfz>+&?3d9I~TtBdnA?#z3rcZK*cfy*2Gtm`~P4%I@>l~dF4X*lp_avI^bQ|dNhx9R&JH-vnHBZSD_gg{Q?y#>B z6I+@9s|@!)=uQwncTrkic&z7z2i-4;p&z4eJl^rIfX3433W3;93m3R8r7UISPpON1 z-)p7Z2rVex6*z^ZCSG^ZK%gB8B|*hmh3*M~uW%9rh5NX?K4EYSrDY4wZ%K9c`8aA|QL$rO)pI=+u&dI^3y zzK>+$y^4s_ z+?sN?7Y+Rl*K4iI+!Ez3b_aOs9(Owhx)KAOXltP0BeiLAb39_;BM?&H#_h_+=tb0RYFLX?7p1^K-#;voL`!{sNn0O%ri#Xv4N+X7MjC z`u5_AXvNIvO*ZW)8}z#Q+*ET+H|`+yGXp+-j~gX9??6dLZi8}oN2GXA_XUc=ui#i` zIgOrIpLHMA-g__T|F2zA^n+*O8h5A=Gf3SL4_4?m>kLPsG|Y~&G8{rH*1Er?X1`fI zJ;&C$Z|J3IG1$LQ@`XuIlI=amKug{X@}=g@?s#dg>{HG@HEUo|q3ag+IB{_dE!*OL zP}~qhUR&KGBwZ};RARozMzMISyC*el`%EXm%pxNWGQzqpR#)AeZh}V1&8_ZC>ezh^ z7RKk@!)V9xRUx$ddACWLhD30u=6N@+Z(^K%s@$Eq`MldKE{-GrZO}2V-MCtZ4M+Ni zvw~^(HpCgI2PIT4nO1C=sk{r5OV__ZX*X=cHfam|OBDYm_Wv1_w4Tzxg#T6c4?+k1 ztYl<+ZYFs4H|;uDY_8-0soNpW!F8|g?sj-zsBVydSk-qAL&o&nOoMb16Shg⪙u| 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
1ZtQ+P+)=gu0bnqmS9>rE1#gbez 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≷d$xws|QQ4e@_{{`Fn< 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 C#C>;(wYN_!9z|FMQn0&=*JRb)06}Lgu&gV#Vfh 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

  • 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 Dc~v3| diff --git a/variants/ARDUINO_NANO33BLE/mbed_config.h b/variants/ARDUINO_NANO33BLE/mbed_config.h index 2fba1c56..40324685 100644 --- a/variants/ARDUINO_NANO33BLE/mbed_config.h +++ b/variants/ARDUINO_NANO33BLE/mbed_config.h @@ -47,6 +47,8 @@ #define L2C_COC_CHAN_MAX 1 // set by library:cordio #define L2C_COC_REG_MAX 1 // set by library:cordio #define LHCI_ENABLE_VS 0 // set by library:cordio-ll +#define MBED_CONF_ALT1250_PPP_BAUDRATE 115200 // set by library:ALT1250_PPP +#define MBED_CONF_ALT1250_PPP_PROVIDE_DEFAULT 0 // set by library:ALT1250_PPP #define MBED_CONF_ATMEL_RF_ASSUME_SPACED_SPI 0 // set by library:atmel-rf #define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED 7500000 // set by library:atmel-rf #define MBED_CONF_ATMEL_RF_FULL_SPI_SPEED_BYTE_SPACING 250 // set by library:atmel-rf @@ -54,10 +56,12 @@ #define MBED_CONF_ATMEL_RF_LOW_SPI_SPEED 3750000 // set by library:atmel-rf #define MBED_CONF_ATMEL_RF_PROVIDE_DEFAULT 0 // set by library:atmel-rf #define MBED_CONF_ATMEL_RF_USE_SPI_SPACING_API 0 // set by library:atmel-rf +#define MBED_CONF_BLE_PRESENT 1 // set by library:ble #define MBED_CONF_CELLULAR_CONTROL_PLANE_OPT 0 // set by library:cellular #define MBED_CONF_CELLULAR_DEBUG_AT 0 // set by library:cellular #define MBED_CONF_CELLULAR_RANDOM_MAX_START_DELAY 0 // set by library:cellular #define MBED_CONF_CELLULAR_USE_APN_LOOKUP 1 // set by library:cellular +#define MBED_CONF_CELLULAR_USE_SMS 1 // set by library:cellular #define MBED_CONF_CORDIO_DESIRED_ATT_MTU 23 // set by library:cordio #define MBED_CONF_CORDIO_LL_DEFAULT_EXTENDED_ADVERTISING_FRAGMENTATION_SIZE 64 // set by library:cordio-ll #define MBED_CONF_CORDIO_LL_EXTENDED_ADVERTISING_SIZE 251 // set by library:cordio-ll @@ -76,6 +80,12 @@ #define MBED_CONF_CORDIO_LL_TX_BUFFERS 4 // set by library:cordio-ll #define MBED_CONF_CORDIO_MAX_PREPARED_WRITES 4 // set by library:cordio #define MBED_CONF_CORDIO_RX_ACL_BUFFER_SIZE 70 // set by library:cordio +#define MBED_CONF_DRIVERS_QSPI_CSN QSPI_FLASH1_CSN // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO0 QSPI_FLASH1_IO0 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO1 QSPI_FLASH1_IO1 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO2 QSPI_FLASH1_IO2 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_IO3 QSPI_FLASH1_IO3 // set by library:drivers +#define MBED_CONF_DRIVERS_QSPI_SCK QSPI_FLASH1_SCK // set by library:drivers #define MBED_CONF_DRIVERS_UART_SERIAL_RXBUF_SIZE 256 // set by library:drivers #define MBED_CONF_DRIVERS_UART_SERIAL_TXBUF_SIZE 256 // set by library:drivers #define MBED_CONF_ESP8266_DEBUG 0 // set by library:esp8266 @@ -92,6 +102,46 @@ #define MBED_CONF_EVENTS_SHARED_HIGHPRIO_STACKSIZE 1024 // set by library:events #define MBED_CONF_EVENTS_SHARED_STACKSIZE 2048 // set by library:events #define MBED_CONF_EVENTS_USE_LOWPOWER_TIMER_TICKER 0 // set by library:events +#define MBED_CONF_FAT_CHAN_FFS_DBG 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_CODE_PAGE 437 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_EXFAT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_HEAPBUF 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_LOCK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_MINIMIZE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NOFSINFO 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_NORTC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_READONLY 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_REENTRANT 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_RPATH 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TIMEOUT 1000 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_FS_TINY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_BUF 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_LFN_UNICODE 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_LFN 255 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MAX_SS 4096 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MIN_SS 512 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_MULTI_PARTITION 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MDAY 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_MON 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_NORTC_YEAR 2017 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SFN_BUF 12 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STRF_ENCODE 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_STR_VOLUME_ID 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_SYNC_T HANDLE // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_CHMOD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_EXPAND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FASTSEEK 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FIND 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_FORWARD 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LABEL 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_LFN 3 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_MKFS 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_STRFUNC 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_USE_TRIM 1 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUMES 4 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FF_VOLUME_STRS "RAM","NAND","CF","SD","SD2","USB","USB2","USB3" // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_CLUSTER 0 // set by library:fat_chan +#define MBED_CONF_FAT_CHAN_FLUSH_ON_NEW_SECTOR 1 // set by library:fat_chan #define MBED_CONF_FILESYSTEM_PRESENT 1 // set by library:filesystem #define MBED_CONF_FLASHIAP_BLOCK_DEVICE_BASE_ADDRESS 0xFFFFFFFF // set by library:flashiap-block-device #define MBED_CONF_FLASHIAP_BLOCK_DEVICE_SIZE 0 // set by library:flashiap-block-device @@ -145,6 +195,8 @@ #define MBED_CONF_LWIP_PPP_IPV4_ENABLED 0 // set by library:lwip #define MBED_CONF_LWIP_PPP_IPV6_ENABLED 0 // set by library:lwip #define MBED_CONF_LWIP_PPP_THREAD_STACKSIZE 768 // set by library:lwip +#define MBED_CONF_LWIP_PRESENT 1 // set by library:lwip +#define MBED_CONF_LWIP_RAW_SOCKET_ENABLED 0 // set by library:lwip #define MBED_CONF_LWIP_SOCKET_MAX 4 // set by library:lwip #define MBED_CONF_LWIP_TCPIP_MBOX_SIZE 8 // set by library:lwip #define MBED_CONF_LWIP_TCPIP_THREAD_PRIORITY osPriorityNormal // set by library:lwip @@ -236,6 +288,7 @@ #define MBED_CONF_PLATFORM_STDIO_CONVERT_NEWLINES 0 // set by library:platform #define MBED_CONF_PLATFORM_STDIO_CONVERT_TTY_NEWLINES 0 // set by library:platform #define MBED_CONF_PLATFORM_STDIO_FLUSH_AT_EXIT 1 // set by library:platform +#define MBED_CONF_PLATFORM_STDIO_MINIMAL_CONSOLE_ONLY 0 // set by library:platform #define MBED_CONF_PLATFORM_USE_MPU 1 // set by library:platform #define MBED_CONF_PPP_CELL_IFACE_APN_LOOKUP 1 // set by library:ppp-cell-iface #define MBED_CONF_PPP_CELL_IFACE_AT_PARSER_BUFFER_SIZE 256 // set by library:ppp-cell-iface @@ -304,6 +357,7 @@ #define MBED_CONF_TARGET_TICKLESS_FROM_US_TICKER 0 // set by target:Target #define MBED_CONF_TARGET_UART_0_FIFO_SIZE 32 // set by target:MCU_NRF52840 #define MBED_CONF_TARGET_UART_1_FIFO_SIZE 32 // set by target:MCU_NRF52840 +#define MBED_CONF_TARGET_XIP_ENABLE 0 // set by target:Target #define MBED_CONF_TELIT_HE910_BAUDRATE 115200 // set by library:TELIT_HE910 #define MBED_CONF_TELIT_HE910_PROVIDE_DEFAULT 0 // set by library:TELIT_HE910 #define MBED_CONF_TELIT_ME910_BAUDRATE 115200 // set by library:TELIT_ME910 @@ -320,6 +374,7 @@ #define MBED_LFS_LOOKAHEAD 512 // set by library:littlefs #define MBED_LFS_PROG_SIZE 64 // set by library:littlefs #define MBED_LFS_READ_SIZE 64 // set by library:littlefs +#define MBED_STACK_DUMP_ENABLED 0 // set by library:platform #define MEM_ALLOC malloc // set by library:mbed-trace #define MEM_FREE free // set by library:mbed-trace #define NVSTORE_ENABLED 1 // set by library:nvstore From cc80ac135892c37bcd038e8cf52cecd691e1f346 Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 11 Jun 2020 10:59:15 +0200 Subject: [PATCH 04/20] Add analogIn configure mbed patch --- ...0005-Add-AnalogIn-configure-function.patch | 162 ++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 patches/0005-Add-AnalogIn-configure-function.patch diff --git a/patches/0005-Add-AnalogIn-configure-function.patch b/patches/0005-Add-AnalogIn-configure-function.patch new file mode 100644 index 00000000..27fe6dc4 --- /dev/null +++ b/patches/0005-Add-AnalogIn-configure-function.patch @@ -0,0 +1,162 @@ +From 9cb888f91743e8f43dca8f1f74269b372d7c858c Mon Sep 17 00:00:00 2001 +From: Paolo Calao +Date: Wed, 13 May 2020 11:59:46 +0200 +Subject: [PATCH] Add AnalogIn configure function + +This adds a weak method to configure AnalogIn objects. +Also, a strong implementation of such method for NRF5284 is provided. +--- + drivers/AnalogIn.h | 7 ++++ + drivers/source/AnalogIn.cpp | 7 ++++ + hal/analogin_api.h | 13 +++++++ + .../TARGET_NRF5x/TARGET_NRF52/analogin_api.c | 34 +++++++++++++++++++ + .../TARGET_NRF5x/TARGET_NRF52/objects.h | 14 ++++++++ + 5 files changed, 75 insertions(+) + +diff --git a/drivers/AnalogIn.h b/drivers/AnalogIn.h +index 9ff9ec7ee3..5affdfb9da 100644 +--- a/drivers/AnalogIn.h ++++ b/drivers/AnalogIn.h +@@ -80,6 +80,13 @@ public: + */ + AnalogIn(PinName pin); + ++ ++ /** Reconfigure the adc object using the given configuration ++ * ++ * @param config reference to structure which holds AnalogIn configuration ++ */ ++ void configure(const analogin_config_t &config); ++ + /** Read the input voltage, represented as a float in the range [0.0, 1.0] + * + * @returns A floating-point value representing the current input voltage, measured as a percentage +diff --git a/drivers/source/AnalogIn.cpp b/drivers/source/AnalogIn.cpp +index 63d910c227..cc52eef484 100644 +--- a/drivers/source/AnalogIn.cpp ++++ b/drivers/source/AnalogIn.cpp +@@ -38,6 +38,13 @@ AnalogIn::AnalogIn(const PinMap &pinmap) + } + + ++void AnalogIn::configure(const analogin_config_t &config) ++{ ++ lock(); ++ analogin_configure(&_adc, &config); ++ unlock(); ++} ++ + float AnalogIn::read() + { + lock(); +diff --git a/hal/analogin_api.h b/hal/analogin_api.h +index d172607c69..07208443f5 100644 +--- a/hal/analogin_api.h ++++ b/hal/analogin_api.h +@@ -33,6 +33,10 @@ extern "C" { + */ + typedef struct analogin_s analogin_t; + ++/** Analogin configuration hal structure. analogin_config_s is declared in the target's hal ++ */ ++typedef struct analogin_config_s analogin_config_t; ++ + /** + * \defgroup hal_analogin Analogin hal functions + * +@@ -77,6 +81,15 @@ void analogin_init_direct(analogin_t *obj, const PinMap *pinmap); + */ + void analogin_init(analogin_t *obj, PinName pin); + ++/** Initialize the analogin peripheral ++ * ++ * Configures the pin used by analogin. ++ * @param obj The analogin object to initialize ++ * @param pin The analogin pin name ++ * @param pinmap pointer to structure which holds analogin configuration ++ */ ++void __attribute__((weak)) analogin_configure(analogin_t *obj, const analogin_config_t *config); ++ + /** Release the analogin peripheral + * + * Releases the pin used by analogin. +diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/analogin_api.c b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/analogin_api.c +index e66be66f50..863c7b090d 100644 +--- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/analogin_api.c ++++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/analogin_api.c +@@ -122,6 +122,40 @@ void analogin_init(analogin_t *obj, PinName pin) + ANALOGIN_INIT_DIRECT(obj, &static_pinmap); + } + ++/** Reconfigure the analogin peripheral ++ * ++ * Configures the pin used by analogin. ++ * @param obj The analogin object to initialize ++ * @param config pointer to structure which holds analogin configuration ++ */ ++void analogin_configure(analogin_t *obj, const analogin_config_t *config) ++{ ++ MBED_ASSERT(obj); ++ ++ /* Get associated channel from the adc object. */ ++ uint32_t channel = obj->channel; ++ MBED_ASSERT(channel != (uint32_t) NC); ++ ++ /* Account for an off-by-one in Channel definition and Input definition. */ ++ nrf_saadc_input_t input = channel + 1; ++ ++ /* Configure channel and pin */ ++ nrf_saadc_channel_config_t channel_config = { ++ .resistor_p = config->resistor_p, ++ .resistor_n = config->resistor_n, ++ .gain = config->gain, ++ .reference = config->reference, ++ .acq_time = config->acq_time, ++ .mode = config->mode, ++ .burst = config->burst, ++ .pin_p = input, ++ .pin_n = config->pin_n ++ }; ++ ++ ret_code_t result = nrfx_saadc_channel_init(channel, &channel_config); ++ MBED_ASSERT(result == NRFX_SUCCESS); ++} ++ + /** Read the input voltage, represented as a float in the range [0.0, 1.0] + * + * @param obj The analogin object +diff --git a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/objects.h b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/objects.h +index d048efe1d7..68395f9419 100644 +--- a/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/objects.h ++++ b/targets/TARGET_NORDIC/TARGET_NRF5x/TARGET_NRF52/objects.h +@@ -46,6 +46,8 @@ + #include "nrfx_spi.h" + #include "nrf_twi.h" + ++#include "nrf_saadc.h" ++ + #include "nrf_pwm.h" + + #ifdef __cplusplus +@@ -134,6 +136,18 @@ struct analogin_s { + uint8_t channel; + }; + ++struct analogin_config_s { ++ nrf_saadc_resistor_t resistor_p; ++ nrf_saadc_resistor_t resistor_n; ++ nrf_saadc_gain_t gain; ++ nrf_saadc_reference_t reference; ++ nrf_saadc_acqtime_t acq_time; ++ nrf_saadc_mode_t mode; ++ nrf_saadc_burst_t burst; ++ nrf_saadc_input_t pin_p; ++ nrf_saadc_input_t pin_n; ++}; ++ + struct gpio_irq_s { + uint32_t ch; + }; +-- +2.27.0 + From b927cd0489d22ac8d891dce14fe4e759b0bb5b5f Mon Sep 17 00:00:00 2001 From: Martino Facchin Date: Thu, 11 Jun 2020 11:01:48 +0200 Subject: [PATCH 05/20] Update to mbed-5.15 + arduino patches --- cores/arduino/mbed/drivers/AnalogIn.h | 7 + .../mbed/features/mbedtls/inc/mbedtls/aes.h | 674 +++ .../mbed/features/mbedtls/inc/mbedtls/aesni.h | 138 + .../mbed/features/mbedtls/inc/mbedtls/arc4.h | 146 + .../mbed/features/mbedtls/inc/mbedtls/aria.h | 370 ++ .../mbed/features/mbedtls/inc/mbedtls/asn1.h | 609 +++ .../features/mbedtls/inc/mbedtls/asn1write.h | 372 ++ .../features/mbedtls/inc/mbedtls/base64.h | 98 + .../features/mbedtls/inc/mbedtls/bignum.h | 1019 +++++ .../features/mbedtls/inc/mbedtls/blowfish.h | 287 ++ .../features/mbedtls/inc/mbedtls/bn_mul.h | 940 ++++ .../features/mbedtls/inc/mbedtls/camellia.h | 326 ++ .../mbed/features/mbedtls/inc/mbedtls/ccm.h | 310 ++ .../features/mbedtls/inc/mbedtls/chacha20.h | 226 + .../features/mbedtls/inc/mbedtls/chachapoly.h | 358 ++ .../mbedtls/inc/mbedtls/check_config.h | 43 +- .../features/mbedtls/inc/mbedtls/cipher.h | 926 ++++ .../mbedtls/inc/mbedtls/cipher_internal.h | 152 + .../mbed/features/mbedtls/inc/mbedtls/cmac.h | 213 + .../features/mbedtls/inc/mbedtls/compat-1.3.h | 6 +- .../mbedtls/inc/mbedtls/config-no-entropy.h | 2 +- .../features/mbedtls/inc/mbedtls/config.h | 115 +- .../features/mbedtls/inc/mbedtls/ctr_drbg.h | 562 +++ .../mbed/features/mbedtls/inc/mbedtls/des.h | 356 ++ .../mbed/features/mbedtls/inc/mbedtls/dhm.h | 1094 +++++ .../mbed/features/mbedtls/inc/mbedtls/ecdh.h | 448 ++ .../mbed/features/mbedtls/inc/mbedtls/ecdsa.h | 628 +++ .../features/mbedtls/inc/mbedtls/ecjpake.h | 277 ++ .../mbed/features/mbedtls/inc/mbedtls/ecp.h | 1185 ++++++ .../mbedtls/inc/mbedtls/ecp_internal.h | 299 ++ .../features/mbedtls/inc/mbedtls/entropy.h | 289 ++ .../mbedtls/inc/mbedtls/entropy_poll.h | 110 + .../mbed/features/mbedtls/inc/mbedtls/gcm.h | 326 ++ .../features/mbedtls/inc/mbedtls/havege.h | 82 + .../mbed/features/mbedtls/inc/mbedtls/hkdf.h | 141 + .../features/mbedtls/inc/mbedtls/hmac_drbg.h | 415 ++ .../mbed/features/mbedtls/inc/mbedtls/md.h | 474 +++ .../mbed/features/mbedtls/inc/mbedtls/md2.h | 306 ++ .../mbed/features/mbedtls/inc/mbedtls/md4.h | 311 ++ .../mbed/features/mbedtls/inc/mbedtls/md5.h | 311 ++ .../mbedtls/inc/mbedtls/md_internal.h | 92 + .../mbedtls/inc/mbedtls/memory_buffer_alloc.h | 151 + .../features/mbedtls/inc/mbedtls/nist_kw.h | 184 + .../mbed/features/mbedtls/inc/mbedtls/oid.h | 649 +++ .../features/mbedtls/inc/mbedtls/padlock.h | 126 + .../mbed/features/mbedtls/inc/mbedtls/pem.h | 146 + .../mbed/features/mbedtls/inc/mbedtls/pk.h | 881 ++++ .../mbedtls/inc/mbedtls/pk_internal.h | 142 + .../features/mbedtls/inc/mbedtls/pkcs12.h | 130 + .../mbed/features/mbedtls/inc/mbedtls/pkcs5.h | 109 + .../features/mbedtls/inc/mbedtls/platform.h | 419 ++ .../mbedtls/inc/mbedtls/platform_time.h | 82 + .../mbedtls/inc/mbedtls/platform_util.h | 196 + .../features/mbedtls/inc/mbedtls/poly1305.h | 192 + .../features/mbedtls/inc/mbedtls/psa_util.h | 422 ++ .../features/mbedtls/inc/mbedtls/ripemd160.h | 237 ++ .../mbed/features/mbedtls/inc/mbedtls/rsa.h | 1277 ++++++ .../mbedtls/inc/mbedtls/rsa_internal.h | 226 + .../mbed/features/mbedtls/inc/mbedtls/sha1.h | 352 ++ .../features/mbedtls/inc/mbedtls/sha256.h | 297 ++ .../features/mbedtls/inc/mbedtls/sha512.h | 316 ++ .../mbed/features/mbedtls/inc/mbedtls/ssl.h | 146 +- .../mbedtls/inc/mbedtls/ssl_ciphersuites.h | 44 +- .../mbedtls/inc/mbedtls/ssl_internal.h | 52 +- .../features/mbedtls/inc/mbedtls/threading.h | 122 + .../features/mbedtls/inc/mbedtls/timing.h | 153 + .../features/mbedtls/inc/mbedtls/version.h | 8 +- .../mbed/features/mbedtls/inc/mbedtls/xtea.h | 139 + .../mbed/features/mbedtls/inc/psa/crypto.h | 3780 +++++++++++++++++ .../mbedtls/inc/psa/crypto_accel_driver.h | 823 ++++ .../features/mbedtls/inc/psa/crypto_compat.h | 196 + .../mbedtls/inc/psa/crypto_driver_common.h | 54 + .../mbedtls/inc/psa/crypto_entropy_driver.h | 108 + .../features/mbedtls/inc/psa/crypto_extra.h | 655 +++ .../mbedtls/inc/psa/crypto_platform.h | 102 + .../mbedtls/inc/psa/crypto_se_driver.h | 1388 ++++++ .../features/mbedtls/inc/psa/crypto_sizes.h | 662 +++ .../features/mbedtls/inc/psa/crypto_types.h | 287 ++ .../features/mbedtls/inc/psa/crypto_values.h | 1705 ++++++++ .../COMPONENT_NSPE/crypto_struct.h | 473 +++ .../COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h | 175 + .../psa_crypto_invasive.h | 79 + .../COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h | 144 + .../COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h | 190 + .../psa_crypto_service_integration.h | 40 + .../psa_crypto_slot_management.h | 129 + .../psa_crypto_storage.h | 390 ++ .../COMPONENT_SPE/crypto_struct_spe.h | 520 +++ .../mbed-mesh-api/MeshInterfaceNanostack.h | 3 + .../NanostackEthernetInterface.h | 1 + .../mbed-mesh-api/NanostackPPPInterface.h | 1 + .../mbed-mesh-api/WisunBorderRouter.h | 155 + .../mbed-mesh-api/WisunInterface.h | 303 ++ .../mbed-mesh-api/mesh_interface_types.h | 41 +- .../source/include/wisun_tasklet.h | 48 +- .../ns_file_system_api.h | 31 + .../mbed/features/netsocket/InternetSocket.h | 29 + .../mbed/features/netsocket/nsapi_types.h | 21 +- cores/arduino/mbed/hal/analogin_api.h | 13 + .../TARGET_NRF5x/TARGET_NRF52/objects.h | 14 + 100 files changed, 34680 insertions(+), 121 deletions(-) create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/aes.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/aesni.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/arc4.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/aria.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1write.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/base64.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/bignum.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/blowfish.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/bn_mul.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/camellia.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ccm.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/chacha20.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/chachapoly.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher_internal.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/cmac.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ctr_drbg.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/des.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/dhm.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdh.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdsa.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecjpake.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp_internal.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy_poll.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/gcm.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/havege.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/hkdf.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/hmac_drbg.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/md.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/md2.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/md4.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/md5.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/md_internal.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/memory_buffer_alloc.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/nist_kw.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/oid.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/padlock.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/pem.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk_internal.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs12.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs5.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_time.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_util.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/poly1305.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/psa_util.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/ripemd160.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa_internal.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha1.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha256.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha512.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/threading.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/timing.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/mbedtls/xtea.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_accel_driver.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_compat.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_driver_common.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_entropy_driver.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_extra.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_platform.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_se_driver.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_sizes.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_types.h create mode 100644 cores/arduino/mbed/features/mbedtls/inc/psa/crypto_values.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h create mode 100644 cores/arduino/mbed/features/mbedtls/platform/COMPONENT_SPE/crypto_struct_spe.h create mode 100644 cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h create mode 100644 cores/arduino/mbed/features/nanostack/nanostack-hal-mbed-cmsis-rtos/ns_file_system_api.h diff --git a/cores/arduino/mbed/drivers/AnalogIn.h b/cores/arduino/mbed/drivers/AnalogIn.h index 9ff9ec7e..5affdfb9 100644 --- a/cores/arduino/mbed/drivers/AnalogIn.h +++ b/cores/arduino/mbed/drivers/AnalogIn.h @@ -80,6 +80,13 @@ class AnalogIn { */ AnalogIn(PinName pin); + + /** Reconfigure the adc object using the given configuration + * + * @param config reference to structure which holds AnalogIn configuration + */ + void configure(const analogin_config_t &config); + /** Read the input voltage, represented as a float in the range [0.0, 1.0] * * @returns A floating-point value representing the current input voltage, measured as a percentage diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aes.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aes.h new file mode 100644 index 00000000..63c0f672 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aes.h @@ -0,0 +1,674 @@ +/** + * \file aes.h + * + * \brief This file contains AES definitions and functions. + * + * The Advanced Encryption Standard (AES) specifies a FIPS-approved + * cryptographic algorithm that can be used to protect electronic + * data. + * + * The AES algorithm is a symmetric block cipher that can + * encrypt and decrypt information. For more information, see + * FIPS Publication 197: Advanced Encryption Standard and + * ISO/IEC 18033-2:2006: Information technology -- Security + * techniques -- Encryption algorithms -- Part 2: Asymmetric + * ciphers. + * + * The AES-XTS block mode is standardized by NIST SP 800-38E + * + * and described in detail by IEEE P1619 + * . + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_AES_H +#define MBEDTLS_AES_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* padlock.c and aesni.c rely on these values! */ +#define MBEDTLS_AES_ENCRYPT 1 /**< AES encryption. */ +#define MBEDTLS_AES_DECRYPT 0 /**< AES decryption. */ + +/* Error codes in range 0x0020-0x0022 */ +#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH -0x0020 /**< Invalid key length. */ +#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH -0x0022 /**< Invalid data input length. */ + +/* Error codes in range 0x0021-0x0025 */ +#define MBEDTLS_ERR_AES_BAD_INPUT_DATA -0x0021 /**< Invalid input data. */ + +/* MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE is deprecated and should not be used. */ +#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE -0x0023 /**< Feature not available. For example, an unsupported AES key size. */ + +/* MBEDTLS_ERR_AES_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED -0x0025 /**< AES hardware accelerator failed. */ + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_AES_ALT) +// Regular implementation +// + +/** + * \brief The AES context-type definition. + */ +typedef struct mbedtls_aes_context +{ + int nr; /*!< The number of rounds. */ + uint32_t *rk; /*!< AES round keys. */ + uint32_t buf[68]; /*!< Unaligned data buffer. This buffer can + hold 32 extra Bytes, which can be used for + one of the following purposes: +
    • Alignment if VIA padlock is + used.
    • +
    • Simplifying key expansion in the 256-bit + case by generating an extra round key. +
    */ +} +mbedtls_aes_context; + +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief The AES XTS context-type definition. + */ +typedef struct mbedtls_aes_xts_context +{ + mbedtls_aes_context crypt; /*!< The AES context to use for AES block + encryption or decryption. */ + mbedtls_aes_context tweak; /*!< The AES context used for tweak + computation. */ +} mbedtls_aes_xts_context; +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + +#else /* MBEDTLS_AES_ALT */ +#include "aes_alt.h" +#endif /* MBEDTLS_AES_ALT */ + +/** + * \brief This function initializes the specified AES context. + * + * It must be the first API called before using + * the context. + * + * \param ctx The AES context to initialize. This must not be \c NULL. + */ +void mbedtls_aes_init( mbedtls_aes_context *ctx ); + +/** + * \brief This function releases and clears the specified AES context. + * + * \param ctx The AES context to clear. + * If this is \c NULL, this function does nothing. + * Otherwise, the context must have been at least initialized. + */ +void mbedtls_aes_free( mbedtls_aes_context *ctx ); + +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief This function initializes the specified AES XTS context. + * + * It must be the first API called before using + * the context. + * + * \param ctx The AES XTS context to initialize. This must not be \c NULL. + */ +void mbedtls_aes_xts_init( mbedtls_aes_xts_context *ctx ); + +/** + * \brief This function releases and clears the specified AES XTS context. + * + * \param ctx The AES XTS context to clear. + * If this is \c NULL, this function does nothing. + * Otherwise, the context must have been at least initialized. + */ +void mbedtls_aes_xts_free( mbedtls_aes_xts_context *ctx ); +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + +/** + * \brief This function sets the encryption key. + * + * \param ctx The AES context to which the key should be bound. + * It must be initialized. + * \param key The encryption key. + * This must be a readable buffer of size \p keybits bits. + * \param keybits The size of data passed in bits. Valid options are: + *
    • 128 bits
    • + *
    • 192 bits
    • + *
    • 256 bits
    + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_setkey_enc( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function sets the decryption key. + * + * \param ctx The AES context to which the key should be bound. + * It must be initialized. + * \param key The decryption key. + * This must be a readable buffer of size \p keybits bits. + * \param keybits The size of data passed. Valid options are: + *
    • 128 bits
    • + *
    • 192 bits
    • + *
    • 256 bits
    + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_setkey_dec( mbedtls_aes_context *ctx, const unsigned char *key, + unsigned int keybits ); + +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief This function prepares an XTS context for encryption and + * sets the encryption key. + * + * \param ctx The AES XTS context to which the key should be bound. + * It must be initialized. + * \param key The encryption key. This is comprised of the XTS key1 + * concatenated with the XTS key2. + * This must be a readable buffer of size \p keybits bits. + * \param keybits The size of \p key passed in bits. Valid options are: + *
    • 256 bits (each of key1 and key2 is a 128-bit key)
    • + *
    • 512 bits (each of key1 and key2 is a 256-bit key)
    + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_xts_setkey_enc( mbedtls_aes_xts_context *ctx, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function prepares an XTS context for decryption and + * sets the decryption key. + * + * \param ctx The AES XTS context to which the key should be bound. + * It must be initialized. + * \param key The decryption key. This is comprised of the XTS key1 + * concatenated with the XTS key2. + * This must be a readable buffer of size \p keybits bits. + * \param keybits The size of \p key passed in bits. Valid options are: + *
    • 256 bits (each of key1 and key2 is a 128-bit key)
    • + *
    • 512 bits (each of key1 and key2 is a 256-bit key)
    + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure. + */ +int mbedtls_aes_xts_setkey_dec( mbedtls_aes_xts_context *ctx, + const unsigned char *key, + unsigned int keybits ); +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + +/** + * \brief This function performs an AES single-block encryption or + * decryption operation. + * + * It performs the operation defined in the \p mode parameter + * (encrypt or decrypt), on the input data buffer defined in + * the \p input parameter. + * + * mbedtls_aes_init(), and either mbedtls_aes_setkey_enc() or + * mbedtls_aes_setkey_dec() must be called before the first + * call to this API with the same context. + * + * \param ctx The AES context to use for encryption or decryption. + * It must be initialized and bound to a key. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param input The buffer holding the input data. + * It must be readable and at least \c 16 Bytes long. + * \param output The buffer where the output data will be written. + * It must be writeable and at least \c 16 Bytes long. + + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_ecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief This function performs an AES-CBC encryption or decryption operation + * on full blocks. + * + * It performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer defined in + * the \p input parameter. + * + * It can be called as many times as needed, until all the input + * data is processed. mbedtls_aes_init(), and either + * mbedtls_aes_setkey_enc() or mbedtls_aes_setkey_dec() must be called + * before the first call to this API with the same context. + * + * \note This function operates on full blocks, that is, the input size + * must be a multiple of the AES block size of \c 16 Bytes. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the IV, you should + * either save it manually or use the cipher module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * It must be initialized and bound to a key. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param length The length of the input data in Bytes. This must be a + * multiple of the block size (\c 16 Bytes). + * \param iv Initialization vector (updated after use). + * It must be a readable and writeable buffer of \c 16 Bytes. + * \param input The buffer holding the input data. + * It must be readable and of size \p length Bytes. + * \param output The buffer holding the output data. + * It must be writeable and of size \p length Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH + * on failure. + */ +int mbedtls_aes_crypt_cbc( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_XTS) +/** + * \brief This function performs an AES-XTS encryption or decryption + * operation for an entire XTS data unit. + * + * AES-XTS encrypts or decrypts blocks based on their location as + * defined by a data unit number. The data unit number must be + * provided by \p data_unit. + * + * NIST SP 800-38E limits the maximum size of a data unit to 2^20 + * AES blocks. If the data unit is larger than this, this function + * returns #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH. + * + * \param ctx The AES XTS context to use for AES XTS operations. + * It must be initialized and bound to a key. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param length The length of a data unit in Bytes. This can be any + * length between 16 bytes and 2^24 bytes inclusive + * (between 1 and 2^20 block cipher blocks). + * \param data_unit The address of the data unit encoded as an array of 16 + * bytes in little-endian format. For disk encryption, this + * is typically the index of the block device sector that + * contains the data. + * \param input The buffer holding the input data (which is an entire + * data unit). This function reads \p length Bytes from \p + * input. + * \param output The buffer holding the output data (which is an entire + * data unit). This function writes \p length Bytes to \p + * output. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH if \p length is + * smaller than an AES block in size (16 Bytes) or if \p + * length is larger than 2^20 blocks (16 MiB). + */ +int mbedtls_aes_crypt_xts( mbedtls_aes_xts_context *ctx, + int mode, + size_t length, + const unsigned char data_unit[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_XTS */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/** + * \brief This function performs an AES-CFB128 encryption or decryption + * operation. + * + * It performs the operation defined in the \p mode + * parameter (encrypt or decrypt), on the input data buffer + * defined in the \p input parameter. + * + * For CFB, you must set up the context with mbedtls_aes_setkey_enc(), + * regardless of whether you are performing an encryption or decryption + * operation, that is, regardless of the \p mode parameter. This is + * because CFB mode uses the same key schedule for encryption and + * decryption. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you must either save it manually or use the cipher + * module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * It must be initialized and bound to a key. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT. + * \param length The length of the input data in Bytes. + * \param iv_off The offset in IV (updated after use). + * It must point to a valid \c size_t. + * \param iv The initialization vector (updated after use). + * It must be a readable and writeable buffer of \c 16 Bytes. + * \param input The buffer holding the input data. + * It must be readable and of size \p length Bytes. + * \param output The buffer holding the output data. + * It must be writeable and of size \p length Bytes. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_cfb128( mbedtls_aes_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function performs an AES-CFB8 encryption or decryption + * operation. + * + * It performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer defined + * in the \p input parameter. + * + * Due to the nature of CFB, you must use the same key schedule for + * both encryption and decryption operations. Therefore, you must + * use the context initialized with mbedtls_aes_setkey_enc() for + * both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * + * \param ctx The AES context to use for encryption or decryption. + * It must be initialized and bound to a key. + * \param mode The AES operation: #MBEDTLS_AES_ENCRYPT or + * #MBEDTLS_AES_DECRYPT + * \param length The length of the input data. + * \param iv The initialization vector (updated after use). + * It must be a readable and writeable buffer of \c 16 Bytes. + * \param input The buffer holding the input data. + * It must be readable and of size \p length Bytes. + * \param output The buffer holding the output data. + * It must be writeable and of size \p length Bytes. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_cfb8( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /*MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_OFB) +/** + * \brief This function performs an AES-OFB (Output Feedback Mode) + * encryption or decryption operation. + * + * For OFB, you must set up the context with + * mbedtls_aes_setkey_enc(), regardless of whether you are + * performing an encryption or decryption operation. This is + * because OFB mode uses the same key schedule for encryption and + * decryption. + * + * The OFB operation is identical for encryption or decryption, + * therefore no operation mode needs to be specified. + * + * \note Upon exit, the content of iv, the Initialisation Vector, is + * updated so that you can call the same function again on the next + * block(s) of data and get the same result as if it was encrypted + * in one call. This allows a "streaming" usage, by initialising + * iv_off to 0 before the first call, and preserving its value + * between calls. + * + * For non-streaming use, the iv should be initialised on each call + * to a unique value, and iv_off set to 0 on each call. + * + * If you need to retain the contents of the initialisation vector, + * you must either save it manually or use the cipher module + * instead. + * + * \warning For the OFB mode, the initialisation vector must be unique + * every encryption operation. Reuse of an initialisation vector + * will compromise security. + * + * \param ctx The AES context to use for encryption or decryption. + * It must be initialized and bound to a key. + * \param length The length of the input data. + * \param iv_off The offset in IV (updated after use). + * It must point to a valid \c size_t. + * \param iv The initialization vector (updated after use). + * It must be a readable and writeable buffer of \c 16 Bytes. + * \param input The buffer holding the input data. + * It must be readable and of size \p length Bytes. + * \param output The buffer holding the output data. + * It must be writeable and of size \p length Bytes. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_ofb( mbedtls_aes_context *ctx, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +#endif /* MBEDTLS_CIPHER_MODE_OFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/** + * \brief This function performs an AES-CTR encryption or decryption + * operation. + * + * This function performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer + * defined in the \p input parameter. + * + * Due to the nature of CTR, you must use the same key schedule + * for both encryption and decryption operations. Therefore, you + * must use the context initialized with mbedtls_aes_setkey_enc() + * for both #MBEDTLS_AES_ENCRYPT and #MBEDTLS_AES_DECRYPT. + * + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. + * + * With this strategy, you must not encrypt more than 2**128 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 12 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 12 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**96 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. An alternative is to generate random nonces, but this + * limits the number of messages that can be securely encrypted: + * for example, with 96-bit random nonces, you should not encrypt + * more than 2**32 messages with the same key. + * + * Note that for both stategies, sizes are measured in blocks and + * that an AES block is 16 bytes. + * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * + * \param ctx The AES context to use for encryption or decryption. + * It must be initialized and bound to a key. + * \param length The length of the input data. + * \param nc_off The offset in the current \p stream_block, for + * resuming within the current cipher stream. The + * offset pointer should be 0 at the start of a stream. + * It must point to a valid \c size_t. + * \param nonce_counter The 128-bit nonce and counter. + * It must be a readable-writeable buffer of \c 16 Bytes. + * \param stream_block The saved stream block for resuming. This is + * overwritten by the function. + * It must be a readable-writeable buffer of \c 16 Bytes. + * \param input The buffer holding the input data. + * It must be readable and of size \p length Bytes. + * \param output The buffer holding the output data. + * It must be writeable and of size \p length Bytes. + * + * \return \c 0 on success. + */ +int mbedtls_aes_crypt_ctr( mbedtls_aes_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +/** + * \brief Internal AES block encryption function. This is only + * exposed to allow overriding it using + * \c MBEDTLS_AES_ENCRYPT_ALT. + * + * \param ctx The AES context to use for encryption. + * \param input The plaintext block. + * \param output The output (ciphertext) block. + * + * \return \c 0 on success. + */ +int mbedtls_internal_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Internal AES block decryption function. This is only + * exposed to allow overriding it using see + * \c MBEDTLS_AES_DECRYPT_ALT. + * + * \param ctx The AES context to use for decryption. + * \param input The ciphertext block. + * \param output The output (plaintext) block. + * + * \return \c 0 on success. + */ +int mbedtls_internal_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Deprecated internal AES block encryption function + * without return value. + * + * \deprecated Superseded by mbedtls_internal_aes_encrypt() + * + * \param ctx The AES context to use for encryption. + * \param input Plaintext block. + * \param output Output (ciphertext) block. + */ +MBEDTLS_DEPRECATED void mbedtls_aes_encrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Deprecated internal AES block decryption function + * without return value. + * + * \deprecated Superseded by mbedtls_internal_aes_decrypt() + * + * \param ctx The AES context to use for decryption. + * \param input Ciphertext block. + * \param output Output (plaintext) block. + */ +MBEDTLS_DEPRECATED void mbedtls_aes_decrypt( mbedtls_aes_context *ctx, + const unsigned char input[16], + unsigned char output[16] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_aes_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* aes.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aesni.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aesni.h new file mode 100644 index 00000000..955b7c99 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aesni.h @@ -0,0 +1,138 @@ +/** + * \file aesni.h + * + * \brief AES-NI for hardware AES acceleration on some Intel processors + * + * \warning These functions are only for internal use by other library + * functions; you must not call them directly. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_AESNI_H +#define MBEDTLS_AESNI_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/aes.h" + +#define MBEDTLS_AESNI_AES 0x02000000u +#define MBEDTLS_AESNI_CLMUL 0x00000002u + +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && \ + ( defined(__amd64__) || defined(__x86_64__) ) && \ + ! defined(MBEDTLS_HAVE_X86_64) +#define MBEDTLS_HAVE_X86_64 +#endif + +#if defined(MBEDTLS_HAVE_X86_64) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Internal function to detect the AES-NI feature in CPUs. + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param what The feature to detect + * (MBEDTLS_AESNI_AES or MBEDTLS_AESNI_CLMUL) + * + * \return 1 if CPU has support for the feature, 0 otherwise + */ +int mbedtls_aesni_has_support( unsigned int what ); + +/** + * \brief Internal AES-NI AES-ECB block encryption and decryption + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param input 16-byte input block + * \param output 16-byte output block + * + * \return 0 on success (cannot fail) + */ +int mbedtls_aesni_crypt_ecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Internal GCM multiplication: c = a * b in GF(2^128) + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param c Result + * \param a First operand + * \param b Second operand + * + * \note Both operands and result are bit strings interpreted as + * elements of GF(2^128) as per the GCM spec. + */ +void mbedtls_aesni_gcm_mult( unsigned char c[16], + const unsigned char a[16], + const unsigned char b[16] ); + +/** + * \brief Internal round key inversion. This function computes + * decryption round keys from the encryption round keys. + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param invkey Round keys for the equivalent inverse cipher + * \param fwdkey Original round keys (for encryption) + * \param nr Number of rounds (that is, number of round keys minus one) + */ +void mbedtls_aesni_inverse_key( unsigned char *invkey, + const unsigned char *fwdkey, + int nr ); + +/** + * \brief Internal key expansion for encryption + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param rk Destination buffer where the round keys are written + * \param key Encryption key + * \param bits Key size in bits (must be 128, 192 or 256) + * + * \return 0 if successful, or MBEDTLS_ERR_AES_INVALID_KEY_LENGTH + */ +int mbedtls_aesni_setkey_enc( unsigned char *rk, + const unsigned char *key, + size_t bits ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_HAVE_X86_64 */ + +#endif /* MBEDTLS_AESNI_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/arc4.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/arc4.h new file mode 100644 index 00000000..acad623a --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/arc4.h @@ -0,0 +1,146 @@ +/** + * \file arc4.h + * + * \brief The ARCFOUR stream cipher + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers instead. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + * + */ +#ifndef MBEDTLS_ARC4_H +#define MBEDTLS_ARC4_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +/* MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_ARC4_HW_ACCEL_FAILED -0x0019 /**< ARC4 hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_ARC4_ALT) +// Regular implementation +// + +/** + * \brief ARC4 context structure + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers instead. + * + */ +typedef struct mbedtls_arc4_context +{ + int x; /*!< permutation index */ + int y; /*!< permutation index */ + unsigned char m[256]; /*!< permutation table */ +} +mbedtls_arc4_context; + +#else /* MBEDTLS_ARC4_ALT */ +#include "arc4_alt.h" +#endif /* MBEDTLS_ARC4_ALT */ + +/** + * \brief Initialize ARC4 context + * + * \param ctx ARC4 context to be initialized + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + * + */ +void mbedtls_arc4_init( mbedtls_arc4_context *ctx ); + +/** + * \brief Clear ARC4 context + * + * \param ctx ARC4 context to be cleared + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + * + */ +void mbedtls_arc4_free( mbedtls_arc4_context *ctx ); + +/** + * \brief ARC4 key schedule + * + * \param ctx ARC4 context to be setup + * \param key the secret key + * \param keylen length of the key, in bytes + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + * + */ +void mbedtls_arc4_setup( mbedtls_arc4_context *ctx, const unsigned char *key, + unsigned int keylen ); + +/** + * \brief ARC4 cipher function + * + * \param ctx ARC4 context + * \param length length of the input data + * \param input buffer holding the input data + * \param output buffer for the output data + * + * \return 0 if successful + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + * + */ +int mbedtls_arc4_crypt( mbedtls_arc4_context *ctx, size_t length, const unsigned char *input, + unsigned char *output ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + * + * \warning ARC4 is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + * + */ +int mbedtls_arc4_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* arc4.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aria.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aria.h new file mode 100644 index 00000000..a72a8c22 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/aria.h @@ -0,0 +1,370 @@ +/** + * \file aria.h + * + * \brief ARIA block cipher + * + * The ARIA algorithm is a symmetric block cipher that can encrypt and + * decrypt information. It is defined by the Korean Agency for + * Technology and Standards (KATS) in KS X 1213:2004 (in + * Korean, but see http://210.104.33.10/ARIA/index-e.html in English) + * and also described by the IETF in RFC 5794. + */ +/* Copyright (C) 2006-2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_ARIA_H +#define MBEDTLS_ARIA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#include "mbedtls/platform_util.h" + +#define MBEDTLS_ARIA_ENCRYPT 1 /**< ARIA encryption. */ +#define MBEDTLS_ARIA_DECRYPT 0 /**< ARIA decryption. */ + +#define MBEDTLS_ARIA_BLOCKSIZE 16 /**< ARIA block size in bytes. */ +#define MBEDTLS_ARIA_MAX_ROUNDS 16 /**< Maxiumum number of rounds in ARIA. */ +#define MBEDTLS_ARIA_MAX_KEYSIZE 32 /**< Maximum size of an ARIA key in bytes. */ + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#define MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( -0x005C ) +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ +#define MBEDTLS_ERR_ARIA_BAD_INPUT_DATA -0x005C /**< Bad input data. */ + +#define MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH -0x005E /**< Invalid data input length. */ + +/* MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE is deprecated and should not be used. + */ +#define MBEDTLS_ERR_ARIA_FEATURE_UNAVAILABLE -0x005A /**< Feature not available. For example, an unsupported ARIA key size. */ + +/* MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_ARIA_HW_ACCEL_FAILED -0x0058 /**< ARIA hardware accelerator failed. */ + +#if !defined(MBEDTLS_ARIA_ALT) +// Regular implementation +// + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The ARIA context-type definition. + */ +typedef struct mbedtls_aria_context +{ + unsigned char nr; /*!< The number of rounds (12, 14 or 16) */ + /*! The ARIA round keys. */ + uint32_t rk[MBEDTLS_ARIA_MAX_ROUNDS + 1][MBEDTLS_ARIA_BLOCKSIZE / 4]; +} +mbedtls_aria_context; + +#else /* MBEDTLS_ARIA_ALT */ +#include "aria_alt.h" +#endif /* MBEDTLS_ARIA_ALT */ + +/** + * \brief This function initializes the specified ARIA context. + * + * It must be the first API called before using + * the context. + * + * \param ctx The ARIA context to initialize. This must not be \c NULL. + */ +void mbedtls_aria_init( mbedtls_aria_context *ctx ); + +/** + * \brief This function releases and clears the specified ARIA context. + * + * \param ctx The ARIA context to clear. This may be \c NULL, in which + * case this function returns immediately. If it is not \c NULL, + * it must point to an initialized ARIA context. + */ +void mbedtls_aria_free( mbedtls_aria_context *ctx ); + +/** + * \brief This function sets the encryption key. + * + * \param ctx The ARIA context to which the key should be bound. + * This must be initialized. + * \param key The encryption key. This must be a readable buffer + * of size \p keybits Bits. + * \param keybits The size of \p key in Bits. Valid options are: + *
    • 128 bits
    • + *
    • 192 bits
    • + *
    • 256 bits
    + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_aria_setkey_enc( mbedtls_aria_context *ctx, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function sets the decryption key. + * + * \param ctx The ARIA context to which the key should be bound. + * This must be initialized. + * \param key The decryption key. This must be a readable buffer + * of size \p keybits Bits. + * \param keybits The size of data passed. Valid options are: + *
    • 128 bits
    • + *
    • 192 bits
    • + *
    • 256 bits
    + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_aria_setkey_dec( mbedtls_aria_context *ctx, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function performs an ARIA single-block encryption or + * decryption operation. + * + * It performs encryption or decryption (depending on whether + * the key was set for encryption on decryption) on the input + * data buffer defined in the \p input parameter. + * + * mbedtls_aria_init(), and either mbedtls_aria_setkey_enc() or + * mbedtls_aria_setkey_dec() must be called before the first + * call to this API with the same context. + * + * \param ctx The ARIA context to use for encryption or decryption. + * This must be initialized and bound to a key. + * \param input The 16-Byte buffer holding the input data. + * \param output The 16-Byte buffer holding the output data. + + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_aria_crypt_ecb( mbedtls_aria_context *ctx, + const unsigned char input[MBEDTLS_ARIA_BLOCKSIZE], + unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief This function performs an ARIA-CBC encryption or decryption operation + * on full blocks. + * + * It performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer defined in + * the \p input parameter. + * + * It can be called as many times as needed, until all the input + * data is processed. mbedtls_aria_init(), and either + * mbedtls_aria_setkey_enc() or mbedtls_aria_setkey_dec() must be called + * before the first call to this API with the same context. + * + * \note This function operates on aligned blocks, that is, the input size + * must be a multiple of the ARIA block size of 16 Bytes. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the IV, you should + * either save it manually or use the cipher module instead. + * + * + * \param ctx The ARIA context to use for encryption or decryption. + * This must be initialized and bound to a key. + * \param mode The mode of operation. This must be either + * #MBEDTLS_ARIA_ENCRYPT for encryption, or + * #MBEDTLS_ARIA_DECRYPT for decryption. + * \param length The length of the input data in Bytes. This must be a + * multiple of the block size (16 Bytes). + * \param iv Initialization vector (updated after use). + * This must be a readable buffer of size 16 Bytes. + * \param input The buffer holding the input data. This must + * be a readable buffer of length \p length Bytes. + * \param output The buffer holding the output data. This must + * be a writable buffer of length \p length Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_aria_crypt_cbc( mbedtls_aria_context *ctx, + int mode, + size_t length, + unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/** + * \brief This function performs an ARIA-CFB128 encryption or decryption + * operation. + * + * It performs the operation defined in the \p mode + * parameter (encrypt or decrypt), on the input data buffer + * defined in the \p input parameter. + * + * For CFB, you must set up the context with mbedtls_aria_setkey_enc(), + * regardless of whether you are performing an encryption or decryption + * operation, that is, regardless of the \p mode parameter. This is + * because CFB mode uses the same key schedule for encryption and + * decryption. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the same function again on the next + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If you need to retain the contents of the + * IV, you must either save it manually or use the cipher + * module instead. + * + * + * \param ctx The ARIA context to use for encryption or decryption. + * This must be initialized and bound to a key. + * \param mode The mode of operation. This must be either + * #MBEDTLS_ARIA_ENCRYPT for encryption, or + * #MBEDTLS_ARIA_DECRYPT for decryption. + * \param length The length of the input data \p input in Bytes. + * \param iv_off The offset in IV (updated after use). + * This must not be larger than 15. + * \param iv The initialization vector (updated after use). + * This must be a readable buffer of size 16 Bytes. + * \param input The buffer holding the input data. This must + * be a readable buffer of length \p length Bytes. + * \param output The buffer holding the output data. This must + * be a writable buffer of length \p length Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_aria_crypt_cfb128( mbedtls_aria_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/** + * \brief This function performs an ARIA-CTR encryption or decryption + * operation. + * + * This function performs the operation defined in the \p mode + * parameter (encrypt/decrypt), on the input data buffer + * defined in the \p input parameter. + * + * Due to the nature of CTR, you must use the same key schedule + * for both encryption and decryption operations. Therefore, you + * must use the context initialized with mbedtls_aria_setkey_enc() + * for both #MBEDTLS_ARIA_ENCRYPT and #MBEDTLS_ARIA_DECRYPT. + * + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. + * + * With this strategy, you must not encrypt more than 2**128 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 12 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 12 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**96 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. An alternative is to generate random nonces, but this + * limits the number of messages that can be securely encrypted: + * for example, with 96-bit random nonces, you should not encrypt + * more than 2**32 messages with the same key. + * + * Note that for both stategies, sizes are measured in blocks and + * that an ARIA block is 16 bytes. + * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * + * \param ctx The ARIA context to use for encryption or decryption. + * This must be initialized and bound to a key. + * \param length The length of the input data \p input in Bytes. + * \param nc_off The offset in Bytes in the current \p stream_block, + * for resuming within the current cipher stream. The + * offset pointer should be \c 0 at the start of a + * stream. This must not be larger than \c 15 Bytes. + * \param nonce_counter The 128-bit nonce and counter. This must point to + * a read/write buffer of length \c 16 bytes. + * \param stream_block The saved stream block for resuming. This must + * point to a read/write buffer of length \c 16 bytes. + * This is overwritten by the function. + * \param input The buffer holding the input data. This must + * be a readable buffer of length \p length Bytes. + * \param output The buffer holding the output data. This must + * be a writable buffer of length \p length Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_aria_crypt_ctr( mbedtls_aria_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[MBEDTLS_ARIA_BLOCKSIZE], + unsigned char stream_block[MBEDTLS_ARIA_BLOCKSIZE], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine. + * + * \return \c 0 on success, or \c 1 on failure. + */ +int mbedtls_aria_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* aria.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1.h new file mode 100644 index 00000000..4c61b6e1 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1.h @@ -0,0 +1,609 @@ +/** + * \file asn1.h + * + * \brief Generic ASN.1 parsing + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ASN1_H +#define MBEDTLS_ASN1_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#if defined(MBEDTLS_BIGNUM_C) +#include "mbedtls/bignum.h" +#endif + +/** + * \addtogroup asn1_module + * \{ + */ + +/** + * \name ASN1 Error codes + * These error codes are OR'ed to X509 error codes for + * higher error granularity. + * ASN1 is a standard to specify data structures. + * \{ + */ +#define MBEDTLS_ERR_ASN1_OUT_OF_DATA -0x0060 /**< Out of data when parsing an ASN1 data structure. */ +#define MBEDTLS_ERR_ASN1_UNEXPECTED_TAG -0x0062 /**< ASN1 tag was of an unexpected value. */ +#define MBEDTLS_ERR_ASN1_INVALID_LENGTH -0x0064 /**< Error when trying to determine the length or invalid length. */ +#define MBEDTLS_ERR_ASN1_LENGTH_MISMATCH -0x0066 /**< Actual length differs from expected length. */ +#define MBEDTLS_ERR_ASN1_INVALID_DATA -0x0068 /**< Data is invalid. */ +#define MBEDTLS_ERR_ASN1_ALLOC_FAILED -0x006A /**< Memory allocation failed */ +#define MBEDTLS_ERR_ASN1_BUF_TOO_SMALL -0x006C /**< Buffer too small when writing ASN.1 data structure. */ + +/* \} name */ + +/** + * \name DER constants + * These constants comply with the DER encoded ASN.1 type tags. + * DER encoding uses hexadecimal representation. + * An example DER sequence is:\n + * - 0x02 -- tag indicating INTEGER + * - 0x01 -- length in octets + * - 0x05 -- value + * Such sequences are typically read into \c ::mbedtls_x509_buf. + * \{ + */ +#define MBEDTLS_ASN1_BOOLEAN 0x01 +#define MBEDTLS_ASN1_INTEGER 0x02 +#define MBEDTLS_ASN1_BIT_STRING 0x03 +#define MBEDTLS_ASN1_OCTET_STRING 0x04 +#define MBEDTLS_ASN1_NULL 0x05 +#define MBEDTLS_ASN1_OID 0x06 +#define MBEDTLS_ASN1_ENUMERATED 0x0A +#define MBEDTLS_ASN1_UTF8_STRING 0x0C +#define MBEDTLS_ASN1_SEQUENCE 0x10 +#define MBEDTLS_ASN1_SET 0x11 +#define MBEDTLS_ASN1_PRINTABLE_STRING 0x13 +#define MBEDTLS_ASN1_T61_STRING 0x14 +#define MBEDTLS_ASN1_IA5_STRING 0x16 +#define MBEDTLS_ASN1_UTC_TIME 0x17 +#define MBEDTLS_ASN1_GENERALIZED_TIME 0x18 +#define MBEDTLS_ASN1_UNIVERSAL_STRING 0x1C +#define MBEDTLS_ASN1_BMP_STRING 0x1E +#define MBEDTLS_ASN1_PRIMITIVE 0x00 +#define MBEDTLS_ASN1_CONSTRUCTED 0x20 +#define MBEDTLS_ASN1_CONTEXT_SPECIFIC 0x80 + +/* Slightly smaller way to check if tag is a string tag + * compared to canonical implementation. */ +#define MBEDTLS_ASN1_IS_STRING_TAG( tag ) \ + ( ( tag ) < 32u && ( \ + ( ( 1u << ( tag ) ) & ( ( 1u << MBEDTLS_ASN1_BMP_STRING ) | \ + ( 1u << MBEDTLS_ASN1_UTF8_STRING ) | \ + ( 1u << MBEDTLS_ASN1_T61_STRING ) | \ + ( 1u << MBEDTLS_ASN1_IA5_STRING ) | \ + ( 1u << MBEDTLS_ASN1_UNIVERSAL_STRING ) | \ + ( 1u << MBEDTLS_ASN1_PRINTABLE_STRING ) | \ + ( 1u << MBEDTLS_ASN1_BIT_STRING ) ) ) != 0 ) ) + +/* + * Bit masks for each of the components of an ASN.1 tag as specified in + * ITU X.690 (08/2015), section 8.1 "General rules for encoding", + * paragraph 8.1.2.2: + * + * Bit 8 7 6 5 1 + * +-------+-----+------------+ + * | Class | P/C | Tag number | + * +-------+-----+------------+ + */ +#define MBEDTLS_ASN1_TAG_CLASS_MASK 0xC0 +#define MBEDTLS_ASN1_TAG_PC_MASK 0x20 +#define MBEDTLS_ASN1_TAG_VALUE_MASK 0x1F + +/* \} name */ +/* \} addtogroup asn1_module */ + +/** Returns the size of the binary string, without the trailing \\0 */ +#define MBEDTLS_OID_SIZE(x) (sizeof(x) - 1) + +/** + * Compares an mbedtls_asn1_buf structure to a reference OID. + * + * Only works for 'defined' oid_str values (MBEDTLS_OID_HMAC_SHA1), you cannot use a + * 'unsigned char *oid' here! + */ +#define MBEDTLS_OID_CMP(oid_str, oid_buf) \ + ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf)->len ) || \ + memcmp( (oid_str), (oid_buf)->p, (oid_buf)->len) != 0 ) + +#define MBEDTLS_OID_CMP_RAW(oid_str, oid_buf, oid_buf_len) \ + ( ( MBEDTLS_OID_SIZE(oid_str) != (oid_buf_len) ) || \ + memcmp( (oid_str), (oid_buf), (oid_buf_len) ) != 0 ) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Functions to parse ASN.1 data structures + * \{ + */ + +/** + * Type-length-value structure that allows for ASN1 using DER. + */ +typedef struct mbedtls_asn1_buf +{ + int tag; /**< ASN1 type, e.g. MBEDTLS_ASN1_UTF8_STRING. */ + size_t len; /**< ASN1 length, in octets. */ + unsigned char *p; /**< ASN1 data, e.g. in ASCII. */ +} +mbedtls_asn1_buf; + +/** + * Container for ASN1 bit strings. + */ +typedef struct mbedtls_asn1_bitstring +{ + size_t len; /**< ASN1 length, in octets. */ + unsigned char unused_bits; /**< Number of unused bits at the end of the string */ + unsigned char *p; /**< Raw ASN1 data for the bit string */ +} +mbedtls_asn1_bitstring; + +/** + * Container for a sequence of ASN.1 items + */ +typedef struct mbedtls_asn1_sequence +{ + mbedtls_asn1_buf buf; /**< Buffer containing the given ASN.1 item. */ + struct mbedtls_asn1_sequence *next; /**< The next entry in the sequence. */ +} +mbedtls_asn1_sequence; + +/** + * Container for a sequence or list of 'named' ASN.1 data items + */ +typedef struct mbedtls_asn1_named_data +{ + mbedtls_asn1_buf oid; /**< The object identifier. */ + mbedtls_asn1_buf val; /**< The named value. */ + struct mbedtls_asn1_named_data *next; /**< The next entry in the sequence. */ + unsigned char next_merged; /**< Merge next item into the current one? */ +} +mbedtls_asn1_named_data; + +/** + * \brief Get the length of an ASN.1 element. + * Updates the pointer to immediately behind the length. + * + * \param p On entry, \c *p points to the first byte of the length, + * i.e. immediately after the tag. + * On successful completion, \c *p points to the first byte + * after the length, i.e. the first byte of the content. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On successful completion, \c *len contains the length + * read from the ASN.1 input. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_OUT_OF_DATA if the ASN.1 element + * would end beyond \p end. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the length is unparseable. + */ +int mbedtls_asn1_get_len( unsigned char **p, + const unsigned char *end, + size_t *len ); + +/** + * \brief Get the tag and length of the element. + * Check for the requested tag. + * Updates the pointer to immediately behind the tag and length. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * after the length, i.e. the first byte of the content. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On successful completion, \c *len contains the length + * read from the ASN.1 input. + * \param tag The expected tag. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the data does not start + * with the requested tag. + * \return #MBEDTLS_ERR_ASN1_OUT_OF_DATA if the ASN.1 element + * would end beyond \p end. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the length is unparseable. + */ +int mbedtls_asn1_get_tag( unsigned char **p, + const unsigned char *end, + size_t *len, int tag ); + +/** + * \brief Retrieve a boolean ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value (\c 0 or \c 1). + * + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BOOLEAN. + */ +int mbedtls_asn1_get_bool( unsigned char **p, + const unsigned char *end, + int *val ); + +/** + * \brief Retrieve an integer ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value. + * + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 INTEGER. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + */ +int mbedtls_asn1_get_int( unsigned char **p, + const unsigned char *end, + int *val ); + +/** + * \brief Retrieve an enumerated ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param val On success, the parsed value. + * + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 ENUMERATED. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + */ +int mbedtls_asn1_get_enum( unsigned char **p, + const unsigned char *end, + int *val ); + +/** + * \brief Retrieve a bitstring ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p is equal to \p end. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param bs On success, ::mbedtls_asn1_bitstring information about + * the parsed value. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input contains + * extra data after a valid BIT STRING. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BIT STRING. + */ +int mbedtls_asn1_get_bitstring( unsigned char **p, const unsigned char *end, + mbedtls_asn1_bitstring *bs ); + +/** + * \brief Retrieve a bitstring ASN.1 tag without unused bits and its + * value. + * Updates the pointer to the beginning of the bit/octet string. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * of the content of the BIT STRING. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param len On success, \c *len is the length of the content in bytes. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_INVALID_DATA if the input starts with + * a valid BIT STRING with a nonzero number of unused bits. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 BIT STRING. + */ +int mbedtls_asn1_get_bitstring_null( unsigned char **p, + const unsigned char *end, + size_t *len ); + +/** + * \brief Parses and splits an ASN.1 "SEQUENCE OF ". + * Updates the pointer to immediately behind the full sequence tag. + * + * This function allocates memory for the sequence elements. You can free + * the allocated memory with mbedtls_asn1_sequence_free(). + * + * \note On error, this function may return a partial list in \p cur. + * You must set `cur->next = NULL` before calling this function! + * Otherwise it is impossible to distinguish a previously non-null + * pointer from a pointer to an object allocated by this function. + * + * \note If the sequence is empty, this function does not modify + * \c *cur. If the sequence is valid and non-empty, this + * function sets `cur->buf.tag` to \p tag. This allows + * callers to distinguish between an empty sequence and + * a one-element sequence. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p is equal to \p end. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param cur A ::mbedtls_asn1_sequence which this function fills. + * When this function returns, \c *cur is the head of a linked + * list. Each node in this list is allocated with + * mbedtls_calloc() apart from \p cur itself, and should + * therefore be freed with mbedtls_free(). + * The list describes the content of the sequence. + * The head of the list (i.e. \c *cur itself) describes the + * first element, `*cur->next` describes the second element, etc. + * For each element, `buf.tag == tag`, `buf.len` is the length + * of the content of the content of the element, and `buf.p` + * points to the first byte of the content (i.e. immediately + * past the length of the element). + * Note that list elements may be allocated even on error. + * \param tag Each element of the sequence must have this tag. + * + * \return 0 if successful. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input contains + * extra data after a valid SEQUENCE OF \p tag. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the input starts with + * an ASN.1 SEQUENCE in which an element has a tag that + * is different from \p tag. + * \return #MBEDTLS_ERR_ASN1_ALLOC_FAILED if a memory allocation failed. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 SEQUENCE. + */ +int mbedtls_asn1_get_sequence_of( unsigned char **p, + const unsigned char *end, + mbedtls_asn1_sequence *cur, + int tag ); +/** + * \brief Free a heap-allocated linked list presentation of + * an ASN.1 sequence, including the first element. + * + * There are two common ways to manage the memory used for the representation + * of a parsed ASN.1 sequence: + * - Allocate a head node `mbedtls_asn1_sequence *head` with mbedtls_calloc(). + * Pass this node as the `cur` argument to mbedtls_asn1_get_sequence_of(). + * When you have finished processing the sequence, + * call mbedtls_asn1_sequence_free() on `head`. + * - Allocate a head node `mbedtls_asn1_sequence *head` in any manner, + * for example on the stack. Make sure that `head->next == NULL`. + * Pass `head` as the `cur` argument to mbedtls_asn1_get_sequence_of(). + * When you have finished processing the sequence, + * call mbedtls_asn1_sequence_free() on `head->cur`, + * then free `head` itself in the appropriate manner. + * + * \param seq The address of the first sequence component. This may + * be \c NULL, in which case this functions returns + * immediately. + */ +void mbedtls_asn1_sequence_free( mbedtls_asn1_sequence *seq ); + +/** + * \brief Traverse an ASN.1 SEQUENCE container and + * call a callback for each entry. + * + * This function checks that the input is a SEQUENCE of elements that + * each have a "must" tag, and calls a callback function on the elements + * that have a "may" tag. + * + * For example, to validate that the input is a SEQUENCE of `tag1` and call + * `cb` on each element, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0xff, tag1, 0, 0, cb, ctx); + * ``` + * + * To validate that the input is a SEQUENCE of ANY and call `cb` on + * each element, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0, 0, 0, 0, cb, ctx); + * ``` + * + * To validate that the input is a SEQUENCE of CHOICE {NULL, OCTET STRING} + * and call `cb` on each element that is an OCTET STRING, use + * ``` + * mbedtls_asn1_traverse_sequence_of(&p, end, 0xfe, 0x04, 0xff, 0x04, cb, ctx); + * ``` + * + * The callback is called on the elements with a "may" tag from left to + * right. If the input is not a valid SEQUENCE of elements with a "must" tag, + * the callback is called on the elements up to the leftmost point where + * the input is invalid. + * + * \warning This function is still experimental and may change + * at any time. + * + * \param p The address of the pointer to the beginning of + * the ASN.1 SEQUENCE header. This is updated to + * point to the end of the ASN.1 SEQUENCE container + * on a successful invocation. + * \param end The end of the ASN.1 SEQUENCE container. + * \param tag_must_mask A mask to be applied to the ASN.1 tags found within + * the SEQUENCE before comparing to \p tag_must_value. + * \param tag_must_val The required value of each ASN.1 tag found in the + * SEQUENCE, after masking with \p tag_must_mask. + * Mismatching tags lead to an error. + * For example, a value of \c 0 for both \p tag_must_mask + * and \p tag_must_val means that every tag is allowed, + * while a value of \c 0xFF for \p tag_must_mask means + * that \p tag_must_val is the only allowed tag. + * \param tag_may_mask A mask to be applied to the ASN.1 tags found within + * the SEQUENCE before comparing to \p tag_may_value. + * \param tag_may_val The desired value of each ASN.1 tag found in the + * SEQUENCE, after masking with \p tag_may_mask. + * Mismatching tags will be silently ignored. + * For example, a value of \c 0 for \p tag_may_mask and + * \p tag_may_val means that any tag will be considered, + * while a value of \c 0xFF for \p tag_may_mask means + * that all tags with value different from \p tag_may_val + * will be ignored. + * \param cb The callback to trigger for each component + * in the ASN.1 SEQUENCE that matches \p tag_may_val. + * The callback function is called with the following + * parameters: + * - \p ctx. + * - The tag of the current element. + * - A pointer to the start of the current element's + * content inside the input. + * - The length of the content of the current element. + * If the callback returns a non-zero value, + * the function stops immediately, + * forwarding the callback's return value. + * \param ctx The context to be passed to the callback \p cb. + * + * \return \c 0 if successful the entire ASN.1 SEQUENCE + * was traversed without parsing or callback errors. + * \return #MBEDTLS_ERR_ASN1_LENGTH_MISMATCH if the input + * contains extra data after a valid SEQUENCE + * of elements with an accepted tag. + * \return #MBEDTLS_ERR_ASN1_UNEXPECTED_TAG if the input starts + * with an ASN.1 SEQUENCE in which an element has a tag + * that is not accepted. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 SEQUENCE. + * \return A non-zero error code forwarded from the callback + * \p cb in case the latter returns a non-zero value. + */ +int mbedtls_asn1_traverse_sequence_of( + unsigned char **p, + const unsigned char *end, + unsigned char tag_must_mask, unsigned char tag_must_val, + unsigned char tag_may_mask, unsigned char tag_may_val, + int (*cb)( void *ctx, int tag, + unsigned char* start, size_t len ), + void *ctx ); + +#if defined(MBEDTLS_BIGNUM_C) +/** + * \brief Retrieve an integer ASN.1 tag and its value. + * Updates the pointer to immediately behind the full tag. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the ASN.1 element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param X On success, the parsed value. + * + * \return 0 if successful. + * \return An ASN.1 error code if the input does not start with + * a valid ASN.1 INTEGER. + * \return #MBEDTLS_ERR_ASN1_INVALID_LENGTH if the parsed value does + * not fit in an \c int. + * \return An MPI error code if the parsed value is too large. + */ +int mbedtls_asn1_get_mpi( unsigned char **p, + const unsigned char *end, + mbedtls_mpi *X ); +#endif /* MBEDTLS_BIGNUM_C */ + +/** + * \brief Retrieve an AlgorithmIdentifier ASN.1 sequence. + * Updates the pointer to immediately behind the full + * AlgorithmIdentifier. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the AlgorithmIdentifier element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param alg The buffer to receive the OID. + * \param params The buffer to receive the parameters. + * This is zeroized if there are no parameters. + * + * \return 0 if successful or a specific ASN.1 or MPI error code. + */ +int mbedtls_asn1_get_alg( unsigned char **p, + const unsigned char *end, + mbedtls_asn1_buf *alg, mbedtls_asn1_buf *params ); + +/** + * \brief Retrieve an AlgorithmIdentifier ASN.1 sequence with NULL or no + * params. + * Updates the pointer to immediately behind the full + * AlgorithmIdentifier. + * + * \param p On entry, \c *p points to the start of the ASN.1 element. + * On successful completion, \c *p points to the first byte + * beyond the AlgorithmIdentifier element. + * On error, the value of \c *p is undefined. + * \param end End of data. + * \param alg The buffer to receive the OID. + * + * \return 0 if successful or a specific ASN.1 or MPI error code. + */ +int mbedtls_asn1_get_alg_null( unsigned char **p, + const unsigned char *end, + mbedtls_asn1_buf *alg ); + +/** + * \brief Find a specific named_data entry in a sequence or list based on + * the OID. + * + * \param list The list to seek through + * \param oid The OID to look for + * \param len Size of the OID + * + * \return NULL if not found, or a pointer to the existing entry. + */ +mbedtls_asn1_named_data *mbedtls_asn1_find_named_data( mbedtls_asn1_named_data *list, + const char *oid, size_t len ); + +/** + * \brief Free a mbedtls_asn1_named_data entry + * + * \param entry The named data entry to free. + * This function calls mbedtls_free() on + * `entry->oid.p` and `entry->val.p`. + */ +void mbedtls_asn1_free_named_data( mbedtls_asn1_named_data *entry ); + +/** + * \brief Free all entries in a mbedtls_asn1_named_data list. + * + * \param head Pointer to the head of the list of named data entries to free. + * This function calls mbedtls_asn1_free_named_data() and + * mbedtls_free() on each list element and + * sets \c *head to \c NULL. + */ +void mbedtls_asn1_free_named_data_list( mbedtls_asn1_named_data **head ); + +#ifdef __cplusplus +} +#endif + +#endif /* asn1.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1write.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1write.h new file mode 100644 index 00000000..0bce28ed --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/asn1write.h @@ -0,0 +1,372 @@ +/** + * \file asn1write.h + * + * \brief ASN.1 buffer writing functionality + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ASN1_WRITE_H +#define MBEDTLS_ASN1_WRITE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/asn1.h" + +#define MBEDTLS_ASN1_CHK_ADD(g, f) \ + do \ + { \ + if( ( ret = (f) ) < 0 ) \ + return( ret ); \ + else \ + (g) += ret; \ + } while( 0 ) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Write a length field in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param len The length value to write. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_len( unsigned char **p, unsigned char *start, + size_t len ); +/** + * \brief Write an ASN.1 tag in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param tag The tag to write. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_tag( unsigned char **p, unsigned char *start, + unsigned char tag ); + +/** + * \brief Write raw buffer data. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param buf The data buffer to write. + * \param size The length of the data buffer. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_raw_buffer( unsigned char **p, unsigned char *start, + const unsigned char *buf, size_t size ); + +#if defined(MBEDTLS_BIGNUM_C) +/** + * \brief Write a arbitrary-precision number (#MBEDTLS_ASN1_INTEGER) + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param X The MPI to write. + * It must be non-negative. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_mpi( unsigned char **p, unsigned char *start, + const mbedtls_mpi *X ); +#endif /* MBEDTLS_BIGNUM_C */ + +/** + * \brief Write a NULL tag (#MBEDTLS_ASN1_NULL) with zero data + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_null( unsigned char **p, unsigned char *start ); + +/** + * \brief Write an OID tag (#MBEDTLS_ASN1_OID) and data + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param oid The OID to write. + * \param oid_len The length of the OID. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_oid( unsigned char **p, unsigned char *start, + const char *oid, size_t oid_len ); + +/** + * \brief Write an AlgorithmIdentifier sequence in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param oid The OID of the algorithm to write. + * \param oid_len The length of the algorithm's OID. + * \param par_len The length of the parameters, which must be already written. + * If 0, NULL parameters are added + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_algorithm_identifier( unsigned char **p, + unsigned char *start, + const char *oid, size_t oid_len, + size_t par_len ); + +/** + * \brief Write a boolean tag (#MBEDTLS_ASN1_BOOLEAN) and value + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param boolean The boolean value to write, either \c 0 or \c 1. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_bool( unsigned char **p, unsigned char *start, + int boolean ); + +/** + * \brief Write an int tag (#MBEDTLS_ASN1_INTEGER) and value + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param val The integer value to write. + * It must be non-negative. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_int( unsigned char **p, unsigned char *start, int val ); + +/** + * \brief Write an enum tag (#MBEDTLS_ASN1_ENUMERATED) and value + * in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param val The integer value to write. + * + * \return The number of bytes written to \p p on success. + * \return A negative \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_asn1_write_enum( unsigned char **p, unsigned char *start, int val ); + +/** + * \brief Write a string in ASN.1 format using a specific + * string encoding tag. + + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param tag The string encoding tag to write, e.g. + * #MBEDTLS_ASN1_UTF8_STRING. + * \param text The string to write. + * \param text_len The length of \p text in bytes (which might + * be strictly larger than the number of characters). + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_tagged_string( unsigned char **p, unsigned char *start, + int tag, const char *text, + size_t text_len ); + +/** + * \brief Write a string in ASN.1 format using the PrintableString + * string encoding tag (#MBEDTLS_ASN1_PRINTABLE_STRING). + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param text The string to write. + * \param text_len The length of \p text in bytes (which might + * be strictly larger than the number of characters). + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_printable_string( unsigned char **p, + unsigned char *start, + const char *text, size_t text_len ); + +/** + * \brief Write a UTF8 string in ASN.1 format using the UTF8String + * string encoding tag (#MBEDTLS_ASN1_UTF8_STRING). + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param text The string to write. + * \param text_len The length of \p text in bytes (which might + * be strictly larger than the number of characters). + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_utf8_string( unsigned char **p, unsigned char *start, + const char *text, size_t text_len ); + +/** + * \brief Write a string in ASN.1 format using the IA5String + * string encoding tag (#MBEDTLS_ASN1_IA5_STRING). + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param text The string to write. + * \param text_len The length of \p text in bytes (which might + * be strictly larger than the number of characters). + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_ia5_string( unsigned char **p, unsigned char *start, + const char *text, size_t text_len ); + +/** + * \brief Write a bitstring tag (#MBEDTLS_ASN1_BIT_STRING) and + * value in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param buf The bitstring to write. + * \param bits The total number of bits in the bitstring. + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_bitstring( unsigned char **p, unsigned char *start, + const unsigned char *buf, size_t bits ); + +/** + * \brief This function writes a named bitstring tag + * (#MBEDTLS_ASN1_BIT_STRING) and value in ASN.1 format. + * + * As stated in RFC 5280 Appendix B, trailing zeroes are + * omitted when encoding named bitstrings in DER. + * + * \note This function works backwards within the data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer which is used for bounds-checking. + * \param buf The bitstring to write. + * \param bits The total number of bits in the bitstring. + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_named_bitstring( unsigned char **p, + unsigned char *start, + const unsigned char *buf, + size_t bits ); + +/** + * \brief Write an octet string tag (#MBEDTLS_ASN1_OCTET_STRING) + * and value in ASN.1 format. + * + * \note This function works backwards in data buffer. + * + * \param p The reference to the current position pointer. + * \param start The start of the buffer, for bounds-checking. + * \param buf The buffer holding the data to write. + * \param size The length of the data buffer \p buf. + * + * \return The number of bytes written to \p p on success. + * \return A negative error code on failure. + */ +int mbedtls_asn1_write_octet_string( unsigned char **p, unsigned char *start, + const unsigned char *buf, size_t size ); + +/** + * \brief Create or find a specific named_data entry for writing in a + * sequence or list based on the OID. If not already in there, + * a new entry is added to the head of the list. + * Warning: Destructive behaviour for the val data! + * + * \param list The pointer to the location of the head of the list to seek + * through (will be updated in case of a new entry). + * \param oid The OID to look for. + * \param oid_len The size of the OID. + * \param val The associated data to store. If this is \c NULL, + * no data is copied to the new or existing buffer. + * \param val_len The minimum length of the data buffer needed. + * If this is 0, do not allocate a buffer for the associated + * data. + * If the OID was already present, enlarge, shrink or free + * the existing buffer to fit \p val_len. + * + * \return A pointer to the new / existing entry on success. + * \return \c NULL if if there was a memory allocation error. + */ +mbedtls_asn1_named_data *mbedtls_asn1_store_named_data( mbedtls_asn1_named_data **list, + const char *oid, size_t oid_len, + const unsigned char *val, + size_t val_len ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_ASN1_WRITE_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/base64.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/base64.h new file mode 100644 index 00000000..07ae3bf5 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/base64.h @@ -0,0 +1,98 @@ +/** + * \file base64.h + * + * \brief RFC 1521 base64 encoding/decoding + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_BASE64_H +#define MBEDTLS_BASE64_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#define MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL -0x002A /**< Output buffer too small. */ +#define MBEDTLS_ERR_BASE64_INVALID_CHARACTER -0x002C /**< Invalid character in input. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Encode a buffer into base64 format + * + * \param dst destination buffer + * \param dlen size of the destination buffer + * \param olen number of bytes written + * \param src source buffer + * \param slen amount of data to be encoded + * + * \return 0 if successful, or MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL. + * *olen is always updated to reflect the amount + * of data that has (or would have) been written. + * If that length cannot be represented, then no data is + * written to the buffer and *olen is set to the maximum + * length representable as a size_t. + * + * \note Call this function with dlen = 0 to obtain the + * required buffer size in *olen + */ +int mbedtls_base64_encode( unsigned char *dst, size_t dlen, size_t *olen, + const unsigned char *src, size_t slen ); + +/** + * \brief Decode a base64-formatted buffer + * + * \param dst destination buffer (can be NULL for checking size) + * \param dlen size of the destination buffer + * \param olen number of bytes written + * \param src source buffer + * \param slen amount of data to be decoded + * + * \return 0 if successful, MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL, or + * MBEDTLS_ERR_BASE64_INVALID_CHARACTER if the input data is + * not correct. *olen is always updated to reflect the amount + * of data that has (or would have) been written. + * + * \note Call this function with *dst = NULL or dlen = 0 to obtain + * the required buffer size in *olen + */ +int mbedtls_base64_decode( unsigned char *dst, size_t dlen, size_t *olen, + const unsigned char *src, size_t slen ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_base64_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* base64.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/bignum.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/bignum.h new file mode 100644 index 00000000..1d00c560 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/bignum.h @@ -0,0 +1,1019 @@ +/** + * \file bignum.h + * + * \brief Multi-precision integer library + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_BIGNUM_H +#define MBEDTLS_BIGNUM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#if defined(MBEDTLS_FS_IO) +#include +#endif + +#define MBEDTLS_ERR_MPI_FILE_IO_ERROR -0x0002 /**< An error occurred while reading from or writing to a file. */ +#define MBEDTLS_ERR_MPI_BAD_INPUT_DATA -0x0004 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_MPI_INVALID_CHARACTER -0x0006 /**< There is an invalid character in the digit string. */ +#define MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL -0x0008 /**< The buffer is too small to write to. */ +#define MBEDTLS_ERR_MPI_NEGATIVE_VALUE -0x000A /**< The input arguments are negative or result in illegal output. */ +#define MBEDTLS_ERR_MPI_DIVISION_BY_ZERO -0x000C /**< The input argument for division is zero, which is not allowed. */ +#define MBEDTLS_ERR_MPI_NOT_ACCEPTABLE -0x000E /**< The input arguments are not acceptable. */ +#define MBEDTLS_ERR_MPI_ALLOC_FAILED -0x0010 /**< Memory allocation failed. */ + +#define MBEDTLS_MPI_CHK(f) \ + do \ + { \ + if( ( ret = (f) ) != 0 ) \ + goto cleanup; \ + } while( 0 ) + +/* + * Maximum size MPIs are allowed to grow to in number of limbs. + */ +#define MBEDTLS_MPI_MAX_LIMBS 10000 + +#if !defined(MBEDTLS_MPI_WINDOW_SIZE) +/* + * Maximum window size used for modular exponentiation. Default: 6 + * Minimum value: 1. Maximum value: 6. + * + * Result is an array of ( 2 << MBEDTLS_MPI_WINDOW_SIZE ) MPIs used + * for the sliding window calculation. (So 64 by default) + * + * Reduction in size, reduces speed. + */ +#define MBEDTLS_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ +#endif /* !MBEDTLS_MPI_WINDOW_SIZE */ + +#if !defined(MBEDTLS_MPI_MAX_SIZE) +/* + * Maximum size of MPIs allowed in bits and bytes for user-MPIs. + * ( Default: 512 bytes => 4096 bits, Maximum tested: 2048 bytes => 16384 bits ) + * + * Note: Calculations can temporarily result in larger MPIs. So the number + * of limbs required (MBEDTLS_MPI_MAX_LIMBS) is higher. + */ +#define MBEDTLS_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ +#endif /* !MBEDTLS_MPI_MAX_SIZE */ + +#define MBEDTLS_MPI_MAX_BITS ( 8 * MBEDTLS_MPI_MAX_SIZE ) /**< Maximum number of bits for usable MPIs. */ + +/* + * When reading from files with mbedtls_mpi_read_file() and writing to files with + * mbedtls_mpi_write_file() the buffer should have space + * for a (short) label, the MPI (in the provided radix), the newline + * characters and the '\0'. + * + * By default we assume at least a 10 char label, a minimum radix of 10 + * (decimal) and a maximum of 4096 bit numbers (1234 decimal chars). + * Autosized at compile time for at least a 10 char label, a minimum radix + * of 10 (decimal) for a number of MBEDTLS_MPI_MAX_BITS size. + * + * This used to be statically sized to 1250 for a maximum of 4096 bit + * numbers (1234 decimal chars). + * + * Calculate using the formula: + * MBEDTLS_MPI_RW_BUFFER_SIZE = ceil(MBEDTLS_MPI_MAX_BITS / ln(10) * ln(2)) + + * LabelSize + 6 + */ +#define MBEDTLS_MPI_MAX_BITS_SCALE100 ( 100 * MBEDTLS_MPI_MAX_BITS ) +#define MBEDTLS_LN_2_DIV_LN_10_SCALE100 332 +#define MBEDTLS_MPI_RW_BUFFER_SIZE ( ((MBEDTLS_MPI_MAX_BITS_SCALE100 + MBEDTLS_LN_2_DIV_LN_10_SCALE100 - 1) / MBEDTLS_LN_2_DIV_LN_10_SCALE100) + 10 + 6 ) + +/* + * Define the base integer type, architecture-wise. + * + * 32 or 64-bit integer types can be forced regardless of the underlying + * architecture by defining MBEDTLS_HAVE_INT32 or MBEDTLS_HAVE_INT64 + * respectively and undefining MBEDTLS_HAVE_ASM. + * + * Double-width integers (e.g. 128-bit in 64-bit architectures) can be + * disabled by defining MBEDTLS_NO_UDBL_DIVISION. + */ +#if !defined(MBEDTLS_HAVE_INT32) + #if defined(_MSC_VER) && defined(_M_AMD64) + /* Always choose 64-bit when using MSC */ + #if !defined(MBEDTLS_HAVE_INT64) + #define MBEDTLS_HAVE_INT64 + #endif /* !MBEDTLS_HAVE_INT64 */ + typedef int64_t mbedtls_mpi_sint; + typedef uint64_t mbedtls_mpi_uint; + #elif defined(__GNUC__) && ( \ + defined(__amd64__) || defined(__x86_64__) || \ + defined(__ppc64__) || defined(__powerpc64__) || \ + defined(__ia64__) || defined(__alpha__) || \ + ( defined(__sparc__) && defined(__arch64__) ) || \ + defined(__s390x__) || defined(__mips64) || \ + defined(__aarch64__) ) + #if !defined(MBEDTLS_HAVE_INT64) + #define MBEDTLS_HAVE_INT64 + #endif /* MBEDTLS_HAVE_INT64 */ + typedef int64_t mbedtls_mpi_sint; + typedef uint64_t mbedtls_mpi_uint; + #if !defined(MBEDTLS_NO_UDBL_DIVISION) + /* mbedtls_t_udbl defined as 128-bit unsigned int */ + typedef unsigned int mbedtls_t_udbl __attribute__((mode(TI))); + #define MBEDTLS_HAVE_UDBL + #endif /* !MBEDTLS_NO_UDBL_DIVISION */ + #elif defined(__ARMCC_VERSION) && defined(__aarch64__) + /* + * __ARMCC_VERSION is defined for both armcc and armclang and + * __aarch64__ is only defined by armclang when compiling 64-bit code + */ + #if !defined(MBEDTLS_HAVE_INT64) + #define MBEDTLS_HAVE_INT64 + #endif /* !MBEDTLS_HAVE_INT64 */ + typedef int64_t mbedtls_mpi_sint; + typedef uint64_t mbedtls_mpi_uint; + #if !defined(MBEDTLS_NO_UDBL_DIVISION) + /* mbedtls_t_udbl defined as 128-bit unsigned int */ + typedef __uint128_t mbedtls_t_udbl; + #define MBEDTLS_HAVE_UDBL + #endif /* !MBEDTLS_NO_UDBL_DIVISION */ + #elif defined(MBEDTLS_HAVE_INT64) + /* Force 64-bit integers with unknown compiler */ + typedef int64_t mbedtls_mpi_sint; + typedef uint64_t mbedtls_mpi_uint; + #endif +#endif /* !MBEDTLS_HAVE_INT32 */ + +#if !defined(MBEDTLS_HAVE_INT64) + /* Default to 32-bit compilation */ + #if !defined(MBEDTLS_HAVE_INT32) + #define MBEDTLS_HAVE_INT32 + #endif /* !MBEDTLS_HAVE_INT32 */ + typedef int32_t mbedtls_mpi_sint; + typedef uint32_t mbedtls_mpi_uint; + #if !defined(MBEDTLS_NO_UDBL_DIVISION) + typedef uint64_t mbedtls_t_udbl; + #define MBEDTLS_HAVE_UDBL + #endif /* !MBEDTLS_NO_UDBL_DIVISION */ +#endif /* !MBEDTLS_HAVE_INT64 */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief MPI structure + */ +typedef struct mbedtls_mpi +{ + int s; /*!< Sign: -1 if the mpi is negative, 1 otherwise */ + size_t n; /*!< total # of limbs */ + mbedtls_mpi_uint *p; /*!< pointer to limbs */ +} +mbedtls_mpi; + +/** + * \brief Initialize an MPI context. + * + * This makes the MPI ready to be set or freed, + * but does not define a value for the MPI. + * + * \param X The MPI context to initialize. This must not be \c NULL. + */ +void mbedtls_mpi_init( mbedtls_mpi *X ); + +/** + * \brief This function frees the components of an MPI context. + * + * \param X The MPI context to be cleared. This may be \c NULL, + * in which case this function is a no-op. If it is + * not \c NULL, it must point to an initialized MPI. + */ +void mbedtls_mpi_free( mbedtls_mpi *X ); + +/** + * \brief Enlarge an MPI to the specified number of limbs. + * + * \note This function does nothing if the MPI is + * already large enough. + * + * \param X The MPI to grow. It must be initialized. + * \param nblimbs The target number of limbs. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_grow( mbedtls_mpi *X, size_t nblimbs ); + +/** + * \brief This function resizes an MPI downwards, keeping at least the + * specified number of limbs. + * + * If \c X is smaller than \c nblimbs, it is resized up + * instead. + * + * \param X The MPI to shrink. This must point to an initialized MPI. + * \param nblimbs The minimum number of limbs to keep. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed + * (this can only happen when resizing up). + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs ); + +/** + * \brief Make a copy of an MPI. + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param Y The source MPI. This must point to an initialized MPI. + * + * \note The limb-buffer in the destination MPI is enlarged + * if necessary to hold the value in the source MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_copy( mbedtls_mpi *X, const mbedtls_mpi *Y ); + +/** + * \brief Swap the contents of two MPIs. + * + * \param X The first MPI. It must be initialized. + * \param Y The second MPI. It must be initialized. + */ +void mbedtls_mpi_swap( mbedtls_mpi *X, mbedtls_mpi *Y ); + +/** + * \brief Perform a safe conditional copy of MPI which doesn't + * reveal whether the condition was true or not. + * + * \param X The MPI to conditionally assign to. This must point + * to an initialized MPI. + * \param Y The MPI to be assigned from. This must point to an + * initialized MPI. + * \param assign The condition deciding whether to perform the + * assignment or not. Possible values: + * * \c 1: Perform the assignment `X = Y`. + * * \c 0: Keep the original value of \p X. + * + * \note This function is equivalent to + * `if( assign ) mbedtls_mpi_copy( X, Y );` + * except that it avoids leaking any information about whether + * the assignment was done or not (the above code may leak + * information through branch prediction and/or memory access + * patterns analysis). + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_safe_cond_assign( mbedtls_mpi *X, const mbedtls_mpi *Y, unsigned char assign ); + +/** + * \brief Perform a safe conditional swap which doesn't + * reveal whether the condition was true or not. + * + * \param X The first MPI. This must be initialized. + * \param Y The second MPI. This must be initialized. + * \param assign The condition deciding whether to perform + * the swap or not. Possible values: + * * \c 1: Swap the values of \p X and \p Y. + * * \c 0: Keep the original values of \p X and \p Y. + * + * \note This function is equivalent to + * if( assign ) mbedtls_mpi_swap( X, Y ); + * except that it avoids leaking any information about whether + * the assignment was done or not (the above code may leak + * information through branch prediction and/or memory access + * patterns analysis). + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on other kinds of failure. + * + */ +int mbedtls_mpi_safe_cond_swap( mbedtls_mpi *X, mbedtls_mpi *Y, unsigned char assign ); + +/** + * \brief Store integer value in MPI. + * + * \param X The MPI to set. This must be initialized. + * \param z The value to use. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_lset( mbedtls_mpi *X, mbedtls_mpi_sint z ); + +/** + * \brief Get a specific bit from an MPI. + * + * \param X The MPI to query. This must be initialized. + * \param pos Zero-based index of the bit to query. + * + * \return \c 0 or \c 1 on success, depending on whether bit \c pos + * of \c X is unset or set. + * \return A negative error code on failure. + */ +int mbedtls_mpi_get_bit( const mbedtls_mpi *X, size_t pos ); + +/** + * \brief Modify a specific bit in an MPI. + * + * \note This function will grow the target MPI if necessary to set a + * bit to \c 1 in a not yet existing limb. It will not grow if + * the bit should be set to \c 0. + * + * \param X The MPI to modify. This must be initialized. + * \param pos Zero-based index of the bit to modify. + * \param val The desired value of bit \c pos: \c 0 or \c 1. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_set_bit( mbedtls_mpi *X, size_t pos, unsigned char val ); + +/** + * \brief Return the number of bits of value \c 0 before the + * least significant bit of value \c 1. + * + * \note This is the same as the zero-based index of + * the least significant bit of value \c 1. + * + * \param X The MPI to query. + * + * \return The number of bits of value \c 0 before the least significant + * bit of value \c 1 in \p X. + */ +size_t mbedtls_mpi_lsb( const mbedtls_mpi *X ); + +/** + * \brief Return the number of bits up to and including the most + * significant bit of value \c 1. + * + * * \note This is same as the one-based index of the most + * significant bit of value \c 1. + * + * \param X The MPI to query. This must point to an initialized MPI. + * + * \return The number of bits up to and including the most + * significant bit of value \c 1. + */ +size_t mbedtls_mpi_bitlen( const mbedtls_mpi *X ); + +/** + * \brief Return the total size of an MPI value in bytes. + * + * \param X The MPI to use. This must point to an initialized MPI. + * + * \note The value returned by this function may be less than + * the number of bytes used to store \p X internally. + * This happens if and only if there are trailing bytes + * of value zero. + * + * \return The least number of bytes capable of storing + * the absolute value of \p X. + */ +size_t mbedtls_mpi_size( const mbedtls_mpi *X ); + +/** + * \brief Import an MPI from an ASCII string. + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param radix The numeric base of the input string. + * \param s Null-terminated string buffer. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_mpi_read_string( mbedtls_mpi *X, int radix, const char *s ); + +/** + * \brief Export an MPI to an ASCII string. + * + * \param X The source MPI. This must point to an initialized MPI. + * \param radix The numeric base of the output string. + * \param buf The buffer to write the string to. This must be writable + * buffer of length \p buflen Bytes. + * \param buflen The available size in Bytes of \p buf. + * \param olen The address at which to store the length of the string + * written, including the final \c NULL byte. This must + * not be \c NULL. + * + * \note You can call this function with `buflen == 0` to obtain the + * minimum required buffer size in `*olen`. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if the target buffer \p buf + * is too small to hold the value of \p X in the desired base. + * In this case, `*olen` is nonetheless updated to contain the + * size of \p buf required for a successful call. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_write_string( const mbedtls_mpi *X, int radix, + char *buf, size_t buflen, size_t *olen ); + +#if defined(MBEDTLS_FS_IO) +/** + * \brief Read an MPI from a line in an opened file. + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param radix The numeric base of the string representation used + * in the source line. + * \param fin The input file handle to use. This must not be \c NULL. + * + * \note On success, this function advances the file stream + * to the end of the current line or to EOF. + * + * The function returns \c 0 on an empty line. + * + * Leading whitespaces are ignored, as is a + * '0x' prefix for radix \c 16. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if the file read buffer + * is too small. + * \return Another negative error code on failure. + */ +int mbedtls_mpi_read_file( mbedtls_mpi *X, int radix, FILE *fin ); + +/** + * \brief Export an MPI into an opened file. + * + * \param p A string prefix to emit prior to the MPI data. + * For example, this might be a label, or "0x" when + * printing in base \c 16. This may be \c NULL if no prefix + * is needed. + * \param X The source MPI. This must point to an initialized MPI. + * \param radix The numeric base to be used in the emitted string. + * \param fout The output file handle. This may be \c NULL, in which case + * the output is written to \c stdout. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_mpi_write_file( const char *p, const mbedtls_mpi *X, + int radix, FILE *fout ); +#endif /* MBEDTLS_FS_IO */ + +/** + * \brief Import an MPI from unsigned big endian binary data. + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param buf The input buffer. This must be a readable buffer of length + * \p buflen Bytes. + * \param buflen The length of the input buffer \p p in Bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_read_binary( mbedtls_mpi *X, const unsigned char *buf, + size_t buflen ); + +/** + * \brief Import X from unsigned binary data, little endian + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param buf The input buffer. This must be a readable buffer of length + * \p buflen Bytes. + * \param buflen The length of the input buffer \p p in Bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_read_binary_le( mbedtls_mpi *X, + const unsigned char *buf, size_t buflen ); + +/** + * \brief Export X into unsigned binary data, big endian. + * Always fills the whole buffer, which will start with zeros + * if the number is smaller. + * + * \param X The source MPI. This must point to an initialized MPI. + * \param buf The output buffer. This must be a writable buffer of length + * \p buflen Bytes. + * \param buflen The size of the output buffer \p buf in Bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if \p buf isn't + * large enough to hold the value of \p X. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_write_binary( const mbedtls_mpi *X, unsigned char *buf, + size_t buflen ); + +/** + * \brief Export X into unsigned binary data, little endian. + * Always fills the whole buffer, which will end with zeros + * if the number is smaller. + * + * \param X The source MPI. This must point to an initialized MPI. + * \param buf The output buffer. This must be a writable buffer of length + * \p buflen Bytes. + * \param buflen The size of the output buffer \p buf in Bytes. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_BUFFER_TOO_SMALL if \p buf isn't + * large enough to hold the value of \p X. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_write_binary_le( const mbedtls_mpi *X, + unsigned char *buf, size_t buflen ); + +/** + * \brief Perform a left-shift on an MPI: X <<= count + * + * \param X The MPI to shift. This must point to an initialized MPI. + * \param count The number of bits to shift by. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_shift_l( mbedtls_mpi *X, size_t count ); + +/** + * \brief Perform a right-shift on an MPI: X >>= count + * + * \param X The MPI to shift. This must point to an initialized MPI. + * \param count The number of bits to shift by. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_shift_r( mbedtls_mpi *X, size_t count ); + +/** + * \brief Compare the absolute values of two MPIs. + * + * \param X The left-hand MPI. This must point to an initialized MPI. + * \param Y The right-hand MPI. This must point to an initialized MPI. + * + * \return \c 1 if `|X|` is greater than `|Y|`. + * \return \c -1 if `|X|` is lesser than `|Y|`. + * \return \c 0 if `|X|` is equal to `|Y|`. + */ +int mbedtls_mpi_cmp_abs( const mbedtls_mpi *X, const mbedtls_mpi *Y ); + +/** + * \brief Compare two MPIs. + * + * \param X The left-hand MPI. This must point to an initialized MPI. + * \param Y The right-hand MPI. This must point to an initialized MPI. + * + * \return \c 1 if \p X is greater than \p Y. + * \return \c -1 if \p X is lesser than \p Y. + * \return \c 0 if \p X is equal to \p Y. + */ +int mbedtls_mpi_cmp_mpi( const mbedtls_mpi *X, const mbedtls_mpi *Y ); + +/** + * \brief Check if an MPI is less than the other in constant time. + * + * \param X The left-hand MPI. This must point to an initialized MPI + * with the same allocated length as Y. + * \param Y The right-hand MPI. This must point to an initialized MPI + * with the same allocated length as X. + * \param ret The result of the comparison: + * \c 1 if \p X is less than \p Y. + * \c 0 if \p X is greater than or equal to \p Y. + * + * \return 0 on success. + * \return MBEDTLS_ERR_MPI_BAD_INPUT_DATA if the allocated length of + * the two input MPIs is not the same. + */ +int mbedtls_mpi_lt_mpi_ct( const mbedtls_mpi *X, const mbedtls_mpi *Y, + unsigned *ret ); + +/** + * \brief Compare an MPI with an integer. + * + * \param X The left-hand MPI. This must point to an initialized MPI. + * \param z The integer value to compare \p X to. + * + * \return \c 1 if \p X is greater than \p z. + * \return \c -1 if \p X is lesser than \p z. + * \return \c 0 if \p X is equal to \p z. + */ +int mbedtls_mpi_cmp_int( const mbedtls_mpi *X, mbedtls_mpi_sint z ); + +/** + * \brief Perform an unsigned addition of MPIs: X = |A| + |B| + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The first summand. This must point to an initialized MPI. + * \param B The second summand. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_add_abs( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform an unsigned subtraction of MPIs: X = |A| - |B| + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The minuend. This must point to an initialized MPI. + * \param B The subtrahend. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_NEGATIVE_VALUE if \p B is greater than \p A. + * \return Another negative error code on different kinds of failure. + * + */ +int mbedtls_mpi_sub_abs( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform a signed addition of MPIs: X = A + B + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The first summand. This must point to an initialized MPI. + * \param B The second summand. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_add_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform a signed subtraction of MPIs: X = A - B + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The minuend. This must point to an initialized MPI. + * \param B The subtrahend. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_sub_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform a signed addition of an MPI and an integer: X = A + b + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The first summand. This must point to an initialized MPI. + * \param b The second summand. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_add_int( mbedtls_mpi *X, const mbedtls_mpi *A, + mbedtls_mpi_sint b ); + +/** + * \brief Perform a signed subtraction of an MPI and an integer: + * X = A - b + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The minuend. This must point to an initialized MPI. + * \param b The subtrahend. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_sub_int( mbedtls_mpi *X, const mbedtls_mpi *A, + mbedtls_mpi_sint b ); + +/** + * \brief Perform a multiplication of two MPIs: X = A * B + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The first factor. This must point to an initialized MPI. + * \param B The second factor. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + * + */ +int mbedtls_mpi_mul_mpi( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform a multiplication of an MPI with an unsigned integer: + * X = A * b + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The first factor. This must point to an initialized MPI. + * \param b The second factor. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + * + */ +int mbedtls_mpi_mul_int( mbedtls_mpi *X, const mbedtls_mpi *A, + mbedtls_mpi_uint b ); + +/** + * \brief Perform a division with remainder of two MPIs: + * A = Q * B + R + * + * \param Q The destination MPI for the quotient. + * This may be \c NULL if the value of the + * quotient is not needed. + * \param R The destination MPI for the remainder value. + * This may be \c NULL if the value of the + * remainder is not needed. + * \param A The dividend. This must point to an initialized MPi. + * \param B The divisor. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return #MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if \p B equals zero. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_div_mpi( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform a division with remainder of an MPI by an integer: + * A = Q * b + R + * + * \param Q The destination MPI for the quotient. + * This may be \c NULL if the value of the + * quotient is not needed. + * \param R The destination MPI for the remainder value. + * This may be \c NULL if the value of the + * remainder is not needed. + * \param A The dividend. This must point to an initialized MPi. + * \param b The divisor. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return #MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if \p b equals zero. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_div_int( mbedtls_mpi *Q, mbedtls_mpi *R, const mbedtls_mpi *A, + mbedtls_mpi_sint b ); + +/** + * \brief Perform a modular reduction. R = A mod B + * + * \param R The destination MPI for the residue value. + * This must point to an initialized MPI. + * \param A The MPI to compute the residue of. + * This must point to an initialized MPI. + * \param B The base of the modular reduction. + * This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if \p B equals zero. + * \return #MBEDTLS_ERR_MPI_NEGATIVE_VALUE if \p B is negative. + * \return Another negative error code on different kinds of failure. + * + */ +int mbedtls_mpi_mod_mpi( mbedtls_mpi *R, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Perform a modular reduction with respect to an integer. + * r = A mod b + * + * \param r The address at which to store the residue. + * This must not be \c NULL. + * \param A The MPI to compute the residue of. + * This must point to an initialized MPi. + * \param b The integer base of the modular reduction. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_DIVISION_BY_ZERO if \p b equals zero. + * \return #MBEDTLS_ERR_MPI_NEGATIVE_VALUE if \p b is negative. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_mod_int( mbedtls_mpi_uint *r, const mbedtls_mpi *A, + mbedtls_mpi_sint b ); + +/** + * \brief Perform a sliding-window exponentiation: X = A^E mod N + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The base of the exponentiation. + * This must point to an initialized MPI. + * \param E The exponent MPI. This must point to an initialized MPI. + * \param N The base for the modular reduction. This must point to an + * initialized MPI. + * \param _RR A helper MPI depending solely on \p N which can be used to + * speed-up multiple modular exponentiations for the same value + * of \p N. This may be \c NULL. If it is not \c NULL, it must + * point to an initialized MPI. If it hasn't been used after + * the call to mbedtls_mpi_init(), this function will compute + * the helper value and store it in \p _RR for reuse on + * subsequent calls to this function. Otherwise, the function + * will assume that \p _RR holds the helper value set by a + * previous call to mbedtls_mpi_exp_mod(), and reuse it. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if \c N is negative or + * even, or if \c E is negative. + * \return Another negative error code on different kinds of failures. + * + */ +int mbedtls_mpi_exp_mod( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *E, const mbedtls_mpi *N, + mbedtls_mpi *_RR ); + +/** + * \brief Fill an MPI with a number of random bytes. + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param size The number of random bytes to generate. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context argument. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on failure. + * + * \note The bytes obtained from the RNG are interpreted + * as a big-endian representation of an MPI; this can + * be relevant in applications like deterministic ECDSA. + */ +int mbedtls_mpi_fill_random( mbedtls_mpi *X, size_t size, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Compute the greatest common divisor: G = gcd(A, B) + * + * \param G The destination MPI. This must point to an initialized MPI. + * \param A The first operand. This must point to an initialized MPI. + * \param B The second operand. This must point to an initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_mpi_gcd( mbedtls_mpi *G, const mbedtls_mpi *A, + const mbedtls_mpi *B ); + +/** + * \brief Compute the modular inverse: X = A^-1 mod N + * + * \param X The destination MPI. This must point to an initialized MPI. + * \param A The MPI to calculate the modular inverse of. This must point + * to an initialized MPI. + * \param N The base of the modular inversion. This must point to an + * initialized MPI. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if \p N is less than + * or equal to one. + * \return #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if \p has no modular inverse + * with respect to \p N. + */ +int mbedtls_mpi_inv_mod( mbedtls_mpi *X, const mbedtls_mpi *A, + const mbedtls_mpi *N ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Perform a Miller-Rabin primality test with error + * probability of 2-80. + * + * \deprecated Superseded by mbedtls_mpi_is_prime_ext() which allows + * specifying the number of Miller-Rabin rounds. + * + * \param X The MPI to check for primality. + * This must point to an initialized MPI. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. + * This may be \c NULL if \p f_rng doesn't use a + * context parameter. + * + * \return \c 0 if successful, i.e. \p X is probably prime. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if \p X is not prime. + * \return Another negative error code on other kinds of failure. + */ +MBEDTLS_DEPRECATED int mbedtls_mpi_is_prime( const mbedtls_mpi *X, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Miller-Rabin primality test. + * + * \warning If \p X is potentially generated by an adversary, for example + * when validating cryptographic parameters that you didn't + * generate yourself and that are supposed to be prime, then + * \p rounds should be at least the half of the security + * strength of the cryptographic algorithm. On the other hand, + * if \p X is chosen uniformly or non-adversially (as is the + * case when mbedtls_mpi_gen_prime calls this function), then + * \p rounds can be much lower. + * + * \param X The MPI to check for primality. + * This must point to an initialized MPI. + * \param rounds The number of bases to perform the Miller-Rabin primality + * test for. The probability of returning 0 on a composite is + * at most 2-2*\p rounds. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. + * This may be \c NULL if \p f_rng doesn't use + * a context parameter. + * + * \return \c 0 if successful, i.e. \p X is probably prime. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_NOT_ACCEPTABLE if \p X is not prime. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_mpi_is_prime_ext( const mbedtls_mpi *X, int rounds, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); +/** + * \brief Flags for mbedtls_mpi_gen_prime() + * + * Each of these flags is a constraint on the result X returned by + * mbedtls_mpi_gen_prime(). + */ +typedef enum { + MBEDTLS_MPI_GEN_PRIME_FLAG_DH = 0x0001, /**< (X-1)/2 is prime too */ + MBEDTLS_MPI_GEN_PRIME_FLAG_LOW_ERR = 0x0002, /**< lower error rate from 2-80 to 2-128 */ +} mbedtls_mpi_gen_prime_flag_t; + +/** + * \brief Generate a prime number. + * + * \param X The destination MPI to store the generated prime in. + * This must point to an initialized MPi. + * \param nbits The required size of the destination MPI in bits. + * This must be between \c 3 and #MBEDTLS_MPI_MAX_BITS. + * \param flags A mask of flags of type #mbedtls_mpi_gen_prime_flag_t. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. + * This may be \c NULL if \p f_rng doesn't use + * a context parameter. + * + * \return \c 0 if successful, in which case \p X holds a + * probably prime number. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if a memory allocation failed. + * \return #MBEDTLS_ERR_MPI_BAD_INPUT_DATA if `nbits` is not between + * \c 3 and #MBEDTLS_MPI_MAX_BITS. + */ +int mbedtls_mpi_gen_prime( mbedtls_mpi *X, size_t nbits, int flags, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_mpi_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* bignum.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/blowfish.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/blowfish.h new file mode 100644 index 00000000..1e5dba3a --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/blowfish.h @@ -0,0 +1,287 @@ +/** + * \file blowfish.h + * + * \brief Blowfish block cipher + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_BLOWFISH_H +#define MBEDTLS_BLOWFISH_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#include "mbedtls/platform_util.h" + +#define MBEDTLS_BLOWFISH_ENCRYPT 1 +#define MBEDTLS_BLOWFISH_DECRYPT 0 +#define MBEDTLS_BLOWFISH_MAX_KEY_BITS 448 +#define MBEDTLS_BLOWFISH_MIN_KEY_BITS 32 +#define MBEDTLS_BLOWFISH_ROUNDS 16 /**< Rounds to use. When increasing this value, make sure to extend the initialisation vectors */ +#define MBEDTLS_BLOWFISH_BLOCKSIZE 8 /* Blowfish uses 64 bit blocks */ + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#define MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( -0x0016 ) +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ +#define MBEDTLS_ERR_BLOWFISH_BAD_INPUT_DATA -0x0016 /**< Bad input data. */ + +#define MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH -0x0018 /**< Invalid data input length. */ + +/* MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED is deprecated and should not be used. + */ +#define MBEDTLS_ERR_BLOWFISH_HW_ACCEL_FAILED -0x0017 /**< Blowfish hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_BLOWFISH_ALT) +// Regular implementation +// + +/** + * \brief Blowfish context structure + */ +typedef struct mbedtls_blowfish_context +{ + uint32_t P[MBEDTLS_BLOWFISH_ROUNDS + 2]; /*!< Blowfish round keys */ + uint32_t S[4][256]; /*!< key dependent S-boxes */ +} +mbedtls_blowfish_context; + +#else /* MBEDTLS_BLOWFISH_ALT */ +#include "blowfish_alt.h" +#endif /* MBEDTLS_BLOWFISH_ALT */ + +/** + * \brief Initialize a Blowfish context. + * + * \param ctx The Blowfish context to be initialized. + * This must not be \c NULL. + */ +void mbedtls_blowfish_init( mbedtls_blowfish_context *ctx ); + +/** + * \brief Clear a Blowfish context. + * + * \param ctx The Blowfish context to be cleared. + * This may be \c NULL, in which case this function + * returns immediately. If it is not \c NULL, it must + * point to an initialized Blowfish context. + */ +void mbedtls_blowfish_free( mbedtls_blowfish_context *ctx ); + +/** + * \brief Perform a Blowfish key schedule operation. + * + * \param ctx The Blowfish context to perform the key schedule on. + * \param key The encryption key. This must be a readable buffer of + * length \p keybits Bits. + * \param keybits The length of \p key in Bits. This must be between + * \c 32 and \c 448 and a multiple of \c 8. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_blowfish_setkey( mbedtls_blowfish_context *ctx, const unsigned char *key, + unsigned int keybits ); + +/** + * \brief Perform a Blowfish-ECB block encryption/decryption operation. + * + * \param ctx The Blowfish context to use. This must be initialized + * and bound to a key. + * \param mode The mode of operation. Possible values are + * #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or + * #MBEDTLS_BLOWFISH_DECRYPT for decryption. + * \param input The input block. This must be a readable buffer + * of size \c 8 Bytes. + * \param output The output block. This must be a writable buffer + * of size \c 8 Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_blowfish_crypt_ecb( mbedtls_blowfish_context *ctx, + int mode, + const unsigned char input[MBEDTLS_BLOWFISH_BLOCKSIZE], + unsigned char output[MBEDTLS_BLOWFISH_BLOCKSIZE] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief Perform a Blowfish-CBC buffer encryption/decryption operation. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx The Blowfish context to use. This must be initialized + * and bound to a key. + * \param mode The mode of operation. Possible values are + * #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or + * #MBEDTLS_BLOWFISH_DECRYPT for decryption. + * \param length The length of the input data in Bytes. This must be + * multiple of \c 8. + * \param iv The initialization vector. This must be a read/write buffer + * of length \c 8 Bytes. It is updated by this function. + * \param input The input data. This must be a readable buffer of length + * \p length Bytes. + * \param output The output data. This must be a writable buffer of length + * \p length Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_blowfish_crypt_cbc( mbedtls_blowfish_context *ctx, + int mode, + size_t length, + unsigned char iv[MBEDTLS_BLOWFISH_BLOCKSIZE], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/** + * \brief Perform a Blowfish CFB buffer encryption/decryption operation. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx The Blowfish context to use. This must be initialized + * and bound to a key. + * \param mode The mode of operation. Possible values are + * #MBEDTLS_BLOWFISH_ENCRYPT for encryption, or + * #MBEDTLS_BLOWFISH_DECRYPT for decryption. + * \param length The length of the input data in Bytes. + * \param iv_off The offset in the initialiation vector. + * The value pointed to must be smaller than \c 8 Bytes. + * It is updated by this function to support the aforementioned + * streaming usage. + * \param iv The initialization vector. This must be a read/write buffer + * of size \c 8 Bytes. It is updated after use. + * \param input The input data. This must be a readable buffer of length + * \p length Bytes. + * \param output The output data. This must be a writable buffer of length + * \p length Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_blowfish_crypt_cfb64( mbedtls_blowfish_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[MBEDTLS_BLOWFISH_BLOCKSIZE], + const unsigned char *input, + unsigned char *output ); +#endif /*MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/** + * \brief Perform a Blowfish-CTR buffer encryption/decryption operation. + * + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. + * + * With this strategy, you must not encrypt more than 2**64 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first 4 bytes for the + * per-message nonce, and the last 4 bytes for internal use. In that + * case, before calling this function on a new message you need to + * set the first 4 bytes of \p nonce_counter to your chosen nonce + * value, the last 4 to 0, and \p nc_off to 0 (which will cause \p + * stream_block to be ignored). That way, you can encrypt at most + * 2**32 messages of up to 2**32 blocks each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be unique. + * The recommended way to ensure uniqueness is to use a message + * counter. + * + * Note that for both stategies, sizes are measured in blocks and + * that a Blowfish block is 8 bytes. + * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * + * \param ctx The Blowfish context to use. This must be initialized + * and bound to a key. + * \param length The length of the input data in Bytes. + * \param nc_off The offset in the current stream_block (for resuming + * within current cipher stream). The offset pointer + * should be \c 0 at the start of a stream and must be + * smaller than \c 8. It is updated by this function. + * \param nonce_counter The 64-bit nonce and counter. This must point to a + * read/write buffer of length \c 8 Bytes. + * \param stream_block The saved stream-block for resuming. This must point to + * a read/write buffer of length \c 8 Bytes. + * \param input The input data. This must be a readable buffer of + * length \p length Bytes. + * \param output The output data. This must be a writable buffer of + * length \p length Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_blowfish_crypt_ctr( mbedtls_blowfish_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[MBEDTLS_BLOWFISH_BLOCKSIZE], + unsigned char stream_block[MBEDTLS_BLOWFISH_BLOCKSIZE], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +#ifdef __cplusplus +} +#endif + +#endif /* blowfish.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/bn_mul.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/bn_mul.h new file mode 100644 index 00000000..163869ae --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/bn_mul.h @@ -0,0 +1,940 @@ +/** + * \file bn_mul.h + * + * \brief Multi-precision integer library + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +/* + * Multiply source vector [s] with b, add result + * to destination vector [d] and set carry c. + * + * Currently supports: + * + * . IA-32 (386+) . AMD64 / EM64T + * . IA-32 (SSE2) . Motorola 68000 + * . PowerPC, 32-bit . MicroBlaze + * . PowerPC, 64-bit . TriCore + * . SPARC v8 . ARM v3+ + * . Alpha . MIPS32 + * . C, longlong . C, generic + */ +#ifndef MBEDTLS_BN_MUL_H +#define MBEDTLS_BN_MUL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/bignum.h" + +#if defined(MBEDTLS_HAVE_ASM) + +#ifndef asm +#define asm __asm +#endif + +/* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */ +#if defined(__GNUC__) && \ + ( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 ) + +/* + * Disable use of the i386 assembly code below if option -O0, to disable all + * compiler optimisations, is passed, detected with __OPTIMIZE__ + * This is done as the number of registers used in the assembly code doesn't + * work with the -O0 option. + */ +#if defined(__i386__) && defined(__OPTIMIZE__) + +#define MULADDC_INIT \ + asm( \ + "movl %%ebx, %0 \n\t" \ + "movl %5, %%esi \n\t" \ + "movl %6, %%edi \n\t" \ + "movl %7, %%ecx \n\t" \ + "movl %8, %%ebx \n\t" + +#define MULADDC_CORE \ + "lodsl \n\t" \ + "mull %%ebx \n\t" \ + "addl %%ecx, %%eax \n\t" \ + "adcl $0, %%edx \n\t" \ + "addl (%%edi), %%eax \n\t" \ + "adcl $0, %%edx \n\t" \ + "movl %%edx, %%ecx \n\t" \ + "stosl \n\t" + +#if defined(MBEDTLS_HAVE_SSE2) + +#define MULADDC_HUIT \ + "movd %%ecx, %%mm1 \n\t" \ + "movd %%ebx, %%mm0 \n\t" \ + "movd (%%edi), %%mm3 \n\t" \ + "paddq %%mm3, %%mm1 \n\t" \ + "movd (%%esi), %%mm2 \n\t" \ + "pmuludq %%mm0, %%mm2 \n\t" \ + "movd 4(%%esi), %%mm4 \n\t" \ + "pmuludq %%mm0, %%mm4 \n\t" \ + "movd 8(%%esi), %%mm6 \n\t" \ + "pmuludq %%mm0, %%mm6 \n\t" \ + "movd 12(%%esi), %%mm7 \n\t" \ + "pmuludq %%mm0, %%mm7 \n\t" \ + "paddq %%mm2, %%mm1 \n\t" \ + "movd 4(%%edi), %%mm3 \n\t" \ + "paddq %%mm4, %%mm3 \n\t" \ + "movd 8(%%edi), %%mm5 \n\t" \ + "paddq %%mm6, %%mm5 \n\t" \ + "movd 12(%%edi), %%mm4 \n\t" \ + "paddq %%mm4, %%mm7 \n\t" \ + "movd %%mm1, (%%edi) \n\t" \ + "movd 16(%%esi), %%mm2 \n\t" \ + "pmuludq %%mm0, %%mm2 \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "movd 20(%%esi), %%mm4 \n\t" \ + "pmuludq %%mm0, %%mm4 \n\t" \ + "paddq %%mm3, %%mm1 \n\t" \ + "movd 24(%%esi), %%mm6 \n\t" \ + "pmuludq %%mm0, %%mm6 \n\t" \ + "movd %%mm1, 4(%%edi) \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "movd 28(%%esi), %%mm3 \n\t" \ + "pmuludq %%mm0, %%mm3 \n\t" \ + "paddq %%mm5, %%mm1 \n\t" \ + "movd 16(%%edi), %%mm5 \n\t" \ + "paddq %%mm5, %%mm2 \n\t" \ + "movd %%mm1, 8(%%edi) \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "paddq %%mm7, %%mm1 \n\t" \ + "movd 20(%%edi), %%mm5 \n\t" \ + "paddq %%mm5, %%mm4 \n\t" \ + "movd %%mm1, 12(%%edi) \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "paddq %%mm2, %%mm1 \n\t" \ + "movd 24(%%edi), %%mm5 \n\t" \ + "paddq %%mm5, %%mm6 \n\t" \ + "movd %%mm1, 16(%%edi) \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "paddq %%mm4, %%mm1 \n\t" \ + "movd 28(%%edi), %%mm5 \n\t" \ + "paddq %%mm5, %%mm3 \n\t" \ + "movd %%mm1, 20(%%edi) \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "paddq %%mm6, %%mm1 \n\t" \ + "movd %%mm1, 24(%%edi) \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "paddq %%mm3, %%mm1 \n\t" \ + "movd %%mm1, 28(%%edi) \n\t" \ + "addl $32, %%edi \n\t" \ + "addl $32, %%esi \n\t" \ + "psrlq $32, %%mm1 \n\t" \ + "movd %%mm1, %%ecx \n\t" + +#define MULADDC_STOP \ + "emms \n\t" \ + "movl %4, %%ebx \n\t" \ + "movl %%ecx, %1 \n\t" \ + "movl %%edi, %2 \n\t" \ + "movl %%esi, %3 \n\t" \ + : "=m" (t), "=m" (c), "=m" (d), "=m" (s) \ + : "m" (t), "m" (s), "m" (d), "m" (c), "m" (b) \ + : "eax", "ebx", "ecx", "edx", "esi", "edi" \ + ); + +#else + +#define MULADDC_STOP \ + "movl %4, %%ebx \n\t" \ + "movl %%ecx, %1 \n\t" \ + "movl %%edi, %2 \n\t" \ + "movl %%esi, %3 \n\t" \ + : "=m" (t), "=m" (c), "=m" (d), "=m" (s) \ + : "m" (t), "m" (s), "m" (d), "m" (c), "m" (b) \ + : "eax", "ebx", "ecx", "edx", "esi", "edi" \ + ); +#endif /* SSE2 */ +#endif /* i386 */ + +#if defined(__amd64__) || defined (__x86_64__) + +#define MULADDC_INIT \ + asm( \ + "xorq %%r8, %%r8\n" + +#define MULADDC_CORE \ + "movq (%%rsi), %%rax\n" \ + "mulq %%rbx\n" \ + "addq $8, %%rsi\n" \ + "addq %%rcx, %%rax\n" \ + "movq %%r8, %%rcx\n" \ + "adcq $0, %%rdx\n" \ + "nop \n" \ + "addq %%rax, (%%rdi)\n" \ + "adcq %%rdx, %%rcx\n" \ + "addq $8, %%rdi\n" + +#define MULADDC_STOP \ + : "+c" (c), "+D" (d), "+S" (s) \ + : "b" (b) \ + : "rax", "rdx", "r8" \ + ); + +#endif /* AMD64 */ + +#if defined(__aarch64__) + +#define MULADDC_INIT \ + asm( + +#define MULADDC_CORE \ + "ldr x4, [%2], #8 \n\t" \ + "ldr x5, [%1] \n\t" \ + "mul x6, x4, %3 \n\t" \ + "umulh x7, x4, %3 \n\t" \ + "adds x5, x5, x6 \n\t" \ + "adc x7, x7, xzr \n\t" \ + "adds x5, x5, %0 \n\t" \ + "adc %0, x7, xzr \n\t" \ + "str x5, [%1], #8 \n\t" + +#define MULADDC_STOP \ + : "+r" (c), "+r" (d), "+r" (s) \ + : "r" (b) \ + : "x4", "x5", "x6", "x7", "cc" \ + ); + +#endif /* Aarch64 */ + +#if defined(__mc68020__) || defined(__mcpu32__) + +#define MULADDC_INIT \ + asm( \ + "movl %3, %%a2 \n\t" \ + "movl %4, %%a3 \n\t" \ + "movl %5, %%d3 \n\t" \ + "movl %6, %%d2 \n\t" \ + "moveq #0, %%d0 \n\t" + +#define MULADDC_CORE \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d4:%%d1 \n\t" \ + "addl %%d3, %%d1 \n\t" \ + "addxl %%d0, %%d4 \n\t" \ + "moveq #0, %%d3 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "addxl %%d4, %%d3 \n\t" + +#define MULADDC_STOP \ + "movl %%d3, %0 \n\t" \ + "movl %%a3, %1 \n\t" \ + "movl %%a2, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "d0", "d1", "d2", "d3", "d4", "a2", "a3" \ + ); + +#define MULADDC_HUIT \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d4:%%d1 \n\t" \ + "addxl %%d3, %%d1 \n\t" \ + "addxl %%d0, %%d4 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d3:%%d1 \n\t" \ + "addxl %%d4, %%d1 \n\t" \ + "addxl %%d0, %%d3 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d4:%%d1 \n\t" \ + "addxl %%d3, %%d1 \n\t" \ + "addxl %%d0, %%d4 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d3:%%d1 \n\t" \ + "addxl %%d4, %%d1 \n\t" \ + "addxl %%d0, %%d3 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d4:%%d1 \n\t" \ + "addxl %%d3, %%d1 \n\t" \ + "addxl %%d0, %%d4 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d3:%%d1 \n\t" \ + "addxl %%d4, %%d1 \n\t" \ + "addxl %%d0, %%d3 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d4:%%d1 \n\t" \ + "addxl %%d3, %%d1 \n\t" \ + "addxl %%d0, %%d4 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "movel %%a2@+, %%d1 \n\t" \ + "mulul %%d2, %%d3:%%d1 \n\t" \ + "addxl %%d4, %%d1 \n\t" \ + "addxl %%d0, %%d3 \n\t" \ + "addl %%d1, %%a3@+ \n\t" \ + "addxl %%d0, %%d3 \n\t" + +#endif /* MC68000 */ + +#if defined(__powerpc64__) || defined(__ppc64__) + +#if defined(__MACH__) && defined(__APPLE__) + +#define MULADDC_INIT \ + asm( \ + "ld r3, %3 \n\t" \ + "ld r4, %4 \n\t" \ + "ld r5, %5 \n\t" \ + "ld r6, %6 \n\t" \ + "addi r3, r3, -8 \n\t" \ + "addi r4, r4, -8 \n\t" \ + "addic r5, r5, 0 \n\t" + +#define MULADDC_CORE \ + "ldu r7, 8(r3) \n\t" \ + "mulld r8, r7, r6 \n\t" \ + "mulhdu r9, r7, r6 \n\t" \ + "adde r8, r8, r5 \n\t" \ + "ld r7, 8(r4) \n\t" \ + "addze r5, r9 \n\t" \ + "addc r8, r8, r7 \n\t" \ + "stdu r8, 8(r4) \n\t" + +#define MULADDC_STOP \ + "addze r5, r5 \n\t" \ + "addi r4, r4, 8 \n\t" \ + "addi r3, r3, 8 \n\t" \ + "std r5, %0 \n\t" \ + "std r4, %1 \n\t" \ + "std r3, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r3", "r4", "r5", "r6", "r7", "r8", "r9" \ + ); + + +#else /* __MACH__ && __APPLE__ */ + +#define MULADDC_INIT \ + asm( \ + "ld %%r3, %3 \n\t" \ + "ld %%r4, %4 \n\t" \ + "ld %%r5, %5 \n\t" \ + "ld %%r6, %6 \n\t" \ + "addi %%r3, %%r3, -8 \n\t" \ + "addi %%r4, %%r4, -8 \n\t" \ + "addic %%r5, %%r5, 0 \n\t" + +#define MULADDC_CORE \ + "ldu %%r7, 8(%%r3) \n\t" \ + "mulld %%r8, %%r7, %%r6 \n\t" \ + "mulhdu %%r9, %%r7, %%r6 \n\t" \ + "adde %%r8, %%r8, %%r5 \n\t" \ + "ld %%r7, 8(%%r4) \n\t" \ + "addze %%r5, %%r9 \n\t" \ + "addc %%r8, %%r8, %%r7 \n\t" \ + "stdu %%r8, 8(%%r4) \n\t" + +#define MULADDC_STOP \ + "addze %%r5, %%r5 \n\t" \ + "addi %%r4, %%r4, 8 \n\t" \ + "addi %%r3, %%r3, 8 \n\t" \ + "std %%r5, %0 \n\t" \ + "std %%r4, %1 \n\t" \ + "std %%r3, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r3", "r4", "r5", "r6", "r7", "r8", "r9" \ + ); + +#endif /* __MACH__ && __APPLE__ */ + +#elif defined(__powerpc__) || defined(__ppc__) /* end PPC64/begin PPC32 */ + +#if defined(__MACH__) && defined(__APPLE__) + +#define MULADDC_INIT \ + asm( \ + "lwz r3, %3 \n\t" \ + "lwz r4, %4 \n\t" \ + "lwz r5, %5 \n\t" \ + "lwz r6, %6 \n\t" \ + "addi r3, r3, -4 \n\t" \ + "addi r4, r4, -4 \n\t" \ + "addic r5, r5, 0 \n\t" + +#define MULADDC_CORE \ + "lwzu r7, 4(r3) \n\t" \ + "mullw r8, r7, r6 \n\t" \ + "mulhwu r9, r7, r6 \n\t" \ + "adde r8, r8, r5 \n\t" \ + "lwz r7, 4(r4) \n\t" \ + "addze r5, r9 \n\t" \ + "addc r8, r8, r7 \n\t" \ + "stwu r8, 4(r4) \n\t" + +#define MULADDC_STOP \ + "addze r5, r5 \n\t" \ + "addi r4, r4, 4 \n\t" \ + "addi r3, r3, 4 \n\t" \ + "stw r5, %0 \n\t" \ + "stw r4, %1 \n\t" \ + "stw r3, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r3", "r4", "r5", "r6", "r7", "r8", "r9" \ + ); + +#else /* __MACH__ && __APPLE__ */ + +#define MULADDC_INIT \ + asm( \ + "lwz %%r3, %3 \n\t" \ + "lwz %%r4, %4 \n\t" \ + "lwz %%r5, %5 \n\t" \ + "lwz %%r6, %6 \n\t" \ + "addi %%r3, %%r3, -4 \n\t" \ + "addi %%r4, %%r4, -4 \n\t" \ + "addic %%r5, %%r5, 0 \n\t" + +#define MULADDC_CORE \ + "lwzu %%r7, 4(%%r3) \n\t" \ + "mullw %%r8, %%r7, %%r6 \n\t" \ + "mulhwu %%r9, %%r7, %%r6 \n\t" \ + "adde %%r8, %%r8, %%r5 \n\t" \ + "lwz %%r7, 4(%%r4) \n\t" \ + "addze %%r5, %%r9 \n\t" \ + "addc %%r8, %%r8, %%r7 \n\t" \ + "stwu %%r8, 4(%%r4) \n\t" + +#define MULADDC_STOP \ + "addze %%r5, %%r5 \n\t" \ + "addi %%r4, %%r4, 4 \n\t" \ + "addi %%r3, %%r3, 4 \n\t" \ + "stw %%r5, %0 \n\t" \ + "stw %%r4, %1 \n\t" \ + "stw %%r3, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r3", "r4", "r5", "r6", "r7", "r8", "r9" \ + ); + +#endif /* __MACH__ && __APPLE__ */ + +#endif /* PPC32 */ + +/* + * The Sparc(64) assembly is reported to be broken. + * Disable it for now, until we're able to fix it. + */ +#if 0 && defined(__sparc__) +#if defined(__sparc64__) + +#define MULADDC_INIT \ + asm( \ + "ldx %3, %%o0 \n\t" \ + "ldx %4, %%o1 \n\t" \ + "ld %5, %%o2 \n\t" \ + "ld %6, %%o3 \n\t" + +#define MULADDC_CORE \ + "ld [%%o0], %%o4 \n\t" \ + "inc 4, %%o0 \n\t" \ + "ld [%%o1], %%o5 \n\t" \ + "umul %%o3, %%o4, %%o4 \n\t" \ + "addcc %%o4, %%o2, %%o4 \n\t" \ + "rd %%y, %%g1 \n\t" \ + "addx %%g1, 0, %%g1 \n\t" \ + "addcc %%o4, %%o5, %%o4 \n\t" \ + "st %%o4, [%%o1] \n\t" \ + "addx %%g1, 0, %%o2 \n\t" \ + "inc 4, %%o1 \n\t" + + #define MULADDC_STOP \ + "st %%o2, %0 \n\t" \ + "stx %%o1, %1 \n\t" \ + "stx %%o0, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "g1", "o0", "o1", "o2", "o3", "o4", \ + "o5" \ + ); + +#else /* __sparc64__ */ + +#define MULADDC_INIT \ + asm( \ + "ld %3, %%o0 \n\t" \ + "ld %4, %%o1 \n\t" \ + "ld %5, %%o2 \n\t" \ + "ld %6, %%o3 \n\t" + +#define MULADDC_CORE \ + "ld [%%o0], %%o4 \n\t" \ + "inc 4, %%o0 \n\t" \ + "ld [%%o1], %%o5 \n\t" \ + "umul %%o3, %%o4, %%o4 \n\t" \ + "addcc %%o4, %%o2, %%o4 \n\t" \ + "rd %%y, %%g1 \n\t" \ + "addx %%g1, 0, %%g1 \n\t" \ + "addcc %%o4, %%o5, %%o4 \n\t" \ + "st %%o4, [%%o1] \n\t" \ + "addx %%g1, 0, %%o2 \n\t" \ + "inc 4, %%o1 \n\t" + +#define MULADDC_STOP \ + "st %%o2, %0 \n\t" \ + "st %%o1, %1 \n\t" \ + "st %%o0, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "g1", "o0", "o1", "o2", "o3", "o4", \ + "o5" \ + ); + +#endif /* __sparc64__ */ +#endif /* __sparc__ */ + +#if defined(__microblaze__) || defined(microblaze) + +#define MULADDC_INIT \ + asm( \ + "lwi r3, %3 \n\t" \ + "lwi r4, %4 \n\t" \ + "lwi r5, %5 \n\t" \ + "lwi r6, %6 \n\t" \ + "andi r7, r6, 0xffff \n\t" \ + "bsrli r6, r6, 16 \n\t" + +#define MULADDC_CORE \ + "lhui r8, r3, 0 \n\t" \ + "addi r3, r3, 2 \n\t" \ + "lhui r9, r3, 0 \n\t" \ + "addi r3, r3, 2 \n\t" \ + "mul r10, r9, r6 \n\t" \ + "mul r11, r8, r7 \n\t" \ + "mul r12, r9, r7 \n\t" \ + "mul r13, r8, r6 \n\t" \ + "bsrli r8, r10, 16 \n\t" \ + "bsrli r9, r11, 16 \n\t" \ + "add r13, r13, r8 \n\t" \ + "add r13, r13, r9 \n\t" \ + "bslli r10, r10, 16 \n\t" \ + "bslli r11, r11, 16 \n\t" \ + "add r12, r12, r10 \n\t" \ + "addc r13, r13, r0 \n\t" \ + "add r12, r12, r11 \n\t" \ + "addc r13, r13, r0 \n\t" \ + "lwi r10, r4, 0 \n\t" \ + "add r12, r12, r10 \n\t" \ + "addc r13, r13, r0 \n\t" \ + "add r12, r12, r5 \n\t" \ + "addc r5, r13, r0 \n\t" \ + "swi r12, r4, 0 \n\t" \ + "addi r4, r4, 4 \n\t" + +#define MULADDC_STOP \ + "swi r5, %0 \n\t" \ + "swi r4, %1 \n\t" \ + "swi r3, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r3", "r4", "r5", "r6", "r7", "r8", \ + "r9", "r10", "r11", "r12", "r13" \ + ); + +#endif /* MicroBlaze */ + +#if defined(__tricore__) + +#define MULADDC_INIT \ + asm( \ + "ld.a %%a2, %3 \n\t" \ + "ld.a %%a3, %4 \n\t" \ + "ld.w %%d4, %5 \n\t" \ + "ld.w %%d1, %6 \n\t" \ + "xor %%d5, %%d5 \n\t" + +#define MULADDC_CORE \ + "ld.w %%d0, [%%a2+] \n\t" \ + "madd.u %%e2, %%e4, %%d0, %%d1 \n\t" \ + "ld.w %%d0, [%%a3] \n\t" \ + "addx %%d2, %%d2, %%d0 \n\t" \ + "addc %%d3, %%d3, 0 \n\t" \ + "mov %%d4, %%d3 \n\t" \ + "st.w [%%a3+], %%d2 \n\t" + +#define MULADDC_STOP \ + "st.w %0, %%d4 \n\t" \ + "st.a %1, %%a3 \n\t" \ + "st.a %2, %%a2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "d0", "d1", "e2", "d4", "a2", "a3" \ + ); + +#endif /* TriCore */ + +/* + * Note, gcc -O0 by default uses r7 for the frame pointer, so it complains about + * our use of r7 below, unless -fomit-frame-pointer is passed. + * + * On the other hand, -fomit-frame-pointer is implied by any -Ox options with + * x !=0, which we can detect using __OPTIMIZE__ (which is also defined by + * clang and armcc5 under the same conditions). + * + * So, only use the optimized assembly below for optimized build, which avoids + * the build error and is pretty reasonable anyway. + */ +#if defined(__GNUC__) && !defined(__OPTIMIZE__) +#define MULADDC_CANNOT_USE_R7 +#endif + +#if defined(__arm__) && !defined(MULADDC_CANNOT_USE_R7) + +#if defined(__thumb__) && !defined(__thumb2__) + +#define MULADDC_INIT \ + asm( \ + "ldr r0, %3 \n\t" \ + "ldr r1, %4 \n\t" \ + "ldr r2, %5 \n\t" \ + "ldr r3, %6 \n\t" \ + "lsr r7, r3, #16 \n\t" \ + "mov r9, r7 \n\t" \ + "lsl r7, r3, #16 \n\t" \ + "lsr r7, r7, #16 \n\t" \ + "mov r8, r7 \n\t" + +#define MULADDC_CORE \ + "ldmia r0!, {r6} \n\t" \ + "lsr r7, r6, #16 \n\t" \ + "lsl r6, r6, #16 \n\t" \ + "lsr r6, r6, #16 \n\t" \ + "mov r4, r8 \n\t" \ + "mul r4, r6 \n\t" \ + "mov r3, r9 \n\t" \ + "mul r6, r3 \n\t" \ + "mov r5, r9 \n\t" \ + "mul r5, r7 \n\t" \ + "mov r3, r8 \n\t" \ + "mul r7, r3 \n\t" \ + "lsr r3, r6, #16 \n\t" \ + "add r5, r5, r3 \n\t" \ + "lsr r3, r7, #16 \n\t" \ + "add r5, r5, r3 \n\t" \ + "add r4, r4, r2 \n\t" \ + "mov r2, #0 \n\t" \ + "adc r5, r2 \n\t" \ + "lsl r3, r6, #16 \n\t" \ + "add r4, r4, r3 \n\t" \ + "adc r5, r2 \n\t" \ + "lsl r3, r7, #16 \n\t" \ + "add r4, r4, r3 \n\t" \ + "adc r5, r2 \n\t" \ + "ldr r3, [r1] \n\t" \ + "add r4, r4, r3 \n\t" \ + "adc r2, r5 \n\t" \ + "stmia r1!, {r4} \n\t" + +#define MULADDC_STOP \ + "str r2, %0 \n\t" \ + "str r1, %1 \n\t" \ + "str r0, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r0", "r1", "r2", "r3", "r4", "r5", \ + "r6", "r7", "r8", "r9", "cc" \ + ); + +#elif (__ARM_ARCH >= 6) && \ + defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1) + +#define MULADDC_INIT \ + asm( + +#define MULADDC_CORE \ + "ldr r0, [%0], #4 \n\t" \ + "ldr r1, [%1] \n\t" \ + "umaal r1, %2, %3, r0 \n\t" \ + "str r1, [%1], #4 \n\t" + +#define MULADDC_STOP \ + : "=r" (s), "=r" (d), "=r" (c) \ + : "r" (b), "0" (s), "1" (d), "2" (c) \ + : "r0", "r1", "memory" \ + ); + +#else + +#define MULADDC_INIT \ + asm( \ + "ldr r0, %3 \n\t" \ + "ldr r1, %4 \n\t" \ + "ldr r2, %5 \n\t" \ + "ldr r3, %6 \n\t" + +#define MULADDC_CORE \ + "ldr r4, [r0], #4 \n\t" \ + "mov r5, #0 \n\t" \ + "ldr r6, [r1] \n\t" \ + "umlal r2, r5, r3, r4 \n\t" \ + "adds r7, r6, r2 \n\t" \ + "adc r2, r5, #0 \n\t" \ + "str r7, [r1], #4 \n\t" + +#define MULADDC_STOP \ + "str r2, %0 \n\t" \ + "str r1, %1 \n\t" \ + "str r0, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "r0", "r1", "r2", "r3", "r4", "r5", \ + "r6", "r7", "cc" \ + ); + +#endif /* Thumb */ + +#endif /* ARMv3 */ + +#if defined(__alpha__) + +#define MULADDC_INIT \ + asm( \ + "ldq $1, %3 \n\t" \ + "ldq $2, %4 \n\t" \ + "ldq $3, %5 \n\t" \ + "ldq $4, %6 \n\t" + +#define MULADDC_CORE \ + "ldq $6, 0($1) \n\t" \ + "addq $1, 8, $1 \n\t" \ + "mulq $6, $4, $7 \n\t" \ + "umulh $6, $4, $6 \n\t" \ + "addq $7, $3, $7 \n\t" \ + "cmpult $7, $3, $3 \n\t" \ + "ldq $5, 0($2) \n\t" \ + "addq $7, $5, $7 \n\t" \ + "cmpult $7, $5, $5 \n\t" \ + "stq $7, 0($2) \n\t" \ + "addq $2, 8, $2 \n\t" \ + "addq $6, $3, $3 \n\t" \ + "addq $5, $3, $3 \n\t" + +#define MULADDC_STOP \ + "stq $3, %0 \n\t" \ + "stq $2, %1 \n\t" \ + "stq $1, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "$1", "$2", "$3", "$4", "$5", "$6", "$7" \ + ); +#endif /* Alpha */ + +#if defined(__mips__) && !defined(__mips64) + +#define MULADDC_INIT \ + asm( \ + "lw $10, %3 \n\t" \ + "lw $11, %4 \n\t" \ + "lw $12, %5 \n\t" \ + "lw $13, %6 \n\t" + +#define MULADDC_CORE \ + "lw $14, 0($10) \n\t" \ + "multu $13, $14 \n\t" \ + "addi $10, $10, 4 \n\t" \ + "mflo $14 \n\t" \ + "mfhi $9 \n\t" \ + "addu $14, $12, $14 \n\t" \ + "lw $15, 0($11) \n\t" \ + "sltu $12, $14, $12 \n\t" \ + "addu $15, $14, $15 \n\t" \ + "sltu $14, $15, $14 \n\t" \ + "addu $12, $12, $9 \n\t" \ + "sw $15, 0($11) \n\t" \ + "addu $12, $12, $14 \n\t" \ + "addi $11, $11, 4 \n\t" + +#define MULADDC_STOP \ + "sw $12, %0 \n\t" \ + "sw $11, %1 \n\t" \ + "sw $10, %2 \n\t" \ + : "=m" (c), "=m" (d), "=m" (s) \ + : "m" (s), "m" (d), "m" (c), "m" (b) \ + : "$9", "$10", "$11", "$12", "$13", "$14", "$15", "lo", "hi" \ + ); + +#endif /* MIPS */ +#endif /* GNUC */ + +#if (defined(_MSC_VER) && defined(_M_IX86)) || defined(__WATCOMC__) + +#define MULADDC_INIT \ + __asm mov esi, s \ + __asm mov edi, d \ + __asm mov ecx, c \ + __asm mov ebx, b + +#define MULADDC_CORE \ + __asm lodsd \ + __asm mul ebx \ + __asm add eax, ecx \ + __asm adc edx, 0 \ + __asm add eax, [edi] \ + __asm adc edx, 0 \ + __asm mov ecx, edx \ + __asm stosd + +#if defined(MBEDTLS_HAVE_SSE2) + +#define EMIT __asm _emit + +#define MULADDC_HUIT \ + EMIT 0x0F EMIT 0x6E EMIT 0xC9 \ + EMIT 0x0F EMIT 0x6E EMIT 0xC3 \ + EMIT 0x0F EMIT 0x6E EMIT 0x1F \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCB \ + EMIT 0x0F EMIT 0x6E EMIT 0x16 \ + EMIT 0x0F EMIT 0xF4 EMIT 0xD0 \ + EMIT 0x0F EMIT 0x6E EMIT 0x66 EMIT 0x04 \ + EMIT 0x0F EMIT 0xF4 EMIT 0xE0 \ + EMIT 0x0F EMIT 0x6E EMIT 0x76 EMIT 0x08 \ + EMIT 0x0F EMIT 0xF4 EMIT 0xF0 \ + EMIT 0x0F EMIT 0x6E EMIT 0x7E EMIT 0x0C \ + EMIT 0x0F EMIT 0xF4 EMIT 0xF8 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCA \ + EMIT 0x0F EMIT 0x6E EMIT 0x5F EMIT 0x04 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xDC \ + EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x08 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xEE \ + EMIT 0x0F EMIT 0x6E EMIT 0x67 EMIT 0x0C \ + EMIT 0x0F EMIT 0xD4 EMIT 0xFC \ + EMIT 0x0F EMIT 0x7E EMIT 0x0F \ + EMIT 0x0F EMIT 0x6E EMIT 0x56 EMIT 0x10 \ + EMIT 0x0F EMIT 0xF4 EMIT 0xD0 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0x6E EMIT 0x66 EMIT 0x14 \ + EMIT 0x0F EMIT 0xF4 EMIT 0xE0 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCB \ + EMIT 0x0F EMIT 0x6E EMIT 0x76 EMIT 0x18 \ + EMIT 0x0F EMIT 0xF4 EMIT 0xF0 \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x04 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0x6E EMIT 0x5E EMIT 0x1C \ + EMIT 0x0F EMIT 0xF4 EMIT 0xD8 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCD \ + EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x10 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xD5 \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x08 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCF \ + EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x14 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xE5 \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x0C \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCA \ + EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x18 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xF5 \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x10 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCC \ + EMIT 0x0F EMIT 0x6E EMIT 0x6F EMIT 0x1C \ + EMIT 0x0F EMIT 0xD4 EMIT 0xDD \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x14 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCE \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x18 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0xD4 EMIT 0xCB \ + EMIT 0x0F EMIT 0x7E EMIT 0x4F EMIT 0x1C \ + EMIT 0x83 EMIT 0xC7 EMIT 0x20 \ + EMIT 0x83 EMIT 0xC6 EMIT 0x20 \ + EMIT 0x0F EMIT 0x73 EMIT 0xD1 EMIT 0x20 \ + EMIT 0x0F EMIT 0x7E EMIT 0xC9 + +#define MULADDC_STOP \ + EMIT 0x0F EMIT 0x77 \ + __asm mov c, ecx \ + __asm mov d, edi \ + __asm mov s, esi \ + +#else + +#define MULADDC_STOP \ + __asm mov c, ecx \ + __asm mov d, edi \ + __asm mov s, esi \ + +#endif /* SSE2 */ +#endif /* MSVC */ + +#endif /* MBEDTLS_HAVE_ASM */ + +#if !defined(MULADDC_CORE) +#if defined(MBEDTLS_HAVE_UDBL) + +#define MULADDC_INIT \ +{ \ + mbedtls_t_udbl r; \ + mbedtls_mpi_uint r0, r1; + +#define MULADDC_CORE \ + r = *(s++) * (mbedtls_t_udbl) b; \ + r0 = (mbedtls_mpi_uint) r; \ + r1 = (mbedtls_mpi_uint)( r >> biL ); \ + r0 += c; r1 += (r0 < c); \ + r0 += *d; r1 += (r0 < *d); \ + c = r1; *(d++) = r0; + +#define MULADDC_STOP \ +} + +#else +#define MULADDC_INIT \ +{ \ + mbedtls_mpi_uint s0, s1, b0, b1; \ + mbedtls_mpi_uint r0, r1, rx, ry; \ + b0 = ( b << biH ) >> biH; \ + b1 = ( b >> biH ); + +#define MULADDC_CORE \ + s0 = ( *s << biH ) >> biH; \ + s1 = ( *s >> biH ); s++; \ + rx = s0 * b1; r0 = s0 * b0; \ + ry = s1 * b0; r1 = s1 * b1; \ + r1 += ( rx >> biH ); \ + r1 += ( ry >> biH ); \ + rx <<= biH; ry <<= biH; \ + r0 += rx; r1 += (r0 < rx); \ + r0 += ry; r1 += (r0 < ry); \ + r0 += c; r1 += (r0 < c); \ + r0 += *d; r1 += (r0 < *d); \ + c = r1; *(d++) = r0; + +#define MULADDC_STOP \ +} + +#endif /* C (generic) */ +#endif /* C (longlong) */ + +#endif /* bn_mul.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/camellia.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/camellia.h new file mode 100644 index 00000000..a8324543 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/camellia.h @@ -0,0 +1,326 @@ +/** + * \file camellia.h + * + * \brief Camellia block cipher + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_CAMELLIA_H +#define MBEDTLS_CAMELLIA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#include "mbedtls/platform_util.h" + +#define MBEDTLS_CAMELLIA_ENCRYPT 1 +#define MBEDTLS_CAMELLIA_DECRYPT 0 + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#define MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( -0x0024 ) +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ +#define MBEDTLS_ERR_CAMELLIA_BAD_INPUT_DATA -0x0024 /**< Bad input data. */ + +#define MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH -0x0026 /**< Invalid data input length. */ + +/* MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED is deprecated and should not be used. + */ +#define MBEDTLS_ERR_CAMELLIA_HW_ACCEL_FAILED -0x0027 /**< Camellia hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_CAMELLIA_ALT) +// Regular implementation +// + +/** + * \brief CAMELLIA context structure + */ +typedef struct mbedtls_camellia_context +{ + int nr; /*!< number of rounds */ + uint32_t rk[68]; /*!< CAMELLIA round keys */ +} +mbedtls_camellia_context; + +#else /* MBEDTLS_CAMELLIA_ALT */ +#include "camellia_alt.h" +#endif /* MBEDTLS_CAMELLIA_ALT */ + +/** + * \brief Initialize a CAMELLIA context. + * + * \param ctx The CAMELLIA context to be initialized. + * This must not be \c NULL. + */ +void mbedtls_camellia_init( mbedtls_camellia_context *ctx ); + +/** + * \brief Clear a CAMELLIA context. + * + * \param ctx The CAMELLIA context to be cleared. This may be \c NULL, + * in which case this function returns immediately. If it is not + * \c NULL, it must be initialized. + */ +void mbedtls_camellia_free( mbedtls_camellia_context *ctx ); + +/** + * \brief Perform a CAMELLIA key schedule operation for encryption. + * + * \param ctx The CAMELLIA context to use. This must be initialized. + * \param key The encryption key to use. This must be a readable buffer + * of size \p keybits Bits. + * \param keybits The length of \p key in Bits. This must be either \c 128, + * \c 192 or \c 256. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_camellia_setkey_enc( mbedtls_camellia_context *ctx, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief Perform a CAMELLIA key schedule operation for decryption. + * + * \param ctx The CAMELLIA context to use. This must be initialized. + * \param key The decryption key. This must be a readable buffer + * of size \p keybits Bits. + * \param keybits The length of \p key in Bits. This must be either \c 128, + * \c 192 or \c 256. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_camellia_setkey_dec( mbedtls_camellia_context *ctx, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief Perform a CAMELLIA-ECB block encryption/decryption operation. + * + * \param ctx The CAMELLIA context to use. This must be initialized + * and bound to a key. + * \param mode The mode of operation. This must be either + * #MBEDTLS_CAMELLIA_ENCRYPT or #MBEDTLS_CAMELLIA_DECRYPT. + * \param input The input block. This must be a readable buffer + * of size \c 16 Bytes. + * \param output The output block. This must be a writable buffer + * of size \c 16 Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_camellia_crypt_ecb( mbedtls_camellia_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief Perform a CAMELLIA-CBC buffer encryption/decryption operation. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx The CAMELLIA context to use. This must be initialized + * and bound to a key. + * \param mode The mode of operation. This must be either + * #MBEDTLS_CAMELLIA_ENCRYPT or #MBEDTLS_CAMELLIA_DECRYPT. + * \param length The length in Bytes of the input data \p input. + * This must be a multiple of \c 16 Bytes. + * \param iv The initialization vector. This must be a read/write buffer + * of length \c 16 Bytes. It is updated to allow streaming + * use as explained above. + * \param input The buffer holding the input data. This must point to a + * readable buffer of length \p length Bytes. + * \param output The buffer holding the output data. This must point to a + * writable buffer of length \p length Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_camellia_crypt_cbc( mbedtls_camellia_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_CIPHER_MODE_CFB) +/** + * \brief Perform a CAMELLIA-CFB128 buffer encryption/decryption + * operation. + * + * \note Due to the nature of CFB mode, you should use the same + * key for both encryption and decryption. In particular, calls + * to this function should be preceded by a key-schedule via + * mbedtls_camellia_setkey_enc() regardless of whether \p mode + * is #MBEDTLS_CAMELLIA_ENCRYPT or #MBEDTLS_CAMELLIA_DECRYPT. + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx The CAMELLIA context to use. This must be initialized + * and bound to a key. + * \param mode The mode of operation. This must be either + * #MBEDTLS_CAMELLIA_ENCRYPT or #MBEDTLS_CAMELLIA_DECRYPT. + * \param length The length of the input data \p input. Any value is allowed. + * \param iv_off The current offset in the IV. This must be smaller + * than \c 16 Bytes. It is updated after this call to allow + * the aforementioned streaming usage. + * \param iv The initialization vector. This must be a read/write buffer + * of length \c 16 Bytes. It is updated after this call to + * allow the aforementioned streaming usage. + * \param input The buffer holding the input data. This must be a readable + * buffer of size \p length Bytes. + * \param output The buffer to hold the output data. This must be a writable + * buffer of length \p length Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_camellia_crypt_cfb128( mbedtls_camellia_context *ctx, + int mode, + size_t length, + size_t *iv_off, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CFB */ + +#if defined(MBEDTLS_CIPHER_MODE_CTR) +/** + * \brief Perform a CAMELLIA-CTR buffer encryption/decryption operation. + * + * *note Due to the nature of CTR mode, you should use the same + * key for both encryption and decryption. In particular, calls + * to this function should be preceded by a key-schedule via + * mbedtls_camellia_setkey_enc() regardless of whether \p mode + * is #MBEDTLS_CAMELLIA_ENCRYPT or #MBEDTLS_CAMELLIA_DECRYPT. + * + * \warning You must never reuse a nonce value with the same key. Doing so + * would void the encryption for the two messages encrypted with + * the same nonce and key. + * + * There are two common strategies for managing nonces with CTR: + * + * 1. You can handle everything as a single message processed over + * successive calls to this function. In that case, you want to + * set \p nonce_counter and \p nc_off to 0 for the first call, and + * then preserve the values of \p nonce_counter, \p nc_off and \p + * stream_block across calls to this function as they will be + * updated by this function. + * + * With this strategy, you must not encrypt more than 2**128 + * blocks of data with the same key. + * + * 2. You can encrypt separate messages by dividing the \p + * nonce_counter buffer in two areas: the first one used for a + * per-message nonce, handled by yourself, and the second one + * updated by this function internally. + * + * For example, you might reserve the first \c 12 Bytes for the + * per-message nonce, and the last \c 4 Bytes for internal use. + * In that case, before calling this function on a new message you + * need to set the first \c 12 Bytes of \p nonce_counter to your + * chosen nonce value, the last four to \c 0, and \p nc_off to \c 0 + * (which will cause \p stream_block to be ignored). That way, you + * can encrypt at most \c 2**96 messages of up to \c 2**32 blocks + * each with the same key. + * + * The per-message nonce (or information sufficient to reconstruct + * it) needs to be communicated with the ciphertext and must be + * unique. The recommended way to ensure uniqueness is to use a + * message counter. An alternative is to generate random nonces, + * but this limits the number of messages that can be securely + * encrypted: for example, with 96-bit random nonces, you should + * not encrypt more than 2**32 messages with the same key. + * + * Note that for both stategies, sizes are measured in blocks and + * that a CAMELLIA block is \c 16 Bytes. + * + * \warning Upon return, \p stream_block contains sensitive data. Its + * content must not be written to insecure storage and should be + * securely discarded as soon as it's no longer needed. + * + * \param ctx The CAMELLIA context to use. This must be initialized + * and bound to a key. + * \param length The length of the input data \p input in Bytes. + * Any value is allowed. + * \param nc_off The offset in the current \p stream_block (for resuming + * within current cipher stream). The offset pointer to + * should be \c 0 at the start of a stream. It is updated + * at the end of this call. + * \param nonce_counter The 128-bit nonce and counter. This must be a read/write + * buffer of length \c 16 Bytes. + * \param stream_block The saved stream-block for resuming. This must be a + * read/write buffer of length \c 16 Bytes. + * \param input The input data stream. This must be a readable buffer of + * size \p length Bytes. + * \param output The output data stream. This must be a writable buffer + * of size \p length Bytes. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_camellia_crypt_ctr( mbedtls_camellia_context *ctx, + size_t length, + size_t *nc_off, + unsigned char nonce_counter[16], + unsigned char stream_block[16], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CTR */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_camellia_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* camellia.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ccm.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ccm.h new file mode 100644 index 00000000..ceac36ca --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ccm.h @@ -0,0 +1,310 @@ +/** + * \file ccm.h + * + * \brief This file provides an API for the CCM authenticated encryption + * mode for block ciphers. + * + * CCM combines Counter mode encryption with CBC-MAC authentication + * for 128-bit block ciphers. + * + * Input to CCM includes the following elements: + *
    • Payload - data that is both authenticated and encrypted.
    • + *
    • Associated data (Adata) - data that is authenticated but not + * encrypted, For example, a header.
    • + *
    • Nonce - A unique value that is assigned to the payload and the + * associated data.
    + * + * Definition of CCM: + * http://csrc.nist.gov/publications/nistpubs/800-38C/SP800-38C_updated-July20_2007.pdf + * RFC 3610 "Counter with CBC-MAC (CCM)" + * + * Related: + * RFC 5116 "An Interface and Algorithms for Authenticated Encryption" + * + * Definition of CCM*: + * IEEE 802.15.4 - IEEE Standard for Local and metropolitan area networks + * Integer representation is fixed most-significant-octet-first order and + * the representation of octets is most-significant-bit-first order. This is + * consistent with RFC 3610. + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CCM_H +#define MBEDTLS_CCM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" + +#define MBEDTLS_ERR_CCM_BAD_INPUT -0x000D /**< Bad input parameters to the function. */ +#define MBEDTLS_ERR_CCM_AUTH_FAILED -0x000F /**< Authenticated decryption failed. */ + +/* MBEDTLS_ERR_CCM_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_CCM_HW_ACCEL_FAILED -0x0011 /**< CCM hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_CCM_ALT) +// Regular implementation +// + +/** + * \brief The CCM context-type definition. The CCM context is passed + * to the APIs called. + */ +typedef struct mbedtls_ccm_context +{ + mbedtls_cipher_context_t cipher_ctx; /*!< The cipher context used. */ +} +mbedtls_ccm_context; + +#else /* MBEDTLS_CCM_ALT */ +#include "ccm_alt.h" +#endif /* MBEDTLS_CCM_ALT */ + +/** + * \brief This function initializes the specified CCM context, + * to make references valid, and prepare the context + * for mbedtls_ccm_setkey() or mbedtls_ccm_free(). + * + * \param ctx The CCM context to initialize. This must not be \c NULL. + */ +void mbedtls_ccm_init( mbedtls_ccm_context *ctx ); + +/** + * \brief This function initializes the CCM context set in the + * \p ctx parameter and sets the encryption key. + * + * \param ctx The CCM context to initialize. This must be an initialized + * context. + * \param cipher The 128-bit block cipher to use. + * \param key The encryption key. This must not be \c NULL. + * \param keybits The key size in bits. This must be acceptable by the cipher. + * + * \return \c 0 on success. + * \return A CCM or cipher-specific error code on failure. + */ +int mbedtls_ccm_setkey( mbedtls_ccm_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function releases and clears the specified CCM context + * and underlying cipher sub-context. + * + * \param ctx The CCM context to clear. If this is \c NULL, the function + * has no effect. Otherwise, this must be initialized. + */ +void mbedtls_ccm_free( mbedtls_ccm_context *ctx ); + +/** + * \brief This function encrypts a buffer using CCM. + * + * \note The tag is written to a separate buffer. To concatenate + * the \p tag with the \p output, as done in RFC-3610: + * Counter with CBC-MAC (CCM), use + * \p tag = \p output + \p length, and make sure that the + * output buffer is at least \p length + \p tag_len wide. + * + * \param ctx The CCM context to use for encryption. This must be + * initialized and bound to a key. + * \param length The length of the input data in Bytes. + * \param iv The initialization vector (nonce). This must be a readable + * buffer of at least \p iv_len Bytes. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. + * \param add The additional data field. If \p add_len is greater than + * zero, \p add must be a readable buffer of at least that + * length. + * \param add_len The length of additional data in Bytes. + * This must be less than `2^16 - 2^8`. + * \param input The buffer holding the input data. If \p length is greater + * than zero, \p input must be a readable buffer of at least + * that length. + * \param output The buffer holding the output data. If \p length is greater + * than zero, \p output must be a writable buffer of at least + * that length. + * \param tag The buffer holding the authentication field. This must be a + * readable buffer of at least \p tag_len Bytes. + * \param tag_len The length of the authentication field to generate in Bytes: + * 4, 6, 8, 10, 12, 14 or 16. + * + * \return \c 0 on success. + * \return A CCM or cipher-specific error code on failure. + */ +int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + unsigned char *tag, size_t tag_len ); + +/** + * \brief This function encrypts a buffer using CCM*. + * + * \note The tag is written to a separate buffer. To concatenate + * the \p tag with the \p output, as done in RFC-3610: + * Counter with CBC-MAC (CCM), use + * \p tag = \p output + \p length, and make sure that the + * output buffer is at least \p length + \p tag_len wide. + * + * \note When using this function in a variable tag length context, + * the tag length has to be encoded into the \p iv passed to + * this function. + * + * \param ctx The CCM context to use for encryption. This must be + * initialized and bound to a key. + * \param length The length of the input data in Bytes. + * \param iv The initialization vector (nonce). This must be a readable + * buffer of at least \p iv_len Bytes. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. + * \param add The additional data field. This must be a readable buffer of + * at least \p add_len Bytes. + * \param add_len The length of additional data in Bytes. + * This must be less than 2^16 - 2^8. + * \param input The buffer holding the input data. If \p length is greater + * than zero, \p input must be a readable buffer of at least + * that length. + * \param output The buffer holding the output data. If \p length is greater + * than zero, \p output must be a writable buffer of at least + * that length. + * \param tag The buffer holding the authentication field. This must be a + * readable buffer of at least \p tag_len Bytes. + * \param tag_len The length of the authentication field to generate in Bytes: + * 0, 4, 6, 8, 10, 12, 14 or 16. + * + * \warning Passing \c 0 as \p tag_len means that the message is no + * longer authenticated. + * + * \return \c 0 on success. + * \return A CCM or cipher-specific error code on failure. + */ +int mbedtls_ccm_star_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + unsigned char *tag, size_t tag_len ); + +/** + * \brief This function performs a CCM authenticated decryption of a + * buffer. + * + * \param ctx The CCM context to use for decryption. This must be + * initialized and bound to a key. + * \param length The length of the input data in Bytes. + * \param iv The initialization vector (nonce). This must be a readable + * buffer of at least \p iv_len Bytes. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. + * \param add The additional data field. This must be a readable buffer + * of at least that \p add_len Bytes.. + * \param add_len The length of additional data in Bytes. + * This must be less than 2^16 - 2^8. + * \param input The buffer holding the input data. If \p length is greater + * than zero, \p input must be a readable buffer of at least + * that length. + * \param output The buffer holding the output data. If \p length is greater + * than zero, \p output must be a writable buffer of at least + * that length. + * \param tag The buffer holding the authentication field. This must be a + * readable buffer of at least \p tag_len Bytes. + * \param tag_len The length of the authentication field to generate in Bytes: + * 4, 6, 8, 10, 12, 14 or 16. + * + * \return \c 0 on success. This indicates that the message is authentic. + * \return #MBEDTLS_ERR_CCM_AUTH_FAILED if the tag does not match. + * \return A cipher-specific error code on calculation failure. + */ +int mbedtls_ccm_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + const unsigned char *tag, size_t tag_len ); + +/** + * \brief This function performs a CCM* authenticated decryption of a + * buffer. + * + * \note When using this function in a variable tag length context, + * the tag length has to be decoded from \p iv and passed to + * this function as \p tag_len. (\p tag needs to be adjusted + * accordingly.) + * + * \param ctx The CCM context to use for decryption. This must be + * initialized and bound to a key. + * \param length The length of the input data in Bytes. + * \param iv The initialization vector (nonce). This must be a readable + * buffer of at least \p iv_len Bytes. + * \param iv_len The length of the nonce in Bytes: 7, 8, 9, 10, 11, 12, + * or 13. The length L of the message length field is + * 15 - \p iv_len. + * \param add The additional data field. This must be a readable buffer of + * at least that \p add_len Bytes. + * \param add_len The length of additional data in Bytes. + * This must be less than 2^16 - 2^8. + * \param input The buffer holding the input data. If \p length is greater + * than zero, \p input must be a readable buffer of at least + * that length. + * \param output The buffer holding the output data. If \p length is greater + * than zero, \p output must be a writable buffer of at least + * that length. + * \param tag The buffer holding the authentication field. This must be a + * readable buffer of at least \p tag_len Bytes. + * \param tag_len The length of the authentication field in Bytes. + * 0, 4, 6, 8, 10, 12, 14 or 16. + * + * \warning Passing \c 0 as \p tag_len means that the message is nos + * longer authenticated. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CCM_AUTH_FAILED if the tag does not match. + * \return A cipher-specific error code on calculation failure. + */ +int mbedtls_ccm_star_auth_decrypt( mbedtls_ccm_context *ctx, size_t length, + const unsigned char *iv, size_t iv_len, + const unsigned char *add, size_t add_len, + const unsigned char *input, unsigned char *output, + const unsigned char *tag, size_t tag_len ); + +#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) +/** + * \brief The CCM checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_ccm_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CCM_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/chacha20.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/chacha20.h new file mode 100644 index 00000000..243ae63a --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/chacha20.h @@ -0,0 +1,226 @@ +/** + * \file chacha20.h + * + * \brief This file contains ChaCha20 definitions and functions. + * + * ChaCha20 is a stream cipher that can encrypt and decrypt + * information. ChaCha was created by Daniel Bernstein as a variant of + * its Salsa cipher https://cr.yp.to/chacha/chacha-20080128.pdf + * ChaCha20 is the variant with 20 rounds, that was also standardized + * in RFC 7539. + * + * \author Daniel King + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CHACHA20_H +#define MBEDTLS_CHACHA20_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA -0x0051 /**< Invalid input parameter(s). */ + +/* MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE is deprecated and should not be + * used. */ +#define MBEDTLS_ERR_CHACHA20_FEATURE_UNAVAILABLE -0x0053 /**< Feature not available. For example, s part of the API is not implemented. */ + +/* MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED is deprecated and should not be used. + */ +#define MBEDTLS_ERR_CHACHA20_HW_ACCEL_FAILED -0x0055 /**< Chacha20 hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_CHACHA20_ALT) + +typedef struct mbedtls_chacha20_context +{ + uint32_t state[16]; /*! The state (before round operations). */ + uint8_t keystream8[64]; /*! Leftover keystream bytes. */ + size_t keystream_bytes_used; /*! Number of keystream bytes already used. */ +} +mbedtls_chacha20_context; + +#else /* MBEDTLS_CHACHA20_ALT */ +#include "chacha20_alt.h" +#endif /* MBEDTLS_CHACHA20_ALT */ + +/** + * \brief This function initializes the specified ChaCha20 context. + * + * It must be the first API called before using + * the context. + * + * It is usually followed by calls to + * \c mbedtls_chacha20_setkey() and + * \c mbedtls_chacha20_starts(), then one or more calls to + * to \c mbedtls_chacha20_update(), and finally to + * \c mbedtls_chacha20_free(). + * + * \param ctx The ChaCha20 context to initialize. + * This must not be \c NULL. + */ +void mbedtls_chacha20_init( mbedtls_chacha20_context *ctx ); + +/** + * \brief This function releases and clears the specified + * ChaCha20 context. + * + * \param ctx The ChaCha20 context to clear. This may be \c NULL, + * in which case this function is a no-op. If it is not + * \c NULL, it must point to an initialized context. + * + */ +void mbedtls_chacha20_free( mbedtls_chacha20_context *ctx ); + +/** + * \brief This function sets the encryption/decryption key. + * + * \note After using this function, you must also call + * \c mbedtls_chacha20_starts() to set a nonce before you + * start encrypting/decrypting data with + * \c mbedtls_chacha_update(). + * + * \param ctx The ChaCha20 context to which the key should be bound. + * It must be initialized. + * \param key The encryption/decryption key. This must be \c 32 Bytes + * in length. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if ctx or key is NULL. + */ +int mbedtls_chacha20_setkey( mbedtls_chacha20_context *ctx, + const unsigned char key[32] ); + +/** + * \brief This function sets the nonce and initial counter value. + * + * \note A ChaCha20 context can be re-used with the same key by + * calling this function to change the nonce. + * + * \warning You must never use the same nonce twice with the same key. + * This would void any confidentiality guarantees for the + * messages encrypted with the same nonce and key. + * + * \param ctx The ChaCha20 context to which the nonce should be bound. + * It must be initialized and bound to a key. + * \param nonce The nonce. This must be \c 12 Bytes in size. + * \param counter The initial counter value. This is usually \c 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHA20_BAD_INPUT_DATA if ctx or nonce is + * NULL. + */ +int mbedtls_chacha20_starts( mbedtls_chacha20_context* ctx, + const unsigned char nonce[12], + uint32_t counter ); + +/** + * \brief This function encrypts or decrypts data. + * + * Since ChaCha20 is a stream cipher, the same operation is + * used for encrypting and decrypting data. + * + * \note The \p input and \p output pointers must either be equal or + * point to non-overlapping buffers. + * + * \note \c mbedtls_chacha20_setkey() and + * \c mbedtls_chacha20_starts() must be called at least once + * to setup the context before this function can be called. + * + * \note This function can be called multiple times in a row in + * order to encrypt of decrypt data piecewise with the same + * key and nonce. + * + * \param ctx The ChaCha20 context to use for encryption or decryption. + * It must be initialized and bound to a key and nonce. + * \param size The length of the input data in Bytes. + * \param input The buffer holding the input data. + * This pointer can be \c NULL if `size == 0`. + * \param output The buffer holding the output data. + * This must be able to hold \p size Bytes. + * This pointer can be \c NULL if `size == 0`. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_chacha20_update( mbedtls_chacha20_context *ctx, + size_t size, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function encrypts or decrypts data with ChaCha20 and + * the given key and nonce. + * + * Since ChaCha20 is a stream cipher, the same operation is + * used for encrypting and decrypting data. + * + * \warning You must never use the same (key, nonce) pair more than + * once. This would void any confidentiality guarantees for + * the messages encrypted with the same nonce and key. + * + * \note The \p input and \p output pointers must either be equal or + * point to non-overlapping buffers. + * + * \param key The encryption/decryption key. + * This must be \c 32 Bytes in length. + * \param nonce The nonce. This must be \c 12 Bytes in size. + * \param counter The initial counter value. This is usually \c 0. + * \param size The length of the input data in Bytes. + * \param input The buffer holding the input data. + * This pointer can be \c NULL if `size == 0`. + * \param output The buffer holding the output data. + * This must be able to hold \p size Bytes. + * This pointer can be \c NULL if `size == 0`. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_chacha20_crypt( const unsigned char key[32], + const unsigned char nonce[12], + uint32_t counter, + size_t size, + const unsigned char* input, + unsigned char* output ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief The ChaCha20 checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_chacha20_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CHACHA20_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/chachapoly.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/chachapoly.h new file mode 100644 index 00000000..3d842ef1 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/chachapoly.h @@ -0,0 +1,358 @@ +/** + * \file chachapoly.h + * + * \brief This file contains the AEAD-ChaCha20-Poly1305 definitions and + * functions. + * + * ChaCha20-Poly1305 is an algorithm for Authenticated Encryption + * with Associated Data (AEAD) that can be used to encrypt and + * authenticate data. It is based on ChaCha20 and Poly1305 by Daniel + * Bernstein and was standardized in RFC 7539. + * + * \author Daniel King + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CHACHAPOLY_H +#define MBEDTLS_CHACHAPOLY_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +/* for shared error codes */ +#include "mbedtls/poly1305.h" + +#define MBEDTLS_ERR_CHACHAPOLY_BAD_STATE -0x0054 /**< The requested operation is not permitted in the current state. */ +#define MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED -0x0056 /**< Authenticated decryption failed: data was not authentic. */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum +{ + MBEDTLS_CHACHAPOLY_ENCRYPT, /**< The mode value for performing encryption. */ + MBEDTLS_CHACHAPOLY_DECRYPT /**< The mode value for performing decryption. */ +} +mbedtls_chachapoly_mode_t; + +#if !defined(MBEDTLS_CHACHAPOLY_ALT) + +#include "mbedtls/chacha20.h" + +typedef struct mbedtls_chachapoly_context +{ + mbedtls_chacha20_context chacha20_ctx; /**< The ChaCha20 context. */ + mbedtls_poly1305_context poly1305_ctx; /**< The Poly1305 context. */ + uint64_t aad_len; /**< The length (bytes) of the Additional Authenticated Data. */ + uint64_t ciphertext_len; /**< The length (bytes) of the ciphertext. */ + int state; /**< The current state of the context. */ + mbedtls_chachapoly_mode_t mode; /**< Cipher mode (encrypt or decrypt). */ +} +mbedtls_chachapoly_context; + +#else /* !MBEDTLS_CHACHAPOLY_ALT */ +#include "chachapoly_alt.h" +#endif /* !MBEDTLS_CHACHAPOLY_ALT */ + +/** + * \brief This function initializes the specified ChaCha20-Poly1305 context. + * + * It must be the first API called before using + * the context. It must be followed by a call to + * \c mbedtls_chachapoly_setkey() before any operation can be + * done, and to \c mbedtls_chachapoly_free() once all + * operations with that context have been finished. + * + * In order to encrypt or decrypt full messages at once, for + * each message you should make a single call to + * \c mbedtls_chachapoly_crypt_and_tag() or + * \c mbedtls_chachapoly_auth_decrypt(). + * + * In order to encrypt messages piecewise, for each + * message you should make a call to + * \c mbedtls_chachapoly_starts(), then 0 or more calls to + * \c mbedtls_chachapoly_update_aad(), then 0 or more calls to + * \c mbedtls_chachapoly_update(), then one call to + * \c mbedtls_chachapoly_finish(). + * + * \warning Decryption with the piecewise API is discouraged! Always + * use \c mbedtls_chachapoly_auth_decrypt() when possible! + * + * If however this is not possible because the data is too + * large to fit in memory, you need to: + * + * - call \c mbedtls_chachapoly_starts() and (if needed) + * \c mbedtls_chachapoly_update_aad() as above, + * - call \c mbedtls_chachapoly_update() multiple times and + * ensure its output (the plaintext) is NOT used in any other + * way than placing it in temporary storage at this point, + * - call \c mbedtls_chachapoly_finish() to compute the + * authentication tag and compared it in constant time to the + * tag received with the ciphertext. + * + * If the tags are not equal, you must immediately discard + * all previous outputs of \c mbedtls_chachapoly_update(), + * otherwise you can now safely use the plaintext. + * + * \param ctx The ChachaPoly context to initialize. Must not be \c NULL. + */ +void mbedtls_chachapoly_init( mbedtls_chachapoly_context *ctx ); + +/** + * \brief This function releases and clears the specified + * ChaCha20-Poly1305 context. + * + * \param ctx The ChachaPoly context to clear. This may be \c NULL, in which + * case this function is a no-op. + */ +void mbedtls_chachapoly_free( mbedtls_chachapoly_context *ctx ); + +/** + * \brief This function sets the ChaCha20-Poly1305 + * symmetric encryption key. + * + * \param ctx The ChaCha20-Poly1305 context to which the key should be + * bound. This must be initialized. + * \param key The \c 256 Bit (\c 32 Bytes) key. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_chachapoly_setkey( mbedtls_chachapoly_context *ctx, + const unsigned char key[32] ); + +/** + * \brief This function starts a ChaCha20-Poly1305 encryption or + * decryption operation. + * + * \warning You must never use the same nonce twice with the same key. + * This would void any confidentiality and authenticity + * guarantees for the messages encrypted with the same nonce + * and key. + * + * \note If the context is being used for AAD only (no data to + * encrypt or decrypt) then \p mode can be set to any value. + * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * + * \param ctx The ChaCha20-Poly1305 context. This must be initialized + * and bound to a key. + * \param nonce The nonce/IV to use for the message. + * This must be a redable buffer of length \c 12 Bytes. + * \param mode The operation to perform: #MBEDTLS_CHACHAPOLY_ENCRYPT or + * #MBEDTLS_CHACHAPOLY_DECRYPT (discouraged, see warning). + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_chachapoly_starts( mbedtls_chachapoly_context *ctx, + const unsigned char nonce[12], + mbedtls_chachapoly_mode_t mode ); + +/** + * \brief This function feeds additional data to be authenticated + * into an ongoing ChaCha20-Poly1305 operation. + * + * The Additional Authenticated Data (AAD), also called + * Associated Data (AD) is only authenticated but not + * encrypted nor included in the encrypted output. It is + * usually transmitted separately from the ciphertext or + * computed locally by each party. + * + * \note This function is called before data is encrypted/decrypted. + * I.e. call this function to process the AAD before calling + * \c mbedtls_chachapoly_update(). + * + * You may call this function multiple times to process + * an arbitrary amount of AAD. It is permitted to call + * this function 0 times, if no AAD is used. + * + * This function cannot be called any more if data has + * been processed by \c mbedtls_chachapoly_update(), + * or if the context has been finished. + * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * + * \param ctx The ChaCha20-Poly1305 context. This must be initialized + * and bound to a key. + * \param aad_len The length in Bytes of the AAD. The length has no + * restrictions. + * \param aad Buffer containing the AAD. + * This pointer can be \c NULL if `aad_len == 0`. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA + * if \p ctx or \p aad are NULL. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE + * if the operations has not been started or has been + * finished, or if the AAD has been finished. + */ +int mbedtls_chachapoly_update_aad( mbedtls_chachapoly_context *ctx, + const unsigned char *aad, + size_t aad_len ); + +/** + * \brief Thus function feeds data to be encrypted or decrypted + * into an on-going ChaCha20-Poly1305 + * operation. + * + * The direction (encryption or decryption) depends on the + * mode that was given when calling + * \c mbedtls_chachapoly_starts(). + * + * You may call this function multiple times to process + * an arbitrary amount of data. It is permitted to call + * this function 0 times, if no data is to be encrypted + * or decrypted. + * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * + * \param ctx The ChaCha20-Poly1305 context to use. This must be initialized. + * \param len The length (in bytes) of the data to encrypt or decrypt. + * \param input The buffer containing the data to encrypt or decrypt. + * This pointer can be \c NULL if `len == 0`. + * \param output The buffer to where the encrypted or decrypted data is + * written. This must be able to hold \p len bytes. + * This pointer can be \c NULL if `len == 0`. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE + * if the operation has not been started or has been + * finished. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_chachapoly_update( mbedtls_chachapoly_context *ctx, + size_t len, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function finished the ChaCha20-Poly1305 operation and + * generates the MAC (authentication tag). + * + * \param ctx The ChaCha20-Poly1305 context to use. This must be initialized. + * \param mac The buffer to where the 128-bit (16 bytes) MAC is written. + * + * \warning Decryption with the piecewise API is discouraged, see the + * warning on \c mbedtls_chachapoly_init(). + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_BAD_STATE + * if the operation has not been started or has been + * finished. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_chachapoly_finish( mbedtls_chachapoly_context *ctx, + unsigned char mac[16] ); + +/** + * \brief This function performs a complete ChaCha20-Poly1305 + * authenticated encryption with the previously-set key. + * + * \note Before using this function, you must set the key with + * \c mbedtls_chachapoly_setkey(). + * + * \warning You must never use the same nonce twice with the same key. + * This would void any confidentiality and authenticity + * guarantees for the messages encrypted with the same nonce + * and key. + * + * \param ctx The ChaCha20-Poly1305 context to use (holds the key). + * This must be initialized. + * \param length The length (in bytes) of the data to encrypt or decrypt. + * \param nonce The 96-bit (12 bytes) nonce/IV to use. + * \param aad The buffer containing the additional authenticated + * data (AAD). This pointer can be \c NULL if `aad_len == 0`. + * \param aad_len The length (in bytes) of the AAD data to process. + * \param input The buffer containing the data to encrypt or decrypt. + * This pointer can be \c NULL if `ilen == 0`. + * \param output The buffer to where the encrypted or decrypted data + * is written. This pointer can be \c NULL if `ilen == 0`. + * \param tag The buffer to where the computed 128-bit (16 bytes) MAC + * is written. This must not be \c NULL. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_chachapoly_encrypt_and_tag( mbedtls_chachapoly_context *ctx, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char *input, + unsigned char *output, + unsigned char tag[16] ); + +/** + * \brief This function performs a complete ChaCha20-Poly1305 + * authenticated decryption with the previously-set key. + * + * \note Before using this function, you must set the key with + * \c mbedtls_chachapoly_setkey(). + * + * \param ctx The ChaCha20-Poly1305 context to use (holds the key). + * \param length The length (in Bytes) of the data to decrypt. + * \param nonce The \c 96 Bit (\c 12 bytes) nonce/IV to use. + * \param aad The buffer containing the additional authenticated data (AAD). + * This pointer can be \c NULL if `aad_len == 0`. + * \param aad_len The length (in bytes) of the AAD data to process. + * \param tag The buffer holding the authentication tag. + * This must be a readable buffer of length \c 16 Bytes. + * \param input The buffer containing the data to decrypt. + * This pointer can be \c NULL if `ilen == 0`. + * \param output The buffer to where the decrypted data is written. + * This pointer can be \c NULL if `ilen == 0`. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CHACHAPOLY_AUTH_FAILED + * if the data was not authentic. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_chachapoly_auth_decrypt( mbedtls_chachapoly_context *ctx, + size_t length, + const unsigned char nonce[12], + const unsigned char *aad, + size_t aad_len, + const unsigned char tag[16], + const unsigned char *input, + unsigned char *output ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief The ChaCha20-Poly1305 checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_chachapoly_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CHACHAPOLY_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h index 46d9117f..8db78254 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/check_config.h @@ -189,7 +189,7 @@ #endif #if defined(MBEDTLS_GCM_C) && ( \ - !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) ) + !defined(MBEDTLS_AES_C) && !defined(MBEDTLS_CAMELLIA_C) && !defined(MBEDTLS_ARIA_C) ) #error "MBEDTLS_GCM_C defined, but not all prerequisites" #endif @@ -292,7 +292,7 @@ #error "MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED defined, but not all prerequisites" #endif -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) && \ +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) && \ !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) && \ ( !defined(MBEDTLS_SHA256_C) && \ !defined(MBEDTLS_SHA512_C) && \ @@ -553,6 +553,12 @@ #error "MBEDTLS_PSA_CRYPTO_SPM defined, but not all prerequisites" #endif +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) && \ + ! ( defined(MBEDTLS_PSA_CRYPTO_C) && \ + defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) ) +#error "MBEDTLS_PSA_CRYPTO_SE_C defined, but not all prerequisites" +#endif + #if defined(MBEDTLS_PSA_CRYPTO_STORAGE_C) && \ ! defined(MBEDTLS_PSA_CRYPTO_C) #error "MBEDTLS_PSA_CRYPTO_STORAGE_C defined, but not all prerequisites" @@ -584,6 +590,10 @@ #error "MBEDTLS_X509_RSASSA_PSS_SUPPORT defined, but not all prerequisites" #endif +#if defined(MBEDTLS_SHA512_NO_SHA384) && !defined(MBEDTLS_SHA512_C) +#error "MBEDTLS_SHA512_NO_SHA384 defined without MBEDTLS_SHA512_C" +#endif + #if defined(MBEDTLS_SSL_PROTO_SSL3) && ( !defined(MBEDTLS_MD5_C) || \ !defined(MBEDTLS_SHA1_C) ) #error "MBEDTLS_SSL_PROTO_SSL3 defined, but not all prerequisites" @@ -604,6 +614,23 @@ #error "MBEDTLS_SSL_PROTO_TLS1_2 defined, but not all prerequisites" #endif +#if (defined(MBEDTLS_SSL_PROTO_SSL3) || defined(MBEDTLS_SSL_PROTO_TLS1) || \ + defined(MBEDTLS_SSL_PROTO_TLS1_1) || defined(MBEDTLS_SSL_PROTO_TLS1_2)) && \ + !(defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ + defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) ) +#error "One or more versions of the TLS protocol are enabled " \ + "but no key exchange methods defined with MBEDTLS_KEY_EXCHANGE_xxxx" +#endif + #if defined(MBEDTLS_SSL_PROTO_DTLS) && \ !defined(MBEDTLS_SSL_PROTO_TLS1_1) && \ !defined(MBEDTLS_SSL_PROTO_TLS1_2) @@ -748,6 +775,10 @@ #error "MBEDTLS_X509_CREATE_C defined, but not all prerequisites" #endif +#if defined(MBEDTLS_CERTS_C) && !defined(MBEDTLS_X509_USE_C) +#error "MBEDTLS_CERTS_C defined, but not all prerequisites" +#endif + #if defined(MBEDTLS_X509_CRT_PARSE_C) && ( !defined(MBEDTLS_X509_USE_C) ) #error "MBEDTLS_X509_CRT_PARSE_C defined, but not all prerequisites" #endif @@ -793,6 +824,14 @@ #endif #endif /* MBEDTLS_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO */ +#if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) +#if defined(MBEDTLS_DEPRECATED_REMOVED) +#error "MBEDTLS_SSL_HW_RECORD_ACCEL is deprecated and will be removed in a future version of Mbed TLS" +#elif defined(MBEDTLS_DEPRECATED_WARNING) +#warning "MBEDTLS_SSL_HW_RECORD_ACCEL is deprecated and will be removed in a future version of Mbed TLS" +#endif /* MBEDTLS_DEPRECATED_REMOVED */ +#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ + /* * Avoid warning from -pedantic. This is a convenient place for this * workaround since this is included by every single file before the diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher.h new file mode 100644 index 00000000..96efd937 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher.h @@ -0,0 +1,926 @@ +/** + * \file cipher.h + * + * \brief This file contains an abstraction interface for use with the cipher + * primitives provided by the library. It provides a common interface to all of + * the available cipher operations. + * + * \author Adriaan de Jong + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CIPHER_H +#define MBEDTLS_CIPHER_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include "mbedtls/platform_util.h" + +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CCM_C) || defined(MBEDTLS_CHACHAPOLY_C) +#define MBEDTLS_CIPHER_MODE_AEAD +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +#define MBEDTLS_CIPHER_MODE_WITH_PADDING +#endif + +#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER) || \ + defined(MBEDTLS_CHACHA20_C) +#define MBEDTLS_CIPHER_MODE_STREAM +#endif + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +#define MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE -0x6080 /**< The selected feature is not available. */ +#define MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA -0x6100 /**< Bad input parameters. */ +#define MBEDTLS_ERR_CIPHER_ALLOC_FAILED -0x6180 /**< Failed to allocate memory. */ +#define MBEDTLS_ERR_CIPHER_INVALID_PADDING -0x6200 /**< Input data contains invalid padding and is rejected. */ +#define MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED -0x6280 /**< Decryption of block requires a full block. */ +#define MBEDTLS_ERR_CIPHER_AUTH_FAILED -0x6300 /**< Authentication failed (for AEAD modes). */ +#define MBEDTLS_ERR_CIPHER_INVALID_CONTEXT -0x6380 /**< The context is invalid. For example, because it was freed. */ + +/* MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_CIPHER_HW_ACCEL_FAILED -0x6400 /**< Cipher hardware accelerator failed. */ + +#define MBEDTLS_CIPHER_VARIABLE_IV_LEN 0x01 /**< Cipher accepts IVs of variable length. */ +#define MBEDTLS_CIPHER_VARIABLE_KEY_LEN 0x02 /**< Cipher accepts keys of variable length. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Supported cipher types. + * + * \warning RC4 and DES are considered weak ciphers and their use + * constitutes a security risk. Arm recommends considering stronger + * ciphers instead. + */ +typedef enum { + MBEDTLS_CIPHER_ID_NONE = 0, /**< Placeholder to mark the end of cipher ID lists. */ + MBEDTLS_CIPHER_ID_NULL, /**< The identity cipher, treated as a stream cipher. */ + MBEDTLS_CIPHER_ID_AES, /**< The AES cipher. */ + MBEDTLS_CIPHER_ID_DES, /**< The DES cipher. */ + MBEDTLS_CIPHER_ID_3DES, /**< The Triple DES cipher. */ + MBEDTLS_CIPHER_ID_CAMELLIA, /**< The Camellia cipher. */ + MBEDTLS_CIPHER_ID_BLOWFISH, /**< The Blowfish cipher. */ + MBEDTLS_CIPHER_ID_ARC4, /**< The RC4 cipher. */ + MBEDTLS_CIPHER_ID_ARIA, /**< The Aria cipher. */ + MBEDTLS_CIPHER_ID_CHACHA20, /**< The ChaCha20 cipher. */ +} mbedtls_cipher_id_t; + +/** + * \brief Supported {cipher type, cipher mode} pairs. + * + * \warning RC4 and DES are considered weak ciphers and their use + * constitutes a security risk. Arm recommends considering stronger + * ciphers instead. + */ +typedef enum { + MBEDTLS_CIPHER_NONE = 0, /**< Placeholder to mark the end of cipher-pair lists. */ + MBEDTLS_CIPHER_NULL, /**< The identity stream cipher. */ + MBEDTLS_CIPHER_AES_128_ECB, /**< AES cipher with 128-bit ECB mode. */ + MBEDTLS_CIPHER_AES_192_ECB, /**< AES cipher with 192-bit ECB mode. */ + MBEDTLS_CIPHER_AES_256_ECB, /**< AES cipher with 256-bit ECB mode. */ + MBEDTLS_CIPHER_AES_128_CBC, /**< AES cipher with 128-bit CBC mode. */ + MBEDTLS_CIPHER_AES_192_CBC, /**< AES cipher with 192-bit CBC mode. */ + MBEDTLS_CIPHER_AES_256_CBC, /**< AES cipher with 256-bit CBC mode. */ + MBEDTLS_CIPHER_AES_128_CFB128, /**< AES cipher with 128-bit CFB128 mode. */ + MBEDTLS_CIPHER_AES_192_CFB128, /**< AES cipher with 192-bit CFB128 mode. */ + MBEDTLS_CIPHER_AES_256_CFB128, /**< AES cipher with 256-bit CFB128 mode. */ + MBEDTLS_CIPHER_AES_128_CTR, /**< AES cipher with 128-bit CTR mode. */ + MBEDTLS_CIPHER_AES_192_CTR, /**< AES cipher with 192-bit CTR mode. */ + MBEDTLS_CIPHER_AES_256_CTR, /**< AES cipher with 256-bit CTR mode. */ + MBEDTLS_CIPHER_AES_128_GCM, /**< AES cipher with 128-bit GCM mode. */ + MBEDTLS_CIPHER_AES_192_GCM, /**< AES cipher with 192-bit GCM mode. */ + MBEDTLS_CIPHER_AES_256_GCM, /**< AES cipher with 256-bit GCM mode. */ + MBEDTLS_CIPHER_CAMELLIA_128_ECB, /**< Camellia cipher with 128-bit ECB mode. */ + MBEDTLS_CIPHER_CAMELLIA_192_ECB, /**< Camellia cipher with 192-bit ECB mode. */ + MBEDTLS_CIPHER_CAMELLIA_256_ECB, /**< Camellia cipher with 256-bit ECB mode. */ + MBEDTLS_CIPHER_CAMELLIA_128_CBC, /**< Camellia cipher with 128-bit CBC mode. */ + MBEDTLS_CIPHER_CAMELLIA_192_CBC, /**< Camellia cipher with 192-bit CBC mode. */ + MBEDTLS_CIPHER_CAMELLIA_256_CBC, /**< Camellia cipher with 256-bit CBC mode. */ + MBEDTLS_CIPHER_CAMELLIA_128_CFB128, /**< Camellia cipher with 128-bit CFB128 mode. */ + MBEDTLS_CIPHER_CAMELLIA_192_CFB128, /**< Camellia cipher with 192-bit CFB128 mode. */ + MBEDTLS_CIPHER_CAMELLIA_256_CFB128, /**< Camellia cipher with 256-bit CFB128 mode. */ + MBEDTLS_CIPHER_CAMELLIA_128_CTR, /**< Camellia cipher with 128-bit CTR mode. */ + MBEDTLS_CIPHER_CAMELLIA_192_CTR, /**< Camellia cipher with 192-bit CTR mode. */ + MBEDTLS_CIPHER_CAMELLIA_256_CTR, /**< Camellia cipher with 256-bit CTR mode. */ + MBEDTLS_CIPHER_CAMELLIA_128_GCM, /**< Camellia cipher with 128-bit GCM mode. */ + MBEDTLS_CIPHER_CAMELLIA_192_GCM, /**< Camellia cipher with 192-bit GCM mode. */ + MBEDTLS_CIPHER_CAMELLIA_256_GCM, /**< Camellia cipher with 256-bit GCM mode. */ + MBEDTLS_CIPHER_DES_ECB, /**< DES cipher with ECB mode. */ + MBEDTLS_CIPHER_DES_CBC, /**< DES cipher with CBC mode. */ + MBEDTLS_CIPHER_DES_EDE_ECB, /**< DES cipher with EDE ECB mode. */ + MBEDTLS_CIPHER_DES_EDE_CBC, /**< DES cipher with EDE CBC mode. */ + MBEDTLS_CIPHER_DES_EDE3_ECB, /**< DES cipher with EDE3 ECB mode. */ + MBEDTLS_CIPHER_DES_EDE3_CBC, /**< DES cipher with EDE3 CBC mode. */ + MBEDTLS_CIPHER_BLOWFISH_ECB, /**< Blowfish cipher with ECB mode. */ + MBEDTLS_CIPHER_BLOWFISH_CBC, /**< Blowfish cipher with CBC mode. */ + MBEDTLS_CIPHER_BLOWFISH_CFB64, /**< Blowfish cipher with CFB64 mode. */ + MBEDTLS_CIPHER_BLOWFISH_CTR, /**< Blowfish cipher with CTR mode. */ + MBEDTLS_CIPHER_ARC4_128, /**< RC4 cipher with 128-bit mode. */ + MBEDTLS_CIPHER_AES_128_CCM, /**< AES cipher with 128-bit CCM mode. */ + MBEDTLS_CIPHER_AES_192_CCM, /**< AES cipher with 192-bit CCM mode. */ + MBEDTLS_CIPHER_AES_256_CCM, /**< AES cipher with 256-bit CCM mode. */ + MBEDTLS_CIPHER_CAMELLIA_128_CCM, /**< Camellia cipher with 128-bit CCM mode. */ + MBEDTLS_CIPHER_CAMELLIA_192_CCM, /**< Camellia cipher with 192-bit CCM mode. */ + MBEDTLS_CIPHER_CAMELLIA_256_CCM, /**< Camellia cipher with 256-bit CCM mode. */ + MBEDTLS_CIPHER_ARIA_128_ECB, /**< Aria cipher with 128-bit key and ECB mode. */ + MBEDTLS_CIPHER_ARIA_192_ECB, /**< Aria cipher with 192-bit key and ECB mode. */ + MBEDTLS_CIPHER_ARIA_256_ECB, /**< Aria cipher with 256-bit key and ECB mode. */ + MBEDTLS_CIPHER_ARIA_128_CBC, /**< Aria cipher with 128-bit key and CBC mode. */ + MBEDTLS_CIPHER_ARIA_192_CBC, /**< Aria cipher with 192-bit key and CBC mode. */ + MBEDTLS_CIPHER_ARIA_256_CBC, /**< Aria cipher with 256-bit key and CBC mode. */ + MBEDTLS_CIPHER_ARIA_128_CFB128, /**< Aria cipher with 128-bit key and CFB-128 mode. */ + MBEDTLS_CIPHER_ARIA_192_CFB128, /**< Aria cipher with 192-bit key and CFB-128 mode. */ + MBEDTLS_CIPHER_ARIA_256_CFB128, /**< Aria cipher with 256-bit key and CFB-128 mode. */ + MBEDTLS_CIPHER_ARIA_128_CTR, /**< Aria cipher with 128-bit key and CTR mode. */ + MBEDTLS_CIPHER_ARIA_192_CTR, /**< Aria cipher with 192-bit key and CTR mode. */ + MBEDTLS_CIPHER_ARIA_256_CTR, /**< Aria cipher with 256-bit key and CTR mode. */ + MBEDTLS_CIPHER_ARIA_128_GCM, /**< Aria cipher with 128-bit key and GCM mode. */ + MBEDTLS_CIPHER_ARIA_192_GCM, /**< Aria cipher with 192-bit key and GCM mode. */ + MBEDTLS_CIPHER_ARIA_256_GCM, /**< Aria cipher with 256-bit key and GCM mode. */ + MBEDTLS_CIPHER_ARIA_128_CCM, /**< Aria cipher with 128-bit key and CCM mode. */ + MBEDTLS_CIPHER_ARIA_192_CCM, /**< Aria cipher with 192-bit key and CCM mode. */ + MBEDTLS_CIPHER_ARIA_256_CCM, /**< Aria cipher with 256-bit key and CCM mode. */ + MBEDTLS_CIPHER_AES_128_OFB, /**< AES 128-bit cipher in OFB mode. */ + MBEDTLS_CIPHER_AES_192_OFB, /**< AES 192-bit cipher in OFB mode. */ + MBEDTLS_CIPHER_AES_256_OFB, /**< AES 256-bit cipher in OFB mode. */ + MBEDTLS_CIPHER_AES_128_XTS, /**< AES 128-bit cipher in XTS block mode. */ + MBEDTLS_CIPHER_AES_256_XTS, /**< AES 256-bit cipher in XTS block mode. */ + MBEDTLS_CIPHER_CHACHA20, /**< ChaCha20 stream cipher. */ + MBEDTLS_CIPHER_CHACHA20_POLY1305, /**< ChaCha20-Poly1305 AEAD cipher. */ + MBEDTLS_CIPHER_AES_128_KW, /**< AES cipher with 128-bit NIST KW mode. */ + MBEDTLS_CIPHER_AES_192_KW, /**< AES cipher with 192-bit NIST KW mode. */ + MBEDTLS_CIPHER_AES_256_KW, /**< AES cipher with 256-bit NIST KW mode. */ + MBEDTLS_CIPHER_AES_128_KWP, /**< AES cipher with 128-bit NIST KWP mode. */ + MBEDTLS_CIPHER_AES_192_KWP, /**< AES cipher with 192-bit NIST KWP mode. */ + MBEDTLS_CIPHER_AES_256_KWP, /**< AES cipher with 256-bit NIST KWP mode. */ +} mbedtls_cipher_type_t; + +/** Supported cipher modes. */ +typedef enum { + MBEDTLS_MODE_NONE = 0, /**< None. */ + MBEDTLS_MODE_ECB, /**< The ECB cipher mode. */ + MBEDTLS_MODE_CBC, /**< The CBC cipher mode. */ + MBEDTLS_MODE_CFB, /**< The CFB cipher mode. */ + MBEDTLS_MODE_OFB, /**< The OFB cipher mode. */ + MBEDTLS_MODE_CTR, /**< The CTR cipher mode. */ + MBEDTLS_MODE_GCM, /**< The GCM cipher mode. */ + MBEDTLS_MODE_STREAM, /**< The stream cipher mode. */ + MBEDTLS_MODE_CCM, /**< The CCM cipher mode. */ + MBEDTLS_MODE_XTS, /**< The XTS cipher mode. */ + MBEDTLS_MODE_CHACHAPOLY, /**< The ChaCha-Poly cipher mode. */ + MBEDTLS_MODE_KW, /**< The SP800-38F KW mode */ + MBEDTLS_MODE_KWP, /**< The SP800-38F KWP mode */ +} mbedtls_cipher_mode_t; + +/** Supported cipher padding types. */ +typedef enum { + MBEDTLS_PADDING_PKCS7 = 0, /**< PKCS7 padding (default). */ + MBEDTLS_PADDING_ONE_AND_ZEROS, /**< ISO/IEC 7816-4 padding. */ + MBEDTLS_PADDING_ZEROS_AND_LEN, /**< ANSI X.923 padding. */ + MBEDTLS_PADDING_ZEROS, /**< Zero padding (not reversible). */ + MBEDTLS_PADDING_NONE, /**< Never pad (full blocks only). */ +} mbedtls_cipher_padding_t; + +/** Type of operation. */ +typedef enum { + MBEDTLS_OPERATION_NONE = -1, + MBEDTLS_DECRYPT = 0, + MBEDTLS_ENCRYPT, +} mbedtls_operation_t; + +enum { + /** Undefined key length. */ + MBEDTLS_KEY_LENGTH_NONE = 0, + /** Key length, in bits (including parity), for DES keys. */ + MBEDTLS_KEY_LENGTH_DES = 64, + /** Key length in bits, including parity, for DES in two-key EDE. */ + MBEDTLS_KEY_LENGTH_DES_EDE = 128, + /** Key length in bits, including parity, for DES in three-key EDE. */ + MBEDTLS_KEY_LENGTH_DES_EDE3 = 192, +}; + +/** Maximum length of any IV, in Bytes. */ +#define MBEDTLS_MAX_IV_LENGTH 16 +/** Maximum block size of any cipher, in Bytes. */ +#define MBEDTLS_MAX_BLOCK_LENGTH 16 + +/** + * Base cipher information (opaque struct). + */ +typedef struct mbedtls_cipher_base_t mbedtls_cipher_base_t; + +/** + * CMAC context (opaque struct). + */ +typedef struct mbedtls_cmac_context_t mbedtls_cmac_context_t; + +/** + * Cipher information. Allows calling cipher functions + * in a generic way. + */ +typedef struct mbedtls_cipher_info_t +{ + /** Full cipher identifier. For example, + * MBEDTLS_CIPHER_AES_256_CBC. + */ + mbedtls_cipher_type_t type; + + /** The cipher mode. For example, MBEDTLS_MODE_CBC. */ + mbedtls_cipher_mode_t mode; + + /** The cipher key length, in bits. This is the + * default length for variable sized ciphers. + * Includes parity bits for ciphers like DES. + */ + unsigned int key_bitlen; + + /** Name of the cipher. */ + const char * name; + + /** IV or nonce size, in Bytes. + * For ciphers that accept variable IV sizes, + * this is the recommended size. + */ + unsigned int iv_size; + + /** Bitflag comprised of MBEDTLS_CIPHER_VARIABLE_IV_LEN and + * MBEDTLS_CIPHER_VARIABLE_KEY_LEN indicating whether the + * cipher supports variable IV or variable key sizes, respectively. + */ + int flags; + + /** The block size, in Bytes. */ + unsigned int block_size; + + /** Struct for base cipher information and functions. */ + const mbedtls_cipher_base_t *base; + +} mbedtls_cipher_info_t; + +/** + * Generic cipher context. + */ +typedef struct mbedtls_cipher_context_t +{ + /** Information about the associated cipher. */ + const mbedtls_cipher_info_t *cipher_info; + + /** Key length to use. */ + int key_bitlen; + + /** Operation that the key of the context has been + * initialized for. + */ + mbedtls_operation_t operation; + +#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) + /** Padding functions to use, if relevant for + * the specific cipher mode. + */ + void (*add_padding)( unsigned char *output, size_t olen, size_t data_len ); + int (*get_padding)( unsigned char *input, size_t ilen, size_t *data_len ); +#endif + + /** Buffer for input that has not been processed yet. */ + unsigned char unprocessed_data[MBEDTLS_MAX_BLOCK_LENGTH]; + + /** Number of Bytes that have not been processed yet. */ + size_t unprocessed_len; + + /** Current IV or NONCE_COUNTER for CTR-mode, data unit (or sector) number + * for XTS-mode. */ + unsigned char iv[MBEDTLS_MAX_IV_LENGTH]; + + /** IV size in Bytes, for ciphers with variable-length IVs. */ + size_t iv_size; + + /** The cipher-specific context. */ + void *cipher_ctx; + +#if defined(MBEDTLS_CMAC_C) + /** CMAC-specific context. */ + mbedtls_cmac_context_t *cmac_ctx; +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + /** Indicates whether the cipher operations should be performed + * by Mbed TLS' own crypto library or an external implementation + * of the PSA Crypto API. + * This is unset if the cipher context was established through + * mbedtls_cipher_setup(), and set if it was established through + * mbedtls_cipher_setup_psa(). + */ + unsigned char psa_enabled; +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +} mbedtls_cipher_context_t; + +/** + * \brief This function retrieves the list of ciphers supported + * by the generic cipher module. + * + * For any cipher identifier in the returned list, you can + * obtain the corresponding generic cipher information structure + * via mbedtls_cipher_info_from_type(), which can then be used + * to prepare a cipher context via mbedtls_cipher_setup(). + * + * + * \return A statically-allocated array of cipher identifiers + * of type cipher_type_t. The last entry is zero. + */ +const int *mbedtls_cipher_list( void ); + +/** + * \brief This function retrieves the cipher-information + * structure associated with the given cipher name. + * + * \param cipher_name Name of the cipher to search for. This must not be + * \c NULL. + * + * \return The cipher information structure associated with the + * given \p cipher_name. + * \return \c NULL if the associated cipher information is not found. + */ +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_string( const char *cipher_name ); + +/** + * \brief This function retrieves the cipher-information + * structure associated with the given cipher type. + * + * \param cipher_type Type of the cipher to search for. + * + * \return The cipher information structure associated with the + * given \p cipher_type. + * \return \c NULL if the associated cipher information is not found. + */ +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_type( const mbedtls_cipher_type_t cipher_type ); + +/** + * \brief This function retrieves the cipher-information + * structure associated with the given cipher ID, + * key size and mode. + * + * \param cipher_id The ID of the cipher to search for. For example, + * #MBEDTLS_CIPHER_ID_AES. + * \param key_bitlen The length of the key in bits. + * \param mode The cipher mode. For example, #MBEDTLS_MODE_CBC. + * + * \return The cipher information structure associated with the + * given \p cipher_id. + * \return \c NULL if the associated cipher information is not found. + */ +const mbedtls_cipher_info_t *mbedtls_cipher_info_from_values( const mbedtls_cipher_id_t cipher_id, + int key_bitlen, + const mbedtls_cipher_mode_t mode ); + +/** + * \brief This function initializes a \p cipher_context as NONE. + * + * \param ctx The context to be initialized. This must not be \c NULL. + */ +void mbedtls_cipher_init( mbedtls_cipher_context_t *ctx ); + +/** + * \brief This function frees and clears the cipher-specific + * context of \p ctx. Freeing \p ctx itself remains the + * responsibility of the caller. + * + * \param ctx The context to be freed. If this is \c NULL, the + * function has no effect, otherwise this must point to an + * initialized context. + */ +void mbedtls_cipher_free( mbedtls_cipher_context_t *ctx ); + + +/** + * \brief This function initializes a cipher context for + * use with the given cipher primitive. + * + * \param ctx The context to initialize. This must be initialized. + * \param cipher_info The cipher to use. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_ALLOC_FAILED if allocation of the + * cipher-specific context fails. + * + * \internal Currently, the function also clears the structure. + * In future versions, the caller will be required to call + * mbedtls_cipher_init() on the structure first. + */ +int mbedtls_cipher_setup( mbedtls_cipher_context_t *ctx, + const mbedtls_cipher_info_t *cipher_info ); + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief This function initializes a cipher context for + * PSA-based use with the given cipher primitive. + * + * \note See #MBEDTLS_USE_PSA_CRYPTO for information on PSA. + * + * \param ctx The context to initialize. May not be \c NULL. + * \param cipher_info The cipher to use. + * \param taglen For AEAD ciphers, the length in bytes of the + * authentication tag to use. Subsequent uses of + * mbedtls_cipher_auth_encrypt() or + * mbedtls_cipher_auth_decrypt() must provide + * the same tag length. + * For non-AEAD ciphers, the value must be \c 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_ALLOC_FAILED if allocation of the + * cipher-specific context fails. + */ +int mbedtls_cipher_setup_psa( mbedtls_cipher_context_t *ctx, + const mbedtls_cipher_info_t *cipher_info, + size_t taglen ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +/** + * \brief This function returns the block size of the given cipher. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The block size of the underlying cipher. + * \return \c 0 if \p ctx has not been initialized. + */ +static inline unsigned int mbedtls_cipher_get_block_size( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 ); + if( ctx->cipher_info == NULL ) + return 0; + + return ctx->cipher_info->block_size; +} + +/** + * \brief This function returns the mode of operation for + * the cipher. For example, MBEDTLS_MODE_CBC. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The mode of operation. + * \return #MBEDTLS_MODE_NONE if \p ctx has not been initialized. + */ +static inline mbedtls_cipher_mode_t mbedtls_cipher_get_cipher_mode( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, MBEDTLS_MODE_NONE ); + if( ctx->cipher_info == NULL ) + return MBEDTLS_MODE_NONE; + + return ctx->cipher_info->mode; +} + +/** + * \brief This function returns the size of the IV or nonce + * of the cipher, in Bytes. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The recommended IV size if no IV has been set. + * \return \c 0 for ciphers not using an IV or a nonce. + * \return The actual size if an IV has been set. + */ +static inline int mbedtls_cipher_get_iv_size( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 ); + if( ctx->cipher_info == NULL ) + return 0; + + if( ctx->iv_size != 0 ) + return (int) ctx->iv_size; + + return (int) ctx->cipher_info->iv_size; +} + +/** + * \brief This function returns the type of the given cipher. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The type of the cipher. + * \return #MBEDTLS_CIPHER_NONE if \p ctx has not been initialized. + */ +static inline mbedtls_cipher_type_t mbedtls_cipher_get_type( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( + ctx != NULL, MBEDTLS_CIPHER_NONE ); + if( ctx->cipher_info == NULL ) + return MBEDTLS_CIPHER_NONE; + + return ctx->cipher_info->type; +} + +/** + * \brief This function returns the name of the given cipher + * as a string. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The name of the cipher. + * \return NULL if \p ctx has not been not initialized. + */ +static inline const char *mbedtls_cipher_get_name( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( ctx != NULL, 0 ); + if( ctx->cipher_info == NULL ) + return 0; + + return ctx->cipher_info->name; +} + +/** + * \brief This function returns the key length of the cipher. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The key length of the cipher in bits. + * \return #MBEDTLS_KEY_LENGTH_NONE if ctx \p has not been + * initialized. + */ +static inline int mbedtls_cipher_get_key_bitlen( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( + ctx != NULL, MBEDTLS_KEY_LENGTH_NONE ); + if( ctx->cipher_info == NULL ) + return MBEDTLS_KEY_LENGTH_NONE; + + return (int) ctx->cipher_info->key_bitlen; +} + +/** + * \brief This function returns the operation of the given cipher. + * + * \param ctx The context of the cipher. This must be initialized. + * + * \return The type of operation: #MBEDTLS_ENCRYPT or #MBEDTLS_DECRYPT. + * \return #MBEDTLS_OPERATION_NONE if \p ctx has not been initialized. + */ +static inline mbedtls_operation_t mbedtls_cipher_get_operation( + const mbedtls_cipher_context_t *ctx ) +{ + MBEDTLS_INTERNAL_VALIDATE_RET( + ctx != NULL, MBEDTLS_OPERATION_NONE ); + if( ctx->cipher_info == NULL ) + return MBEDTLS_OPERATION_NONE; + + return ctx->operation; +} + +/** + * \brief This function sets the key to use with the given context. + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a cipher information structure. + * \param key The key to use. This must be a readable buffer of at + * least \p key_bitlen Bits. + * \param key_bitlen The key length to use, in Bits. + * \param operation The operation that the key will be used for: + * #MBEDTLS_ENCRYPT or #MBEDTLS_DECRYPT. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_setkey( mbedtls_cipher_context_t *ctx, + const unsigned char *key, + int key_bitlen, + const mbedtls_operation_t operation ); + +#if defined(MBEDTLS_CIPHER_MODE_WITH_PADDING) +/** + * \brief This function sets the padding mode, for cipher modes + * that use padding. + * + * The default passing mode is PKCS7 padding. + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a cipher information structure. + * \param mode The padding mode. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE + * if the selected padding mode is not supported. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA if the cipher mode + * does not support padding. + */ +int mbedtls_cipher_set_padding_mode( mbedtls_cipher_context_t *ctx, + mbedtls_cipher_padding_t mode ); +#endif /* MBEDTLS_CIPHER_MODE_WITH_PADDING */ + +/** + * \brief This function sets the initialization vector (IV) + * or nonce. + * + * \note Some ciphers do not use IVs nor nonce. For these + * ciphers, this function has no effect. + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a cipher information structure. + * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. This + * must be a readable buffer of at least \p iv_len Bytes. + * \param iv_len The IV length for ciphers with variable-size IV. + * This parameter is discarded by ciphers with fixed-size IV. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + */ +int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, + size_t iv_len ); + +/** + * \brief This function resets the cipher state. + * + * \param ctx The generic cipher context. This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + */ +int mbedtls_cipher_reset( mbedtls_cipher_context_t *ctx ); + +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) +/** + * \brief This function adds additional data for AEAD ciphers. + * Currently supported with GCM and ChaCha20+Poly1305. + * This must be called exactly once, after + * mbedtls_cipher_reset(). + * + * \param ctx The generic cipher context. This must be initialized. + * \param ad The additional data to use. This must be a readable + * buffer of at least \p ad_len Bytes. + * \param ad_len The length of \p ad in Bytes. + * + * \return \c 0 on success. + * \return A specific error code on failure. + */ +int mbedtls_cipher_update_ad( mbedtls_cipher_context_t *ctx, + const unsigned char *ad, size_t ad_len ); +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ + +/** + * \brief The generic cipher update function. It encrypts or + * decrypts using the given cipher context. Writes as + * many block-sized blocks of data as possible to output. + * Any data that cannot be written immediately is either + * added to the next block, or flushed when + * mbedtls_cipher_finish() is called. + * Exception: For MBEDTLS_MODE_ECB, expects a single block + * in size. For example, 16 Bytes for AES. + * + * \note If the underlying cipher is used in GCM mode, all calls + * to this function, except for the last one before + * mbedtls_cipher_finish(), must have \p ilen as a + * multiple of the block size of the cipher. + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a key. + * \param input The buffer holding the input data. This must be a + * readable buffer of at least \p ilen Bytes. + * \param ilen The length of the input data. + * \param output The buffer for the output data. This must be able to + * hold at least `ilen + block_size`. This must not be the + * same buffer as \p input. + * \param olen The length of the output data, to be updated with the + * actual number of Bytes written. This must not be + * \c NULL. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE on an + * unsupported mode for a cipher. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_update( mbedtls_cipher_context_t *ctx, + const unsigned char *input, + size_t ilen, unsigned char *output, + size_t *olen ); + +/** + * \brief The generic cipher finalization function. If data still + * needs to be flushed from an incomplete block, the data + * contained in it is padded to the size of + * the last block, and written to the \p output buffer. + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a key. + * \param output The buffer to write data to. This needs to be a writable + * buffer of at least \p block_size Bytes. + * \param olen The length of the data written to the \p output buffer. + * This may not be \c NULL. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED on decryption + * expecting a full block but not receiving one. + * \return #MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding + * while decrypting. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_finish( mbedtls_cipher_context_t *ctx, + unsigned char *output, size_t *olen ); + +#if defined(MBEDTLS_GCM_C) || defined(MBEDTLS_CHACHAPOLY_C) +/** + * \brief This function writes a tag for AEAD ciphers. + * Currently supported with GCM and ChaCha20+Poly1305. + * This must be called after mbedtls_cipher_finish(). + * + * \param ctx The generic cipher context. This must be initialized, + * bound to a key, and have just completed a cipher + * operation through mbedtls_cipher_finish() the tag for + * which should be written. + * \param tag The buffer to write the tag to. This must be a writable + * buffer of at least \p tag_len Bytes. + * \param tag_len The length of the tag to write. + * + * \return \c 0 on success. + * \return A specific error code on failure. + */ +int mbedtls_cipher_write_tag( mbedtls_cipher_context_t *ctx, + unsigned char *tag, size_t tag_len ); + +/** + * \brief This function checks the tag for AEAD ciphers. + * Currently supported with GCM and ChaCha20+Poly1305. + * This must be called after mbedtls_cipher_finish(). + * + * \param ctx The generic cipher context. This must be initialized. + * \param tag The buffer holding the tag. This must be a readable + * buffer of at least \p tag_len Bytes. + * \param tag_len The length of the tag to check. + * + * \return \c 0 on success. + * \return A specific error code on failure. + */ +int mbedtls_cipher_check_tag( mbedtls_cipher_context_t *ctx, + const unsigned char *tag, size_t tag_len ); +#endif /* MBEDTLS_GCM_C || MBEDTLS_CHACHAPOLY_C */ + +/** + * \brief The generic all-in-one encryption/decryption function, + * for all ciphers except AEAD constructs. + * + * \param ctx The generic cipher context. This must be initialized. + * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. + * This must be a readable buffer of at least \p iv_len + * Bytes. + * \param iv_len The IV length for ciphers with variable-size IV. + * This parameter is discarded by ciphers with fixed-size + * IV. + * \param input The buffer holding the input data. This must be a + * readable buffer of at least \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * \param output The buffer for the output data. This must be able to + * hold at least `ilen + block_size`. This must not be the + * same buffer as \p input. + * \param olen The length of the output data, to be updated with the + * actual number of Bytes written. This must not be + * \c NULL. + * + * \note Some ciphers do not use IVs nor nonce. For these + * ciphers, use \p iv = NULL and \p iv_len = 0. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED on decryption + * expecting a full block but not receiving one. + * \return #MBEDTLS_ERR_CIPHER_INVALID_PADDING on invalid padding + * while decrypting. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_crypt( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen ); + +#if defined(MBEDTLS_CIPHER_MODE_AEAD) +/** + * \brief The generic autenticated encryption (AEAD) function. + * + * \param ctx The generic cipher context. This must be initialized and + * bound to a key. + * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. + * This must be a readable buffer of at least \p iv_len + * Bytes. + * \param iv_len The IV length for ciphers with variable-size IV. + * This parameter is discarded by ciphers with fixed-size IV. + * \param ad The additional data to authenticate. This must be a + * readable buffer of at least \p ad_len Bytes. + * \param ad_len The length of \p ad. + * \param input The buffer holding the input data. This must be a + * readable buffer of at least \p ilen Bytes. + * \param ilen The length of the input data. + * \param output The buffer for the output data. This must be able to + * hold at least \p ilen Bytes. + * \param olen The length of the output data, to be updated with the + * actual number of Bytes written. This must not be + * \c NULL. + * \param tag The buffer for the authentication tag. This must be a + * writable buffer of at least \p tag_len Bytes. + * \param tag_len The desired length of the authentication tag. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_auth_encrypt( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, + unsigned char *tag, size_t tag_len ); + +/** + * \brief The generic autenticated decryption (AEAD) function. + * + * \note If the data is not authentic, then the output buffer + * is zeroed out to prevent the unauthentic plaintext being + * used, making this interface safer. + * + * \param ctx The generic cipher context. This must be initialized and + * and bound to a key. + * \param iv The IV to use, or NONCE_COUNTER for CTR-mode ciphers. + * This must be a readable buffer of at least \p iv_len + * Bytes. + * \param iv_len The IV length for ciphers with variable-size IV. + * This parameter is discarded by ciphers with fixed-size IV. + * \param ad The additional data to be authenticated. This must be a + * readable buffer of at least \p ad_len Bytes. + * \param ad_len The length of \p ad. + * \param input The buffer holding the input data. This must be a + * readable buffer of at least \p ilen Bytes. + * \param ilen The length of the input data. + * \param output The buffer for the output data. + * This must be able to hold at least \p ilen Bytes. + * \param olen The length of the output data, to be updated with the + * actual number of Bytes written. This must not be + * \c NULL. + * \param tag The buffer holding the authentication tag. This must be + * a readable buffer of at least \p tag_len Bytes. + * \param tag_len The length of the authentication tag. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA on + * parameter-verification failure. + * \return #MBEDTLS_ERR_CIPHER_AUTH_FAILED if data is not authentic. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_auth_decrypt( mbedtls_cipher_context_t *ctx, + const unsigned char *iv, size_t iv_len, + const unsigned char *ad, size_t ad_len, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, + const unsigned char *tag, size_t tag_len ); +#endif /* MBEDTLS_CIPHER_MODE_AEAD */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CIPHER_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher_internal.h new file mode 100644 index 00000000..5930f0e2 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cipher_internal.h @@ -0,0 +1,152 @@ +/** + * \file cipher_internal.h + * + * \brief Cipher wrappers. + * + * \author Adriaan de Jong + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_CIPHER_WRAP_H +#define MBEDTLS_CIPHER_WRAP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Base cipher information. The non-mode specific functions and values. + */ +struct mbedtls_cipher_base_t +{ + /** Base Cipher type (e.g. MBEDTLS_CIPHER_ID_AES) */ + mbedtls_cipher_id_t cipher; + + /** Encrypt using ECB */ + int (*ecb_func)( void *ctx, mbedtls_operation_t mode, + const unsigned char *input, unsigned char *output ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) + /** Encrypt using CBC */ + int (*cbc_func)( void *ctx, mbedtls_operation_t mode, size_t length, + unsigned char *iv, const unsigned char *input, + unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CFB) + /** Encrypt using CFB (Full length) */ + int (*cfb_func)( void *ctx, mbedtls_operation_t mode, size_t length, size_t *iv_off, + unsigned char *iv, const unsigned char *input, + unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_OFB) + /** Encrypt using OFB (Full length) */ + int (*ofb_func)( void *ctx, size_t length, size_t *iv_off, + unsigned char *iv, + const unsigned char *input, + unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_CTR) + /** Encrypt using CTR */ + int (*ctr_func)( void *ctx, size_t length, size_t *nc_off, + unsigned char *nonce_counter, unsigned char *stream_block, + const unsigned char *input, unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_XTS) + /** Encrypt or decrypt using XTS. */ + int (*xts_func)( void *ctx, mbedtls_operation_t mode, size_t length, + const unsigned char data_unit[16], + const unsigned char *input, unsigned char *output ); +#endif + +#if defined(MBEDTLS_CIPHER_MODE_STREAM) + /** Encrypt using STREAM */ + int (*stream_func)( void *ctx, size_t length, + const unsigned char *input, unsigned char *output ); +#endif + + /** Set key for encryption purposes */ + int (*setkey_enc_func)( void *ctx, const unsigned char *key, + unsigned int key_bitlen ); + + /** Set key for decryption purposes */ + int (*setkey_dec_func)( void *ctx, const unsigned char *key, + unsigned int key_bitlen); + + /** Allocate a new context */ + void * (*ctx_alloc_func)( void ); + + /** Free the given context */ + void (*ctx_free_func)( void *ctx ); + +}; + +typedef struct +{ + mbedtls_cipher_type_t type; + const mbedtls_cipher_info_t *info; +} mbedtls_cipher_definition_t; + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +typedef enum +{ + MBEDTLS_CIPHER_PSA_KEY_UNSET = 0, + MBEDTLS_CIPHER_PSA_KEY_OWNED, /* Used for PSA-based cipher contexts which */ + /* use raw key material internally imported */ + /* as a volatile key, and which hence need */ + /* to destroy that key when the context is */ + /* freed. */ + MBEDTLS_CIPHER_PSA_KEY_NOT_OWNED, /* Used for PSA-based cipher contexts */ + /* which use a key provided by the */ + /* user, and which hence will not be */ + /* destroyed when the context is freed. */ +} mbedtls_cipher_psa_key_ownership; + +typedef struct +{ + psa_algorithm_t alg; + psa_key_handle_t slot; + mbedtls_cipher_psa_key_ownership slot_state; +} mbedtls_cipher_context_psa; +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +extern const mbedtls_cipher_definition_t mbedtls_cipher_definitions[]; + +extern int mbedtls_cipher_supported[]; + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CIPHER_WRAP_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cmac.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cmac.h new file mode 100644 index 00000000..792fbdc3 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/cmac.h @@ -0,0 +1,213 @@ +/** + * \file cmac.h + * + * \brief This file contains CMAC definitions and functions. + * + * The Cipher-based Message Authentication Code (CMAC) Mode for + * Authentication is defined in RFC-4493: The AES-CMAC Algorithm. + */ +/* + * Copyright (C) 2015-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CMAC_H +#define MBEDTLS_CMAC_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_CMAC_HW_ACCEL_FAILED -0x007A /**< CMAC hardware accelerator failed. */ + +#define MBEDTLS_AES_BLOCK_SIZE 16 +#define MBEDTLS_DES3_BLOCK_SIZE 8 + +#if defined(MBEDTLS_AES_C) +#define MBEDTLS_CIPHER_BLKSIZE_MAX 16 /**< The longest block used by CMAC is that of AES. */ +#else +#define MBEDTLS_CIPHER_BLKSIZE_MAX 8 /**< The longest block used by CMAC is that of 3DES. */ +#endif + +#if !defined(MBEDTLS_CMAC_ALT) + +/** + * The CMAC context structure. + */ +struct mbedtls_cmac_context_t +{ + /** The internal state of the CMAC algorithm. */ + unsigned char state[MBEDTLS_CIPHER_BLKSIZE_MAX]; + + /** Unprocessed data - either data that was not block aligned and is still + * pending processing, or the final block. */ + unsigned char unprocessed_block[MBEDTLS_CIPHER_BLKSIZE_MAX]; + + /** The length of data pending processing. */ + size_t unprocessed_len; +}; + +#else /* !MBEDTLS_CMAC_ALT */ +#include "cmac_alt.h" +#endif /* !MBEDTLS_CMAC_ALT */ + +/** + * \brief This function sets the CMAC key, and prepares to authenticate + * the input data. + * Must be called with an initialized cipher context. + * + * \param ctx The cipher context used for the CMAC operation, initialized + * as one of the following types: MBEDTLS_CIPHER_AES_128_ECB, + * MBEDTLS_CIPHER_AES_192_ECB, MBEDTLS_CIPHER_AES_256_ECB, + * or MBEDTLS_CIPHER_DES_EDE3_ECB. + * \param key The CMAC key. + * \param keybits The length of the CMAC key in bits. + * Must be supported by the cipher. + * + * \return \c 0 on success. + * \return A cipher-specific error code on failure. + */ +int mbedtls_cipher_cmac_starts( mbedtls_cipher_context_t *ctx, + const unsigned char *key, size_t keybits ); + +/** + * \brief This function feeds an input buffer into an ongoing CMAC + * computation. + * + * It is called between mbedtls_cipher_cmac_starts() or + * mbedtls_cipher_cmac_reset(), and mbedtls_cipher_cmac_finish(). + * Can be called repeatedly. + * + * \param ctx The cipher context used for the CMAC operation. + * \param input The buffer holding the input data. + * \param ilen The length of the input data. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA + * if parameter verification fails. + */ +int mbedtls_cipher_cmac_update( mbedtls_cipher_context_t *ctx, + const unsigned char *input, size_t ilen ); + +/** + * \brief This function finishes the CMAC operation, and writes + * the result to the output buffer. + * + * It is called after mbedtls_cipher_cmac_update(). + * It can be followed by mbedtls_cipher_cmac_reset() and + * mbedtls_cipher_cmac_update(), or mbedtls_cipher_free(). + * + * \param ctx The cipher context used for the CMAC operation. + * \param output The output buffer for the CMAC checksum result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA + * if parameter verification fails. + */ +int mbedtls_cipher_cmac_finish( mbedtls_cipher_context_t *ctx, + unsigned char *output ); + +/** + * \brief This function prepares the authentication of another + * message with the same key as the previous CMAC + * operation. + * + * It is called after mbedtls_cipher_cmac_finish() + * and before mbedtls_cipher_cmac_update(). + * + * \param ctx The cipher context used for the CMAC operation. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA + * if parameter verification fails. + */ +int mbedtls_cipher_cmac_reset( mbedtls_cipher_context_t *ctx ); + +/** + * \brief This function calculates the full generic CMAC + * on the input buffer with the provided key. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The CMAC result is calculated as + * output = generic CMAC(cmac key, input buffer). + * + * + * \param cipher_info The cipher information. + * \param key The CMAC key. + * \param keylen The length of the CMAC key in bits. + * \param input The buffer holding the input data. + * \param ilen The length of the input data. + * \param output The buffer for the generic CMAC result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA + * if parameter verification fails. + */ +int mbedtls_cipher_cmac( const mbedtls_cipher_info_t *cipher_info, + const unsigned char *key, size_t keylen, + const unsigned char *input, size_t ilen, + unsigned char *output ); + +#if defined(MBEDTLS_AES_C) +/** + * \brief This function implements the AES-CMAC-PRF-128 pseudorandom + * function, as defined in + * RFC-4615: The Advanced Encryption Standard-Cipher-based + * Message Authentication Code-Pseudo-Random Function-128 + * (AES-CMAC-PRF-128) Algorithm for the Internet Key + * Exchange Protocol (IKE). + * + * \param key The key to use. + * \param key_len The key length in Bytes. + * \param input The buffer holding the input data. + * \param in_len The length of the input data in Bytes. + * \param output The buffer holding the generated 16 Bytes of + * pseudorandom output. + * + * \return \c 0 on success. + */ +int mbedtls_aes_cmac_prf_128( const unsigned char *key, size_t key_len, + const unsigned char *input, size_t in_len, + unsigned char output[16] ); +#endif /* MBEDTLS_AES_C */ + +#if defined(MBEDTLS_SELF_TEST) && ( defined(MBEDTLS_AES_C) || defined(MBEDTLS_DES_C) ) +/** + * \brief The CMAC checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_cmac_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST && ( MBEDTLS_AES_C || MBEDTLS_DES_C ) */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_CMAC_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/compat-1.3.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/compat-1.3.h index 361cf569..b268734b 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/compat-1.3.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/compat-1.3.h @@ -1250,9 +1250,9 @@ #define POLARSSL_KEY_EXCHANGE_PSK MBEDTLS_KEY_EXCHANGE_PSK #define POLARSSL_KEY_EXCHANGE_RSA MBEDTLS_KEY_EXCHANGE_RSA #define POLARSSL_KEY_EXCHANGE_RSA_PSK MBEDTLS_KEY_EXCHANGE_RSA_PSK -#define POLARSSL_KEY_EXCHANGE__SOME__ECDHE_ENABLED MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED -#define POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED -#define POLARSSL_KEY_EXCHANGE__WITH_CERT__ENABLED MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED +#define POLARSSL_KEY_EXCHANGE__SOME__ECDHE_ENABLED MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED +#define POLARSSL_KEY_EXCHANGE__SOME__PSK_ENABLED MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED +#define POLARSSL_KEY_EXCHANGE__WITH_CERT__ENABLED MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED #define POLARSSL_KEY_LENGTH_DES MBEDTLS_KEY_LENGTH_DES #define POLARSSL_KEY_LENGTH_DES_EDE MBEDTLS_KEY_LENGTH_DES_EDE #define POLARSSL_KEY_LENGTH_DES_EDE3 MBEDTLS_KEY_LENGTH_DES_EDE3 diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config-no-entropy.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config-no-entropy.h index a0e979f0..ccdd75c6 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config-no-entropy.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config-no-entropy.h @@ -87,6 +87,6 @@ /* Miscellaneous options */ #define MBEDTLS_AES_ROM_TABLES -#include "check_config.h" +#include "mbedtls/check_config.h" #endif /* MBEDTLS_CONFIG_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h index 4a913cfa..bdf7e5e1 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/config.h @@ -457,6 +457,16 @@ * dependencies on them, and considering stronger message digests * and ciphers instead. * + * \warning If both MBEDTLS_ECDSA_SIGN_ALT and MBEDTLS_ECDSA_DETERMINISTIC are + * enabled, then the deterministic ECDH signature functions pass the + * the static HMAC-DRBG as RNG to mbedtls_ecdsa_sign(). Therefore + * alternative implementations should use the RNG only for generating + * the ephemeral key and nothing else. If this is not possible, then + * MBEDTLS_ECDSA_DETERMINISTIC should be disabled and an alternative + * implementation should be provided for mbedtls_ecdsa_sign_det_ext() + * (and for mbedtls_ecdsa_sign_det() too if backward compatibility is + * desirable). + * */ //#define MBEDTLS_MD2_PROCESS_ALT //#define MBEDTLS_MD4_PROCESS_ALT @@ -696,6 +706,13 @@ //#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN //#define MBEDTLS_CIPHER_PADDING_ZEROS +/** \def MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + * + * Uncomment this macro to use a 128-bit key in the CTR_DRBG module. + * By default, CTR_DRBG uses a 256-bit key. + */ +//#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY + /** * \def MBEDTLS_ENABLE_WEAK_CIPHERSUITES * @@ -1235,6 +1252,21 @@ */ //#define MBEDTLS_ENTROPY_NV_SEED +/* MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER + * + * In PSA key storage, encode the owner of the key. + * + * This is only meaningful when building the library as part of a + * multi-client service. When you activate this option, you must provide + * an implementation of the type psa_key_owner_id_t and a translation + * from psa_key_file_id_t to file name in all the storage backends that + * you wish to support. + * + * Note that this option is meant for internal use only and may be removed + * without notice. + */ +//#define MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER + /** * \def MBEDTLS_MEMORY_DEBUG * @@ -1352,6 +1384,28 @@ */ //#define MBEDTLS_SHA256_SMALLER +/** + * \def MBEDTLS_SHA512_SMALLER + * + * Enable an implementation of SHA-512 that has lower ROM footprint but also + * lower performance. + * + * Uncomment to enable the smaller implementation of SHA512. + */ +//#define MBEDTLS_SHA512_SMALLER + +/** + * \def MBEDTLS_SHA512_NO_SHA384 + * + * Disable the SHA-384 option of the SHA-512 module. Use this to save some + * code size on devices that don't use SHA-384. + * + * Requires: MBEDTLS_SHA512_C + * + * Uncomment to disable SHA-384 + */ +//#define MBEDTLS_SHA512_NO_SHA384 + /** * \def MBEDTLS_SSL_ALL_ALERT_MESSAGES * @@ -1482,8 +1536,8 @@ /** \def MBEDTLS_SSL_EXTENDED_MASTER_SECRET * - * Enable support for Extended Master Secret, aka Session Hash - * (draft-ietf-tls-session-hash-02). + * Enable support for RFC 7627: Session Hash and Extended Master Secret + * Extension. * * This was introduced as "the proper fix" to the Triple Handshake familiy of * attacks, but it is recommended to always use it (even if you disable @@ -1501,7 +1555,8 @@ /** * \def MBEDTLS_SSL_FALLBACK_SCSV * - * Enable support for FALLBACK_SCSV (draft-ietf-tls-downgrade-scsv-00). + * Enable support for RFC 7507: Fallback Signaling Cipher Suite Value (SCSV) + * for Preventing Protocol Downgrade Attacks. * * For servers, it is recommended to always enable this, unless you support * only one version of TLS, or know for sure that none of your clients @@ -1543,6 +1598,9 @@ * Enable hooking functions in SSL module for hardware acceleration of * individual records. * + * \deprecated This option is deprecated and will be removed in a future + * version of Mbed TLS. + * * Uncomment this macro to enable hooking functions. */ //#define MBEDTLS_SSL_HW_RECORD_ACCEL @@ -1797,8 +1855,8 @@ * * Fallback to old (pre-2.7), non-conforming implementation of the truncated * HMAC extension which also truncates the HMAC key. Note that this option is - * only meant for a transitory upgrade period and is likely to be removed in - * a future version of the library. + * only meant for a transitory upgrade period and will be removed in a future + * version of the library. * * \warning The old implementation is non-compliant and has a security weakness * (2^80 brute force attack on the HMAC key used for a single, @@ -1807,7 +1865,7 @@ * bandwidth, and (2) the peer is an Mbed TLS stack that doesn't use * the fixed implementation yet (pre-2.7). * - * \deprecated This option is deprecated and will likely be removed in a + * \deprecated This option is deprecated and will be removed in a * future version of Mbed TLS. * * Uncomment to fallback to old, non-compliant truncated HMAC implementation. @@ -1816,6 +1874,13 @@ */ //#define MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT +/** + * \def MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH + * + * Enable modifying the maximum I/O buffer size. + */ +//#define MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH + /** * \def MBEDTLS_THREADING_ALT * @@ -1844,8 +1909,8 @@ * Make the X.509 and TLS library use PSA for cryptographic operations, and * enable new APIs for using keys handled by PSA Crypto. * - * \note Development of this option is currently in progress, and parts - * of the X.509 and TLS modules are not ported to PSA yet. However, these parts + * \note Development of this option is currently in progress, and parts of Mbed + * TLS's X.509 and TLS modules are not ported to PSA yet. However, these parts * will still continue to work as usual, so enabling this option should not * break backwards compatibility. * @@ -2355,7 +2420,11 @@ * * Enable the CTR_DRBG AES-based random generator. * The CTR_DRBG generator uses AES-256 by default. - * To use AES-128 instead, enable MBEDTLS_CTR_DRBG_USE_128_BIT_KEY below. + * To use AES-128 instead, enable \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY above. + * + * \note To achieve a 256-bit security strength with CTR_DRBG, + * you must use AES-256 *and* use sufficient entropy. + * See ctr_drbg.h for more details. * * Module: library/ctr_drbg.c * Caller: @@ -2523,11 +2592,11 @@ /** * \def MBEDTLS_GCM_C * - * Enable the Galois/Counter Mode (GCM) for AES. + * Enable the Galois/Counter Mode (GCM). * * Module: library/gcm.c * - * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C + * Requires: MBEDTLS_AES_C or MBEDTLS_CAMELLIA_C or MBEDTLS_ARIA_C * * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other * requisites are enabled as well. @@ -2904,19 +2973,35 @@ * experiment using it, incompatible API changes are still possible, and some * parts may not have reached the same quality as the rest of Mbed TLS yet. * - * Module: crypto/library/psa_crypto.c + * Module: library/psa_crypto.c * * Requires: MBEDTLS_CTR_DRBG_C, MBEDTLS_ENTROPY_C * */ #define MBEDTLS_PSA_CRYPTO_C +/** + * \def MBEDTLS_PSA_CRYPTO_SE_C + * + * Enable secure element support in the Platform Security Architecture + * cryptography API. + * + * \warning This feature is not yet suitable for production. It is provided + * for API evaluation and testing purposes only. + * + * Module: library/psa_crypto_se.c + * + * Requires: MBEDTLS_PSA_CRYPTO_C, MBEDTLS_PSA_CRYPTO_STORAGE_C + * + */ +//#define MBEDTLS_PSA_CRYPTO_SE_C + /** * \def MBEDTLS_PSA_CRYPTO_STORAGE_C * * Enable the Platform Security Architecture persistent key storage. * - * Module: crypto/library/psa_crypto_storage.c + * Module: library/psa_crypto_storage.c * * Requires: MBEDTLS_PSA_CRYPTO_C, * either MBEDTLS_PSA_ITS_FILE_C or a native implementation of @@ -2930,10 +3015,9 @@ * Enable the emulation of the Platform Security Architecture * Internal Trusted Storage (PSA ITS) over files. * - * Module: crypto/library/psa_its_file.c + * Module: library/psa_its_file.c * * Requires: MBEDTLS_FS_IO - * */ //#define MBEDTLS_PSA_ITS_FILE_C @@ -3292,7 +3376,6 @@ //#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ //#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ //#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ -//#define MBEDTLS_CTR_DRBG_USE_128_BIT_KEY /**< Use 128-bit key for CTR_DRBG - may reduce security (see ctr_drbg.h) */ /* HMAC_DRBG options */ //#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ctr_drbg.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ctr_drbg.h new file mode 100644 index 00000000..234e6a03 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ctr_drbg.h @@ -0,0 +1,562 @@ +/** + * \file ctr_drbg.h + * + * \brief This file contains definitions and functions for the + * CTR_DRBG pseudorandom generator. + * + * CTR_DRBG is a standardized way of building a PRNG from a block-cipher + * in counter mode operation, as defined in NIST SP 800-90A: + * Recommendation for Random Number Generation Using Deterministic Random + * Bit Generators. + * + * The Mbed TLS implementation of CTR_DRBG uses AES-256 (default) or AES-128 + * (if \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled at compile time) + * as the underlying block cipher, with a derivation function. + * + * The security strength as defined in NIST SP 800-90A is + * 128 bits when AES-128 is used (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY enabled) + * and 256 bits otherwise, provided that #MBEDTLS_CTR_DRBG_ENTROPY_LEN is + * kept at its default value (and not overridden in config.h) and that the + * DRBG instance is set up with default parameters. + * See the documentation of mbedtls_ctr_drbg_seed() for more + * information. + */ +/* + * Copyright (C) 2006-2019, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_CTR_DRBG_H +#define MBEDTLS_CTR_DRBG_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/aes.h" + +#if defined(MBEDTLS_THREADING_C) +#include "mbedtls/threading.h" +#endif + +#define MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 /**< The entropy source failed. */ +#define MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG -0x0036 /**< The requested random buffer length is too big. */ +#define MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG -0x0038 /**< The input (entropy + additional data) is too large. */ +#define MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR -0x003A /**< Read or write error in file. */ + +#define MBEDTLS_CTR_DRBG_BLOCKSIZE 16 /**< The block size used by the cipher. */ + +#if defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) +#define MBEDTLS_CTR_DRBG_KEYSIZE 16 +/**< The key size in bytes used by the cipher. + * + * Compile-time choice: 16 bytes (128 bits) + * because #MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled. + */ +#else +#define MBEDTLS_CTR_DRBG_KEYSIZE 32 +/**< The key size in bytes used by the cipher. + * + * Compile-time choice: 32 bytes (256 bits) + * because \c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is disabled. + */ +#endif + +#define MBEDTLS_CTR_DRBG_KEYBITS ( MBEDTLS_CTR_DRBG_KEYSIZE * 8 ) /**< The key size for the DRBG operation, in bits. */ +#define MBEDTLS_CTR_DRBG_SEEDLEN ( MBEDTLS_CTR_DRBG_KEYSIZE + MBEDTLS_CTR_DRBG_BLOCKSIZE ) /**< The seed length, calculated as (counter + AES key). */ + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them using the compiler command + * line. + * \{ + */ + +/** \def MBEDTLS_CTR_DRBG_ENTROPY_LEN + * + * \brief The amount of entropy used per seed by default, in bytes. + */ +#if !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) +/** This is 48 bytes because the entropy module uses SHA-512 + * (\c MBEDTLS_ENTROPY_FORCE_SHA256 is disabled). + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 48 + +#else /* defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) */ + +/** This is 32 bytes because the entropy module uses SHA-256 + * (the SHA512 module is disabled or + * \c MBEDTLS_ENTROPY_FORCE_SHA256 is enabled). + */ +#if !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) +/** \warning To achieve a 256-bit security strength, you must pass a nonce + * to mbedtls_ctr_drbg_seed(). + */ +#endif /* !defined(MBEDTLS_CTR_DRBG_USE_128_BIT_KEY) */ +#define MBEDTLS_CTR_DRBG_ENTROPY_LEN 32 +#endif /* defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) */ +#endif /* !defined(MBEDTLS_CTR_DRBG_ENTROPY_LEN) */ + +#if !defined(MBEDTLS_CTR_DRBG_RESEED_INTERVAL) +#define MBEDTLS_CTR_DRBG_RESEED_INTERVAL 10000 +/**< The interval before reseed is performed by default. */ +#endif + +#if !defined(MBEDTLS_CTR_DRBG_MAX_INPUT) +#define MBEDTLS_CTR_DRBG_MAX_INPUT 256 +/**< The maximum number of additional input Bytes. */ +#endif + +#if !defined(MBEDTLS_CTR_DRBG_MAX_REQUEST) +#define MBEDTLS_CTR_DRBG_MAX_REQUEST 1024 +/**< The maximum number of requested Bytes per call. */ +#endif + +#if !defined(MBEDTLS_CTR_DRBG_MAX_SEED_INPUT) +#define MBEDTLS_CTR_DRBG_MAX_SEED_INPUT 384 +/**< The maximum size of seed or reseed buffer in bytes. */ +#endif + +/* \} name SECTION: Module settings */ + +#define MBEDTLS_CTR_DRBG_PR_OFF 0 +/**< Prediction resistance is disabled. */ +#define MBEDTLS_CTR_DRBG_PR_ON 1 +/**< Prediction resistance is enabled. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if MBEDTLS_CTR_DRBG_ENTROPY_LEN >= MBEDTLS_CTR_DRBG_KEYSIZE * 3 / 2 +/** The default length of the nonce read from the entropy source. + * + * This is \c 0 because a single read from the entropy source is sufficient + * to include a nonce. + * See the documentation of mbedtls_ctr_drbg_seed() for more information. + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN 0 +#else +/** The default length of the nonce read from the entropy source. + * + * This is half of the default entropy length because a single read from + * the entropy source does not provide enough material to form a nonce. + * See the documentation of mbedtls_ctr_drbg_seed() for more information. + */ +#define MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN ( MBEDTLS_CTR_DRBG_ENTROPY_LEN + 1 ) / 2 +#endif + +/** + * \brief The CTR_DRBG context structure. + */ +typedef struct mbedtls_ctr_drbg_context +{ + unsigned char counter[16]; /*!< The counter (V). */ + int reseed_counter; /*!< The reseed counter. + * This is the number of requests that have + * been made since the last (re)seeding, + * minus one. + * Before the initial seeding, this field + * contains the amount of entropy in bytes + * to use as a nonce for the initial seeding, + * or -1 if no nonce length has been explicitly + * set (see mbedtls_ctr_drbg_set_nonce_len()). + */ + int prediction_resistance; /*!< This determines whether prediction + resistance is enabled, that is + whether to systematically reseed before + each random generation. */ + size_t entropy_len; /*!< The amount of entropy grabbed on each + seed or reseed operation, in bytes. */ + int reseed_interval; /*!< The reseed interval. + * This is the maximum number of requests + * that can be made between reseedings. */ + + mbedtls_aes_context aes_ctx; /*!< The AES context. */ + + /* + * Callbacks (Entropy) + */ + int (*f_entropy)(void *, unsigned char *, size_t); + /*!< The entropy callback function. */ + + void *p_entropy; /*!< The context for the entropy function. */ + +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; +#endif +} +mbedtls_ctr_drbg_context; + +/** + * \brief This function initializes the CTR_DRBG context, + * and prepares it for mbedtls_ctr_drbg_seed() + * or mbedtls_ctr_drbg_free(). + * + * \param ctx The CTR_DRBG context to initialize. + */ +void mbedtls_ctr_drbg_init( mbedtls_ctr_drbg_context *ctx ); + +/** + * \brief This function seeds and sets up the CTR_DRBG + * entropy source for future reseeds. + * + * A typical choice for the \p f_entropy and \p p_entropy parameters is + * to use the entropy module: + * - \p f_entropy is mbedtls_entropy_func(); + * - \p p_entropy is an instance of ::mbedtls_entropy_context initialized + * with mbedtls_entropy_init() (which registers the platform's default + * entropy sources). + * + * The entropy length is #MBEDTLS_CTR_DRBG_ENTROPY_LEN by default. + * You can override it by calling mbedtls_ctr_drbg_set_entropy_len(). + * + * The entropy nonce length is: + * - \c 0 if the entropy length is at least 3/2 times the entropy length, + * which guarantees that the security strength is the maximum permitted + * by the key size and entropy length according to NIST SP 800-90A §10.2.1; + * - Half the entropy length otherwise. + * You can override it by calling mbedtls_ctr_drbg_set_nonce_len(). + * With the default entropy length, the entropy nonce length is + * #MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN. + * + * You can provide a nonce and personalization string in addition to the + * entropy source, to make this instantiation as unique as possible. + * See SP 800-90A §8.6.7 for more details about nonces. + * + * The _seed_material_ value passed to the derivation function in + * the CTR_DRBG Instantiate Process described in NIST SP 800-90A §10.2.1.3.2 + * is the concatenation of the following strings: + * - A string obtained by calling \p f_entropy function for the entropy + * length. + */ +#if MBEDTLS_CTR_DRBG_ENTROPY_NONCE_LEN == 0 +/** + * - If mbedtls_ctr_drbg_set_nonce_len() has been called, a string + * obtained by calling \p f_entropy function for the specified length. + */ +#else +/** + * - A string obtained by calling \p f_entropy function for the entropy nonce + * length. If the entropy nonce length is \c 0, this function does not + * make a second call to \p f_entropy. + */ +#endif +/** + * - The \p custom string. + * + * \note To achieve the nominal security strength permitted + * by CTR_DRBG, the entropy length must be: + * - at least 16 bytes for a 128-bit strength + * (maximum achievable strength when using AES-128); + * - at least 32 bytes for a 256-bit strength + * (maximum achievable strength when using AES-256). + * + * In addition, if you do not pass a nonce in \p custom, + * the sum of the entropy length + * and the entropy nonce length must be: + * - at least 24 bytes for a 128-bit strength + * (maximum achievable strength when using AES-128); + * - at least 48 bytes for a 256-bit strength + * (maximum achievable strength when using AES-256). + * + * \param ctx The CTR_DRBG context to seed. + * It must have been initialized with + * mbedtls_ctr_drbg_init(). + * After a successful call to mbedtls_ctr_drbg_seed(), + * you may not call mbedtls_ctr_drbg_seed() again on + * the same context unless you call + * mbedtls_ctr_drbg_free() and mbedtls_ctr_drbg_init() + * again first. + * \param f_entropy The entropy callback, taking as arguments the + * \p p_entropy context, the buffer to fill, and the + * length of the buffer. + * \p f_entropy is always called with a buffer size + * less than or equal to the entropy length. + * \param p_entropy The entropy context to pass to \p f_entropy. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * This must be at most + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * - #MBEDTLS_CTR_DRBG_ENTROPY_LEN. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure. + */ +int mbedtls_ctr_drbg_seed( mbedtls_ctr_drbg_context *ctx, + int (*f_entropy)(void *, unsigned char *, size_t), + void *p_entropy, + const unsigned char *custom, + size_t len ); + +/** + * \brief This function clears CTR_CRBG context data. + * + * \param ctx The CTR_DRBG context to clear. + */ +void mbedtls_ctr_drbg_free( mbedtls_ctr_drbg_context *ctx ); + +/** + * \brief This function turns prediction resistance on or off. + * The default value is off. + * + * \note If enabled, entropy is gathered at the beginning of + * every call to mbedtls_ctr_drbg_random_with_add() + * or mbedtls_ctr_drbg_random(). + * Only use this if your entropy source has sufficient + * throughput. + * + * \param ctx The CTR_DRBG context. + * \param resistance #MBEDTLS_CTR_DRBG_PR_ON or #MBEDTLS_CTR_DRBG_PR_OFF. + */ +void mbedtls_ctr_drbg_set_prediction_resistance( mbedtls_ctr_drbg_context *ctx, + int resistance ); + +/** + * \brief This function sets the amount of entropy grabbed on each + * seed or reseed. + * + * The default value is #MBEDTLS_CTR_DRBG_ENTROPY_LEN. + * + * \note The security strength of CTR_DRBG is bounded by the + * entropy length. Thus: + * - When using AES-256 + * (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is disabled, + * which is the default), + * \p len must be at least 32 (in bytes) + * to achieve a 256-bit strength. + * - When using AES-128 + * (\c MBEDTLS_CTR_DRBG_USE_128_BIT_KEY is enabled) + * \p len must be at least 16 (in bytes) + * to achieve a 128-bit strength. + * + * \param ctx The CTR_DRBG context. + * \param len The amount of entropy to grab, in bytes. + * This must be at most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * and at most the maximum length accepted by the + * entropy function that is set in the context. + */ +void mbedtls_ctr_drbg_set_entropy_len( mbedtls_ctr_drbg_context *ctx, + size_t len ); + +/** + * \brief This function sets the amount of entropy grabbed + * as a nonce for the initial seeding. + * + * Call this function before calling mbedtls_ctr_drbg_seed() to read + * a nonce from the entropy source during the initial seeding. + * + * \param ctx The CTR_DRBG context. + * \param len The amount of entropy to grab for the nonce, in bytes. + * This must be at most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT + * and at most the maximum length accepted by the + * entropy function that is set in the context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if \p len is + * more than #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED + * if the initial seeding has already taken place. + */ +int mbedtls_ctr_drbg_set_nonce_len( mbedtls_ctr_drbg_context *ctx, + size_t len ); + +/** + * \brief This function sets the reseed interval. + * + * The reseed interval is the number of calls to mbedtls_ctr_drbg_random() + * or mbedtls_ctr_drbg_random_with_add() after which the entropy function + * is called again. + * + * The default value is #MBEDTLS_CTR_DRBG_RESEED_INTERVAL. + * + * \param ctx The CTR_DRBG context. + * \param interval The reseed interval. + */ +void mbedtls_ctr_drbg_set_reseed_interval( mbedtls_ctr_drbg_context *ctx, + int interval ); + +/** + * \brief This function reseeds the CTR_DRBG context, that is + * extracts data from the entropy source. + * + * \param ctx The CTR_DRBG context. + * \param additional Additional data to add to the state. Can be \c NULL. + * \param len The length of the additional data. + * This must be less than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - \c entropy_len + * where \c entropy_len is the entropy length + * configured for the context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on failure. + */ +int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx, + const unsigned char *additional, size_t len ); + +/** + * \brief This function updates the state of the CTR_DRBG context. + * + * \param ctx The CTR_DRBG context. + * \param additional The data to update the state with. This must not be + * \c NULL unless \p add_len is \c 0. + * \param add_len Length of \p additional in bytes. This must be at + * most #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if + * \p add_len is more than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT. + * \return An error from the underlying AES cipher on failure. + */ +int mbedtls_ctr_drbg_update_ret( mbedtls_ctr_drbg_context *ctx, + const unsigned char *additional, + size_t add_len ); + +/** + * \brief This function updates a CTR_DRBG instance with additional + * data and uses it to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \param p_rng The CTR_DRBG context. This must be a pointer to a + * #mbedtls_ctr_drbg_context structure. + * \param output The buffer to fill. + * \param output_len The length of the buffer in bytes. + * \param additional Additional data to update. Can be \c NULL, in which + * case the additional data is empty regardless of + * the value of \p add_len. + * \param add_len The length of the additional data + * if \p additional is not \c NULL. + * This must be less than #MBEDTLS_CTR_DRBG_MAX_INPUT + * and less than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT - \c entropy_len + * where \c entropy_len is the entropy length + * configured for the context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or + * #MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG on failure. + */ +int mbedtls_ctr_drbg_random_with_add( void *p_rng, + unsigned char *output, size_t output_len, + const unsigned char *additional, size_t add_len ); + +/** + * \brief This function uses CTR_DRBG to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * + * \param p_rng The CTR_DRBG context. This must be a pointer to a + * #mbedtls_ctr_drbg_context structure. + * \param output The buffer to fill. + * \param output_len The length of the buffer in bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED or + * #MBEDTLS_ERR_CTR_DRBG_REQUEST_TOO_BIG on failure. + */ +int mbedtls_ctr_drbg_random( void *p_rng, + unsigned char *output, size_t output_len ); + + +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function updates the state of the CTR_DRBG context. + * + * \deprecated Superseded by mbedtls_ctr_drbg_update_ret() + * in 2.16.0. + * + * \note If \p add_len is greater than + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT, only the first + * #MBEDTLS_CTR_DRBG_MAX_SEED_INPUT Bytes are used. + * The remaining Bytes are silently discarded. + * + * \param ctx The CTR_DRBG context. + * \param additional The data to update the state with. + * \param add_len Length of \p additional data. + */ +MBEDTLS_DEPRECATED void mbedtls_ctr_drbg_update( + mbedtls_ctr_drbg_context *ctx, + const unsigned char *additional, + size_t add_len ); +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_FS_IO) +/** + * \brief This function writes a seed file. + * + * \param ctx The CTR_DRBG context. + * \param path The name of the file. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on reseed + * failure. + */ +int mbedtls_ctr_drbg_write_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); + +/** + * \brief This function reads and updates a seed file. The seed + * is added to this instance. + * + * \param ctx The CTR_DRBG context. + * \param path The name of the file. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_CTR_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED on + * reseed failure. + * \return #MBEDTLS_ERR_CTR_DRBG_INPUT_TOO_BIG if the existing + * seed file is too large. + */ +int mbedtls_ctr_drbg_update_seed_file( mbedtls_ctr_drbg_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The CTR_DRBG checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_ctr_drbg_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* ctr_drbg.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/des.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/des.h new file mode 100644 index 00000000..1c80b536 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/des.h @@ -0,0 +1,356 @@ +/** + * \file des.h + * + * \brief DES block cipher + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + * + */ +#ifndef MBEDTLS_DES_H +#define MBEDTLS_DES_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_DES_ENCRYPT 1 +#define MBEDTLS_DES_DECRYPT 0 + +#define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH -0x0032 /**< The data input has an invalid length. */ + +/* MBEDTLS_ERR_DES_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_DES_HW_ACCEL_FAILED -0x0033 /**< DES hardware accelerator failed. */ + +#define MBEDTLS_DES_KEY_SIZE 8 + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_DES_ALT) +// Regular implementation +// + +/** + * \brief DES context structure + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +typedef struct mbedtls_des_context +{ + uint32_t sk[32]; /*!< DES subkeys */ +} +mbedtls_des_context; + +/** + * \brief Triple-DES context structure + */ +typedef struct mbedtls_des3_context +{ + uint32_t sk[96]; /*!< 3DES subkeys */ +} +mbedtls_des3_context; + +#else /* MBEDTLS_DES_ALT */ +#include "des_alt.h" +#endif /* MBEDTLS_DES_ALT */ + +/** + * \brief Initialize DES context + * + * \param ctx DES context to be initialized + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +void mbedtls_des_init( mbedtls_des_context *ctx ); + +/** + * \brief Clear DES context + * + * \param ctx DES context to be cleared + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +void mbedtls_des_free( mbedtls_des_context *ctx ); + +/** + * \brief Initialize Triple-DES context + * + * \param ctx DES3 context to be initialized + */ +void mbedtls_des3_init( mbedtls_des3_context *ctx ); + +/** + * \brief Clear Triple-DES context + * + * \param ctx DES3 context to be cleared + */ +void mbedtls_des3_free( mbedtls_des3_context *ctx ); + +/** + * \brief Set key parity on the given key to odd. + * + * DES keys are 56 bits long, but each byte is padded with + * a parity bit to allow verification. + * + * \param key 8-byte secret key + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +void mbedtls_des_key_set_parity( unsigned char key[MBEDTLS_DES_KEY_SIZE] ); + +/** + * \brief Check that key parity on the given key is odd. + * + * DES keys are 56 bits long, but each byte is padded with + * a parity bit to allow verification. + * + * \param key 8-byte secret key + * + * \return 0 is parity was ok, 1 if parity was not correct. + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +int mbedtls_des_key_check_key_parity( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); + +/** + * \brief Check that key is not a weak or semi-weak DES key + * + * \param key 8-byte secret key + * + * \return 0 if no weak key was found, 1 if a weak key was identified. + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +int mbedtls_des_key_check_weak( const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); + +/** + * \brief DES key schedule (56-bit, encryption) + * + * \param ctx DES context to be initialized + * \param key 8-byte secret key + * + * \return 0 + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +int mbedtls_des_setkey_enc( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); + +/** + * \brief DES key schedule (56-bit, decryption) + * + * \param ctx DES context to be initialized + * \param key 8-byte secret key + * + * \return 0 + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +int mbedtls_des_setkey_dec( mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); + +/** + * \brief Triple-DES key schedule (112-bit, encryption) + * + * \param ctx 3DES context to be initialized + * \param key 16-byte secret key + * + * \return 0 + */ +int mbedtls_des3_set2key_enc( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] ); + +/** + * \brief Triple-DES key schedule (112-bit, decryption) + * + * \param ctx 3DES context to be initialized + * \param key 16-byte secret key + * + * \return 0 + */ +int mbedtls_des3_set2key_dec( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 2] ); + +/** + * \brief Triple-DES key schedule (168-bit, encryption) + * + * \param ctx 3DES context to be initialized + * \param key 24-byte secret key + * + * \return 0 + */ +int mbedtls_des3_set3key_enc( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] ); + +/** + * \brief Triple-DES key schedule (168-bit, decryption) + * + * \param ctx 3DES context to be initialized + * \param key 24-byte secret key + * + * \return 0 + */ +int mbedtls_des3_set3key_dec( mbedtls_des3_context *ctx, + const unsigned char key[MBEDTLS_DES_KEY_SIZE * 3] ); + +/** + * \brief DES-ECB block encryption/decryption + * + * \param ctx DES context + * \param input 64-bit input block + * \param output 64-bit output block + * + * \return 0 if successful + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +int mbedtls_des_crypt_ecb( mbedtls_des_context *ctx, + const unsigned char input[8], + unsigned char output[8] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief DES-CBC buffer encryption/decryption + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx DES context + * \param mode MBEDTLS_DES_ENCRYPT or MBEDTLS_DES_DECRYPT + * \param length length of the input data + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +int mbedtls_des_crypt_cbc( mbedtls_des_context *ctx, + int mode, + size_t length, + unsigned char iv[8], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +/** + * \brief 3DES-ECB block encryption/decryption + * + * \param ctx 3DES context + * \param input 64-bit input block + * \param output 64-bit output block + * + * \return 0 if successful + */ +int mbedtls_des3_crypt_ecb( mbedtls_des3_context *ctx, + const unsigned char input[8], + unsigned char output[8] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief 3DES-CBC buffer encryption/decryption + * + * \note Upon exit, the content of the IV is updated so that you can + * call the function same function again on the following + * block(s) of data and get the same result as if it was + * encrypted in one call. This allows a "streaming" usage. + * If on the other hand you need to retain the contents of the + * IV, you should either save it manually or use the cipher + * module instead. + * + * \param ctx 3DES context + * \param mode MBEDTLS_DES_ENCRYPT or MBEDTLS_DES_DECRYPT + * \param length length of the input data + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if successful, or MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH + */ +int mbedtls_des3_crypt_cbc( mbedtls_des3_context *ctx, + int mode, + size_t length, + unsigned char iv[8], + const unsigned char *input, + unsigned char *output ); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +/** + * \brief Internal function for key expansion. + * (Only exposed to allow overriding it, + * see MBEDTLS_DES_SETKEY_ALT) + * + * \param SK Round keys + * \param key Base key + * + * \warning DES is considered a weak cipher and its use constitutes a + * security risk. We recommend considering stronger ciphers + * instead. + */ +void mbedtls_des_setkey( uint32_t SK[32], + const unsigned char key[MBEDTLS_DES_KEY_SIZE] ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_des_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* des.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/dhm.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/dhm.h new file mode 100644 index 00000000..6dcfadd8 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/dhm.h @@ -0,0 +1,1094 @@ +/** + * \file dhm.h + * + * \brief This file contains Diffie-Hellman-Merkle (DHM) key exchange + * definitions and functions. + * + * Diffie-Hellman-Merkle (DHM) key exchange is defined in + * RFC-2631: Diffie-Hellman Key Agreement Method and + * Public-Key Cryptography Standards (PKCS) #3: Diffie + * Hellman Key Agreement Standard. + * + * RFC-3526: More Modular Exponential (MODP) Diffie-Hellman groups for + * Internet Key Exchange (IKE) defines a number of standardized + * Diffie-Hellman groups for IKE. + * + * RFC-5114: Additional Diffie-Hellman Groups for Use with IETF + * Standards defines a number of standardized Diffie-Hellman + * groups that can be used. + * + * \warning The security of the DHM key exchange relies on the proper choice + * of prime modulus - optimally, it should be a safe prime. The usage + * of non-safe primes both decreases the difficulty of the underlying + * discrete logarithm problem and can lead to small subgroup attacks + * leaking private exponent bits when invalid public keys are used + * and not detected. This is especially relevant if the same DHM + * parameters are reused for multiple key exchanges as in static DHM, + * while the criticality of small-subgroup attacks is lower for + * ephemeral DHM. + * + * \warning For performance reasons, the code does neither perform primality + * nor safe primality tests, nor the expensive checks for invalid + * subgroups. Moreover, even if these were performed, non-standardized + * primes cannot be trusted because of the possibility of backdoors + * that can't be effectively checked for. + * + * \warning Diffie-Hellman-Merkle is therefore a security risk when not using + * standardized primes generated using a trustworthy ("nothing up + * my sleeve") method, such as the RFC 3526 / 7919 primes. In the TLS + * protocol, DH parameters need to be negotiated, so using the default + * primes systematically is not always an option. If possible, use + * Elliptic Curve Diffie-Hellman (ECDH), which has better performance, + * and for which the TLS protocol mandates the use of standard + * parameters. + * + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_DHM_H +#define MBEDTLS_DHM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif +#include "mbedtls/bignum.h" + +/* + * DHM Error codes + */ +#define MBEDTLS_ERR_DHM_BAD_INPUT_DATA -0x3080 /**< Bad input parameters. */ +#define MBEDTLS_ERR_DHM_READ_PARAMS_FAILED -0x3100 /**< Reading of the DHM parameters failed. */ +#define MBEDTLS_ERR_DHM_MAKE_PARAMS_FAILED -0x3180 /**< Making of the DHM parameters failed. */ +#define MBEDTLS_ERR_DHM_READ_PUBLIC_FAILED -0x3200 /**< Reading of the public values failed. */ +#define MBEDTLS_ERR_DHM_MAKE_PUBLIC_FAILED -0x3280 /**< Making of the public value failed. */ +#define MBEDTLS_ERR_DHM_CALC_SECRET_FAILED -0x3300 /**< Calculation of the DHM secret failed. */ +#define MBEDTLS_ERR_DHM_INVALID_FORMAT -0x3380 /**< The ASN.1 data is not formatted correctly. */ +#define MBEDTLS_ERR_DHM_ALLOC_FAILED -0x3400 /**< Allocation of memory failed. */ +#define MBEDTLS_ERR_DHM_FILE_IO_ERROR -0x3480 /**< Read or write of file failed. */ + +/* MBEDTLS_ERR_DHM_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_DHM_HW_ACCEL_FAILED -0x3500 /**< DHM hardware accelerator failed. */ + +#define MBEDTLS_ERR_DHM_SET_GROUP_FAILED -0x3580 /**< Setting the modulus and generator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_DHM_ALT) + +/** + * \brief The DHM context structure. + */ +typedef struct mbedtls_dhm_context +{ + size_t len; /*!< The size of \p P in Bytes. */ + mbedtls_mpi P; /*!< The prime modulus. */ + mbedtls_mpi G; /*!< The generator. */ + mbedtls_mpi X; /*!< Our secret value. */ + mbedtls_mpi GX; /*!< Our public key = \c G^X mod \c P. */ + mbedtls_mpi GY; /*!< The public key of the peer = \c G^Y mod \c P. */ + mbedtls_mpi K; /*!< The shared secret = \c G^(XY) mod \c P. */ + mbedtls_mpi RP; /*!< The cached value = \c R^2 mod \c P. */ + mbedtls_mpi Vi; /*!< The blinding value. */ + mbedtls_mpi Vf; /*!< The unblinding value. */ + mbedtls_mpi pX; /*!< The previous \c X. */ +} +mbedtls_dhm_context; + +#else /* MBEDTLS_DHM_ALT */ +#include "dhm_alt.h" +#endif /* MBEDTLS_DHM_ALT */ + +/** + * \brief This function initializes the DHM context. + * + * \param ctx The DHM context to initialize. + */ +void mbedtls_dhm_init( mbedtls_dhm_context *ctx ); + +/** + * \brief This function parses the DHM parameters in a + * TLS ServerKeyExchange handshake message + * (DHM modulus, generator, and public key). + * + * \note In a TLS handshake, this is the how the client + * sets up its DHM context from the server's public + * DHM key material. + * + * \param ctx The DHM context to use. This must be initialized. + * \param p On input, *p must be the start of the input buffer. + * On output, *p is updated to point to the end of the data + * that has been read. On success, this is the first byte + * past the end of the ServerKeyExchange parameters. + * On error, this is the point at which an error has been + * detected, which is usually not useful except to debug + * failures. + * \param end The end of the input buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX error code on failure. + */ +int mbedtls_dhm_read_params( mbedtls_dhm_context *ctx, + unsigned char **p, + const unsigned char *end ); + +/** + * \brief This function generates a DHM key pair and exports its + * public part together with the DHM parameters in the format + * used in a TLS ServerKeyExchange handshake message. + * + * \note This function assumes that the DHM parameters \c ctx->P + * and \c ctx->G have already been properly set. For that, use + * mbedtls_dhm_set_group() below in conjunction with + * mbedtls_mpi_read_binary() and mbedtls_mpi_read_string(). + * + * \note In a TLS handshake, this is the how the server generates + * and exports its DHM key material. + * + * \param ctx The DHM context to use. This must be initialized + * and have the DHM parameters set. It may or may not + * already have imported the peer's public key. + * \param x_size The private key size in Bytes. + * \param olen The address at which to store the number of Bytes + * written on success. This must not be \c NULL. + * \param output The destination buffer. This must be a writable buffer of + * sufficient size to hold the reduced binary presentation of + * the modulus, the generator and the public key, each wrapped + * with a 2-byte length field. It is the responsibility of the + * caller to ensure that enough space is available. Refer to + * mbedtls_mpi_size() to computing the byte-size of an MPI. + * \param f_rng The RNG function. Must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context parameter. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX error code on failure. + */ +int mbedtls_dhm_make_params( mbedtls_dhm_context *ctx, int x_size, + unsigned char *output, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function sets the prime modulus and generator. + * + * \note This function can be used to set \c ctx->P, \c ctx->G + * in preparation for mbedtls_dhm_make_params(). + * + * \param ctx The DHM context to configure. This must be initialized. + * \param P The MPI holding the DHM prime modulus. This must be + * an initialized MPI. + * \param G The MPI holding the DHM generator. This must be an + * initialized MPI. + * + * \return \c 0 if successful. + * \return An \c MBEDTLS_ERR_DHM_XXX error code on failure. + */ +int mbedtls_dhm_set_group( mbedtls_dhm_context *ctx, + const mbedtls_mpi *P, + const mbedtls_mpi *G ); + +/** + * \brief This function imports the raw public value of the peer. + * + * \note In a TLS handshake, this is the how the server imports + * the Client's public DHM key. + * + * \param ctx The DHM context to use. This must be initialized and have + * its DHM parameters set, e.g. via mbedtls_dhm_set_group(). + * It may or may not already have generated its own private key. + * \param input The input buffer containing the \c G^Y value of the peer. + * This must be a readable buffer of size \p ilen Bytes. + * \param ilen The size of the input buffer \p input in Bytes. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX error code on failure. + */ +int mbedtls_dhm_read_public( mbedtls_dhm_context *ctx, + const unsigned char *input, size_t ilen ); + +/** + * \brief This function creates a DHM key pair and exports + * the raw public key in big-endian format. + * + * \note The destination buffer is always fully written + * so as to contain a big-endian representation of G^X mod P. + * If it is larger than \c ctx->len, it is padded accordingly + * with zero-bytes at the beginning. + * + * \param ctx The DHM context to use. This must be initialized and + * have the DHM parameters set. It may or may not already + * have imported the peer's public key. + * \param x_size The private key size in Bytes. + * \param output The destination buffer. This must be a writable buffer of + * size \p olen Bytes. + * \param olen The length of the destination buffer. This must be at least + * equal to `ctx->len` (the size of \c P). + * \param f_rng The RNG function. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be \c NULL + * if \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX error code on failure. + */ +int mbedtls_dhm_make_public( mbedtls_dhm_context *ctx, int x_size, + unsigned char *output, size_t olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function derives and exports the shared secret + * \c (G^Y)^X mod \c P. + * + * \note If \p f_rng is not \c NULL, it is used to blind the input as + * a countermeasure against timing attacks. Blinding is used + * only if our private key \c X is re-used, and not used + * otherwise. We recommend always passing a non-NULL + * \p f_rng argument. + * + * \param ctx The DHM context to use. This must be initialized + * and have its own private key generated and the peer's + * public key imported. + * \param output The buffer to write the generated shared key to. This + * must be a writable buffer of size \p output_size Bytes. + * \param output_size The size of the destination buffer. This must be at + * least the size of \c ctx->len (the size of \c P). + * \param olen On exit, holds the actual number of Bytes written. + * \param f_rng The RNG function, for blinding purposes. This may + * b \c NULL if blinding isn't needed. + * \param p_rng The RNG context. This may be \c NULL if \p f_rng + * doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX error code on failure. + */ +int mbedtls_dhm_calc_secret( mbedtls_dhm_context *ctx, + unsigned char *output, size_t output_size, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function frees and clears the components + * of a DHM context. + * + * \param ctx The DHM context to free and clear. This may be \c NULL, + * in which case this function is a no-op. If it is not \c NULL, + * it must point to an initialized DHM context. + */ +void mbedtls_dhm_free( mbedtls_dhm_context *ctx ); + +#if defined(MBEDTLS_ASN1_PARSE_C) +/** + * \brief This function parses DHM parameters in PEM or DER format. + * + * \param dhm The DHM context to import the DHM parameters into. + * This must be initialized. + * \param dhmin The input buffer. This must be a readable buffer of + * length \p dhminlen Bytes. + * \param dhminlen The size of the input buffer \p dhmin, including the + * terminating \c NULL Byte for PEM data. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX or \c MBEDTLS_ERR_PEM_XXX error + * code on failure. + */ +int mbedtls_dhm_parse_dhm( mbedtls_dhm_context *dhm, const unsigned char *dhmin, + size_t dhminlen ); + +#if defined(MBEDTLS_FS_IO) +/** + * \brief This function loads and parses DHM parameters from a file. + * + * \param dhm The DHM context to load the parameters to. + * This must be initialized. + * \param path The filename to read the DHM parameters from. + * This must not be \c NULL. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_DHM_XXX or \c MBEDTLS_ERR_PEM_XXX + * error code on failure. + */ +int mbedtls_dhm_parse_dhmfile( mbedtls_dhm_context *dhm, const char *path ); +#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_ASN1_PARSE_C */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The DMH checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_dhm_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ +#ifdef __cplusplus +} +#endif + +/** + * RFC 3526, RFC 5114 and RFC 7919 standardize a number of + * Diffie-Hellman groups, some of which are included here + * for use within the SSL/TLS module and the user's convenience + * when configuring the Diffie-Hellman parameters by hand + * through \c mbedtls_ssl_conf_dh_param. + * + * The following lists the source of the above groups in the standards: + * - RFC 5114 section 2.2: 2048-bit MODP Group with 224-bit Prime Order Subgroup + * - RFC 3526 section 3: 2048-bit MODP Group + * - RFC 3526 section 4: 3072-bit MODP Group + * - RFC 3526 section 5: 4096-bit MODP Group + * - RFC 7919 section A.1: ffdhe2048 + * - RFC 7919 section A.2: ffdhe3072 + * - RFC 7919 section A.3: ffdhe4096 + * - RFC 7919 section A.4: ffdhe6144 + * - RFC 7919 section A.5: ffdhe8192 + * + * The constants with suffix "_p" denote the chosen prime moduli, while + * the constants with suffix "_g" denote the chosen generator + * of the associated prime field. + * + * The constants further suffixed with "_bin" are provided in binary format, + * while all other constants represent null-terminated strings holding the + * hexadecimal presentation of the respective numbers. + * + * The primes from RFC 3526 and RFC 7919 have been generating by the following + * trust-worthy procedure: + * - Fix N in { 2048, 3072, 4096, 6144, 8192 } and consider the N-bit number + * the first and last 64 bits are all 1, and the remaining N - 128 bits of + * which are 0x7ff...ff. + * - Add the smallest multiple of the first N - 129 bits of the binary expansion + * of pi (for RFC 5236) or e (for RFC 7919) to this intermediate bit-string + * such that the resulting integer is a safe-prime. + * - The result is the respective RFC 3526 / 7919 prime, and the corresponding + * generator is always chosen to be 2 (which is a square for these prime, + * hence the corresponding subgroup has order (p-1)/2 and avoids leaking a + * bit in the private exponent). + * + */ + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +/** + * \warning The origin of the primes in RFC 5114 is not documented and + * their use therefore constitutes a security risk! + * + * \deprecated The hex-encoded primes from RFC 5114 are deprecated and are + * likely to be removed in a future version of the library without + * replacement. + */ + +/** + * The hexadecimal presentation of the prime underlying the + * 2048-bit MODP Group with 224-bit Prime Order Subgroup, as defined + * in RFC-5114: Additional Diffie-Hellman Groups for Use with + * IETF Standards. + */ +#define MBEDTLS_DHM_RFC5114_MODP_2048_P \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( \ + "AD107E1E9123A9D0D660FAA79559C51FA20D64E5683B9FD1" \ + "B54B1597B61D0A75E6FA141DF95A56DBAF9A3C407BA1DF15" \ + "EB3D688A309C180E1DE6B85A1274A0A66D3F8152AD6AC212" \ + "9037C9EDEFDA4DF8D91E8FEF55B7394B7AD5B7D0B6C12207" \ + "C9F98D11ED34DBF6C6BA0B2C8BBC27BE6A00E0A0B9C49708" \ + "B3BF8A317091883681286130BC8985DB1602E714415D9330" \ + "278273C7DE31EFDC7310F7121FD5A07415987D9ADC0A486D" \ + "CDF93ACC44328387315D75E198C641A480CD86A1B9E587E8" \ + "BE60E69CC928B2B9C52172E413042E9B23F10B0E16E79763" \ + "C9B53DCF4BA80A29E3FB73C16B8E75B97EF363E2FFA31F71" \ + "CF9DE5384E71B81C0AC4DFFE0C10E64F" ) + +/** + * The hexadecimal presentation of the chosen generator of the 2048-bit MODP + * Group with 224-bit Prime Order Subgroup, as defined in RFC-5114: + * Additional Diffie-Hellman Groups for Use with IETF Standards. + */ +#define MBEDTLS_DHM_RFC5114_MODP_2048_G \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( \ + "AC4032EF4F2D9AE39DF30B5C8FFDAC506CDEBE7B89998CAF" \ + "74866A08CFE4FFE3A6824A4E10B9A6F0DD921F01A70C4AFA" \ + "AB739D7700C29F52C57DB17C620A8652BE5E9001A8D66AD7" \ + "C17669101999024AF4D027275AC1348BB8A762D0521BC98A" \ + "E247150422EA1ED409939D54DA7460CDB5F6C6B250717CBE" \ + "F180EB34118E98D119529A45D6F834566E3025E316A330EF" \ + "BB77A86F0C1AB15B051AE3D428C8F8ACB70A8137150B8EEB" \ + "10E183EDD19963DDD9E263E4770589EF6AA21E7F5F2FF381" \ + "B539CCE3409D13CD566AFBB48D6C019181E1BCFE94B30269" \ + "EDFE72FE9B6AA4BD7B5A0F1C71CFFF4C19C418E1F6EC0179" \ + "81BC087F2A7065B384B890D3191F2BFA" ) + +/** + * The hexadecimal presentation of the prime underlying the 2048-bit MODP + * Group, as defined in RFC-3526: More Modular Exponential (MODP) + * Diffie-Hellman groups for Internet Key Exchange (IKE). + * + * \deprecated The hex-encoded primes from RFC 3625 are deprecated and + * superseded by the corresponding macros providing them as + * binary constants. Their hex-encoded constants are likely + * to be removed in a future version of the library. + * + */ +#define MBEDTLS_DHM_RFC3526_MODP_2048_P \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AACAA68FFFFFFFFFFFFFFFF" ) + +/** + * The hexadecimal presentation of the chosen generator of the 2048-bit MODP + * Group, as defined in RFC-3526: More Modular Exponential (MODP) + * Diffie-Hellman groups for Internet Key Exchange (IKE). + */ +#define MBEDTLS_DHM_RFC3526_MODP_2048_G \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( "02" ) + +/** + * The hexadecimal presentation of the prime underlying the 3072-bit MODP + * Group, as defined in RFC-3072: More Modular Exponential (MODP) + * Diffie-Hellman groups for Internet Key Exchange (IKE). + */ +#define MBEDTLS_DHM_RFC3526_MODP_3072_P \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" ) + +/** + * The hexadecimal presentation of the chosen generator of the 3072-bit MODP + * Group, as defined in RFC-3526: More Modular Exponential (MODP) + * Diffie-Hellman groups for Internet Key Exchange (IKE). + */ +#define MBEDTLS_DHM_RFC3526_MODP_3072_G \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( "02" ) + +/** + * The hexadecimal presentation of the prime underlying the 4096-bit MODP + * Group, as defined in RFC-3526: More Modular Exponential (MODP) + * Diffie-Hellman groups for Internet Key Exchange (IKE). + */ +#define MBEDTLS_DHM_RFC3526_MODP_4096_P \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( \ + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" \ + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" \ + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" \ + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" \ + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" \ + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" \ + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" \ + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" \ + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" \ + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" \ + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" \ + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" \ + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" \ + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" \ + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" \ + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" \ + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" \ + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" \ + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" \ + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" \ + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" \ + "FFFFFFFFFFFFFFFF" ) + +/** + * The hexadecimal presentation of the chosen generator of the 4096-bit MODP + * Group, as defined in RFC-3526: More Modular Exponential (MODP) + * Diffie-Hellman groups for Internet Key Exchange (IKE). + */ +#define MBEDTLS_DHM_RFC3526_MODP_4096_G \ + MBEDTLS_DEPRECATED_STRING_CONSTANT( "02" ) + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/* + * Trustworthy DHM parameters in binary form + */ + +#define MBEDTLS_DHM_RFC3526_MODP_2048_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \ + 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \ + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \ + 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \ + 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \ + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \ + 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \ + 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \ + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \ + 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \ + 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \ + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \ + 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \ + 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \ + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \ + 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \ + 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \ + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \ + 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \ + 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \ + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \ + 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \ + 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \ + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \ + 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \ + 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \ + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \ + 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \ + 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \ + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC3526_MODP_2048_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC3526_MODP_3072_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \ + 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \ + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \ + 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \ + 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \ + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \ + 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \ + 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \ + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \ + 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \ + 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \ + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \ + 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \ + 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \ + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \ + 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \ + 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \ + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \ + 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \ + 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \ + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \ + 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \ + 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \ + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \ + 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \ + 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \ + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \ + 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \ + 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \ + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, \ + 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, \ + 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, \ + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, \ + 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, \ + 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, \ + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, \ + 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, \ + 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, \ + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, \ + 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, \ + 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, \ + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, \ + 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, \ + 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, \ + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, \ + 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x3A, 0xD2, 0xCA, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC3526_MODP_3072_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC3526_MODP_4096_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, \ + 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, \ + 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, \ + 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, \ + 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, \ + 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, \ + 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, \ + 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, \ + 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, \ + 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, \ + 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, \ + 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, \ + 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, \ + 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, \ + 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, \ + 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, \ + 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, \ + 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, \ + 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, \ + 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, \ + 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, \ + 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, \ + 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, \ + 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, \ + 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, \ + 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, \ + 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, \ + 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, \ + 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, \ + 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAA, 0xC4, 0x2D, \ + 0xAD, 0x33, 0x17, 0x0D, 0x04, 0x50, 0x7A, 0x33, \ + 0xA8, 0x55, 0x21, 0xAB, 0xDF, 0x1C, 0xBA, 0x64, \ + 0xEC, 0xFB, 0x85, 0x04, 0x58, 0xDB, 0xEF, 0x0A, \ + 0x8A, 0xEA, 0x71, 0x57, 0x5D, 0x06, 0x0C, 0x7D, \ + 0xB3, 0x97, 0x0F, 0x85, 0xA6, 0xE1, 0xE4, 0xC7, \ + 0xAB, 0xF5, 0xAE, 0x8C, 0xDB, 0x09, 0x33, 0xD7, \ + 0x1E, 0x8C, 0x94, 0xE0, 0x4A, 0x25, 0x61, 0x9D, \ + 0xCE, 0xE3, 0xD2, 0x26, 0x1A, 0xD2, 0xEE, 0x6B, \ + 0xF1, 0x2F, 0xFA, 0x06, 0xD9, 0x8A, 0x08, 0x64, \ + 0xD8, 0x76, 0x02, 0x73, 0x3E, 0xC8, 0x6A, 0x64, \ + 0x52, 0x1F, 0x2B, 0x18, 0x17, 0x7B, 0x20, 0x0C, \ + 0xBB, 0xE1, 0x17, 0x57, 0x7A, 0x61, 0x5D, 0x6C, \ + 0x77, 0x09, 0x88, 0xC0, 0xBA, 0xD9, 0x46, 0xE2, \ + 0x08, 0xE2, 0x4F, 0xA0, 0x74, 0xE5, 0xAB, 0x31, \ + 0x43, 0xDB, 0x5B, 0xFC, 0xE0, 0xFD, 0x10, 0x8E, \ + 0x4B, 0x82, 0xD1, 0x20, 0xA9, 0x21, 0x08, 0x01, \ + 0x1A, 0x72, 0x3C, 0x12, 0xA7, 0x87, 0xE6, 0xD7, \ + 0x88, 0x71, 0x9A, 0x10, 0xBD, 0xBA, 0x5B, 0x26, \ + 0x99, 0xC3, 0x27, 0x18, 0x6A, 0xF4, 0xE2, 0x3C, \ + 0x1A, 0x94, 0x68, 0x34, 0xB6, 0x15, 0x0B, 0xDA, \ + 0x25, 0x83, 0xE9, 0xCA, 0x2A, 0xD4, 0x4C, 0xE8, \ + 0xDB, 0xBB, 0xC2, 0xDB, 0x04, 0xDE, 0x8E, 0xF9, \ + 0x2E, 0x8E, 0xFC, 0x14, 0x1F, 0xBE, 0xCA, 0xA6, \ + 0x28, 0x7C, 0x59, 0x47, 0x4E, 0x6B, 0xC0, 0x5D, \ + 0x99, 0xB2, 0x96, 0x4F, 0xA0, 0x90, 0xC3, 0xA2, \ + 0x23, 0x3B, 0xA1, 0x86, 0x51, 0x5B, 0xE7, 0xED, \ + 0x1F, 0x61, 0x29, 0x70, 0xCE, 0xE2, 0xD7, 0xAF, \ + 0xB8, 0x1B, 0xDD, 0x76, 0x21, 0x70, 0x48, 0x1C, \ + 0xD0, 0x06, 0x91, 0x27, 0xD5, 0xB0, 0x5A, 0xA9, \ + 0x93, 0xB4, 0xEA, 0x98, 0x8D, 0x8F, 0xDD, 0xC1, \ + 0x86, 0xFF, 0xB7, 0xDC, 0x90, 0xA6, 0xC0, 0x8F, \ + 0x4D, 0xF4, 0x35, 0xC9, 0x34, 0x06, 0x31, 0x99, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC3526_MODP_4096_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC7919_FFDHE2048_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \ + 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \ + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \ + 0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \ + 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \ + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \ + 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \ + 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \ + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \ + 0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \ + 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \ + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \ + 0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \ + 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \ + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \ + 0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \ + 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \ + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \ + 0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \ + 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \ + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \ + 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \ + 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \ + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \ + 0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \ + 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \ + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \ + 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \ + 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \ + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x28, 0x5C, 0x97, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, } + +#define MBEDTLS_DHM_RFC7919_FFDHE2048_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC7919_FFDHE3072_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \ + 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \ + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \ + 0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \ + 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \ + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \ + 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \ + 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \ + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \ + 0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \ + 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \ + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \ + 0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \ + 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \ + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \ + 0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \ + 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \ + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \ + 0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \ + 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \ + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \ + 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \ + 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \ + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \ + 0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \ + 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \ + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \ + 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \ + 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \ + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \ + 0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \ + 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \ + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \ + 0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \ + 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \ + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \ + 0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \ + 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \ + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \ + 0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \ + 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \ + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \ + 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \ + 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \ + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \ + 0x25, 0xE4, 0x1D, 0x2B, 0x66, 0xC6, 0x2E, 0x37, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC7919_FFDHE3072_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC7919_FFDHE4096_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \ + 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \ + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \ + 0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \ + 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \ + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \ + 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \ + 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \ + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \ + 0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \ + 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \ + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \ + 0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \ + 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \ + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \ + 0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \ + 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \ + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \ + 0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \ + 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \ + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \ + 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \ + 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \ + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \ + 0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \ + 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \ + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \ + 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \ + 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \ + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \ + 0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \ + 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \ + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \ + 0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \ + 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \ + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \ + 0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \ + 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \ + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \ + 0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \ + 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \ + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \ + 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \ + 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \ + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \ + 0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \ + 0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \ + 0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \ + 0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \ + 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \ + 0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \ + 0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \ + 0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \ + 0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \ + 0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \ + 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \ + 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \ + 0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \ + 0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \ + 0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \ + 0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \ + 0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x65, 0x5F, 0x6A, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC7919_FFDHE4096_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC7919_FFDHE6144_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \ + 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \ + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \ + 0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \ + 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \ + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \ + 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \ + 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \ + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \ + 0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \ + 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \ + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \ + 0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \ + 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \ + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \ + 0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \ + 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \ + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \ + 0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \ + 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \ + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \ + 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \ + 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \ + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \ + 0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \ + 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \ + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \ + 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \ + 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \ + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \ + 0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \ + 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \ + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \ + 0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \ + 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \ + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \ + 0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \ + 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \ + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \ + 0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \ + 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \ + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \ + 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \ + 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \ + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \ + 0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \ + 0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \ + 0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \ + 0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \ + 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \ + 0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \ + 0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \ + 0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \ + 0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \ + 0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \ + 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \ + 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \ + 0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \ + 0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \ + 0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \ + 0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \ + 0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, \ + 0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, \ + 0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, 0x2A, 0x3A, \ + 0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, \ + 0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, \ + 0x91, 0x7B, 0xDD, 0x64, 0xB1, 0xC0, 0xFD, 0x4C, \ + 0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, \ + 0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, \ + 0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, 0x1F, \ + 0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, \ + 0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, \ + 0xB8, 0x55, 0x32, 0x2E, 0xDB, 0x63, 0x40, 0xD8, \ + 0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, \ + 0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, \ + 0x7F, 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, \ + 0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, \ + 0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, \ + 0x94, 0xC6, 0x65, 0x1E, 0x77, 0xCA, 0xF9, 0x92, \ + 0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, \ + 0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, \ + 0x0A, 0xE8, 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, \ + 0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, \ + 0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, \ + 0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, 0xA8, 0x46, \ + 0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, \ + 0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, \ + 0x8C, 0xCF, 0x2D, 0xD5, 0xCA, 0xCE, 0xF4, 0x03, \ + 0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, \ + 0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, \ + 0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, 0x69, \ + 0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, \ + 0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, \ + 0xA4, 0x0E, 0x32, 0x9C, 0xD0, 0xE4, 0x0E, 0x65, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC7919_FFDHE6144_G_BIN { 0x02 } + +#define MBEDTLS_DHM_RFC7919_FFDHE8192_P_BIN { \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \ + 0xAD, 0xF8, 0x54, 0x58, 0xA2, 0xBB, 0x4A, 0x9A, \ + 0xAF, 0xDC, 0x56, 0x20, 0x27, 0x3D, 0x3C, 0xF1, \ + 0xD8, 0xB9, 0xC5, 0x83, 0xCE, 0x2D, 0x36, 0x95, \ + 0xA9, 0xE1, 0x36, 0x41, 0x14, 0x64, 0x33, 0xFB, \ + 0xCC, 0x93, 0x9D, 0xCE, 0x24, 0x9B, 0x3E, 0xF9, \ + 0x7D, 0x2F, 0xE3, 0x63, 0x63, 0x0C, 0x75, 0xD8, \ + 0xF6, 0x81, 0xB2, 0x02, 0xAE, 0xC4, 0x61, 0x7A, \ + 0xD3, 0xDF, 0x1E, 0xD5, 0xD5, 0xFD, 0x65, 0x61, \ + 0x24, 0x33, 0xF5, 0x1F, 0x5F, 0x06, 0x6E, 0xD0, \ + 0x85, 0x63, 0x65, 0x55, 0x3D, 0xED, 0x1A, 0xF3, \ + 0xB5, 0x57, 0x13, 0x5E, 0x7F, 0x57, 0xC9, 0x35, \ + 0x98, 0x4F, 0x0C, 0x70, 0xE0, 0xE6, 0x8B, 0x77, \ + 0xE2, 0xA6, 0x89, 0xDA, 0xF3, 0xEF, 0xE8, 0x72, \ + 0x1D, 0xF1, 0x58, 0xA1, 0x36, 0xAD, 0xE7, 0x35, \ + 0x30, 0xAC, 0xCA, 0x4F, 0x48, 0x3A, 0x79, 0x7A, \ + 0xBC, 0x0A, 0xB1, 0x82, 0xB3, 0x24, 0xFB, 0x61, \ + 0xD1, 0x08, 0xA9, 0x4B, 0xB2, 0xC8, 0xE3, 0xFB, \ + 0xB9, 0x6A, 0xDA, 0xB7, 0x60, 0xD7, 0xF4, 0x68, \ + 0x1D, 0x4F, 0x42, 0xA3, 0xDE, 0x39, 0x4D, 0xF4, \ + 0xAE, 0x56, 0xED, 0xE7, 0x63, 0x72, 0xBB, 0x19, \ + 0x0B, 0x07, 0xA7, 0xC8, 0xEE, 0x0A, 0x6D, 0x70, \ + 0x9E, 0x02, 0xFC, 0xE1, 0xCD, 0xF7, 0xE2, 0xEC, \ + 0xC0, 0x34, 0x04, 0xCD, 0x28, 0x34, 0x2F, 0x61, \ + 0x91, 0x72, 0xFE, 0x9C, 0xE9, 0x85, 0x83, 0xFF, \ + 0x8E, 0x4F, 0x12, 0x32, 0xEE, 0xF2, 0x81, 0x83, \ + 0xC3, 0xFE, 0x3B, 0x1B, 0x4C, 0x6F, 0xAD, 0x73, \ + 0x3B, 0xB5, 0xFC, 0xBC, 0x2E, 0xC2, 0x20, 0x05, \ + 0xC5, 0x8E, 0xF1, 0x83, 0x7D, 0x16, 0x83, 0xB2, \ + 0xC6, 0xF3, 0x4A, 0x26, 0xC1, 0xB2, 0xEF, 0xFA, \ + 0x88, 0x6B, 0x42, 0x38, 0x61, 0x1F, 0xCF, 0xDC, \ + 0xDE, 0x35, 0x5B, 0x3B, 0x65, 0x19, 0x03, 0x5B, \ + 0xBC, 0x34, 0xF4, 0xDE, 0xF9, 0x9C, 0x02, 0x38, \ + 0x61, 0xB4, 0x6F, 0xC9, 0xD6, 0xE6, 0xC9, 0x07, \ + 0x7A, 0xD9, 0x1D, 0x26, 0x91, 0xF7, 0xF7, 0xEE, \ + 0x59, 0x8C, 0xB0, 0xFA, 0xC1, 0x86, 0xD9, 0x1C, \ + 0xAE, 0xFE, 0x13, 0x09, 0x85, 0x13, 0x92, 0x70, \ + 0xB4, 0x13, 0x0C, 0x93, 0xBC, 0x43, 0x79, 0x44, \ + 0xF4, 0xFD, 0x44, 0x52, 0xE2, 0xD7, 0x4D, 0xD3, \ + 0x64, 0xF2, 0xE2, 0x1E, 0x71, 0xF5, 0x4B, 0xFF, \ + 0x5C, 0xAE, 0x82, 0xAB, 0x9C, 0x9D, 0xF6, 0x9E, \ + 0xE8, 0x6D, 0x2B, 0xC5, 0x22, 0x36, 0x3A, 0x0D, \ + 0xAB, 0xC5, 0x21, 0x97, 0x9B, 0x0D, 0xEA, 0xDA, \ + 0x1D, 0xBF, 0x9A, 0x42, 0xD5, 0xC4, 0x48, 0x4E, \ + 0x0A, 0xBC, 0xD0, 0x6B, 0xFA, 0x53, 0xDD, 0xEF, \ + 0x3C, 0x1B, 0x20, 0xEE, 0x3F, 0xD5, 0x9D, 0x7C, \ + 0x25, 0xE4, 0x1D, 0x2B, 0x66, 0x9E, 0x1E, 0xF1, \ + 0x6E, 0x6F, 0x52, 0xC3, 0x16, 0x4D, 0xF4, 0xFB, \ + 0x79, 0x30, 0xE9, 0xE4, 0xE5, 0x88, 0x57, 0xB6, \ + 0xAC, 0x7D, 0x5F, 0x42, 0xD6, 0x9F, 0x6D, 0x18, \ + 0x77, 0x63, 0xCF, 0x1D, 0x55, 0x03, 0x40, 0x04, \ + 0x87, 0xF5, 0x5B, 0xA5, 0x7E, 0x31, 0xCC, 0x7A, \ + 0x71, 0x35, 0xC8, 0x86, 0xEF, 0xB4, 0x31, 0x8A, \ + 0xED, 0x6A, 0x1E, 0x01, 0x2D, 0x9E, 0x68, 0x32, \ + 0xA9, 0x07, 0x60, 0x0A, 0x91, 0x81, 0x30, 0xC4, \ + 0x6D, 0xC7, 0x78, 0xF9, 0x71, 0xAD, 0x00, 0x38, \ + 0x09, 0x29, 0x99, 0xA3, 0x33, 0xCB, 0x8B, 0x7A, \ + 0x1A, 0x1D, 0xB9, 0x3D, 0x71, 0x40, 0x00, 0x3C, \ + 0x2A, 0x4E, 0xCE, 0xA9, 0xF9, 0x8D, 0x0A, 0xCC, \ + 0x0A, 0x82, 0x91, 0xCD, 0xCE, 0xC9, 0x7D, 0xCF, \ + 0x8E, 0xC9, 0xB5, 0x5A, 0x7F, 0x88, 0xA4, 0x6B, \ + 0x4D, 0xB5, 0xA8, 0x51, 0xF4, 0x41, 0x82, 0xE1, \ + 0xC6, 0x8A, 0x00, 0x7E, 0x5E, 0x0D, 0xD9, 0x02, \ + 0x0B, 0xFD, 0x64, 0xB6, 0x45, 0x03, 0x6C, 0x7A, \ + 0x4E, 0x67, 0x7D, 0x2C, 0x38, 0x53, 0x2A, 0x3A, \ + 0x23, 0xBA, 0x44, 0x42, 0xCA, 0xF5, 0x3E, 0xA6, \ + 0x3B, 0xB4, 0x54, 0x32, 0x9B, 0x76, 0x24, 0xC8, \ + 0x91, 0x7B, 0xDD, 0x64, 0xB1, 0xC0, 0xFD, 0x4C, \ + 0xB3, 0x8E, 0x8C, 0x33, 0x4C, 0x70, 0x1C, 0x3A, \ + 0xCD, 0xAD, 0x06, 0x57, 0xFC, 0xCF, 0xEC, 0x71, \ + 0x9B, 0x1F, 0x5C, 0x3E, 0x4E, 0x46, 0x04, 0x1F, \ + 0x38, 0x81, 0x47, 0xFB, 0x4C, 0xFD, 0xB4, 0x77, \ + 0xA5, 0x24, 0x71, 0xF7, 0xA9, 0xA9, 0x69, 0x10, \ + 0xB8, 0x55, 0x32, 0x2E, 0xDB, 0x63, 0x40, 0xD8, \ + 0xA0, 0x0E, 0xF0, 0x92, 0x35, 0x05, 0x11, 0xE3, \ + 0x0A, 0xBE, 0xC1, 0xFF, 0xF9, 0xE3, 0xA2, 0x6E, \ + 0x7F, 0xB2, 0x9F, 0x8C, 0x18, 0x30, 0x23, 0xC3, \ + 0x58, 0x7E, 0x38, 0xDA, 0x00, 0x77, 0xD9, 0xB4, \ + 0x76, 0x3E, 0x4E, 0x4B, 0x94, 0xB2, 0xBB, 0xC1, \ + 0x94, 0xC6, 0x65, 0x1E, 0x77, 0xCA, 0xF9, 0x92, \ + 0xEE, 0xAA, 0xC0, 0x23, 0x2A, 0x28, 0x1B, 0xF6, \ + 0xB3, 0xA7, 0x39, 0xC1, 0x22, 0x61, 0x16, 0x82, \ + 0x0A, 0xE8, 0xDB, 0x58, 0x47, 0xA6, 0x7C, 0xBE, \ + 0xF9, 0xC9, 0x09, 0x1B, 0x46, 0x2D, 0x53, 0x8C, \ + 0xD7, 0x2B, 0x03, 0x74, 0x6A, 0xE7, 0x7F, 0x5E, \ + 0x62, 0x29, 0x2C, 0x31, 0x15, 0x62, 0xA8, 0x46, \ + 0x50, 0x5D, 0xC8, 0x2D, 0xB8, 0x54, 0x33, 0x8A, \ + 0xE4, 0x9F, 0x52, 0x35, 0xC9, 0x5B, 0x91, 0x17, \ + 0x8C, 0xCF, 0x2D, 0xD5, 0xCA, 0xCE, 0xF4, 0x03, \ + 0xEC, 0x9D, 0x18, 0x10, 0xC6, 0x27, 0x2B, 0x04, \ + 0x5B, 0x3B, 0x71, 0xF9, 0xDC, 0x6B, 0x80, 0xD6, \ + 0x3F, 0xDD, 0x4A, 0x8E, 0x9A, 0xDB, 0x1E, 0x69, \ + 0x62, 0xA6, 0x95, 0x26, 0xD4, 0x31, 0x61, 0xC1, \ + 0xA4, 0x1D, 0x57, 0x0D, 0x79, 0x38, 0xDA, 0xD4, \ + 0xA4, 0x0E, 0x32, 0x9C, 0xCF, 0xF4, 0x6A, 0xAA, \ + 0x36, 0xAD, 0x00, 0x4C, 0xF6, 0x00, 0xC8, 0x38, \ + 0x1E, 0x42, 0x5A, 0x31, 0xD9, 0x51, 0xAE, 0x64, \ + 0xFD, 0xB2, 0x3F, 0xCE, 0xC9, 0x50, 0x9D, 0x43, \ + 0x68, 0x7F, 0xEB, 0x69, 0xED, 0xD1, 0xCC, 0x5E, \ + 0x0B, 0x8C, 0xC3, 0xBD, 0xF6, 0x4B, 0x10, 0xEF, \ + 0x86, 0xB6, 0x31, 0x42, 0xA3, 0xAB, 0x88, 0x29, \ + 0x55, 0x5B, 0x2F, 0x74, 0x7C, 0x93, 0x26, 0x65, \ + 0xCB, 0x2C, 0x0F, 0x1C, 0xC0, 0x1B, 0xD7, 0x02, \ + 0x29, 0x38, 0x88, 0x39, 0xD2, 0xAF, 0x05, 0xE4, \ + 0x54, 0x50, 0x4A, 0xC7, 0x8B, 0x75, 0x82, 0x82, \ + 0x28, 0x46, 0xC0, 0xBA, 0x35, 0xC3, 0x5F, 0x5C, \ + 0x59, 0x16, 0x0C, 0xC0, 0x46, 0xFD, 0x82, 0x51, \ + 0x54, 0x1F, 0xC6, 0x8C, 0x9C, 0x86, 0xB0, 0x22, \ + 0xBB, 0x70, 0x99, 0x87, 0x6A, 0x46, 0x0E, 0x74, \ + 0x51, 0xA8, 0xA9, 0x31, 0x09, 0x70, 0x3F, 0xEE, \ + 0x1C, 0x21, 0x7E, 0x6C, 0x38, 0x26, 0xE5, 0x2C, \ + 0x51, 0xAA, 0x69, 0x1E, 0x0E, 0x42, 0x3C, 0xFC, \ + 0x99, 0xE9, 0xE3, 0x16, 0x50, 0xC1, 0x21, 0x7B, \ + 0x62, 0x48, 0x16, 0xCD, 0xAD, 0x9A, 0x95, 0xF9, \ + 0xD5, 0xB8, 0x01, 0x94, 0x88, 0xD9, 0xC0, 0xA0, \ + 0xA1, 0xFE, 0x30, 0x75, 0xA5, 0x77, 0xE2, 0x31, \ + 0x83, 0xF8, 0x1D, 0x4A, 0x3F, 0x2F, 0xA4, 0x57, \ + 0x1E, 0xFC, 0x8C, 0xE0, 0xBA, 0x8A, 0x4F, 0xE8, \ + 0xB6, 0x85, 0x5D, 0xFE, 0x72, 0xB0, 0xA6, 0x6E, \ + 0xDE, 0xD2, 0xFB, 0xAB, 0xFB, 0xE5, 0x8A, 0x30, \ + 0xFA, 0xFA, 0xBE, 0x1C, 0x5D, 0x71, 0xA8, 0x7E, \ + 0x2F, 0x74, 0x1E, 0xF8, 0xC1, 0xFE, 0x86, 0xFE, \ + 0xA6, 0xBB, 0xFD, 0xE5, 0x30, 0x67, 0x7F, 0x0D, \ + 0x97, 0xD1, 0x1D, 0x49, 0xF7, 0xA8, 0x44, 0x3D, \ + 0x08, 0x22, 0xE5, 0x06, 0xA9, 0xF4, 0x61, 0x4E, \ + 0x01, 0x1E, 0x2A, 0x94, 0x83, 0x8F, 0xF8, 0x8C, \ + 0xD6, 0x8C, 0x8B, 0xB7, 0xC5, 0xC6, 0x42, 0x4C, \ + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF } + +#define MBEDTLS_DHM_RFC7919_FFDHE8192_G_BIN { 0x02 } + +#endif /* dhm.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdh.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdh.h new file mode 100644 index 00000000..3948d7c9 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdh.h @@ -0,0 +1,448 @@ +/** + * \file ecdh.h + * + * \brief This file contains ECDH definitions and functions. + * + * The Elliptic Curve Diffie-Hellman (ECDH) protocol is an anonymous + * key agreement protocol allowing two parties to establish a shared + * secret over an insecure channel. Each party must have an + * elliptic-curve public–private key pair. + * + * For more information, see NIST SP 800-56A Rev. 2: Recommendation for + * Pair-Wise Key Establishment Schemes Using Discrete Logarithm + * Cryptography. + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_ECDH_H +#define MBEDTLS_ECDH_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/ecp.h" + +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) +#undef MBEDTLS_ECDH_LEGACY_CONTEXT +#include "everest/everest.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Defines the source of the imported EC key. + */ +typedef enum +{ + MBEDTLS_ECDH_OURS, /**< Our key. */ + MBEDTLS_ECDH_THEIRS, /**< The key of the peer. */ +} mbedtls_ecdh_side; + +#if !defined(MBEDTLS_ECDH_LEGACY_CONTEXT) +/** + * Defines the ECDH implementation used. + * + * Later versions of the library may add new variants, therefore users should + * not make any assumptions about them. + */ +typedef enum +{ + MBEDTLS_ECDH_VARIANT_NONE = 0, /*!< Implementation not defined. */ + MBEDTLS_ECDH_VARIANT_MBEDTLS_2_0,/*!< The default Mbed TLS implementation */ +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + MBEDTLS_ECDH_VARIANT_EVEREST /*!< Everest implementation */ +#endif +} mbedtls_ecdh_variant; + +/** + * The context used by the default ECDH implementation. + * + * Later versions might change the structure of this context, therefore users + * should not make any assumptions about the structure of + * mbedtls_ecdh_context_mbed. + */ +typedef struct mbedtls_ecdh_context_mbed +{ + mbedtls_ecp_group grp; /*!< The elliptic curve used. */ + mbedtls_mpi d; /*!< The private key. */ + mbedtls_ecp_point Q; /*!< The public key. */ + mbedtls_ecp_point Qp; /*!< The value of the public key of the peer. */ + mbedtls_mpi z; /*!< The shared secret. */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + mbedtls_ecp_restart_ctx rs; /*!< The restart context for EC computations. */ +#endif +} mbedtls_ecdh_context_mbed; +#endif + +/** + * + * \warning Performing multiple operations concurrently on the same + * ECDSA context is not supported; objects of this type + * should not be shared between multiple threads. + * \brief The ECDH context structure. + */ +typedef struct mbedtls_ecdh_context +{ +#if defined(MBEDTLS_ECDH_LEGACY_CONTEXT) + mbedtls_ecp_group grp; /*!< The elliptic curve used. */ + mbedtls_mpi d; /*!< The private key. */ + mbedtls_ecp_point Q; /*!< The public key. */ + mbedtls_ecp_point Qp; /*!< The value of the public key of the peer. */ + mbedtls_mpi z; /*!< The shared secret. */ + int point_format; /*!< The format of point export in TLS messages. */ + mbedtls_ecp_point Vi; /*!< The blinding value. */ + mbedtls_ecp_point Vf; /*!< The unblinding value. */ + mbedtls_mpi _d; /*!< The previous \p d. */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + int restart_enabled; /*!< The flag for restartable mode. */ + mbedtls_ecp_restart_ctx rs; /*!< The restart context for EC computations. */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ +#else + uint8_t point_format; /*!< The format of point export in TLS messages + as defined in RFC 4492. */ + mbedtls_ecp_group_id grp_id;/*!< The elliptic curve used. */ + mbedtls_ecdh_variant var; /*!< The ECDH implementation/structure used. */ + union + { + mbedtls_ecdh_context_mbed mbed_ecdh; +#if defined(MBEDTLS_ECDH_VARIANT_EVEREST_ENABLED) + mbedtls_ecdh_context_everest everest_ecdh; +#endif + } ctx; /*!< Implementation-specific context. The + context in use is specified by the \c var + field. */ +#if defined(MBEDTLS_ECP_RESTARTABLE) + uint8_t restart_enabled; /*!< The flag for restartable mode. Functions of + an alternative implementation not supporting + restartable mode must return + MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED error + if this flag is set. */ +#endif /* MBEDTLS_ECP_RESTARTABLE */ +#endif /* MBEDTLS_ECDH_LEGACY_CONTEXT */ +} +mbedtls_ecdh_context; + +/** + * \brief Check whether a given group can be used for ECDH. + * + * \param gid The ECP group ID to check. + * + * \return \c 1 if the group can be used, \c 0 otherwise + */ +int mbedtls_ecdh_can_do( mbedtls_ecp_group_id gid ); + +/** + * \brief This function generates an ECDH keypair on an elliptic + * curve. + * + * This function performs the first of two core computations + * implemented during the ECDH key exchange. The second core + * computation is performed by mbedtls_ecdh_compute_shared(). + * + * \see ecp.h + * + * \param grp The ECP group to use. This must be initialized and have + * domain parameters loaded, for example through + * mbedtls_ecp_load() or mbedtls_ecp_tls_read_group(). + * \param d The destination MPI (private key). + * This must be initialized. + * \param Q The destination point (public key). + * This must be initialized. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL in case \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return Another \c MBEDTLS_ERR_ECP_XXX or + * \c MBEDTLS_MPI_XXX error code on failure. + */ +int mbedtls_ecdh_gen_public( mbedtls_ecp_group *grp, mbedtls_mpi *d, mbedtls_ecp_point *Q, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function computes the shared secret. + * + * This function performs the second of two core computations + * implemented during the ECDH key exchange. The first core + * computation is performed by mbedtls_ecdh_gen_public(). + * + * \see ecp.h + * + * \note If \p f_rng is not NULL, it is used to implement + * countermeasures against side-channel attacks. + * For more information, see mbedtls_ecp_mul(). + * + * \param grp The ECP group to use. This must be initialized and have + * domain parameters loaded, for example through + * mbedtls_ecp_load() or mbedtls_ecp_tls_read_group(). + * \param z The destination MPI (shared secret). + * This must be initialized. + * \param Q The public key from another party. + * This must be initialized. + * \param d Our secret exponent (private key). + * This must be initialized. + * \param f_rng The RNG function. This may be \c NULL if randomization + * of intermediate results during the ECP computations is + * not needed (discouraged). See the documentation of + * mbedtls_ecp_mul() for more. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a + * context argument. + * + * \return \c 0 on success. + * \return Another \c MBEDTLS_ERR_ECP_XXX or + * \c MBEDTLS_MPI_XXX error code on failure. + */ +int mbedtls_ecdh_compute_shared( mbedtls_ecp_group *grp, mbedtls_mpi *z, + const mbedtls_ecp_point *Q, const mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function initializes an ECDH context. + * + * \param ctx The ECDH context to initialize. This must not be \c NULL. + */ +void mbedtls_ecdh_init( mbedtls_ecdh_context *ctx ); + +/** + * \brief This function sets up the ECDH context with the information + * given. + * + * This function should be called after mbedtls_ecdh_init() but + * before mbedtls_ecdh_make_params(). There is no need to call + * this function before mbedtls_ecdh_read_params(). + * + * This is the first function used by a TLS server for ECDHE + * ciphersuites. + * + * \param ctx The ECDH context to set up. This must be initialized. + * \param grp_id The group id of the group to set up the context for. + * + * \return \c 0 on success. + */ +int mbedtls_ecdh_setup( mbedtls_ecdh_context *ctx, + mbedtls_ecp_group_id grp_id ); + +/** + * \brief This function frees a context. + * + * \param ctx The context to free. This may be \c NULL, in which + * case this function does nothing. If it is not \c NULL, + * it must point to an initialized ECDH context. + */ +void mbedtls_ecdh_free( mbedtls_ecdh_context *ctx ); + +/** + * \brief This function generates an EC key pair and exports its + * in the format used in a TLS ServerKeyExchange handshake + * message. + * + * This is the second function used by a TLS server for ECDHE + * ciphersuites. (It is called after mbedtls_ecdh_setup().) + * + * \see ecp.h + * + * \param ctx The ECDH context to use. This must be initialized + * and bound to a group, for example via mbedtls_ecdh_setup(). + * \param olen The address at which to store the number of Bytes written. + * \param buf The destination buffer. This must be a writable buffer of + * length \p blen Bytes. + * \param blen The length of the destination buffer \p buf in Bytes. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL in case \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_ecdh_make_params( mbedtls_ecdh_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function parses the ECDHE parameters in a + * TLS ServerKeyExchange handshake message. + * + * \note In a TLS handshake, this is the how the client + * sets up its ECDHE context from the server's public + * ECDHE key material. + * + * \see ecp.h + * + * \param ctx The ECDHE context to use. This must be initialized. + * \param buf On input, \c *buf must be the start of the input buffer. + * On output, \c *buf is updated to point to the end of the + * data that has been read. On success, this is the first byte + * past the end of the ServerKeyExchange parameters. + * On error, this is the point at which an error has been + * detected, which is usually not useful except to debug + * failures. + * \param end The end of the input buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_ecdh_read_params( mbedtls_ecdh_context *ctx, + const unsigned char **buf, + const unsigned char *end ); + +/** + * \brief This function sets up an ECDH context from an EC key. + * + * It is used by clients and servers in place of the + * ServerKeyEchange for static ECDH, and imports ECDH + * parameters from the EC key information of a certificate. + * + * \see ecp.h + * + * \param ctx The ECDH context to set up. This must be initialized. + * \param key The EC key to use. This must be initialized. + * \param side Defines the source of the key. Possible values are: + * - #MBEDTLS_ECDH_OURS: The key is ours. + * - #MBEDTLS_ECDH_THEIRS: The key is that of the peer. + * + * \return \c 0 on success. + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. + * + */ +int mbedtls_ecdh_get_params( mbedtls_ecdh_context *ctx, + const mbedtls_ecp_keypair *key, + mbedtls_ecdh_side side ); + +/** + * \brief This function generates a public key and exports it + * as a TLS ClientKeyExchange payload. + * + * This is the second function used by a TLS client for ECDH(E) + * ciphersuites. + * + * \see ecp.h + * + * \param ctx The ECDH context to use. This must be initialized + * and bound to a group, the latter usually by + * mbedtls_ecdh_read_params(). + * \param olen The address at which to store the number of Bytes written. + * This must not be \c NULL. + * \param buf The destination buffer. This must be a writable buffer + * of length \p blen Bytes. + * \param blen The size of the destination buffer \p buf in Bytes. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL in case \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_ecdh_make_public( mbedtls_ecdh_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function parses and processes the ECDHE payload of a + * TLS ClientKeyExchange message. + * + * This is the third function used by a TLS server for ECDH(E) + * ciphersuites. (It is called after mbedtls_ecdh_setup() and + * mbedtls_ecdh_make_params().) + * + * \see ecp.h + * + * \param ctx The ECDH context to use. This must be initialized + * and bound to a group, for example via mbedtls_ecdh_setup(). + * \param buf The pointer to the ClientKeyExchange payload. This must + * be a readable buffer of length \p blen Bytes. + * \param blen The length of the input buffer \p buf in Bytes. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_ecdh_read_public( mbedtls_ecdh_context *ctx, + const unsigned char *buf, size_t blen ); + +/** + * \brief This function derives and exports the shared secret. + * + * This is the last function used by both TLS client + * and servers. + * + * \note If \p f_rng is not NULL, it is used to implement + * countermeasures against side-channel attacks. + * For more information, see mbedtls_ecp_mul(). + * + * \see ecp.h + + * \param ctx The ECDH context to use. This must be initialized + * and have its own private key generated and the peer's + * public key imported. + * \param olen The address at which to store the total number of + * Bytes written on success. This must not be \c NULL. + * \param buf The buffer to write the generated shared key to. This + * must be a writable buffer of size \p blen Bytes. + * \param blen The length of the destination buffer \p buf in Bytes. + * \param f_rng The RNG function, for blinding purposes. This may + * b \c NULL if blinding isn't needed. + * \param p_rng The RNG context. This may be \c NULL if \p f_rng + * doesn't need a context argument. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX error code on failure. + */ +int mbedtls_ecdh_calc_secret( mbedtls_ecdh_context *ctx, size_t *olen, + unsigned char *buf, size_t blen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief This function enables restartable EC computations for this + * context. (Default: disabled.) + * + * \see \c mbedtls_ecp_set_max_ops() + * + * \note It is not possible to safely disable restartable + * computations once enabled, except by free-ing the context, + * which cancels possible in-progress operations. + * + * \param ctx The ECDH context to use. This must be initialized. + */ +void mbedtls_ecdh_enable_restart( mbedtls_ecdh_context *ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + +#ifdef __cplusplus +} +#endif + +#endif /* ecdh.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdsa.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdsa.h new file mode 100644 index 00000000..b009e734 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecdsa.h @@ -0,0 +1,628 @@ +/** + * \file ecdsa.h + * + * \brief This file contains ECDSA definitions and functions. + * + * The Elliptic Curve Digital Signature Algorithm (ECDSA) is defined in + * Standards for Efficient Cryptography Group (SECG): + * SEC1 Elliptic Curve Cryptography. + * The use of ECDSA for TLS is defined in RFC-4492: Elliptic Curve + * Cryptography (ECC) Cipher Suites for Transport Layer Security (TLS). + * + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_ECDSA_H +#define MBEDTLS_ECDSA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/ecp.h" +#include "mbedtls/md.h" + +/** + * \brief Maximum ECDSA signature size for a given curve bit size + * + * \param bits Curve size in bits + * \return Maximum signature size in bytes + * + * \note This macro returns a compile-time constant if its argument + * is one. It may evaluate its argument multiple times. + */ +/* + * Ecdsa-Sig-Value ::= SEQUENCE { + * r INTEGER, + * s INTEGER + * } + * + * For each of r and s, the value (V) may include an extra initial "0" bit. + */ +#define MBEDTLS_ECDSA_MAX_SIG_LEN( bits ) \ + ( /*T,L of SEQUENCE*/ ( ( bits ) >= 61 * 8 ? 3 : 2 ) + \ + /*T,L of r,s*/ 2 * ( ( ( bits ) >= 127 * 8 ? 3 : 2 ) + \ + /*V of r,s*/ ( ( bits ) + 8 ) / 8 ) ) + +/** The maximal size of an ECDSA signature in Bytes. */ +#define MBEDTLS_ECDSA_MAX_LEN MBEDTLS_ECDSA_MAX_SIG_LEN( MBEDTLS_ECP_MAX_BITS ) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The ECDSA context structure. + * + * \warning Performing multiple operations concurrently on the same + * ECDSA context is not supported; objects of this type + * should not be shared between multiple threads. + */ +typedef mbedtls_ecp_keypair mbedtls_ecdsa_context; + +#if defined(MBEDTLS_ECP_RESTARTABLE) + +/** + * \brief Internal restart context for ecdsa_verify() + * + * \note Opaque struct, defined in ecdsa.c + */ +typedef struct mbedtls_ecdsa_restart_ver mbedtls_ecdsa_restart_ver_ctx; + +/** + * \brief Internal restart context for ecdsa_sign() + * + * \note Opaque struct, defined in ecdsa.c + */ +typedef struct mbedtls_ecdsa_restart_sig mbedtls_ecdsa_restart_sig_ctx; + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +/** + * \brief Internal restart context for ecdsa_sign_det() + * + * \note Opaque struct, defined in ecdsa.c + */ +typedef struct mbedtls_ecdsa_restart_det mbedtls_ecdsa_restart_det_ctx; +#endif + +/** + * \brief General context for resuming ECDSA operations + */ +typedef struct +{ + mbedtls_ecp_restart_ctx ecp; /*!< base context for ECP restart and + shared administrative info */ + mbedtls_ecdsa_restart_ver_ctx *ver; /*!< ecdsa_verify() sub-context */ + mbedtls_ecdsa_restart_sig_ctx *sig; /*!< ecdsa_sign() sub-context */ +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) + mbedtls_ecdsa_restart_det_ctx *det; /*!< ecdsa_sign_det() sub-context */ +#endif +} mbedtls_ecdsa_restart_ctx; + +#else /* MBEDTLS_ECP_RESTARTABLE */ + +/* Now we can declare functions that take a pointer to that */ +typedef void mbedtls_ecdsa_restart_ctx; + +#endif /* MBEDTLS_ECP_RESTARTABLE */ + +/** + * \brief This function checks whether a given group can be used + * for ECDSA. + * + * \param gid The ECP group ID to check. + * + * \return \c 1 if the group can be used, \c 0 otherwise + */ +int mbedtls_ecdsa_can_do( mbedtls_ecp_group_id gid ); + +/** + * \brief This function computes the ECDSA signature of a + * previously-hashed message. + * + * \note The deterministic version implemented in + * mbedtls_ecdsa_sign_det() is usually preferred. + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated + * as defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.3, step 5. + * + * \see ecp.h + * + * \param grp The context for the elliptic curve to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param r The MPI context in which to store the first part + * the signature. This must be initialized. + * \param s The MPI context in which to store the second part + * the signature. This must be initialized. + * \param d The private signing key. This must be initialized. + * \param buf The content to be signed. This is usually the hash of + * the original data to be signed. This must be a readable + * buffer of length \p blen Bytes. It may be \c NULL if + * \p blen is zero. + * \param blen The length of \p buf in Bytes. + * \param f_rng The RNG function. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context parameter. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX + * or \c MBEDTLS_MPI_XXX error code on failure. + */ +int mbedtls_ecdsa_sign( mbedtls_ecp_group *grp, mbedtls_mpi *r, mbedtls_mpi *s, + const mbedtls_mpi *d, const unsigned char *buf, size_t blen, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function computes the ECDSA signature of a + * previously-hashed message, deterministic version. + * + * For more information, see RFC-6979: Deterministic + * Usage of the Digital Signature Algorithm (DSA) and Elliptic + * Curve Digital Signature Algorithm (ECDSA). + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.3, step 5. + * + * \warning Since the output of the internal RNG is always the same for + * the same key and message, this limits the efficiency of + * blinding and leaks information through side channels. For + * secure behavior use mbedtls_ecdsa_sign_det_ext() instead. + * + * (Optimally the blinding is a random value that is different + * on every execution. In this case the blinding is still + * random from the attackers perspective, but is the same on + * each execution. This means that this blinding does not + * prevent attackers from recovering secrets by combining + * several measurement traces, but may prevent some attacks + * that exploit relationships between secret data.) + * + * \see ecp.h + * + * \param grp The context for the elliptic curve to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param r The MPI context in which to store the first part + * the signature. This must be initialized. + * \param s The MPI context in which to store the second part + * the signature. This must be initialized. + * \param d The private signing key. This must be initialized + * and setup, for example through mbedtls_ecp_gen_privkey(). + * \param buf The hashed content to be signed. This must be a readable + * buffer of length \p blen Bytes. It may be \c NULL if + * \p blen is zero. + * \param blen The length of \p buf in Bytes. + * \param md_alg The hash algorithm used to hash the original data. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX + * error code on failure. + */ +int mbedtls_ecdsa_sign_det( mbedtls_ecp_group *grp, mbedtls_mpi *r, + mbedtls_mpi *s, const mbedtls_mpi *d, + const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief This function computes the ECDSA signature of a + * previously-hashed message, deterministic version. + * + * For more information, see RFC-6979: Deterministic + * Usage of the Digital Signature Algorithm (DSA) and Elliptic + * Curve Digital Signature Algorithm (ECDSA). + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.3, step 5. + * + * \see ecp.h + * + * \param grp The context for the elliptic curve to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param r The MPI context in which to store the first part + * the signature. This must be initialized. + * \param s The MPI context in which to store the second part + * the signature. This must be initialized. + * \param d The private signing key. This must be initialized + * and setup, for example through mbedtls_ecp_gen_privkey(). + * \param buf The hashed content to be signed. This must be a readable + * buffer of length \p blen Bytes. It may be \c NULL if + * \p blen is zero. + * \param blen The length of \p buf in Bytes. + * \param md_alg The hash algorithm used to hash the original data. + * \param f_rng_blind The RNG function used for blinding. This must not be + * \c NULL. + * \param p_rng_blind The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context parameter. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX + * error code on failure. + */ +int mbedtls_ecdsa_sign_det_ext( mbedtls_ecp_group *grp, mbedtls_mpi *r, + mbedtls_mpi *s, const mbedtls_mpi *d, + const unsigned char *buf, size_t blen, + mbedtls_md_type_t md_alg, + int (*f_rng_blind)(void *, unsigned char *, size_t), + void *p_rng_blind ); +#endif /* MBEDTLS_ECDSA_DETERMINISTIC */ + +/** + * \brief This function verifies the ECDSA signature of a + * previously-hashed message. + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.4, step 3. + * + * \see ecp.h + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param buf The hashed content that was signed. This must be a readable + * buffer of length \p blen Bytes. It may be \c NULL if + * \p blen is zero. + * \param blen The length of \p buf in Bytes. + * \param Q The public key to use for verification. This must be + * initialized and setup. + * \param r The first integer of the signature. + * This must be initialized. + * \param s The second integer of the signature. + * This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if the signature + * is invalid. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX + * error code on failure for any other reason. + */ +int mbedtls_ecdsa_verify( mbedtls_ecp_group *grp, + const unsigned char *buf, size_t blen, + const mbedtls_ecp_point *Q, const mbedtls_mpi *r, + const mbedtls_mpi *s); + +/** + * \brief This function computes the ECDSA signature and writes it + * to a buffer, serialized as defined in RFC-4492: + * Elliptic Curve Cryptography (ECC) Cipher Suites for + * Transport Layer Security (TLS). + * + * \warning It is not thread-safe to use the same context in + * multiple threads. + * + * \note The deterministic version is used if + * #MBEDTLS_ECDSA_DETERMINISTIC is defined. For more + * information, see RFC-6979: Deterministic Usage + * of the Digital Signature Algorithm (DSA) and Elliptic + * Curve Digital Signature Algorithm (ECDSA). + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.3, step 5. + * + * \see ecp.h + * + * \param ctx The ECDSA context to use. This must be initialized + * and have a group and private key bound to it, for example + * via mbedtls_ecdsa_genkey() or mbedtls_ecdsa_from_keypair(). + * \param md_alg The message digest that was used to hash the message. + * \param hash The message hash to be signed. This must be a readable + * buffer of length \p blen Bytes. + * \param hlen The length of the hash \p hash in Bytes. + * \param sig The buffer to which to write the signature. This must be a + * writable buffer of length at least twice as large as the + * size of the curve used, plus 9. For example, 73 Bytes if + * a 256-bit curve is used. A buffer length of + * #MBEDTLS_ECDSA_MAX_LEN is always safe. + * \param slen The address at which to store the actual length of + * the signature written. Must not be \c NULL. + * \param f_rng The RNG function. This must not be \c NULL if + * #MBEDTLS_ECDSA_DETERMINISTIC is unset. Otherwise, + * it is used only for blinding and may be set to \c NULL, but + * doing so is DEPRECATED. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't use a context. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX, \c MBEDTLS_ERR_MPI_XXX or + * \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_ecdsa_write_signature( mbedtls_ecdsa_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function computes the ECDSA signature and writes it + * to a buffer, in a restartable way. + * + * \see \c mbedtls_ecdsa_write_signature() + * + * \note This function is like \c mbedtls_ecdsa_write_signature() + * but it can return early and restart according to the limit + * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param ctx The ECDSA context to use. This must be initialized + * and have a group and private key bound to it, for example + * via mbedtls_ecdsa_genkey() or mbedtls_ecdsa_from_keypair(). + * \param md_alg The message digest that was used to hash the message. + * \param hash The message hash to be signed. This must be a readable + * buffer of length \p blen Bytes. + * \param hlen The length of the hash \p hash in Bytes. + * \param sig The buffer to which to write the signature. This must be a + * writable buffer of length at least twice as large as the + * size of the curve used, plus 9. For example, 73 Bytes if + * a 256-bit curve is used. A buffer length of + * #MBEDTLS_ECDSA_MAX_LEN is always safe. + * \param slen The address at which to store the actual length of + * the signature written. Must not be \c NULL. + * \param f_rng The RNG function. This must not be \c NULL if + * #MBEDTLS_ECDSA_DETERMINISTIC is unset. Otherwise, + * it is unused and may be set to \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't use a context. + * \param rs_ctx The restart context to use. This may be \c NULL to disable + * restarting. If it is not \c NULL, it must point to an + * initialized restart context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX, \c MBEDTLS_ERR_MPI_XXX or + * \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_ecdsa_write_signature_restartable( mbedtls_ecdsa_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + mbedtls_ecdsa_restart_ctx *rs_ctx ); + +#if defined(MBEDTLS_ECDSA_DETERMINISTIC) +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function computes an ECDSA signature and writes + * it to a buffer, serialized as defined in RFC-4492: + * Elliptic Curve Cryptography (ECC) Cipher Suites for + * Transport Layer Security (TLS). + * + * The deterministic version is defined in RFC-6979: + * Deterministic Usage of the Digital Signature Algorithm (DSA) + * and Elliptic Curve Digital Signature Algorithm (ECDSA). + * + * \warning It is not thread-safe to use the same context in + * multiple threads. + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.3, step 5. + * + * \see ecp.h + * + * \deprecated Superseded by mbedtls_ecdsa_write_signature() in + * Mbed TLS version 2.0 and later. + * + * \param ctx The ECDSA context to use. This must be initialized + * and have a group and private key bound to it, for example + * via mbedtls_ecdsa_genkey() or mbedtls_ecdsa_from_keypair(). + * \param hash The message hash to be signed. This must be a readable + * buffer of length \p blen Bytes. + * \param hlen The length of the hash \p hash in Bytes. + * \param sig The buffer to which to write the signature. This must be a + * writable buffer of length at least twice as large as the + * size of the curve used, plus 9. For example, 73 Bytes if + * a 256-bit curve is used. A buffer length of + * #MBEDTLS_ECDSA_MAX_LEN is always safe. + * \param slen The address at which to store the actual length of + * the signature written. Must not be \c NULL. + * \param md_alg The message digest that was used to hash the message. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX, \c MBEDTLS_ERR_MPI_XXX or + * \c MBEDTLS_ERR_ASN1_XXX error code on failure. + */ +int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + unsigned char *sig, size_t *slen, + mbedtls_md_type_t md_alg ) MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ +#endif /* MBEDTLS_ECDSA_DETERMINISTIC */ + +/** + * \brief This function reads and verifies an ECDSA signature. + * + * \note If the bitlength of the message hash is larger than the + * bitlength of the group order, then the hash is truncated as + * defined in Standards for Efficient Cryptography Group + * (SECG): SEC1 Elliptic Curve Cryptography, section + * 4.1.4, step 3. + * + * \see ecp.h + * + * \param ctx The ECDSA context to use. This must be initialized + * and have a group and public key bound to it. + * \param hash The message hash that was signed. This must be a readable + * buffer of length \p size Bytes. + * \param hlen The size of the hash \p hash. + * \param sig The signature to read and verify. This must be a readable + * buffer of length \p slen Bytes. + * \param slen The size of \p sig in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid. + * \return #MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH if there is a valid + * signature in \p sig, but its length is less than \p siglen. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_ERR_MPI_XXX + * error code on failure for any other reason. + */ +int mbedtls_ecdsa_read_signature( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + const unsigned char *sig, size_t slen ); + +/** + * \brief This function reads and verifies an ECDSA signature, + * in a restartable way. + * + * \see \c mbedtls_ecdsa_read_signature() + * + * \note This function is like \c mbedtls_ecdsa_read_signature() + * but it can return early and restart according to the limit + * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param ctx The ECDSA context to use. This must be initialized + * and have a group and public key bound to it. + * \param hash The message hash that was signed. This must be a readable + * buffer of length \p size Bytes. + * \param hlen The size of the hash \p hash. + * \param sig The signature to read and verify. This must be a readable + * buffer of length \p slen Bytes. + * \param slen The size of \p sig in Bytes. + * \param rs_ctx The restart context to use. This may be \c NULL to disable + * restarting. If it is not \c NULL, it must point to an + * initialized restart context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid. + * \return #MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH if there is a valid + * signature in \p sig, but its length is less than \p siglen. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_ERR_MPI_XXX + * error code on failure for any other reason. + */ +int mbedtls_ecdsa_read_signature_restartable( mbedtls_ecdsa_context *ctx, + const unsigned char *hash, size_t hlen, + const unsigned char *sig, size_t slen, + mbedtls_ecdsa_restart_ctx *rs_ctx ); + +/** + * \brief This function generates an ECDSA keypair on the given curve. + * + * \see ecp.h + * + * \param ctx The ECDSA context to store the keypair in. + * This must be initialized. + * \param gid The elliptic curve to use. One of the various + * \c MBEDTLS_ECP_DP_XXX macros depending on configuration. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX code on failure. + */ +int mbedtls_ecdsa_genkey( mbedtls_ecdsa_context *ctx, mbedtls_ecp_group_id gid, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +/** + * \brief This function sets up an ECDSA context from an EC key pair. + * + * \see ecp.h + * + * \param ctx The ECDSA context to setup. This must be initialized. + * \param key The EC key to use. This must be initialized and hold + * a private-public key pair or a public key. In the former + * case, the ECDSA context may be used for signature creation + * and verification after this call. In the latter case, it + * may be used for signature verification. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX code on failure. + */ +int mbedtls_ecdsa_from_keypair( mbedtls_ecdsa_context *ctx, + const mbedtls_ecp_keypair *key ); + +/** + * \brief This function initializes an ECDSA context. + * + * \param ctx The ECDSA context to initialize. + * This must not be \c NULL. + */ +void mbedtls_ecdsa_init( mbedtls_ecdsa_context *ctx ); + +/** + * \brief This function frees an ECDSA context. + * + * \param ctx The ECDSA context to free. This may be \c NULL, + * in which case this function does nothing. If it + * is not \c NULL, it must be initialized. + */ +void mbedtls_ecdsa_free( mbedtls_ecdsa_context *ctx ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Initialize a restart context. + * + * \param ctx The restart context to initialize. + * This must not be \c NULL. + */ +void mbedtls_ecdsa_restart_init( mbedtls_ecdsa_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context. + * + * \param ctx The restart context to free. This may be \c NULL, + * in which case this function does nothing. If it + * is not \c NULL, it must be initialized. + */ +void mbedtls_ecdsa_restart_free( mbedtls_ecdsa_restart_ctx *ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + +#ifdef __cplusplus +} +#endif + +#endif /* ecdsa.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecjpake.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecjpake.h new file mode 100644 index 00000000..97387c3b --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecjpake.h @@ -0,0 +1,277 @@ +/** + * \file ecjpake.h + * + * \brief Elliptic curve J-PAKE + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ECJPAKE_H +#define MBEDTLS_ECJPAKE_H + +/* + * J-PAKE is a password-authenticated key exchange that allows deriving a + * strong shared secret from a (potentially low entropy) pre-shared + * passphrase, with forward secrecy and mutual authentication. + * https://en.wikipedia.org/wiki/Password_Authenticated_Key_Exchange_by_Juggling + * + * This file implements the Elliptic Curve variant of J-PAKE, + * as defined in Chapter 7.4 of the Thread v1.0 Specification, + * available to members of the Thread Group http://threadgroup.org/ + * + * As the J-PAKE algorithm is inherently symmetric, so is our API. + * Each party needs to send its first round message, in any order, to the + * other party, then each sends its second round message, in any order. + * The payloads are serialized in a way suitable for use in TLS, but could + * also be use outside TLS. + */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/ecp.h" +#include "mbedtls/md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Roles in the EC J-PAKE exchange + */ +typedef enum { + MBEDTLS_ECJPAKE_CLIENT = 0, /**< Client */ + MBEDTLS_ECJPAKE_SERVER, /**< Server */ +} mbedtls_ecjpake_role; + +#if !defined(MBEDTLS_ECJPAKE_ALT) +/** + * EC J-PAKE context structure. + * + * J-PAKE is a symmetric protocol, except for the identifiers used in + * Zero-Knowledge Proofs, and the serialization of the second message + * (KeyExchange) as defined by the Thread spec. + * + * In order to benefit from this symmetry, we choose a different naming + * convetion from the Thread v1.0 spec. Correspondance is indicated in the + * description as a pair C: client name, S: server name + */ +typedef struct mbedtls_ecjpake_context +{ + const mbedtls_md_info_t *md_info; /**< Hash to use */ + mbedtls_ecp_group grp; /**< Elliptic curve */ + mbedtls_ecjpake_role role; /**< Are we client or server? */ + int point_format; /**< Format for point export */ + + mbedtls_ecp_point Xm1; /**< My public key 1 C: X1, S: X3 */ + mbedtls_ecp_point Xm2; /**< My public key 2 C: X2, S: X4 */ + mbedtls_ecp_point Xp1; /**< Peer public key 1 C: X3, S: X1 */ + mbedtls_ecp_point Xp2; /**< Peer public key 2 C: X4, S: X2 */ + mbedtls_ecp_point Xp; /**< Peer public key C: Xs, S: Xc */ + + mbedtls_mpi xm1; /**< My private key 1 C: x1, S: x3 */ + mbedtls_mpi xm2; /**< My private key 2 C: x2, S: x4 */ + + mbedtls_mpi s; /**< Pre-shared secret (passphrase) */ +} mbedtls_ecjpake_context; + +#else /* MBEDTLS_ECJPAKE_ALT */ +#include "ecjpake_alt.h" +#endif /* MBEDTLS_ECJPAKE_ALT */ + +/** + * \brief Initialize an ECJPAKE context. + * + * \param ctx The ECJPAKE context to initialize. + * This must not be \c NULL. + */ +void mbedtls_ecjpake_init( mbedtls_ecjpake_context *ctx ); + +/** + * \brief Set up an ECJPAKE context for use. + * + * \note Currently the only values for hash/curve allowed by the + * standard are #MBEDTLS_MD_SHA256/#MBEDTLS_ECP_DP_SECP256R1. + * + * \param ctx The ECJPAKE context to set up. This must be initialized. + * \param role The role of the caller. This must be either + * #MBEDTLS_ECJPAKE_CLIENT or #MBEDTLS_ECJPAKE_SERVER. + * \param hash The identifier of the hash function to use, + * for example #MBEDTLS_MD_SHA256. + * \param curve The identifier of the elliptic curve to use, + * for example #MBEDTLS_ECP_DP_SECP256R1. + * \param secret The pre-shared secret (passphrase). This must be + * a readable buffer of length \p len Bytes. It need + * only be valid for the duration of this call. + * \param len The length of the pre-shared secret \p secret. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_ecjpake_setup( mbedtls_ecjpake_context *ctx, + mbedtls_ecjpake_role role, + mbedtls_md_type_t hash, + mbedtls_ecp_group_id curve, + const unsigned char *secret, + size_t len ); + +/** + * \brief Check if an ECJPAKE context is ready for use. + * + * \param ctx The ECJPAKE context to check. This must be + * initialized. + * + * \return \c 0 if the context is ready for use. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA otherwise. + */ +int mbedtls_ecjpake_check( const mbedtls_ecjpake_context *ctx ); + +/** + * \brief Generate and write the first round message + * (TLS: contents of the Client/ServerHello extension, + * excluding extension type and length bytes). + * + * \param ctx The ECJPAKE context to use. This must be + * initialized and set up. + * \param buf The buffer to write the contents to. This must be a + * writable buffer of length \p len Bytes. + * \param len The length of \p buf in Bytes. + * \param olen The address at which to store the total number + * of Bytes written to \p buf. This must not be \c NULL. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. This + * may be \c NULL if \p f_rng doesn't use a context. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_ecjpake_write_round_one( mbedtls_ecjpake_context *ctx, + unsigned char *buf, size_t len, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Read and process the first round message + * (TLS: contents of the Client/ServerHello extension, + * excluding extension type and length bytes). + * + * \param ctx The ECJPAKE context to use. This must be initialized + * and set up. + * \param buf The buffer holding the first round message. This must + * be a readable buffer of length \p len Bytes. + * \param len The length in Bytes of \p buf. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_ecjpake_read_round_one( mbedtls_ecjpake_context *ctx, + const unsigned char *buf, + size_t len ); + +/** + * \brief Generate and write the second round message + * (TLS: contents of the Client/ServerKeyExchange). + * + * \param ctx The ECJPAKE context to use. This must be initialized, + * set up, and already have performed round one. + * \param buf The buffer to write the round two contents to. + * This must be a writable buffer of length \p len Bytes. + * \param len The size of \p buf in Bytes. + * \param olen The address at which to store the total number of Bytes + * written to \p buf. This must not be \c NULL. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. This + * may be \c NULL if \p f_rng doesn't use a context. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_ecjpake_write_round_two( mbedtls_ecjpake_context *ctx, + unsigned char *buf, size_t len, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Read and process the second round message + * (TLS: contents of the Client/ServerKeyExchange). + * + * \param ctx The ECJPAKE context to use. This must be initialized + * and set up and already have performed round one. + * \param buf The buffer holding the second round message. This must + * be a readable buffer of length \p len Bytes. + * \param len The length in Bytes of \p buf. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_ecjpake_read_round_two( mbedtls_ecjpake_context *ctx, + const unsigned char *buf, + size_t len ); + +/** + * \brief Derive the shared secret + * (TLS: Pre-Master Secret). + * + * \param ctx The ECJPAKE context to use. This must be initialized, + * set up and have performed both round one and two. + * \param buf The buffer to write the derived secret to. This must + * be a writable buffer of length \p len Bytes. + * \param len The length of \p buf in Bytes. + * \param olen The address at which to store the total number of Bytes + * written to \p buf. This must not be \c NULL. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. This + * may be \c NULL if \p f_rng doesn't use a context. + * + * \return \c 0 if successful. + * \return A negative error code on failure. + */ +int mbedtls_ecjpake_derive_secret( mbedtls_ecjpake_context *ctx, + unsigned char *buf, size_t len, size_t *olen, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This clears an ECJPAKE context and frees any + * embedded data structure. + * + * \param ctx The ECJPAKE context to free. This may be \c NULL, + * in which case this function does nothing. If it is not + * \c NULL, it must point to an initialized ECJPAKE context. + */ +void mbedtls_ecjpake_free( mbedtls_ecjpake_context *ctx ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_ecjpake_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + + +#endif /* ecjpake.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp.h new file mode 100644 index 00000000..4c05b4fd --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp.h @@ -0,0 +1,1185 @@ +/** + * \file ecp.h + * + * \brief This file provides an API for Elliptic Curves over GF(P) (ECP). + * + * The use of ECP in cryptography and TLS is defined in + * Standards for Efficient Cryptography Group (SECG): SEC1 + * Elliptic Curve Cryptography and + * RFC-4492: Elliptic Curve Cryptography (ECC) Cipher Suites + * for Transport Layer Security (TLS). + * + * RFC-2409: The Internet Key Exchange (IKE) defines ECP + * group types. + * + */ + +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_ECP_H +#define MBEDTLS_ECP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/bignum.h" + +/* + * ECP error codes + */ +#define MBEDTLS_ERR_ECP_BAD_INPUT_DATA -0x4F80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL -0x4F00 /**< The buffer is too small to write to. */ +#define MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE -0x4E80 /**< The requested feature is not available, for example, the requested curve is not supported. */ +#define MBEDTLS_ERR_ECP_VERIFY_FAILED -0x4E00 /**< The signature is not valid. */ +#define MBEDTLS_ERR_ECP_ALLOC_FAILED -0x4D80 /**< Memory allocation failed. */ +#define MBEDTLS_ERR_ECP_RANDOM_FAILED -0x4D00 /**< Generation of random value, such as ephemeral key, failed. */ +#define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */ +#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< The buffer contains a valid signature followed by more data. */ + +/* MBEDTLS_ERR_ECP_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_ECP_HW_ACCEL_FAILED -0x4B80 /**< The ECP hardware accelerator failed. */ + +#define MBEDTLS_ERR_ECP_IN_PROGRESS -0x4B00 /**< Operation in progress, call again with the same parameters to continue. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Domain-parameter identifiers: curve, subgroup, and generator. + * + * \note Only curves over prime fields are supported. + * + * \warning This library does not support validation of arbitrary domain + * parameters. Therefore, only standardized domain parameters from trusted + * sources should be used. See mbedtls_ecp_group_load(). + */ +typedef enum +{ + MBEDTLS_ECP_DP_NONE = 0, /*!< Curve not defined. */ + MBEDTLS_ECP_DP_SECP192R1, /*!< Domain parameters for the 192-bit curve defined by FIPS 186-4 and SEC1. */ + MBEDTLS_ECP_DP_SECP224R1, /*!< Domain parameters for the 224-bit curve defined by FIPS 186-4 and SEC1. */ + MBEDTLS_ECP_DP_SECP256R1, /*!< Domain parameters for the 256-bit curve defined by FIPS 186-4 and SEC1. */ + MBEDTLS_ECP_DP_SECP384R1, /*!< Domain parameters for the 384-bit curve defined by FIPS 186-4 and SEC1. */ + MBEDTLS_ECP_DP_SECP521R1, /*!< Domain parameters for the 521-bit curve defined by FIPS 186-4 and SEC1. */ + MBEDTLS_ECP_DP_BP256R1, /*!< Domain parameters for 256-bit Brainpool curve. */ + MBEDTLS_ECP_DP_BP384R1, /*!< Domain parameters for 384-bit Brainpool curve. */ + MBEDTLS_ECP_DP_BP512R1, /*!< Domain parameters for 512-bit Brainpool curve. */ + MBEDTLS_ECP_DP_CURVE25519, /*!< Domain parameters for Curve25519. */ + MBEDTLS_ECP_DP_SECP192K1, /*!< Domain parameters for 192-bit "Koblitz" curve. */ + MBEDTLS_ECP_DP_SECP224K1, /*!< Domain parameters for 224-bit "Koblitz" curve. */ + MBEDTLS_ECP_DP_SECP256K1, /*!< Domain parameters for 256-bit "Koblitz" curve. */ + MBEDTLS_ECP_DP_CURVE448, /*!< Domain parameters for Curve448. */ +} mbedtls_ecp_group_id; + +/** + * The number of supported curves, plus one for #MBEDTLS_ECP_DP_NONE. + * + * \note Montgomery curves are currently excluded. + */ +#define MBEDTLS_ECP_DP_MAX 12 + +/* + * Curve types + */ +typedef enum +{ + MBEDTLS_ECP_TYPE_NONE = 0, + MBEDTLS_ECP_TYPE_SHORT_WEIERSTRASS, /* y^2 = x^3 + a x + b */ + MBEDTLS_ECP_TYPE_MONTGOMERY, /* y^2 = x^3 + a x^2 + x */ +} mbedtls_ecp_curve_type; + +/** + * Curve information, for use by other modules. + */ +typedef struct mbedtls_ecp_curve_info +{ + mbedtls_ecp_group_id grp_id; /*!< An internal identifier. */ + uint16_t tls_id; /*!< The TLS NamedCurve identifier. */ + uint16_t bit_size; /*!< The curve size in bits. */ + const char *name; /*!< A human-friendly name. */ +} mbedtls_ecp_curve_info; + +/** + * \brief The ECP point structure, in Jacobian coordinates. + * + * \note All functions expect and return points satisfying + * the following condition: Z == 0 or + * Z == 1. Other values of \p Z are + * used only by internal functions. + * The point is zero, or "at infinity", if Z == 0. + * Otherwise, \p X and \p Y are its standard (affine) + * coordinates. + */ +typedef struct mbedtls_ecp_point +{ + mbedtls_mpi X; /*!< The X coordinate of the ECP point. */ + mbedtls_mpi Y; /*!< The Y coordinate of the ECP point. */ + mbedtls_mpi Z; /*!< The Z coordinate of the ECP point. */ +} +mbedtls_ecp_point; + +#if !defined(MBEDTLS_ECP_ALT) +/* + * default mbed TLS elliptic curve arithmetic implementation + * + * (in case MBEDTLS_ECP_ALT is defined then the developer has to provide an + * alternative implementation for the whole module and it will replace this + * one.) + */ + +/** + * \brief The ECP group structure. + * + * We consider two types of curve equations: + *
    • Short Weierstrass: y^2 = x^3 + A x + B mod P + * (SEC1 + RFC-4492)
    • + *
    • Montgomery: y^2 = x^3 + A x^2 + x mod P (Curve25519, + * Curve448)
    + * In both cases, the generator (\p G) for a prime-order subgroup is fixed. + * + * For Short Weierstrass, this subgroup is the whole curve, and its + * cardinality is denoted by \p N. Our code requires that \p N is an + * odd prime as mbedtls_ecp_mul() requires an odd number, and + * mbedtls_ecdsa_sign() requires that it is prime for blinding purposes. + * + * For Montgomery curves, we do not store \p A, but (A + 2) / 4, + * which is the quantity used in the formulas. Additionally, \p nbits is + * not the size of \p N but the required size for private keys. + * + * If \p modp is NULL, reduction modulo \p P is done using a generic algorithm. + * Otherwise, \p modp must point to a function that takes an \p mbedtls_mpi in the + * range of 0..2^(2*pbits)-1, and transforms it in-place to an integer + * which is congruent mod \p P to the given MPI, and is close enough to \p pbits + * in size, so that it may be efficiently brought in the 0..P-1 range by a few + * additions or subtractions. Therefore, it is only an approximative modular + * reduction. It must return 0 on success and non-zero on failure. + * + * \note Alternative implementations must keep the group IDs distinct. If + * two group structures have the same ID, then they must be + * identical. + * + */ +typedef struct mbedtls_ecp_group +{ + mbedtls_ecp_group_id id; /*!< An internal group identifier. */ + mbedtls_mpi P; /*!< The prime modulus of the base field. */ + mbedtls_mpi A; /*!< For Short Weierstrass: \p A in the equation. For + Montgomery curves: (A + 2) / 4. */ + mbedtls_mpi B; /*!< For Short Weierstrass: \p B in the equation. + For Montgomery curves: unused. */ + mbedtls_ecp_point G; /*!< The generator of the subgroup used. */ + mbedtls_mpi N; /*!< The order of \p G. */ + size_t pbits; /*!< The number of bits in \p P.*/ + size_t nbits; /*!< For Short Weierstrass: The number of bits in \p P. + For Montgomery curves: the number of bits in the + private keys. */ + unsigned int h; /*!< \internal 1 if the constants are static. */ + int (*modp)(mbedtls_mpi *); /*!< The function for fast pseudo-reduction + mod \p P (see above).*/ + int (*t_pre)(mbedtls_ecp_point *, void *); /*!< Unused. */ + int (*t_post)(mbedtls_ecp_point *, void *); /*!< Unused. */ + void *t_data; /*!< Unused. */ + mbedtls_ecp_point *T; /*!< Pre-computed points for ecp_mul_comb(). */ + size_t T_size; /*!< The number of pre-computed points. */ +} +mbedtls_ecp_group; + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h, or define them using the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_ECP_MAX_BITS) +/** + * The maximum size of the groups, that is, of \c N and \c P. + */ +#define MBEDTLS_ECP_MAX_BITS 521 /**< The maximum size of groups, in bits. */ +#endif + +#define MBEDTLS_ECP_MAX_BYTES ( ( MBEDTLS_ECP_MAX_BITS + 7 ) / 8 ) +#define MBEDTLS_ECP_MAX_PT_LEN ( 2 * MBEDTLS_ECP_MAX_BYTES + 1 ) + +#if !defined(MBEDTLS_ECP_WINDOW_SIZE) +/* + * Maximum "window" size used for point multiplication. + * Default: 6. + * Minimum value: 2. Maximum value: 7. + * + * Result is an array of at most ( 1 << ( MBEDTLS_ECP_WINDOW_SIZE - 1 ) ) + * points used for point multiplication. This value is directly tied to EC + * peak memory usage, so decreasing it by one should roughly cut memory usage + * by two (if large curves are in use). + * + * Reduction in size may reduce speed, but larger curves are impacted first. + * Sample performances (in ECDHE handshakes/s, with FIXED_POINT_OPTIM = 1): + * w-size: 6 5 4 3 2 + * 521 145 141 135 120 97 + * 384 214 209 198 177 146 + * 256 320 320 303 262 226 + * 224 475 475 453 398 342 + * 192 640 640 633 587 476 + */ +#define MBEDTLS_ECP_WINDOW_SIZE 6 /**< The maximum window size used. */ +#endif /* MBEDTLS_ECP_WINDOW_SIZE */ + +#if !defined(MBEDTLS_ECP_FIXED_POINT_OPTIM) +/* + * Trade memory for speed on fixed-point multiplication. + * + * This speeds up repeated multiplication of the generator (that is, the + * multiplication in ECDSA signatures, and half of the multiplications in + * ECDSA verification and ECDHE) by a factor roughly 3 to 4. + * + * The cost is increasing EC peak memory usage by a factor roughly 2. + * + * Change this value to 0 to reduce peak memory usage. + */ +#define MBEDTLS_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up. */ +#endif /* MBEDTLS_ECP_FIXED_POINT_OPTIM */ + +/* \} name SECTION: Module settings */ + +#else /* MBEDTLS_ECP_ALT */ +#include "ecp_alt.h" +#endif /* MBEDTLS_ECP_ALT */ + +#if defined(MBEDTLS_ECP_RESTARTABLE) + +/** + * \brief Internal restart context for multiplication + * + * \note Opaque struct + */ +typedef struct mbedtls_ecp_restart_mul mbedtls_ecp_restart_mul_ctx; + +/** + * \brief Internal restart context for ecp_muladd() + * + * \note Opaque struct + */ +typedef struct mbedtls_ecp_restart_muladd mbedtls_ecp_restart_muladd_ctx; + +/** + * \brief General context for resuming ECC operations + */ +typedef struct +{ + unsigned ops_done; /*!< current ops count */ + unsigned depth; /*!< call depth (0 = top-level) */ + mbedtls_ecp_restart_mul_ctx *rsm; /*!< ecp_mul_comb() sub-context */ + mbedtls_ecp_restart_muladd_ctx *ma; /*!< ecp_muladd() sub-context */ +} mbedtls_ecp_restart_ctx; + +/* + * Operation counts for restartable functions + */ +#define MBEDTLS_ECP_OPS_CHK 3 /*!< basic ops count for ecp_check_pubkey() */ +#define MBEDTLS_ECP_OPS_DBL 8 /*!< basic ops count for ecp_double_jac() */ +#define MBEDTLS_ECP_OPS_ADD 11 /*!< basic ops count for see ecp_add_mixed() */ +#define MBEDTLS_ECP_OPS_INV 120 /*!< empirical equivalent for mpi_mod_inv() */ + +/** + * \brief Internal; for restartable functions in other modules. + * Check and update basic ops budget. + * + * \param grp Group structure + * \param rs_ctx Restart context + * \param ops Number of basic ops to do + * + * \return \c 0 if doing \p ops basic ops is still allowed, + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS otherwise. + */ +int mbedtls_ecp_check_budget( const mbedtls_ecp_group *grp, + mbedtls_ecp_restart_ctx *rs_ctx, + unsigned ops ); + +/* Utility macro for checking and updating ops budget */ +#define MBEDTLS_ECP_BUDGET( ops ) \ + MBEDTLS_MPI_CHK( mbedtls_ecp_check_budget( grp, rs_ctx, \ + (unsigned) (ops) ) ); + +#else /* MBEDTLS_ECP_RESTARTABLE */ + +#define MBEDTLS_ECP_BUDGET( ops ) /* no-op; for compatibility */ + +/* We want to declare restartable versions of existing functions anyway */ +typedef void mbedtls_ecp_restart_ctx; + +#endif /* MBEDTLS_ECP_RESTARTABLE */ + +/** + * \brief The ECP key-pair structure. + * + * A generic key-pair that may be used for ECDSA and fixed ECDH, for example. + * + * \note Members are deliberately in the same order as in the + * ::mbedtls_ecdsa_context structure. + */ +typedef struct mbedtls_ecp_keypair +{ + mbedtls_ecp_group grp; /*!< Elliptic curve and base point */ + mbedtls_mpi d; /*!< our secret value */ + mbedtls_ecp_point Q; /*!< our public value */ +} +mbedtls_ecp_keypair; + +/* + * Point formats, from RFC 4492's enum ECPointFormat + */ +#define MBEDTLS_ECP_PF_UNCOMPRESSED 0 /**< Uncompressed point format. */ +#define MBEDTLS_ECP_PF_COMPRESSED 1 /**< Compressed point format. */ + +/* + * Some other constants from RFC 4492 + */ +#define MBEDTLS_ECP_TLS_NAMED_CURVE 3 /**< The named_curve of ECCurveType. */ + +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Set the maximum number of basic operations done in a row. + * + * If more operations are needed to complete a computation, + * #MBEDTLS_ERR_ECP_IN_PROGRESS will be returned by the + * function performing the computation. It is then the + * caller's responsibility to either call again with the same + * parameters until it returns 0 or an error code; or to free + * the restart context if the operation is to be aborted. + * + * It is strictly required that all input parameters and the + * restart context be the same on successive calls for the + * same operation, but output parameters need not be the + * same; they must not be used until the function finally + * returns 0. + * + * This only applies to functions whose documentation + * mentions they may return #MBEDTLS_ERR_ECP_IN_PROGRESS (or + * #MBEDTLS_ERR_SSL_CRYPTO_IN_PROGRESS for functions in the + * SSL module). For functions that accept a "restart context" + * argument, passing NULL disables restart and makes the + * function equivalent to the function with the same name + * with \c _restartable removed. For functions in the ECDH + * module, restart is disabled unless the function accepts + * an "ECDH context" argument and + * mbedtls_ecdh_enable_restart() was previously called on + * that context. For function in the SSL module, restart is + * only enabled for specific sides and key exchanges + * (currently only for clients and ECDHE-ECDSA). + * + * \param max_ops Maximum number of basic operations done in a row. + * Default: 0 (unlimited). + * Lower (non-zero) values mean ECC functions will block for + * a lesser maximum amount of time. + * + * \note A "basic operation" is defined as a rough equivalent of a + * multiplication in GF(p) for the NIST P-256 curve. + * As an indication, with default settings, a scalar + * multiplication (full run of \c mbedtls_ecp_mul()) is: + * - about 3300 basic operations for P-256 + * - about 9400 basic operations for P-384 + * + * \note Very low values are not always respected: sometimes + * functions need to block for a minimum number of + * operations, and will do so even if max_ops is set to a + * lower value. That minimum depends on the curve size, and + * can be made lower by decreasing the value of + * \c MBEDTLS_ECP_WINDOW_SIZE. As an indication, here is the + * lowest effective value for various curves and values of + * that parameter (w for short): + * w=6 w=5 w=4 w=3 w=2 + * P-256 208 208 160 136 124 + * P-384 682 416 320 272 248 + * P-521 1364 832 640 544 496 + * + * \note This setting is currently ignored by Curve25519. + */ +void mbedtls_ecp_set_max_ops( unsigned max_ops ); + +/** + * \brief Check if restart is enabled (max_ops != 0) + * + * \return \c 0 if \c max_ops == 0 (restart disabled) + * \return \c 1 otherwise (restart enabled) + */ +int mbedtls_ecp_restart_is_enabled( void ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + +/* + * Get the type of a curve + */ +mbedtls_ecp_curve_type mbedtls_ecp_get_type( const mbedtls_ecp_group *grp ); + +/** + * \brief This function retrieves the information defined in + * mbedtls_ecp_curve_info() for all supported curves in order + * of preference. + * + * \note This function returns information about all curves + * supported by the library. Some curves may not be + * supported for all algorithms. Call mbedtls_ecdh_can_do() + * or mbedtls_ecdsa_can_do() to check if a curve is + * supported for ECDH or ECDSA. + * + * \return A statically allocated array. The last entry is 0. + */ +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_list( void ); + +/** + * \brief This function retrieves the list of internal group + * identifiers of all supported curves in the order of + * preference. + * + * \note This function returns information about all curves + * supported by the library. Some curves may not be + * supported for all algorithms. Call mbedtls_ecdh_can_do() + * or mbedtls_ecdsa_can_do() to check if a curve is + * supported for ECDH or ECDSA. + * + * \return A statically allocated array, + * terminated with MBEDTLS_ECP_DP_NONE. + */ +const mbedtls_ecp_group_id *mbedtls_ecp_grp_id_list( void ); + +/** + * \brief This function retrieves curve information from an internal + * group identifier. + * + * \param grp_id An \c MBEDTLS_ECP_DP_XXX value. + * + * \return The associated curve information on success. + * \return NULL on failure. + */ +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_grp_id( mbedtls_ecp_group_id grp_id ); + +/** + * \brief This function retrieves curve information from a TLS + * NamedCurve value. + * + * \param tls_id An \c MBEDTLS_ECP_DP_XXX value. + * + * \return The associated curve information on success. + * \return NULL on failure. + */ +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_tls_id( uint16_t tls_id ); + +/** + * \brief This function retrieves curve information from a + * human-readable name. + * + * \param name The human-readable name. + * + * \return The associated curve information on success. + * \return NULL on failure. + */ +const mbedtls_ecp_curve_info *mbedtls_ecp_curve_info_from_name( const char *name ); + +/** + * \brief This function initializes a point as zero. + * + * \param pt The point to initialize. + */ +void mbedtls_ecp_point_init( mbedtls_ecp_point *pt ); + +/** + * \brief This function initializes an ECP group context + * without loading any domain parameters. + * + * \note After this function is called, domain parameters + * for various ECP groups can be loaded through the + * mbedtls_ecp_group_load() or mbedtls_ecp_tls_read_group() + * functions. + */ +void mbedtls_ecp_group_init( mbedtls_ecp_group *grp ); + +/** + * \brief This function initializes a key pair as an invalid one. + * + * \param key The key pair to initialize. + */ +void mbedtls_ecp_keypair_init( mbedtls_ecp_keypair *key ); + +/** + * \brief This function frees the components of a point. + * + * \param pt The point to free. + */ +void mbedtls_ecp_point_free( mbedtls_ecp_point *pt ); + +/** + * \brief This function frees the components of an ECP group. + * + * \param grp The group to free. This may be \c NULL, in which + * case this function returns immediately. If it is not + * \c NULL, it must point to an initialized ECP group. + */ +void mbedtls_ecp_group_free( mbedtls_ecp_group *grp ); + +/** + * \brief This function frees the components of a key pair. + * + * \param key The key pair to free. This may be \c NULL, in which + * case this function returns immediately. If it is not + * \c NULL, it must point to an initialized ECP key pair. + */ +void mbedtls_ecp_keypair_free( mbedtls_ecp_keypair *key ); + +#if defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Initialize a restart context. + * + * \param ctx The restart context to initialize. This must + * not be \c NULL. + */ +void mbedtls_ecp_restart_init( mbedtls_ecp_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context. + * + * \param ctx The restart context to free. This may be \c NULL, in which + * case this function returns immediately. If it is not + * \c NULL, it must point to an initialized restart context. + */ +void mbedtls_ecp_restart_free( mbedtls_ecp_restart_ctx *ctx ); +#endif /* MBEDTLS_ECP_RESTARTABLE */ + +/** + * \brief This function copies the contents of point \p Q into + * point \p P. + * + * \param P The destination point. This must be initialized. + * \param Q The source point. This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return Another negative error code for other kinds of failure. + */ +int mbedtls_ecp_copy( mbedtls_ecp_point *P, const mbedtls_ecp_point *Q ); + +/** + * \brief This function copies the contents of group \p src into + * group \p dst. + * + * \param dst The destination group. This must be initialized. + * \param src The source group. This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_group_copy( mbedtls_ecp_group *dst, + const mbedtls_ecp_group *src ); + +/** + * \brief This function sets a point to the point at infinity. + * + * \param pt The point to set. This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_set_zero( mbedtls_ecp_point *pt ); + +/** + * \brief This function checks if a point is the point at infinity. + * + * \param pt The point to test. This must be initialized. + * + * \return \c 1 if the point is zero. + * \return \c 0 if the point is non-zero. + * \return A negative error code on failure. + */ +int mbedtls_ecp_is_zero( mbedtls_ecp_point *pt ); + +/** + * \brief This function compares two points. + * + * \note This assumes that the points are normalized. Otherwise, + * they may compare as "not equal" even if they are. + * + * \param P The first point to compare. This must be initialized. + * \param Q The second point to compare. This must be initialized. + * + * \return \c 0 if the points are equal. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if the points are not equal. + */ +int mbedtls_ecp_point_cmp( const mbedtls_ecp_point *P, + const mbedtls_ecp_point *Q ); + +/** + * \brief This function imports a non-zero point from two ASCII + * strings. + * + * \param P The destination point. This must be initialized. + * \param radix The numeric base of the input. + * \param x The first affine coordinate, as a null-terminated string. + * \param y The second affine coordinate, as a null-terminated string. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_MPI_XXX error code on failure. + */ +int mbedtls_ecp_point_read_string( mbedtls_ecp_point *P, int radix, + const char *x, const char *y ); + +/** + * \brief This function exports a point into unsigned binary data. + * + * \param grp The group to which the point should belong. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param P The point to export. This must be initialized. + * \param format The point format. This must be either + * #MBEDTLS_ECP_PF_COMPRESSED or #MBEDTLS_ECP_PF_UNCOMPRESSED. + * (For groups without these formats, this parameter is + * ignored. But it still has to be either of the above + * values.) + * \param olen The address at which to store the length of + * the output in Bytes. This must not be \c NULL. + * \param buf The output buffer. This must be a writable buffer + * of length \p buflen Bytes. + * \param buflen The length of the output buffer \p buf in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL if the output buffer + * is too small to hold the point. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the point format + * or the export for the given group is not implemented. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_point_write_binary( const mbedtls_ecp_group *grp, + const mbedtls_ecp_point *P, + int format, size_t *olen, + unsigned char *buf, size_t buflen ); + +/** + * \brief This function imports a point from unsigned binary data. + * + * \note This function does not check that the point actually + * belongs to the given group, see mbedtls_ecp_check_pubkey() + * for that. + * + * \param grp The group to which the point should belong. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param P The destination context to import the point to. + * This must be initialized. + * \param buf The input buffer. This must be a readable buffer + * of length \p ilen Bytes. + * \param ilen The length of the input buffer \p buf in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if the input is invalid. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the import for the + * given group is not implemented. + */ +int mbedtls_ecp_point_read_binary( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *P, + const unsigned char *buf, size_t ilen ); + +/** + * \brief This function imports a point from a TLS ECPoint record. + * + * \note On function return, \p *buf is updated to point immediately + * after the ECPoint record. + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param pt The destination point. + * \param buf The address of the pointer to the start of the input buffer. + * \param len The length of the buffer. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_MPI_XXX error code on initialization + * failure. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid. + */ +int mbedtls_ecp_tls_read_point( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *pt, + const unsigned char **buf, size_t len ); + +/** + * \brief This function exports a point as a TLS ECPoint record + * defined in RFC 4492, Section 5.4. + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param pt The point to be exported. This must be initialized. + * \param format The point format to use. This must be either + * #MBEDTLS_ECP_PF_COMPRESSED or #MBEDTLS_ECP_PF_UNCOMPRESSED. + * \param olen The address at which to store the length in Bytes + * of the data written. + * \param buf The target buffer. This must be a writable buffer of + * length \p blen Bytes. + * \param blen The length of the target buffer \p buf in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if the input is invalid. + * \return #MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL if the target buffer + * is too small to hold the exported point. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_tls_write_point( const mbedtls_ecp_group *grp, + const mbedtls_ecp_point *pt, + int format, size_t *olen, + unsigned char *buf, size_t blen ); + +/** + * \brief This function sets up an ECP group context + * from a standardized set of domain parameters. + * + * \note The index should be a value of the NamedCurve enum, + * as defined in RFC-4492: Elliptic Curve Cryptography + * (ECC) Cipher Suites for Transport Layer Security (TLS), + * usually in the form of an \c MBEDTLS_ECP_DP_XXX macro. + * + * \param grp The group context to setup. This must be initialized. + * \param id The identifier of the domain parameter set to load. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if \p id doesn't + * correspond to a known group. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_group_load( mbedtls_ecp_group *grp, mbedtls_ecp_group_id id ); + +/** + * \brief This function sets up an ECP group context from a TLS + * ECParameters record as defined in RFC 4492, Section 5.4. + * + * \note The read pointer \p buf is updated to point right after + * the ECParameters record on exit. + * + * \param grp The group context to setup. This must be initialized. + * \param buf The address of the pointer to the start of the input buffer. + * \param len The length of the input buffer \c *buf in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the group is not + * recognized. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_tls_read_group( mbedtls_ecp_group *grp, + const unsigned char **buf, size_t len ); + +/** + * \brief This function extracts an elliptic curve group ID from a + * TLS ECParameters record as defined in RFC 4492, Section 5.4. + * + * \note The read pointer \p buf is updated to point right after + * the ECParameters record on exit. + * + * \param grp The address at which to store the group id. + * This must not be \c NULL. + * \param buf The address of the pointer to the start of the input buffer. + * \param len The length of the input buffer \c *buf in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if input is invalid. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the group is not + * recognized. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_tls_read_group_id( mbedtls_ecp_group_id *grp, + const unsigned char **buf, + size_t len ); +/** + * \brief This function exports an elliptic curve as a TLS + * ECParameters record as defined in RFC 4492, Section 5.4. + * + * \param grp The ECP group to be exported. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param olen The address at which to store the number of Bytes written. + * This must not be \c NULL. + * \param buf The buffer to write to. This must be a writable buffer + * of length \p blen Bytes. + * \param blen The length of the output buffer \p buf in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL if the output + * buffer is too small to hold the exported group. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_tls_write_group( const mbedtls_ecp_group *grp, + size_t *olen, + unsigned char *buf, size_t blen ); + +/** + * \brief This function performs a scalar multiplication of a point + * by an integer: \p R = \p m * \p P. + * + * It is not thread-safe to use same group in multiple threads. + * + * \note To prevent timing attacks, this function + * executes the exact same sequence of base-field + * operations for any valid \p m. It avoids any if-branch or + * array index depending on the value of \p m. + * + * \note If \p f_rng is not NULL, it is used to randomize + * intermediate results to prevent potential timing attacks + * targeting these results. We recommend always providing + * a non-NULL \p f_rng. The overhead is negligible. + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param R The point in which to store the result of the calculation. + * This must be initialized. + * \param m The integer by which to multiply. This must be initialized. + * \param P The point to multiply. This must be initialized. + * \param f_rng The RNG function. This may be \c NULL if randomization + * of intermediate results isn't desired (discouraged). + * \param p_rng The RNG context to be passed to \p p_rng. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m is not a valid private + * key, or \p P is not a valid public key. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_mul( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +/** + * \brief This function performs multiplication of a point by + * an integer: \p R = \p m * \p P in a restartable way. + * + * \see mbedtls_ecp_mul() + * + * \note This function does the same as \c mbedtls_ecp_mul(), but + * it can return early and restart according to the limit set + * with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param R The point in which to store the result of the calculation. + * This must be initialized. + * \param m The integer by which to multiply. This must be initialized. + * \param P The point to multiply. This must be initialized. + * \param f_rng The RNG function. This may be \c NULL if randomization + * of intermediate results isn't desired (discouraged). + * \param p_rng The RNG context to be passed to \p p_rng. + * \param rs_ctx The restart context (NULL disables restart). + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m is not a valid private + * key, or \p P is not a valid public key. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_mul_restartable( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_ecp_restart_ctx *rs_ctx ); + +/** + * \brief This function performs multiplication and addition of two + * points by integers: \p R = \p m * \p P + \p n * \p Q + * + * It is not thread-safe to use same group in multiple threads. + * + * \note In contrast to mbedtls_ecp_mul(), this function does not + * guarantee a constant execution flow and timing. + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param R The point in which to store the result of the calculation. + * This must be initialized. + * \param m The integer by which to multiply \p P. + * This must be initialized. + * \param P The point to multiply by \p m. This must be initialized. + * \param n The integer by which to multiply \p Q. + * This must be initialized. + * \param Q The point to be multiplied by \p n. + * This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m or \p n are not + * valid private keys, or \p P or \p Q are not valid public + * keys. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_muladd( mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + const mbedtls_mpi *n, const mbedtls_ecp_point *Q ); + +/** + * \brief This function performs multiplication and addition of two + * points by integers: \p R = \p m * \p P + \p n * \p Q in a + * restartable way. + * + * \see \c mbedtls_ecp_muladd() + * + * \note This function works the same as \c mbedtls_ecp_muladd(), + * but it can return early and restart according to the limit + * set with \c mbedtls_ecp_set_max_ops() to reduce blocking. + * + * \param grp The ECP group to use. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param R The point in which to store the result of the calculation. + * This must be initialized. + * \param m The integer by which to multiply \p P. + * This must be initialized. + * \param P The point to multiply by \p m. This must be initialized. + * \param n The integer by which to multiply \p Q. + * This must be initialized. + * \param Q The point to be multiplied by \p n. + * This must be initialized. + * \param rs_ctx The restart context (NULL disables restart). + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if \p m or \p n are not + * valid private keys, or \p P or \p Q are not valid public + * keys. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory-allocation failure. + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_muladd_restartable( + mbedtls_ecp_group *grp, mbedtls_ecp_point *R, + const mbedtls_mpi *m, const mbedtls_ecp_point *P, + const mbedtls_mpi *n, const mbedtls_ecp_point *Q, + mbedtls_ecp_restart_ctx *rs_ctx ); + +/** + * \brief This function checks that a point is a valid public key + * on this curve. + * + * It only checks that the point is non-zero, has + * valid coordinates and lies on the curve. It does not verify + * that it is indeed a multiple of \p G. This additional + * check is computationally more expensive, is not required + * by standards, and should not be necessary if the group + * used has a small cofactor. In particular, it is useless for + * the NIST groups which all have a cofactor of 1. + * + * \note This function uses bare components rather than an + * ::mbedtls_ecp_keypair structure, to ease use with other + * structures, such as ::mbedtls_ecdh_context or + * ::mbedtls_ecdsa_context. + * + * \param grp The ECP group the point should belong to. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param pt The point to check. This must be initialized. + * + * \return \c 0 if the point is a valid public key. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if the point is not + * a valid public key for the given curve. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_check_pubkey( const mbedtls_ecp_group *grp, + const mbedtls_ecp_point *pt ); + +/** + * \brief This function checks that an \p mbedtls_mpi is a + * valid private key for this curve. + * + * \note This function uses bare components rather than an + * ::mbedtls_ecp_keypair structure to ease use with other + * structures, such as ::mbedtls_ecdh_context or + * ::mbedtls_ecdsa_context. + * + * \param grp The ECP group the private key should belong to. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param d The integer to check. This must be initialized. + * + * \return \c 0 if the point is a valid private key. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY if the point is not a valid + * private key for the given curve. + * \return Another negative error code on other kinds of failure. + */ +int mbedtls_ecp_check_privkey( const mbedtls_ecp_group *grp, + const mbedtls_mpi *d ); + +/** + * \brief This function generates a private key. + * + * \param grp The ECP group to generate a private key for. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param d The destination MPI (secret part). This must be initialized. + * \param f_rng The RNG function. This must not be \c NULL. + * \param p_rng The RNG parameter to be passed to \p f_rng. This may be + * \c NULL if \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX error code + * on failure. + */ +int mbedtls_ecp_gen_privkey( const mbedtls_ecp_group *grp, + mbedtls_mpi *d, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function generates a keypair with a configurable base + * point. + * + * \note This function uses bare components rather than an + * ::mbedtls_ecp_keypair structure to ease use with other + * structures, such as ::mbedtls_ecdh_context or + * ::mbedtls_ecdsa_context. + * + * \param grp The ECP group to generate a key pair for. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param G The base point to use. This must be initialized + * and belong to \p grp. It replaces the default base + * point \c grp->G used by mbedtls_ecp_gen_keypair(). + * \param d The destination MPI (secret part). + * This must be initialized. + * \param Q The destination point (public part). + * This must be initialized. + * \param f_rng The RNG function. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may + * be \c NULL if \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX error code + * on failure. + */ +int mbedtls_ecp_gen_keypair_base( mbedtls_ecp_group *grp, + const mbedtls_ecp_point *G, + mbedtls_mpi *d, mbedtls_ecp_point *Q, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function generates an ECP keypair. + * + * \note This function uses bare components rather than an + * ::mbedtls_ecp_keypair structure to ease use with other + * structures, such as ::mbedtls_ecdh_context or + * ::mbedtls_ecdsa_context. + * + * \param grp The ECP group to generate a key pair for. + * This must be initialized and have group parameters + * set, for example through mbedtls_ecp_group_load(). + * \param d The destination MPI (secret part). + * This must be initialized. + * \param Q The destination point (public part). + * This must be initialized. + * \param f_rng The RNG function. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may + * be \c NULL if \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX error code + * on failure. + */ +int mbedtls_ecp_gen_keypair( mbedtls_ecp_group *grp, mbedtls_mpi *d, + mbedtls_ecp_point *Q, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function generates an ECP key. + * + * \param grp_id The ECP group identifier. + * \param key The destination key. This must be initialized. + * \param f_rng The RNG function to use. This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may + * be \c NULL if \p f_rng doesn't need a context argument. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_MPI_XXX error code + * on failure. + */ +int mbedtls_ecp_gen_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief This function reads an elliptic curve private key. + * + * \param grp_id The ECP group identifier. + * \param key The destination key. + * \param buf The the buffer containing the binary representation of the + * key. (Big endian integer for Weierstrass curves, byte + * string for Montgomery curves.) + * \param buflen The length of the buffer in bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_ECP_INVALID_KEY error if the key is + * invalid. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED if memory allocation failed. + * \return #MBEDTLS_ERR_ECP_FEATURE_UNAVAILABLE if the operation for + * the group is not implemented. + * \return Another negative error code on different kinds of failure. + */ +int mbedtls_ecp_read_key( mbedtls_ecp_group_id grp_id, mbedtls_ecp_keypair *key, + const unsigned char *buf, size_t buflen ); +/** + * \brief This function checks that the keypair objects + * \p pub and \p prv have the same group and the + * same public point, and that the private key in + * \p prv is consistent with the public key. + * + * \param pub The keypair structure holding the public key. This + * must be initialized. If it contains a private key, that + * part is ignored. + * \param prv The keypair structure holding the full keypair. + * This must be initialized. + * + * \return \c 0 on success, meaning that the keys are valid and match. + * \return #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if the keys are invalid or do not match. + * \return An \c MBEDTLS_ERR_ECP_XXX or an \c MBEDTLS_ERR_MPI_XXX + * error code on calculation failure. + */ +int mbedtls_ecp_check_pub_priv( const mbedtls_ecp_keypair *pub, + const mbedtls_ecp_keypair *prv ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The ECP checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_ecp_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* ecp.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp_internal.h new file mode 100644 index 00000000..3b6fbf11 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ecp_internal.h @@ -0,0 +1,299 @@ +/** + * \file ecp_internal.h + * + * \brief Function declarations for alternative implementation of elliptic curve + * point arithmetic. + */ +/* + * Copyright (C) 2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +/* + * References: + * + * [1] BERNSTEIN, Daniel J. Curve25519: new Diffie-Hellman speed records. + * + * + * [2] CORON, Jean-S'ebastien. Resistance against differential power analysis + * for elliptic curve cryptosystems. In : Cryptographic Hardware and + * Embedded Systems. Springer Berlin Heidelberg, 1999. p. 292-302. + * + * + * [3] HEDABOU, Mustapha, PINEL, Pierre, et B'EN'ETEAU, Lucien. A comb method to + * render ECC resistant against Side Channel Attacks. IACR Cryptology + * ePrint Archive, 2004, vol. 2004, p. 342. + * + * + * [4] Certicom Research. SEC 2: Recommended Elliptic Curve Domain Parameters. + * + * + * [5] HANKERSON, Darrel, MENEZES, Alfred J., VANSTONE, Scott. Guide to Elliptic + * Curve Cryptography. + * + * [6] Digital Signature Standard (DSS), FIPS 186-4. + * + * + * [7] Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer + * Security (TLS), RFC 4492. + * + * + * [8] + * + * [9] COHEN, Henri. A Course in Computational Algebraic Number Theory. + * Springer Science & Business Media, 1 Aug 2000 + */ + +#ifndef MBEDTLS_ECP_INTERNAL_H +#define MBEDTLS_ECP_INTERNAL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_ECP_INTERNAL_ALT) + +/** + * \brief Indicate if the Elliptic Curve Point module extension can + * handle the group. + * + * \param grp The pointer to the elliptic curve group that will be the + * basis of the cryptographic computations. + * + * \return Non-zero if successful. + */ +unsigned char mbedtls_internal_ecp_grp_capable( const mbedtls_ecp_group *grp ); + +/** + * \brief Initialise the Elliptic Curve Point module extension. + * + * If mbedtls_internal_ecp_grp_capable returns true for a + * group, this function has to be able to initialise the + * module for it. + * + * This module can be a driver to a crypto hardware + * accelerator, for which this could be an initialise function. + * + * \param grp The pointer to the group the module needs to be + * initialised for. + * + * \return 0 if successful. + */ +int mbedtls_internal_ecp_init( const mbedtls_ecp_group *grp ); + +/** + * \brief Frees and deallocates the Elliptic Curve Point module + * extension. + * + * \param grp The pointer to the group the module was initialised for. + */ +void mbedtls_internal_ecp_free( const mbedtls_ecp_group *grp ); + +#if defined(ECP_SHORTWEIERSTRASS) + +#if defined(MBEDTLS_ECP_RANDOMIZE_JAC_ALT) +/** + * \brief Randomize jacobian coordinates: + * (X, Y, Z) -> (l^2 X, l^3 Y, l Z) for random l. + * + * \param grp Pointer to the group representing the curve. + * + * \param pt The point on the curve to be randomised, given with Jacobian + * coordinates. + * + * \param f_rng A function pointer to the random number generator. + * + * \param p_rng A pointer to the random number generator state. + * + * \return 0 if successful. + */ +int mbedtls_internal_ecp_randomize_jac( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *pt, int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); +#endif + +#if defined(MBEDTLS_ECP_ADD_MIXED_ALT) +/** + * \brief Addition: R = P + Q, mixed affine-Jacobian coordinates. + * + * The coordinates of Q must be normalized (= affine), + * but those of P don't need to. R is not normalized. + * + * This function is used only as a subrutine of + * ecp_mul_comb(). + * + * Special cases: (1) P or Q is zero, (2) R is zero, + * (3) P == Q. + * None of these cases can happen as intermediate step in + * ecp_mul_comb(): + * - at each step, P, Q and R are multiples of the base + * point, the factor being less than its order, so none of + * them is zero; + * - Q is an odd multiple of the base point, P an even + * multiple, due to the choice of precomputed points in the + * modified comb method. + * So branches for these cases do not leak secret information. + * + * We accept Q->Z being unset (saving memory in tables) as + * meaning 1. + * + * Cost in field operations if done by [5] 3.22: + * 1A := 8M + 3S + * + * \param grp Pointer to the group representing the curve. + * + * \param R Pointer to a point structure to hold the result. + * + * \param P Pointer to the first summand, given with Jacobian + * coordinates + * + * \param Q Pointer to the second summand, given with affine + * coordinates. + * + * \return 0 if successful. + */ +int mbedtls_internal_ecp_add_mixed( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *R, const mbedtls_ecp_point *P, + const mbedtls_ecp_point *Q ); +#endif + +/** + * \brief Point doubling R = 2 P, Jacobian coordinates. + * + * Cost: 1D := 3M + 4S (A == 0) + * 4M + 4S (A == -3) + * 3M + 6S + 1a otherwise + * when the implementation is based on the "dbl-1998-cmo-2" + * doubling formulas in [8] and standard optimizations are + * applied when curve parameter A is one of { 0, -3 }. + * + * \param grp Pointer to the group representing the curve. + * + * \param R Pointer to a point structure to hold the result. + * + * \param P Pointer to the point that has to be doubled, given with + * Jacobian coordinates. + * + * \return 0 if successful. + */ +#if defined(MBEDTLS_ECP_DOUBLE_JAC_ALT) +int mbedtls_internal_ecp_double_jac( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *R, const mbedtls_ecp_point *P ); +#endif + +/** + * \brief Normalize jacobian coordinates of an array of (pointers to) + * points. + * + * Using Montgomery's trick to perform only one inversion mod P + * the cost is: + * 1N(t) := 1I + (6t - 3)M + 1S + * (See for example Algorithm 10.3.4. in [9]) + * + * This function is used only as a subrutine of + * ecp_mul_comb(). + * + * Warning: fails (returning an error) if one of the points is + * zero! + * This should never happen, see choice of w in ecp_mul_comb(). + * + * \param grp Pointer to the group representing the curve. + * + * \param T Array of pointers to the points to normalise. + * + * \param t_len Number of elements in the array. + * + * \return 0 if successful, + * an error if one of the points is zero. + */ +#if defined(MBEDTLS_ECP_NORMALIZE_JAC_MANY_ALT) +int mbedtls_internal_ecp_normalize_jac_many( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *T[], size_t t_len ); +#endif + +/** + * \brief Normalize jacobian coordinates so that Z == 0 || Z == 1. + * + * Cost in field operations if done by [5] 3.2.1: + * 1N := 1I + 3M + 1S + * + * \param grp Pointer to the group representing the curve. + * + * \param pt pointer to the point to be normalised. This is an + * input/output parameter. + * + * \return 0 if successful. + */ +#if defined(MBEDTLS_ECP_NORMALIZE_JAC_ALT) +int mbedtls_internal_ecp_normalize_jac( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *pt ); +#endif + +#endif /* ECP_SHORTWEIERSTRASS */ + +#if defined(ECP_MONTGOMERY) + +#if defined(MBEDTLS_ECP_DOUBLE_ADD_MXZ_ALT) +int mbedtls_internal_ecp_double_add_mxz( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *R, mbedtls_ecp_point *S, const mbedtls_ecp_point *P, + const mbedtls_ecp_point *Q, const mbedtls_mpi *d ); +#endif + +/** + * \brief Randomize projective x/z coordinates: + * (X, Z) -> (l X, l Z) for random l + * + * \param grp pointer to the group representing the curve + * + * \param P the point on the curve to be randomised given with + * projective coordinates. This is an input/output parameter. + * + * \param f_rng a function pointer to the random number generator + * + * \param p_rng a pointer to the random number generator state + * + * \return 0 if successful + */ +#if defined(MBEDTLS_ECP_RANDOMIZE_MXZ_ALT) +int mbedtls_internal_ecp_randomize_mxz( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *P, int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); +#endif + +/** + * \brief Normalize Montgomery x/z coordinates: X = X/Z, Z = 1. + * + * \param grp pointer to the group representing the curve + * + * \param P pointer to the point to be normalised. This is an + * input/output parameter. + * + * \return 0 if successful + */ +#if defined(MBEDTLS_ECP_NORMALIZE_MXZ_ALT) +int mbedtls_internal_ecp_normalize_mxz( const mbedtls_ecp_group *grp, + mbedtls_ecp_point *P ); +#endif + +#endif /* ECP_MONTGOMERY */ + +#endif /* MBEDTLS_ECP_INTERNAL_ALT */ + +#endif /* ecp_internal.h */ + diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy.h new file mode 100644 index 00000000..06aaffaf --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy.h @@ -0,0 +1,289 @@ +/** + * \file entropy.h + * + * \brief Entropy accumulator implementation + */ +/* + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ENTROPY_H +#define MBEDTLS_ENTROPY_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#if defined(MBEDTLS_SHA512_C) && !defined(MBEDTLS_ENTROPY_FORCE_SHA256) +#include "mbedtls/sha512.h" +#define MBEDTLS_ENTROPY_SHA512_ACCUMULATOR +#else +#if defined(MBEDTLS_SHA256_C) +#define MBEDTLS_ENTROPY_SHA256_ACCUMULATOR +#include "mbedtls/sha256.h" +#endif +#endif + +#if defined(MBEDTLS_THREADING_C) +#include "mbedtls/threading.h" +#endif + +#if defined(MBEDTLS_HAVEGE_C) +#include "mbedtls/havege.h" +#endif + +#define MBEDTLS_ERR_ENTROPY_SOURCE_FAILED -0x003C /**< Critical entropy source failure. */ +#define MBEDTLS_ERR_ENTROPY_MAX_SOURCES -0x003E /**< No more sources can be added. */ +#define MBEDTLS_ERR_ENTROPY_NO_SOURCES_DEFINED -0x0040 /**< No sources have been added to poll. */ +#define MBEDTLS_ERR_ENTROPY_NO_STRONG_SOURCE -0x003D /**< No strong sources have been added to poll. */ +#define MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR -0x003F /**< Read/write error in file. */ + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_ENTROPY_MAX_SOURCES) +#define MBEDTLS_ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */ +#endif + +#if !defined(MBEDTLS_ENTROPY_MAX_GATHER) +#define MBEDTLS_ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */ +#endif + +/* \} name SECTION: Module settings */ + +#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR) +#define MBEDTLS_ENTROPY_BLOCK_SIZE 64 /**< Block size of entropy accumulator (SHA-512) */ +#else +#define MBEDTLS_ENTROPY_BLOCK_SIZE 32 /**< Block size of entropy accumulator (SHA-256) */ +#endif + +#define MBEDTLS_ENTROPY_MAX_SEED_SIZE 1024 /**< Maximum size of seed we read from seed file */ +#define MBEDTLS_ENTROPY_SOURCE_MANUAL MBEDTLS_ENTROPY_MAX_SOURCES + +#define MBEDTLS_ENTROPY_SOURCE_STRONG 1 /**< Entropy source is strong */ +#define MBEDTLS_ENTROPY_SOURCE_WEAK 0 /**< Entropy source is weak */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Entropy poll callback pointer + * + * \param data Callback-specific data pointer + * \param output Data to fill + * \param len Maximum size to provide + * \param olen The actual amount of bytes put into the buffer (Can be 0) + * + * \return 0 if no critical failures occurred, + * MBEDTLS_ERR_ENTROPY_SOURCE_FAILED otherwise + */ +typedef int (*mbedtls_entropy_f_source_ptr)(void *data, unsigned char *output, size_t len, + size_t *olen); + +/** + * \brief Entropy source state + */ +typedef struct mbedtls_entropy_source_state +{ + mbedtls_entropy_f_source_ptr f_source; /**< The entropy source callback */ + void * p_source; /**< The callback data pointer */ + size_t size; /**< Amount received in bytes */ + size_t threshold; /**< Minimum bytes required before release */ + int strong; /**< Is the source strong? */ +} +mbedtls_entropy_source_state; + +/** + * \brief Entropy context structure + */ +typedef struct mbedtls_entropy_context +{ + int accumulator_started; +#if defined(MBEDTLS_ENTROPY_SHA512_ACCUMULATOR) + mbedtls_sha512_context accumulator; +#else + mbedtls_sha256_context accumulator; +#endif + int source_count; + mbedtls_entropy_source_state source[MBEDTLS_ENTROPY_MAX_SOURCES]; +#if defined(MBEDTLS_HAVEGE_C) + mbedtls_havege_state havege_data; +#endif +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; /*!< mutex */ +#endif +#if defined(MBEDTLS_ENTROPY_NV_SEED) + int initial_entropy_run; +#endif +} +mbedtls_entropy_context; + +/** + * \brief Initialize the context + * + * \param ctx Entropy context to initialize + */ +void mbedtls_entropy_init( mbedtls_entropy_context *ctx ); + +/** + * \brief Free the data in the context + * + * \param ctx Entropy context to free + */ +void mbedtls_entropy_free( mbedtls_entropy_context *ctx ); + +/** + * \brief Adds an entropy source to poll + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param ctx Entropy context + * \param f_source Entropy function + * \param p_source Function data + * \param threshold Minimum required from source before entropy is released + * ( with mbedtls_entropy_func() ) (in bytes) + * \param strong MBEDTLS_ENTROPY_SOURCE_STRONG or + * MBEDTLS_ENTROPY_SOURCE_WEAK. + * At least one strong source needs to be added. + * Weaker sources (such as the cycle counter) can be used as + * a complement. + * + * \return 0 if successful or MBEDTLS_ERR_ENTROPY_MAX_SOURCES + */ +int mbedtls_entropy_add_source( mbedtls_entropy_context *ctx, + mbedtls_entropy_f_source_ptr f_source, void *p_source, + size_t threshold, int strong ); + +/** + * \brief Trigger an extra gather poll for the accumulator + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param ctx Entropy context + * + * \return 0 if successful, or MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_gather( mbedtls_entropy_context *ctx ); + +/** + * \brief Retrieve entropy from the accumulator + * (Maximum length: MBEDTLS_ENTROPY_BLOCK_SIZE) + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param data Entropy context + * \param output Buffer to fill + * \param len Number of bytes desired, must be at most MBEDTLS_ENTROPY_BLOCK_SIZE + * + * \return 0 if successful, or MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_func( void *data, unsigned char *output, size_t len ); + +/** + * \brief Add data to the accumulator manually + * (Thread-safe if MBEDTLS_THREADING_C is enabled) + * + * \param ctx Entropy context + * \param data Data to add + * \param len Length of data + * + * \return 0 if successful + */ +int mbedtls_entropy_update_manual( mbedtls_entropy_context *ctx, + const unsigned char *data, size_t len ); + +#if defined(MBEDTLS_ENTROPY_NV_SEED) +/** + * \brief Trigger an update of the seed file in NV by using the + * current entropy pool. + * + * \param ctx Entropy context + * + * \return 0 if successful + */ +int mbedtls_entropy_update_nv_seed( mbedtls_entropy_context *ctx ); +#endif /* MBEDTLS_ENTROPY_NV_SEED */ + +#if defined(MBEDTLS_FS_IO) +/** + * \brief Write a seed file + * + * \param ctx Entropy context + * \param path Name of the file + * + * \return 0 if successful, + * MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR on file error, or + * MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_write_seed_file( mbedtls_entropy_context *ctx, const char *path ); + +/** + * \brief Read and update a seed file. Seed is added to this + * instance. No more than MBEDTLS_ENTROPY_MAX_SEED_SIZE bytes are + * read from the seed file. The rest is ignored. + * + * \param ctx Entropy context + * \param path Name of the file + * + * \return 0 if successful, + * MBEDTLS_ERR_ENTROPY_FILE_IO_ERROR on file error, + * MBEDTLS_ERR_ENTROPY_SOURCE_FAILED + */ +int mbedtls_entropy_update_seed_file( mbedtls_entropy_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * This module self-test also calls the entropy self-test, + * mbedtls_entropy_source_self_test(); + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_entropy_self_test( int verbose ); + +#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) +/** + * \brief Checkup routine + * + * Verifies the integrity of the hardware entropy source + * provided by the function 'mbedtls_hardware_poll()'. + * + * Note this is the only hardware entropy source that is known + * at link time, and other entropy sources configured + * dynamically at runtime by the function + * mbedtls_entropy_add_source() will not be tested. + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_entropy_source_self_test( int verbose ); +#endif /* MBEDTLS_ENTROPY_HARDWARE_ALT */ +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* entropy.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy_poll.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy_poll.h new file mode 100644 index 00000000..ba42805f --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/entropy_poll.h @@ -0,0 +1,110 @@ +/** + * \file entropy_poll.h + * + * \brief Platform-specific and custom entropy polling functions + */ +/* + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_ENTROPY_POLL_H +#define MBEDTLS_ENTROPY_POLL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Default thresholds for built-in sources, in bytes + */ +#define MBEDTLS_ENTROPY_MIN_PLATFORM 32 /**< Minimum for platform source */ +#define MBEDTLS_ENTROPY_MIN_HAVEGE 32 /**< Minimum for HAVEGE */ +#define MBEDTLS_ENTROPY_MIN_HARDCLOCK 4 /**< Minimum for mbedtls_timing_hardclock() */ +#if !defined(MBEDTLS_ENTROPY_MIN_HARDWARE) +#define MBEDTLS_ENTROPY_MIN_HARDWARE 32 /**< Minimum for the hardware source */ +#endif + +/** + * \brief Entropy poll callback that provides 0 entropy. + */ +#if defined(MBEDTLS_TEST_NULL_ENTROPY) + int mbedtls_null_entropy_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if !defined(MBEDTLS_NO_PLATFORM_ENTROPY) +/** + * \brief Platform-specific entropy poll callback + */ +int mbedtls_platform_entropy_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_HAVEGE_C) +/** + * \brief HAVEGE based entropy poll callback + * + * Requires an HAVEGE state as its data pointer. + */ +int mbedtls_havege_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_TIMING_C) +/** + * \brief mbedtls_timing_hardclock-based entropy poll callback + */ +int mbedtls_hardclock_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_ENTROPY_HARDWARE_ALT) +/** + * \brief Entropy poll callback for a hardware source + * + * \warning This is not provided by mbed TLS! + * See \c MBEDTLS_ENTROPY_HARDWARE_ALT in config.h. + * + * \note This must accept NULL as its first argument. + */ +int mbedtls_hardware_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#if defined(MBEDTLS_ENTROPY_NV_SEED) +/** + * \brief Entropy poll callback for a non-volatile seed file + * + * \note This must accept NULL as its first argument. + */ +int mbedtls_nv_seed_poll( void *data, + unsigned char *output, size_t len, size_t *olen ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* entropy_poll.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/gcm.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/gcm.h new file mode 100644 index 00000000..a71a2af4 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/gcm.h @@ -0,0 +1,326 @@ +/** + * \file gcm.h + * + * \brief This file contains GCM definitions and functions. + * + * The Galois/Counter Mode (GCM) for 128-bit block ciphers is defined + * in D. McGrew, J. Viega, The Galois/Counter Mode of Operation + * (GCM), Natl. Inst. Stand. Technol. + * + * For more information on GCM, see NIST SP 800-38D: Recommendation for + * Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC. + * + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_GCM_H +#define MBEDTLS_GCM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" + +#include + +#define MBEDTLS_GCM_ENCRYPT 1 +#define MBEDTLS_GCM_DECRYPT 0 + +#define MBEDTLS_ERR_GCM_AUTH_FAILED -0x0012 /**< Authenticated decryption failed. */ + +/* MBEDTLS_ERR_GCM_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_GCM_HW_ACCEL_FAILED -0x0013 /**< GCM hardware accelerator failed. */ + +#define MBEDTLS_ERR_GCM_BAD_INPUT -0x0014 /**< Bad input parameters to function. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_GCM_ALT) + +/** + * \brief The GCM context structure. + */ +typedef struct mbedtls_gcm_context +{ + mbedtls_cipher_context_t cipher_ctx; /*!< The cipher context used. */ + uint64_t HL[16]; /*!< Precalculated HTable low. */ + uint64_t HH[16]; /*!< Precalculated HTable high. */ + uint64_t len; /*!< The total length of the encrypted data. */ + uint64_t add_len; /*!< The total length of the additional data. */ + unsigned char base_ectr[16]; /*!< The first ECTR for tag. */ + unsigned char y[16]; /*!< The Y working value. */ + unsigned char buf[16]; /*!< The buf working value. */ + int mode; /*!< The operation to perform: + #MBEDTLS_GCM_ENCRYPT or + #MBEDTLS_GCM_DECRYPT. */ +} +mbedtls_gcm_context; + +#else /* !MBEDTLS_GCM_ALT */ +#include "gcm_alt.h" +#endif /* !MBEDTLS_GCM_ALT */ + +/** + * \brief This function initializes the specified GCM context, + * to make references valid, and prepares the context + * for mbedtls_gcm_setkey() or mbedtls_gcm_free(). + * + * The function does not bind the GCM context to a particular + * cipher, nor set the key. For this purpose, use + * mbedtls_gcm_setkey(). + * + * \param ctx The GCM context to initialize. This must not be \c NULL. + */ +void mbedtls_gcm_init( mbedtls_gcm_context *ctx ); + +/** + * \brief This function associates a GCM context with a + * cipher algorithm and a key. + * + * \param ctx The GCM context. This must be initialized. + * \param cipher The 128-bit block cipher to use. + * \param key The encryption key. This must be a readable buffer of at + * least \p keybits bits. + * \param keybits The key size in bits. Valid options are: + *
    • 128 bits
    • + *
    • 192 bits
    • + *
    • 256 bits
    + * + * \return \c 0 on success. + * \return A cipher-specific error code on failure. + */ +int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits ); + +/** + * \brief This function performs GCM encryption or decryption of a buffer. + * + * \note For encryption, the output buffer can be the same as the + * input buffer. For decryption, the output buffer cannot be + * the same as input buffer. If the buffers overlap, the output + * buffer must trail at least 8 Bytes behind the input buffer. + * + * \warning When this function performs a decryption, it outputs the + * authentication tag and does not verify that the data is + * authentic. You should use this function to perform encryption + * only. For decryption, use mbedtls_gcm_auth_decrypt() instead. + * + * \param ctx The GCM context to use for encryption or decryption. This + * must be initialized. + * \param mode The operation to perform: + * - #MBEDTLS_GCM_ENCRYPT to perform authenticated encryption. + * The ciphertext is written to \p output and the + * authentication tag is written to \p tag. + * - #MBEDTLS_GCM_DECRYPT to perform decryption. + * The plaintext is written to \p output and the + * authentication tag is written to \p tag. + * Note that this mode is not recommended, because it does + * not verify the authenticity of the data. For this reason, + * you should use mbedtls_gcm_auth_decrypt() instead of + * calling this function in decryption mode. + * \param length The length of the input data, which is equal to the length + * of the output data. + * \param iv The initialization vector. This must be a readable buffer of + * at least \p iv_len Bytes. + * \param iv_len The length of the IV. + * \param add The buffer holding the additional data. This must be of at + * least that size in Bytes. + * \param add_len The length of the additional data. + * \param input The buffer holding the input data. If \p length is greater + * than zero, this must be a readable buffer of at least that + * size in Bytes. + * \param output The buffer for holding the output data. If \p length is greater + * than zero, this must be a writable buffer of at least that + * size in Bytes. + * \param tag_len The length of the tag to generate. + * \param tag The buffer for holding the tag. This must be a readable + * buffer of at least \p tag_len Bytes. + * + * \return \c 0 if the encryption or decryption was performed + * successfully. Note that in #MBEDTLS_GCM_DECRYPT mode, + * this does not indicate that the data is authentic. + * \return #MBEDTLS_ERR_GCM_BAD_INPUT if the lengths or pointers are + * not valid or a cipher-specific error code if the encryption + * or decryption failed. + */ +int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx, + int mode, + size_t length, + const unsigned char *iv, + size_t iv_len, + const unsigned char *add, + size_t add_len, + const unsigned char *input, + unsigned char *output, + size_t tag_len, + unsigned char *tag ); + +/** + * \brief This function performs a GCM authenticated decryption of a + * buffer. + * + * \note For decryption, the output buffer cannot be the same as + * input buffer. If the buffers overlap, the output buffer + * must trail at least 8 Bytes behind the input buffer. + * + * \param ctx The GCM context. This must be initialized. + * \param length The length of the ciphertext to decrypt, which is also + * the length of the decrypted plaintext. + * \param iv The initialization vector. This must be a readable buffer + * of at least \p iv_len Bytes. + * \param iv_len The length of the IV. + * \param add The buffer holding the additional data. This must be of at + * least that size in Bytes. + * \param add_len The length of the additional data. + * \param tag The buffer holding the tag to verify. This must be a + * readable buffer of at least \p tag_len Bytes. + * \param tag_len The length of the tag to verify. + * \param input The buffer holding the ciphertext. If \p length is greater + * than zero, this must be a readable buffer of at least that + * size. + * \param output The buffer for holding the decrypted plaintext. If \p length + * is greater than zero, this must be a writable buffer of at + * least that size. + * + * \return \c 0 if successful and authenticated. + * \return #MBEDTLS_ERR_GCM_AUTH_FAILED if the tag does not match. + * \return #MBEDTLS_ERR_GCM_BAD_INPUT if the lengths or pointers are + * not valid or a cipher-specific error code if the decryption + * failed. + */ +int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx, + size_t length, + const unsigned char *iv, + size_t iv_len, + const unsigned char *add, + size_t add_len, + const unsigned char *tag, + size_t tag_len, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function starts a GCM encryption or decryption + * operation. + * + * \param ctx The GCM context. This must be initialized. + * \param mode The operation to perform: #MBEDTLS_GCM_ENCRYPT or + * #MBEDTLS_GCM_DECRYPT. + * \param iv The initialization vector. This must be a readable buffer of + * at least \p iv_len Bytes. + * \param iv_len The length of the IV. + * \param add The buffer holding the additional data, or \c NULL + * if \p add_len is \c 0. + * \param add_len The length of the additional data. If \c 0, + * \p add may be \c NULL. + * + * \return \c 0 on success. + */ +int mbedtls_gcm_starts( mbedtls_gcm_context *ctx, + int mode, + const unsigned char *iv, + size_t iv_len, + const unsigned char *add, + size_t add_len ); + +/** + * \brief This function feeds an input buffer into an ongoing GCM + * encryption or decryption operation. + * + * ` The function expects input to be a multiple of 16 + * Bytes. Only the last call before calling + * mbedtls_gcm_finish() can be less than 16 Bytes. + * + * \note For decryption, the output buffer cannot be the same as + * input buffer. If the buffers overlap, the output buffer + * must trail at least 8 Bytes behind the input buffer. + * + * \param ctx The GCM context. This must be initialized. + * \param length The length of the input data. This must be a multiple of + * 16 except in the last call before mbedtls_gcm_finish(). + * \param input The buffer holding the input data. If \p length is greater + * than zero, this must be a readable buffer of at least that + * size in Bytes. + * \param output The buffer for holding the output data. If \p length is + * greater than zero, this must be a writable buffer of at + * least that size in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_GCM_BAD_INPUT on failure. + */ +int mbedtls_gcm_update( mbedtls_gcm_context *ctx, + size_t length, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function finishes the GCM operation and generates + * the authentication tag. + * + * It wraps up the GCM stream, and generates the + * tag. The tag can have a maximum length of 16 Bytes. + * + * \param ctx The GCM context. This must be initialized. + * \param tag The buffer for holding the tag. This must be a readable + * buffer of at least \p tag_len Bytes. + * \param tag_len The length of the tag to generate. This must be at least + * four. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_GCM_BAD_INPUT on failure. + */ +int mbedtls_gcm_finish( mbedtls_gcm_context *ctx, + unsigned char *tag, + size_t tag_len ); + +/** + * \brief This function clears a GCM context and the underlying + * cipher sub-context. + * + * \param ctx The GCM context to clear. If this is \c NULL, the call has + * no effect. Otherwise, this must be initialized. + */ +void mbedtls_gcm_free( mbedtls_gcm_context *ctx ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The GCM checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_gcm_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + + +#endif /* gcm.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/havege.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/havege.h new file mode 100644 index 00000000..acd7e489 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/havege.h @@ -0,0 +1,82 @@ +/** + * \file havege.h + * + * \brief HAVEGE: HArdware Volatile Entropy Gathering and Expansion + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_HAVEGE_H +#define MBEDTLS_HAVEGE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_HAVEGE_COLLECT_SIZE 1024 + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief HAVEGE state structure + */ +typedef struct mbedtls_havege_state +{ + uint32_t PT1, PT2, offset[2]; + uint32_t pool[MBEDTLS_HAVEGE_COLLECT_SIZE]; + uint32_t WALK[8192]; +} +mbedtls_havege_state; + +/** + * \brief HAVEGE initialization + * + * \param hs HAVEGE state to be initialized + */ +void mbedtls_havege_init( mbedtls_havege_state *hs ); + +/** + * \brief Clear HAVEGE state + * + * \param hs HAVEGE state to be cleared + */ +void mbedtls_havege_free( mbedtls_havege_state *hs ); + +/** + * \brief HAVEGE rand function + * + * \param p_rng A HAVEGE state + * \param output Buffer to fill + * \param len Length of buffer + * + * \return 0 + */ +int mbedtls_havege_random( void *p_rng, unsigned char *output, size_t len ); + +#ifdef __cplusplus +} +#endif + +#endif /* havege.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/hkdf.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/hkdf.h new file mode 100644 index 00000000..77a99ab6 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/hkdf.h @@ -0,0 +1,141 @@ +/** + * \file hkdf.h + * + * \brief This file contains the HKDF interface. + * + * The HMAC-based Extract-and-Expand Key Derivation Function (HKDF) is + * specified by RFC 5869. + */ +/* + * Copyright (C) 2018-2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_HKDF_H +#define MBEDTLS_HKDF_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/md.h" + +/** + * \name HKDF Error codes + * \{ + */ +#define MBEDTLS_ERR_HKDF_BAD_INPUT_DATA -0x5F80 /**< Bad input parameters to function. */ +/* \} name */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief This is the HMAC-based Extract-and-Expand Key Derivation Function + * (HKDF). + * + * \param md A hash function; md.size denotes the length of the hash + * function output in bytes. + * \param salt An optional salt value (a non-secret random value); + * if the salt is not provided, a string of all zeros of + * md.size length is used as the salt. + * \param salt_len The length in bytes of the optional \p salt. + * \param ikm The input keying material. + * \param ikm_len The length in bytes of \p ikm. + * \param info An optional context and application specific information + * string. This can be a zero-length string. + * \param info_len The length of \p info in bytes. + * \param okm The output keying material of \p okm_len bytes. + * \param okm_len The length of the output keying material in bytes. This + * must be less than or equal to 255 * md.size bytes. + * + * \return 0 on success. + * \return #MBEDTLS_ERR_HKDF_BAD_INPUT_DATA when the parameters are invalid. + * \return An MBEDTLS_ERR_MD_* error for errors returned from the underlying + * MD layer. + */ +int mbedtls_hkdf( const mbedtls_md_info_t *md, const unsigned char *salt, + size_t salt_len, const unsigned char *ikm, size_t ikm_len, + const unsigned char *info, size_t info_len, + unsigned char *okm, size_t okm_len ); + +/** + * \brief Take the input keying material \p ikm and extract from it a + * fixed-length pseudorandom key \p prk. + * + * \warning This function should only be used if the security of it has been + * studied and established in that particular context (eg. TLS 1.3 + * key schedule). For standard HKDF security guarantees use + * \c mbedtls_hkdf instead. + * + * \param md A hash function; md.size denotes the length of the + * hash function output in bytes. + * \param salt An optional salt value (a non-secret random value); + * if the salt is not provided, a string of all zeros + * of md.size length is used as the salt. + * \param salt_len The length in bytes of the optional \p salt. + * \param ikm The input keying material. + * \param ikm_len The length in bytes of \p ikm. + * \param[out] prk A pseudorandom key of at least md.size bytes. + * + * \return 0 on success. + * \return #MBEDTLS_ERR_HKDF_BAD_INPUT_DATA when the parameters are invalid. + * \return An MBEDTLS_ERR_MD_* error for errors returned from the underlying + * MD layer. + */ +int mbedtls_hkdf_extract( const mbedtls_md_info_t *md, + const unsigned char *salt, size_t salt_len, + const unsigned char *ikm, size_t ikm_len, + unsigned char *prk ); + +/** + * \brief Expand the supplied \p prk into several additional pseudorandom + * keys, which is the output of the HKDF. + * + * \warning This function should only be used if the security of it has been + * studied and established in that particular context (eg. TLS 1.3 + * key schedule). For standard HKDF security guarantees use + * \c mbedtls_hkdf instead. + * + * \param md A hash function; md.size denotes the length of the hash + * function output in bytes. + * \param prk A pseudorandom key of at least md.size bytes. \p prk is + * usually the output from the HKDF extract step. + * \param prk_len The length in bytes of \p prk. + * \param info An optional context and application specific information + * string. This can be a zero-length string. + * \param info_len The length of \p info in bytes. + * \param okm The output keying material of \p okm_len bytes. + * \param okm_len The length of the output keying material in bytes. This + * must be less than or equal to 255 * md.size bytes. + * + * \return 0 on success. + * \return #MBEDTLS_ERR_HKDF_BAD_INPUT_DATA when the parameters are invalid. + * \return An MBEDTLS_ERR_MD_* error for errors returned from the underlying + * MD layer. + */ +int mbedtls_hkdf_expand( const mbedtls_md_info_t *md, const unsigned char *prk, + size_t prk_len, const unsigned char *info, + size_t info_len, unsigned char *okm, size_t okm_len ); + +#ifdef __cplusplus +} +#endif + +#endif /* hkdf.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/hmac_drbg.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/hmac_drbg.h new file mode 100644 index 00000000..00be9df4 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/hmac_drbg.h @@ -0,0 +1,415 @@ +/** + * \file hmac_drbg.h + * + * \brief The HMAC_DRBG pseudorandom generator. + * + * This module implements the HMAC_DRBG pseudorandom generator described + * in NIST SP 800-90A: Recommendation for Random Number Generation Using + * Deterministic Random Bit Generators. + */ +/* + * Copyright (C) 2006-2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_HMAC_DRBG_H +#define MBEDTLS_HMAC_DRBG_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/md.h" + +#if defined(MBEDTLS_THREADING_C) +#include "mbedtls/threading.h" +#endif + +/* + * Error codes + */ +#define MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG -0x0003 /**< Too many random requested in single call. */ +#define MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG -0x0005 /**< Input too large (Entropy + additional). */ +#define MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR -0x0007 /**< Read/write error in file. */ +#define MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED -0x0009 /**< The entropy source failed. */ + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_HMAC_DRBG_RESEED_INTERVAL) +#define MBEDTLS_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ +#endif + +#if !defined(MBEDTLS_HMAC_DRBG_MAX_INPUT) +#define MBEDTLS_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ +#endif + +#if !defined(MBEDTLS_HMAC_DRBG_MAX_REQUEST) +#define MBEDTLS_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ +#endif + +#if !defined(MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT) +#define MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ +#endif + +/* \} name SECTION: Module settings */ + +#define MBEDTLS_HMAC_DRBG_PR_OFF 0 /**< No prediction resistance */ +#define MBEDTLS_HMAC_DRBG_PR_ON 1 /**< Prediction resistance enabled */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * HMAC_DRBG context. + */ +typedef struct mbedtls_hmac_drbg_context +{ + /* Working state: the key K is not stored explicitly, + * but is implied by the HMAC context */ + mbedtls_md_context_t md_ctx; /*!< HMAC context (inc. K) */ + unsigned char V[MBEDTLS_MD_MAX_SIZE]; /*!< V in the spec */ + int reseed_counter; /*!< reseed counter */ + + /* Administrative state */ + size_t entropy_len; /*!< entropy bytes grabbed on each (re)seed */ + int prediction_resistance; /*!< enable prediction resistance (Automatic + reseed before every random generation) */ + int reseed_interval; /*!< reseed interval */ + + /* Callbacks */ + int (*f_entropy)(void *, unsigned char *, size_t); /*!< entropy function */ + void *p_entropy; /*!< context for the entropy function */ + +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; +#endif +} mbedtls_hmac_drbg_context; + +/** + * \brief HMAC_DRBG context initialization. + * + * This function makes the context ready for mbedtls_hmac_drbg_seed(), + * mbedtls_hmac_drbg_seed_buf() or mbedtls_hmac_drbg_free(). + * + * \param ctx HMAC_DRBG context to be initialized. + */ +void mbedtls_hmac_drbg_init( mbedtls_hmac_drbg_context *ctx ); + +/** + * \brief HMAC_DRBG initial seeding. + * + * Set the initial seed and set up the entropy source for future reseeds. + * + * A typical choice for the \p f_entropy and \p p_entropy parameters is + * to use the entropy module: + * - \p f_entropy is mbedtls_entropy_func(); + * - \p p_entropy is an instance of ::mbedtls_entropy_context initialized + * with mbedtls_entropy_init() (which registers the platform's default + * entropy sources). + * + * You can provide a personalization string in addition to the + * entropy source, to make this instantiation as unique as possible. + * + * \note By default, the security strength as defined by NIST is: + * - 128 bits if \p md_info is SHA-1; + * - 192 bits if \p md_info is SHA-224; + * - 256 bits if \p md_info is SHA-256, SHA-384 or SHA-512. + * Note that SHA-256 is just as efficient as SHA-224. + * The security strength can be reduced if a smaller + * entropy length is set with + * mbedtls_hmac_drbg_set_entropy_len(). + * + * \note The default entropy length is the security strength + * (converted from bits to bytes). You can override + * it by calling mbedtls_hmac_drbg_set_entropy_len(). + * + * \note During the initial seeding, this function calls + * the entropy source to obtain a nonce + * whose length is half the entropy length. + * + * \param ctx HMAC_DRBG context to be seeded. + * \param md_info MD algorithm to use for HMAC_DRBG. + * \param f_entropy The entropy callback, taking as arguments the + * \p p_entropy context, the buffer to fill, and the + * length of the buffer. + * \p f_entropy is always called with a length that is + * less than or equal to the entropy length. + * \param p_entropy The entropy context to pass to \p f_entropy. + * \param custom The personalization string. + * This can be \c NULL, in which case the personalization + * string is empty regardless of the value of \p len. + * \param len The length of the personalization string. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT + * and also at most + * #MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT - \p entropy_len * 3 / 2 + * where \p entropy_len is the entropy length + * described above. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info is + * invalid. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED if there was not enough + * memory to allocate context data. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if the call to \p f_entropy failed. + */ +int mbedtls_hmac_drbg_seed( mbedtls_hmac_drbg_context *ctx, + const mbedtls_md_info_t * md_info, + int (*f_entropy)(void *, unsigned char *, size_t), + void *p_entropy, + const unsigned char *custom, + size_t len ); + +/** + * \brief Initilisation of simpified HMAC_DRBG (never reseeds). + * + * This function is meant for use in algorithms that need a pseudorandom + * input such as deterministic ECDSA. + * + * \param ctx HMAC_DRBG context to be initialised. + * \param md_info MD algorithm to use for HMAC_DRBG. + * \param data Concatenation of the initial entropy string and + * the additional data. + * \param data_len Length of \p data in bytes. + * + * \return \c 0 if successful. or + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info is + * invalid. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED if there was not enough + * memory to allocate context data. + */ +int mbedtls_hmac_drbg_seed_buf( mbedtls_hmac_drbg_context *ctx, + const mbedtls_md_info_t * md_info, + const unsigned char *data, size_t data_len ); + +/** + * \brief This function turns prediction resistance on or off. + * The default value is off. + * + * \note If enabled, entropy is gathered at the beginning of + * every call to mbedtls_hmac_drbg_random_with_add() + * or mbedtls_hmac_drbg_random(). + * Only use this if your entropy source has sufficient + * throughput. + * + * \param ctx The HMAC_DRBG context. + * \param resistance #MBEDTLS_HMAC_DRBG_PR_ON or #MBEDTLS_HMAC_DRBG_PR_OFF. + */ +void mbedtls_hmac_drbg_set_prediction_resistance( mbedtls_hmac_drbg_context *ctx, + int resistance ); + +/** + * \brief This function sets the amount of entropy grabbed on each + * seed or reseed. + * + * See the documentation of mbedtls_hmac_drbg_seed() for the default value. + * + * \param ctx The HMAC_DRBG context. + * \param len The amount of entropy to grab, in bytes. + */ +void mbedtls_hmac_drbg_set_entropy_len( mbedtls_hmac_drbg_context *ctx, + size_t len ); + +/** + * \brief Set the reseed interval. + * + * The reseed interval is the number of calls to mbedtls_hmac_drbg_random() + * or mbedtls_hmac_drbg_random_with_add() after which the entropy function + * is called again. + * + * The default value is #MBEDTLS_HMAC_DRBG_RESEED_INTERVAL. + * + * \param ctx The HMAC_DRBG context. + * \param interval The reseed interval. + */ +void mbedtls_hmac_drbg_set_reseed_interval( mbedtls_hmac_drbg_context *ctx, + int interval ); + +/** + * \brief This function updates the state of the HMAC_DRBG context. + * + * \param ctx The HMAC_DRBG context. + * \param additional The data to update the state with. + * If this is \c NULL, there is no additional data. + * \param add_len Length of \p additional in bytes. + * Unused if \p additional is \c NULL. + * + * \return \c 0 on success, or an error from the underlying + * hash calculation. + */ +int mbedtls_hmac_drbg_update_ret( mbedtls_hmac_drbg_context *ctx, + const unsigned char *additional, size_t add_len ); + +/** + * \brief This function reseeds the HMAC_DRBG context, that is + * extracts data from the entropy source. + * + * \param ctx The HMAC_DRBG context. + * \param additional Additional data to add to the state. + * If this is \c NULL, there is no additional data + * and \p len should be \c 0. + * \param len The length of the additional data. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT + * and also at most + * #MBEDTLS_HMAC_DRBG_MAX_SEED_INPUT - \p entropy_len + * where \p entropy_len is the entropy length + * (see mbedtls_hmac_drbg_set_entropy_len()). + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy function failed. + */ +int mbedtls_hmac_drbg_reseed( mbedtls_hmac_drbg_context *ctx, + const unsigned char *additional, size_t len ); + +/** + * \brief This function updates an HMAC_DRBG instance with additional + * data and uses it to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \param p_rng The HMAC_DRBG context. This must be a pointer to a + * #mbedtls_hmac_drbg_context structure. + * \param output The buffer to fill. + * \param output_len The length of the buffer in bytes. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * \param additional Additional data to update with. + * If this is \c NULL, there is no additional data + * and \p add_len should be \c 0. + * \param add_len The length of the additional data. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_INPUT. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy source failed. + * \return #MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG if + * \p output_len > #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * \return #MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG if + * \p add_len > #MBEDTLS_HMAC_DRBG_MAX_INPUT. + */ +int mbedtls_hmac_drbg_random_with_add( void *p_rng, + unsigned char *output, size_t output_len, + const unsigned char *additional, + size_t add_len ); + +/** + * \brief This function uses HMAC_DRBG to generate random data. + * + * This function automatically reseeds if the reseed counter is exceeded + * or prediction resistance is enabled. + * + * \param p_rng The HMAC_DRBG context. This must be a pointer to a + * #mbedtls_hmac_drbg_context structure. + * \param output The buffer to fill. + * \param out_len The length of the buffer in bytes. + * This must be at most #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + * + * \return \c 0 if successful. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED + * if a call to the entropy source failed. + * \return #MBEDTLS_ERR_HMAC_DRBG_REQUEST_TOO_BIG if + * \p out_len > #MBEDTLS_HMAC_DRBG_MAX_REQUEST. + */ +int mbedtls_hmac_drbg_random( void *p_rng, unsigned char *output, size_t out_len ); + +/** + * \brief Free an HMAC_DRBG context + * + * \param ctx The HMAC_DRBG context to free. + */ +void mbedtls_hmac_drbg_free( mbedtls_hmac_drbg_context *ctx ); + +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function updates the state of the HMAC_DRBG context. + * + * \deprecated Superseded by mbedtls_hmac_drbg_update_ret() + * in 2.16.0. + * + * \param ctx The HMAC_DRBG context. + * \param additional The data to update the state with. + * If this is \c NULL, there is no additional data. + * \param add_len Length of \p additional in bytes. + * Unused if \p additional is \c NULL. + */ +MBEDTLS_DEPRECATED void mbedtls_hmac_drbg_update( + mbedtls_hmac_drbg_context *ctx, + const unsigned char *additional, size_t add_len ); +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_FS_IO) +/** + * \brief This function writes a seed file. + * + * \param ctx The HMAC_DRBG context. + * \param path The name of the file. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED on reseed + * failure. + */ +int mbedtls_hmac_drbg_write_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); + +/** + * \brief This function reads and updates a seed file. The seed + * is added to this instance. + * + * \param ctx The HMAC_DRBG context. + * \param path The name of the file. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_HMAC_DRBG_FILE_IO_ERROR on file error. + * \return #MBEDTLS_ERR_HMAC_DRBG_ENTROPY_SOURCE_FAILED on + * reseed failure. + * \return #MBEDTLS_ERR_HMAC_DRBG_INPUT_TOO_BIG if the existing + * seed file is too large. + */ +int mbedtls_hmac_drbg_update_seed_file( mbedtls_hmac_drbg_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ + + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief The HMAC_DRBG Checkup routine. + * + * \return \c 0 if successful. + * \return \c 1 if the test failed. + */ +int mbedtls_hmac_drbg_self_test( int verbose ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* hmac_drbg.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md.h new file mode 100644 index 00000000..0b0ec91f --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md.h @@ -0,0 +1,474 @@ + /** + * \file md.h + * + * \brief This file contains the generic message-digest wrapper. + * + * \author Adriaan de Jong + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_MD_H +#define MBEDTLS_MD_H + +#include + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#define MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE -0x5080 /**< The selected feature is not available. */ +#define MBEDTLS_ERR_MD_BAD_INPUT_DATA -0x5100 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_MD_ALLOC_FAILED -0x5180 /**< Failed to allocate memory. */ +#define MBEDTLS_ERR_MD_FILE_IO_ERROR -0x5200 /**< Opening or reading of file failed. */ + +/* MBEDTLS_ERR_MD_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_MD_HW_ACCEL_FAILED -0x5280 /**< MD hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Supported message digests. + * + * \warning MD2, MD4, MD5 and SHA-1 are considered weak message digests and + * their use constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +typedef enum { + MBEDTLS_MD_NONE=0, /**< None. */ + MBEDTLS_MD_MD2, /**< The MD2 message digest. */ + MBEDTLS_MD_MD4, /**< The MD4 message digest. */ + MBEDTLS_MD_MD5, /**< The MD5 message digest. */ + MBEDTLS_MD_SHA1, /**< The SHA-1 message digest. */ + MBEDTLS_MD_SHA224, /**< The SHA-224 message digest. */ + MBEDTLS_MD_SHA256, /**< The SHA-256 message digest. */ + MBEDTLS_MD_SHA384, /**< The SHA-384 message digest. */ + MBEDTLS_MD_SHA512, /**< The SHA-512 message digest. */ + MBEDTLS_MD_RIPEMD160, /**< The RIPEMD-160 message digest. */ +} mbedtls_md_type_t; + +#if defined(MBEDTLS_SHA512_C) +#define MBEDTLS_MD_MAX_SIZE 64 /* longest known is SHA512 */ +#else +#define MBEDTLS_MD_MAX_SIZE 32 /* longest known is SHA256 or less */ +#endif + +#if defined(MBEDTLS_SHA512_C) +#define MBEDTLS_MD_MAX_BLOCK_SIZE 128 +#else +#define MBEDTLS_MD_MAX_BLOCK_SIZE 64 +#endif + +/** + * Opaque struct defined in md_internal.h. + */ +typedef struct mbedtls_md_info_t mbedtls_md_info_t; + +/** + * The generic message-digest context. + */ +typedef struct mbedtls_md_context_t +{ + /** Information about the associated message digest. */ + const mbedtls_md_info_t *md_info; + + /** The digest-specific context. */ + void *md_ctx; + + /** The HMAC part of the context. */ + void *hmac_ctx; +} mbedtls_md_context_t; + +/** + * \brief This function returns the list of digests supported by the + * generic digest module. + * + * \return A statically allocated array of digests. Each element + * in the returned list is an integer belonging to the + * message-digest enumeration #mbedtls_md_type_t. + * The last entry is 0. + */ +const int *mbedtls_md_list( void ); + +/** + * \brief This function returns the message-digest information + * associated with the given digest name. + * + * \param md_name The name of the digest to search for. + * + * \return The message-digest information associated with \p md_name. + * \return NULL if the associated message-digest information is not found. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name ); + +/** + * \brief This function returns the message-digest information + * associated with the given digest type. + * + * \param md_type The type of digest to search for. + * + * \return The message-digest information associated with \p md_type. + * \return NULL if the associated message-digest information is not found. + */ +const mbedtls_md_info_t *mbedtls_md_info_from_type( mbedtls_md_type_t md_type ); + +/** + * \brief This function initializes a message-digest context without + * binding it to a particular message-digest algorithm. + * + * This function should always be called first. It prepares the + * context for mbedtls_md_setup() for binding it to a + * message-digest algorithm. + */ +void mbedtls_md_init( mbedtls_md_context_t *ctx ); + +/** + * \brief This function clears the internal structure of \p ctx and + * frees any embedded internal structure, but does not free + * \p ctx itself. + * + * If you have called mbedtls_md_setup() on \p ctx, you must + * call mbedtls_md_free() when you are no longer using the + * context. + * Calling this function if you have previously + * called mbedtls_md_init() and nothing else is optional. + * You must not call this function if you have not called + * mbedtls_md_init(). + */ +void mbedtls_md_free( mbedtls_md_context_t *ctx ); + +#if ! defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function selects the message digest algorithm to use, + * and allocates internal structures. + * + * It should be called after mbedtls_md_init() or mbedtls_md_free(). + * Makes it necessary to call mbedtls_md_free() later. + * + * \deprecated Superseded by mbedtls_md_setup() in 2.0.0 + * + * \param ctx The context to set up. + * \param md_info The information structure of the message-digest algorithm + * to use. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED on memory-allocation failure. + */ +int mbedtls_md_init_ctx( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info ) MBEDTLS_DEPRECATED; +#undef MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief This function selects the message digest algorithm to use, + * and allocates internal structures. + * + * It should be called after mbedtls_md_init() or + * mbedtls_md_free(). Makes it necessary to call + * mbedtls_md_free() later. + * + * \param ctx The context to set up. + * \param md_info The information structure of the message-digest algorithm + * to use. + * \param hmac Defines if HMAC is used. 0: HMAC is not used (saves some memory), + * or non-zero: HMAC is used with this context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + * \return #MBEDTLS_ERR_MD_ALLOC_FAILED on memory-allocation failure. + */ +int mbedtls_md_setup( mbedtls_md_context_t *ctx, const mbedtls_md_info_t *md_info, int hmac ); + +/** + * \brief This function clones the state of an message-digest + * context. + * + * \note You must call mbedtls_md_setup() on \c dst before calling + * this function. + * + * \note The two contexts must have the same type, + * for example, both are SHA-256. + * + * \warning This function clones the message-digest state, not the + * HMAC state. + * + * \param dst The destination context. + * \param src The context to be cloned. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification failure. + */ +int mbedtls_md_clone( mbedtls_md_context_t *dst, + const mbedtls_md_context_t *src ); + +/** + * \brief This function extracts the message-digest size from the + * message-digest information structure. + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * + * \return The size of the message-digest output in Bytes. + */ +unsigned char mbedtls_md_get_size( const mbedtls_md_info_t *md_info ); + +/** + * \brief This function extracts the message-digest type from the + * message-digest information structure. + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * + * \return The type of the message digest. + */ +mbedtls_md_type_t mbedtls_md_get_type( const mbedtls_md_info_t *md_info ); + +/** + * \brief This function extracts the message-digest name from the + * message-digest information structure. + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * + * \return The name of the message digest. + */ +const char *mbedtls_md_get_name( const mbedtls_md_info_t *md_info ); + +/** + * \brief This function starts a message-digest computation. + * + * You must call this function after setting up the context + * with mbedtls_md_setup(), and before passing data with + * mbedtls_md_update(). + * + * \param ctx The generic message-digest context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_starts( mbedtls_md_context_t *ctx ); + +/** + * \brief This function feeds an input buffer into an ongoing + * message-digest computation. + * + * You must call mbedtls_md_starts() before calling this + * function. You may call this function multiple times. + * Afterwards, call mbedtls_md_finish(). + * + * \param ctx The generic message-digest context. + * \param input The buffer holding the input data. + * \param ilen The length of the input data. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_update( mbedtls_md_context_t *ctx, const unsigned char *input, size_t ilen ); + +/** + * \brief This function finishes the digest operation, + * and writes the result to the output buffer. + * + * Call this function after a call to mbedtls_md_starts(), + * followed by any number of calls to mbedtls_md_update(). + * Afterwards, you may either clear the context with + * mbedtls_md_free(), or call mbedtls_md_starts() to reuse + * the context for another digest operation with the same + * algorithm. + * + * \param ctx The generic message-digest context. + * \param output The buffer for the generic message-digest checksum result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_finish( mbedtls_md_context_t *ctx, unsigned char *output ); + +/** + * \brief This function calculates the message-digest of a buffer, + * with respect to a configurable message-digest algorithm + * in a single call. + * + * The result is calculated as + * Output = message_digest(input buffer). + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * \param input The buffer holding the data. + * \param ilen The length of the input data. + * \param output The generic message-digest checksum result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md( const mbedtls_md_info_t *md_info, const unsigned char *input, size_t ilen, + unsigned char *output ); + +#if defined(MBEDTLS_FS_IO) +/** + * \brief This function calculates the message-digest checksum + * result of the contents of the provided file. + * + * The result is calculated as + * Output = message_digest(file contents). + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * \param path The input file name. + * \param output The generic message-digest checksum result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_FILE_IO_ERROR on an I/O error accessing + * the file pointed by \p path. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA if \p md_info was NULL. + */ +int mbedtls_md_file( const mbedtls_md_info_t *md_info, const char *path, + unsigned char *output ); +#endif /* MBEDTLS_FS_IO */ + +/** + * \brief This function sets the HMAC key and prepares to + * authenticate a new message. + * + * Call this function after mbedtls_md_setup(), to use + * the MD context for an HMAC calculation, then call + * mbedtls_md_hmac_update() to provide the input data, and + * mbedtls_md_hmac_finish() to get the HMAC value. + * + * \param ctx The message digest context containing an embedded HMAC + * context. + * \param key The HMAC secret key. + * \param keylen The length of the HMAC key in Bytes. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_hmac_starts( mbedtls_md_context_t *ctx, const unsigned char *key, + size_t keylen ); + +/** + * \brief This function feeds an input buffer into an ongoing HMAC + * computation. + * + * Call mbedtls_md_hmac_starts() or mbedtls_md_hmac_reset() + * before calling this function. + * You may call this function multiple times to pass the + * input piecewise. + * Afterwards, call mbedtls_md_hmac_finish(). + * + * \param ctx The message digest context containing an embedded HMAC + * context. + * \param input The buffer holding the input data. + * \param ilen The length of the input data. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_hmac_update( mbedtls_md_context_t *ctx, const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the HMAC operation, and writes + * the result to the output buffer. + * + * Call this function after mbedtls_md_hmac_starts() and + * mbedtls_md_hmac_update() to get the HMAC value. Afterwards + * you may either call mbedtls_md_free() to clear the context, + * or call mbedtls_md_hmac_reset() to reuse the context with + * the same HMAC key. + * + * \param ctx The message digest context containing an embedded HMAC + * context. + * \param output The generic HMAC checksum result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_hmac_finish( mbedtls_md_context_t *ctx, unsigned char *output); + +/** + * \brief This function prepares to authenticate a new message with + * the same key as the previous HMAC operation. + * + * You may call this function after mbedtls_md_hmac_finish(). + * Afterwards call mbedtls_md_hmac_update() to pass the new + * input. + * + * \param ctx The message digest context containing an embedded HMAC + * context. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_hmac_reset( mbedtls_md_context_t *ctx ); + +/** + * \brief This function calculates the full generic HMAC + * on the input buffer with the provided key. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The HMAC result is calculated as + * output = generic HMAC(hmac key, input buffer). + * + * \param md_info The information structure of the message-digest algorithm + * to use. + * \param key The HMAC secret key. + * \param keylen The length of the HMAC secret key in Bytes. + * \param input The buffer holding the input data. + * \param ilen The length of the input data. + * \param output The generic HMAC result. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MD_BAD_INPUT_DATA on parameter-verification + * failure. + */ +int mbedtls_md_hmac( const mbedtls_md_info_t *md_info, const unsigned char *key, size_t keylen, + const unsigned char *input, size_t ilen, + unsigned char *output ); + +/* Internal use */ +int mbedtls_md_process( mbedtls_md_context_t *ctx, const unsigned char *data ); + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_MD_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md2.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md2.h new file mode 100644 index 00000000..df1d5f7e --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md2.h @@ -0,0 +1,306 @@ +/** + * \file md2.h + * + * \brief MD2 message digest algorithm (hash function) + * + * \warning MD2 is considered a weak message digest and its use constitutes a + * security risk. We recommend considering stronger message digests + * instead. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + * + */ +#ifndef MBEDTLS_MD2_H +#define MBEDTLS_MD2_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +/* MBEDTLS_ERR_MD2_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_MD2_HW_ACCEL_FAILED -0x002B /**< MD2 hardware accelerator failed */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_MD2_ALT) +// Regular implementation +// + +/** + * \brief MD2 context structure + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +typedef struct mbedtls_md2_context +{ + unsigned char cksum[16]; /*!< checksum of the data block */ + unsigned char state[48]; /*!< intermediate digest state */ + unsigned char buffer[16]; /*!< data block being processed */ + size_t left; /*!< amount of data in buffer */ +} +mbedtls_md2_context; + +#else /* MBEDTLS_MD2_ALT */ +#include "md2_alt.h" +#endif /* MBEDTLS_MD2_ALT */ + +/** + * \brief Initialize MD2 context + * + * \param ctx MD2 context to be initialized + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md2_init( mbedtls_md2_context *ctx ); + +/** + * \brief Clear MD2 context + * + * \param ctx MD2 context to be cleared + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md2_free( mbedtls_md2_context *ctx ); + +/** + * \brief Clone (the state of) an MD2 context + * + * \param dst The destination context + * \param src The context to be cloned + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md2_clone( mbedtls_md2_context *dst, + const mbedtls_md2_context *src ); + +/** + * \brief MD2 context setup + * + * \param ctx context to be initialized + * + * \return 0 if successful + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md2_starts_ret( mbedtls_md2_context *ctx ); + +/** + * \brief MD2 process buffer + * + * \param ctx MD2 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \return 0 if successful + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md2_update_ret( mbedtls_md2_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief MD2 final digest + * + * \param ctx MD2 context + * \param output MD2 checksum result + * + * \return 0 if successful + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md2_finish_ret( mbedtls_md2_context *ctx, + unsigned char output[16] ); + +/** + * \brief MD2 process data block (internal use only) + * + * \param ctx MD2 context + * + * \return 0 if successful + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_internal_md2_process( mbedtls_md2_context *ctx ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief MD2 context setup + * + * \deprecated Superseded by mbedtls_md2_starts_ret() in 2.7.0 + * + * \param ctx context to be initialized + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md2_starts( mbedtls_md2_context *ctx ); + +/** + * \brief MD2 process buffer + * + * \deprecated Superseded by mbedtls_md2_update_ret() in 2.7.0 + * + * \param ctx MD2 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md2_update( mbedtls_md2_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief MD2 final digest + * + * \deprecated Superseded by mbedtls_md2_finish_ret() in 2.7.0 + * + * \param ctx MD2 context + * \param output MD2 checksum result + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md2_finish( mbedtls_md2_context *ctx, + unsigned char output[16] ); + +/** + * \brief MD2 process data block (internal use only) + * + * \deprecated Superseded by mbedtls_internal_md2_process() in 2.7.0 + * + * \param ctx MD2 context + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md2_process( mbedtls_md2_context *ctx ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Output = MD2( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD2 checksum result + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md2_ret( const unsigned char *input, + size_t ilen, + unsigned char output[16] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Output = MD2( input buffer ) + * + * \deprecated Superseded by mbedtls_md2_ret() in 2.7.0 + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD2 checksum result + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md2( const unsigned char *input, + size_t ilen, + unsigned char output[16] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + * + * \warning MD2 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md2_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_md2.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md4.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md4.h new file mode 100644 index 00000000..e7accd45 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md4.h @@ -0,0 +1,311 @@ +/** + * \file md4.h + * + * \brief MD4 message digest algorithm (hash function) + * + * \warning MD4 is considered a weak message digest and its use constitutes a + * security risk. We recommend considering stronger message digests + * instead. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + * + */ +#ifndef MBEDTLS_MD4_H +#define MBEDTLS_MD4_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* MBEDTLS_ERR_MD4_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_MD4_HW_ACCEL_FAILED -0x002D /**< MD4 hardware accelerator failed */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_MD4_ALT) +// Regular implementation +// + +/** + * \brief MD4 context structure + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +typedef struct mbedtls_md4_context +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_md4_context; + +#else /* MBEDTLS_MD4_ALT */ +#include "md4_alt.h" +#endif /* MBEDTLS_MD4_ALT */ + +/** + * \brief Initialize MD4 context + * + * \param ctx MD4 context to be initialized + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md4_init( mbedtls_md4_context *ctx ); + +/** + * \brief Clear MD4 context + * + * \param ctx MD4 context to be cleared + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md4_free( mbedtls_md4_context *ctx ); + +/** + * \brief Clone (the state of) an MD4 context + * + * \param dst The destination context + * \param src The context to be cloned + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md4_clone( mbedtls_md4_context *dst, + const mbedtls_md4_context *src ); + +/** + * \brief MD4 context setup + * + * \param ctx context to be initialized + * + * \return 0 if successful + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + */ +int mbedtls_md4_starts_ret( mbedtls_md4_context *ctx ); + +/** + * \brief MD4 process buffer + * + * \param ctx MD4 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \return 0 if successful + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md4_update_ret( mbedtls_md4_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief MD4 final digest + * + * \param ctx MD4 context + * \param output MD4 checksum result + * + * \return 0 if successful + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx, + unsigned char output[16] ); + +/** + * \brief MD4 process data block (internal use only) + * + * \param ctx MD4 context + * \param data buffer holding one block of data + * + * \return 0 if successful + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_internal_md4_process( mbedtls_md4_context *ctx, + const unsigned char data[64] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief MD4 context setup + * + * \deprecated Superseded by mbedtls_md4_starts_ret() in 2.7.0 + * + * \param ctx context to be initialized + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md4_starts( mbedtls_md4_context *ctx ); + +/** + * \brief MD4 process buffer + * + * \deprecated Superseded by mbedtls_md4_update_ret() in 2.7.0 + * + * \param ctx MD4 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md4_update( mbedtls_md4_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief MD4 final digest + * + * \deprecated Superseded by mbedtls_md4_finish_ret() in 2.7.0 + * + * \param ctx MD4 context + * \param output MD4 checksum result + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md4_finish( mbedtls_md4_context *ctx, + unsigned char output[16] ); + +/** + * \brief MD4 process data block (internal use only) + * + * \deprecated Superseded by mbedtls_internal_md4_process() in 2.7.0 + * + * \param ctx MD4 context + * \param data buffer holding one block of data + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md4_process( mbedtls_md4_context *ctx, + const unsigned char data[64] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Output = MD4( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD4 checksum result + * + * \return 0 if successful + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md4_ret( const unsigned char *input, + size_t ilen, + unsigned char output[16] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Output = MD4( input buffer ) + * + * \deprecated Superseded by mbedtls_md4_ret() in 2.7.0 + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD4 checksum result + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md4( const unsigned char *input, + size_t ilen, + unsigned char output[16] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + * + * \warning MD4 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md4_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_md4.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md5.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md5.h new file mode 100644 index 00000000..4206c1fb --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md5.h @@ -0,0 +1,311 @@ +/** + * \file md5.h + * + * \brief MD5 message digest algorithm (hash function) + * + * \warning MD5 is considered a weak message digest and its use constitutes a + * security risk. We recommend considering stronger message + * digests instead. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD5_H +#define MBEDTLS_MD5_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* MBEDTLS_ERR_MD5_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_MD5_HW_ACCEL_FAILED -0x002F /**< MD5 hardware accelerator failed */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_MD5_ALT) +// Regular implementation +// + +/** + * \brief MD5 context structure + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +typedef struct mbedtls_md5_context +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[4]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_md5_context; + +#else /* MBEDTLS_MD5_ALT */ +#include "md5_alt.h" +#endif /* MBEDTLS_MD5_ALT */ + +/** + * \brief Initialize MD5 context + * + * \param ctx MD5 context to be initialized + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md5_init( mbedtls_md5_context *ctx ); + +/** + * \brief Clear MD5 context + * + * \param ctx MD5 context to be cleared + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md5_free( mbedtls_md5_context *ctx ); + +/** + * \brief Clone (the state of) an MD5 context + * + * \param dst The destination context + * \param src The context to be cloned + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +void mbedtls_md5_clone( mbedtls_md5_context *dst, + const mbedtls_md5_context *src ); + +/** + * \brief MD5 context setup + * + * \param ctx context to be initialized + * + * \return 0 if successful + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md5_starts_ret( mbedtls_md5_context *ctx ); + +/** + * \brief MD5 process buffer + * + * \param ctx MD5 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \return 0 if successful + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md5_update_ret( mbedtls_md5_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief MD5 final digest + * + * \param ctx MD5 context + * \param output MD5 checksum result + * + * \return 0 if successful + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md5_finish_ret( mbedtls_md5_context *ctx, + unsigned char output[16] ); + +/** + * \brief MD5 process data block (internal use only) + * + * \param ctx MD5 context + * \param data buffer holding one block of data + * + * \return 0 if successful + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_internal_md5_process( mbedtls_md5_context *ctx, + const unsigned char data[64] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief MD5 context setup + * + * \deprecated Superseded by mbedtls_md5_starts_ret() in 2.7.0 + * + * \param ctx context to be initialized + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md5_starts( mbedtls_md5_context *ctx ); + +/** + * \brief MD5 process buffer + * + * \deprecated Superseded by mbedtls_md5_update_ret() in 2.7.0 + * + * \param ctx MD5 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md5_update( mbedtls_md5_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief MD5 final digest + * + * \deprecated Superseded by mbedtls_md5_finish_ret() in 2.7.0 + * + * \param ctx MD5 context + * \param output MD5 checksum result + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md5_finish( mbedtls_md5_context *ctx, + unsigned char output[16] ); + +/** + * \brief MD5 process data block (internal use only) + * + * \deprecated Superseded by mbedtls_internal_md5_process() in 2.7.0 + * + * \param ctx MD5 context + * \param data buffer holding one block of data + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md5_process( mbedtls_md5_context *ctx, + const unsigned char data[64] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Output = MD5( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD5 checksum result + * + * \return 0 if successful + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md5_ret( const unsigned char *input, + size_t ilen, + unsigned char output[16] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Output = MD5( input buffer ) + * + * \deprecated Superseded by mbedtls_md5_ret() in 2.7.0 + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output MD5 checksum result + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +MBEDTLS_DEPRECATED void mbedtls_md5( const unsigned char *input, + size_t ilen, + unsigned char output[16] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + * + * \warning MD5 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +int mbedtls_md5_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_md5.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md_internal.h new file mode 100644 index 00000000..0922dff9 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/md_internal.h @@ -0,0 +1,92 @@ +/** + * \file md_internal.h + * + * \brief Message digest wrappers. + * + * \warning This in an internal header. Do not include directly. + * + * \author Adriaan de Jong + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MD_WRAP_H +#define MBEDTLS_MD_WRAP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/md.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Message digest information. + * Allows message digest functions to be called in a generic way. + */ +struct mbedtls_md_info_t +{ + /** Name of the message digest */ + const char * name; + + /** Digest identifier */ + mbedtls_md_type_t type; + + /** Output length of the digest function in bytes */ + unsigned char size; + + /** Block length of the digest function in bytes */ + unsigned char block_size; +}; + +#if defined(MBEDTLS_MD2_C) +extern const mbedtls_md_info_t mbedtls_md2_info; +#endif +#if defined(MBEDTLS_MD4_C) +extern const mbedtls_md_info_t mbedtls_md4_info; +#endif +#if defined(MBEDTLS_MD5_C) +extern const mbedtls_md_info_t mbedtls_md5_info; +#endif +#if defined(MBEDTLS_RIPEMD160_C) +extern const mbedtls_md_info_t mbedtls_ripemd160_info; +#endif +#if defined(MBEDTLS_SHA1_C) +extern const mbedtls_md_info_t mbedtls_sha1_info; +#endif +#if defined(MBEDTLS_SHA256_C) +extern const mbedtls_md_info_t mbedtls_sha224_info; +extern const mbedtls_md_info_t mbedtls_sha256_info; +#endif +#if defined(MBEDTLS_SHA512_C) +#if !defined(MBEDTLS_SHA512_NO_SHA384) +extern const mbedtls_md_info_t mbedtls_sha384_info; +#endif +extern const mbedtls_md_info_t mbedtls_sha512_info; +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_MD_WRAP_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/memory_buffer_alloc.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/memory_buffer_alloc.h new file mode 100644 index 00000000..8e77f6f7 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/memory_buffer_alloc.h @@ -0,0 +1,151 @@ +/** + * \file memory_buffer_alloc.h + * + * \brief Buffer-based memory allocator + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_MEMORY_BUFFER_ALLOC_H +#define MBEDTLS_MEMORY_BUFFER_ALLOC_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +#if !defined(MBEDTLS_MEMORY_ALIGN_MULTIPLE) +#define MBEDTLS_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */ +#endif + +/* \} name SECTION: Module settings */ + +#define MBEDTLS_MEMORY_VERIFY_NONE 0 +#define MBEDTLS_MEMORY_VERIFY_ALLOC (1 << 0) +#define MBEDTLS_MEMORY_VERIFY_FREE (1 << 1) +#define MBEDTLS_MEMORY_VERIFY_ALWAYS (MBEDTLS_MEMORY_VERIFY_ALLOC | MBEDTLS_MEMORY_VERIFY_FREE) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Initialize use of stack-based memory allocator. + * The stack-based allocator does memory management inside the + * presented buffer and does not call calloc() and free(). + * It sets the global mbedtls_calloc() and mbedtls_free() pointers + * to its own functions. + * (Provided mbedtls_calloc() and mbedtls_free() are thread-safe if + * MBEDTLS_THREADING_C is defined) + * + * \note This code is not optimized and provides a straight-forward + * implementation of a stack-based memory allocator. + * + * \param buf buffer to use as heap + * \param len size of the buffer + */ +void mbedtls_memory_buffer_alloc_init( unsigned char *buf, size_t len ); + +/** + * \brief Free the mutex for thread-safety and clear remaining memory + */ +void mbedtls_memory_buffer_alloc_free( void ); + +/** + * \brief Determine when the allocator should automatically verify the state + * of the entire chain of headers / meta-data. + * (Default: MBEDTLS_MEMORY_VERIFY_NONE) + * + * \param verify One of MBEDTLS_MEMORY_VERIFY_NONE, MBEDTLS_MEMORY_VERIFY_ALLOC, + * MBEDTLS_MEMORY_VERIFY_FREE or MBEDTLS_MEMORY_VERIFY_ALWAYS + */ +void mbedtls_memory_buffer_set_verify( int verify ); + +#if defined(MBEDTLS_MEMORY_DEBUG) +/** + * \brief Print out the status of the allocated memory (primarily for use + * after a program should have de-allocated all memory) + * Prints out a list of 'still allocated' blocks and their stack + * trace if MBEDTLS_MEMORY_BACKTRACE is defined. + */ +void mbedtls_memory_buffer_alloc_status( void ); + +/** + * \brief Get the peak heap usage so far + * + * \param max_used Peak number of bytes in use or committed. This + * includes bytes in allocated blocks too small to split + * into smaller blocks but larger than the requested size. + * \param max_blocks Peak number of blocks in use, including free and used + */ +void mbedtls_memory_buffer_alloc_max_get( size_t *max_used, size_t *max_blocks ); + +/** + * \brief Reset peak statistics + */ +void mbedtls_memory_buffer_alloc_max_reset( void ); + +/** + * \brief Get the current heap usage + * + * \param cur_used Current number of bytes in use or committed. This + * includes bytes in allocated blocks too small to split + * into smaller blocks but larger than the requested size. + * \param cur_blocks Current number of blocks in use, including free and used + */ +void mbedtls_memory_buffer_alloc_cur_get( size_t *cur_used, size_t *cur_blocks ); +#endif /* MBEDTLS_MEMORY_DEBUG */ + +/** + * \brief Verifies that all headers in the memory buffer are correct + * and contain sane values. Helps debug buffer-overflow errors. + * + * Prints out first failure if MBEDTLS_MEMORY_DEBUG is defined. + * Prints out full header information if MBEDTLS_MEMORY_DEBUG + * is defined. (Includes stack trace information for each block if + * MBEDTLS_MEMORY_BACKTRACE is defined as well). + * + * \return 0 if verified, 1 otherwise + */ +int mbedtls_memory_buffer_alloc_verify( void ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_memory_buffer_alloc_self_test( int verbose ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* memory_buffer_alloc.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/nist_kw.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/nist_kw.h new file mode 100644 index 00000000..b39406f4 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/nist_kw.h @@ -0,0 +1,184 @@ +/** + * \file nist_kw.h + * + * \brief This file provides an API for key wrapping (KW) and key wrapping with + * padding (KWP) as defined in NIST SP 800-38F. + * https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38F.pdf + * + * Key wrapping specifies a deterministic authenticated-encryption mode + * of operation, according to NIST SP 800-38F: Recommendation for + * Block Cipher Modes of Operation: Methods for Key Wrapping. Its + * purpose is to protect cryptographic keys. + * + * Its equivalent is RFC 3394 for KW, and RFC 5649 for KWP. + * https://tools.ietf.org/html/rfc3394 + * https://tools.ietf.org/html/rfc5649 + * + */ +/* + * Copyright (C) 2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_NIST_KW_H +#define MBEDTLS_NIST_KW_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum +{ + MBEDTLS_KW_MODE_KW = 0, + MBEDTLS_KW_MODE_KWP = 1 +} mbedtls_nist_kw_mode_t; + +#if !defined(MBEDTLS_NIST_KW_ALT) +// Regular implementation +// + +/** + * \brief The key wrapping context-type definition. The key wrapping context is passed + * to the APIs called. + * + * \note The definition of this type may change in future library versions. + * Don't make any assumptions on this context! + */ +typedef struct { + mbedtls_cipher_context_t cipher_ctx; /*!< The cipher context used. */ +} mbedtls_nist_kw_context; + +#else /* MBEDTLS_NIST_key wrapping_ALT */ +#include "nist_kw_alt.h" +#endif /* MBEDTLS_NIST_KW_ALT */ + +/** + * \brief This function initializes the specified key wrapping context + * to make references valid and prepare the context + * for mbedtls_nist_kw_setkey() or mbedtls_nist_kw_free(). + * + * \param ctx The key wrapping context to initialize. + * + */ +void mbedtls_nist_kw_init( mbedtls_nist_kw_context *ctx ); + +/** + * \brief This function initializes the key wrapping context set in the + * \p ctx parameter and sets the encryption key. + * + * \param ctx The key wrapping context. + * \param cipher The 128-bit block cipher to use. Only AES is supported. + * \param key The Key Encryption Key (KEK). + * \param keybits The KEK size in bits. This must be acceptable by the cipher. + * \param is_wrap Specify whether the operation within the context is wrapping or unwrapping + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA for any invalid input. + * \return \c MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE for 128-bit block ciphers + * which are not supported. + * \return cipher-specific error code on failure of the underlying cipher. + */ +int mbedtls_nist_kw_setkey( mbedtls_nist_kw_context *ctx, + mbedtls_cipher_id_t cipher, + const unsigned char *key, + unsigned int keybits, + const int is_wrap ); + +/** + * \brief This function releases and clears the specified key wrapping context + * and underlying cipher sub-context. + * + * \param ctx The key wrapping context to clear. + */ +void mbedtls_nist_kw_free( mbedtls_nist_kw_context *ctx ); + +/** + * \brief This function encrypts a buffer using key wrapping. + * + * \param ctx The key wrapping context to use for encryption. + * \param mode The key wrapping mode to use (MBEDTLS_KW_MODE_KW or MBEDTLS_KW_MODE_KWP) + * \param input The buffer holding the input data. + * \param in_len The length of the input data in Bytes. + * The input uses units of 8 Bytes called semiblocks. + *
    • For KW mode: a multiple of 8 bytes between 16 and 2^57-8 inclusive.
    • + *
    • For KWP mode: any length between 1 and 2^32-1 inclusive.
    + * \param[out] output The buffer holding the output data. + *
    • For KW mode: Must be at least 8 bytes larger than \p in_len.
    • + *
    • For KWP mode: Must be at least 8 bytes larger rounded up to a multiple of + * 8 bytes for KWP (15 bytes at most).
    + * \param[out] out_len The number of bytes written to the output buffer. \c 0 on failure. + * \param[in] out_size The capacity of the output buffer. + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA for invalid input length. + * \return cipher-specific error code on failure of the underlying cipher. + */ +int mbedtls_nist_kw_wrap( mbedtls_nist_kw_context *ctx, mbedtls_nist_kw_mode_t mode, + const unsigned char *input, size_t in_len, + unsigned char *output, size_t* out_len, size_t out_size ); + +/** + * \brief This function decrypts a buffer using key wrapping. + * + * \param ctx The key wrapping context to use for decryption. + * \param mode The key wrapping mode to use (MBEDTLS_KW_MODE_KW or MBEDTLS_KW_MODE_KWP) + * \param input The buffer holding the input data. + * \param in_len The length of the input data in Bytes. + * The input uses units of 8 Bytes called semiblocks. + * The input must be a multiple of semiblocks. + *
    • For KW mode: a multiple of 8 bytes between 24 and 2^57 inclusive.
    • + *
    • For KWP mode: a multiple of 8 bytes between 16 and 2^32 inclusive.
    + * \param[out] output The buffer holding the output data. + * The output buffer's minimal length is 8 bytes shorter than \p in_len. + * \param[out] out_len The number of bytes written to the output buffer. \c 0 on failure. + * For KWP mode, the length could be up to 15 bytes shorter than \p in_len, + * depending on how much padding was added to the data. + * \param[in] out_size The capacity of the output buffer. + * + * \return \c 0 on success. + * \return \c MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA for invalid input length. + * \return \c MBEDTLS_ERR_CIPHER_AUTH_FAILED for verification failure of the ciphertext. + * \return cipher-specific error code on failure of the underlying cipher. + */ +int mbedtls_nist_kw_unwrap( mbedtls_nist_kw_context *ctx, mbedtls_nist_kw_mode_t mode, + const unsigned char *input, size_t in_len, + unsigned char *output, size_t* out_len, size_t out_size); + + +#if defined(MBEDTLS_SELF_TEST) && defined(MBEDTLS_AES_C) +/** + * \brief The key wrapping checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_nist_kw_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST && MBEDTLS_AES_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_NIST_KW_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/oid.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/oid.h new file mode 100644 index 00000000..59ce0206 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/oid.h @@ -0,0 +1,649 @@ +/** + * \file oid.h + * + * \brief Object Identifier (OID) database + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_OID_H +#define MBEDTLS_OID_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/asn1.h" +#include "mbedtls/pk.h" + +#include + +#if defined(MBEDTLS_CIPHER_C) +#include "mbedtls/cipher.h" +#endif + +#if defined(MBEDTLS_MD_C) +#include "mbedtls/md.h" +#endif + +#define MBEDTLS_ERR_OID_NOT_FOUND -0x002E /**< OID is not found. */ +#define MBEDTLS_ERR_OID_BUF_TOO_SMALL -0x000B /**< output buffer is too small */ + +/* This is for the benefit of X.509, but defined here in order to avoid + * having a "backwards" include of x.509.h here */ +/* + * X.509 extension types (internal, arbitrary values for bitsets) + */ +#define MBEDTLS_OID_X509_EXT_AUTHORITY_KEY_IDENTIFIER (1 << 0) +#define MBEDTLS_OID_X509_EXT_SUBJECT_KEY_IDENTIFIER (1 << 1) +#define MBEDTLS_OID_X509_EXT_KEY_USAGE (1 << 2) +#define MBEDTLS_OID_X509_EXT_CERTIFICATE_POLICIES (1 << 3) +#define MBEDTLS_OID_X509_EXT_POLICY_MAPPINGS (1 << 4) +#define MBEDTLS_OID_X509_EXT_SUBJECT_ALT_NAME (1 << 5) +#define MBEDTLS_OID_X509_EXT_ISSUER_ALT_NAME (1 << 6) +#define MBEDTLS_OID_X509_EXT_SUBJECT_DIRECTORY_ATTRS (1 << 7) +#define MBEDTLS_OID_X509_EXT_BASIC_CONSTRAINTS (1 << 8) +#define MBEDTLS_OID_X509_EXT_NAME_CONSTRAINTS (1 << 9) +#define MBEDTLS_OID_X509_EXT_POLICY_CONSTRAINTS (1 << 10) +#define MBEDTLS_OID_X509_EXT_EXTENDED_KEY_USAGE (1 << 11) +#define MBEDTLS_OID_X509_EXT_CRL_DISTRIBUTION_POINTS (1 << 12) +#define MBEDTLS_OID_X509_EXT_INIHIBIT_ANYPOLICY (1 << 13) +#define MBEDTLS_OID_X509_EXT_FRESHEST_CRL (1 << 14) +#define MBEDTLS_OID_X509_EXT_NS_CERT_TYPE (1 << 16) + +/* + * Top level OID tuples + */ +#define MBEDTLS_OID_ISO_MEMBER_BODIES "\x2a" /* {iso(1) member-body(2)} */ +#define MBEDTLS_OID_ISO_IDENTIFIED_ORG "\x2b" /* {iso(1) identified-organization(3)} */ +#define MBEDTLS_OID_ISO_CCITT_DS "\x55" /* {joint-iso-ccitt(2) ds(5)} */ +#define MBEDTLS_OID_ISO_ITU_COUNTRY "\x60" /* {joint-iso-itu-t(2) country(16)} */ + +/* + * ISO Member bodies OID parts + */ +#define MBEDTLS_OID_COUNTRY_US "\x86\x48" /* {us(840)} */ +#define MBEDTLS_OID_ORG_RSA_DATA_SECURITY "\x86\xf7\x0d" /* {rsadsi(113549)} */ +#define MBEDTLS_OID_RSA_COMPANY MBEDTLS_OID_ISO_MEMBER_BODIES MBEDTLS_OID_COUNTRY_US \ + MBEDTLS_OID_ORG_RSA_DATA_SECURITY /* {iso(1) member-body(2) us(840) rsadsi(113549)} */ +#define MBEDTLS_OID_ORG_ANSI_X9_62 "\xce\x3d" /* ansi-X9-62(10045) */ +#define MBEDTLS_OID_ANSI_X9_62 MBEDTLS_OID_ISO_MEMBER_BODIES MBEDTLS_OID_COUNTRY_US \ + MBEDTLS_OID_ORG_ANSI_X9_62 + +/* + * ISO Identified organization OID parts + */ +#define MBEDTLS_OID_ORG_DOD "\x06" /* {dod(6)} */ +#define MBEDTLS_OID_ORG_OIW "\x0e" +#define MBEDTLS_OID_OIW_SECSIG MBEDTLS_OID_ORG_OIW "\x03" +#define MBEDTLS_OID_OIW_SECSIG_ALG MBEDTLS_OID_OIW_SECSIG "\x02" +#define MBEDTLS_OID_OIW_SECSIG_SHA1 MBEDTLS_OID_OIW_SECSIG_ALG "\x1a" +#define MBEDTLS_OID_ORG_CERTICOM "\x81\x04" /* certicom(132) */ +#define MBEDTLS_OID_CERTICOM MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_CERTICOM +#define MBEDTLS_OID_ORG_TELETRUST "\x24" /* teletrust(36) */ +#define MBEDTLS_OID_TELETRUST MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_TELETRUST + +/* + * ISO ITU OID parts + */ +#define MBEDTLS_OID_ORGANIZATION "\x01" /* {organization(1)} */ +#define MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ISO_ITU_COUNTRY MBEDTLS_OID_COUNTRY_US MBEDTLS_OID_ORGANIZATION /* {joint-iso-itu-t(2) country(16) us(840) organization(1)} */ + +#define MBEDTLS_OID_ORG_GOV "\x65" /* {gov(101)} */ +#define MBEDTLS_OID_GOV MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ORG_GOV /* {joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101)} */ + +#define MBEDTLS_OID_ORG_NETSCAPE "\x86\xF8\x42" /* {netscape(113730)} */ +#define MBEDTLS_OID_NETSCAPE MBEDTLS_OID_ISO_ITU_US_ORG MBEDTLS_OID_ORG_NETSCAPE /* Netscape OID {joint-iso-itu-t(2) country(16) us(840) organization(1) netscape(113730)} */ + +/* ISO arc for standard certificate and CRL extensions */ +#define MBEDTLS_OID_ID_CE MBEDTLS_OID_ISO_CCITT_DS "\x1D" /**< id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} */ + +#define MBEDTLS_OID_NIST_ALG MBEDTLS_OID_GOV "\x03\x04" /** { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) */ + +/** + * Private Internet Extensions + * { iso(1) identified-organization(3) dod(6) internet(1) + * security(5) mechanisms(5) pkix(7) } + */ +#define MBEDTLS_OID_INTERNET MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_ORG_DOD "\x01" +#define MBEDTLS_OID_PKIX MBEDTLS_OID_INTERNET "\x05\x05\x07" + +/* + * Arc for standard naming attributes + */ +#define MBEDTLS_OID_AT MBEDTLS_OID_ISO_CCITT_DS "\x04" /**< id-at OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 4} */ +#define MBEDTLS_OID_AT_CN MBEDTLS_OID_AT "\x03" /**< id-at-commonName AttributeType:= {id-at 3} */ +#define MBEDTLS_OID_AT_SUR_NAME MBEDTLS_OID_AT "\x04" /**< id-at-surName AttributeType:= {id-at 4} */ +#define MBEDTLS_OID_AT_SERIAL_NUMBER MBEDTLS_OID_AT "\x05" /**< id-at-serialNumber AttributeType:= {id-at 5} */ +#define MBEDTLS_OID_AT_COUNTRY MBEDTLS_OID_AT "\x06" /**< id-at-countryName AttributeType:= {id-at 6} */ +#define MBEDTLS_OID_AT_LOCALITY MBEDTLS_OID_AT "\x07" /**< id-at-locality AttributeType:= {id-at 7} */ +#define MBEDTLS_OID_AT_STATE MBEDTLS_OID_AT "\x08" /**< id-at-state AttributeType:= {id-at 8} */ +#define MBEDTLS_OID_AT_ORGANIZATION MBEDTLS_OID_AT "\x0A" /**< id-at-organizationName AttributeType:= {id-at 10} */ +#define MBEDTLS_OID_AT_ORG_UNIT MBEDTLS_OID_AT "\x0B" /**< id-at-organizationalUnitName AttributeType:= {id-at 11} */ +#define MBEDTLS_OID_AT_TITLE MBEDTLS_OID_AT "\x0C" /**< id-at-title AttributeType:= {id-at 12} */ +#define MBEDTLS_OID_AT_POSTAL_ADDRESS MBEDTLS_OID_AT "\x10" /**< id-at-postalAddress AttributeType:= {id-at 16} */ +#define MBEDTLS_OID_AT_POSTAL_CODE MBEDTLS_OID_AT "\x11" /**< id-at-postalCode AttributeType:= {id-at 17} */ +#define MBEDTLS_OID_AT_GIVEN_NAME MBEDTLS_OID_AT "\x2A" /**< id-at-givenName AttributeType:= {id-at 42} */ +#define MBEDTLS_OID_AT_INITIALS MBEDTLS_OID_AT "\x2B" /**< id-at-initials AttributeType:= {id-at 43} */ +#define MBEDTLS_OID_AT_GENERATION_QUALIFIER MBEDTLS_OID_AT "\x2C" /**< id-at-generationQualifier AttributeType:= {id-at 44} */ +#define MBEDTLS_OID_AT_UNIQUE_IDENTIFIER MBEDTLS_OID_AT "\x2D" /**< id-at-uniqueIdentifier AttributType:= {id-at 45} */ +#define MBEDTLS_OID_AT_DN_QUALIFIER MBEDTLS_OID_AT "\x2E" /**< id-at-dnQualifier AttributeType:= {id-at 46} */ +#define MBEDTLS_OID_AT_PSEUDONYM MBEDTLS_OID_AT "\x41" /**< id-at-pseudonym AttributeType:= {id-at 65} */ + +#define MBEDTLS_OID_DOMAIN_COMPONENT "\x09\x92\x26\x89\x93\xF2\x2C\x64\x01\x19" /** id-domainComponent AttributeType:= {itu-t(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) domainComponent(25)} */ + +/* + * OIDs for standard certificate extensions + */ +#define MBEDTLS_OID_AUTHORITY_KEY_IDENTIFIER MBEDTLS_OID_ID_CE "\x23" /**< id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } */ +#define MBEDTLS_OID_SUBJECT_KEY_IDENTIFIER MBEDTLS_OID_ID_CE "\x0E" /**< id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } */ +#define MBEDTLS_OID_KEY_USAGE MBEDTLS_OID_ID_CE "\x0F" /**< id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } */ +#define MBEDTLS_OID_CERTIFICATE_POLICIES MBEDTLS_OID_ID_CE "\x20" /**< id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } */ +#define MBEDTLS_OID_POLICY_MAPPINGS MBEDTLS_OID_ID_CE "\x21" /**< id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } */ +#define MBEDTLS_OID_SUBJECT_ALT_NAME MBEDTLS_OID_ID_CE "\x11" /**< id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } */ +#define MBEDTLS_OID_ISSUER_ALT_NAME MBEDTLS_OID_ID_CE "\x12" /**< id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } */ +#define MBEDTLS_OID_SUBJECT_DIRECTORY_ATTRS MBEDTLS_OID_ID_CE "\x09" /**< id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } */ +#define MBEDTLS_OID_BASIC_CONSTRAINTS MBEDTLS_OID_ID_CE "\x13" /**< id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } */ +#define MBEDTLS_OID_NAME_CONSTRAINTS MBEDTLS_OID_ID_CE "\x1E" /**< id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } */ +#define MBEDTLS_OID_POLICY_CONSTRAINTS MBEDTLS_OID_ID_CE "\x24" /**< id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } */ +#define MBEDTLS_OID_EXTENDED_KEY_USAGE MBEDTLS_OID_ID_CE "\x25" /**< id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } */ +#define MBEDTLS_OID_CRL_DISTRIBUTION_POINTS MBEDTLS_OID_ID_CE "\x1F" /**< id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } */ +#define MBEDTLS_OID_INIHIBIT_ANYPOLICY MBEDTLS_OID_ID_CE "\x36" /**< id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } */ +#define MBEDTLS_OID_FRESHEST_CRL MBEDTLS_OID_ID_CE "\x2E" /**< id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } */ + +/* + * Certificate policies + */ +#define MBEDTLS_OID_ANY_POLICY MBEDTLS_OID_CERTIFICATE_POLICIES "\x00" /**< anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 } */ + +/* + * Netscape certificate extensions + */ +#define MBEDTLS_OID_NS_CERT MBEDTLS_OID_NETSCAPE "\x01" +#define MBEDTLS_OID_NS_CERT_TYPE MBEDTLS_OID_NS_CERT "\x01" +#define MBEDTLS_OID_NS_BASE_URL MBEDTLS_OID_NS_CERT "\x02" +#define MBEDTLS_OID_NS_REVOCATION_URL MBEDTLS_OID_NS_CERT "\x03" +#define MBEDTLS_OID_NS_CA_REVOCATION_URL MBEDTLS_OID_NS_CERT "\x04" +#define MBEDTLS_OID_NS_RENEWAL_URL MBEDTLS_OID_NS_CERT "\x07" +#define MBEDTLS_OID_NS_CA_POLICY_URL MBEDTLS_OID_NS_CERT "\x08" +#define MBEDTLS_OID_NS_SSL_SERVER_NAME MBEDTLS_OID_NS_CERT "\x0C" +#define MBEDTLS_OID_NS_COMMENT MBEDTLS_OID_NS_CERT "\x0D" +#define MBEDTLS_OID_NS_DATA_TYPE MBEDTLS_OID_NETSCAPE "\x02" +#define MBEDTLS_OID_NS_CERT_SEQUENCE MBEDTLS_OID_NS_DATA_TYPE "\x05" + +/* + * OIDs for CRL extensions + */ +#define MBEDTLS_OID_PRIVATE_KEY_USAGE_PERIOD MBEDTLS_OID_ID_CE "\x10" +#define MBEDTLS_OID_CRL_NUMBER MBEDTLS_OID_ID_CE "\x14" /**< id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } */ + +/* + * X.509 v3 Extended key usage OIDs + */ +#define MBEDTLS_OID_ANY_EXTENDED_KEY_USAGE MBEDTLS_OID_EXTENDED_KEY_USAGE "\x00" /**< anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 } */ + +#define MBEDTLS_OID_KP MBEDTLS_OID_PKIX "\x03" /**< id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } */ +#define MBEDTLS_OID_SERVER_AUTH MBEDTLS_OID_KP "\x01" /**< id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } */ +#define MBEDTLS_OID_CLIENT_AUTH MBEDTLS_OID_KP "\x02" /**< id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } */ +#define MBEDTLS_OID_CODE_SIGNING MBEDTLS_OID_KP "\x03" /**< id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } */ +#define MBEDTLS_OID_EMAIL_PROTECTION MBEDTLS_OID_KP "\x04" /**< id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } */ +#define MBEDTLS_OID_TIME_STAMPING MBEDTLS_OID_KP "\x08" /**< id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } */ +#define MBEDTLS_OID_OCSP_SIGNING MBEDTLS_OID_KP "\x09" /**< id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } */ + +/** + * Wi-SUN Alliance Field Area Network + * { iso(1) identified-organization(3) dod(6) internet(1) + * private(4) enterprise(1) WiSUN(45605) FieldAreaNetwork(1) } + */ +#define MBEDTLS_OID_WISUN_FAN MBEDTLS_OID_INTERNET "\x04\x01\x82\xe4\x25\x01" + +#define MBEDTLS_OID_ON MBEDTLS_OID_PKIX "\x08" /**< id-on OBJECT IDENTIFIER ::= { id-pkix 8 } */ +#define MBEDTLS_OID_ON_HW_MODULE_NAME MBEDTLS_OID_ON "\x04" /**< id-on-hardwareModuleName OBJECT IDENTIFIER ::= { id-on 4 } */ + +/* + * PKCS definition OIDs + */ + +#define MBEDTLS_OID_PKCS MBEDTLS_OID_RSA_COMPANY "\x01" /**< pkcs OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) 1 } */ +#define MBEDTLS_OID_PKCS1 MBEDTLS_OID_PKCS "\x01" /**< pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 } */ +#define MBEDTLS_OID_PKCS5 MBEDTLS_OID_PKCS "\x05" /**< pkcs-5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 5 } */ +#define MBEDTLS_OID_PKCS9 MBEDTLS_OID_PKCS "\x09" /**< pkcs-9 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9 } */ +#define MBEDTLS_OID_PKCS12 MBEDTLS_OID_PKCS "\x0c" /**< pkcs-12 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 12 } */ + +/* + * PKCS#1 OIDs + */ +#define MBEDTLS_OID_PKCS1_RSA MBEDTLS_OID_PKCS1 "\x01" /**< rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } */ +#define MBEDTLS_OID_PKCS1_MD2 MBEDTLS_OID_PKCS1 "\x02" /**< md2WithRSAEncryption ::= { pkcs-1 2 } */ +#define MBEDTLS_OID_PKCS1_MD4 MBEDTLS_OID_PKCS1 "\x03" /**< md4WithRSAEncryption ::= { pkcs-1 3 } */ +#define MBEDTLS_OID_PKCS1_MD5 MBEDTLS_OID_PKCS1 "\x04" /**< md5WithRSAEncryption ::= { pkcs-1 4 } */ +#define MBEDTLS_OID_PKCS1_SHA1 MBEDTLS_OID_PKCS1 "\x05" /**< sha1WithRSAEncryption ::= { pkcs-1 5 } */ +#define MBEDTLS_OID_PKCS1_SHA224 MBEDTLS_OID_PKCS1 "\x0e" /**< sha224WithRSAEncryption ::= { pkcs-1 14 } */ +#define MBEDTLS_OID_PKCS1_SHA256 MBEDTLS_OID_PKCS1 "\x0b" /**< sha256WithRSAEncryption ::= { pkcs-1 11 } */ +#define MBEDTLS_OID_PKCS1_SHA384 MBEDTLS_OID_PKCS1 "\x0c" /**< sha384WithRSAEncryption ::= { pkcs-1 12 } */ +#define MBEDTLS_OID_PKCS1_SHA512 MBEDTLS_OID_PKCS1 "\x0d" /**< sha512WithRSAEncryption ::= { pkcs-1 13 } */ + +#define MBEDTLS_OID_RSA_SHA_OBS "\x2B\x0E\x03\x02\x1D" + +#define MBEDTLS_OID_PKCS9_EMAIL MBEDTLS_OID_PKCS9 "\x01" /**< emailAddress AttributeType ::= { pkcs-9 1 } */ + +/* RFC 4055 */ +#define MBEDTLS_OID_RSASSA_PSS MBEDTLS_OID_PKCS1 "\x0a" /**< id-RSASSA-PSS ::= { pkcs-1 10 } */ +#define MBEDTLS_OID_MGF1 MBEDTLS_OID_PKCS1 "\x08" /**< id-mgf1 ::= { pkcs-1 8 } */ + +/* + * Digest algorithms + */ +#define MBEDTLS_OID_DIGEST_ALG_MD2 MBEDTLS_OID_RSA_COMPANY "\x02\x02" /**< id-mbedtls_md2 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } */ +#define MBEDTLS_OID_DIGEST_ALG_MD4 MBEDTLS_OID_RSA_COMPANY "\x02\x04" /**< id-mbedtls_md4 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 4 } */ +#define MBEDTLS_OID_DIGEST_ALG_MD5 MBEDTLS_OID_RSA_COMPANY "\x02\x05" /**< id-mbedtls_md5 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA1 MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_SHA1 /**< id-mbedtls_sha1 OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 26 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA224 MBEDTLS_OID_NIST_ALG "\x02\x04" /**< id-sha224 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4 } */ +#define MBEDTLS_OID_DIGEST_ALG_SHA256 MBEDTLS_OID_NIST_ALG "\x02\x01" /**< id-mbedtls_sha256 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1 } */ + +#define MBEDTLS_OID_DIGEST_ALG_SHA384 MBEDTLS_OID_NIST_ALG "\x02\x02" /**< id-sha384 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2 } */ + +#define MBEDTLS_OID_DIGEST_ALG_SHA512 MBEDTLS_OID_NIST_ALG "\x02\x03" /**< id-mbedtls_sha512 OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3 } */ + +#define MBEDTLS_OID_DIGEST_ALG_RIPEMD160 MBEDTLS_OID_TELETRUST "\x03\x02\x01" /**< id-ripemd160 OBJECT IDENTIFIER :: { iso(1) identified-organization(3) teletrust(36) algorithm(3) hashAlgorithm(2) ripemd160(1) } */ + +#define MBEDTLS_OID_HMAC_SHA1 MBEDTLS_OID_RSA_COMPANY "\x02\x07" /**< id-hmacWithSHA1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 7 } */ + +#define MBEDTLS_OID_HMAC_SHA224 MBEDTLS_OID_RSA_COMPANY "\x02\x08" /**< id-hmacWithSHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 8 } */ + +#define MBEDTLS_OID_HMAC_SHA256 MBEDTLS_OID_RSA_COMPANY "\x02\x09" /**< id-hmacWithSHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 9 } */ + +#define MBEDTLS_OID_HMAC_SHA384 MBEDTLS_OID_RSA_COMPANY "\x02\x0A" /**< id-hmacWithSHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 10 } */ + +#define MBEDTLS_OID_HMAC_SHA512 MBEDTLS_OID_RSA_COMPANY "\x02\x0B" /**< id-hmacWithSHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 11 } */ + +/* + * Encryption algorithms + */ +#define MBEDTLS_OID_DES_CBC MBEDTLS_OID_ISO_IDENTIFIED_ORG MBEDTLS_OID_OIW_SECSIG_ALG "\x07" /**< desCBC OBJECT IDENTIFIER ::= { iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) 7 } */ +#define MBEDTLS_OID_DES_EDE3_CBC MBEDTLS_OID_RSA_COMPANY "\x03\x07" /**< des-ede3-cbc OBJECT IDENTIFIER ::= { iso(1) member-body(2) -- us(840) rsadsi(113549) encryptionAlgorithm(3) 7 } */ +#define MBEDTLS_OID_AES MBEDTLS_OID_NIST_ALG "\x01" /** aes OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistAlgorithm(4) 1 } */ + +/* + * Key Wrapping algorithms + */ +/* + * RFC 5649 + */ +#define MBEDTLS_OID_AES128_KW MBEDTLS_OID_AES "\x05" /** id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } */ +#define MBEDTLS_OID_AES128_KWP MBEDTLS_OID_AES "\x08" /** id-aes128-wrap-pad OBJECT IDENTIFIER ::= { aes 8 } */ +#define MBEDTLS_OID_AES192_KW MBEDTLS_OID_AES "\x19" /** id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } */ +#define MBEDTLS_OID_AES192_KWP MBEDTLS_OID_AES "\x1c" /** id-aes192-wrap-pad OBJECT IDENTIFIER ::= { aes 28 } */ +#define MBEDTLS_OID_AES256_KW MBEDTLS_OID_AES "\x2d" /** id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } */ +#define MBEDTLS_OID_AES256_KWP MBEDTLS_OID_AES "\x30" /** id-aes256-wrap-pad OBJECT IDENTIFIER ::= { aes 48 } */ +/* + * PKCS#5 OIDs + */ +#define MBEDTLS_OID_PKCS5_PBKDF2 MBEDTLS_OID_PKCS5 "\x0c" /**< id-PBKDF2 OBJECT IDENTIFIER ::= {pkcs-5 12} */ +#define MBEDTLS_OID_PKCS5_PBES2 MBEDTLS_OID_PKCS5 "\x0d" /**< id-PBES2 OBJECT IDENTIFIER ::= {pkcs-5 13} */ +#define MBEDTLS_OID_PKCS5_PBMAC1 MBEDTLS_OID_PKCS5 "\x0e" /**< id-PBMAC1 OBJECT IDENTIFIER ::= {pkcs-5 14} */ + +/* + * PKCS#5 PBES1 algorithms + */ +#define MBEDTLS_OID_PKCS5_PBE_MD2_DES_CBC MBEDTLS_OID_PKCS5 "\x01" /**< pbeWithMD2AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 1} */ +#define MBEDTLS_OID_PKCS5_PBE_MD2_RC2_CBC MBEDTLS_OID_PKCS5 "\x04" /**< pbeWithMD2AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 4} */ +#define MBEDTLS_OID_PKCS5_PBE_MD5_DES_CBC MBEDTLS_OID_PKCS5 "\x03" /**< pbeWithMD5AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 3} */ +#define MBEDTLS_OID_PKCS5_PBE_MD5_RC2_CBC MBEDTLS_OID_PKCS5 "\x06" /**< pbeWithMD5AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 6} */ +#define MBEDTLS_OID_PKCS5_PBE_SHA1_DES_CBC MBEDTLS_OID_PKCS5 "\x0a" /**< pbeWithSHA1AndDES-CBC OBJECT IDENTIFIER ::= {pkcs-5 10} */ +#define MBEDTLS_OID_PKCS5_PBE_SHA1_RC2_CBC MBEDTLS_OID_PKCS5 "\x0b" /**< pbeWithSHA1AndRC2-CBC OBJECT IDENTIFIER ::= {pkcs-5 11} */ + +/* + * PKCS#8 OIDs + */ +#define MBEDTLS_OID_PKCS9_CSR_EXT_REQ MBEDTLS_OID_PKCS9 "\x0e" /**< extensionRequest OBJECT IDENTIFIER ::= {pkcs-9 14} */ + +/* + * PKCS#12 PBE OIDs + */ +#define MBEDTLS_OID_PKCS12_PBE MBEDTLS_OID_PKCS12 "\x01" /**< pkcs-12PbeIds OBJECT IDENTIFIER ::= {pkcs-12 1} */ + +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC4_128 MBEDTLS_OID_PKCS12_PBE "\x01" /**< pbeWithSHAAnd128BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 1} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC4_40 MBEDTLS_OID_PKCS12_PBE "\x02" /**< pbeWithSHAAnd40BitRC4 OBJECT IDENTIFIER ::= {pkcs-12PbeIds 2} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_DES3_EDE_CBC MBEDTLS_OID_PKCS12_PBE "\x03" /**< pbeWithSHAAnd3-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 3} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_DES2_EDE_CBC MBEDTLS_OID_PKCS12_PBE "\x04" /**< pbeWithSHAAnd2-KeyTripleDES-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 4} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_128_CBC MBEDTLS_OID_PKCS12_PBE "\x05" /**< pbeWithSHAAnd128BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 5} */ +#define MBEDTLS_OID_PKCS12_PBE_SHA1_RC2_40_CBC MBEDTLS_OID_PKCS12_PBE "\x06" /**< pbeWithSHAAnd40BitRC2-CBC OBJECT IDENTIFIER ::= {pkcs-12PbeIds 6} */ + +/* + * EC key algorithms from RFC 5480 + */ + +/* id-ecPublicKey OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } */ +#define MBEDTLS_OID_EC_ALG_UNRESTRICTED MBEDTLS_OID_ANSI_X9_62 "\x02\01" + +/* id-ecDH OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) + * schemes(1) ecdh(12) } */ +#define MBEDTLS_OID_EC_ALG_ECDH MBEDTLS_OID_CERTICOM "\x01\x0c" + +/* + * ECParameters namedCurve identifiers, from RFC 5480, RFC 5639, and SEC2 + */ + +/* secp192r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 1 } */ +#define MBEDTLS_OID_EC_GRP_SECP192R1 MBEDTLS_OID_ANSI_X9_62 "\x03\x01\x01" + +/* secp224r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 33 } */ +#define MBEDTLS_OID_EC_GRP_SECP224R1 MBEDTLS_OID_CERTICOM "\x00\x21" + +/* secp256r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 7 } */ +#define MBEDTLS_OID_EC_GRP_SECP256R1 MBEDTLS_OID_ANSI_X9_62 "\x03\x01\x07" + +/* secp384r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 34 } */ +#define MBEDTLS_OID_EC_GRP_SECP384R1 MBEDTLS_OID_CERTICOM "\x00\x22" + +/* secp521r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 35 } */ +#define MBEDTLS_OID_EC_GRP_SECP521R1 MBEDTLS_OID_CERTICOM "\x00\x23" + +/* secp192k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 31 } */ +#define MBEDTLS_OID_EC_GRP_SECP192K1 MBEDTLS_OID_CERTICOM "\x00\x1f" + +/* secp224k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 32 } */ +#define MBEDTLS_OID_EC_GRP_SECP224K1 MBEDTLS_OID_CERTICOM "\x00\x20" + +/* secp256k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 10 } */ +#define MBEDTLS_OID_EC_GRP_SECP256K1 MBEDTLS_OID_CERTICOM "\x00\x0a" + +/* RFC 5639 4.1 + * ecStdCurvesAndGeneration OBJECT IDENTIFIER::= {iso(1) + * identified-organization(3) teletrust(36) algorithm(3) signature- + * algorithm(3) ecSign(2) 8} + * ellipticCurve OBJECT IDENTIFIER ::= {ecStdCurvesAndGeneration 1} + * versionOne OBJECT IDENTIFIER ::= {ellipticCurve 1} */ +#define MBEDTLS_OID_EC_BRAINPOOL_V1 MBEDTLS_OID_TELETRUST "\x03\x03\x02\x08\x01\x01" + +/* brainpoolP256r1 OBJECT IDENTIFIER ::= {versionOne 7} */ +#define MBEDTLS_OID_EC_GRP_BP256R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x07" + +/* brainpoolP384r1 OBJECT IDENTIFIER ::= {versionOne 11} */ +#define MBEDTLS_OID_EC_GRP_BP384R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x0B" + +/* brainpoolP512r1 OBJECT IDENTIFIER ::= {versionOne 13} */ +#define MBEDTLS_OID_EC_GRP_BP512R1 MBEDTLS_OID_EC_BRAINPOOL_V1 "\x0D" + +/* + * SEC1 C.1 + * + * prime-field OBJECT IDENTIFIER ::= { id-fieldType 1 } + * id-fieldType OBJECT IDENTIFIER ::= { ansi-X9-62 fieldType(1)} + */ +#define MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE MBEDTLS_OID_ANSI_X9_62 "\x01" +#define MBEDTLS_OID_ANSI_X9_62_PRIME_FIELD MBEDTLS_OID_ANSI_X9_62_FIELD_TYPE "\x01" + +/* + * ECDSA signature identifiers, from RFC 5480 + */ +#define MBEDTLS_OID_ANSI_X9_62_SIG MBEDTLS_OID_ANSI_X9_62 "\x04" /* signatures(4) */ +#define MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 MBEDTLS_OID_ANSI_X9_62_SIG "\x03" /* ecdsa-with-SHA2(3) */ + +/* ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) 1 } */ +#define MBEDTLS_OID_ECDSA_SHA1 MBEDTLS_OID_ANSI_X9_62_SIG "\x01" + +/* ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 1 } */ +#define MBEDTLS_OID_ECDSA_SHA224 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x01" + +/* ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 2 } */ +#define MBEDTLS_OID_ECDSA_SHA256 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x02" + +/* ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 3 } */ +#define MBEDTLS_OID_ECDSA_SHA384 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x03" + +/* ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 4 } */ +#define MBEDTLS_OID_ECDSA_SHA512 MBEDTLS_OID_ANSI_X9_62_SIG_SHA2 "\x04" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Base OID descriptor structure + */ +typedef struct mbedtls_oid_descriptor_t +{ + const char *asn1; /*!< OID ASN.1 representation */ + size_t asn1_len; /*!< length of asn1 */ + const char *name; /*!< official name (e.g. from RFC) */ + const char *description; /*!< human friendly description */ +} mbedtls_oid_descriptor_t; + +/** + * \brief Translate an ASN.1 OID into its numeric representation + * (e.g. "\x2A\x86\x48\x86\xF7\x0D" into "1.2.840.113549") + * + * \param buf buffer to put representation in + * \param size size of the buffer + * \param oid OID to translate + * + * \return Length of the string written (excluding final NULL) or + * MBEDTLS_ERR_OID_BUF_TOO_SMALL in case of error + */ +int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_buf *oid ); + +/** + * \brief Translate an X.509 extension OID into local values + * + * \param oid OID to use + * \param ext_type place to store the extension type + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_x509_ext_type( const mbedtls_asn1_buf *oid, int *ext_type ); + +/** + * \brief Translate an X.509 attribute type OID into the short name + * (e.g. the OID for an X520 Common Name into "CN") + * + * \param oid OID to use + * \param short_name place to store the string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_attr_short_name( const mbedtls_asn1_buf *oid, const char **short_name ); + +/** + * \brief Translate PublicKeyAlgorithm OID into pk_type + * + * \param oid OID to use + * \param pk_alg place to store public key algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_pk_alg( const mbedtls_asn1_buf *oid, mbedtls_pk_type_t *pk_alg ); + +/** + * \brief Translate pk_type into PublicKeyAlgorithm OID + * + * \param pk_alg Public key type to look for + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_pk_alg( mbedtls_pk_type_t pk_alg, + const char **oid, size_t *olen ); + +#if defined(MBEDTLS_ECP_C) +/** + * \brief Translate NamedCurve OID into an EC group identifier + * + * \param oid OID to use + * \param grp_id place to store group id + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_ec_grp( const mbedtls_asn1_buf *oid, mbedtls_ecp_group_id *grp_id ); + +/** + * \brief Translate EC group identifier into NamedCurve OID + * + * \param grp_id EC group identifier + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_ec_grp( mbedtls_ecp_group_id grp_id, + const char **oid, size_t *olen ); +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_MD_C) +/** + * \brief Translate SignatureAlgorithm OID into md_type and pk_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * \param pk_alg place to store public key algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_sig_alg( const mbedtls_asn1_buf *oid, + mbedtls_md_type_t *md_alg, mbedtls_pk_type_t *pk_alg ); + +/** + * \brief Translate SignatureAlgorithm OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_sig_alg_desc( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate md_type and pk_type into SignatureAlgorithm OID + * + * \param md_alg message digest algorithm + * \param pk_alg public key algorithm + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_sig_alg( mbedtls_pk_type_t pk_alg, mbedtls_md_type_t md_alg, + const char **oid, size_t *olen ); + +/** + * \brief Translate hash algorithm OID into md_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_md_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg ); + +/** + * \brief Translate hmac algorithm OID into md_type + * + * \param oid OID to use + * \param md_hmac place to store message hmac algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_md_hmac( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_hmac ); +#endif /* MBEDTLS_MD_C */ + +/** + * \brief Translate Extended Key Usage OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_extended_key_usage( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate certificate policies OID into description + * + * \param oid OID to use + * \param desc place to store string pointer + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_certificate_policies( const mbedtls_asn1_buf *oid, const char **desc ); + +/** + * \brief Translate md_type into hash algorithm OID + * + * \param md_alg message digest algorithm + * \param oid place to store ASN.1 OID string pointer + * \param olen length of the OID + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_oid_by_md( mbedtls_md_type_t md_alg, const char **oid, size_t *olen ); + +#if defined(MBEDTLS_CIPHER_C) +/** + * \brief Translate encryption algorithm OID into cipher_type + * + * \param oid OID to use + * \param cipher_alg place to store cipher algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_cipher_alg( const mbedtls_asn1_buf *oid, mbedtls_cipher_type_t *cipher_alg ); +#endif /* MBEDTLS_CIPHER_C */ + +#if defined(MBEDTLS_PKCS12_C) +/** + * \brief Translate PKCS#12 PBE algorithm OID into md_type and + * cipher_type + * + * \param oid OID to use + * \param md_alg place to store message digest algorithm + * \param cipher_alg place to store cipher algorithm + * + * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND + */ +int mbedtls_oid_get_pkcs12_pbe_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg, + mbedtls_cipher_type_t *cipher_alg ); +#endif /* MBEDTLS_PKCS12_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* oid.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/padlock.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/padlock.h new file mode 100644 index 00000000..513d72f3 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/padlock.h @@ -0,0 +1,126 @@ +/** + * \file padlock.h + * + * \brief VIA PadLock ACE for HW encryption/decryption supported by some + * processors + * + * \warning These functions are only for internal use by other library + * functions; you must not call them directly. + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PADLOCK_H +#define MBEDTLS_PADLOCK_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/aes.h" + +#define MBEDTLS_ERR_PADLOCK_DATA_MISALIGNED -0x0030 /**< Input data should be aligned. */ + +#if defined(__has_feature) +#if __has_feature(address_sanitizer) +#define MBEDTLS_HAVE_ASAN +#endif +#endif + +/* Some versions of ASan result in errors about not enough registers */ +#if defined(MBEDTLS_HAVE_ASM) && defined(__GNUC__) && defined(__i386__) && \ + !defined(MBEDTLS_HAVE_ASAN) + +#ifndef MBEDTLS_HAVE_X86 +#define MBEDTLS_HAVE_X86 +#endif + +#include + +#define MBEDTLS_PADLOCK_RNG 0x000C +#define MBEDTLS_PADLOCK_ACE 0x00C0 +#define MBEDTLS_PADLOCK_PHE 0x0C00 +#define MBEDTLS_PADLOCK_PMM 0x3000 + +#define MBEDTLS_PADLOCK_ALIGN16(x) (uint32_t *) (16 + ((int32_t) (x) & ~15)) + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Internal PadLock detection routine + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param feature The feature to detect + * + * \return 1 if CPU has support for the feature, 0 otherwise + */ +int mbedtls_padlock_has_support( int feature ); + +/** + * \brief Internal PadLock AES-ECB block en(de)cryption + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param input 16-byte input block + * \param output 16-byte output block + * + * \return 0 if success, 1 if operation failed + */ +int mbedtls_padlock_xcryptecb( mbedtls_aes_context *ctx, + int mode, + const unsigned char input[16], + unsigned char output[16] ); + +/** + * \brief Internal PadLock AES-CBC buffer en(de)cryption + * + * \note This function is only for internal use by other library + * functions; you must not call it directly. + * + * \param ctx AES context + * \param mode MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT + * \param length length of the input data + * \param iv initialization vector (updated after use) + * \param input buffer holding the input data + * \param output buffer holding the output data + * + * \return 0 if success, 1 if operation failed + */ +int mbedtls_padlock_xcryptcbc( mbedtls_aes_context *ctx, + int mode, + size_t length, + unsigned char iv[16], + const unsigned char *input, + unsigned char *output ); + +#ifdef __cplusplus +} +#endif + +#endif /* HAVE_X86 */ + +#endif /* padlock.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pem.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pem.h new file mode 100644 index 00000000..f7bf1a66 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pem.h @@ -0,0 +1,146 @@ +/** + * \file pem.h + * + * \brief Privacy Enhanced Mail (PEM) decoding + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PEM_H +#define MBEDTLS_PEM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +/** + * \name PEM Error codes + * These error codes are returned in case of errors reading the + * PEM data. + * \{ + */ +#define MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT -0x1080 /**< No PEM header or footer found. */ +#define MBEDTLS_ERR_PEM_INVALID_DATA -0x1100 /**< PEM string is not as expected. */ +#define MBEDTLS_ERR_PEM_ALLOC_FAILED -0x1180 /**< Failed to allocate memory. */ +#define MBEDTLS_ERR_PEM_INVALID_ENC_IV -0x1200 /**< RSA IV is not in hex-format. */ +#define MBEDTLS_ERR_PEM_UNKNOWN_ENC_ALG -0x1280 /**< Unsupported key encryption algorithm. */ +#define MBEDTLS_ERR_PEM_PASSWORD_REQUIRED -0x1300 /**< Private key password can't be empty. */ +#define MBEDTLS_ERR_PEM_PASSWORD_MISMATCH -0x1380 /**< Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PEM_FEATURE_UNAVAILABLE -0x1400 /**< Unavailable feature, e.g. hashing/encryption combination. */ +#define MBEDTLS_ERR_PEM_BAD_INPUT_DATA -0x1480 /**< Bad input parameters to function. */ +/* \} name */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(MBEDTLS_PEM_PARSE_C) +/** + * \brief PEM context structure + */ +typedef struct mbedtls_pem_context +{ + unsigned char *buf; /*!< buffer for decoded data */ + size_t buflen; /*!< length of the buffer */ + unsigned char *info; /*!< buffer for extra header information */ +} +mbedtls_pem_context; + +/** + * \brief PEM context setup + * + * \param ctx context to be initialized + */ +void mbedtls_pem_init( mbedtls_pem_context *ctx ); + +/** + * \brief Read a buffer for PEM information and store the resulting + * data into the specified context buffers. + * + * \param ctx context to use + * \param header header string to seek and expect + * \param footer footer string to seek and expect + * \param data source data to look in (must be nul-terminated) + * \param pwd password for decryption (can be NULL) + * \param pwdlen length of password + * \param use_len destination for total length used (set after header is + * correctly read, so unless you get + * MBEDTLS_ERR_PEM_BAD_INPUT_DATA or + * MBEDTLS_ERR_PEM_NO_HEADER_FOOTER_PRESENT, use_len is + * the length to skip) + * + * \note Attempts to check password correctness by verifying if + * the decrypted text starts with an ASN.1 sequence of + * appropriate length + * + * \return 0 on success, or a specific PEM error code + */ +int mbedtls_pem_read_buffer( mbedtls_pem_context *ctx, const char *header, const char *footer, + const unsigned char *data, + const unsigned char *pwd, + size_t pwdlen, size_t *use_len ); + +/** + * \brief PEM context memory freeing + * + * \param ctx context to be freed + */ +void mbedtls_pem_free( mbedtls_pem_context *ctx ); +#endif /* MBEDTLS_PEM_PARSE_C */ + +#if defined(MBEDTLS_PEM_WRITE_C) +/** + * \brief Write a buffer of PEM information from a DER encoded + * buffer. + * + * \param header The header string to write. + * \param footer The footer string to write. + * \param der_data The DER data to encode. + * \param der_len The length of the DER data \p der_data in Bytes. + * \param buf The buffer to write to. + * \param buf_len The length of the output buffer \p buf in Bytes. + * \param olen The address at which to store the total length written + * or required (if \p buf_len is not enough). + * + * \note You may pass \c NULL for \p buf and \c 0 for \p buf_len + * to request the length of the resulting PEM buffer in + * `*olen`. + * + * \note This function may be called with overlapping \p der_data + * and \p buf buffers. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL if \p buf isn't large + * enough to hold the PEM buffer. In this case, `*olen` holds + * the required minimum size of \p buf. + * \return Another PEM or BASE64 error code on other kinds of failure. + */ +int mbedtls_pem_write_buffer( const char *header, const char *footer, + const unsigned char *der_data, size_t der_len, + unsigned char *buf, size_t buf_len, size_t *olen ); +#endif /* MBEDTLS_PEM_WRITE_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* pem.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk.h new file mode 100644 index 00000000..99e7a55a --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk.h @@ -0,0 +1,881 @@ +/** + * \file pk.h + * + * \brief Public Key abstraction layer + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_PK_H +#define MBEDTLS_PK_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/md.h" + +#if defined(MBEDTLS_RSA_C) +#include "mbedtls/rsa.h" +#endif + +#if defined(MBEDTLS_ECP_C) +#include "mbedtls/ecp.h" +#endif + +#if defined(MBEDTLS_ECDSA_C) +#include "mbedtls/ecdsa.h" +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#include "psa/crypto.h" +#endif + +#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \ + !defined(inline) && !defined(__cplusplus) +#define inline __inline +#endif + +#define MBEDTLS_ERR_PK_ALLOC_FAILED -0x3F80 /**< Memory allocation failed. */ +#define MBEDTLS_ERR_PK_TYPE_MISMATCH -0x3F00 /**< Type mismatch, eg attempt to encrypt with an ECDSA key */ +#define MBEDTLS_ERR_PK_BAD_INPUT_DATA -0x3E80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PK_FILE_IO_ERROR -0x3E00 /**< Read/write of file failed. */ +#define MBEDTLS_ERR_PK_KEY_INVALID_VERSION -0x3D80 /**< Unsupported key version */ +#define MBEDTLS_ERR_PK_KEY_INVALID_FORMAT -0x3D00 /**< Invalid key tag or value. */ +#define MBEDTLS_ERR_PK_UNKNOWN_PK_ALG -0x3C80 /**< Key algorithm is unsupported (only RSA and EC are supported). */ +#define MBEDTLS_ERR_PK_PASSWORD_REQUIRED -0x3C00 /**< Private key password can't be empty. */ +#define MBEDTLS_ERR_PK_PASSWORD_MISMATCH -0x3B80 /**< Given private key password does not allow for correct decryption. */ +#define MBEDTLS_ERR_PK_INVALID_PUBKEY -0x3B00 /**< The pubkey tag or value is invalid (only RSA and EC are supported). */ +#define MBEDTLS_ERR_PK_INVALID_ALG -0x3A80 /**< The algorithm tag or value is invalid. */ +#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE -0x3A00 /**< Elliptic curve is unsupported (only NIST curves are supported). */ +#define MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE -0x3980 /**< Unavailable feature, e.g. RSA disabled for RSA key. */ +#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH -0x3900 /**< The buffer contains a valid signature followed by more data. */ + +/* MBEDTLS_ERR_PK_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_PK_HW_ACCEL_FAILED -0x3880 /**< PK hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Public key types + */ +typedef enum { + MBEDTLS_PK_NONE=0, + MBEDTLS_PK_RSA, + MBEDTLS_PK_ECKEY, + MBEDTLS_PK_ECKEY_DH, + MBEDTLS_PK_ECDSA, + MBEDTLS_PK_RSA_ALT, + MBEDTLS_PK_RSASSA_PSS, + MBEDTLS_PK_OPAQUE, +} mbedtls_pk_type_t; + +/** + * \brief Options for RSASSA-PSS signature verification. + * See \c mbedtls_rsa_rsassa_pss_verify_ext() + */ +typedef struct mbedtls_pk_rsassa_pss_options +{ + mbedtls_md_type_t mgf1_hash_id; + int expected_salt_len; + +} mbedtls_pk_rsassa_pss_options; + +/** + * \brief Maximum size of a signature made by mbedtls_pk_sign(). + */ +/* We need to set MBEDTLS_PK_SIGNATURE_MAX_SIZE to the maximum signature + * size among the supported signature types. Do it by starting at 0, + * then incrementally increasing to be large enough for each supported + * signature mechanism. + * + * The resulting value can be 0, for example if MBEDTLS_ECDH_C is enabled + * (which allows the pk module to be included) but neither MBEDTLS_ECDSA_C + * nor MBEDTLS_RSA_C nor any opaque signature mechanism (PSA or RSA_ALT). + */ +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE 0 + +#if ( defined(MBEDTLS_RSA_C) || defined(MBEDTLS_PK_RSA_ALT_SUPPORT) ) && \ + MBEDTLS_MPI_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* For RSA, the signature can be as large as the bignum module allows. + * For RSA_ALT, the signature size is not necessarily tied to what the + * bignum module can do, but in the absence of any specific setting, + * we use that (rsa_alt_sign_wrap in pk_wrap will check). */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE MBEDTLS_MPI_MAX_SIZE +#endif + +#if defined(MBEDTLS_ECDSA_C) && \ + MBEDTLS_ECDSA_MAX_LEN > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* For ECDSA, the ecdsa module exports a constant for the maximum + * signature size. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE MBEDTLS_ECDSA_MAX_LEN +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +#if PSA_SIGNATURE_MAX_SIZE > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* PSA_SIGNATURE_MAX_SIZE is the maximum size of a signature made + * through the PSA API in the PSA representation. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE PSA_SIGNATURE_MAX_SIZE +#endif + +#if PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 > MBEDTLS_PK_SIGNATURE_MAX_SIZE +/* The Mbed TLS representation is different for ECDSA signatures: + * PSA uses the raw concatenation of r and s, + * whereas Mbed TLS uses the ASN.1 representation (SEQUENCE of two INTEGERs). + * Add the overhead of ASN.1: up to (1+2) + 2 * (1+2+1) for the + * types, lengths (represented by up to 2 bytes), and potential leading + * zeros of the INTEGERs and the SEQUENCE. */ +#undef MBEDTLS_PK_SIGNATURE_MAX_SIZE +#define MBEDTLS_PK_SIGNATURE_MAX_SIZE ( PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE + 11 ) +#endif +#endif /* defined(MBEDTLS_USE_PSA_CRYPTO) */ + +/** + * \brief Types for interfacing with the debug module + */ +typedef enum +{ + MBEDTLS_PK_DEBUG_NONE = 0, + MBEDTLS_PK_DEBUG_MPI, + MBEDTLS_PK_DEBUG_ECP, +} mbedtls_pk_debug_type; + +/** + * \brief Item to send to the debug module + */ +typedef struct mbedtls_pk_debug_item +{ + mbedtls_pk_debug_type type; + const char *name; + void *value; +} mbedtls_pk_debug_item; + +/** Maximum number of item send for debugging, plus 1 */ +#define MBEDTLS_PK_DEBUG_MAX_ITEMS 3 + +/** + * \brief Public key information and operations + */ +typedef struct mbedtls_pk_info_t mbedtls_pk_info_t; + +/** + * \brief Public key container + */ +typedef struct mbedtls_pk_context +{ + const mbedtls_pk_info_t * pk_info; /**< Public key information */ + void * pk_ctx; /**< Underlying public key context */ +} mbedtls_pk_context; + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Context for resuming operations + */ +typedef struct +{ + const mbedtls_pk_info_t * pk_info; /**< Public key information */ + void * rs_ctx; /**< Underlying restart context */ +} mbedtls_pk_restart_ctx; +#else /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ +/* Now we can declare functions that take a pointer to that */ +typedef void mbedtls_pk_restart_ctx; +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + +#if defined(MBEDTLS_RSA_C) +/** + * Quick access to an RSA context inside a PK context. + * + * \warning You must make sure the PK context actually holds an RSA context + * before using this function! + */ +static inline mbedtls_rsa_context *mbedtls_pk_rsa( const mbedtls_pk_context pk ) +{ + return( (mbedtls_rsa_context *) (pk).pk_ctx ); +} +#endif /* MBEDTLS_RSA_C */ + +#if defined(MBEDTLS_ECP_C) +/** + * Quick access to an EC context inside a PK context. + * + * \warning You must make sure the PK context actually holds an EC context + * before using this function! + */ +static inline mbedtls_ecp_keypair *mbedtls_pk_ec( const mbedtls_pk_context pk ) +{ + return( (mbedtls_ecp_keypair *) (pk).pk_ctx ); +} +#endif /* MBEDTLS_ECP_C */ + +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) +/** + * \brief Types for RSA-alt abstraction + */ +typedef int (*mbedtls_pk_rsa_alt_decrypt_func)( void *ctx, int mode, size_t *olen, + const unsigned char *input, unsigned char *output, + size_t output_max_len ); +typedef int (*mbedtls_pk_rsa_alt_sign_func)( void *ctx, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + int mode, mbedtls_md_type_t md_alg, unsigned int hashlen, + const unsigned char *hash, unsigned char *sig ); +typedef size_t (*mbedtls_pk_rsa_alt_key_len_func)( void *ctx ); +#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */ + +/** + * \brief Return information associated with the given PK type + * + * \param pk_type PK type to search for. + * + * \return The PK info associated with the type or NULL if not found. + */ +const mbedtls_pk_info_t *mbedtls_pk_info_from_type( mbedtls_pk_type_t pk_type ); + +/** + * \brief Initialize a #mbedtls_pk_context (as NONE). + * + * \param ctx The context to initialize. + * This must not be \c NULL. + */ +void mbedtls_pk_init( mbedtls_pk_context *ctx ); + +/** + * \brief Free the components of a #mbedtls_pk_context. + * + * \param ctx The context to clear. It must have been initialized. + * If this is \c NULL, this function does nothing. + * + * \note For contexts that have been set up with + * mbedtls_pk_setup_opaque(), this does not free the underlying + * PSA key and you still need to call psa_destroy_key() + * independently if you want to destroy that key. + */ +void mbedtls_pk_free( mbedtls_pk_context *ctx ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) +/** + * \brief Initialize a restart context + * + * \param ctx The context to initialize. + * This must not be \c NULL. + */ +void mbedtls_pk_restart_init( mbedtls_pk_restart_ctx *ctx ); + +/** + * \brief Free the components of a restart context + * + * \param ctx The context to clear. It must have been initialized. + * If this is \c NULL, this function does nothing. + */ +void mbedtls_pk_restart_free( mbedtls_pk_restart_ctx *ctx ); +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + +/** + * \brief Initialize a PK context with the information given + * and allocates the type-specific PK subcontext. + * + * \param ctx Context to initialize. It must not have been set + * up yet (type #MBEDTLS_PK_NONE). + * \param info Information to use + * + * \return 0 on success, + * MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input, + * MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure. + * + * \note For contexts holding an RSA-alt key, use + * \c mbedtls_pk_setup_rsa_alt() instead. + */ +int mbedtls_pk_setup( mbedtls_pk_context *ctx, const mbedtls_pk_info_t *info ); + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief Initialize a PK context to wrap a PSA key. + * + * \note This function replaces mbedtls_pk_setup() for contexts + * that wrap a (possibly opaque) PSA key instead of + * storing and manipulating the key material directly. + * + * \param ctx The context to initialize. It must be empty (type NONE). + * \param key The PSA key to wrap, which must hold an ECC key pair + * (see notes below). + * + * \note The wrapped key must remain valid as long as the + * wrapping PK context is in use, that is at least between + * the point this function is called and the point + * mbedtls_pk_free() is called on this context. The wrapped + * key might then be independently used or destroyed. + * + * \note This function is currently only available for ECC key + * pairs (that is, ECC keys containing private key material). + * Support for other key types may be added later. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_PK_BAD_INPUT_DATA on invalid input + * (context already used, invalid key handle). + * \return #MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the key is not an + * ECC key pair. + * \return #MBEDTLS_ERR_PK_ALLOC_FAILED on allocation failure. + */ +int mbedtls_pk_setup_opaque( mbedtls_pk_context *ctx, const psa_key_handle_t key ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) +/** + * \brief Initialize an RSA-alt context + * + * \param ctx Context to initialize. It must not have been set + * up yet (type #MBEDTLS_PK_NONE). + * \param key RSA key pointer + * \param decrypt_func Decryption function + * \param sign_func Signing function + * \param key_len_func Function returning key length in bytes + * + * \return 0 on success, or MBEDTLS_ERR_PK_BAD_INPUT_DATA if the + * context wasn't already initialized as RSA_ALT. + * + * \note This function replaces \c mbedtls_pk_setup() for RSA-alt. + */ +int mbedtls_pk_setup_rsa_alt( mbedtls_pk_context *ctx, void * key, + mbedtls_pk_rsa_alt_decrypt_func decrypt_func, + mbedtls_pk_rsa_alt_sign_func sign_func, + mbedtls_pk_rsa_alt_key_len_func key_len_func ); +#endif /* MBEDTLS_PK_RSA_ALT_SUPPORT */ + +/** + * \brief Get the size in bits of the underlying key + * + * \param ctx The context to query. It must have been initialized. + * + * \return Key size in bits, or 0 on error + */ +size_t mbedtls_pk_get_bitlen( const mbedtls_pk_context *ctx ); + +/** + * \brief Get the length in bytes of the underlying key + * + * \param ctx The context to query. It must have been initialized. + * + * \return Key length in bytes, or 0 on error + */ +static inline size_t mbedtls_pk_get_len( const mbedtls_pk_context *ctx ) +{ + return( ( mbedtls_pk_get_bitlen( ctx ) + 7 ) / 8 ); +} + +/** + * \brief Tell if a context can do the operation given by type + * + * \param ctx The context to query. It must have been initialized. + * \param type The desired type. + * + * \return 1 if the context can do operations on the given type. + * \return 0 if the context cannot do the operations on the given + * type. This is always the case for a context that has + * been initialized but not set up, or that has been + * cleared with mbedtls_pk_free(). + */ +int mbedtls_pk_can_do( const mbedtls_pk_context *ctx, mbedtls_pk_type_t type ); + +/** + * \brief Verify signature (including padding if relevant). + * + * \param ctx The PK context to use. It must have been set up. + * \param md_alg Hash algorithm used (see notes) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes) + * \param sig Signature to verify + * \param sig_len Signature length + * + * \return 0 on success (signature is valid), + * #MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if there is a valid + * signature in sig but its length is less than \p siglen, + * or a specific error code. + * + * \note For RSA keys, the default padding type is PKCS#1 v1.5. + * Use \c mbedtls_pk_verify_ext( MBEDTLS_PK_RSASSA_PSS, ... ) + * to verify RSASSA_PSS signatures. + * + * \note If hash_len is 0, then the length associated with md_alg + * is used instead, or an error returned if it is invalid. + * + * \note md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0 + */ +int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len ); + +/** + * \brief Restartable version of \c mbedtls_pk_verify() + * + * \note Performs the same job as \c mbedtls_pk_verify(), but can + * return early and restart according to the limit set with + * \c mbedtls_ecp_set_max_ops() to reduce blocking for ECC + * operations. For RSA, same as \c mbedtls_pk_verify(). + * + * \param ctx The PK context to use. It must have been set up. + * \param md_alg Hash algorithm used (see notes) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes) + * \param sig Signature to verify + * \param sig_len Signature length + * \param rs_ctx Restart context (NULL to disable restart) + * + * \return See \c mbedtls_pk_verify(), or + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_pk_verify_restartable( mbedtls_pk_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + mbedtls_pk_restart_ctx *rs_ctx ); + +/** + * \brief Verify signature, with options. + * (Includes verification of the padding depending on type.) + * + * \param type Signature type (inc. possible padding type) to verify + * \param options Pointer to type-specific options, or NULL + * \param ctx The PK context to use. It must have been set up. + * \param md_alg Hash algorithm used (see notes) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes) + * \param sig Signature to verify + * \param sig_len Signature length + * + * \return 0 on success (signature is valid), + * #MBEDTLS_ERR_PK_TYPE_MISMATCH if the PK context can't be + * used for this type of signatures, + * #MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if there is a valid + * signature in sig but its length is less than \p siglen, + * or a specific error code. + * + * \note If hash_len is 0, then the length associated with md_alg + * is used instead, or an error returned if it is invalid. + * + * \note md_alg may be MBEDTLS_MD_NONE, only if hash_len != 0 + * + * \note If type is MBEDTLS_PK_RSASSA_PSS, then options must point + * to a mbedtls_pk_rsassa_pss_options structure, + * otherwise it must be NULL. + */ +int mbedtls_pk_verify_ext( mbedtls_pk_type_t type, const void *options, + mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len ); + +/** + * \brief Make signature, including padding if relevant. + * + * \param ctx The PK context to use. It must have been set up + * with a private key. + * \param md_alg Hash algorithm used (see notes) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes) + * \param sig Place to write the signature. + * It must have enough room for the signature. + * #MBEDTLS_PK_SIGNATURE_MAX_SIZE is always enough. + * You may use a smaller buffer if it is large enough + * given the key type. + * \param sig_len On successful return, + * the number of bytes written to \p sig. + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \return 0 on success, or a specific error code. + * + * \note For RSA keys, the default padding type is PKCS#1 v1.5. + * There is no interface in the PK module to make RSASSA-PSS + * signatures yet. + * + * \note If hash_len is 0, then the length associated with md_alg + * is used instead, or an error returned if it is invalid. + * + * \note For RSA, md_alg may be MBEDTLS_MD_NONE if hash_len != 0. + * For ECDSA, md_alg may never be MBEDTLS_MD_NONE. + */ +int mbedtls_pk_sign( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +/** + * \brief Restartable version of \c mbedtls_pk_sign() + * + * \note Performs the same job as \c mbedtls_pk_sign(), but can + * return early and restart according to the limit set with + * \c mbedtls_ecp_set_max_ops() to reduce blocking for ECC + * operations. For RSA, same as \c mbedtls_pk_sign(). + * + * \param ctx The PK context to use. It must have been set up + * with a private key. + * \param md_alg Hash algorithm used (see notes for mbedtls_pk_sign()) + * \param hash Hash of the message to sign + * \param hash_len Hash length or 0 (see notes for mbedtls_pk_sign()) + * \param sig Place to write the signature. + * It must have enough room for the signature. + * #MBEDTLS_PK_SIGNATURE_MAX_SIZE is always enough. + * You may use a smaller buffer if it is large enough + * given the key type. + * \param sig_len On successful return, + * the number of bytes written to \p sig. + * \param f_rng RNG function + * \param p_rng RNG parameter + * \param rs_ctx Restart context (NULL to disable restart) + * + * \return See \c mbedtls_pk_sign(). + * \return #MBEDTLS_ERR_ECP_IN_PROGRESS if maximum number of + * operations was reached: see \c mbedtls_ecp_set_max_ops(). + */ +int mbedtls_pk_sign_restartable( mbedtls_pk_context *ctx, + mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng, + mbedtls_pk_restart_ctx *rs_ctx ); + +/** + * \brief Decrypt message (including padding if relevant). + * + * \param ctx The PK context to use. It must have been set up + * with a private key. + * \param input Input to decrypt + * \param ilen Input size + * \param output Decrypted output + * \param olen Decrypted message length + * \param osize Size of the output buffer + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \note For RSA keys, the default padding type is PKCS#1 v1.5. + * + * \return 0 on success, or a specific error code. + */ +int mbedtls_pk_decrypt( mbedtls_pk_context *ctx, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +/** + * \brief Encrypt message (including padding if relevant). + * + * \param ctx The PK context to use. It must have been set up. + * \param input Message to encrypt + * \param ilen Message size + * \param output Encrypted output + * \param olen Encrypted output length + * \param osize Size of the output buffer + * \param f_rng RNG function + * \param p_rng RNG parameter + * + * \note For RSA keys, the default padding type is PKCS#1 v1.5. + * + * \return 0 on success, or a specific error code. + */ +int mbedtls_pk_encrypt( mbedtls_pk_context *ctx, + const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize, + int (*f_rng)(void *, unsigned char *, size_t), void *p_rng ); + +/** + * \brief Check if a public-private pair of keys matches. + * + * \param pub Context holding a public key. + * \param prv Context holding a private (and public) key. + * + * \return \c 0 on success (keys were checked and match each other). + * \return #MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE if the keys could not + * be checked - in that case they may or may not match. + * \return #MBEDTLS_ERR_PK_BAD_INPUT_DATA if a context is invalid. + * \return Another non-zero value if the keys do not match. + */ +int mbedtls_pk_check_pair( const mbedtls_pk_context *pub, const mbedtls_pk_context *prv ); + +/** + * \brief Export debug information + * + * \param ctx The PK context to use. It must have been initialized. + * \param items Place to write debug items + * + * \return 0 on success or MBEDTLS_ERR_PK_BAD_INPUT_DATA + */ +int mbedtls_pk_debug( const mbedtls_pk_context *ctx, mbedtls_pk_debug_item *items ); + +/** + * \brief Access the type name + * + * \param ctx The PK context to use. It must have been initialized. + * + * \return Type name on success, or "invalid PK" + */ +const char * mbedtls_pk_get_name( const mbedtls_pk_context *ctx ); + +/** + * \brief Get the key type + * + * \param ctx The PK context to use. It must have been initialized. + * + * \return Type on success. + * \return #MBEDTLS_PK_NONE for a context that has not been set up. + */ +mbedtls_pk_type_t mbedtls_pk_get_type( const mbedtls_pk_context *ctx ); + +#if defined(MBEDTLS_PK_PARSE_C) +/** \ingroup pk_module */ +/** + * \brief Parse a private key in PEM or DER format + * + * \param ctx The PK context to fill. It must have been initialized + * but not set up. + * \param key Input buffer to parse. + * The buffer must contain the input exactly, with no + * extra trailing material. For PEM, the buffer must + * contain a null-terminated string. + * \param keylen Size of \b key in bytes. + * For PEM data, this includes the terminating null byte, + * so \p keylen must be equal to `strlen(key) + 1`. + * \param pwd Optional password for decryption. + * Pass \c NULL if expecting a non-encrypted key. + * Pass a string of \p pwdlen bytes if expecting an encrypted + * key; a non-encrypted key will also be accepted. + * The empty password is not supported. + * \param pwdlen Size of the password in bytes. + * Ignored if \p pwd is \c NULL. + * + * \note On entry, ctx must be empty, either freshly initialised + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a + * specific key type, check the result with mbedtls_pk_can_do(). + * + * \note The key is also checked for correctness. + * + * \return 0 if successful, or a specific PK or PEM error code + */ +int mbedtls_pk_parse_key( mbedtls_pk_context *ctx, + const unsigned char *key, size_t keylen, + const unsigned char *pwd, size_t pwdlen ); + +/** \ingroup pk_module */ +/** + * \brief Parse a public key in PEM or DER format + * + * \param ctx The PK context to fill. It must have been initialized + * but not set up. + * \param key Input buffer to parse. + * The buffer must contain the input exactly, with no + * extra trailing material. For PEM, the buffer must + * contain a null-terminated string. + * \param keylen Size of \b key in bytes. + * For PEM data, this includes the terminating null byte, + * so \p keylen must be equal to `strlen(key) + 1`. + * + * \note On entry, ctx must be empty, either freshly initialised + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a + * specific key type, check the result with mbedtls_pk_can_do(). + * + * \note The key is also checked for correctness. + * + * \return 0 if successful, or a specific PK or PEM error code + */ +int mbedtls_pk_parse_public_key( mbedtls_pk_context *ctx, + const unsigned char *key, size_t keylen ); + +#if defined(MBEDTLS_FS_IO) +/** \ingroup pk_module */ +/** + * \brief Load and parse a private key + * + * \param ctx The PK context to fill. It must have been initialized + * but not set up. + * \param path filename to read the private key from + * \param password Optional password to decrypt the file. + * Pass \c NULL if expecting a non-encrypted key. + * Pass a null-terminated string if expecting an encrypted + * key; a non-encrypted key will also be accepted. + * The empty password is not supported. + * + * \note On entry, ctx must be empty, either freshly initialised + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If you need a + * specific key type, check the result with mbedtls_pk_can_do(). + * + * \note The key is also checked for correctness. + * + * \return 0 if successful, or a specific PK or PEM error code + */ +int mbedtls_pk_parse_keyfile( mbedtls_pk_context *ctx, + const char *path, const char *password ); + +/** \ingroup pk_module */ +/** + * \brief Load and parse a public key + * + * \param ctx The PK context to fill. It must have been initialized + * but not set up. + * \param path filename to read the public key from + * + * \note On entry, ctx must be empty, either freshly initialised + * with mbedtls_pk_init() or reset with mbedtls_pk_free(). If + * you need a specific key type, check the result with + * mbedtls_pk_can_do(). + * + * \note The key is also checked for correctness. + * + * \return 0 if successful, or a specific PK or PEM error code + */ +int mbedtls_pk_parse_public_keyfile( mbedtls_pk_context *ctx, const char *path ); +#endif /* MBEDTLS_FS_IO */ +#endif /* MBEDTLS_PK_PARSE_C */ + +#if defined(MBEDTLS_PK_WRITE_C) +/** + * \brief Write a private key to a PKCS#1 or SEC1 DER structure + * Note: data is written at the end of the buffer! Use the + * return value to determine where you should start + * using the buffer + * + * \param ctx PK context which must contain a valid private key. + * \param buf buffer to write to + * \param size size of the buffer + * + * \return length of data written if successful, or a specific + * error code + */ +int mbedtls_pk_write_key_der( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); + +/** + * \brief Write a public key to a SubjectPublicKeyInfo DER structure + * Note: data is written at the end of the buffer! Use the + * return value to determine where you should start + * using the buffer + * + * \param ctx PK context which must contain a valid public or private key. + * \param buf buffer to write to + * \param size size of the buffer + * + * \return length of data written if successful, or a specific + * error code + */ +int mbedtls_pk_write_pubkey_der( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); + +#if defined(MBEDTLS_PEM_WRITE_C) +/** + * \brief Write a public key to a PEM string + * + * \param ctx PK context which must contain a valid public or private key. + * \param buf Buffer to write to. The output includes a + * terminating null byte. + * \param size Size of the buffer in bytes. + * + * \return 0 if successful, or a specific error code + */ +int mbedtls_pk_write_pubkey_pem( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); + +/** + * \brief Write a private key to a PKCS#1 or SEC1 PEM string + * + * \param ctx PK context which must contain a valid private key. + * \param buf Buffer to write to. The output includes a + * terminating null byte. + * \param size Size of the buffer in bytes. + * + * \return 0 if successful, or a specific error code + */ +int mbedtls_pk_write_key_pem( mbedtls_pk_context *ctx, unsigned char *buf, size_t size ); +#endif /* MBEDTLS_PEM_WRITE_C */ +#endif /* MBEDTLS_PK_WRITE_C */ + +/* + * WARNING: Low-level functions. You probably do not want to use these unless + * you are certain you do ;) + */ + +#if defined(MBEDTLS_PK_PARSE_C) +/** + * \brief Parse a SubjectPublicKeyInfo DER structure + * + * \param p the position in the ASN.1 data + * \param end end of the buffer + * \param pk The PK context to fill. It must have been initialized + * but not set up. + * + * \return 0 if successful, or a specific PK error code + */ +int mbedtls_pk_parse_subpubkey( unsigned char **p, const unsigned char *end, + mbedtls_pk_context *pk ); +#endif /* MBEDTLS_PK_PARSE_C */ + +#if defined(MBEDTLS_PK_WRITE_C) +/** + * \brief Write a subjectPublicKey to ASN.1 data + * Note: function works backwards in data buffer + * + * \param p reference to current position pointer + * \param start start of the buffer (for bounds-checking) + * \param key PK context which must contain a valid public or private key. + * + * \return the length written or a negative error code + */ +int mbedtls_pk_write_pubkey( unsigned char **p, unsigned char *start, + const mbedtls_pk_context *key ); +#endif /* MBEDTLS_PK_WRITE_C */ + +/* + * Internal module functions. You probably do not want to use these unless you + * know you do. + */ +#if defined(MBEDTLS_FS_IO) +int mbedtls_pk_load_file( const char *path, unsigned char **buf, size_t *n ); +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +/** + * \brief Turn an EC key into an opaque one. + * + * \warning This is a temporary utility function for tests. It might + * change or be removed at any time without notice. + * + * \note Only ECDSA keys are supported so far. Signing with the + * specified hash is the only allowed use of that key. + * + * \param pk Input: the EC key to import to a PSA key. + * Output: a PK context wrapping that PSA key. + * \param handle Output: a PSA key handle. + * It's the caller's responsibility to call + * psa_destroy_key() on that handle after calling + * mbedtls_pk_free() on the PK context. + * \param hash_alg The hash algorithm to allow for use with that key. + * + * \return \c 0 if successful. + * \return An Mbed TLS error code otherwise. + */ +int mbedtls_pk_wrap_as_opaque( mbedtls_pk_context *pk, + psa_key_handle_t *handle, + psa_algorithm_t hash_alg ); +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_PK_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk_internal.h new file mode 100644 index 00000000..7ef6322e --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pk_internal.h @@ -0,0 +1,142 @@ +/** + * \file pk_internal.h + * + * \brief Public Key abstraction layer: wrapper functions + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_PK_WRAP_H +#define MBEDTLS_PK_WRAP_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/pk.h" + +struct mbedtls_pk_info_t +{ + /** Public key type */ + mbedtls_pk_type_t type; + + /** Type name */ + const char *name; + + /** Get key size in bits */ + size_t (*get_bitlen)( const void * ); + + /** Tell if the context implements this type (e.g. ECKEY can do ECDSA) */ + int (*can_do)( mbedtls_pk_type_t type ); + + /** Verify signature */ + int (*verify_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len ); + + /** Make signature */ + int (*sign_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + /** Verify signature (restartable) */ + int (*verify_rs_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + const unsigned char *sig, size_t sig_len, + void *rs_ctx ); + + /** Make signature (restartable) */ + int (*sign_rs_func)( void *ctx, mbedtls_md_type_t md_alg, + const unsigned char *hash, size_t hash_len, + unsigned char *sig, size_t *sig_len, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, void *rs_ctx ); +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + + /** Decrypt message */ + int (*decrypt_func)( void *ctx, const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + + /** Encrypt message */ + int (*encrypt_func)( void *ctx, const unsigned char *input, size_t ilen, + unsigned char *output, size_t *olen, size_t osize, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + + /** Check public-private key pair */ + int (*check_pair_func)( const void *pub, const void *prv ); + + /** Allocate a new context */ + void * (*ctx_alloc_func)( void ); + + /** Free the given context */ + void (*ctx_free_func)( void *ctx ); + +#if defined(MBEDTLS_ECDSA_C) && defined(MBEDTLS_ECP_RESTARTABLE) + /** Allocate the restart context */ + void * (*rs_alloc_func)( void ); + + /** Free the restart context */ + void (*rs_free_func)( void *rs_ctx ); +#endif /* MBEDTLS_ECDSA_C && MBEDTLS_ECP_RESTARTABLE */ + + /** Interface with the debug module */ + void (*debug_func)( const void *ctx, mbedtls_pk_debug_item *items ); + +}; +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) +/* Container for RSA-alt */ +typedef struct +{ + void *key; + mbedtls_pk_rsa_alt_decrypt_func decrypt_func; + mbedtls_pk_rsa_alt_sign_func sign_func; + mbedtls_pk_rsa_alt_key_len_func key_len_func; +} mbedtls_rsa_alt_context; +#endif + +#if defined(MBEDTLS_RSA_C) +extern const mbedtls_pk_info_t mbedtls_rsa_info; +#endif + +#if defined(MBEDTLS_ECP_C) +extern const mbedtls_pk_info_t mbedtls_eckey_info; +extern const mbedtls_pk_info_t mbedtls_eckeydh_info; +#endif + +#if defined(MBEDTLS_ECDSA_C) +extern const mbedtls_pk_info_t mbedtls_ecdsa_info; +#endif + +#if defined(MBEDTLS_PK_RSA_ALT_SUPPORT) +extern const mbedtls_pk_info_t mbedtls_rsa_alt_info; +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) +extern const mbedtls_pk_info_t mbedtls_pk_opaque_info; +#endif + +#endif /* MBEDTLS_PK_WRAP_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs12.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs12.h new file mode 100644 index 00000000..9d42d7ff --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs12.h @@ -0,0 +1,130 @@ +/** + * \file pkcs12.h + * + * \brief PKCS#12 Personal Information Exchange Syntax + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PKCS12_H +#define MBEDTLS_PKCS12_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/md.h" +#include "mbedtls/cipher.h" +#include "mbedtls/asn1.h" + +#include + +#define MBEDTLS_ERR_PKCS12_BAD_INPUT_DATA -0x1F80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PKCS12_FEATURE_UNAVAILABLE -0x1F00 /**< Feature not available, e.g. unsupported encryption scheme. */ +#define MBEDTLS_ERR_PKCS12_PBE_INVALID_FORMAT -0x1E80 /**< PBE ASN.1 data not as expected. */ +#define MBEDTLS_ERR_PKCS12_PASSWORD_MISMATCH -0x1E00 /**< Given private key password does not allow for correct decryption. */ + +#define MBEDTLS_PKCS12_DERIVE_KEY 1 /**< encryption/decryption key */ +#define MBEDTLS_PKCS12_DERIVE_IV 2 /**< initialization vector */ +#define MBEDTLS_PKCS12_DERIVE_MAC_KEY 3 /**< integrity / MAC key */ + +#define MBEDTLS_PKCS12_PBE_DECRYPT 0 +#define MBEDTLS_PKCS12_PBE_ENCRYPT 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(MBEDTLS_ASN1_PARSE_C) + +/** + * \brief PKCS12 Password Based function (encryption / decryption) + * for pbeWithSHAAnd128BitRC4 + * + * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure + * \param mode either MBEDTLS_PKCS12_PBE_ENCRYPT or MBEDTLS_PKCS12_PBE_DECRYPT + * \param pwd the password used (may be NULL if no password is used) + * \param pwdlen length of the password (may be 0) + * \param input the input data + * \param len data length + * \param output the output buffer + * + * \return 0 if successful, or a MBEDTLS_ERR_XXX code + */ +int mbedtls_pkcs12_pbe_sha1_rc4_128( mbedtls_asn1_buf *pbe_params, int mode, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *input, size_t len, + unsigned char *output ); + +/** + * \brief PKCS12 Password Based function (encryption / decryption) + * for cipher-based and mbedtls_md-based PBE's + * + * \param pbe_params an ASN1 buffer containing the pkcs-12PbeParams structure + * \param mode either MBEDTLS_PKCS12_PBE_ENCRYPT or MBEDTLS_PKCS12_PBE_DECRYPT + * \param cipher_type the cipher used + * \param md_type the mbedtls_md used + * \param pwd the password used (may be NULL if no password is used) + * \param pwdlen length of the password (may be 0) + * \param input the input data + * \param len data length + * \param output the output buffer + * + * \return 0 if successful, or a MBEDTLS_ERR_XXX code + */ +int mbedtls_pkcs12_pbe( mbedtls_asn1_buf *pbe_params, int mode, + mbedtls_cipher_type_t cipher_type, mbedtls_md_type_t md_type, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *input, size_t len, + unsigned char *output ); + +#endif /* MBEDTLS_ASN1_PARSE_C */ + +/** + * \brief The PKCS#12 derivation function uses a password and a salt + * to produce pseudo-random bits for a particular "purpose". + * + * Depending on the given id, this function can produce an + * encryption/decryption key, an nitialization vector or an + * integrity key. + * + * \param data buffer to store the derived data in + * \param datalen length to fill + * \param pwd password to use (may be NULL if no password is used) + * \param pwdlen length of the password (may be 0) + * \param salt salt buffer to use + * \param saltlen length of the salt + * \param mbedtls_md mbedtls_md type to use during the derivation + * \param id id that describes the purpose (can be MBEDTLS_PKCS12_DERIVE_KEY, + * MBEDTLS_PKCS12_DERIVE_IV or MBEDTLS_PKCS12_DERIVE_MAC_KEY) + * \param iterations number of iterations + * + * \return 0 if successful, or a MD, BIGNUM type error. + */ +int mbedtls_pkcs12_derivation( unsigned char *data, size_t datalen, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *salt, size_t saltlen, + mbedtls_md_type_t mbedtls_md, int id, int iterations ); + +#ifdef __cplusplus +} +#endif + +#endif /* pkcs12.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs5.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs5.h new file mode 100644 index 00000000..bbec7e7e --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/pkcs5.h @@ -0,0 +1,109 @@ +/** + * \file pkcs5.h + * + * \brief PKCS#5 functions + * + * \author Mathias Olsson + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PKCS5_H +#define MBEDTLS_PKCS5_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/asn1.h" +#include "mbedtls/md.h" + +#include +#include + +#define MBEDTLS_ERR_PKCS5_BAD_INPUT_DATA -0x2f80 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_PKCS5_INVALID_FORMAT -0x2f00 /**< Unexpected ASN.1 data. */ +#define MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE -0x2e80 /**< Requested encryption or digest alg not available. */ +#define MBEDTLS_ERR_PKCS5_PASSWORD_MISMATCH -0x2e00 /**< Given private key password does not allow for correct decryption. */ + +#define MBEDTLS_PKCS5_DECRYPT 0 +#define MBEDTLS_PKCS5_ENCRYPT 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(MBEDTLS_ASN1_PARSE_C) + +/** + * \brief PKCS#5 PBES2 function + * + * \param pbe_params the ASN.1 algorithm parameters + * \param mode either MBEDTLS_PKCS5_DECRYPT or MBEDTLS_PKCS5_ENCRYPT + * \param pwd password to use when generating key + * \param pwdlen length of password + * \param data data to process + * \param datalen length of data + * \param output output buffer + * + * \returns 0 on success, or a MBEDTLS_ERR_XXX code if verification fails. + */ +int mbedtls_pkcs5_pbes2( const mbedtls_asn1_buf *pbe_params, int mode, + const unsigned char *pwd, size_t pwdlen, + const unsigned char *data, size_t datalen, + unsigned char *output ); + +#endif /* MBEDTLS_ASN1_PARSE_C */ + +/** + * \brief PKCS#5 PBKDF2 using HMAC + * + * \param ctx Generic HMAC context + * \param password Password to use when generating key + * \param plen Length of password + * \param salt Salt to use when generating key + * \param slen Length of salt + * \param iteration_count Iteration count + * \param key_length Length of generated key in bytes + * \param output Generated key. Must be at least as big as key_length + * + * \returns 0 on success, or a MBEDTLS_ERR_XXX code if verification fails. + */ +int mbedtls_pkcs5_pbkdf2_hmac( mbedtls_md_context_t *ctx, const unsigned char *password, + size_t plen, const unsigned char *salt, size_t slen, + unsigned int iteration_count, + uint32_t key_length, unsigned char *output ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_pkcs5_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* pkcs5.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform.h new file mode 100644 index 00000000..b402f8f9 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform.h @@ -0,0 +1,419 @@ +/** + * \file platform.h + * + * \brief This file contains the definitions and functions of the + * Mbed TLS platform abstraction layer. + * + * The platform abstraction layer removes the need for the library + * to directly link to standard C library functions or operating + * system services, making the library easier to port and embed. + * Application developers and users of the library can provide their own + * implementations of these functions, or implementations specific to + * their platform, which can be statically linked to the library or + * dynamically configured at runtime. + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PLATFORM_H +#define MBEDTLS_PLATFORM_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_HAVE_TIME) +#include "mbedtls/platform_time.h" +#endif + +#define MBEDTLS_ERR_PLATFORM_HW_ACCEL_FAILED -0x0070 /**< Hardware accelerator failed */ +#define MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED -0x0072 /**< The requested feature is not supported by the platform */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +/* The older Microsoft Windows common runtime provides non-conforming + * implementations of some standard library functions, including snprintf + * and vsnprintf. This affects MSVC and MinGW builds. + */ +#if defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER <= 1900) +#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF +#define MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF +#endif + +#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) +#include +#include +#include +#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF) +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF) +#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< The default \c snprintf function to use. */ +#else +#define MBEDTLS_PLATFORM_STD_SNPRINTF snprintf /**< The default \c snprintf function to use. */ +#endif +#endif +#if !defined(MBEDTLS_PLATFORM_STD_VSNPRINTF) +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF) +#define MBEDTLS_PLATFORM_STD_VSNPRINTF mbedtls_platform_win32_vsnprintf /**< The default \c vsnprintf function to use. */ +#else +#define MBEDTLS_PLATFORM_STD_VSNPRINTF vsnprintf /**< The default \c vsnprintf function to use. */ +#endif +#endif +#if !defined(MBEDTLS_PLATFORM_STD_PRINTF) +#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< The default \c printf function to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_FPRINTF) +#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< The default \c fprintf function to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_CALLOC) +#define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< The default \c calloc function to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_FREE) +#define MBEDTLS_PLATFORM_STD_FREE free /**< The default \c free function to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_EXIT) +#define MBEDTLS_PLATFORM_STD_EXIT exit /**< The default \c exit function to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_TIME) +#define MBEDTLS_PLATFORM_STD_TIME time /**< The default \c time function to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS) +#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS /**< The default exit value to use. */ +#endif +#if !defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE) +#define MBEDTLS_PLATFORM_STD_EXIT_FAILURE EXIT_FAILURE /**< The default exit value to use. */ +#endif +#if defined(MBEDTLS_FS_IO) +#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_READ) +#define MBEDTLS_PLATFORM_STD_NV_SEED_READ mbedtls_platform_std_nv_seed_read +#endif +#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_WRITE) +#define MBEDTLS_PLATFORM_STD_NV_SEED_WRITE mbedtls_platform_std_nv_seed_write +#endif +#if !defined(MBEDTLS_PLATFORM_STD_NV_SEED_FILE) +#define MBEDTLS_PLATFORM_STD_NV_SEED_FILE "seedfile" +#endif +#endif /* MBEDTLS_FS_IO */ +#else /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */ +#if defined(MBEDTLS_PLATFORM_STD_MEM_HDR) +#include MBEDTLS_PLATFORM_STD_MEM_HDR +#endif +#endif /* MBEDTLS_PLATFORM_NO_STD_FUNCTIONS */ + + +/* \} name SECTION: Module settings */ + +/* + * The function pointers for calloc and free. + */ +#if defined(MBEDTLS_PLATFORM_MEMORY) +#if defined(MBEDTLS_PLATFORM_FREE_MACRO) && \ + defined(MBEDTLS_PLATFORM_CALLOC_MACRO) +#define mbedtls_free MBEDTLS_PLATFORM_FREE_MACRO +#define mbedtls_calloc MBEDTLS_PLATFORM_CALLOC_MACRO +#else +/* For size_t */ +#include +extern void *mbedtls_calloc( size_t n, size_t size ); +extern void mbedtls_free( void *ptr ); + +/** + * \brief This function dynamically sets the memory-management + * functions used by the library, during runtime. + * + * \param calloc_func The \c calloc function implementation. + * \param free_func The \c free function implementation. + * + * \return \c 0. + */ +int mbedtls_platform_set_calloc_free( void * (*calloc_func)( size_t, size_t ), + void (*free_func)( void * ) ); +#endif /* MBEDTLS_PLATFORM_FREE_MACRO && MBEDTLS_PLATFORM_CALLOC_MACRO */ +#else /* !MBEDTLS_PLATFORM_MEMORY */ +#define mbedtls_free free +#define mbedtls_calloc calloc +#endif /* MBEDTLS_PLATFORM_MEMORY && !MBEDTLS_PLATFORM_{FREE,CALLOC}_MACRO */ + +/* + * The function pointers for fprintf + */ +#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT) +/* We need FILE * */ +#include +extern int (*mbedtls_fprintf)( FILE *stream, const char *format, ... ); + +/** + * \brief This function dynamically configures the fprintf + * function that is called when the + * mbedtls_fprintf() function is invoked by the library. + * + * \param fprintf_func The \c fprintf function implementation. + * + * \return \c 0. + */ +int mbedtls_platform_set_fprintf( int (*fprintf_func)( FILE *stream, const char *, + ... ) ); +#else +#if defined(MBEDTLS_PLATFORM_FPRINTF_MACRO) +#define mbedtls_fprintf MBEDTLS_PLATFORM_FPRINTF_MACRO +#else +#define mbedtls_fprintf fprintf +#endif /* MBEDTLS_PLATFORM_FPRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */ + +/* + * The function pointers for printf + */ +#if defined(MBEDTLS_PLATFORM_PRINTF_ALT) +extern int (*mbedtls_printf)( const char *format, ... ); + +/** + * \brief This function dynamically configures the snprintf + * function that is called when the mbedtls_snprintf() + * function is invoked by the library. + * + * \param printf_func The \c printf function implementation. + * + * \return \c 0 on success. + */ +int mbedtls_platform_set_printf( int (*printf_func)( const char *, ... ) ); +#else /* !MBEDTLS_PLATFORM_PRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_PRINTF_MACRO) +#define mbedtls_printf MBEDTLS_PLATFORM_PRINTF_MACRO +#else +#define mbedtls_printf printf +#endif /* MBEDTLS_PLATFORM_PRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_PRINTF_ALT */ + +/* + * The function pointers for snprintf + * + * The snprintf implementation should conform to C99: + * - it *must* always correctly zero-terminate the buffer + * (except when n == 0, then it must leave the buffer untouched) + * - however it is acceptable to return -1 instead of the required length when + * the destination buffer is too short. + */ +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_SNPRINTF) +/* For Windows (inc. MSYS2), we provide our own fixed implementation */ +int mbedtls_platform_win32_snprintf( char *s, size_t n, const char *fmt, ... ); +#endif + +#if defined(MBEDTLS_PLATFORM_SNPRINTF_ALT) +extern int (*mbedtls_snprintf)( char * s, size_t n, const char * format, ... ); + +/** + * \brief This function allows configuring a custom + * \c snprintf function pointer. + * + * \param snprintf_func The \c snprintf function implementation. + * + * \return \c 0 on success. + */ +int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n, + const char * format, ... ) ); +#else /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO) +#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO +#else +#define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF +#endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */ + +/* + * The function pointers for vsnprintf + * + * The vsnprintf implementation should conform to C99: + * - it *must* always correctly zero-terminate the buffer + * (except when n == 0, then it must leave the buffer untouched) + * - however it is acceptable to return -1 instead of the required length when + * the destination buffer is too short. + */ +#if defined(MBEDTLS_PLATFORM_HAS_NON_CONFORMING_VSNPRINTF) +#include +/* For Older Windows (inc. MSYS2), we provide our own fixed implementation */ +int mbedtls_platform_win32_vsnprintf( char *s, size_t n, const char *fmt, va_list arg ); +#endif + +#if defined(MBEDTLS_PLATFORM_VSNPRINTF_ALT) +#include +extern int (*mbedtls_vsnprintf)( char * s, size_t n, const char * format, va_list arg ); + +/** + * \brief Set your own snprintf function pointer + * + * \param vsnprintf_func The \c vsnprintf function implementation + * + * \return \c 0 + */ +int mbedtls_platform_set_vsnprintf( int (*vsnprintf_func)( char * s, size_t n, + const char * format, va_list arg ) ); +#else /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */ +#if defined(MBEDTLS_PLATFORM_VSNPRINTF_MACRO) +#define mbedtls_vsnprintf MBEDTLS_PLATFORM_VSNPRINTF_MACRO +#else +#define mbedtls_vsnprintf vsnprintf +#endif /* MBEDTLS_PLATFORM_VSNPRINTF_MACRO */ +#endif /* MBEDTLS_PLATFORM_VSNPRINTF_ALT */ + +/* + * The function pointers for exit + */ +#if defined(MBEDTLS_PLATFORM_EXIT_ALT) +extern void (*mbedtls_exit)( int status ); + +/** + * \brief This function dynamically configures the exit + * function that is called when the mbedtls_exit() + * function is invoked by the library. + * + * \param exit_func The \c exit function implementation. + * + * \return \c 0 on success. + */ +int mbedtls_platform_set_exit( void (*exit_func)( int status ) ); +#else +#if defined(MBEDTLS_PLATFORM_EXIT_MACRO) +#define mbedtls_exit MBEDTLS_PLATFORM_EXIT_MACRO +#else +#define mbedtls_exit exit +#endif /* MBEDTLS_PLATFORM_EXIT_MACRO */ +#endif /* MBEDTLS_PLATFORM_EXIT_ALT */ + +/* + * The default exit values + */ +#if defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS) +#define MBEDTLS_EXIT_SUCCESS MBEDTLS_PLATFORM_STD_EXIT_SUCCESS +#else +#define MBEDTLS_EXIT_SUCCESS 0 +#endif +#if defined(MBEDTLS_PLATFORM_STD_EXIT_FAILURE) +#define MBEDTLS_EXIT_FAILURE MBEDTLS_PLATFORM_STD_EXIT_FAILURE +#else +#define MBEDTLS_EXIT_FAILURE 1 +#endif + +/* + * The function pointers for reading from and writing a seed file to + * Non-Volatile storage (NV) in a platform-independent way + * + * Only enabled when the NV seed entropy source is enabled + */ +#if defined(MBEDTLS_ENTROPY_NV_SEED) +#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS) && defined(MBEDTLS_FS_IO) +/* Internal standard platform definitions */ +int mbedtls_platform_std_nv_seed_read( unsigned char *buf, size_t buf_len ); +int mbedtls_platform_std_nv_seed_write( unsigned char *buf, size_t buf_len ); +#endif + +#if defined(MBEDTLS_PLATFORM_NV_SEED_ALT) +extern int (*mbedtls_nv_seed_read)( unsigned char *buf, size_t buf_len ); +extern int (*mbedtls_nv_seed_write)( unsigned char *buf, size_t buf_len ); + +/** + * \brief This function allows configuring custom seed file writing and + * reading functions. + * + * \param nv_seed_read_func The seed reading function implementation. + * \param nv_seed_write_func The seed writing function implementation. + * + * \return \c 0 on success. + */ +int mbedtls_platform_set_nv_seed( + int (*nv_seed_read_func)( unsigned char *buf, size_t buf_len ), + int (*nv_seed_write_func)( unsigned char *buf, size_t buf_len ) + ); +#else +#if defined(MBEDTLS_PLATFORM_NV_SEED_READ_MACRO) && \ + defined(MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO) +#define mbedtls_nv_seed_read MBEDTLS_PLATFORM_NV_SEED_READ_MACRO +#define mbedtls_nv_seed_write MBEDTLS_PLATFORM_NV_SEED_WRITE_MACRO +#else +#define mbedtls_nv_seed_read mbedtls_platform_std_nv_seed_read +#define mbedtls_nv_seed_write mbedtls_platform_std_nv_seed_write +#endif +#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */ +#endif /* MBEDTLS_ENTROPY_NV_SEED */ + +#if !defined(MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT) + +/** + * \brief The platform context structure. + * + * \note This structure may be used to assist platform-specific + * setup or teardown operations. + */ +typedef struct mbedtls_platform_context +{ + char dummy; /**< A placeholder member, as empty structs are not portable. */ +} +mbedtls_platform_context; + +#else +#include "platform_alt.h" +#endif /* !MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT */ + +/** + * \brief This function performs any platform-specific initialization + * operations. + * + * \note This function should be called before any other library functions. + * + * Its implementation is platform-specific, and unless + * platform-specific code is provided, it does nothing. + * + * \note The usage and necessity of this function is dependent on the platform. + * + * \param ctx The platform context. + * + * \return \c 0 on success. + */ +int mbedtls_platform_setup( mbedtls_platform_context *ctx ); +/** + * \brief This function performs any platform teardown operations. + * + * \note This function should be called after every other Mbed TLS module + * has been correctly freed using the appropriate free function. + * + * Its implementation is platform-specific, and unless + * platform-specific code is provided, it does nothing. + * + * \note The usage and necessity of this function is dependent on the platform. + * + * \param ctx The platform context. + * + */ +void mbedtls_platform_teardown( mbedtls_platform_context *ctx ); + +#ifdef __cplusplus +} +#endif + +#endif /* platform.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_time.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_time.h new file mode 100644 index 00000000..fe484fd7 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_time.h @@ -0,0 +1,82 @@ +/** + * \file platform_time.h + * + * \brief mbed TLS Platform time abstraction + */ +/* + * Copyright (C) 2006-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PLATFORM_TIME_H +#define MBEDTLS_PLATFORM_TIME_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SECTION: Module settings + * + * The configuration options you can set for this module are in this section. + * Either change them in config.h or define them on the compiler command line. + * \{ + */ + +/* + * The time_t datatype + */ +#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO) +typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t; +#else +/* For time_t */ +#include +typedef time_t mbedtls_time_t; +#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */ + +/* + * The function pointers for time + */ +#if defined(MBEDTLS_PLATFORM_TIME_ALT) +extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time ); + +/** + * \brief Set your own time function pointer + * + * \param time_func the time function implementation + * + * \return 0 + */ +int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) ); +#else +#if defined(MBEDTLS_PLATFORM_TIME_MACRO) +#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO +#else +#define mbedtls_time time +#endif /* MBEDTLS_PLATFORM_TIME_MACRO */ +#endif /* MBEDTLS_PLATFORM_TIME_ALT */ + +#ifdef __cplusplus +} +#endif + +#endif /* platform_time.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_util.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_util.h new file mode 100644 index 00000000..cf0130a8 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/platform_util.h @@ -0,0 +1,196 @@ +/** + * \file platform_util.h + * + * \brief Common and shared functions used by multiple modules in the Mbed TLS + * library. + */ +/* + * Copyright (C) 2018, Arm Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_PLATFORM_UTIL_H +#define MBEDTLS_PLATFORM_UTIL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#if defined(MBEDTLS_HAVE_TIME_DATE) +#include "mbedtls/platform_time.h" +#include +#endif /* MBEDTLS_HAVE_TIME_DATE */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(MBEDTLS_CHECK_PARAMS) + +#if defined(MBEDTLS_CHECK_PARAMS_ASSERT) +/* Allow the user to define MBEDTLS_PARAM_FAILED to something like assert + * (which is what our config.h suggests). */ +#include +#endif /* MBEDTLS_CHECK_PARAMS_ASSERT */ + +#if defined(MBEDTLS_PARAM_FAILED) +/** An alternative definition of MBEDTLS_PARAM_FAILED has been set in config.h. + * + * This flag can be used to check whether it is safe to assume that + * MBEDTLS_PARAM_FAILED() will expand to a call to mbedtls_param_failed(). + */ +#define MBEDTLS_PARAM_FAILED_ALT + +#elif defined(MBEDTLS_CHECK_PARAMS_ASSERT) +#define MBEDTLS_PARAM_FAILED( cond ) assert( cond ) +#define MBEDTLS_PARAM_FAILED_ALT + +#else /* MBEDTLS_PARAM_FAILED */ +#define MBEDTLS_PARAM_FAILED( cond ) \ + mbedtls_param_failed( #cond, __FILE__, __LINE__ ) + +/** + * \brief User supplied callback function for parameter validation failure. + * See #MBEDTLS_CHECK_PARAMS for context. + * + * This function will be called unless an alternative treatement + * is defined through the #MBEDTLS_PARAM_FAILED macro. + * + * This function can return, and the operation will be aborted, or + * alternatively, through use of setjmp()/longjmp() can resume + * execution in the application code. + * + * \param failure_condition The assertion that didn't hold. + * \param file The file where the assertion failed. + * \param line The line in the file where the assertion failed. + */ +void mbedtls_param_failed( const char *failure_condition, + const char *file, + int line ); +#endif /* MBEDTLS_PARAM_FAILED */ + +/* Internal macro meant to be called only from within the library. */ +#define MBEDTLS_INTERNAL_VALIDATE_RET( cond, ret ) \ + do { \ + if( !(cond) ) \ + { \ + MBEDTLS_PARAM_FAILED( cond ); \ + return( ret ); \ + } \ + } while( 0 ) + +/* Internal macro meant to be called only from within the library. */ +#define MBEDTLS_INTERNAL_VALIDATE( cond ) \ + do { \ + if( !(cond) ) \ + { \ + MBEDTLS_PARAM_FAILED( cond ); \ + return; \ + } \ + } while( 0 ) + +#else /* MBEDTLS_CHECK_PARAMS */ + +/* Internal macros meant to be called only from within the library. */ +#define MBEDTLS_INTERNAL_VALIDATE_RET( cond, ret ) do { } while( 0 ) +#define MBEDTLS_INTERNAL_VALIDATE( cond ) do { } while( 0 ) + +#endif /* MBEDTLS_CHECK_PARAMS */ + +/* Internal helper macros for deprecating API constants. */ +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +/* Deliberately don't (yet) export MBEDTLS_DEPRECATED here + * to avoid conflict with other headers which define and use + * it, too. We might want to move all these definitions here at + * some point for uniformity. */ +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +MBEDTLS_DEPRECATED typedef char const * mbedtls_deprecated_string_constant_t; +#define MBEDTLS_DEPRECATED_STRING_CONSTANT( VAL ) \ + ( (mbedtls_deprecated_string_constant_t) ( VAL ) ) +MBEDTLS_DEPRECATED typedef int mbedtls_deprecated_numeric_constant_t; +#define MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( VAL ) \ + ( (mbedtls_deprecated_numeric_constant_t) ( VAL ) ) +#undef MBEDTLS_DEPRECATED +#else /* MBEDTLS_DEPRECATED_WARNING */ +#define MBEDTLS_DEPRECATED_STRING_CONSTANT( VAL ) VAL +#define MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( VAL ) VAL +#endif /* MBEDTLS_DEPRECATED_WARNING */ +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Securely zeroize a buffer + * + * The function is meant to wipe the data contained in a buffer so + * that it can no longer be recovered even if the program memory + * is later compromised. Call this function on sensitive data + * stored on the stack before returning from a function, and on + * sensitive data stored on the heap before freeing the heap + * object. + * + * It is extremely difficult to guarantee that calls to + * mbedtls_platform_zeroize() are not removed by aggressive + * compiler optimizations in a portable way. For this reason, Mbed + * TLS provides the configuration option + * MBEDTLS_PLATFORM_ZEROIZE_ALT, which allows users to configure + * mbedtls_platform_zeroize() to use a suitable implementation for + * their platform and needs + * + * \param buf Buffer to be zeroized + * \param len Length of the buffer in bytes + * + */ +void mbedtls_platform_zeroize( void *buf, size_t len ); + +#if defined(MBEDTLS_HAVE_TIME_DATE) +/** + * \brief Platform-specific implementation of gmtime_r() + * + * The function is a thread-safe abstraction that behaves + * similarly to the gmtime_r() function from Unix/POSIX. + * + * Mbed TLS will try to identify the underlying platform and + * make use of an appropriate underlying implementation (e.g. + * gmtime_r() for POSIX and gmtime_s() for Windows). If this is + * not possible, then gmtime() will be used. In this case, calls + * from the library to gmtime() will be guarded by the mutex + * mbedtls_threading_gmtime_mutex if MBEDTLS_THREADING_C is + * enabled. It is recommended that calls from outside the library + * are also guarded by this mutex. + * + * If MBEDTLS_PLATFORM_GMTIME_R_ALT is defined, then Mbed TLS will + * unconditionally use the alternative implementation for + * mbedtls_platform_gmtime_r() supplied by the user at compile time. + * + * \param tt Pointer to an object containing time (in seconds) since the + * epoch to be converted + * \param tm_buf Pointer to an object where the results will be stored + * + * \return Pointer to an object of type struct tm on success, otherwise + * NULL + */ +struct tm *mbedtls_platform_gmtime_r( const mbedtls_time_t *tt, + struct tm *tm_buf ); +#endif /* MBEDTLS_HAVE_TIME_DATE */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_PLATFORM_UTIL_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/poly1305.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/poly1305.h new file mode 100644 index 00000000..05866a2d --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/poly1305.h @@ -0,0 +1,192 @@ +/** + * \file poly1305.h + * + * \brief This file contains Poly1305 definitions and functions. + * + * Poly1305 is a one-time message authenticator that can be used to + * authenticate messages. Poly1305-AES was created by Daniel + * Bernstein https://cr.yp.to/mac/poly1305-20050329.pdf The generic + * Poly1305 algorithm (not tied to AES) was also standardized in RFC + * 7539. + * + * \author Daniel King + */ + +/* Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_POLY1305_H +#define MBEDTLS_POLY1305_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_ERR_POLY1305_BAD_INPUT_DATA -0x0057 /**< Invalid input parameter(s). */ + +/* MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE is deprecated and should not be + * used. */ +#define MBEDTLS_ERR_POLY1305_FEATURE_UNAVAILABLE -0x0059 /**< Feature not available. For example, s part of the API is not implemented. */ + +/* MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED is deprecated and should not be used. + */ +#define MBEDTLS_ERR_POLY1305_HW_ACCEL_FAILED -0x005B /**< Poly1305 hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_POLY1305_ALT) + +typedef struct mbedtls_poly1305_context +{ + uint32_t r[4]; /** The value for 'r' (low 128 bits of the key). */ + uint32_t s[4]; /** The value for 's' (high 128 bits of the key). */ + uint32_t acc[5]; /** The accumulator number. */ + uint8_t queue[16]; /** The current partial block of data. */ + size_t queue_len; /** The number of bytes stored in 'queue'. */ +} +mbedtls_poly1305_context; + +#else /* MBEDTLS_POLY1305_ALT */ +#include "poly1305_alt.h" +#endif /* MBEDTLS_POLY1305_ALT */ + +/** + * \brief This function initializes the specified Poly1305 context. + * + * It must be the first API called before using + * the context. + * + * It is usually followed by a call to + * \c mbedtls_poly1305_starts(), then one or more calls to + * \c mbedtls_poly1305_update(), then one call to + * \c mbedtls_poly1305_finish(), then finally + * \c mbedtls_poly1305_free(). + * + * \param ctx The Poly1305 context to initialize. This must + * not be \c NULL. + */ +void mbedtls_poly1305_init( mbedtls_poly1305_context *ctx ); + +/** + * \brief This function releases and clears the specified + * Poly1305 context. + * + * \param ctx The Poly1305 context to clear. This may be \c NULL, in which + * case this function is a no-op. If it is not \c NULL, it must + * point to an initialized Poly1305 context. + */ +void mbedtls_poly1305_free( mbedtls_poly1305_context *ctx ); + +/** + * \brief This function sets the one-time authentication key. + * + * \warning The key must be unique and unpredictable for each + * invocation of Poly1305. + * + * \param ctx The Poly1305 context to which the key should be bound. + * This must be initialized. + * \param key The buffer containing the \c 32 Byte (\c 256 Bit) key. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_poly1305_starts( mbedtls_poly1305_context *ctx, + const unsigned char key[32] ); + +/** + * \brief This functions feeds an input buffer into an ongoing + * Poly1305 computation. + * + * It is called between \c mbedtls_cipher_poly1305_starts() and + * \c mbedtls_cipher_poly1305_finish(). + * It can be called repeatedly to process a stream of data. + * + * \param ctx The Poly1305 context to use for the Poly1305 operation. + * This must be initialized and bound to a key. + * \param ilen The length of the input data in Bytes. + * Any value is accepted. + * \param input The buffer holding the input data. + * This pointer can be \c NULL if `ilen == 0`. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_poly1305_update( mbedtls_poly1305_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function generates the Poly1305 Message + * Authentication Code (MAC). + * + * \param ctx The Poly1305 context to use for the Poly1305 operation. + * This must be initialized and bound to a key. + * \param mac The buffer to where the MAC is written. This must + * be a writable buffer of length \c 16 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_poly1305_finish( mbedtls_poly1305_context *ctx, + unsigned char mac[16] ); + +/** + * \brief This function calculates the Poly1305 MAC of the input + * buffer with the provided key. + * + * \warning The key must be unique and unpredictable for each + * invocation of Poly1305. + * + * \param key The buffer containing the \c 32 Byte (\c 256 Bit) key. + * \param ilen The length of the input data in Bytes. + * Any value is accepted. + * \param input The buffer holding the input data. + * This pointer can be \c NULL if `ilen == 0`. + * \param mac The buffer to where the MAC is written. This must be + * a writable buffer of length \c 16 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_poly1305_mac( const unsigned char key[32], + const unsigned char *input, + size_t ilen, + unsigned char mac[16] ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief The Poly1305 checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_poly1305_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* MBEDTLS_POLY1305_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/psa_util.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/psa_util.h new file mode 100644 index 00000000..513bc5fe --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/psa_util.h @@ -0,0 +1,422 @@ +/** + * \file psa_util.h + * + * \brief Utility functions for the use of the PSA Crypto library. + * + * \warning This function is not part of the public API and may + * change at any time. + */ +/* + * Copyright (C) 2006-2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef MBEDTLS_PSA_UTIL_H +#define MBEDTLS_PSA_UTIL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#if defined(MBEDTLS_USE_PSA_CRYPTO) + +#include "psa/crypto.h" + +#include "mbedtls/ecp.h" +#include "mbedtls/md.h" +#include "mbedtls/pk.h" +#include "mbedtls/oid.h" + +#include + +/* Translations for symmetric crypto. */ + +static inline psa_key_type_t mbedtls_psa_translate_cipher_type( + mbedtls_cipher_type_t cipher ) +{ + switch( cipher ) + { + case MBEDTLS_CIPHER_AES_128_CCM: + case MBEDTLS_CIPHER_AES_192_CCM: + case MBEDTLS_CIPHER_AES_256_CCM: + case MBEDTLS_CIPHER_AES_128_GCM: + case MBEDTLS_CIPHER_AES_192_GCM: + case MBEDTLS_CIPHER_AES_256_GCM: + case MBEDTLS_CIPHER_AES_128_CBC: + case MBEDTLS_CIPHER_AES_192_CBC: + case MBEDTLS_CIPHER_AES_256_CBC: + return( PSA_KEY_TYPE_AES ); + + /* ARIA not yet supported in PSA. */ + /* case MBEDTLS_CIPHER_ARIA_128_CCM: + case MBEDTLS_CIPHER_ARIA_192_CCM: + case MBEDTLS_CIPHER_ARIA_256_CCM: + case MBEDTLS_CIPHER_ARIA_128_GCM: + case MBEDTLS_CIPHER_ARIA_192_GCM: + case MBEDTLS_CIPHER_ARIA_256_GCM: + case MBEDTLS_CIPHER_ARIA_128_CBC: + case MBEDTLS_CIPHER_ARIA_192_CBC: + case MBEDTLS_CIPHER_ARIA_256_CBC: + return( PSA_KEY_TYPE_ARIA ); */ + + default: + return( 0 ); + } +} + +static inline psa_algorithm_t mbedtls_psa_translate_cipher_mode( + mbedtls_cipher_mode_t mode, size_t taglen ) +{ + switch( mode ) + { + case MBEDTLS_MODE_GCM: + return( PSA_ALG_AEAD_WITH_TAG_LENGTH( PSA_ALG_GCM, taglen ) ); + case MBEDTLS_MODE_CCM: + return( PSA_ALG_AEAD_WITH_TAG_LENGTH( PSA_ALG_CCM, taglen ) ); + case MBEDTLS_MODE_CBC: + if( taglen == 0 ) + return( PSA_ALG_CBC_NO_PADDING ); + /* Intentional fallthrough for taglen != 0 */ + /* fallthrough */ + default: + return( 0 ); + } +} + +static inline psa_key_usage_t mbedtls_psa_translate_cipher_operation( + mbedtls_operation_t op ) +{ + switch( op ) + { + case MBEDTLS_ENCRYPT: + return( PSA_KEY_USAGE_ENCRYPT ); + case MBEDTLS_DECRYPT: + return( PSA_KEY_USAGE_DECRYPT ); + default: + return( 0 ); + } +} + +/* Translations for hashing. */ + +static inline psa_algorithm_t mbedtls_psa_translate_md( mbedtls_md_type_t md_alg ) +{ + switch( md_alg ) + { +#if defined(MBEDTLS_MD2_C) + case MBEDTLS_MD_MD2: + return( PSA_ALG_MD2 ); +#endif +#if defined(MBEDTLS_MD4_C) + case MBEDTLS_MD_MD4: + return( PSA_ALG_MD4 ); +#endif +#if defined(MBEDTLS_MD5_C) + case MBEDTLS_MD_MD5: + return( PSA_ALG_MD5 ); +#endif +#if defined(MBEDTLS_SHA1_C) + case MBEDTLS_MD_SHA1: + return( PSA_ALG_SHA_1 ); +#endif +#if defined(MBEDTLS_SHA256_C) + case MBEDTLS_MD_SHA224: + return( PSA_ALG_SHA_224 ); + case MBEDTLS_MD_SHA256: + return( PSA_ALG_SHA_256 ); +#endif +#if defined(MBEDTLS_SHA512_C) + case MBEDTLS_MD_SHA384: + return( PSA_ALG_SHA_384 ); + case MBEDTLS_MD_SHA512: + return( PSA_ALG_SHA_512 ); +#endif +#if defined(MBEDTLS_RIPEMD160_C) + case MBEDTLS_MD_RIPEMD160: + return( PSA_ALG_RIPEMD160 ); +#endif + case MBEDTLS_MD_NONE: /* Intentional fallthrough */ + default: + return( 0 ); + } +} + +/* Translations for ECC. */ + +static inline int mbedtls_psa_get_ecc_oid_from_id( + psa_ecc_curve_t curve, size_t bits, + char const **oid, size_t *oid_len ) +{ + switch( curve ) + { + case PSA_ECC_CURVE_SECP_R1: + switch( bits ) + { +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) + case 192: + *oid = MBEDTLS_OID_EC_GRP_SECP192R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) + case 224: + *oid = MBEDTLS_OID_EC_GRP_SECP224R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) + case 256: + *oid = MBEDTLS_OID_EC_GRP_SECP256R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) + case 384: + *oid = MBEDTLS_OID_EC_GRP_SECP384R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP384R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) + case 521: + *oid = MBEDTLS_OID_EC_GRP_SECP521R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP521R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ + } + break; + case PSA_ECC_CURVE_SECP_K1: + switch( bits ) + { +#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) + case 192: + *oid = MBEDTLS_OID_EC_GRP_SECP192K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP192K1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) + case 224: + *oid = MBEDTLS_OID_EC_GRP_SECP224K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP224K1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) + case 256: + *oid = MBEDTLS_OID_EC_GRP_SECP256K1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_SECP256K1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ + } + break; + case PSA_ECC_CURVE_BRAINPOOL_P_R1: + switch( bits ) + { +#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) + case 256: + *oid = MBEDTLS_OID_EC_GRP_BP256R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP256R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) + case 384: + *oid = MBEDTLS_OID_EC_GRP_BP384R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP384R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ +#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) + case 512: + *oid = MBEDTLS_OID_EC_GRP_BP512R1; + *oid_len = MBEDTLS_OID_SIZE( MBEDTLS_OID_EC_GRP_BP512R1 ); + return( 0 ); +#endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ + } + break; + } + (void) oid; + (void) oid_len; + return( -1 ); +} + +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH 1 + +#if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 521 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 521 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 192 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 224 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 256 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 384 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */ + +#if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) +#if MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH < ( 2 * ( ( 512 + 7 ) / 8 ) + 1 ) +#undef MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH +#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH ( 2 * ( ( 512 + 7 ) / 8 ) + 1 ) +#endif +#endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */ + + +/* Translations for PK layer */ + +static inline int mbedtls_psa_err_translate_pk( psa_status_t status ) +{ + switch( status ) + { + case PSA_SUCCESS: + return( 0 ); + case PSA_ERROR_NOT_SUPPORTED: + return( MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE ); + case PSA_ERROR_INSUFFICIENT_MEMORY: + return( MBEDTLS_ERR_PK_ALLOC_FAILED ); + case PSA_ERROR_INSUFFICIENT_ENTROPY: + return( MBEDTLS_ERR_ECP_RANDOM_FAILED ); + case PSA_ERROR_BAD_STATE: + return( MBEDTLS_ERR_PK_BAD_INPUT_DATA ); + /* All other failures */ + case PSA_ERROR_COMMUNICATION_FAILURE: + case PSA_ERROR_HARDWARE_FAILURE: + case PSA_ERROR_CORRUPTION_DETECTED: + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + default: /* We return the same as for the 'other failures', + * but list them separately nonetheless to indicate + * which failure conditions we have considered. */ + return( MBEDTLS_ERR_PK_HW_ACCEL_FAILED ); + } +} + +/* Translations for ECC */ + +/* This function transforms an ECC group identifier from + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * into a PSA ECC group identifier. */ +#if defined(MBEDTLS_ECP_C) +static inline psa_key_type_t mbedtls_psa_parse_tls_ecc_group( + uint16_t tls_ecc_grp_reg_id, size_t *bits ) +{ + const mbedtls_ecp_curve_info *curve_info = + mbedtls_ecp_curve_info_from_tls_id( tls_ecc_grp_reg_id ); + if( curve_info == NULL ) + return( 0 ); + return( PSA_KEY_TYPE_ECC_KEY_PAIR( + mbedtls_ecc_group_to_psa( curve_info->grp_id, bits ) ) ); +} +#endif /* MBEDTLS_ECP_C */ + +/* This function takes a buffer holding an EC public key + * exported through psa_export_public_key(), and converts + * it into an ECPoint structure to be put into a ClientKeyExchange + * message in an ECDHE exchange. + * + * Both the present and the foreseeable future format of EC public keys + * used by PSA have the ECPoint structure contained in the exported key + * as a subbuffer, and the function merely selects this subbuffer instead + * of making a copy. + */ +static inline int mbedtls_psa_tls_psa_ec_to_ecpoint( unsigned char *src, + size_t srclen, + unsigned char **dst, + size_t *dstlen ) +{ + *dst = src; + *dstlen = srclen; + return( 0 ); +} + +/* This function takes a buffer holding an ECPoint structure + * (as contained in a TLS ServerKeyExchange message for ECDHE + * exchanges) and converts it into a format that the PSA key + * agreement API understands. + */ +static inline int mbedtls_psa_tls_ecpoint_to_psa_ec( unsigned char const *src, + size_t srclen, + unsigned char *dst, + size_t dstlen, + size_t *olen ) +{ + if( srclen > dstlen ) + return( MBEDTLS_ERR_ECP_BUFFER_TOO_SMALL ); + + memcpy( dst, src, srclen ); + *olen = srclen; + return( 0 ); +} + +#endif /* MBEDTLS_USE_PSA_CRYPTO */ + +#endif /* MBEDTLS_PSA_UTIL_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ripemd160.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ripemd160.h new file mode 100644 index 00000000..3c1f5bf5 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ripemd160.h @@ -0,0 +1,237 @@ +/** + * \file ripemd160.h + * + * \brief RIPE MD-160 message digest + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_RIPEMD160_H +#define MBEDTLS_RIPEMD160_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED is deprecated and should not be used. + */ +#define MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED -0x0031 /**< RIPEMD160 hardware accelerator failed */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_RIPEMD160_ALT) +// Regular implementation +// + +/** + * \brief RIPEMD-160 context structure + */ +typedef struct mbedtls_ripemd160_context +{ + uint32_t total[2]; /*!< number of bytes processed */ + uint32_t state[5]; /*!< intermediate digest state */ + unsigned char buffer[64]; /*!< data block being processed */ +} +mbedtls_ripemd160_context; + +#else /* MBEDTLS_RIPEMD160_ALT */ +#include "ripemd160_alt.h" +#endif /* MBEDTLS_RIPEMD160_ALT */ + +/** + * \brief Initialize RIPEMD-160 context + * + * \param ctx RIPEMD-160 context to be initialized + */ +void mbedtls_ripemd160_init( mbedtls_ripemd160_context *ctx ); + +/** + * \brief Clear RIPEMD-160 context + * + * \param ctx RIPEMD-160 context to be cleared + */ +void mbedtls_ripemd160_free( mbedtls_ripemd160_context *ctx ); + +/** + * \brief Clone (the state of) an RIPEMD-160 context + * + * \param dst The destination context + * \param src The context to be cloned + */ +void mbedtls_ripemd160_clone( mbedtls_ripemd160_context *dst, + const mbedtls_ripemd160_context *src ); + +/** + * \brief RIPEMD-160 context setup + * + * \param ctx context to be initialized + * + * \return 0 if successful + */ +int mbedtls_ripemd160_starts_ret( mbedtls_ripemd160_context *ctx ); + +/** + * \brief RIPEMD-160 process buffer + * + * \param ctx RIPEMD-160 context + * \param input buffer holding the data + * \param ilen length of the input data + * + * \return 0 if successful + */ +int mbedtls_ripemd160_update_ret( mbedtls_ripemd160_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief RIPEMD-160 final digest + * + * \param ctx RIPEMD-160 context + * \param output RIPEMD-160 checksum result + * + * \return 0 if successful + */ +int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx, + unsigned char output[20] ); + +/** + * \brief RIPEMD-160 process data block (internal use only) + * + * \param ctx RIPEMD-160 context + * \param data buffer holding one block of data + * + * \return 0 if successful + */ +int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, + const unsigned char data[64] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief RIPEMD-160 context setup + * + * \deprecated Superseded by mbedtls_ripemd160_starts_ret() in 2.7.0 + * + * \param ctx context to be initialized + */ +MBEDTLS_DEPRECATED void mbedtls_ripemd160_starts( + mbedtls_ripemd160_context *ctx ); + +/** + * \brief RIPEMD-160 process buffer + * + * \deprecated Superseded by mbedtls_ripemd160_update_ret() in 2.7.0 + * + * \param ctx RIPEMD-160 context + * \param input buffer holding the data + * \param ilen length of the input data + */ +MBEDTLS_DEPRECATED void mbedtls_ripemd160_update( + mbedtls_ripemd160_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief RIPEMD-160 final digest + * + * \deprecated Superseded by mbedtls_ripemd160_finish_ret() in 2.7.0 + * + * \param ctx RIPEMD-160 context + * \param output RIPEMD-160 checksum result + */ +MBEDTLS_DEPRECATED void mbedtls_ripemd160_finish( + mbedtls_ripemd160_context *ctx, + unsigned char output[20] ); + +/** + * \brief RIPEMD-160 process data block (internal use only) + * + * \deprecated Superseded by mbedtls_internal_ripemd160_process() in 2.7.0 + * + * \param ctx RIPEMD-160 context + * \param data buffer holding one block of data + */ +MBEDTLS_DEPRECATED void mbedtls_ripemd160_process( + mbedtls_ripemd160_context *ctx, + const unsigned char data[64] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief Output = RIPEMD-160( input buffer ) + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output RIPEMD-160 checksum result + * + * \return 0 if successful + */ +int mbedtls_ripemd160_ret( const unsigned char *input, + size_t ilen, + unsigned char output[20] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief Output = RIPEMD-160( input buffer ) + * + * \deprecated Superseded by mbedtls_ripemd160_ret() in 2.7.0 + * + * \param input buffer holding the data + * \param ilen length of the input data + * \param output RIPEMD-160 checksum result + */ +MBEDTLS_DEPRECATED void mbedtls_ripemd160( const unsigned char *input, + size_t ilen, + unsigned char output[20] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_ripemd160_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_ripemd160.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa.h new file mode 100644 index 00000000..ec8d0d8d --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa.h @@ -0,0 +1,1277 @@ +/** + * \file rsa.h + * + * \brief This file provides an API for the RSA public-key cryptosystem. + * + * The RSA public-key cryptosystem is defined in Public-Key + * Cryptography Standards (PKCS) #1 v1.5: RSA Encryption + * and Public-Key Cryptography Standards (PKCS) #1 v2.1: + * RSA Cryptography Specifications. + * + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_RSA_H +#define MBEDTLS_RSA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/bignum.h" +#include "mbedtls/md.h" + +#if defined(MBEDTLS_THREADING_C) +#include "mbedtls/threading.h" +#endif + +/* + * RSA Error codes + */ +#define MBEDTLS_ERR_RSA_BAD_INPUT_DATA -0x4080 /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_RSA_INVALID_PADDING -0x4100 /**< Input data contains invalid padding and is rejected. */ +#define MBEDTLS_ERR_RSA_KEY_GEN_FAILED -0x4180 /**< Something failed during generation of a key. */ +#define MBEDTLS_ERR_RSA_KEY_CHECK_FAILED -0x4200 /**< Key failed to pass the validity check of the library. */ +#define MBEDTLS_ERR_RSA_PUBLIC_FAILED -0x4280 /**< The public key operation failed. */ +#define MBEDTLS_ERR_RSA_PRIVATE_FAILED -0x4300 /**< The private key operation failed. */ +#define MBEDTLS_ERR_RSA_VERIFY_FAILED -0x4380 /**< The PKCS#1 verification failed. */ +#define MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE -0x4400 /**< The output buffer for decryption is not large enough. */ +#define MBEDTLS_ERR_RSA_RNG_FAILED -0x4480 /**< The random generator failed to generate non-zeros. */ + +/* MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION is deprecated and should not be used. + */ +#define MBEDTLS_ERR_RSA_UNSUPPORTED_OPERATION -0x4500 /**< The implementation does not offer the requested operation, for example, because of security violations or lack of functionality. */ + +/* MBEDTLS_ERR_RSA_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_RSA_HW_ACCEL_FAILED -0x4580 /**< RSA hardware accelerator failed. */ + +/* + * RSA constants + */ +#define MBEDTLS_RSA_PUBLIC 0 /**< Request private key operation. */ +#define MBEDTLS_RSA_PRIVATE 1 /**< Request public key operation. */ + +#define MBEDTLS_RSA_PKCS_V15 0 /**< Use PKCS#1 v1.5 encoding. */ +#define MBEDTLS_RSA_PKCS_V21 1 /**< Use PKCS#1 v2.1 encoding. */ + +#define MBEDTLS_RSA_SIGN 1 /**< Identifier for RSA signature operations. */ +#define MBEDTLS_RSA_CRYPT 2 /**< Identifier for RSA encryption and decryption operations. */ + +#define MBEDTLS_RSA_SALT_LEN_ANY -1 + +/* + * The above constants may be used even if the RSA module is compile out, + * eg for alternative (PKCS#11) RSA implemenations in the PK layers. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_RSA_ALT) +// Regular implementation +// + +/** + * \brief The RSA context structure. + * + * \note Direct manipulation of the members of this structure + * is deprecated. All manipulation should instead be done through + * the public interface functions. + */ +typedef struct mbedtls_rsa_context +{ + int ver; /*!< Always 0.*/ + size_t len; /*!< The size of \p N in Bytes. */ + + mbedtls_mpi N; /*!< The public modulus. */ + mbedtls_mpi E; /*!< The public exponent. */ + + mbedtls_mpi D; /*!< The private exponent. */ + mbedtls_mpi P; /*!< The first prime factor. */ + mbedtls_mpi Q; /*!< The second prime factor. */ + + mbedtls_mpi DP; /*!< D % (P - 1). */ + mbedtls_mpi DQ; /*!< D % (Q - 1). */ + mbedtls_mpi QP; /*!< 1 / (Q % P). */ + + mbedtls_mpi RN; /*!< cached R^2 mod N. */ + + mbedtls_mpi RP; /*!< cached R^2 mod P. */ + mbedtls_mpi RQ; /*!< cached R^2 mod Q. */ + + mbedtls_mpi Vi; /*!< The cached blinding value. */ + mbedtls_mpi Vf; /*!< The cached un-blinding value. */ + + int padding; /*!< Selects padding mode: + #MBEDTLS_RSA_PKCS_V15 for 1.5 padding and + #MBEDTLS_RSA_PKCS_V21 for OAEP or PSS. */ + int hash_id; /*!< Hash identifier of mbedtls_md_type_t type, + as specified in md.h for use in the MGF + mask generating function used in the + EME-OAEP and EMSA-PSS encodings. */ +#if defined(MBEDTLS_THREADING_C) + mbedtls_threading_mutex_t mutex; /*!< Thread-safety mutex. */ +#endif +} +mbedtls_rsa_context; + +#else /* MBEDTLS_RSA_ALT */ +#include "rsa_alt.h" +#endif /* MBEDTLS_RSA_ALT */ + +/** + * \brief This function initializes an RSA context. + * + * \note Set padding to #MBEDTLS_RSA_PKCS_V21 for the RSAES-OAEP + * encryption scheme and the RSASSA-PSS signature scheme. + * + * \note The \p hash_id parameter is ignored when using + * #MBEDTLS_RSA_PKCS_V15 padding. + * + * \note The choice of padding mode is strictly enforced for private key + * operations, since there might be security concerns in + * mixing padding modes. For public key operations it is + * a default value, which can be overridden by calling specific + * \c rsa_rsaes_xxx or \c rsa_rsassa_xxx functions. + * + * \note The hash selected in \p hash_id is always used for OEAP + * encryption. For PSS signatures, it is always used for + * making signatures, but can be overridden for verifying them. + * If set to #MBEDTLS_MD_NONE, it is always overridden. + * + * \param ctx The RSA context to initialize. This must not be \c NULL. + * \param padding The padding mode to use. This must be either + * #MBEDTLS_RSA_PKCS_V15 or #MBEDTLS_RSA_PKCS_V21. + * \param hash_id The hash identifier of ::mbedtls_md_type_t type, if + * \p padding is #MBEDTLS_RSA_PKCS_V21. It is unused + * otherwise. + */ +void mbedtls_rsa_init( mbedtls_rsa_context *ctx, + int padding, + int hash_id ); + +/** + * \brief This function imports a set of core parameters into an + * RSA context. + * + * \note This function can be called multiple times for successive + * imports, if the parameters are not simultaneously present. + * + * Any sequence of calls to this function should be followed + * by a call to mbedtls_rsa_complete(), which checks and + * completes the provided information to a ready-for-use + * public or private RSA key. + * + * \note See mbedtls_rsa_complete() for more information on which + * parameters are necessary to set up a private or public + * RSA key. + * + * \note The imported parameters are copied and need not be preserved + * for the lifetime of the RSA context being set up. + * + * \param ctx The initialized RSA context to store the parameters in. + * \param N The RSA modulus. This may be \c NULL. + * \param P The first prime factor of \p N. This may be \c NULL. + * \param Q The second prime factor of \p N. This may be \c NULL. + * \param D The private exponent. This may be \c NULL. + * \param E The public exponent. This may be \c NULL. + * + * \return \c 0 on success. + * \return A non-zero error code on failure. + */ +int mbedtls_rsa_import( mbedtls_rsa_context *ctx, + const mbedtls_mpi *N, + const mbedtls_mpi *P, const mbedtls_mpi *Q, + const mbedtls_mpi *D, const mbedtls_mpi *E ); + +/** + * \brief This function imports core RSA parameters, in raw big-endian + * binary format, into an RSA context. + * + * \note This function can be called multiple times for successive + * imports, if the parameters are not simultaneously present. + * + * Any sequence of calls to this function should be followed + * by a call to mbedtls_rsa_complete(), which checks and + * completes the provided information to a ready-for-use + * public or private RSA key. + * + * \note See mbedtls_rsa_complete() for more information on which + * parameters are necessary to set up a private or public + * RSA key. + * + * \note The imported parameters are copied and need not be preserved + * for the lifetime of the RSA context being set up. + * + * \param ctx The initialized RSA context to store the parameters in. + * \param N The RSA modulus. This may be \c NULL. + * \param N_len The Byte length of \p N; it is ignored if \p N == NULL. + * \param P The first prime factor of \p N. This may be \c NULL. + * \param P_len The Byte length of \p P; it ns ignored if \p P == NULL. + * \param Q The second prime factor of \p N. This may be \c NULL. + * \param Q_len The Byte length of \p Q; it is ignored if \p Q == NULL. + * \param D The private exponent. This may be \c NULL. + * \param D_len The Byte length of \p D; it is ignored if \p D == NULL. + * \param E The public exponent. This may be \c NULL. + * \param E_len The Byte length of \p E; it is ignored if \p E == NULL. + * + * \return \c 0 on success. + * \return A non-zero error code on failure. + */ +int mbedtls_rsa_import_raw( mbedtls_rsa_context *ctx, + unsigned char const *N, size_t N_len, + unsigned char const *P, size_t P_len, + unsigned char const *Q, size_t Q_len, + unsigned char const *D, size_t D_len, + unsigned char const *E, size_t E_len ); + +/** + * \brief This function completes an RSA context from + * a set of imported core parameters. + * + * To setup an RSA public key, precisely \p N and \p E + * must have been imported. + * + * To setup an RSA private key, sufficient information must + * be present for the other parameters to be derivable. + * + * The default implementation supports the following: + *
    • Derive \p P, \p Q from \p N, \p D, \p E.
    • + *
    • Derive \p N, \p D from \p P, \p Q, \p E.
    + * Alternative implementations need not support these. + * + * If this function runs successfully, it guarantees that + * the RSA context can be used for RSA operations without + * the risk of failure or crash. + * + * \warning This function need not perform consistency checks + * for the imported parameters. In particular, parameters that + * are not needed by the implementation might be silently + * discarded and left unchecked. To check the consistency + * of the key material, see mbedtls_rsa_check_privkey(). + * + * \param ctx The initialized RSA context holding imported parameters. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_RSA_BAD_INPUT_DATA if the attempted derivations + * failed. + * + */ +int mbedtls_rsa_complete( mbedtls_rsa_context *ctx ); + +/** + * \brief This function exports the core parameters of an RSA key. + * + * If this function runs successfully, the non-NULL buffers + * pointed to by \p N, \p P, \p Q, \p D, and \p E are fully + * written, with additional unused space filled leading by + * zero Bytes. + * + * Possible reasons for returning + * #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED:
      + *
    • An alternative RSA implementation is in use, which + * stores the key externally, and either cannot or should + * not export it into RAM.
    • + *
    • A SW or HW implementation might not support a certain + * deduction. For example, \p P, \p Q from \p N, \p D, + * and \p E if the former are not part of the + * implementation.
    + * + * If the function fails due to an unsupported operation, + * the RSA context stays intact and remains usable. + * + * \param ctx The initialized RSA context. + * \param N The MPI to hold the RSA modulus. + * This may be \c NULL if this field need not be exported. + * \param P The MPI to hold the first prime factor of \p N. + * This may be \c NULL if this field need not be exported. + * \param Q The MPI to hold the second prime factor of \p N. + * This may be \c NULL if this field need not be exported. + * \param D The MPI to hold the private exponent. + * This may be \c NULL if this field need not be exported. + * \param E The MPI to hold the public exponent. + * This may be \c NULL if this field need not be exported. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED if exporting the + * requested parameters cannot be done due to missing + * functionality or because of security policies. + * \return A non-zero return code on any other failure. + * + */ +int mbedtls_rsa_export( const mbedtls_rsa_context *ctx, + mbedtls_mpi *N, mbedtls_mpi *P, mbedtls_mpi *Q, + mbedtls_mpi *D, mbedtls_mpi *E ); + +/** + * \brief This function exports core parameters of an RSA key + * in raw big-endian binary format. + * + * If this function runs successfully, the non-NULL buffers + * pointed to by \p N, \p P, \p Q, \p D, and \p E are fully + * written, with additional unused space filled leading by + * zero Bytes. + * + * Possible reasons for returning + * #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED:
      + *
    • An alternative RSA implementation is in use, which + * stores the key externally, and either cannot or should + * not export it into RAM.
    • + *
    • A SW or HW implementation might not support a certain + * deduction. For example, \p P, \p Q from \p N, \p D, + * and \p E if the former are not part of the + * implementation.
    + * If the function fails due to an unsupported operation, + * the RSA context stays intact and remains usable. + * + * \note The length parameters are ignored if the corresponding + * buffer pointers are NULL. + * + * \param ctx The initialized RSA context. + * \param N The Byte array to store the RSA modulus, + * or \c NULL if this field need not be exported. + * \param N_len The size of the buffer for the modulus. + * \param P The Byte array to hold the first prime factor of \p N, + * or \c NULL if this field need not be exported. + * \param P_len The size of the buffer for the first prime factor. + * \param Q The Byte array to hold the second prime factor of \p N, + * or \c NULL if this field need not be exported. + * \param Q_len The size of the buffer for the second prime factor. + * \param D The Byte array to hold the private exponent, + * or \c NULL if this field need not be exported. + * \param D_len The size of the buffer for the private exponent. + * \param E The Byte array to hold the public exponent, + * or \c NULL if this field need not be exported. + * \param E_len The size of the buffer for the public exponent. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED if exporting the + * requested parameters cannot be done due to missing + * functionality or because of security policies. + * \return A non-zero return code on any other failure. + */ +int mbedtls_rsa_export_raw( const mbedtls_rsa_context *ctx, + unsigned char *N, size_t N_len, + unsigned char *P, size_t P_len, + unsigned char *Q, size_t Q_len, + unsigned char *D, size_t D_len, + unsigned char *E, size_t E_len ); + +/** + * \brief This function exports CRT parameters of a private RSA key. + * + * \note Alternative RSA implementations not using CRT-parameters + * internally can implement this function based on + * mbedtls_rsa_deduce_opt(). + * + * \param ctx The initialized RSA context. + * \param DP The MPI to hold \c D modulo `P-1`, + * or \c NULL if it need not be exported. + * \param DQ The MPI to hold \c D modulo `Q-1`, + * or \c NULL if it need not be exported. + * \param QP The MPI to hold modular inverse of \c Q modulo \c P, + * or \c NULL if it need not be exported. + * + * \return \c 0 on success. + * \return A non-zero error code on failure. + * + */ +int mbedtls_rsa_export_crt( const mbedtls_rsa_context *ctx, + mbedtls_mpi *DP, mbedtls_mpi *DQ, mbedtls_mpi *QP ); + +/** + * \brief This function sets padding for an already initialized RSA + * context. See mbedtls_rsa_init() for details. + * + * \param ctx The initialized RSA context to be configured. + * \param padding The padding mode to use. This must be either + * #MBEDTLS_RSA_PKCS_V15 or #MBEDTLS_RSA_PKCS_V21. + * \param hash_id The #MBEDTLS_RSA_PKCS_V21 hash identifier. + */ +void mbedtls_rsa_set_padding( mbedtls_rsa_context *ctx, int padding, + int hash_id ); + +/** + * \brief This function retrieves the length of RSA modulus in Bytes. + * + * \param ctx The initialized RSA context. + * + * \return The length of the RSA modulus in Bytes. + * + */ +size_t mbedtls_rsa_get_len( const mbedtls_rsa_context *ctx ); + +/** + * \brief This function generates an RSA keypair. + * + * \note mbedtls_rsa_init() must be called before this function, + * to set up the RSA context. + * + * \param ctx The initialized RSA context used to hold the key. + * \param f_rng The RNG function to be used for key generation. + * This must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. + * This may be \c NULL if \p f_rng doesn't need a context. + * \param nbits The size of the public key in bits. + * \param exponent The public exponent to use. For example, \c 65537. + * This must be odd and greater than \c 1. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_gen_key( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + unsigned int nbits, int exponent ); + +/** + * \brief This function checks if a context contains at least an RSA + * public key. + * + * If the function runs successfully, it is guaranteed that + * enough information is present to perform an RSA public key + * operation using mbedtls_rsa_public(). + * + * \param ctx The initialized RSA context to check. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + * + */ +int mbedtls_rsa_check_pubkey( const mbedtls_rsa_context *ctx ); + +/** + * \brief This function checks if a context contains an RSA private key + * and perform basic consistency checks. + * + * \note The consistency checks performed by this function not only + * ensure that mbedtls_rsa_private() can be called successfully + * on the given context, but that the various parameters are + * mutually consistent with high probability, in the sense that + * mbedtls_rsa_public() and mbedtls_rsa_private() are inverses. + * + * \warning This function should catch accidental misconfigurations + * like swapping of parameters, but it cannot establish full + * trust in neither the quality nor the consistency of the key + * material that was used to setup the given RSA context: + *
    • Consistency: Imported parameters that are irrelevant + * for the implementation might be silently dropped. If dropped, + * the current function does not have access to them, + * and therefore cannot check them. See mbedtls_rsa_complete(). + * If you want to check the consistency of the entire + * content of an PKCS1-encoded RSA private key, for example, you + * should use mbedtls_rsa_validate_params() before setting + * up the RSA context. + * Additionally, if the implementation performs empirical checks, + * these checks substantiate but do not guarantee consistency.
    • + *
    • Quality: This function is not expected to perform + * extended quality assessments like checking that the prime + * factors are safe. Additionally, it is the responsibility of the + * user to ensure the trustworthiness of the source of his RSA + * parameters, which goes beyond what is effectively checkable + * by the library.
    + * + * \param ctx The initialized RSA context to check. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_check_privkey( const mbedtls_rsa_context *ctx ); + +/** + * \brief This function checks a public-private RSA key pair. + * + * It checks each of the contexts, and makes sure they match. + * + * \param pub The initialized RSA context holding the public key. + * \param prv The initialized RSA context holding the private key. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_check_pub_priv( const mbedtls_rsa_context *pub, + const mbedtls_rsa_context *prv ); + +/** + * \brief This function performs an RSA public key operation. + * + * \param ctx The initialized RSA context to use. + * \param input The input buffer. This must be a readable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * \param output The output buffer. This must be a writable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \note This function does not handle message padding. + * + * \note Make sure to set \p input[0] = 0 or ensure that + * input is smaller than \p N. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_public( mbedtls_rsa_context *ctx, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function performs an RSA private key operation. + * + * \note Blinding is used if and only if a PRNG is provided. + * + * \note If blinding is used, both the base of exponentation + * and the exponent are blinded, providing protection + * against some side-channel attacks. + * + * \warning It is deprecated and a security risk to not provide + * a PRNG here and thereby prevent the use of blinding. + * Future versions of the library may enforce the presence + * of a PRNG. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function, used for blinding. It is discouraged + * and deprecated to pass \c NULL here, in which case + * blinding will be omitted. + * \param p_rng The RNG context to pass to \p f_rng. This may be \c NULL + * if \p f_rng is \c NULL or if \p f_rng doesn't need a context. + * \param input The input buffer. This must be a readable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * \param output The output buffer. This must be a writable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + * + */ +int mbedtls_rsa_private( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function adds the message padding, then performs an RSA + * operation. + * + * It is the generic wrapper for performing a PKCS#1 encryption + * operation using the \p mode from the context. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PUBLIC. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PRIVATE and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG to use. It is mandatory for PKCS#1 v2.1 padding + * encoding, and for PKCS#1 v1.5 padding encoding when used + * with \p mode set to #MBEDTLS_RSA_PUBLIC. For PKCS#1 v1.5 + * padding encoding and \p mode set to #MBEDTLS_RSA_PRIVATE, + * it is used for blinding and should be provided in this + * case; see mbedtls_rsa_private() for more. + * \param p_rng The RNG context to be passed to \p f_rng. May be + * \c NULL if \p f_rng is \c NULL or if \p f_rng doesn't + * need a context argument. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). + * \param ilen The length of the plaintext in Bytes. + * \param input The input data to encrypt. This must be a readable + * buffer of size \p ilen Bytes. It may be \c NULL if + * `ilen == 0`. + * \param output The output buffer. This must be a writable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_pkcs1_encrypt( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, size_t ilen, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function performs a PKCS#1 v1.5 encryption operation + * (RSAES-PKCS1-v1_5-ENCRYPT). + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PUBLIC. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PRIVATE and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function to use. It is needed for padding generation + * if \p mode is #MBEDTLS_RSA_PUBLIC. If \p mode is + * #MBEDTLS_RSA_PRIVATE (discouraged), it is used for + * blinding and should be provided; see mbedtls_rsa_private(). + * \param p_rng The RNG context to be passed to \p f_rng. This may + * be \c NULL if \p f_rng is \c NULL or if \p f_rng + * doesn't need a context argument. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). + * \param ilen The length of the plaintext in Bytes. + * \param input The input data to encrypt. This must be a readable + * buffer of size \p ilen Bytes. It may be \c NULL if + * `ilen == 0`. + * \param output The output buffer. This must be a writable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, size_t ilen, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function performs a PKCS#1 v2.1 OAEP encryption + * operation (RSAES-OAEP-ENCRYPT). + * + * \note The output buffer must be as large as the size + * of ctx->N. For example, 128 Bytes if RSA-1024 is used. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PUBLIC. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PRIVATE and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initnialized RSA context to use. + * \param f_rng The RNG function to use. This is needed for padding + * generation and must be provided. + * \param p_rng The RNG context to be passed to \p f_rng. This may + * be \c NULL if \p f_rng doesn't need a context argument. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). + * \param label The buffer holding the custom label to use. + * This must be a readable buffer of length \p label_len + * Bytes. It may be \c NULL if \p label_len is \c 0. + * \param label_len The length of the label in Bytes. + * \param ilen The length of the plaintext buffer \p input in Bytes. + * \param input The input data to encrypt. This must be a readable + * buffer of size \p ilen Bytes. It may be \c NULL if + * `ilen == 0`. + * \param output The output buffer. This must be a writable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsaes_oaep_encrypt( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + const unsigned char *label, size_t label_len, + size_t ilen, + const unsigned char *input, + unsigned char *output ); + +/** + * \brief This function performs an RSA operation, then removes the + * message padding. + * + * It is the generic wrapper for performing a PKCS#1 decryption + * operation using the \p mode from the context. + * + * \note The output buffer length \c output_max_len should be + * as large as the size \p ctx->len of \p ctx->N (for example, + * 128 Bytes if RSA-1024 is used) to be able to hold an + * arbitrary decrypted message. If it is not large enough to + * hold the decryption of the particular ciphertext provided, + * the function returns \c MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PUBLIC mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PRIVATE. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PUBLIC and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. If \p mode is + * #MBEDTLS_RSA_PUBLIC, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param olen The address at which to store the length of + * the plaintext. This must not be \c NULL. + * \param input The ciphertext buffer. This must be a readable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * \param output The buffer used to hold the plaintext. This must + * be a writable buffer of length \p output_max_len Bytes. + * \param output_max_len The length in Bytes of the output buffer \p output. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_pkcs1_decrypt( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, size_t *olen, + const unsigned char *input, + unsigned char *output, + size_t output_max_len ); + +/** + * \brief This function performs a PKCS#1 v1.5 decryption + * operation (RSAES-PKCS1-v1_5-DECRYPT). + * + * \note The output buffer length \c output_max_len should be + * as large as the size \p ctx->len of \p ctx->N, for example, + * 128 Bytes if RSA-1024 is used, to be able to hold an + * arbitrary decrypted message. If it is not large enough to + * hold the decryption of the particular ciphertext provided, + * the function returns #MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PUBLIC mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PRIVATE. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PUBLIC and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. If \p mode is + * #MBEDTLS_RSA_PUBLIC, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param olen The address at which to store the length of + * the plaintext. This must not be \c NULL. + * \param input The ciphertext buffer. This must be a readable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * \param output The buffer used to hold the plaintext. This must + * be a writable buffer of length \p output_max_len Bytes. + * \param output_max_len The length in Bytes of the output buffer \p output. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + * + */ +int mbedtls_rsa_rsaes_pkcs1_v15_decrypt( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, size_t *olen, + const unsigned char *input, + unsigned char *output, + size_t output_max_len ); + +/** + * \brief This function performs a PKCS#1 v2.1 OAEP decryption + * operation (RSAES-OAEP-DECRYPT). + * + * \note The output buffer length \c output_max_len should be + * as large as the size \p ctx->len of \p ctx->N, for + * example, 128 Bytes if RSA-1024 is used, to be able to + * hold an arbitrary decrypted message. If it is not + * large enough to hold the decryption of the particular + * ciphertext provided, the function returns + * #MBEDTLS_ERR_RSA_OUTPUT_TOO_LARGE. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PUBLIC mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PRIVATE. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PUBLIC and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. If \p mode is + * #MBEDTLS_RSA_PUBLIC, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param label The buffer holding the custom label to use. + * This must be a readable buffer of length \p label_len + * Bytes. It may be \c NULL if \p label_len is \c 0. + * \param label_len The length of the label in Bytes. + * \param olen The address at which to store the length of + * the plaintext. This must not be \c NULL. + * \param input The ciphertext buffer. This must be a readable buffer + * of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * \param output The buffer used to hold the plaintext. This must + * be a writable buffer of length \p output_max_len Bytes. + * \param output_max_len The length in Bytes of the output buffer \p output. + * + * \return \c 0 on success. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsaes_oaep_decrypt( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + const unsigned char *label, size_t label_len, + size_t *olen, + const unsigned char *input, + unsigned char *output, + size_t output_max_len ); + +/** + * \brief This function performs a private RSA operation to sign + * a message digest using PKCS#1. + * + * It is the generic wrapper for performing a PKCS#1 + * signature using the \p mode from the context. + * + * \note The \p sig buffer must be as large as the size + * of \p ctx->N. For example, 128 Bytes if RSA-1024 is used. + * + * \note For PKCS#1 v2.1 encoding, see comments on + * mbedtls_rsa_rsassa_pss_sign() for details on + * \p md_alg and \p hash_id. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PUBLIC mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PRIVATE. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PUBLIC and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function to use. If the padding mode is PKCS#1 v2.1, + * this must be provided. If the padding mode is PKCS#1 v1.5 and + * \p mode is #MBEDTLS_RSA_PRIVATE, it is used for blinding + * and should be provided; see mbedtls_rsa_private() for more + * more. It is ignored otherwise. + * \param p_rng The RNG context to be passed to \p f_rng. This may be \c NULL + * if \p f_rng is \c NULL or doesn't need a context argument. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * Ths is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param sig The buffer to hold the signature. This must be a writable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. + * + * \return \c 0 if the signing operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_pkcs1_sign( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + unsigned char *sig ); + +/** + * \brief This function performs a PKCS#1 v1.5 signature + * operation (RSASSA-PKCS1-v1_5-SIGN). + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PUBLIC mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PRIVATE. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PUBLIC and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. If \p mode is + * #MBEDTLS_RSA_PUBLIC, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be \c NULL + * if \p f_rng is \c NULL or doesn't need a context argument. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * Ths is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param sig The buffer to hold the signature. This must be a writable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. + * + * \return \c 0 if the signing operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsassa_pkcs1_v15_sign( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + unsigned char *sig ); + +/** + * \brief This function performs a PKCS#1 v2.1 PSS signature + * operation (RSASSA-PSS-SIGN). + * + * \note The \p hash_id in the RSA context is the one used for the + * encoding. \p md_alg in the function call is the type of hash + * that is encoded. According to RFC-3447: Public-Key + * Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography + * Specifications it is advised to keep both hashes the + * same. + * + * \note This function always uses the maximum possible salt size, + * up to the length of the payload hash. This choice of salt + * size complies with FIPS 186-4 §5.5 (e) and RFC 8017 (PKCS#1 + * v2.2) §9.1.1 step 3. Furthermore this function enforces a + * minimum salt size which is the hash size minus 2 bytes. If + * this minimum size is too large given the key size (the salt + * size, plus the hash size, plus 2 bytes must be no more than + * the key size in bytes), this function returns + * #MBEDTLS_ERR_RSA_BAD_INPUT_DATA. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PUBLIC mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PRIVATE. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PUBLIC and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA context to use. + * \param f_rng The RNG function. It must not be \c NULL. + * \param p_rng The RNG context to be passed to \p f_rng. This may be \c NULL + * if \p f_rng doesn't need a context argument. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PRIVATE or #MBEDTLS_RSA_PUBLIC (deprecated). + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * Ths is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param sig The buffer to hold the signature. This must be a writable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. A buffer length of + * #MBEDTLS_MPI_MAX_SIZE is always safe. + * + * \return \c 0 if the signing operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsassa_pss_sign( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + unsigned char *sig ); + +/** + * \brief This function performs a public RSA operation and checks + * the message digest. + * + * This is the generic wrapper for performing a PKCS#1 + * verification using the mode from the context. + * + * \note For PKCS#1 v2.1 encoding, see comments on + * mbedtls_rsa_rsassa_pss_verify() about \p md_alg and + * \p hash_id. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * set to #MBEDTLS_RSA_PUBLIC. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PRIVATE and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA public key context to use. + * \param f_rng The RNG function to use. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. Otherwise, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * This is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param sig The buffer holding the signature. This must be a readable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 if the verify operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_pkcs1_verify( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + const unsigned char *sig ); + +/** + * \brief This function performs a PKCS#1 v1.5 verification + * operation (RSASSA-PKCS1-v1_5-VERIFY). + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * set to #MBEDTLS_RSA_PUBLIC. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PRIVATE and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA public key context to use. + * \param f_rng The RNG function to use. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. Otherwise, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * This is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param sig The buffer holding the signature. This must be a readable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 if the verify operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsassa_pkcs1_v15_verify( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + const unsigned char *sig ); + +/** + * \brief This function performs a PKCS#1 v2.1 PSS verification + * operation (RSASSA-PSS-VERIFY). + * + * The hash function for the MGF mask generating function + * is that specified in the RSA context. + * + * \note The \p hash_id in the RSA context is the one used for the + * verification. \p md_alg in the function call is the type of + * hash that is verified. According to RFC-3447: Public-Key + * Cryptography Standards (PKCS) #1 v2.1: RSA Cryptography + * Specifications it is advised to keep both hashes the + * same. If \p hash_id in the RSA context is unset, + * the \p md_alg from the function call is used. + * + * \deprecated It is deprecated and discouraged to call this function + * in #MBEDTLS_RSA_PRIVATE mode. Future versions of the library + * are likely to remove the \p mode argument and have it + * implicitly set to #MBEDTLS_RSA_PUBLIC. + * + * \note Alternative implementations of RSA need not support + * mode being set to #MBEDTLS_RSA_PRIVATE and might instead + * return #MBEDTLS_ERR_PLATFORM_FEATURE_UNSUPPORTED. + * + * \param ctx The initialized RSA public key context to use. + * \param f_rng The RNG function to use. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. Otherwise, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE (deprecated). + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * This is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param sig The buffer holding the signature. This must be a readable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 if the verify operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsassa_pss_verify( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + const unsigned char *sig ); + +/** + * \brief This function performs a PKCS#1 v2.1 PSS verification + * operation (RSASSA-PSS-VERIFY). + * + * The hash function for the MGF mask generating function + * is that specified in \p mgf1_hash_id. + * + * \note The \p sig buffer must be as large as the size + * of \p ctx->N. For example, 128 Bytes if RSA-1024 is used. + * + * \note The \p hash_id in the RSA context is ignored. + * + * \param ctx The initialized RSA public key context to use. + * \param f_rng The RNG function to use. If \p mode is #MBEDTLS_RSA_PRIVATE, + * this is used for blinding and should be provided; see + * mbedtls_rsa_private() for more. Otherwise, it is ignored. + * \param p_rng The RNG context to be passed to \p f_rng. This may be + * \c NULL if \p f_rng is \c NULL or doesn't need a context. + * \param mode The mode of operation. This must be either + * #MBEDTLS_RSA_PUBLIC or #MBEDTLS_RSA_PRIVATE. + * \param md_alg The message-digest algorithm used to hash the original data. + * Use #MBEDTLS_MD_NONE for signing raw data. + * \param hashlen The length of the message digest. + * This is only used if \p md_alg is #MBEDTLS_MD_NONE. + * \param hash The buffer holding the message digest or raw data. + * If \p md_alg is #MBEDTLS_MD_NONE, this must be a readable + * buffer of length \p hashlen Bytes. If \p md_alg is not + * #MBEDTLS_MD_NONE, it must be a readable buffer of length + * the size of the hash corresponding to \p md_alg. + * \param mgf1_hash_id The message digest used for mask generation. + * \param expected_salt_len The length of the salt used in padding. Use + * #MBEDTLS_RSA_SALT_LEN_ANY to accept any salt length. + * \param sig The buffer holding the signature. This must be a readable + * buffer of length \c ctx->len Bytes. For example, \c 256 Bytes + * for an 2048-bit RSA modulus. + * + * \return \c 0 if the verify operation was successful. + * \return An \c MBEDTLS_ERR_RSA_XXX error code on failure. + */ +int mbedtls_rsa_rsassa_pss_verify_ext( mbedtls_rsa_context *ctx, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng, + int mode, + mbedtls_md_type_t md_alg, + unsigned int hashlen, + const unsigned char *hash, + mbedtls_md_type_t mgf1_hash_id, + int expected_salt_len, + const unsigned char *sig ); + +/** + * \brief This function copies the components of an RSA context. + * + * \param dst The destination context. This must be initialized. + * \param src The source context. This must be initialized. + * + * \return \c 0 on success. + * \return #MBEDTLS_ERR_MPI_ALLOC_FAILED on memory allocation failure. + */ +int mbedtls_rsa_copy( mbedtls_rsa_context *dst, const mbedtls_rsa_context *src ); + +/** + * \brief This function frees the components of an RSA key. + * + * \param ctx The RSA context to free. May be \c NULL, in which case + * this function is a no-op. If it is not \c NULL, it must + * point to an initialized RSA context. + */ +void mbedtls_rsa_free( mbedtls_rsa_context *ctx ); + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The RSA checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_rsa_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* rsa.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa_internal.h new file mode 100644 index 00000000..c1c844ef --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/rsa_internal.h @@ -0,0 +1,226 @@ +/** + * \file rsa_internal.h + * + * \brief Context-independent RSA helper functions + * + * This module declares some RSA-related helper functions useful when + * implementing the RSA interface. These functions are provided in a separate + * compilation unit in order to make it easy for designers of alternative RSA + * implementations to use them in their own code, as it is conceived that the + * functionality they provide will be necessary for most complete + * implementations. + * + * End-users of Mbed TLS who are not providing their own alternative RSA + * implementations should not use these functions directly, and should instead + * use only the functions declared in rsa.h. + * + * The interface provided by this module will be maintained through LTS (Long + * Term Support) branches of Mbed TLS, but may otherwise be subject to change, + * and must be considered an internal interface of the library. + * + * There are two classes of helper functions: + * + * (1) Parameter-generating helpers. These are: + * - mbedtls_rsa_deduce_primes + * - mbedtls_rsa_deduce_private_exponent + * - mbedtls_rsa_deduce_crt + * Each of these functions takes a set of core RSA parameters and + * generates some other, or CRT related parameters. + * + * (2) Parameter-checking helpers. These are: + * - mbedtls_rsa_validate_params + * - mbedtls_rsa_validate_crt + * They take a set of core or CRT related RSA parameters and check their + * validity. + * + */ +/* + * Copyright (C) 2006-2017, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + * + */ + +#ifndef MBEDTLS_RSA_INTERNAL_H +#define MBEDTLS_RSA_INTERNAL_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/bignum.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief Compute RSA prime moduli P, Q from public modulus N=PQ + * and a pair of private and public key. + * + * \note This is a 'static' helper function not operating on + * an RSA context. Alternative implementations need not + * overwrite it. + * + * \param N RSA modulus N = PQ, with P, Q to be found + * \param E RSA public exponent + * \param D RSA private exponent + * \param P Pointer to MPI holding first prime factor of N on success + * \param Q Pointer to MPI holding second prime factor of N on success + * + * \return + * - 0 if successful. In this case, P and Q constitute a + * factorization of N. + * - A non-zero error code otherwise. + * + * \note It is neither checked that P, Q are prime nor that + * D, E are modular inverses wrt. P-1 and Q-1. For that, + * use the helper function \c mbedtls_rsa_validate_params. + * + */ +int mbedtls_rsa_deduce_primes( mbedtls_mpi const *N, mbedtls_mpi const *E, + mbedtls_mpi const *D, + mbedtls_mpi *P, mbedtls_mpi *Q ); + +/** + * \brief Compute RSA private exponent from + * prime moduli and public key. + * + * \note This is a 'static' helper function not operating on + * an RSA context. Alternative implementations need not + * overwrite it. + * + * \param P First prime factor of RSA modulus + * \param Q Second prime factor of RSA modulus + * \param E RSA public exponent + * \param D Pointer to MPI holding the private exponent on success. + * + * \return + * - 0 if successful. In this case, D is set to a simultaneous + * modular inverse of E modulo both P-1 and Q-1. + * - A non-zero error code otherwise. + * + * \note This function does not check whether P and Q are primes. + * + */ +int mbedtls_rsa_deduce_private_exponent( mbedtls_mpi const *P, + mbedtls_mpi const *Q, + mbedtls_mpi const *E, + mbedtls_mpi *D ); + + +/** + * \brief Generate RSA-CRT parameters + * + * \note This is a 'static' helper function not operating on + * an RSA context. Alternative implementations need not + * overwrite it. + * + * \param P First prime factor of N + * \param Q Second prime factor of N + * \param D RSA private exponent + * \param DP Output variable for D modulo P-1 + * \param DQ Output variable for D modulo Q-1 + * \param QP Output variable for the modular inverse of Q modulo P. + * + * \return 0 on success, non-zero error code otherwise. + * + * \note This function does not check whether P, Q are + * prime and whether D is a valid private exponent. + * + */ +int mbedtls_rsa_deduce_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q, + const mbedtls_mpi *D, mbedtls_mpi *DP, + mbedtls_mpi *DQ, mbedtls_mpi *QP ); + + +/** + * \brief Check validity of core RSA parameters + * + * \note This is a 'static' helper function not operating on + * an RSA context. Alternative implementations need not + * overwrite it. + * + * \param N RSA modulus N = PQ + * \param P First prime factor of N + * \param Q Second prime factor of N + * \param D RSA private exponent + * \param E RSA public exponent + * \param f_rng PRNG to be used for primality check, or NULL + * \param p_rng PRNG context for f_rng, or NULL + * + * \return + * - 0 if the following conditions are satisfied + * if all relevant parameters are provided: + * - P prime if f_rng != NULL (%) + * - Q prime if f_rng != NULL (%) + * - 1 < N = P * Q + * - 1 < D, E < N + * - D and E are modular inverses modulo P-1 and Q-1 + * (%) This is only done if MBEDTLS_GENPRIME is defined. + * - A non-zero error code otherwise. + * + * \note The function can be used with a restricted set of arguments + * to perform specific checks only. E.g., calling it with + * (-,P,-,-,-) and a PRNG amounts to a primality check for P. + */ +int mbedtls_rsa_validate_params( const mbedtls_mpi *N, const mbedtls_mpi *P, + const mbedtls_mpi *Q, const mbedtls_mpi *D, + const mbedtls_mpi *E, + int (*f_rng)(void *, unsigned char *, size_t), + void *p_rng ); + +/** + * \brief Check validity of RSA CRT parameters + * + * \note This is a 'static' helper function not operating on + * an RSA context. Alternative implementations need not + * overwrite it. + * + * \param P First prime factor of RSA modulus + * \param Q Second prime factor of RSA modulus + * \param D RSA private exponent + * \param DP MPI to check for D modulo P-1 + * \param DQ MPI to check for D modulo P-1 + * \param QP MPI to check for the modular inverse of Q modulo P. + * + * \return + * - 0 if the following conditions are satisfied: + * - D = DP mod P-1 if P, D, DP != NULL + * - Q = DQ mod P-1 if P, D, DQ != NULL + * - QP = Q^-1 mod P if P, Q, QP != NULL + * - \c MBEDTLS_ERR_RSA_KEY_CHECK_FAILED if check failed, + * potentially including \c MBEDTLS_ERR_MPI_XXX if some + * MPI calculations failed. + * - \c MBEDTLS_ERR_RSA_BAD_INPUT_DATA if insufficient + * data was provided to check DP, DQ or QP. + * + * \note The function can be used with a restricted set of arguments + * to perform specific checks only. E.g., calling it with the + * parameters (P, -, D, DP, -, -) will check DP = D mod P-1. + */ +int mbedtls_rsa_validate_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q, + const mbedtls_mpi *D, const mbedtls_mpi *DP, + const mbedtls_mpi *DQ, const mbedtls_mpi *QP ); + +#ifdef __cplusplus +} +#endif + +#endif /* rsa_internal.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha1.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha1.h new file mode 100644 index 00000000..988d2f93 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha1.h @@ -0,0 +1,352 @@ +/** + * \file sha1.h + * + * \brief This file contains SHA-1 definitions and functions. + * + * The Secure Hash Algorithm 1 (SHA-1) cryptographic hash function is defined in + * FIPS 180-4: Secure Hash Standard (SHS). + * + * \warning SHA-1 is considered a weak message digest and its use constitutes + * a security risk. We recommend considering stronger message + * digests instead. + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SHA1_H +#define MBEDTLS_SHA1_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED -0x0035 /**< SHA-1 hardware accelerator failed */ +#define MBEDTLS_ERR_SHA1_BAD_INPUT_DATA -0x0073 /**< SHA-1 input data was malformed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_SHA1_ALT) +// Regular implementation +// + +/** + * \brief The SHA-1 context structure. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + */ +typedef struct mbedtls_sha1_context +{ + uint32_t total[2]; /*!< The number of Bytes processed. */ + uint32_t state[5]; /*!< The intermediate digest state. */ + unsigned char buffer[64]; /*!< The data block being processed. */ +} +mbedtls_sha1_context; + +#else /* MBEDTLS_SHA1_ALT */ +#include "sha1_alt.h" +#endif /* MBEDTLS_SHA1_ALT */ + +/** + * \brief This function initializes a SHA-1 context. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param ctx The SHA-1 context to initialize. + * This must not be \c NULL. + * + */ +void mbedtls_sha1_init( mbedtls_sha1_context *ctx ); + +/** + * \brief This function clears a SHA-1 context. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param ctx The SHA-1 context to clear. This may be \c NULL, + * in which case this function does nothing. If it is + * not \c NULL, it must point to an initialized + * SHA-1 context. + * + */ +void mbedtls_sha1_free( mbedtls_sha1_context *ctx ); + +/** + * \brief This function clones the state of a SHA-1 context. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param dst The SHA-1 context to clone to. This must be initialized. + * \param src The SHA-1 context to clone from. This must be initialized. + * + */ +void mbedtls_sha1_clone( mbedtls_sha1_context *dst, + const mbedtls_sha1_context *src ); + +/** + * \brief This function starts a SHA-1 checksum calculation. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param ctx The SHA-1 context to initialize. This must be initialized. + * + * \return \c 0 on success. + * \return A negative error code on failure. + * + */ +int mbedtls_sha1_starts_ret( mbedtls_sha1_context *ctx ); + +/** + * \brief This function feeds an input buffer into an ongoing SHA-1 + * checksum calculation. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param ctx The SHA-1 context. This must be initialized + * and have a hash operation started. + * \param input The buffer holding the input data. + * This must be a readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data \p input in Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the SHA-1 operation, and writes + * the result to the output buffer. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param ctx The SHA-1 context to use. This must be initialized and + * have a hash operation started. + * \param output The SHA-1 checksum result. This must be a writable + * buffer of length \c 20 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx, + unsigned char output[20] ); + +/** + * \brief SHA-1 process data block (internal use only). + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param ctx The SHA-1 context to use. This must be initialized. + * \param data The data block being processed. This must be a + * readable buffer of length \c 64 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + * + */ +int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx, + const unsigned char data[64] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function starts a SHA-1 checksum calculation. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \deprecated Superseded by mbedtls_sha1_starts_ret() in 2.7.0. + * + * \param ctx The SHA-1 context to initialize. This must be initialized. + * + */ +MBEDTLS_DEPRECATED void mbedtls_sha1_starts( mbedtls_sha1_context *ctx ); + +/** + * \brief This function feeds an input buffer into an ongoing SHA-1 + * checksum calculation. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \deprecated Superseded by mbedtls_sha1_update_ret() in 2.7.0. + * + * \param ctx The SHA-1 context. This must be initialized and + * have a hash operation started. + * \param input The buffer holding the input data. + * This must be a readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data \p input in Bytes. + * + */ +MBEDTLS_DEPRECATED void mbedtls_sha1_update( mbedtls_sha1_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the SHA-1 operation, and writes + * the result to the output buffer. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \deprecated Superseded by mbedtls_sha1_finish_ret() in 2.7.0. + * + * \param ctx The SHA-1 context. This must be initialized and + * have a hash operation started. + * \param output The SHA-1 checksum result. + * This must be a writable buffer of length \c 20 Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha1_finish( mbedtls_sha1_context *ctx, + unsigned char output[20] ); + +/** + * \brief SHA-1 process data block (internal use only). + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \deprecated Superseded by mbedtls_internal_sha1_process() in 2.7.0. + * + * \param ctx The SHA-1 context. This must be initialized. + * \param data The data block being processed. + * This must be a readable buffer of length \c 64 bytes. + * + */ +MBEDTLS_DEPRECATED void mbedtls_sha1_process( mbedtls_sha1_context *ctx, + const unsigned char data[64] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief This function calculates the SHA-1 checksum of a buffer. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The SHA-1 result is calculated as + * output = SHA-1(input buffer). + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \param input The buffer holding the input data. + * This must be a readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data \p input in Bytes. + * \param output The SHA-1 checksum result. + * This must be a writable buffer of length \c 20 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + * + */ +int mbedtls_sha1_ret( const unsigned char *input, + size_t ilen, + unsigned char output[20] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function calculates the SHA-1 checksum of a buffer. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The SHA-1 result is calculated as + * output = SHA-1(input buffer). + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \deprecated Superseded by mbedtls_sha1_ret() in 2.7.0 + * + * \param input The buffer holding the input data. + * This must be a readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data \p input in Bytes. + * \param output The SHA-1 checksum result. This must be a writable + * buffer of size \c 20 Bytes. + * + */ +MBEDTLS_DEPRECATED void mbedtls_sha1( const unsigned char *input, + size_t ilen, + unsigned char output[20] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The SHA-1 checkup routine. + * + * \warning SHA-1 is considered a weak message digest and its use + * constitutes a security risk. We recommend considering + * stronger message digests instead. + * + * \return \c 0 on success. + * \return \c 1 on failure. + * + */ +int mbedtls_sha1_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_sha1.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha256.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha256.h new file mode 100644 index 00000000..1c597402 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha256.h @@ -0,0 +1,297 @@ +/** + * \file sha256.h + * + * \brief This file contains SHA-224 and SHA-256 definitions and functions. + * + * The Secure Hash Algorithms 224 and 256 (SHA-224 and SHA-256) cryptographic + * hash functions are defined in FIPS 180-4: Secure Hash Standard (SHS). + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SHA256_H +#define MBEDTLS_SHA256_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED -0x0037 /**< SHA-256 hardware accelerator failed */ +#define MBEDTLS_ERR_SHA256_BAD_INPUT_DATA -0x0074 /**< SHA-256 input data was malformed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_SHA256_ALT) +// Regular implementation +// + +/** + * \brief The SHA-256 context structure. + * + * The structure is used both for SHA-256 and for SHA-224 + * checksum calculations. The choice between these two is + * made in the call to mbedtls_sha256_starts_ret(). + */ +typedef struct mbedtls_sha256_context +{ + uint32_t total[2]; /*!< The number of Bytes processed. */ + uint32_t state[8]; /*!< The intermediate digest state. */ + unsigned char buffer[64]; /*!< The data block being processed. */ + int is224; /*!< Determines which function to use: + 0: Use SHA-256, or 1: Use SHA-224. */ +} +mbedtls_sha256_context; + +#else /* MBEDTLS_SHA256_ALT */ +#include "sha256_alt.h" +#endif /* MBEDTLS_SHA256_ALT */ + +/** + * \brief This function initializes a SHA-256 context. + * + * \param ctx The SHA-256 context to initialize. This must not be \c NULL. + */ +void mbedtls_sha256_init( mbedtls_sha256_context *ctx ); + +/** + * \brief This function clears a SHA-256 context. + * + * \param ctx The SHA-256 context to clear. This may be \c NULL, in which + * case this function returns immediately. If it is not \c NULL, + * it must point to an initialized SHA-256 context. + */ +void mbedtls_sha256_free( mbedtls_sha256_context *ctx ); + +/** + * \brief This function clones the state of a SHA-256 context. + * + * \param dst The destination context. This must be initialized. + * \param src The context to clone. This must be initialized. + */ +void mbedtls_sha256_clone( mbedtls_sha256_context *dst, + const mbedtls_sha256_context *src ); + +/** + * \brief This function starts a SHA-224 or SHA-256 checksum + * calculation. + * + * \param ctx The context to use. This must be initialized. + * \param is224 This determines which function to use. This must be + * either \c 0 for SHA-256, or \c 1 for SHA-224. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha256_starts_ret( mbedtls_sha256_context *ctx, int is224 ); + +/** + * \brief This function feeds an input buffer into an ongoing + * SHA-256 checksum calculation. + * + * \param ctx The SHA-256 context. This must be initialized + * and have a hash operation started. + * \param input The buffer holding the data. This must be a readable + * buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha256_update_ret( mbedtls_sha256_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the SHA-256 operation, and writes + * the result to the output buffer. + * + * \param ctx The SHA-256 context. This must be initialized + * and have a hash operation started. + * \param output The SHA-224 or SHA-256 checksum result. + * This must be a writable buffer of length \c 32 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha256_finish_ret( mbedtls_sha256_context *ctx, + unsigned char output[32] ); + +/** + * \brief This function processes a single data block within + * the ongoing SHA-256 computation. This function is for + * internal use only. + * + * \param ctx The SHA-256 context. This must be initialized. + * \param data The buffer holding one block of data. This must + * be a readable buffer of length \c 64 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx, + const unsigned char data[64] ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function starts a SHA-224 or SHA-256 checksum + * calculation. + * + * \deprecated Superseded by mbedtls_sha256_starts_ret() in 2.7.0. + * + * \param ctx The context to use. This must be initialized. + * \param is224 Determines which function to use. This must be + * either \c 0 for SHA-256, or \c 1 for SHA-224. + */ +MBEDTLS_DEPRECATED void mbedtls_sha256_starts( mbedtls_sha256_context *ctx, + int is224 ); + +/** + * \brief This function feeds an input buffer into an ongoing + * SHA-256 checksum calculation. + * + * \deprecated Superseded by mbedtls_sha256_update_ret() in 2.7.0. + * + * \param ctx The SHA-256 context to use. This must be + * initialized and have a hash operation started. + * \param input The buffer holding the data. This must be a readable + * buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha256_update( mbedtls_sha256_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the SHA-256 operation, and writes + * the result to the output buffer. + * + * \deprecated Superseded by mbedtls_sha256_finish_ret() in 2.7.0. + * + * \param ctx The SHA-256 context. This must be initialized and + * have a hash operation started. + * \param output The SHA-224 or SHA-256 checksum result. This must be + * a writable buffer of length \c 32 Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha256_finish( mbedtls_sha256_context *ctx, + unsigned char output[32] ); + +/** + * \brief This function processes a single data block within + * the ongoing SHA-256 computation. This function is for + * internal use only. + * + * \deprecated Superseded by mbedtls_internal_sha256_process() in 2.7.0. + * + * \param ctx The SHA-256 context. This must be initialized. + * \param data The buffer holding one block of data. This must be + * a readable buffer of size \c 64 Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha256_process( mbedtls_sha256_context *ctx, + const unsigned char data[64] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief This function calculates the SHA-224 or SHA-256 + * checksum of a buffer. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The SHA-256 result is calculated as + * output = SHA-256(input buffer). + * + * \param input The buffer holding the data. This must be a readable + * buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * \param output The SHA-224 or SHA-256 checksum result. This must + * be a writable buffer of length \c 32 Bytes. + * \param is224 Determines which function to use. This must be + * either \c 0 for SHA-256, or \c 1 for SHA-224. + */ +int mbedtls_sha256_ret( const unsigned char *input, + size_t ilen, + unsigned char output[32], + int is224 ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif + +/** + * \brief This function calculates the SHA-224 or SHA-256 checksum + * of a buffer. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The SHA-256 result is calculated as + * output = SHA-256(input buffer). + * + * \deprecated Superseded by mbedtls_sha256_ret() in 2.7.0. + * + * \param input The buffer holding the data. This must be a readable + * buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * \param output The SHA-224 or SHA-256 checksum result. This must be + * a writable buffer of length \c 32 Bytes. + * \param is224 Determines which function to use. This must be either + * \c 0 for SHA-256, or \c 1 for SHA-224. + */ +MBEDTLS_DEPRECATED void mbedtls_sha256( const unsigned char *input, + size_t ilen, + unsigned char output[32], + int is224 ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief The SHA-224 and SHA-256 checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_sha256_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_sha256.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha512.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha512.h new file mode 100644 index 00000000..8e54ce01 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/sha512.h @@ -0,0 +1,316 @@ +/** + * \file sha512.h + * \brief This file contains SHA-384 and SHA-512 definitions and functions. + * + * The Secure Hash Algorithms 384 and 512 (SHA-384 and SHA-512) cryptographic + * hash functions are defined in FIPS 180-4: Secure Hash Standard (SHS). + */ +/* + * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_SHA512_H +#define MBEDTLS_SHA512_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +/* MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED -0x0039 /**< SHA-512 hardware accelerator failed */ +#define MBEDTLS_ERR_SHA512_BAD_INPUT_DATA -0x0075 /**< SHA-512 input data was malformed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_SHA512_ALT) +// Regular implementation +// + +/** + * \brief The SHA-512 context structure. + * + * The structure is used both for SHA-384 and for SHA-512 + * checksum calculations. The choice between these two is + * made in the call to mbedtls_sha512_starts_ret(). + */ +typedef struct mbedtls_sha512_context +{ + uint64_t total[2]; /*!< The number of Bytes processed. */ + uint64_t state[8]; /*!< The intermediate digest state. */ + unsigned char buffer[128]; /*!< The data block being processed. */ +#if !defined(MBEDTLS_SHA512_NO_SHA384) + int is384; /*!< Determines which function to use: + 0: Use SHA-512, or 1: Use SHA-384. */ +#endif +} +mbedtls_sha512_context; + +#else /* MBEDTLS_SHA512_ALT */ +#include "sha512_alt.h" +#endif /* MBEDTLS_SHA512_ALT */ + +/** + * \brief This function initializes a SHA-512 context. + * + * \param ctx The SHA-512 context to initialize. This must + * not be \c NULL. + */ +void mbedtls_sha512_init( mbedtls_sha512_context *ctx ); + +/** + * \brief This function clears a SHA-512 context. + * + * \param ctx The SHA-512 context to clear. This may be \c NULL, + * in which case this function does nothing. If it + * is not \c NULL, it must point to an initialized + * SHA-512 context. + */ +void mbedtls_sha512_free( mbedtls_sha512_context *ctx ); + +/** + * \brief This function clones the state of a SHA-512 context. + * + * \param dst The destination context. This must be initialized. + * \param src The context to clone. This must be initialized. + */ +void mbedtls_sha512_clone( mbedtls_sha512_context *dst, + const mbedtls_sha512_context *src ); + +/** + * \brief This function starts a SHA-384 or SHA-512 checksum + * calculation. + * + * \param ctx The SHA-512 context to use. This must be initialized. + * \param is384 Determines which function to use. This must be + * either \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will return + * #MBEDTLS_ERR_SHA512_BAD_INPUT_DATA. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha512_starts_ret( mbedtls_sha512_context *ctx, int is384 ); + +/** + * \brief This function feeds an input buffer into an ongoing + * SHA-512 checksum calculation. + * + * \param ctx The SHA-512 context. This must be initialized + * and have a hash operation started. + * \param input The buffer holding the input data. This must + * be a readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha512_update_ret( mbedtls_sha512_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the SHA-512 operation, and writes + * the result to the output buffer. This function is for + * internal use only. + * + * \param ctx The SHA-512 context. This must be initialized + * and have a hash operation started. + * \param output The SHA-384 or SHA-512 checksum result. + * This must be a writable buffer of length \c 64 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha512_finish_ret( mbedtls_sha512_context *ctx, + unsigned char output[64] ); + +/** + * \brief This function processes a single data block within + * the ongoing SHA-512 computation. + * + * \param ctx The SHA-512 context. This must be initialized. + * \param data The buffer holding one block of data. This + * must be a readable buffer of length \c 128 Bytes. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx, + const unsigned char data[128] ); +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif +/** + * \brief This function starts a SHA-384 or SHA-512 checksum + * calculation. + * + * \deprecated Superseded by mbedtls_sha512_starts_ret() in 2.7.0 + * + * \param ctx The SHA-512 context to use. This must be initialized. + * \param is384 Determines which function to use. This must be either + * \c 0 for SHA-512 or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will fail to work. + */ +MBEDTLS_DEPRECATED void mbedtls_sha512_starts( mbedtls_sha512_context *ctx, + int is384 ); + +/** + * \brief This function feeds an input buffer into an ongoing + * SHA-512 checksum calculation. + * + * \deprecated Superseded by mbedtls_sha512_update_ret() in 2.7.0. + * + * \param ctx The SHA-512 context. This must be initialized + * and have a hash operation started. + * \param input The buffer holding the data. This must be a readable + * buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha512_update( mbedtls_sha512_context *ctx, + const unsigned char *input, + size_t ilen ); + +/** + * \brief This function finishes the SHA-512 operation, and writes + * the result to the output buffer. + * + * \deprecated Superseded by mbedtls_sha512_finish_ret() in 2.7.0. + * + * \param ctx The SHA-512 context. This must be initialized + * and have a hash operation started. + * \param output The SHA-384 or SHA-512 checksum result. This must + * be a writable buffer of size \c 64 Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha512_finish( mbedtls_sha512_context *ctx, + unsigned char output[64] ); + +/** + * \brief This function processes a single data block within + * the ongoing SHA-512 computation. This function is for + * internal use only. + * + * \deprecated Superseded by mbedtls_internal_sha512_process() in 2.7.0. + * + * \param ctx The SHA-512 context. This must be initialized. + * \param data The buffer holding one block of data. This must be + * a readable buffer of length \c 128 Bytes. + */ +MBEDTLS_DEPRECATED void mbedtls_sha512_process( + mbedtls_sha512_context *ctx, + const unsigned char data[128] ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +/** + * \brief This function calculates the SHA-512 or SHA-384 + * checksum of a buffer. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The SHA-512 result is calculated as + * output = SHA-512(input buffer). + * + * \param input The buffer holding the input data. This must be + * a readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * \param output The SHA-384 or SHA-512 checksum result. + * This must be a writable buffer of length \c 64 Bytes. + * \param is384 Determines which function to use. This must be either + * \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will return + * #MBEDTLS_ERR_SHA512_BAD_INPUT_DATA. + * + * \return \c 0 on success. + * \return A negative error code on failure. + */ +int mbedtls_sha512_ret( const unsigned char *input, + size_t ilen, + unsigned char output[64], + int is384 ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif + +/** + * \brief This function calculates the SHA-512 or SHA-384 + * checksum of a buffer. + * + * The function allocates the context, performs the + * calculation, and frees the context. + * + * The SHA-512 result is calculated as + * output = SHA-512(input buffer). + * + * \deprecated Superseded by mbedtls_sha512_ret() in 2.7.0 + * + * \param input The buffer holding the data. This must be a + * readable buffer of length \p ilen Bytes. + * \param ilen The length of the input data in Bytes. + * \param output The SHA-384 or SHA-512 checksum result. This must + * be a writable buffer of length \c 64 Bytes. + * \param is384 Determines which function to use. This must be either + * \c 0 for SHA-512, or \c 1 for SHA-384. + * + * \note When \c MBEDTLS_SHA512_NO_SHA384 is defined, \p is384 must + * be \c 0, or the function will fail to work. + */ +MBEDTLS_DEPRECATED void mbedtls_sha512( const unsigned char *input, + size_t ilen, + unsigned char output[64], + int is384 ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + +#if defined(MBEDTLS_SELF_TEST) + + /** + * \brief The SHA-384 or SHA-512 checkup routine. + * + * \return \c 0 on success. + * \return \c 1 on failure. + */ +int mbedtls_sha512_self_test( int verbose ); +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* mbedtls_sha512.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl.h index 655f59d3..1c98a5e5 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl.h @@ -825,7 +825,7 @@ typedef int mbedtls_ssl_async_resume_t( mbedtls_ssl_context *ssl, typedef void mbedtls_ssl_async_cancel_t( mbedtls_ssl_context *ssl ); #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) && \ +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) && \ !defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE) #define MBEDTLS_SSL_PEER_CERT_DIGEST_MAX_LEN 48 #if defined(MBEDTLS_SHA256_C) @@ -841,7 +841,7 @@ typedef void mbedtls_ssl_async_cancel_t( mbedtls_ssl_context *ssl ); /* This is already checked in check_config.h, but be sure. */ #error "Bad configuration - need SHA-1, SHA-256 or SHA-512 enabled to compute digest of peer CRT." #endif -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED && +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED && !MBEDTLS_SSL_KEEP_PEER_CERTIFICATE */ /* @@ -937,7 +937,7 @@ struct mbedtls_ssl_config void *p_vrfy; /*!< context for X.509 verify calllback */ #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) /** Callback to retrieve PSK key from identity */ int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t); void *p_psk; /*!< context for PSK callback */ @@ -1000,7 +1000,7 @@ struct mbedtls_ssl_config void *p_async_config_data; /*!< Configuration data set by mbedtls_ssl_conf_async_private_cb(). */ #endif /* MBEDTLS_SSL_ASYNC_PRIVATE */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) const int *sig_hashes; /*!< allowed signature hashes */ #endif @@ -1013,7 +1013,7 @@ struct mbedtls_ssl_config mbedtls_mpi dhm_G; /*!< generator for DHM */ #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) #if defined(MBEDTLS_USE_PSA_CRYPTO) psa_key_handle_t psk_opaque; /*!< PSA key slot holding opaque PSK. @@ -1044,7 +1044,7 @@ struct mbedtls_ssl_config * Its value is non-zero if and only if * \c psk is not \c NULL or \c psk_opaque * is not \c 0. */ -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_SSL_ALPN) const char **alpn_list; /*!< ordered list of protocols */ @@ -1215,6 +1215,9 @@ struct mbedtls_ssl_context int in_msgtype; /*!< record header: message type */ size_t in_msglen; /*!< record header: message length */ size_t in_left; /*!< amount of data read so far */ +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t in_buf_len; /*!< length of input buffer */ +#endif #if defined(MBEDTLS_SSL_PROTO_DTLS) uint16_t in_epoch; /*!< DTLS epoch for incoming records */ size_t next_record_offset; /*!< offset of the next record in datagram @@ -1254,6 +1257,9 @@ struct mbedtls_ssl_context int out_msgtype; /*!< record header: message type */ size_t out_msglen; /*!< record header: message length */ size_t out_left; /*!< amount of data not yet written */ +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) + size_t out_buf_len; /*!< length of output buffer */ +#endif unsigned char cur_out_ctr[8]; /*!< Outgoing record sequence number. */ @@ -1323,21 +1329,40 @@ struct mbedtls_ssl_context #if defined(MBEDTLS_SSL_HW_RECORD_ACCEL) -#define MBEDTLS_SSL_CHANNEL_OUTBOUND 0 -#define MBEDTLS_SSL_CHANNEL_INBOUND 1 - -extern int (*mbedtls_ssl_hw_record_init)(mbedtls_ssl_context *ssl, - const unsigned char *key_enc, const unsigned char *key_dec, - size_t keylen, - const unsigned char *iv_enc, const unsigned char *iv_dec, - size_t ivlen, - const unsigned char *mac_enc, const unsigned char *mac_dec, - size_t maclen); -extern int (*mbedtls_ssl_hw_record_activate)(mbedtls_ssl_context *ssl, int direction); -extern int (*mbedtls_ssl_hw_record_reset)(mbedtls_ssl_context *ssl); -extern int (*mbedtls_ssl_hw_record_write)(mbedtls_ssl_context *ssl); -extern int (*mbedtls_ssl_hw_record_read)(mbedtls_ssl_context *ssl); -extern int (*mbedtls_ssl_hw_record_finish)(mbedtls_ssl_context *ssl); +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +#define MBEDTLS_SSL_CHANNEL_OUTBOUND MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( 0 ) +#define MBEDTLS_SSL_CHANNEL_INBOUND MBEDTLS_DEPRECATED_NUMERIC_CONSTANT( 1 ) + +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif /* MBEDTLS_DEPRECATED_WARNING */ + +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_init)( + mbedtls_ssl_context *ssl, + const unsigned char *key_enc, const unsigned char *key_dec, + size_t keylen, + const unsigned char *iv_enc, const unsigned char *iv_dec, + size_t ivlen, + const unsigned char *mac_enc, const unsigned char *mac_dec, + size_t maclen); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_activate)( + mbedtls_ssl_context *ssl, + int direction ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_reset)( + mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_write)( + mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_read)( + mbedtls_ssl_context *ssl ); +MBEDTLS_DEPRECATED extern int (*mbedtls_ssl_hw_record_finish)( + mbedtls_ssl_context *ssl ); + +#undef MBEDTLS_DEPRECATED +#endif /* !MBEDTLS_DEPRECATED_REMOVED */ + #endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */ /** @@ -2649,7 +2674,7 @@ int mbedtls_ssl_conf_own_cert( mbedtls_ssl_config *conf, mbedtls_pk_context *pk_key ); #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) /** * \brief Configure a pre-shared key (PSK) and identity * to be used in PSK-based ciphersuites. @@ -2796,7 +2821,7 @@ void mbedtls_ssl_conf_psk_cb( mbedtls_ssl_config *conf, int (*f_psk)(void *, mbedtls_ssl_context *, const unsigned char *, size_t), void *p_psk ); -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_DHM_C) && defined(MBEDTLS_SSL_SRV_C) @@ -2901,7 +2926,7 @@ void mbedtls_ssl_conf_curves( mbedtls_ssl_config *conf, const mbedtls_ecp_group_id *curves ); #endif /* MBEDTLS_ECP_C */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /** * \brief Set the allowed hashes for signatures during the handshake. * (Default: all available hashes except MD5.) @@ -2922,7 +2947,7 @@ void mbedtls_ssl_conf_curves( mbedtls_ssl_config *conf, */ void mbedtls_ssl_conf_sig_hashes( mbedtls_ssl_config *conf, const int *hashes ); -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ #if defined(MBEDTLS_X509_CRT_PARSE_C) /** @@ -3169,7 +3194,7 @@ void mbedtls_ssl_conf_extended_master_secret( mbedtls_ssl_config *conf, char ems * \warning Use of RC4 in DTLS/TLS has been prohibited by RFC 7465 * for security reasons. Use at your own risk. * - * \note This function is deprecated and will likely be removed in + * \note This function is deprecated and will be removed in * a future version of the library. * RC4 is disabled by default at compile time and needs to be * actively enabled for use with legacy systems. @@ -3498,18 +3523,61 @@ int mbedtls_ssl_get_record_expansion( const mbedtls_ssl_context *ssl ); #if defined(MBEDTLS_SSL_MAX_FRAGMENT_LENGTH) /** - * \brief Return the maximum fragment length (payload, in bytes). - * This is the value negotiated with peer if any, - * or the locally configured value. + * \brief Return the maximum fragment length (payload, in bytes) for + * the output buffer. For the client, this is the configured + * value. For the server, it is the minimum of two - the + * configured value and the negotiated one. + * + * \sa mbedtls_ssl_conf_max_frag_len() + * \sa mbedtls_ssl_get_max_record_payload() + * + * \param ssl SSL context + * + * \return Current maximum fragment length for the output buffer. + */ +size_t mbedtls_ssl_get_output_max_frag_len( const mbedtls_ssl_context *ssl ); + +/** + * \brief Return the maximum fragment length (payload, in bytes) for + * the input buffer. This is the negotiated maximum fragment + * length, or, if there is none, MBEDTLS_SSL_MAX_CONTENT_LEN. + * If it is not defined either, the value is 2^14. This function + * works as its predecessor, \c mbedtls_ssl_get_max_frag_len(). * * \sa mbedtls_ssl_conf_max_frag_len() * \sa mbedtls_ssl_get_max_record_payload() * * \param ssl SSL context * - * \return Current maximum fragment length. + * \return Current maximum fragment length for the output buffer. */ -size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); +size_t mbedtls_ssl_get_input_max_frag_len( const mbedtls_ssl_context *ssl ); + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +#if defined(MBEDTLS_DEPRECATED_WARNING) +#define MBEDTLS_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_DEPRECATED +#endif + +/** + * \brief This function is a deprecated approach to getting the max + * fragment length. Its an alias for + * \c mbedtls_ssl_get_output_max_frag_len(), as the behaviour + * is the same. See \c mbedtls_ssl_get_output_max_frag_len() for + * more detail. + * + * \sa mbedtls_ssl_get_input_max_frag_len() + * \sa mbedtls_ssl_get_output_max_frag_len() + * + * \param ssl SSL context + * + * \return Current maximum fragment length for the output buffer. + */ +MBEDTLS_DEPRECATED size_t mbedtls_ssl_get_max_frag_len( + const mbedtls_ssl_context *ssl ); +#endif /* MBEDTLS_DEPRECATED_REMOVED */ #endif /* MBEDTLS_SSL_MAX_FRAGMENT_LENGTH */ /** @@ -3530,7 +3598,8 @@ size_t mbedtls_ssl_get_max_frag_len( const mbedtls_ssl_context *ssl ); * when record compression is enabled. * * \sa mbedtls_ssl_set_mtu() - * \sa mbedtls_ssl_get_max_frag_len() + * \sa mbedtls_ssl_get_output_max_frag_len() + * \sa mbedtls_ssl_get_input_max_frag_len() * \sa mbedtls_ssl_get_record_expansion() * * \param ssl SSL context @@ -3714,7 +3783,14 @@ int mbedtls_ssl_renegotiate( mbedtls_ssl_context *ssl ); * * \return The (positive) number of bytes read if successful. * \return \c 0 if the read end of the underlying transport was closed - * - in this case you must stop using the context (see below). + * without sending a CloseNotify beforehand, which might happen + * because of various reasons (internal error of an underlying + * stack, non-conformant peer not sending a CloseNotify and + * such) - in this case you must stop using the context + * (see below). + * \return #MBEDTLS_ERR_SSL_PEER_CLOSE_NOTIFY if the underlying + * transport is still functional, but the peer has + * acknowledged to not send anything anymore. * \return #MBEDTLS_ERR_SSL_WANT_READ or #MBEDTLS_ERR_SSL_WANT_WRITE * if the handshake is incomplete and waiting for data to * be available for reading from or writing to the underlying @@ -3831,8 +3907,8 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len ) * or negotiated with the peer), then: * - with TLS, less bytes than requested are written. * - with DTLS, MBEDTLS_ERR_SSL_BAD_INPUT_DATA is returned. - * \c mbedtls_ssl_get_max_frag_len() may be used to query the - * active maximum fragment length. + * \c mbedtls_ssl_get_output_max_frag_len() may be used to + * query the active maximum fragment length. * * \note Attempting to write 0 bytes will result in an empty TLS * application record being sent. diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_ciphersuites.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_ciphersuites.h index 5505e521..7fbafa48 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_ciphersuites.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_ciphersuites.h @@ -312,7 +312,7 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED +#define MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED #endif /* Key exchanges allowing client certificate requests */ @@ -322,28 +322,28 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED +#define MBEDTLS_KEY_EXCHANGE_CERT_REQ_ALLOWED_ENABLED #endif /* Key exchanges involving server signature in ServerKeyExchange */ #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED +#define MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED #endif /* Key exchanges using ECDH */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED #endif /* Key exchanges that don't involve ephemeral keys */ #if defined(MBEDTLS_KEY_EXCHANGE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ - defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED + defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) +#define MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED #endif /* Key exchanges that involve ephemeral keys */ @@ -353,7 +353,7 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED #endif /* Key exchanges using a PSK */ @@ -361,20 +361,20 @@ typedef enum { defined(MBEDTLS_KEY_EXCHANGE_RSA_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED #endif /* Key exchanges using DHE */ #if defined(MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_DHE_PSK_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED #endif /* Key exchanges using ECDHE */ #if defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) || \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_PSK_ENABLED) -#define MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED +#define MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED #endif typedef struct mbedtls_ssl_ciphersuite_t mbedtls_ssl_ciphersuite_t; @@ -417,7 +417,7 @@ mbedtls_pk_type_t mbedtls_ssl_get_ciphersuite_sig_alg( const mbedtls_ssl_ciphers int mbedtls_ssl_ciphersuite_uses_ec( const mbedtls_ssl_ciphersuite_t *info ); int mbedtls_ssl_ciphersuite_uses_psk( const mbedtls_ssl_ciphersuite_t *info ); -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED) static inline int mbedtls_ssl_ciphersuite_has_pfs( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -434,9 +434,9 @@ static inline int mbedtls_ssl_ciphersuite_has_pfs( const mbedtls_ssl_ciphersuite return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PFS_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED) static inline int mbedtls_ssl_ciphersuite_no_pfs( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -452,9 +452,9 @@ static inline int mbedtls_ssl_ciphersuite_no_pfs( const mbedtls_ssl_ciphersuite_ return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME_NON_PFS__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_NON_PFS_ENABLED */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_ecdh( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -467,7 +467,7 @@ static inline int mbedtls_ssl_ciphersuite_uses_ecdh( const mbedtls_ssl_ciphersui return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDH_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDH_ENABLED */ static inline int mbedtls_ssl_ciphersuite_cert_req_allowed( const mbedtls_ssl_ciphersuite_t *info ) { @@ -504,7 +504,7 @@ static inline int mbedtls_ssl_ciphersuite_uses_srv_cert( const mbedtls_ssl_ciphe } } -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_dhe( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -517,9 +517,9 @@ static inline int mbedtls_ssl_ciphersuite_uses_dhe( const mbedtls_ssl_ciphersuit return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__DHE_ENABLED) */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_DHE_ENABLED) */ -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_ecdhe( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -533,9 +533,9 @@ static inline int mbedtls_ssl_ciphersuite_uses_ecdhe( const mbedtls_ssl_ciphersu return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__ECDHE_ENABLED) */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_ECDHE_ENABLED) */ -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED) static inline int mbedtls_ssl_ciphersuite_uses_server_signature( const mbedtls_ssl_ciphersuite_t *info ) { switch( info->key_exchange ) @@ -549,7 +549,7 @@ static inline int mbedtls_ssl_ciphersuite_uses_server_signature( const mbedtls_s return( 0 ); } } -#endif /* MBEDTLS_KEY_EXCHANGE__WITH_SERVER_SIGNATURE__ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_WITH_SERVER_SIGNATURE_ENABLED */ #ifdef __cplusplus } diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h index 6332d148..f83d0145 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/ssl_internal.h @@ -113,7 +113,7 @@ defined(MBEDTLS_SSL_CLI_C) && \ defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED) -#define MBEDTLS_SSL__ECP_RESTARTABLE +#define MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED #endif #define MBEDTLS_SSL_INITIAL_HANDSHAKE 0 @@ -238,7 +238,7 @@ implicit sequence number. */ #define MBEDTLS_SSL_HEADER_LEN 13 -#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +#if !defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) #define MBEDTLS_SSL_IN_BUFFER_LEN \ ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_IN_PAYLOAD_LEN ) ) #else @@ -247,7 +247,7 @@ + ( MBEDTLS_SSL_CID_IN_LEN_MAX ) ) #endif -#if defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) +#if !defined(MBEDTLS_SSL_DTLS_CONNECTION_ID) #define MBEDTLS_SSL_OUT_BUFFER_LEN \ ( ( MBEDTLS_SSL_HEADER_LEN ) + ( MBEDTLS_SSL_OUT_PAYLOAD_LEN ) ) #else @@ -256,6 +256,32 @@ + ( MBEDTLS_SSL_CID_OUT_LEN_MAX ) ) #endif +#if defined(MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH) +static inline uint32_t mbedtls_ssl_get_output_buflen( const mbedtls_ssl_context *ctx ) +{ +#if defined (MBEDTLS_SSL_DTLS_CONNECTION_ID) + return (uint32_t) mbedtls_ssl_get_output_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD + + MBEDTLS_SSL_CID_OUT_LEN_MAX; +#else + return (uint32_t) mbedtls_ssl_get_output_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD; +#endif +} + +static inline uint32_t mbedtls_ssl_get_input_buflen( const mbedtls_ssl_context *ctx ) +{ +#if defined (MBEDTLS_SSL_DTLS_CONNECTION_ID) + return (uint32_t) mbedtls_ssl_get_input_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD + + MBEDTLS_SSL_CID_IN_LEN_MAX; +#else + return (uint32_t) mbedtls_ssl_get_input_max_frag_len( ctx ) + + MBEDTLS_SSL_HEADER_LEN + MBEDTLS_SSL_PAYLOAD_OVERHEAD; +#endif +} +#endif + #ifdef MBEDTLS_ZLIB_SUPPORT /* Compression buffer holds both IN and OUT buffers, so should be size of the larger */ #define MBEDTLS_SSL_COMPRESS_BUFFER_LEN ( \ @@ -278,7 +304,7 @@ extern "C" { #endif #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* * Abstraction for a grid of allowed signature-hash-algorithm pairs. */ @@ -293,7 +319,7 @@ struct mbedtls_ssl_sig_hash_set_t mbedtls_md_type_t ecdsa; }; #endif /* MBEDTLS_SSL_PROTO_TLS1_2 && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ typedef int mbedtls_ssl_tls_prf_cb( const unsigned char *secret, size_t slen, const char *label, @@ -309,7 +335,7 @@ struct mbedtls_ssl_handshake_params */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) mbedtls_ssl_sig_hash_set_t hash_algs; /*!< Set of suitable sig-hash pairs */ #endif #if defined(MBEDTLS_DHM_C) @@ -338,13 +364,13 @@ struct mbedtls_ssl_handshake_params defined(MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED) const mbedtls_ecp_curve_info **curves; /*!< Supported elliptic curves */ #endif -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) #if defined(MBEDTLS_USE_PSA_CRYPTO) psa_key_handle_t psk_opaque; /*!< Opaque PSK from the callback */ #endif /* MBEDTLS_USE_PSA_CRYPTO */ unsigned char *psk; /*!< PSK from the callback */ size_t psk_len; /*!< Length of PSK from callback */ -#endif /* MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED */ +#endif /* MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED */ #if defined(MBEDTLS_X509_CRT_PARSE_C) mbedtls_ssl_key_cert *key_cert; /*!< chosen key/cert pair (server) */ #if defined(MBEDTLS_SSL_SERVER_NAME_INDICATION) @@ -354,7 +380,7 @@ struct mbedtls_ssl_handshake_params mbedtls_x509_crl *sni_ca_crl; /*!< trusted CAs CRLs from SNI */ #endif /* MBEDTLS_SSL_SERVER_NAME_INDICATION */ #endif /* MBEDTLS_X509_CRT_PARSE_C */ -#if defined(MBEDTLS_SSL__ECP_RESTARTABLE) +#if defined(MBEDTLS_SSL_ECP_RESTARTABLE_ENABLED) int ecrs_enabled; /*!< Handshake supports EC restart? */ mbedtls_x509_crt_restart_ctx ecrs_ctx; /*!< restart context */ enum { /* this complements ssl->state with info on intra-state operations */ @@ -746,7 +772,7 @@ struct mbedtls_ssl_flight_item #endif /* MBEDTLS_SSL_PROTO_DTLS */ #if defined(MBEDTLS_SSL_PROTO_TLS1_2) && \ - defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) + defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) /* Find an entry in a signature-hash set matching a given hash algorithm. */ mbedtls_md_type_t mbedtls_ssl_sig_hash_set_find( mbedtls_ssl_sig_hash_set_t *set, @@ -766,7 +792,7 @@ static inline void mbedtls_ssl_sig_hash_set_init( mbedtls_ssl_sig_hash_set_t *se } #endif /* MBEDTLS_SSL_PROTO_TLS1_2) && - MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED */ + MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED */ /** * \brief Free referenced items in an SSL transform context and clear @@ -893,7 +919,7 @@ int mbedtls_ssl_write_finished( mbedtls_ssl_context *ssl ); void mbedtls_ssl_optimize_checksum( mbedtls_ssl_context *ssl, const mbedtls_ssl_ciphersuite_t *ciphersuite_info ); -#if defined(MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED) int mbedtls_ssl_psk_derive_premaster( mbedtls_ssl_context *ssl, mbedtls_key_exchange_type_t key_ex ); #endif @@ -911,7 +937,7 @@ int mbedtls_ssl_set_calc_verify_md( mbedtls_ssl_context *ssl, int md ); int mbedtls_ssl_check_curve( const mbedtls_ssl_context *ssl, mbedtls_ecp_group_id grp_id ); #endif -#if defined(MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLED) +#if defined(MBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED) int mbedtls_ssl_check_sig_hash( const mbedtls_ssl_context *ssl, mbedtls_md_type_t md ); #endif diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/threading.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/threading.h new file mode 100644 index 00000000..cab40f71 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/threading.h @@ -0,0 +1,122 @@ +/** + * \file threading.h + * + * \brief Threading abstraction layer + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_THREADING_H +#define MBEDTLS_THREADING_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE is deprecated and should not be + * used. */ +#define MBEDTLS_ERR_THREADING_FEATURE_UNAVAILABLE -0x001A /**< The selected feature is not available. */ + +#define MBEDTLS_ERR_THREADING_BAD_INPUT_DATA -0x001C /**< Bad input parameters to function. */ +#define MBEDTLS_ERR_THREADING_MUTEX_ERROR -0x001E /**< Locking / unlocking / free failed with error code. */ + +#if defined(MBEDTLS_THREADING_PTHREAD) +#include +typedef struct mbedtls_threading_mutex_t +{ + pthread_mutex_t mutex; + char is_valid; +} mbedtls_threading_mutex_t; +#endif + +#if defined(MBEDTLS_THREADING_ALT) +/* You should define the mbedtls_threading_mutex_t type in your header */ +#include "threading_alt.h" + +/** + * \brief Set your alternate threading implementation function + * pointers and initialize global mutexes. If used, this + * function must be called once in the main thread before any + * other mbed TLS function is called, and + * mbedtls_threading_free_alt() must be called once in the main + * thread after all other mbed TLS functions. + * + * \note mutex_init() and mutex_free() don't return a status code. + * If mutex_init() fails, it should leave its argument (the + * mutex) in a state such that mutex_lock() will fail when + * called with this argument. + * + * \param mutex_init the init function implementation + * \param mutex_free the free function implementation + * \param mutex_lock the lock function implementation + * \param mutex_unlock the unlock function implementation + */ +void mbedtls_threading_set_alt( void (*mutex_init)( mbedtls_threading_mutex_t * ), + void (*mutex_free)( mbedtls_threading_mutex_t * ), + int (*mutex_lock)( mbedtls_threading_mutex_t * ), + int (*mutex_unlock)( mbedtls_threading_mutex_t * ) ); + +/** + * \brief Free global mutexes. + */ +void mbedtls_threading_free_alt( void ); +#endif /* MBEDTLS_THREADING_ALT */ + +#if defined(MBEDTLS_THREADING_C) +/* + * The function pointers for mutex_init, mutex_free, mutex_ and mutex_unlock + * + * All these functions are expected to work or the result will be undefined. + */ +extern void (*mbedtls_mutex_init)( mbedtls_threading_mutex_t *mutex ); +extern void (*mbedtls_mutex_free)( mbedtls_threading_mutex_t *mutex ); +extern int (*mbedtls_mutex_lock)( mbedtls_threading_mutex_t *mutex ); +extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex ); + +/* + * Global mutexes + */ +#if defined(MBEDTLS_FS_IO) +extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex; +#endif + +#if defined(MBEDTLS_HAVE_TIME_DATE) && !defined(MBEDTLS_PLATFORM_GMTIME_R_ALT) +/* This mutex may or may not be used in the default definition of + * mbedtls_platform_gmtime_r(), but in order to determine that, + * we need to check POSIX features, hence modify _POSIX_C_SOURCE. + * With the current approach, this declaration is orphaned, lacking + * an accompanying definition, in case mbedtls_platform_gmtime_r() + * doesn't need it, but that's not a problem. */ +extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex; +#endif /* MBEDTLS_HAVE_TIME_DATE && !MBEDTLS_PLATFORM_GMTIME_R_ALT */ + +#endif /* MBEDTLS_THREADING_C */ + +#ifdef __cplusplus +} +#endif + +#endif /* threading.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/timing.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/timing.h new file mode 100644 index 00000000..b264a5a9 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/timing.h @@ -0,0 +1,153 @@ +/** + * \file timing.h + * + * \brief Portable interface to timeouts and to the CPU cycle counter + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_TIMING_H +#define MBEDTLS_TIMING_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_TIMING_ALT) +// Regular implementation +// + +/** + * \brief timer structure + */ +struct mbedtls_timing_hr_time +{ + unsigned char opaque[32]; +}; + +/** + * \brief Context for mbedtls_timing_set/get_delay() + */ +typedef struct mbedtls_timing_delay_context +{ + struct mbedtls_timing_hr_time timer; + uint32_t int_ms; + uint32_t fin_ms; +} mbedtls_timing_delay_context; + +#else /* MBEDTLS_TIMING_ALT */ +#include "timing_alt.h" +#endif /* MBEDTLS_TIMING_ALT */ + +extern volatile int mbedtls_timing_alarmed; + +/** + * \brief Return the CPU cycle counter value + * + * \warning This is only a best effort! Do not rely on this! + * In particular, it is known to be unreliable on virtual + * machines. + * + * \note This value starts at an unspecified origin and + * may wrap around. + */ +unsigned long mbedtls_timing_hardclock( void ); + +/** + * \brief Return the elapsed time in milliseconds + * + * \param val points to a timer structure + * \param reset If 0, query the elapsed time. Otherwise (re)start the timer. + * + * \return Elapsed time since the previous reset in ms. When + * restarting, this is always 0. + * + * \note To initialize a timer, call this function with reset=1. + * + * Determining the elapsed time and resetting the timer is not + * atomic on all platforms, so after the sequence + * `{ get_timer(1); ...; time1 = get_timer(1); ...; time2 = + * get_timer(0) }` the value time1+time2 is only approximately + * the delay since the first reset. + */ +unsigned long mbedtls_timing_get_timer( struct mbedtls_timing_hr_time *val, int reset ); + +/** + * \brief Setup an alarm clock + * + * \param seconds delay before the "mbedtls_timing_alarmed" flag is set + * (must be >=0) + * + * \warning Only one alarm at a time is supported. In a threaded + * context, this means one for the whole process, not one per + * thread. + */ +void mbedtls_set_alarm( int seconds ); + +/** + * \brief Set a pair of delays to watch + * (See \c mbedtls_timing_get_delay().) + * + * \param data Pointer to timing data. + * Must point to a valid \c mbedtls_timing_delay_context struct. + * \param int_ms First (intermediate) delay in milliseconds. + * The effect if int_ms > fin_ms is unspecified. + * \param fin_ms Second (final) delay in milliseconds. + * Pass 0 to cancel the current delay. + * + * \note To set a single delay, either use \c mbedtls_timing_set_timer + * directly or use this function with int_ms == fin_ms. + */ +void mbedtls_timing_set_delay( void *data, uint32_t int_ms, uint32_t fin_ms ); + +/** + * \brief Get the status of delays + * (Memory helper: number of delays passed.) + * + * \param data Pointer to timing data + * Must point to a valid \c mbedtls_timing_delay_context struct. + * + * \return -1 if cancelled (fin_ms = 0), + * 0 if none of the delays are passed, + * 1 if only the intermediate delay is passed, + * 2 if the final delay is passed. + */ +int mbedtls_timing_get_delay( void *data ); + +#if defined(MBEDTLS_SELF_TEST) +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if a test failed + */ +int mbedtls_timing_self_test( int verbose ); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* timing.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h index 35af4cc4..b89e36ef 100644 --- a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/version.h @@ -39,7 +39,7 @@ * Major, Minor, Patchlevel */ #define MBEDTLS_VERSION_MAJOR 2 -#define MBEDTLS_VERSION_MINOR 21 +#define MBEDTLS_VERSION_MINOR 22 #define MBEDTLS_VERSION_PATCH 0 /** @@ -47,9 +47,9 @@ * MMNNPP00 * Major version | Minor version | Patch version */ -#define MBEDTLS_VERSION_NUMBER 0x02150000 -#define MBEDTLS_VERSION_STRING "2.21.0" -#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.21.0" +#define MBEDTLS_VERSION_NUMBER 0x02160000 +#define MBEDTLS_VERSION_STRING "2.22.0" +#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.22.0" #if defined(MBEDTLS_VERSION_C) diff --git a/cores/arduino/mbed/features/mbedtls/inc/mbedtls/xtea.h b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/xtea.h new file mode 100644 index 00000000..2dc0afc7 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/mbedtls/xtea.h @@ -0,0 +1,139 @@ +/** + * \file xtea.h + * + * \brief XTEA block cipher (32-bit) + */ +/* + * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ +#ifndef MBEDTLS_XTEA_H +#define MBEDTLS_XTEA_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include +#include + +#define MBEDTLS_XTEA_ENCRYPT 1 +#define MBEDTLS_XTEA_DECRYPT 0 + +#define MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH -0x0028 /**< The data input has an invalid length. */ + +/* MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED is deprecated and should not be used. */ +#define MBEDTLS_ERR_XTEA_HW_ACCEL_FAILED -0x0029 /**< XTEA hardware accelerator failed. */ + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_XTEA_ALT) +// Regular implementation +// + +/** + * \brief XTEA context structure + */ +typedef struct mbedtls_xtea_context +{ + uint32_t k[4]; /*!< key */ +} +mbedtls_xtea_context; + +#else /* MBEDTLS_XTEA_ALT */ +#include "xtea_alt.h" +#endif /* MBEDTLS_XTEA_ALT */ + +/** + * \brief Initialize XTEA context + * + * \param ctx XTEA context to be initialized + */ +void mbedtls_xtea_init( mbedtls_xtea_context *ctx ); + +/** + * \brief Clear XTEA context + * + * \param ctx XTEA context to be cleared + */ +void mbedtls_xtea_free( mbedtls_xtea_context *ctx ); + +/** + * \brief XTEA key schedule + * + * \param ctx XTEA context to be initialized + * \param key the secret key + */ +void mbedtls_xtea_setup( mbedtls_xtea_context *ctx, const unsigned char key[16] ); + +/** + * \brief XTEA cipher function + * + * \param ctx XTEA context + * \param mode MBEDTLS_XTEA_ENCRYPT or MBEDTLS_XTEA_DECRYPT + * \param input 8-byte input block + * \param output 8-byte output block + * + * \return 0 if successful + */ +int mbedtls_xtea_crypt_ecb( mbedtls_xtea_context *ctx, + int mode, + const unsigned char input[8], + unsigned char output[8] ); + +#if defined(MBEDTLS_CIPHER_MODE_CBC) +/** + * \brief XTEA CBC cipher function + * + * \param ctx XTEA context + * \param mode MBEDTLS_XTEA_ENCRYPT or MBEDTLS_XTEA_DECRYPT + * \param length the length of input, multiple of 8 + * \param iv initialization vector for CBC mode + * \param input input block + * \param output output block + * + * \return 0 if successful, + * MBEDTLS_ERR_XTEA_INVALID_INPUT_LENGTH if the length % 8 != 0 + */ +int mbedtls_xtea_crypt_cbc( mbedtls_xtea_context *ctx, + int mode, + size_t length, + unsigned char iv[8], + const unsigned char *input, + unsigned char *output); +#endif /* MBEDTLS_CIPHER_MODE_CBC */ + +#if defined(MBEDTLS_SELF_TEST) + +/** + * \brief Checkup routine + * + * \return 0 if successful, or 1 if the test failed + */ +int mbedtls_xtea_self_test( int verbose ); + +#endif /* MBEDTLS_SELF_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* xtea.h */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto.h new file mode 100644 index 00000000..2b07b747 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto.h @@ -0,0 +1,3780 @@ +/** + * \file psa/crypto.h + * \brief Platform Security Architecture cryptography module + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ + +#ifndef PSA_CRYPTO_H +#define PSA_CRYPTO_H + +#include "crypto_platform.h" + +#include + +#ifdef __DOXYGEN_ONLY__ +/* This __DOXYGEN_ONLY__ block contains mock definitions for things that + * must be defined in the crypto_platform.h header. These mock definitions + * are present in this file as a convenience to generate pretty-printed + * documentation that includes those definitions. */ + +/** \defgroup platform Implementation-specific definitions + * @{ + */ + +/** \brief Key handle. + * + * This type represents open handles to keys. It must be an unsigned integral + * type. The choice of type is implementation-dependent. + * + * 0 is not a valid key handle. How other handle values are assigned is + * implementation-dependent. + */ +typedef _unsigned_integral_type_ psa_key_handle_t; + +/**@}*/ +#endif /* __DOXYGEN_ONLY__ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The file "crypto_types.h" declares types that encode errors, + * algorithms, key types, policies, etc. */ +#include "crypto_types.h" + +/** \defgroup version API version + * @{ + */ + +/** + * The major version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MAJOR 1 + +/** + * The minor version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MINOR 0 + +/**@}*/ + +/* The file "crypto_values.h" declares macros to build and analyze values + * of integral types defined in "crypto_types.h". */ +#include "crypto_values.h" + +/** \defgroup initialization Library initialization + * @{ + */ + +/** + * \brief Library initialization. + * + * Applications must call this function before calling any other + * function in this module. + * + * Applications may call this function more than once. Once a call + * succeeds, subsequent calls are guaranteed to succeed. + * + * If the application calls other functions before calling psa_crypto_init(), + * the behavior is undefined. Implementations are encouraged to either perform + * the operation as if the library had been initialized or to return + * #PSA_ERROR_BAD_STATE or some other applicable error. In particular, + * implementations should not return a success status if the lack of + * initialization may have security implications, for example due to improper + * seeding of the random number generator. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t psa_crypto_init(void); + +/**@}*/ + +/** \addtogroup attributes + * @{ + */ + +/** \def PSA_KEY_ATTRIBUTES_INIT + * + * This macro returns a suitable initializer for a key attribute structure + * of type #psa_key_attributes_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_ATTRIBUTES_INIT {0} +#endif + +/** Return an initial value for a key attributes structure. + */ +static psa_key_attributes_t psa_key_attributes_init(void); + +/** Declare a key as persistent and set its key identifier. + * + * If the attribute structure currently declares the key as volatile (which + * is the default content of an attribute structure), this function sets + * the lifetime attribute to #PSA_KEY_LIFETIME_PERSISTENT. + * + * This function does not access storage, it merely stores the given + * value in the structure. + * The persistent key will be written to storage when the attribute + * structure is passed to a key creation function such as + * psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param id The persistent identifier for the key. + */ +static void psa_set_key_id(psa_key_attributes_t *attributes, + psa_key_id_t id); + +/** Set the location of a persistent key. + * + * To make a key persistent, you must give it a persistent key identifier + * with psa_set_key_id(). By default, a key that has a persistent identifier + * is stored in the default storage area identifier by + * #PSA_KEY_LIFETIME_PERSISTENT. Call this function to choose a storage + * area, or to explicitly declare the key as volatile. + * + * This function does not access storage, it merely stores the given + * value in the structure. + * The persistent key will be written to storage when the attribute + * structure is passed to a key creation function such as + * psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param lifetime The lifetime for the key. + * If this is #PSA_KEY_LIFETIME_VOLATILE, the + * key will be volatile, and the key identifier + * attribute is reset to 0. + */ +static void psa_set_key_lifetime(psa_key_attributes_t *attributes, + psa_key_lifetime_t lifetime); + +/** Retrieve the key identifier from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The persistent identifier stored in the attribute structure. + * This value is unspecified if the attribute structure declares + * the key as volatile. + */ +static psa_key_id_t psa_get_key_id(const psa_key_attributes_t *attributes); + +/** Retrieve the lifetime from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The lifetime value stored in the attribute structure. + */ +static psa_key_lifetime_t psa_get_key_lifetime( + const psa_key_attributes_t *attributes); + +/** Declare usage flags for a key. + * + * Usage flags are part of a key's usage policy. They encode what + * kind of operations are permitted on the key. For more details, + * refer to the documentation of the type #psa_key_usage_t. + * + * This function overwrites any usage flags + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param usage_flags The usage flags to write. + */ +static void psa_set_key_usage_flags(psa_key_attributes_t *attributes, + psa_key_usage_t usage_flags); + +/** Retrieve the usage flags from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The usage flags stored in the attribute structure. + */ +static psa_key_usage_t psa_get_key_usage_flags( + const psa_key_attributes_t *attributes); + +/** Declare the permitted algorithm policy for a key. + * + * The permitted algorithm policy of a key encodes which algorithm or + * algorithms are permitted to be used with this key. The following + * algorithm policies are supported: + * - 0 does not allow any cryptographic operation with the key. The key + * may be used for non-cryptographic actions such as exporting (if + * permitted by the usage flags). + * - An algorithm value permits this particular algorithm. + * - An algorithm wildcard built from #PSA_ALG_ANY_HASH allows the specified + * signature scheme with any hash algorithm. + * + * This function overwrites any algorithm policy + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param alg The permitted algorithm policy to write. + */ +static void psa_set_key_algorithm(psa_key_attributes_t *attributes, + psa_algorithm_t alg); + + +/** Retrieve the algorithm policy from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The algorithm stored in the attribute structure. + */ +static psa_algorithm_t psa_get_key_algorithm( + const psa_key_attributes_t *attributes); + +/** Declare the type of a key. + * + * This function overwrites any key type + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param type The key type to write. + * If this is 0, the key type in \p attributes + * becomes unspecified. + */ +static void psa_set_key_type(psa_key_attributes_t *attributes, + psa_key_type_t type); + + +/** Declare the size of a key. + * + * This function overwrites any key size previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param bits The key size in bits. + * If this is 0, the key size in \p attributes + * becomes unspecified. Keys of size 0 are + * not supported. + */ +static void psa_set_key_bits(psa_key_attributes_t *attributes, + size_t bits); + +/** Retrieve the key type from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The key type stored in the attribute structure. + */ +static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes); + +/** Retrieve the key size from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The key size stored in the attribute structure, in bits. + */ +static size_t psa_get_key_bits(const psa_key_attributes_t *attributes); + +/** Retrieve the attributes of a key. + * + * This function first resets the attribute structure as with + * psa_reset_key_attributes(). It then copies the attributes of + * the given key into the given attribute structure. + * + * \note This function may allocate memory or other resources. + * Once you have called this function on an attribute structure, + * you must call psa_reset_key_attributes() to free these resources. + * + * \param[in] handle Handle to the key to query. + * \param[in,out] attributes On success, the attributes of the key. + * On failure, equivalent to a + * freshly-initialized structure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_get_key_attributes(psa_key_handle_t handle, + psa_key_attributes_t *attributes); + +/** Reset a key attribute structure to a freshly initialized state. + * + * You must initialize the attribute structure as described in the + * documentation of the type #psa_key_attributes_t before calling this + * function. Once the structure has been initialized, you may call this + * function at any time. + * + * This function frees any auxiliary resources that the structure + * may contain. + * + * \param[in,out] attributes The attribute structure to reset. + */ +void psa_reset_key_attributes(psa_key_attributes_t *attributes); + +/**@}*/ + +/** \defgroup key_management Key management + * @{ + */ + +/** Open a handle to an existing persistent key. + * + * Open a handle to a persistent key. A key is persistent if it was created + * with a lifetime other than #PSA_KEY_LIFETIME_VOLATILE. A persistent key + * always has a nonzero key identifier, set with psa_set_key_id() when + * creating the key. Implementations may provide additional pre-provisioned + * keys that can be opened with psa_open_key(). Such keys have a key identifier + * in the vendor range, as documented in the description of #psa_key_id_t. + * + * The application must eventually close the handle with psa_close_key() or + * psa_destroy_key() to release associated resources. If the application dies + * without calling one of these functions, the implementation should perform + * the equivalent of a call to psa_close_key(). + * + * Some implementations permit an application to open the same key multiple + * times. If this is successful, each call to psa_open_key() will return a + * different key handle. + * + * \note Applications that rely on opening a key multiple times will not be + * portable to implementations that only permit a single key handle to be + * opened. See also :ref:\`key-handles\`. + * + * \param id The persistent identifier of the key. + * \param[out] handle On success, a handle to the key. + * + * \retval #PSA_SUCCESS + * Success. The application can now use the value of `*handle` + * to access the key. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * The implementation does not have sufficient resources to open the + * key. This can be due to reaching an implementation limit on the + * number of open keys, the number of open key handles, or available + * memory. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no persistent key with key identifier \p id. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p id is not a valid persistent key identifier. + * \retval #PSA_ERROR_NOT_PERMITTED + * The specified key exists, but the application does not have the + * permission to access it. Note that this specification does not + * define any way to create such a key, but it may be possible + * through implementation-specific means. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_open_key(psa_key_id_t id, + psa_key_handle_t *handle); + + +/** Close a key handle. + * + * If the handle designates a volatile key, this will destroy the key material + * and free all associated resources, just like psa_destroy_key(). + * + * If this is the last open handle to a persistent key, then closing the handle + * will free all resources associated with the key in volatile memory. The key + * data in persistent storage is not affected and can be opened again later + * with a call to psa_open_key(). + * + * Closing the key handle makes the handle invalid, and the key handle + * must not be used again by the application. + * + * \note If the key handle was used to set up an active + * :ref:\`multipart operation \`, then closing the + * key handle can cause the multipart operation to fail. Applications should + * maintain the key handle until after the multipart operation has finished. + * + * \param handle The key handle to close. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p handle was a valid handle or \c 0. It is now closed. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_close_key(psa_key_handle_t handle); + +/** Make a copy of a key. + * + * Copy key material from one location to another. + * + * This function is primarily useful to copy a key from one location + * to another, since it populates a key using the material from + * another key which may have a different lifetime. + * + * This function may be used to share a key with a different party, + * subject to implementation-defined restrictions on key sharing. + * + * The policy on the source key must have the usage flag + * #PSA_KEY_USAGE_COPY set. + * This flag is sufficient to permit the copy if the key has the lifetime + * #PSA_KEY_LIFETIME_VOLATILE or #PSA_KEY_LIFETIME_PERSISTENT. + * Some secure elements do not provide a way to copy a key without + * making it extractable from the secure element. If a key is located + * in such a secure element, then the key must have both usage flags + * #PSA_KEY_USAGE_COPY and #PSA_KEY_USAGE_EXPORT in order to make + * a copy of the key outside the secure element. + * + * The resulting key may only be used in a way that conforms to + * both the policy of the original key and the policy specified in + * the \p attributes parameter: + * - The usage flags on the resulting key are the bitwise-and of the + * usage flags on the source policy and the usage flags in \p attributes. + * - If both allow the same algorithm or wildcard-based + * algorithm policy, the resulting key has the same algorithm policy. + * - If either of the policies allows an algorithm and the other policy + * allows a wildcard-based algorithm policy that includes this algorithm, + * the resulting key allows the same algorithm. + * - If the policies do not allow any algorithm in common, this function + * fails with the status #PSA_ERROR_INVALID_ARGUMENT. + * + * The effect of this function on implementation-defined attributes is + * implementation-defined. + * + * \param source_handle The key to copy. It must be a valid key handle. + * \param[in] attributes The attributes for the new key. + * They are used as follows: + * - The key type and size may be 0. If either is + * nonzero, it must match the corresponding + * attribute of the source key. + * - The key location (the lifetime and, for + * persistent keys, the key identifier) is + * used directly. + * - The policy constraints (usage flags and + * algorithm policy) are combined from + * the source key and \p attributes so that + * both sets of restrictions apply, as + * described in the documentation of this function. + * \param[out] target_handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \p source_handle is invalid. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The lifetime or identifier in \p attributes are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The policy constraints on the source and specified in + * \p attributes are incompatible. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p attributes specifies a key type or key size + * which does not match the attributes of the source key. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key does not have the #PSA_KEY_USAGE_COPY usage flag. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key is not exportable and its lifetime does not + * allow copying it to the target's lifetime. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_copy_key(psa_key_handle_t source_handle, + const psa_key_attributes_t *attributes, + psa_key_handle_t *target_handle); + + +/** + * \brief Destroy a key. + * + * This function destroys a key from both volatile + * memory and, if applicable, non-volatile storage. Implementations shall + * make a best effort to ensure that that the key material cannot be recovered. + * + * This function also erases any metadata such as policies and frees + * resources associated with the key. To free all resources associated with + * the key, all handles to the key must be closed or destroyed. + * + * Destroying the key makes the handle invalid, and the key handle + * must not be used again by the application. Using other open handles to the + * destroyed key in a cryptographic operation will result in an error. + * + * If a key is currently in use in a multipart operation, then destroying the + * key will cause the multipart operation to fail. + * + * \param handle Handle to the key to erase. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p handle was a valid handle and the key material that it + * referred to has been erased. + * Alternatively, \p handle is \c 0. + * \retval #PSA_ERROR_NOT_PERMITTED + * The key cannot be erased because it is + * read-only, either due to a policy or due to physical restrictions. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * There was an failure in communication with the cryptoprocessor. + * The key material may still be present in the cryptoprocessor. + * \retval #PSA_ERROR_STORAGE_FAILURE + * The storage is corrupted. Implementations shall make a best effort + * to erase key material even in this stage, however applications + * should be aware that it may be impossible to guarantee that the + * key material is not recoverable in such cases. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * An unexpected condition which is not a storage corruption or + * a communication failure occurred. The cryptoprocessor may have + * been compromised. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_destroy_key(psa_key_handle_t handle); + +/**@}*/ + +/** \defgroup import_export Key import and export + * @{ + */ + +/** + * \brief Import a key in binary format. + * + * This function supports any output from psa_export_key(). Refer to the + * documentation of psa_export_public_key() for the format of public keys + * and to the documentation of psa_export_key() for the format for + * other key types. + * + * The key data determines the key size. The attributes may optionally + * specify a key size; in this case it must match the size determined + * from the key data. A key size of 0 in \p attributes indicates that + * the key size is solely determined by the key data. + * + * Implementations must reject an attempt to import a key of size 0. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * \param[in] attributes The attributes for the new key. + * The key size is always determined from the + * \p data buffer. + * If the key size in \p attributes is nonzero, + * it must be equal to the size from \p data. + * \param[out] handle On success, a handle to the newly created key. + * \c 0 on failure. + * \param[in] data Buffer containing the key data. The content of this + * buffer is interpreted according to the type declared + * in \p attributes. + * All implementations must support at least the format + * described in the documentation + * of psa_export_key() or psa_export_public_key() for + * the chosen type. Implementations may allow other + * formats, but should be conservative: implementations + * should err on the side of rejecting content if it + * may be erroneous (e.g. wrong type or truncated data). + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular persistent location. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key attributes, as a whole, are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key data is not correctly formatted. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size in \p attributes is nonzero and does not match the size + * of the key data. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_import_key(const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + psa_key_handle_t *handle); + + + +/** + * \brief Export a key in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If the implementation of psa_import_key() supports other formats + * beyond the format specified here, the output from psa_export_key() + * must use the representation specified here, not the original + * representation. + * + * For standard key types, the output format is as follows: + * + * - For symmetric keys (including MAC keys), the format is the + * raw bytes of the key. + * - For DES, the key data consists of 8 bytes. The parity bits must be + * correct. + * - For Triple-DES, the format is the concatenation of the + * two or three DES keys. + * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEY_PAIR), the format + * is the non-encrypted DER encoding of the representation defined by + * PKCS\#1 (RFC 8017) as `RSAPrivateKey`, version 0. + * ``` + * RSAPrivateKey ::= SEQUENCE { + * version INTEGER, -- must be 0 + * modulus INTEGER, -- n + * publicExponent INTEGER, -- e + * privateExponent INTEGER, -- d + * prime1 INTEGER, -- p + * prime2 INTEGER, -- q + * exponent1 INTEGER, -- d mod (p-1) + * exponent2 INTEGER, -- d mod (q-1) + * coefficient INTEGER, -- (inverse of q) mod p + * } + * ``` + * - For elliptic curve key pairs (key types for which + * #PSA_KEY_TYPE_IS_ECC_KEY_PAIR is true), the format is + * a representation of the private value as a `ceiling(m/8)`-byte string + * where `m` is the bit size associated with the curve, i.e. the bit size + * of the order of the curve's coordinate field. This byte string is + * in little-endian order for Montgomery curves (curve types + * `PSA_ECC_CURVE_CURVEXXX`), and in big-endian order for Weierstrass + * curves (curve types `PSA_ECC_CURVE_SECTXXX`, `PSA_ECC_CURVE_SECPXXX` + * and `PSA_ECC_CURVE_BRAINPOOL_PXXX`). + * This is the content of the `privateKey` field of the `ECPrivateKey` + * format defined by RFC 5915. + * - For Diffie-Hellman key exchange key pairs (key types for which + * #PSA_KEY_TYPE_IS_DH_KEY_PAIR is true), the + * format is the representation of the private key `x` as a big-endian byte + * string. The length of the byte string is the private key size in bytes + * (leading zeroes are not stripped). + * - For public keys (key types for which #PSA_KEY_TYPE_IS_PUBLIC_KEY is + * true), the format is the same as for psa_export_public_key(). + * + * The policy on the key must have the usage flag #PSA_KEY_USAGE_EXPORT set. + * + * \param handle Handle to the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * The key does not have the #PSA_KEY_USAGE_EXPORT flag. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_KEY_EXPORT_MAX_SIZE(\c type, \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** + * \brief Export a public key or the public part of a key pair in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an object that is equivalent to the public key. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * For standard key types, the output format is as follows: + * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), the DER encoding of + * the representation defined by RFC 3279 §2.3.1 as `RSAPublicKey`. + * ``` + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * ``` + * - For elliptic curve public keys (key types for which + * #PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY is true), the format is the uncompressed + * representation defined by SEC1 §2.3.3 as the content of an ECPoint. + * Let `m` be the bit size associated with the curve, i.e. the bit size of + * `q` for a curve over `F_q`. The representation consists of: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian. + * - For Diffie-Hellman key exchange public keys (key types for which + * #PSA_KEY_TYPE_IS_DH_PUBLIC_KEY is true), + * the format is the representation of the public key `y = g^x mod p` as a + * big-endian byte string. The length of the byte string is the length of the + * base prime `p` in bytes. + * + * Exporting a public key object or the public part of a key pair is + * always permitted, regardless of the key's usage flags. + * + * \param handle Handle to the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key is neither a public key nor a key pair. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_KEY_EXPORT_MAX_SIZE(#PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(\c type), \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_public_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length); + + + +/**@}*/ + +/** \defgroup hash Message digests + * @{ + */ + +/** Calculate the hash (digest) of a message. + * + * \note To verify the hash of a message against an + * expected value, use psa_hash_compare() instead. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_SIZE(\p alg). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p hash_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_compute(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Calculate the hash (digest) of a message and compare it with a + * reference value. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the input. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p input_length or \p hash_length do not match the hash size for \p alg + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_compare(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *hash, + size_t hash_length); + +/** The type of the state data structure for multipart hash operations. + * + * Before calling any function on a hash operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_hash_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_hash_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_HASH_OPERATION_INIT, + * for example: + * \code + * psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_hash_operation_init() + * to the structure, for example: + * \code + * psa_hash_operation_t operation; + * operation = psa_hash_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_hash_operation_s psa_hash_operation_t; + +/** \def PSA_HASH_OPERATION_INIT + * + * This macro returns a suitable initializer for a hash operation object + * of type #psa_hash_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_HASH_OPERATION_INIT {0} +#endif + +/** Return an initial value for a hash operation object. + */ +static psa_hash_operation_t psa_hash_operation_init(void); + +/** Set up a multipart hash operation. + * + * The sequence of operations to calculate a hash (message digest) + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_hash_operation_t, e.g. #PSA_HASH_OPERATION_INIT. + * -# Call psa_hash_setup() to specify the algorithm. + * -# Call psa_hash_update() zero, one or more times, passing a fragment + * of the message each time. The hash that is calculated is the hash + * of the concatenation of these messages in order. + * -# To calculate the hash, call psa_hash_finish(). + * To compare the hash with an expected value, call psa_hash_verify(). + * + * If an error occurs at any step after a call to psa_hash_setup(), the + * operation will need to be reset by a call to psa_hash_abort(). The + * application may call psa_hash_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_hash_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_hash_finish() or psa_hash_verify(). + * - A call to psa_hash_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_hash_operation_t and not yet in use. + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not a supported hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p alg is not a hash algorithm. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_setup(psa_hash_operation_t *operation, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart hash operation. + * + * The application must call psa_hash_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \param[in,out] operation Active hash operation. + * \param[in] input Buffer containing the message fragment to hash. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it muct be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_update(psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the hash of a message. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \warning Applications should not call this function if they expect + * a specific value for the hash. Call psa_hash_verify() instead. + * Beware that comparing integrity or authenticity data such as + * hash values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the hashed data which could allow an attacker to guess + * a valid hash and thereby bypass security controls. + * + * \param[in,out] operation Active hash operation. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_SIZE(\c alg) where \c alg is the + * hash algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p hash buffer is too small. You can determine a + * sufficient buffer size by calling #PSA_HASH_SIZE(\c alg) + * where \c alg is the hash algorithm that is calculated. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_finish(psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Finish the calculation of the hash of a message and compare it with + * an expected value. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). It then + * compares the calculated hash with the expected hash passed as a + * parameter to this function. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual hash and the expected hash is performed + * in constant time. + * + * \param[in,out] operation Active hash operation. + * \param[in] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_verify(psa_hash_operation_t *operation, + const uint8_t *hash, + size_t hash_length); + +/** Abort a hash operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_hash_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_hash_operation_t. + * + * In particular, calling psa_hash_abort() after the operation has been + * terminated by a call to psa_hash_abort(), psa_hash_finish() or + * psa_hash_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized hash operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_abort(psa_hash_operation_t *operation); + +/** Clone a hash operation. + * + * This function copies the state of an ongoing hash operation to + * a new operation object. In other words, this function is equivalent + * to calling psa_hash_setup() on \p target_operation with the same + * algorithm that \p source_operation was set up for, then + * psa_hash_update() on \p target_operation with the same input that + * that was passed to \p source_operation. After this function returns, the + * two objects are independent, i.e. subsequent calls involving one of + * the objects do not affect the other object. + * + * \param[in] source_operation The active hash operation to clone. + * \param[in,out] target_operation The operation object to set up. + * It must be initialized but not active. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * The \p source_operation state is not valid (it must be active). + * \retval #PSA_ERROR_BAD_STATE + * The \p target_operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation); + +/**@}*/ + +/** \defgroup MAC Message authentication codes + * @{ + */ + +/** Calculate the MAC (message authentication code) of a message. + * + * \note To verify the MAC of a message against an + * expected value, use psa_mac_verify() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param handle Handle to the key to use for the operation. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p mac_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_compute(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Calculate the MAC of a message and compare it with a reference value. + * + * \param handle Handle to the key to use for the operation. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the input. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected value. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *mac, + size_t mac_length); + +/** The type of the state data structure for multipart MAC operations. + * + * Before calling any function on a MAC operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_mac_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_mac_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_MAC_OPERATION_INIT, + * for example: + * \code + * psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_mac_operation_init() + * to the structure, for example: + * \code + * psa_mac_operation_t operation; + * operation = psa_mac_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_mac_operation_s psa_mac_operation_t; + +/** \def PSA_MAC_OPERATION_INIT + * + * This macro returns a suitable initializer for a MAC operation object of type + * #psa_mac_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_MAC_OPERATION_INIT {0} +#endif + +/** Return an initial value for a MAC operation object. + */ +static psa_mac_operation_t psa_mac_operation_init(void); + +/** Set up a multipart MAC calculation operation. + * + * This function sets up the calculation of the MAC + * (message authentication code) of a byte string. + * To verify the MAC of a message against an + * expected value, use psa_mac_verify_setup() instead. + * + * The sequence of operations to calculate a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_sign_setup() to specify the algorithm and key. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_sign_finish() to finish + * calculating the MAC value and retrieve it. + * + * If an error occurs at any step after a call to psa_mac_sign_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_sign_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A successful call to psa_mac_sign_finish(). + * - A call to psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set up a multipart MAC verification operation. + * + * This function sets up the verification of the MAC + * (message authentication code) of a byte string against an expected value. + * + * The sequence of operations to verify a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_verify_setup() to specify the algorithm and key. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_verify_finish() to finish + * calculating the actual MAC of the message and verify it against + * the expected value. + * + * If an error occurs at any step after a call to psa_mac_verify_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_verify_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A successful call to psa_mac_verify_finish(). + * - A call to psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c key is not compatible with \c alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart MAC operation. + * + * The application must call psa_mac_sign_setup() or psa_mac_verify_setup() + * before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \param[in,out] operation Active MAC operation. + * \param[in] input Buffer containing the message fragment to add to + * the MAC calculation. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_update(psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the MAC of a message. + * + * The application must call psa_mac_sign_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \warning Applications should not call this function if they expect + * a specific value for the MAC. Call psa_mac_verify_finish() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param[in,out] operation Active MAC operation. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. This is always + * #PSA_MAC_FINAL_SIZE(\c key_type, \c key_bits, \c alg) + * where \c key_type and \c key_bits are the type and + * bit-size respectively of the key and \c alg is the + * MAC algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac sign + * operation). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p mac buffer is too small. You can determine a + * sufficient buffer size by calling PSA_MAC_FINAL_SIZE(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Finish the calculation of the MAC of a message and compare it with + * an expected value. + * + * The application must call psa_mac_verify_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). It then + * compares the calculated MAC with the expected MAC passed as a + * parameter to this function. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual MAC and the expected MAC is performed + * in constant time. + * + * \param[in,out] operation Active MAC operation. + * \param[in] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected MAC. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac verify + * operation). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length); + +/** Abort a MAC operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_mac_sign_setup() or psa_mac_verify_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_mac_operation_t. + * + * In particular, calling psa_mac_abort() after the operation has been + * terminated by a call to psa_mac_abort(), psa_mac_sign_finish() or + * psa_mac_verify_finish() is safe and has no effect. + * + * \param[in,out] operation Initialized MAC operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_abort(psa_mac_operation_t *operation); + +/**@}*/ + +/** \defgroup cipher Symmetric ciphers + * @{ + */ + +/** Encrypt a message using a symmetric cipher. + * + * This function encrypts a message with a random IV (initialization + * vector). Use the multipart operation interface with a + * #psa_cipher_operation_t object to provide other forms of IV. + * + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * The output contains the IV followed by + * the ciphertext proper. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Decrypt a message using a symmetric cipher. + * + * This function decrypts a message encrypted with a symmetric cipher. + * + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the message to decrypt. + * This consists of the IV followed by the + * ciphertext proper. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the plaintext is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** The type of the state data structure for multipart cipher operations. + * + * Before calling any function on a cipher operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_cipher_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_cipher_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_CIPHER_OPERATION_INIT, + * for example: + * \code + * psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_cipher_operation_init() + * to the structure, for example: + * \code + * psa_cipher_operation_t operation; + * operation = psa_cipher_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_cipher_operation_s psa_cipher_operation_t; + +/** \def PSA_CIPHER_OPERATION_INIT + * + * This macro returns a suitable initializer for a cipher operation object of + * type #psa_cipher_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_CIPHER_OPERATION_INIT {0} +#endif + +/** Return an initial value for a cipher operation object. + */ +static psa_cipher_operation_t psa_cipher_operation_init(void); + +/** Set the key for a multipart symmetric encryption operation. + * + * The sequence of operations to encrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * #PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_encrypt_setup() to specify the algorithm and key. + * -# Call either psa_cipher_generate_iv() or psa_cipher_set_iv() to + * generate or set the IV (initialization vector). You should use + * psa_cipher_generate_iv() unless the protocol you are implementing + * requires a specific IV value. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * If an error occurs at any step after a call to psa_cipher_encrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set the key for a multipart symmetric decryption operation. + * + * The sequence of operations to decrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * #PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_decrypt_setup() to specify the algorithm and key. + * -# Call psa_cipher_set_iv() with the IV (initialization vector) for the + * decryption. If the IV is prepended to the ciphertext, you can call + * psa_cipher_update() on a buffer containing the IV followed by the + * beginning of the message. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * If an error occurs at any step after a call to psa_cipher_decrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Generate an IV for a symmetric encryption operation. + * + * This function generates a random IV (initialization vector), nonce + * or initial counter value for the encryption operation as appropriate + * for the chosen algorithm, key type and key size. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[out] iv Buffer where the generated IV is to be written. + * \param iv_size Size of the \p iv buffer in bytes. + * \param[out] iv_length On success, the number of bytes of the + * generated IV. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with no IV set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p iv buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, + uint8_t *iv, + size_t iv_size, + size_t *iv_length); + +/** Set the IV for a symmetric encryption or decryption operation. + * + * This function sets the IV (initialization vector), nonce + * or initial counter value for the encryption or decryption operation. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \note When encrypting, applications should use psa_cipher_generate_iv() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active cipher operation. + * \param[in] iv Buffer containing the IV to use. + * \param iv_length Size of the IV in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active cipher + * encrypt operation, with no IV set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p iv is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, + const uint8_t *iv, + size_t iv_length); + +/** Encrypt or decrypt a message fragment in an active cipher operation. + * + * Before calling this function, you must: + * 1. Call either psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. If the algorithm requires an IV, call psa_cipher_generate_iv() + * (recommended when encrypting) or psa_cipher_set_iv(). + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting or decrypting a message in a cipher operation. + * + * The application must call psa_cipher_encrypt_setup() or + * psa_cipher_decrypt_setup() before calling this function. The choice + * of setup function determines whether this function encrypts or + * decrypts its input. + * + * This function finishes the encryption or decryption of the message + * formed by concatenating the inputs passed to preceding calls to + * psa_cipher_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Abort a cipher operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized as described in #psa_cipher_operation_t. + * + * In particular, calling psa_cipher_abort() after the operation has been + * terminated by a call to psa_cipher_abort() or psa_cipher_finish() + * is safe and has no effect. + * + * \param[in,out] operation Initialized cipher operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation); + +/**@}*/ + +/** \defgroup aead Authenticated encryption with associated data (AEAD) + * @{ + */ + +/** Process an authenticated encryption operation. + * + * \param handle Handle to the key to use for the operation. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that will be authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] plaintext Data that will be authenticated and + * encrypted. + * \param plaintext_length Size of \p plaintext in bytes. + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is not + * part of this output. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate outputs, the + * authentication tag is appended to the + * encrypted data. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be at least + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\p alg, + * \p plaintext_length). + * \param[out] ciphertext_length On success, the size of the output + * in the \p ciphertext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p ciphertext_size is too small + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length); + +/** Process an authenticated decryption operation. + * + * \param handle Handle to the key to use for the operation. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that has been authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] ciphertext Data that has been authenticated and + * encrypted. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate inputs, the buffer + * must contain the encrypted data followed + * by the authentication tag. + * \param ciphertext_length Size of \p ciphertext in bytes. + * \param[out] plaintext Output buffer for the decrypted data. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be at least + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\p alg, + * \p ciphertext_length). + * \param[out] plaintext_length On success, the size of the output + * in the \p plaintext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The ciphertext is not authentic. + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p plaintext_size or \p nonce_length is too small + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length); + +/** The type of the state data structure for multipart AEAD operations. + * + * Before calling any function on an AEAD operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_aead_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_aead_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_AEAD_OPERATION_INIT, + * for example: + * \code + * psa_aead_operation_t operation = PSA_AEAD_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_aead_operation_init() + * to the structure, for example: + * \code + * psa_aead_operation_t operation; + * operation = psa_aead_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_aead_operation_s psa_aead_operation_t; + +/** \def PSA_AEAD_OPERATION_INIT + * + * This macro returns a suitable initializer for an AEAD operation object of + * type #psa_aead_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_AEAD_OPERATION_INIT {0} +#endif + +/** Return an initial value for an AEAD operation object. + */ +static psa_aead_operation_t psa_aead_operation_init(void); + +/** Set the key for a multipart authenticated encryption operation. + * + * The sequence of operations to encrypt a message with authentication + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_aead_operation_t, e.g. + * #PSA_AEAD_OPERATION_INIT. + * -# Call psa_aead_encrypt_setup() to specify the algorithm and key. + * -# If needed, call psa_aead_set_lengths() to specify the length of the + * inputs to the subsequent calls to psa_aead_update_ad() and + * psa_aead_update(). See the documentation of psa_aead_set_lengths() + * for details. + * -# Call either psa_aead_generate_nonce() or psa_aead_set_nonce() to + * generate or set the nonce. You should use + * psa_aead_generate_nonce() unless the protocol you are implementing + * requires a specific nonce value. + * -# Call psa_aead_update_ad() zero, one or more times, passing a fragment + * of the non-encrypted additional authenticated data each time. + * -# Call psa_aead_update() zero, one or more times, passing a fragment + * of the message to encrypt each time. + * -# Call psa_aead_finish(). + * + * If an error occurs at any step after a call to psa_aead_encrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_aead_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_aead_finish(). + * - A call to psa_aead_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_aead_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set the key for a multipart authenticated decryption operation. + * + * The sequence of operations to decrypt a message with authentication + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_aead_operation_t, e.g. + * #PSA_AEAD_OPERATION_INIT. + * -# Call psa_aead_decrypt_setup() to specify the algorithm and key. + * -# If needed, call psa_aead_set_lengths() to specify the length of the + * inputs to the subsequent calls to psa_aead_update_ad() and + * psa_aead_update(). See the documentation of psa_aead_set_lengths() + * for details. + * -# Call psa_aead_set_nonce() with the nonce for the decryption. + * -# Call psa_aead_update_ad() zero, one or more times, passing a fragment + * of the non-encrypted additional authenticated data each time. + * -# Call psa_aead_update() zero, one or more times, passing a fragment + * of the ciphertext to decrypt each time. + * -# Call psa_aead_verify(). + * + * If an error occurs at any step after a call to psa_aead_decrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_aead_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_aead_verify(). + * - A call to psa_aead_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_aead_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Generate a random nonce for an authenticated encryption operation. + * + * This function generates a random nonce for the authenticated encryption + * operation with an appropriate size for the chosen algorithm, key type + * and key size. + * + * The application must call psa_aead_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param[out] nonce Buffer where the generated nonce is to be + * written. + * \param nonce_size Size of the \p nonce buffer in bytes. + * \param[out] nonce_length On success, the number of bytes of the + * generated nonce. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active aead encrypt + operation, with no nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p nonce buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, + uint8_t *nonce, + size_t nonce_size, + size_t *nonce_length); + +/** Set the nonce for an authenticated encryption or decryption operation. + * + * This function sets the nonce for the authenticated + * encryption or decryption operation. + * + * The application must call psa_aead_encrypt_setup() or + * psa_aead_decrypt_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note When encrypting, applications should use psa_aead_generate_nonce() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] nonce Buffer containing the nonce to use. + * \param nonce_length Size of the nonce in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with no nonce + * set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p nonce is not acceptable for the chosen algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, + const uint8_t *nonce, + size_t nonce_length); + +/** Declare the lengths of the message and additional data for AEAD. + * + * The application must call this function before calling + * psa_aead_update_ad() or psa_aead_update() if the algorithm for + * the operation requires it. If the algorithm does not require it, + * calling this function is optional, but if this function is called + * then the implementation must enforce the lengths. + * + * You may call this function before or after setting the nonce with + * psa_aead_set_nonce() or psa_aead_generate_nonce(). + * + * - For #PSA_ALG_CCM, calling this function is required. + * - For the other AEAD algorithms defined in this specification, calling + * this function is not required. + * - For vendor-defined algorithm, refer to the vendor documentation. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param ad_length Size of the non-encrypted additional + * authenticated data in bytes. + * \param plaintext_length Size of the plaintext to encrypt in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, and + * psa_aead_update_ad() and psa_aead_update() must not have been + * called yet). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * At least one of the lengths is not acceptable for the chosen + * algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, + size_t ad_length, + size_t plaintext_length); + +/** Pass additional data to an active AEAD operation. + * + * Additional data is authenticated, but not encrypted. + * + * You may call this function multiple times to pass successive fragments + * of the additional data. You may not call this function after passing + * data to encrypt or decrypt with psa_aead_update(). + * + * Before calling this function, you must: + * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). + * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, + * there is no guarantee that the input is valid. Therefore, until + * you have called psa_aead_verify() and it has returned #PSA_SUCCESS, + * treat the input as untrusted and prepare to undo any action that + * depends on the input if psa_aead_verify() returns an error status. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] input Buffer containing the fragment of + * additional data. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, have a nonce + * set, have lengths set if required by the algorithm, and + * psa_aead_update() must not have been called yet). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input length overflows the additional data length that + * was previously specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Encrypt or decrypt a message fragment in an active AEAD operation. + * + * Before calling this function, you must: + * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). + * 3. Call psa_aead_update_ad() to pass all the additional data. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, + * there is no guarantee that the input is valid. Therefore, until + * you have called psa_aead_verify() and it has returned #PSA_SUCCESS: + * - Do not use the output in any way other than storing it in a + * confidential location. If you take any action that depends + * on the tentative decrypted data, this action will need to be + * undone if the input turns out not to be valid. Furthermore, + * if an adversary can observe that this action took place + * (for example through timing), they may be able to use this + * fact as an oracle to decrypt any message encrypted with the + * same key. + * - In particular, do not copy the output anywhere but to a + * memory or storage space that you have exclusive access to. + * + * This function does not require the input to be aligned to any + * particular block boundary. If the implementation can only process + * a whole block at a time, it must consume all the input provided, but + * it may delay the end of the corresponding output until a subsequent + * call to psa_aead_update(), psa_aead_finish() or psa_aead_verify() + * provides sufficient input. The amount of data that can be delayed + * in this way is bounded by #PSA_AEAD_UPDATE_OUTPUT_SIZE. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * This must be at least + * #PSA_AEAD_UPDATE_OUTPUT_SIZE(\c alg, + * \p input_length) where \c alg is the + * algorithm that is being calculated. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, have a nonce + * set, and have lengths set if required by the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * You can determine a sufficient buffer size by calling + * #PSA_AEAD_UPDATE_OUTPUT_SIZE(\c alg, \p input_length) + * where \c alg is the algorithm that is being calculated. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input length overflows the plaintext length that + * was previously specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_update(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting a message in an AEAD operation. + * + * The operation must have been set up with psa_aead_encrypt_setup(). + * + * This function finishes the authentication of the additional data + * formed by concatenating the inputs passed to preceding calls to + * psa_aead_update_ad() with the plaintext formed by concatenating the + * inputs passed to preceding calls to psa_aead_update(). + * + * This function has two output buffers: + * - \p ciphertext contains trailing ciphertext that was buffered from + * preceding calls to psa_aead_update(). + * - \p tag contains the authentication tag. Its length is always + * #PSA_AEAD_TAG_LENGTH(\c alg) where \c alg is the AEAD algorithm + * that the operation performs. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param[out] ciphertext Buffer where the last part of the ciphertext + * is to be written. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be at least + * #PSA_AEAD_FINISH_OUTPUT_SIZE(\c alg) where + * \c alg is the algorithm that is being + * calculated. + * \param[out] ciphertext_length On success, the number of bytes of + * returned ciphertext. + * \param[out] tag Buffer where the authentication tag is + * to be written. + * \param tag_size Size of the \p tag buffer in bytes. + * This must be at least + * #PSA_AEAD_TAG_LENGTH(\c alg) where \c alg is + * the algorithm that is being calculated. + * \param[out] tag_length On success, the number of bytes + * that make up the returned tag. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active encryption + * operation with a nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p ciphertext or \p tag buffer is too small. + * You can determine a sufficient buffer size for \p ciphertext by + * calling #PSA_AEAD_FINISH_OUTPUT_SIZE(\c alg) + * where \c alg is the algorithm that is being calculated. + * You can determine a sufficient buffer size for \p tag by + * calling #PSA_AEAD_TAG_LENGTH(\c alg). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update() so far is + * less than the plaintext length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_finish(psa_aead_operation_t *operation, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length, + uint8_t *tag, + size_t tag_size, + size_t *tag_length); + +/** Finish authenticating and decrypting a message in an AEAD operation. + * + * The operation must have been set up with psa_aead_decrypt_setup(). + * + * This function finishes the authenticated decryption of the message + * components: + * + * - The additional data consisting of the concatenation of the inputs + * passed to preceding calls to psa_aead_update_ad(). + * - The ciphertext consisting of the concatenation of the inputs passed to + * preceding calls to psa_aead_update(). + * - The tag passed to this function call. + * + * If the authentication tag is correct, this function outputs any remaining + * plaintext and reports success. If the authentication tag is not correct, + * this function returns #PSA_ERROR_INVALID_SIGNATURE. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual tag and the expected tag is performed + * in constant time. + * + * \param[in,out] operation Active AEAD operation. + * \param[out] plaintext Buffer where the last part of the plaintext + * is to be written. This is the remaining data + * from previous calls to psa_aead_update() + * that could not be processed until the end + * of the input. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be at least + * #PSA_AEAD_VERIFY_OUTPUT_SIZE(\c alg) where + * \c alg is the algorithm that is being + * calculated. + * \param[out] plaintext_length On success, the number of bytes of + * returned plaintext. + * \param[in] tag Buffer containing the authentication tag. + * \param tag_length Size of the \p tag buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculations were successful, but the authentication tag is + * not correct. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active decryption + * operation with a nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p plaintext buffer is too small. + * You can determine a sufficient buffer size for \p plaintext by + * calling #PSA_AEAD_VERIFY_OUTPUT_SIZE(\c alg) + * where \c alg is the algorithm that is being calculated. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update() so far is + * less than the plaintext length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_verify(psa_aead_operation_t *operation, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length, + const uint8_t *tag, + size_t tag_length); + +/** Abort an AEAD operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_aead_encrypt_setup() or psa_aead_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized as described in #psa_aead_operation_t. + * + * In particular, calling psa_aead_abort() after the operation has been + * terminated by a call to psa_aead_abort(), psa_aead_finish() or + * psa_aead_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized AEAD operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_abort(psa_aead_operation_t *operation); + +/**@}*/ + +/** \defgroup asymmetric Asymmetric cryptography + * @{ + */ + +/** + * \brief Sign a hash or short message with a private key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param handle Handle to the key to use for the operation. + * It must be an asymmetric key pair. + * \param alg A signature algorithm that is compatible with + * the type of \p handle. + * \param[in] hash The hash or message to sign. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p handle. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_sign_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length); + +/** + * \brief Verify the signature a hash or short message using a public key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param handle Handle to the key to use for the operation. + * It must be a public key or an asymmetric key pair. + * \param alg A signature algorithm that is compatible with + * the type of \p handle. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was perfomed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_verify_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length); + +/** + * \brief Encrypt a short message with a public key. + * + * \param handle Handle to the key to use for the operation. + * It must be a public key or an asymmetric + * key pair. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p handle. + * \param[in] input The message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the encrypted message is to + * be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p handle. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** + * \brief Decrypt a short message with a private key. + * + * \param handle Handle to the key to use for the operation. + * It must be an asymmetric key pair. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p handle. + * \param[in] input The message to decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p handle. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INVALID_PADDING + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup key_derivation Key derivation and pseudorandom generation + * @{ + */ + +/** The type of the state data structure for key derivation operations. + * + * Before calling any function on a key derivation operation object, the + * application must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_derivation_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_derivation_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_DERIVATION_OPERATION_INIT, + * for example: + * \code + * psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_key_derivation_operation_init() + * to the structure, for example: + * \code + * psa_key_derivation_operation_t operation; + * operation = psa_key_derivation_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. + */ +typedef struct psa_key_derivation_s psa_key_derivation_operation_t; + +/** \def PSA_KEY_DERIVATION_OPERATION_INIT + * + * This macro returns a suitable initializer for a key derivation operation + * object of type #psa_key_derivation_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_DERIVATION_OPERATION_INIT {0} +#endif + +/** Return an initial value for a key derivation operation object. + */ +static psa_key_derivation_operation_t psa_key_derivation_operation_init(void); + +/** Set up a key derivation operation. + * + * A key derivation algorithm takes some inputs and uses them to generate + * a byte stream in a deterministic way. + * This byte stream can be used to produce keys and other + * cryptographic material. + * + * To derive a key: + * -# Start with an initialized object of type #psa_key_derivation_operation_t. + * -# Call psa_key_derivation_setup() to select the algorithm. + * -# Provide the inputs for the key derivation by calling + * psa_key_derivation_input_bytes() or psa_key_derivation_input_key() + * as appropriate. Which inputs are needed, in what order, and whether + * they may be keys and if so of what type depends on the algorithm. + * -# Optionally set the operation's maximum capacity with + * psa_key_derivation_set_capacity(). You may do this before, in the middle + * of or after providing inputs. For some algorithms, this step is mandatory + * because the output depends on the maximum capacity. + * -# To derive a key, call psa_key_derivation_output_key(). + * To derive a byte string for a different purpose, call + * psa_key_derivation_output_bytes(). + * Successive calls to these functions use successive output bytes + * calculated by the key derivation algorithm. + * -# Clean up the key derivation operation object with + * psa_key_derivation_abort(). + * + * If this function returns an error, the key derivation operation object is + * not changed. + * + * If an error occurs at any step after a call to psa_key_derivation_setup(), + * the operation will need to be reset by a call to psa_key_derivation_abort(). + * + * Implementations must reject an attempt to derive a key of size 0. + * + * \param[in,out] operation The key derivation operation object + * to set up. It must + * have been initialized but not set up yet. + * \param alg The key derivation algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_DERIVATION(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c alg is not a key derivation algorithm. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_setup( + psa_key_derivation_operation_t *operation, + psa_algorithm_t alg); + +/** Retrieve the current capacity of a key derivation operation. + * + * The capacity of a key derivation is the maximum number of bytes that it can + * return. When you get *N* bytes of output from a key derivation operation, + * this reduces its capacity by *N*. + * + * \param[in] operation The operation to query. + * \param[out] capacity On success, the capacity of the operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_get_capacity( + const psa_key_derivation_operation_t *operation, + size_t *capacity); + +/** Set the maximum capacity of a key derivation operation. + * + * The capacity of a key derivation operation is the maximum number of bytes + * that the key derivation operation can return from this point onwards. + * + * \param[in,out] operation The key derivation operation object to modify. + * \param capacity The new capacity of the operation. + * It must be less or equal to the operation's + * current capacity. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p capacity is larger than the operation's current capacity. + * In this case, the operation object remains valid and its capacity + * remains unchanged. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_set_capacity( + psa_key_derivation_operation_t *operation, + size_t capacity); + +/** Use the maximum possible capacity for a key derivation operation. + * + * Use this value as the capacity argument when setting up a key derivation + * to indicate that the operation should have the maximum possible capacity. + * The value of the maximum possible capacity depends on the key derivation + * algorithm. + */ +#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t)(-1)) + +/** Provide an input for key derivation or key agreement. + * + * Which inputs are required and in what order depends on the algorithm. + * Refer to the documentation of each key derivation or key agreement + * algorithm for information. + * + * This function passes direct inputs, which is usually correct for + * non-secret inputs. To pass a secret input, which should be in a key + * object, call psa_key_derivation_input_key() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() and must not + * have produced any output yet. + * \param step Which step the input data is for. + * \param[in] data Input data to use. + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step is not compatible with the operation's algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow direct inputs. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this input \p step. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_input_bytes( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length); + +/** Provide an input for key derivation in the form of a key. + * + * Which inputs are required and in what order depends on the algorithm. + * Refer to the documentation of each key derivation or key agreement + * algorithm for information. + * + * This function obtains input from a key object, which is usually correct for + * secret inputs or for non-secret personalization strings kept in the key + * store. To pass a non-secret parameter which is not in the key store, + * call psa_key_derivation_input_bytes() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() and must not + * have produced any output yet. + * \param step Which step the input data is for. + * \param handle Handle to the key. It must have an + * appropriate type for \p step and must + * allow the usage #PSA_KEY_USAGE_DERIVE. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step is not compatible with the operation's algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow key inputs of the given type + * or does not allow key inputs at all. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this input \p step. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_input_key( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_handle_t handle); + +/** Perform a key agreement and use the shared secret as input to a key + * derivation. + * + * A key agreement algorithm takes two inputs: a private key \p private_key + * a public key \p peer_key. + * The result of this function is passed as input to a key derivation. + * The output of this key derivation can be extracted by reading from the + * resulting operation to produce keys and other cryptographic material. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() with a + * key agreement and derivation algorithm + * \c alg (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_AGREEMENT(\c alg) is true + * and #PSA_ALG_IS_RAW_KEY_AGREEMENT(\c alg) + * is false). + * The operation must be ready for an + * input of the type given by \p step. + * \param step Which step the input data is for. + * \param private_key Handle to the private key to use. + * \param[in] peer_key Public key of the peer. The peer key must be in the + * same format that psa_import_key() accepts for the + * public key type corresponding to the type of + * private_key. That is, this function performs the + * equivalent of + * #psa_import_key(..., + * `peer_key`, `peer_key_length`) where + * with key attributes indicating the public key + * type corresponding to the type of `private_key`. + * For example, for EC keys, this means that peer_key + * is interpreted as a point on the curve that the + * private key is on. The standard formats for public + * keys are documented in the documentation of + * psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this key agreement \p step. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c private_key is not compatible with \c alg, + * or \p peer_key is not valid for \c alg or not compatible with + * \c private_key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow an input resulting from a key agreement. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_key_agreement( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length); + +/** Read some data from a key derivation operation. + * + * This function calculates output bytes from a key derivation algorithm and + * return those bytes. + * If you view the key derivation's output as a stream of bytes, this + * function destructively reads the requested number of bytes from the + * stream. + * The operation's capacity decreases by the number of bytes read. + * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to read from. + * \param[out] output Buffer where the output will be written. + * \param output_length Number of bytes to output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * The operation's capacity was less than + * \p output_length bytes. Note that in this case, + * no output is written to the output buffer. + * The operation's capacity is set to 0, thus + * subsequent calls to this function will not + * succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_output_bytes( + psa_key_derivation_operation_t *operation, + uint8_t *output, + size_t output_length); + +/** Derive a key from an ongoing key derivation operation. + * + * This function calculates output bytes from a key derivation algorithm + * and uses those bytes to generate a key deterministically. + * The key's location, usage policy, type and size are taken from + * \p attributes. + * + * If you view the key derivation's output as a stream of bytes, this + * function destructively reads as many bytes as required from the + * stream. + * The operation's capacity decreases by the number of bytes read. + * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * How much output is produced and consumed from the operation, and how + * the key is derived, depends on the key type: + * + * - For key types for which the key is an arbitrary sequence of bytes + * of a given size, this function is functionally equivalent to + * calling #psa_key_derivation_output_bytes + * and passing the resulting output to #psa_import_key. + * However, this function has a security benefit: + * if the implementation provides an isolation boundary then + * the key material is not exposed outside the isolation boundary. + * As a consequence, for these key types, this function always consumes + * exactly (\p bits / 8) bytes from the operation. + * The following key types defined in this specification follow this scheme: + * + * - #PSA_KEY_TYPE_AES; + * - #PSA_KEY_TYPE_ARC4; + * - #PSA_KEY_TYPE_CAMELLIA; + * - #PSA_KEY_TYPE_DERIVE; + * - #PSA_KEY_TYPE_HMAC. + * + * - For ECC keys on a Montgomery elliptic curve + * (#PSA_KEY_TYPE_ECC_KEY_PAIR(\c curve) where \c curve designates a + * Montgomery curve), this function always draws a byte string whose + * length is determined by the curve, and sets the mandatory bits + * accordingly. That is: + * + * - Curve25519 (#PSA_ECC_CURVE_MONTGOMERY, 255 bits): draw a 32-byte + * string and process it as specified in RFC 7748 §5. + * - Curve448 (#PSA_ECC_CURVE_MONTGOMERY, 448 bits): draw a 56-byte + * string and process it as specified in RFC 7748 §5. + * + * - For key types for which the key is represented by a single sequence of + * \p bits bits with constraints as to which bit sequences are acceptable, + * this function draws a byte string of length (\p bits / 8) bytes rounded + * up to the nearest whole number of bytes. If the resulting byte string + * is acceptable, it becomes the key, otherwise the drawn bytes are discarded. + * This process is repeated until an acceptable byte string is drawn. + * The byte string drawn from the operation is interpreted as specified + * for the output produced by psa_export_key(). + * The following key types defined in this specification follow this scheme: + * + * - #PSA_KEY_TYPE_DES. + * Force-set the parity bits, but discard forbidden weak keys. + * For 2-key and 3-key triple-DES, the three keys are generated + * successively (for example, for 3-key triple-DES, + * if the first 8 bytes specify a weak key and the next 8 bytes do not, + * discard the first 8 bytes, use the next 8 bytes as the first key, + * and continue reading output from the operation to derive the other + * two keys). + * - Finite-field Diffie-Hellman keys (#PSA_KEY_TYPE_DH_KEY_PAIR(\c group) + * where \c group designates any Diffie-Hellman group) and + * ECC keys on a Weierstrass elliptic curve + * (#PSA_KEY_TYPE_ECC_KEY_PAIR(\c curve) where \c curve designates a + * Weierstrass curve). + * For these key types, interpret the byte string as integer + * in big-endian order. Discard it if it is not in the range + * [0, *N* - 2] where *N* is the boundary of the private key domain + * (the prime *p* for Diffie-Hellman, the subprime *q* for DSA, + * or the order of the curve's base point for ECC). + * Add 1 to the resulting integer and use this as the private key *x*. + * This method allows compliance to NIST standards, specifically + * the methods titled "key-pair generation by testing candidates" + * in NIST SP 800-56A §5.6.1.1.4 for Diffie-Hellman, + * in FIPS 186-4 §B.1.2 for DSA, and + * in NIST SP 800-56A §5.6.1.2.2 or + * FIPS 186-4 §B.4.2 for elliptic curve keys. + * + * - For other key types, including #PSA_KEY_TYPE_RSA_KEY_PAIR, + * the way in which the operation output is consumed is + * implementation-defined. + * + * In all cases, the data that is read is discarded from the operation. + * The operation's capacity is decreased by the number of bytes read. + * + * For algorithms that take an input step #PSA_KEY_DERIVATION_INPUT_SECRET, + * the input to that step must be provided with psa_key_derivation_input_key(). + * Future versions of this specification may include additional restrictions + * on the derived key based on the attributes and strength of the secret key. + * + * \param[in] attributes The attributes for the new key. + * \param[in,out] operation The key derivation operation object to read from. + * \param[out] handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * There was not enough data to create the desired key. + * Note that in this case, no output is written to the output buffer. + * The operation's capacity is set to 0, thus subsequent calls to + * this function will not succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular location. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The provided key attributes are not valid for the operation. + * \retval #PSA_ERROR_NOT_PERMITTED + * The #PSA_KEY_DERIVATION_INPUT_SECRET input was not provided through + * a key. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_output_key( + const psa_key_attributes_t *attributes, + psa_key_derivation_operation_t *operation, + psa_key_handle_t *handle); + +/** Abort a key derivation operation. + * + * Aborting an operation frees all associated resources except for the \c + * operation structure itself. Once aborted, the operation object can be reused + * for another operation by calling psa_key_derivation_setup() again. + * + * This function may be called at any time after the operation + * object has been initialized as described in #psa_key_derivation_operation_t. + * + * In particular, it is valid to call psa_key_derivation_abort() twice, or to + * call psa_key_derivation_abort() on an operation that has not been set up. + * + * \param[in,out] operation The operation to abort. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_abort( + psa_key_derivation_operation_t *operation); + +/** Perform a key agreement and return the raw shared secret. + * + * \warning The raw result of a key agreement algorithm such as finite-field + * Diffie-Hellman or elliptic curve Diffie-Hellman has biases and should + * not be used directly as key material. It should instead be passed as + * input to a key derivation algorithm. To chain a key agreement with + * a key derivation, use psa_key_derivation_key_agreement() and other + * functions from the key derivation interface. + * + * \param alg The key agreement algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_RAW_KEY_AGREEMENT(\p alg) + * is true). + * \param private_key Handle to the private key to use. + * \param[in] peer_key Public key of the peer. It must be + * in the same format that psa_import_key() + * accepts. The standard formats for public + * keys are documented in the documentation + * of psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p alg is not a key agreement algorithm + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p private_key is not compatible with \p alg, + * or \p peer_key is not valid for \p alg or not compatible with + * \p private_key. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p output_size is too small + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not a supported key agreement algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup random Random generation + * @{ + */ + +/** + * \brief Generate random bytes. + * + * \warning This function **can** fail! Callers MUST check the return status + * and MUST NOT use the content of the output buffer if the return + * status is not #PSA_SUCCESS. + * + * \note To generate a key, use psa_generate_key() instead. + * + * \param[out] output Output buffer for the generated data. + * \param output_size Number of bytes to generate and output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_random(uint8_t *output, + size_t output_size); + +/** + * \brief Generate a key or key pair. + * + * The key is generated randomly. + * Its location, usage policy, type and size are taken from \p attributes. + * + * Implementations must reject an attempt to generate a key of size 0. + * + * The following type-specific considerations apply: + * - For RSA keys (#PSA_KEY_TYPE_RSA_KEY_PAIR), + * the public exponent is 65537. + * The modulus is a product of two probabilistic primes + * between 2^{n-1} and 2^n where n is the bit size specified in the + * attributes. + * + * \param[in] attributes The attributes for the new key. + * \param[out] handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, + psa_key_handle_t *handle); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +/* The file "crypto_sizes.h" contains definitions for size calculation + * macros whose definitions are implementation-specific. */ +#include "crypto_sizes.h" + +/* The file "crypto_struct.h" contains definitions for + * implementation-specific structs that are declared above. */ +#include "crypto_struct.h" + +/* The file "crypto_extra.h" contains vendor-specific definitions. This + * can include vendor-defined algorithms, extra functions, etc. */ +#include "crypto_extra.h" + +#endif /* PSA_CRYPTO_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_accel_driver.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_accel_driver.h new file mode 100644 index 00000000..4a540f0f --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_accel_driver.h @@ -0,0 +1,823 @@ +/** + * \file psa/crypto_accel_driver.h + * \brief PSA cryptography accelerator driver module + * + * This header declares types and function signatures for cryptography + * drivers that access key material directly. This is meant for + * on-chip cryptography accelerators. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ +#ifndef PSA_CRYPTO_ACCEL_DRIVER_H +#define PSA_CRYPTO_ACCEL_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup driver_digest Hardware-Accelerated Message Digests + * + * Generation and authentication of Message Digests (aka hashes) must be done + * in parts using the following sequence: + * - `psa_drv_hash_setup_t` + * - `psa_drv_hash_update_t` + * - `psa_drv_hash_update_t` + * - ... + * - `psa_drv_hash_finish_t` + * + * If a previously started Message Digest operation needs to be terminated + * before the `psa_drv_hash_finish_t` operation is complete, it should be aborted + * by the `psa_drv_hash_abort_t`. Failure to do so may result in allocated + * resources not being freed or in other undefined behavior. + */ +/**@{*/ + +/** \brief The hardware-specific hash context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here + */ +typedef struct psa_drv_hash_context_s psa_drv_hash_context_t; + +/** \brief The function prototype for the start operation of a hash (message + * digest) operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__setup + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying hash function + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific hash context + * + * \retval PSA_SUCCESS Success. + */ +typedef psa_status_t (*psa_drv_hash_setup_t)(psa_drv_hash_context_t *p_context); + +/** \brief The function prototype for the update operation of a hash (message + * digest) operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__update + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm + * + * \param[in,out] p_context A hardware-specific structure for the + * previously-established hash operation to be + * continued + * \param[in] p_input A buffer containing the message to be appended + * to the hash operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_hash_update_t)(psa_drv_hash_context_t *p_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief The function prototype for the finish operation of a hash (message + * digest) operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__finish + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started hash operation to be + * fiinished + * \param[out] p_output A buffer where the generated digest will be + * placed + * \param[in] output_size The size in bytes of the buffer that has been + * allocated for the `p_output` buffer + * \param[out] p_output_length The number of bytes placed in `p_output` after + * success + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_hash_finish_t)(psa_drv_hash_context_t *p_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief The function prototype for the abort operation of a hash (message + * digest) operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_hash__abort + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm + * + * \param[in,out] p_context A hardware-specific structure for the previously + * started hash operation to be aborted + */ +typedef void (*psa_drv_hash_abort_t)(psa_drv_hash_context_t *p_context); + +/**@}*/ + +/** \defgroup accel_mac Hardware-Accelerated Message Authentication Code + * Generation and authentication of Message Authentication Codes (MACs) using + * cryptographic accelerators can be done either as a single function call (via the + * `psa_drv_accel_mac_generate_t` or `psa_drv_accel_mac_verify_t` + * functions), or in parts using the following sequence: + * - `psa_drv_accel_mac_setup_t` + * - `psa_drv_accel_mac_update_t` + * - `psa_drv_accel_mac_update_t` + * - ... + * - `psa_drv_accel_mac_finish_t` or `psa_drv_accel_mac_finish_verify_t` + * + * If a previously started MAC operation needs to be terminated, it + * should be done so by the `psa_drv_accel_mac_abort_t`. Failure to do so may + * result in allocated resources not being freed or in other undefined + * behavior. + * + */ +/**@{*/ + +/** \brief The hardware-accelerator-specific MAC context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here. + */ +typedef struct psa_drv_accel_mac_context_s psa_drv_accel_mac_context_t; + +/** \brief The function prototype for the setup operation of a + * hardware-accelerated MAC operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac___setup + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying primitive, and `MAC_VARIANT` + * is the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific MAC context + * \param[in] p_key A buffer containing the cleartext key material + * to be used in the operation + * \param[in] key_length The size in bytes of the key material + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_accel_mac_setup_t)(psa_drv_accel_mac_context_t *p_context, + const uint8_t *p_key, + size_t key_length); + +/** \brief The function prototype for the update operation of a + * hardware-accelerated MAC operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac___update + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` + * is the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously-established MAC operation to be + * continued + * \param[in] p_input A buffer containing the message to be appended + * to the MAC operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_accel_mac_update_t)(psa_drv_accel_mac_context_t *p_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief The function prototype for the finish operation of a + * hardware-accelerated MAC operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac___finish + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * finished + * \param[out] p_mac A buffer where the generated MAC will be placed + * \param[in] mac_length The size in bytes of the buffer that has been + * allocated for the `p_mac` buffer + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_accel_mac_finish_t)(psa_drv_accel_mac_context_t *p_context, + uint8_t *p_mac, + size_t mac_length); + +/** \brief The function prototype for the finish and verify operation of a + * hardware-accelerated MAC operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac___finish_verify + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * verified and finished + * \param[in] p_mac A buffer containing the MAC that will be used + * for verification + * \param[in] mac_length The size in bytes of the data in the `p_mac` + * buffer + * + * \retval PSA_SUCCESS + * The operation completed successfully and the comparison matched + */ +typedef psa_status_t (*psa_drv_accel_mac_finish_verify_t)(psa_drv_accel_mac_context_t *p_context, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief The function prototype for the abort operation for a previously + * started hardware-accelerated MAC operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac___abort + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started MAC operation to be + * aborted + * + */ +typedef psa_status_t (*psa_drv_accel_mac_abort_t)(psa_drv_accel_mac_context_t *p_context); + +/** \brief The function prototype for the one-shot operation of a + * hardware-accelerated MAC operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac__ + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in] p_input A buffer containing the data to be MACed + * \param[in] input_length The length in bytes of the `p_input` data + * \param[in] p_key A buffer containing the key material to be used + * for the MAC operation + * \param[in] key_length The length in bytes of the `p_key` data + * \param[in] alg The algorithm to be performed + * \param[out] p_mac The buffer where the resulting MAC will be placed + * upon success + * \param[in] mac_length The length in bytes of the `p_mac` buffer + */ +typedef psa_status_t (*psa_drv_accel_mac_t)(const uint8_t *p_input, + size_t input_length, + const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + uint8_t *p_mac, + size_t mac_length); + +/** \brief The function prototype for the one-shot hardware-accelerated MAC + * Verify operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_mac___verify + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the underlying algorithm, and `MAC_VARIANT` is + * the specific variant of a MAC operation (such as HMAC or CMAC) + * + * \param[in] p_input A buffer containing the data to be MACed + * \param[in] input_length The length in bytes of the `p_input` data + * \param[in] p_key A buffer containing the key material to be used + * for the MAC operation + * \param[in] key_length The length in bytes of the `p_key` data + * \param[in] alg The algorithm to be performed + * \param[in] p_mac The MAC data to be compared + * \param[in] mac_length The length in bytes of the `p_mac` buffer + * + * \retval PSA_SUCCESS + * The operation completed successfully and the comparison matched + */ +typedef psa_status_t (*psa_drv_accel_mac_verify_t)(const uint8_t *p_input, + size_t input_length, + const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + const uint8_t *p_mac, + size_t mac_length); +/**@}*/ + +/** \defgroup accel_cipher Hardware-Accelerated Block Ciphers + * Encryption and Decryption using hardware-acceleration in block modes other + * than ECB must be done in multiple parts, using the following flow: + * - `psa_drv_accel_ciphersetup_t` + * - `psa_drv_accel_cipher_set_iv_t` (optional depending upon block mode) + * - `psa_drv_accel_cipher_update_t` + * - `psa_drv_accel_cipher_update_t` + * - ... + * - `psa_drv_accel_cipher_finish_t` + * + * If a previously started hardware-accelerated Cipher operation needs to be + * terminated, it should be done so by the `psa_drv_accel_cipher_abort_t`. + * Failure to do so may result in allocated resources not being freed or in + * other undefined behavior. + */ +/**@{*/ + +/** \brief The hardware-accelerator-specific cipher context structure + * + * The contents of this structure are implementation dependent and are + * therefore not described here. + */ +typedef struct psa_drv_accel_cipher_context_s psa_drv_accel_cipher_context_t; + +/** \brief The function prototype for the setup operation of + * hardware-accelerated block cipher operations. + * Functions that implement this prototype should be named in the following + * conventions: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_cipher_setup__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * For stream ciphers: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_cipher_setup_ + * ~~~~~~~~~~~~~ + * Where `CIPHER_NAME` is the name of a stream cipher (i.e. RC4) + * + * \param[in,out] p_context A structure that will contain the + * hardware-specific cipher context + * \param[in] direction Indicates if the operation is an encrypt or a + * decrypt + * \param[in] p_key_data A buffer containing the cleartext key material + * to be used in the operation + * \param[in] key_data_size The size in bytes of the key material + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_cipher_setup_t)(psa_drv_accel_cipher_context_t *p_context, + psa_encrypt_or_decrypt_t direction, + const uint8_t *p_key_data, + size_t key_data_size); + +/** \brief The function prototype for the set initialization vector operation + * of hardware-accelerated block cipher operations + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_cipher_set_iv__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A structure that contains the previously setup + * hardware-specific cipher context + * \param[in] p_iv A buffer containing the initialization vecotr + * \param[in] iv_length The size in bytes of the contents of `p_iv` + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_cipher_set_iv_t)(psa_drv_accel_cipher_context_t *p_context, + const uint8_t *p_iv, + size_t iv_length); + +/** \brief The function prototype for the update operation of + * hardware-accelerated block cipher operations. + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_cipher_update__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * \param[in] p_input A buffer containing the data to be + * encrypted or decrypted + * \param[in] input_size The size in bytes of the `p_input` buffer + * \param[out] p_output A caller-allocated buffer where the + * generated output will be placed + * \param[in] output_size The size in bytes of the `p_output` buffer + * \param[out] p_output_length After completion, will contain the number + * of bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_cipher_update_t)(psa_drv_accel_cipher_context_t *p_context, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief The function prototype for the finish operation of + * hardware-accelerated block cipher operations. + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_cipher_finish__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * \param[out] p_output A caller-allocated buffer where the generated + * output will be placed + * \param[in] output_size The size in bytes of the `p_output` buffer + * \param[out] p_output_length After completion, will contain the number of + * bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_cipher_finish_t)(psa_drv_accel_cipher_context_t *p_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief The function prototype for the abort operation of + * hardware-accelerated block cipher operations. + * + * Functions that implement the following prototype should be named in the + * following convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_cipher_abort__ + * ~~~~~~~~~~~~~ + * Where + * - `CIPHER_NAME` is the name of the underlying block cipher (i.e. AES or DES) + * - `MODE` is the block mode of the cipher operation (i.e. CBC or CTR) + * + * \param[in,out] p_context A hardware-specific structure for the + * previously started cipher operation + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_cipher_abort_t)(psa_drv_accel_cipher_context_t *p_context); + +/**@}*/ + +/** \defgroup accel_aead Hardware-Accelerated Authenticated Encryption with Additional Data + * + * Hardware-accelerated Authenticated Encryption with Additional Data (AEAD) + * operations must be done in one function call. While this creates a burden + * for implementers as there must be sufficient space in memory for the entire + * message, it prevents decrypted data from being made available before the + * authentication operation is complete and the data is known to be authentic. + */ +/**@{*/ + +/** \brief The function prototype for the hardware-accelerated authenticated + * encryption operation. + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_aead__encrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the AEAD algorithm + * + * \param[in] p_key A pointer to the key material + * \param[in] key_length The size in bytes of the key material + * \param[in] alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] nonce Nonce or IV to use + * \param[in] nonce_length Size of the `nonce` buffer in bytes + * \param[in] additional_data Additional data that will be MACed + * but not encrypted. + * \param[in] additional_data_length Size of `additional_data` in bytes + * \param[in] plaintext Data that will be MACed and + * encrypted. + * \param[in] plaintext_length Size of `plaintext` in bytes + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is + * not part of this output. For algorithms + * where the encrypted data and the + * authentication tag are defined as + * separate outputs, the authentication + * tag is appended to the encrypted data. + * \param[in] ciphertext_size Size of the `ciphertext` buffer in + * bytes + * This must be at least + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(`alg`, + * `plaintext_length`). + * \param[out] ciphertext_length On success, the size of the output in + * the `ciphertext` buffer + * + * \retval #PSA_SUCCESS + * + */ +typedef psa_status_t (*psa_drv_accel_aead_encrypt_t)(const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length); + +/** \brief The function prototype for the hardware-accelerated authenticated + * decryption operation. + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_aead__decrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the AEAD algorithm + * \param[in] p_key A pointer to the key material + * \param[in] key_length The size in bytes of the key material + * \param[in] alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] nonce Nonce or IV to use + * \param[in] nonce_length Size of the `nonce` buffer in bytes + * \param[in] additional_data Additional data that has been MACed + * but not encrypted + * \param[in] additional_data_length Size of `additional_data` in bytes + * \param[in] ciphertext Data that has been MACed and + * encrypted + * For algorithms where the encrypted data + * and the authentication tag are defined + * as separate inputs, the buffer must + * contain the encrypted data followed by + * the authentication tag. + * \param[in] ciphertext_length Size of `ciphertext` in bytes + * \param[out] plaintext Output buffer for the decrypted data + * \param[in] plaintext_size Size of the `plaintext` buffer in + * bytes + * This must be at least + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(`alg`, + * `ciphertext_length`). + * \param[out] plaintext_length On success, the size of the output + * in the \b plaintext buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_accel_aead_decrypt_t)(const uint8_t *p_key, + size_t key_length, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length); + +/**@}*/ + +/** \defgroup accel_asymmetric Hardware-Accelerated Asymmetric Cryptography + * + * Since the amount of data that can (or should) be encrypted or signed using + * asymmetric keys is limited by the key size, hardware-accelerated asymmetric + * key operations must be done in single function calls. + */ +/**@{*/ + + +/** + * \brief The function prototype for the hardware-accelerated asymmetric sign + * operation. + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_asymmetric__sign + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the signing algorithm + * + * This function supports any asymmetric-key output from psa_export_key() as + * the buffer in \p p_key. Refer to the documentation of \ref + * psa_export_key() for the formats. + * + * \param[in] p_key A buffer containing the private key + * material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg A signature algorithm that is compatible + * with the type of `p_key` + * \param[in] p_hash The hash or message to sign + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[out] p_signature Buffer where the signature is to be written + * \param[in] signature_size Size of the `p_signature` buffer in bytes + * \param[out] p_signature_length On success, the number of bytes + * that make up the returned signature value + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_asymmetric_sign_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + psa_key_type_t key_type, + const uint8_t *p_hash, + size_t hash_length, + uint8_t *p_signature, + size_t signature_size, + size_t *p_signature_length); + +/** + * \brief The function prototype for the hardware-accelerated signature verify + * operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_asymmetric__verify + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the signing algorithm + * + * This function supports any output from \ref psa_export_public_key() as the + * buffer in \p p_key. Refer to the documentation of \ref + * psa_export_public_key() for the format of public keys and to the + * documentation of \ref psa_export_key() for the format for other key types. + * + * \param[in] p_key A buffer containing the public key material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg A signature algorithm that is compatible with + * the type of `key` + * \param[in] p_hash The hash or message whose signature is to be + * verified + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[in] p_signature Buffer containing the signature to verify + * \param[in] signature_length Size of the `p_signature` buffer in bytes + * + * \retval PSA_SUCCESS + * The signature is valid. + */ +typedef psa_status_t (*psa_drv_accel_asymmetric_verify_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + psa_key_type_t key_type, + const uint8_t *p_hash, + size_t hash_length, + const uint8_t *p_signature, + size_t signature_length); + +/** + * \brief The function prototype for the hardware-accelerated asymmetric + * encrypt operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_asymmetric__encrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the encryption algorithm + * + * This function supports any output from \ref psa_export_public_key() as the + * buffer in \p p_key. Refer to the documentation of \ref + * psa_export_public_key() for the format of public keys and to the + * documentation of \ref psa_export_key() for the format for other key types. + * + * \param[in] p_key A buffer containing the public key material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to encrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL` + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the encrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_asymmetric_encrypt_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + psa_key_type_t key_type, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief The function prototype for the hardware=acce;erated asymmetric + * decrypt operation + * + * Functions that implement this prototype should be named in the following + * convention: + * ~~~~~~~~~~~~~{.c} + * psa_drv_accel_asymmetric__decrypt + * ~~~~~~~~~~~~~ + * Where `ALGO` is the name of the encryption algorithm + * + * This function supports any asymmetric-key output from psa_export_key() as + * the buffer in \p p_key. Refer to the documentation of \ref + * psa_export_key() for the formats. + * + * \param[in] p_key A buffer containing the private key material + * \param[in] key_size The size in bytes of the `p_key` data + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to decrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0 + * \param[out] p_output Buffer where the decrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_accel_asymmetric_decrypt_t)(const uint8_t *p_key, + size_t key_size, + psa_algorithm_t alg, + psa_key_type_t key_type, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_ACCEL_DRIVER_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_compat.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_compat.h new file mode 100644 index 00000000..1ed5f052 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_compat.h @@ -0,0 +1,196 @@ +/** + * \file psa/crypto_compat.h + * + * \brief PSA cryptography module: Backward compatibility aliases + * + * This header declares alternative names for macro and functions. + * New application code should not use these names. + * These names may be removed in a future version of Mbed Crypto. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + */ +/* + * Copyright (C) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_COMPAT_H +#define PSA_CRYPTO_COMPAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +/* + * Mechanism for declaring deprecated values + */ +#if defined(MBEDTLS_DEPRECATED_WARNING) && !defined(MBEDTLS_PSA_DEPRECATED) +#define MBEDTLS_PSA_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_PSA_DEPRECATED +#endif + +typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t; +typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t; +typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t; +typedef MBEDTLS_PSA_DEPRECATED psa_ecc_curve_t mbedtls_deprecated_psa_ecc_curve_t; +typedef MBEDTLS_PSA_DEPRECATED psa_dh_group_t mbedtls_deprecated_psa_dh_group_t; + +#define MBEDTLS_DEPRECATED_CONSTANT( type, value ) \ + ( (mbedtls_deprecated_##type) ( value ) ) + +/* + * Deprecated PSA Crypto error code definitions (PSA Crypto API <= 1.0 beta2) + */ +#define PSA_ERROR_UNKNOWN_ERROR \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_GENERIC_ERROR ) +#define PSA_ERROR_OCCUPIED_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_ALREADY_EXISTS ) +#define PSA_ERROR_EMPTY_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_DOES_NOT_EXIST ) +#define PSA_ERROR_INSUFFICIENT_CAPACITY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_INSUFFICIENT_DATA ) +#define PSA_ERROR_TAMPERING_DETECTED \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_CORRUPTION_DETECTED ) + +/* + * Deprecated PSA Crypto numerical encodings (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_KEY_USAGE_SIGN \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH ) +#define PSA_KEY_USAGE_VERIFY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH ) + +/* + * Deprecated PSA Crypto size calculation macros (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGNATURE_MAX_SIZE ) +#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) ) + +/* + * Deprecated PSA Crypto function names (PSA Crypto API <= 1.0 beta3) + */ +MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_sign( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ) +{ + return psa_sign_hash( key, alg, hash, hash_length, signature, signature_size, signature_length ); +} + +MBEDTLS_PSA_DEPRECATED static inline psa_status_t psa_asymmetric_verify( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length ) +{ + return psa_verify_hash( key, alg, hash, hash_length, signature, signature_length ); +} + + + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +/* + * Size-specific elliptic curve and Diffie-Hellman group names + */ +#define PSA_ECC_CURVE_SECP160K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP192K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP224K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP256K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_K1 ) +#define PSA_ECC_CURVE_SECP160R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP192R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP224R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP256R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP384R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP521R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R1 ) +#define PSA_ECC_CURVE_SECP160R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECP_R2 ) +#define PSA_ECC_CURVE_SECT163K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT233K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT239K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT283K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT409K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT571K1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_K1 ) +#define PSA_ECC_CURVE_SECT163R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT193R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT233R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT283R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT409R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT571R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R1 ) +#define PSA_ECC_CURVE_SECT163R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R2 ) +#define PSA_ECC_CURVE_SECT193R2 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_SECT_R2 ) +#define PSA_ECC_CURVE_BRAINPOOL_P256R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_BRAINPOOL_P384R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_BRAINPOOL_P512R1 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_BRAINPOOL_P_R1 ) +#define PSA_ECC_CURVE_CURVE25519 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_MONTGOMERY ) +#define PSA_ECC_CURVE_CURVE448 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_ecc_curve_t, PSA_ECC_CURVE_MONTGOMERY ) + +#define PSA_DH_GROUP_FFDHE2048 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE3072 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE4096 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE6144 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) +#define PSA_DH_GROUP_FFDHE8192 \ + MBEDTLS_DEPRECATED_CONSTANT( psa_dh_group_t, PSA_DH_GROUP_RFC7919 ) + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_COMPAT_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_driver_common.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_driver_common.h new file mode 100644 index 00000000..6f1a5d5d --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_driver_common.h @@ -0,0 +1,54 @@ +/** + * \file psa/crypto_driver_common.h + * \brief Definitions for all PSA crypto drivers + * + * This file contains common definitions shared by all PSA crypto drivers. + * Do not include it directly: instead, include the header file(s) for + * the type(s) of driver that you are implementing. For example, if + * you are writing a driver for a chip that provides both a hardware + * random generator and an accelerator for some cryptographic algorithms, + * include `psa/crypto_entropy_driver.h` and `psa/crypto_accel_driver.h`. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ +#ifndef PSA_CRYPTO_DRIVER_COMMON_H +#define PSA_CRYPTO_DRIVER_COMMON_H + +#include +#include + +/* Include type definitions (psa_status_t, psa_algorithm_t, + * psa_key_type_t, etc.) and macros to build and analyze values + * of these types. */ +#include "crypto_types.h" +#include "crypto_values.h" + +/** For encrypt-decrypt functions, whether the operation is an encryption + * or a decryption. */ +typedef enum { + PSA_CRYPTO_DRIVER_DECRYPT, + PSA_CRYPTO_DRIVER_ENCRYPT +} psa_encrypt_or_decrypt_t; + +#endif /* PSA_CRYPTO_DRIVER_COMMON_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_entropy_driver.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_entropy_driver.h new file mode 100644 index 00000000..f596b6bd --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_entropy_driver.h @@ -0,0 +1,108 @@ +/** + * \file psa/crypto_entropy_driver.h + * \brief PSA entropy source driver module + * + * This header declares types and function signatures for entropy sources. + * + * This file is part of the PSA Crypto Driver Model, containing functions for + * driver developers to implement to enable hardware to be called in a + * standardized way by a PSA Cryptographic API implementation. The functions + * comprising the driver model, which driver authors implement, are not + * intended to be called by application developers. + */ + +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ +#ifndef PSA_CRYPTO_ENTROPY_DRIVER_H +#define PSA_CRYPTO_ENTROPY_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup driver_rng Entropy Generation + */ +/**@{*/ + +/** \brief Initialize an entropy driver + * + * + * \param[in,out] p_context A hardware-specific structure + * containing any context information for + * the implementation + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_entropy_init_t)(void *p_context); + +/** \brief Get a specified number of bits from the entropy source + * + * It retrives `buffer_size` bytes of data from the entropy source. The entropy + * source will always fill the provided buffer to its full size, however, most + * entropy sources have biases, and the actual amount of entropy contained in + * the buffer will be less than the number of bytes. + * The driver will return the actual number of bytes of entropy placed in the + * buffer in `p_received_entropy_bytes`. + * A PSA Crypto API implementation will likely feed the output of this function + * into a Digital Random Bit Generator (DRBG), and typically has a minimum + * amount of entropy that it needs. + * To accomplish this, the PSA Crypto implementation should be designed to call + * this function multiple times until it has received the required amount of + * entropy from the entropy source. + * + * \param[in,out] p_context A hardware-specific structure + * containing any context information + * for the implementation + * \param[out] p_buffer A caller-allocated buffer for the + * retrieved entropy to be placed in + * \param[in] buffer_size The allocated size of `p_buffer` + * \param[out] p_received_entropy_bits The amount of entropy (in bits) + * actually provided in `p_buffer` + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_entropy_get_bits_t)(void *p_context, + uint8_t *p_buffer, + uint32_t buffer_size, + uint32_t *p_received_entropy_bits); + +/** + * \brief A struct containing all of the function pointers needed to interface + * to an entropy source + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** The driver-specific size of the entropy context */ + const size_t context_size; + /** Function that performs initialization for the entropy source */ + psa_drv_entropy_init_t p_init; + /** Function that performs the get_bits operation for the entropy source */ + psa_drv_entropy_get_bits_t p_get_bits; +} psa_drv_entropy_t; +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_ENTROPY_DRIVER_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_extra.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_extra.h new file mode 100644 index 00000000..64ab1bfe --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_extra.h @@ -0,0 +1,655 @@ +/** + * \file psa/crypto_extra.h + * + * \brief PSA cryptography module: Mbed TLS vendor extensions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file is reserved for vendor-specific definitions. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_EXTRA_H +#define PSA_CRYPTO_EXTRA_H + +#include "mbedtls/platform_util.h" + +#include "crypto_compat.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UID for secure storage seed */ +#define PSA_CRYPTO_ITS_RANDOM_SEED_UID 0xFFFFFF52 + + +/** \addtogroup attributes + * @{ + */ + +/** \brief Declare the enrollment algorithm for a key. + * + * An operation on a key may indifferently use the algorithm set with + * psa_set_key_algorithm() or with this function. + * + * \param[out] attributes The attribute structure to write to. + * \param alg2 A second algorithm that the key may be used + * for, in addition to the algorithm set with + * psa_set_key_algorithm(). + * + * \warning Setting an enrollment algorithm is not recommended, because + * using the same key with different algorithms can allow some + * attacks based on arithmetic relations between different + * computations made with the same key, or can escalate harmless + * side channels into exploitable ones. Use this function only + * if it is necessary to support a protocol for which it has been + * verified that the usage of the key with multiple algorithms + * is safe. + */ +static inline void psa_set_key_enrollment_algorithm( + psa_key_attributes_t *attributes, + psa_algorithm_t alg2) +{ + attributes->core.policy.alg2 = alg2; +} + +/** Retrieve the enrollment algorithm policy from key attributes. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The enrollment algorithm stored in the attribute structure. + */ +static inline psa_algorithm_t psa_get_key_enrollment_algorithm( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.alg2 ); +} + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + +/** Retrieve the slot number where a key is stored. + * + * A slot number is only defined for keys that are stored in a secure + * element. + * + * This information is only useful if the secure element is not entirely + * managed through the PSA Cryptography API. It is up to the secure + * element driver to decide how PSA slot numbers map to any other interface + * that the secure element may have. + * + * \param[in] attributes The key attribute structure to query. + * \param[out] slot_number On success, the slot number containing the key. + * + * \retval #PSA_SUCCESS + * The key is located in a secure element, and \p *slot_number + * indicates the slot number that contains it. + * \retval #PSA_ERROR_NOT_PERMITTED + * The caller is not permitted to query the slot number. + * Mbed Crypto currently does not return this error. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key is not located in a secure element. + */ +psa_status_t psa_get_key_slot_number( + const psa_key_attributes_t *attributes, + psa_key_slot_number_t *slot_number ); + +/** Choose the slot number where a key is stored. + * + * This function declares a slot number in the specified attribute + * structure. + * + * A slot number is only meaningful for keys that are stored in a secure + * element. It is up to the secure element driver to decide how PSA slot + * numbers map to any other interface that the secure element may have. + * + * \note Setting a slot number in key attributes for a key creation can + * cause the following errors when creating the key: + * - #PSA_ERROR_NOT_SUPPORTED if the selected secure element does + * not support choosing a specific slot number. + * - #PSA_ERROR_NOT_PERMITTED if the caller is not permitted to + * choose slot numbers in general or to choose this specific slot. + * - #PSA_ERROR_INVALID_ARGUMENT if the chosen slot number is not + * valid in general or not valid for this specific key. + * - #PSA_ERROR_ALREADY_EXISTS if there is already a key in the + * selected slot. + * + * \param[out] attributes The attribute structure to write to. + * \param slot_number The slot number to set. + */ +static inline void psa_set_key_slot_number( + psa_key_attributes_t *attributes, + psa_key_slot_number_t slot_number ) +{ + attributes->core.flags |= MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER; + attributes->slot_number = slot_number; +} + +/** Remove the slot number attribute from a key attribute structure. + * + * This function undoes the action of psa_set_key_slot_number(). + * + * \param[out] attributes The attribute structure to write to. + */ +static inline void psa_clear_key_slot_number( + psa_key_attributes_t *attributes ) +{ + attributes->core.flags &= ~MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER; +} + +/** Register a key that is already present in a secure element. + * + * The key must be located in a secure element designated by the + * lifetime field in \p attributes, in the slot set with + * psa_set_key_slot_number() in the attribute structure. + * This function makes the key available through the key identifier + * specified in \p attributes. + * + * \param[in] attributes The attributes of the existing key. + * + * \retval #PSA_SUCCESS + * The key was successfully registered. + * Note that depending on the design of the driver, this may or may + * not guarantee that a key actually exists in the designated slot + * and is compatible with the specified attributes. + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key with the identifier specified in + * \p attributes. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The secure element driver for the specified lifetime does not + * support registering a key. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p attributes specifies a lifetime which is not located + * in a secure element. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * No slot number is specified in \p attributes, + * or the specified slot number is not valid. + * \retval #PSA_ERROR_NOT_PERMITTED + * The caller is not authorized to register the specified key slot. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t mbedtls_psa_register_se_key( + const psa_key_attributes_t *attributes); + +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + +/**@}*/ + +/** + * \brief Library deinitialization. + * + * This function clears all data associated with the PSA layer, + * including the whole key store. + * + * This is an Mbed TLS extension. + */ +void mbedtls_psa_crypto_free( void ); + +/** \brief Statistics about + * resource consumption related to the PSA keystore. + * + * \note The content of this structure is not part of the stable API and ABI + * of Mbed Crypto and may change arbitrarily from version to version. + */ +typedef struct mbedtls_psa_stats_s +{ + /** Number of slots containing key material for a volatile key. */ + size_t volatile_slots; + /** Number of slots containing key material for a key which is in + * internal persistent storage. */ + size_t persistent_slots; + /** Number of slots containing a reference to a key in a + * secure element. */ + size_t external_slots; + /** Number of slots which are occupied, but do not contain + * key material yet. */ + size_t half_filled_slots; + /** Number of slots that contain cache data. */ + size_t cache_slots; + /** Number of slots that are not used for anything. */ + size_t empty_slots; + /** Largest key id value among open keys in internal persistent storage. */ + psa_app_key_id_t max_open_internal_key_id; + /** Largest key id value among open keys in secure elements. */ + psa_app_key_id_t max_open_external_key_id; +} mbedtls_psa_stats_t; + +/** \brief Get statistics about + * resource consumption related to the PSA keystore. + * + * \note When Mbed Crypto is built as part of a service, with isolation + * between the application and the keystore, the service may or + * may not expose this function. + */ +void mbedtls_psa_get_stats( mbedtls_psa_stats_t *stats ); + +/** + * \brief Inject an initial entropy seed for the random generator into + * secure storage. + * + * This function injects data to be used as a seed for the random generator + * used by the PSA Crypto implementation. On devices that lack a trusted + * entropy source (preferably a hardware random number generator), + * the Mbed PSA Crypto implementation uses this value to seed its + * random generator. + * + * On devices without a trusted entropy source, this function must be + * called exactly once in the lifetime of the device. On devices with + * a trusted entropy source, calling this function is optional. + * In all cases, this function may only be called before calling any + * other function in the PSA Crypto API, including psa_crypto_init(). + * + * When this function returns successfully, it populates a file in + * persistent storage. Once the file has been created, this function + * can no longer succeed. + * + * If any error occurs, this function does not change the system state. + * You can call this function again after correcting the reason for the + * error if possible. + * + * \warning This function **can** fail! Callers MUST check the return status. + * + * \warning If you use this function, you should use it as part of a + * factory provisioning process. The value of the injected seed + * is critical to the security of the device. It must be + * *secret*, *unpredictable* and (statistically) *unique per device*. + * You should be generate it randomly using a cryptographically + * secure random generator seeded from trusted entropy sources. + * You should transmit it securely to the device and ensure + * that its value is not leaked or stored anywhere beyond the + * needs of transmitting it from the point of generation to + * the call of this function, and erase all copies of the value + * once this function returns. + * + * This is an Mbed TLS extension. + * + * \note This function is only available on the following platforms: + * * If the compile-time option MBEDTLS_PSA_INJECT_ENTROPY is enabled. + * Note that you must provide compatible implementations of + * mbedtls_nv_seed_read and mbedtls_nv_seed_write. + * * In a client-server integration of PSA Cryptography, on the client side, + * if the server supports this feature. + * \param[in] seed Buffer containing the seed value to inject. + * \param[in] seed_size Size of the \p seed buffer. + * The size of the seed in bytes must be greater + * or equal to both #MBEDTLS_ENTROPY_MIN_PLATFORM + * and #MBEDTLS_ENTROPY_BLOCK_SIZE. + * It must be less or equal to + * #MBEDTLS_ENTROPY_MAX_SEED_SIZE. + * + * \retval #PSA_SUCCESS + * The seed value was injected successfully. The random generator + * of the PSA Crypto implementation is now ready for use. + * You may now call psa_crypto_init() and use the PSA Crypto + * implementation. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p seed_size is out of range. + * \retval #PSA_ERROR_STORAGE_FAILURE + * There was a failure reading or writing from storage. + * \retval #PSA_ERROR_NOT_PERMITTED + * The library has already been initialized. It is no longer + * possible to call this function. + */ +psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, + size_t seed_size); + +/** \addtogroup crypto_types + * @{ + */ + +/** DSA public key. + * + * The import and export format is the + * representation of the public key `y = g^x mod p` as a big-endian byte + * string. The length of the byte string is the length of the base prime `p` + * in bytes. + */ +#define PSA_KEY_TYPE_DSA_PUBLIC_KEY ((psa_key_type_t)0x4002) + +/** DSA key pair (private and public key). + * + * The import and export format is the + * representation of the private key `x` as a big-endian byte string. The + * length of the byte string is the private key size in bytes (leading zeroes + * are not stripped). + * + * Determinstic DSA key derivation with psa_generate_derived_key follows + * FIPS 186-4 §B.1.2: interpret the byte string as integer + * in big-endian order. Discard it if it is not in the range + * [0, *N* - 2] where *N* is the boundary of the private key domain + * (the prime *p* for Diffie-Hellman, the subprime *q* for DSA, + * or the order of the curve's base point for ECC). + * Add 1 to the resulting integer and use this as the private key *x*. + * + */ +#define PSA_KEY_TYPE_DSA_KEY_PAIR ((psa_key_type_t)0x7002) + +/** Whether a key type is an DSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_DSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY) + +#define PSA_ALG_DSA_BASE ((psa_algorithm_t)0x10040000) +/** DSA signature with hashing. + * + * This is the signature scheme defined by FIPS 186-4, + * with a random per-message secret number (*k*). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding DSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DSA(hash_alg) \ + (PSA_ALG_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_DETERMINISTIC_DSA_BASE ((psa_algorithm_t)0x10050000) +#define PSA_ALG_DSA_DETERMINISTIC_FLAG PSA_ALG_ECDSA_DETERMINISTIC_FLAG +/** Deterministic DSA signature with hashing. + * + * This is the deterministic variant defined by RFC 6979 of + * the signature scheme defined by FIPS 186-4. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding DSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DETERMINISTIC_DSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_DSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_DSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_DSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_DSA_BASE) +#define PSA_ALG_DSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_DSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_DSA(alg) \ + (PSA_ALG_IS_DSA(alg) && PSA_ALG_DSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_DSA(alg) \ + (PSA_ALG_IS_DSA(alg) && !PSA_ALG_DSA_IS_DETERMINISTIC(alg)) + + +/* We need to expand the sample definition of this macro from + * the API definition. */ +#undef PSA_ALG_IS_HASH_AND_SIGN +#define PSA_ALG_IS_HASH_AND_SIGN(alg) \ + (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ + PSA_ALG_IS_DSA(alg) || PSA_ALG_IS_ECDSA(alg)) + +/**@}*/ + +/** \addtogroup attributes + * @{ + */ + +/** Custom Diffie-Hellman group. + * + * For keys of type #PSA_KEY_TYPE_DH_PUBLIC_KEY(#PSA_DH_GROUP_CUSTOM) or + * #PSA_KEY_TYPE_DH_KEY_PAIR(#PSA_DH_GROUP_CUSTOM), the group data comes + * from domain parameters set by psa_set_key_domain_parameters(). + */ +#define PSA_DH_GROUP_CUSTOM ((psa_dh_group_t) 0x7e) + + +/** + * \brief Set domain parameters for a key. + * + * Some key types require additional domain parameters in addition to + * the key type identifier and the key size. Use this function instead + * of psa_set_key_type() when you need to specify domain parameters. + * + * The format for the required domain parameters varies based on the key type. + * + * - For RSA keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY or #PSA_KEY_TYPE_RSA_KEY_PAIR), + * the domain parameter data consists of the public exponent, + * represented as a big-endian integer with no leading zeros. + * This information is used when generating an RSA key pair. + * When importing a key, the public exponent is read from the imported + * key data and the exponent recorded in the attribute structure is ignored. + * As an exception, the public exponent 65537 is represented by an empty + * byte string. + * - For DSA keys (#PSA_KEY_TYPE_DSA_PUBLIC_KEY or #PSA_KEY_TYPE_DSA_KEY_PAIR), + * the `Dss-Parms` format as defined by RFC 3279 §2.3.2. + * ``` + * Dss-Parms ::= SEQUENCE { + * p INTEGER, + * q INTEGER, + * g INTEGER + * } + * ``` + * - For Diffie-Hellman key exchange keys + * (#PSA_KEY_TYPE_DH_PUBLIC_KEY(#PSA_DH_GROUP_CUSTOM) or + * #PSA_KEY_TYPE_DH_KEY_PAIR(#PSA_DH_GROUP_CUSTOM)), the + * `DomainParameters` format as defined by RFC 3279 §2.3.3. + * ``` + * DomainParameters ::= SEQUENCE { + * p INTEGER, -- odd prime, p=jq +1 + * g INTEGER, -- generator, g + * q INTEGER, -- factor of p-1 + * j INTEGER OPTIONAL, -- subgroup factor + * validationParms ValidationParms OPTIONAL + * } + * ValidationParms ::= SEQUENCE { + * seed BIT STRING, + * pgenCounter INTEGER + * } + * ``` + * + * \note This function may allocate memory or other resources. + * Once you have called this function on an attribute structure, + * you must call psa_reset_key_attributes() to free these resources. + * + * \note This is an experimental extension to the interface. It may change + * in future versions of the library. + * + * \param[in,out] attributes Attribute structure where the specified domain + * parameters will be stored. + * If this function fails, the content of + * \p attributes is not modified. + * \param type Key type (a \c PSA_KEY_TYPE_XXX value). + * \param[in] data Buffer containing the key domain parameters. + * The content of this buffer is interpreted + * according to \p type as described above. + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length); + +/** + * \brief Get domain parameters for a key. + * + * Get the domain parameters for a key with this function, if any. The format + * of the domain parameters written to \p data is specified in the + * documentation for psa_set_key_domain_parameters(). + * + * \note This is an experimental extension to the interface. It may change + * in future versions of the library. + * + * \param[in] attributes The key attribute structure to query. + * \param[out] data On success, the key domain parameters. + * \param data_size Size of the \p data buffer in bytes. + * The buffer is guaranteed to be large + * enough if its size in bytes is at least + * the value given by + * PSA_KEY_DOMAIN_PARAMETERS_SIZE(). + * \param[out] data_length On success, the number of bytes + * that make up the key domain parameters data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + */ +psa_status_t psa_get_key_domain_parameters( + const psa_key_attributes_t *attributes, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** Safe output buffer size for psa_get_key_domain_parameters(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \note This is an experimental extension to the interface. It may change + * in future versions of the library. + * + * \param key_type A supported key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_get_key_domain_parameters() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_KEY_DOMAIN_PARAMETERS_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? sizeof(int) : \ + PSA_KEY_TYPE_IS_DH(key_type) ? PSA_DH_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_DSA(key_type) ? PSA_DSA_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) : \ + 0) +#define PSA_DH_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) \ + (4 + (PSA_BITS_TO_BYTES(key_bits) + 5) * 3 /*without optional parts*/) +#define PSA_DSA_KEY_DOMAIN_PARAMETERS_SIZE(key_bits) \ + (4 + (PSA_BITS_TO_BYTES(key_bits) + 5) * 2 /*p, g*/ + 34 /*q*/) + +/**@}*/ + +/** \defgroup psa_tls_helpers TLS helper functions + * @{ + */ + +#if defined(MBEDTLS_ECP_C) +#include + +/** Convert an ECC curve identifier from the Mbed TLS encoding to PSA. + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param grpid An Mbed TLS elliptic curve identifier + * (`MBEDTLS_ECP_DP_xxx`). + * \param[out] bits On success, the bit size of the curve. + * + * \return The corresponding PSA elliptic curve identifier + * (`PSA_ECC_CURVE_xxx`). + * \return \c 0 on failure (\p grpid is not recognized). + */ +static inline psa_ecc_curve_t mbedtls_ecc_group_to_psa( mbedtls_ecp_group_id grpid, + size_t *bits ) +{ + switch( grpid ) + { + case MBEDTLS_ECP_DP_SECP192R1: + *bits = 192; + return( PSA_ECC_CURVE_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP224R1: + *bits = 224; + return( PSA_ECC_CURVE_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP256R1: + *bits = 256; + return( PSA_ECC_CURVE_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP384R1: + *bits = 384; + return( PSA_ECC_CURVE_SECP_R1 ); + case MBEDTLS_ECP_DP_SECP521R1: + *bits = 521; + return( PSA_ECC_CURVE_SECP_R1 ); + case MBEDTLS_ECP_DP_BP256R1: + *bits = 256; + return( PSA_ECC_CURVE_BRAINPOOL_P_R1 ); + case MBEDTLS_ECP_DP_BP384R1: + *bits = 384; + return( PSA_ECC_CURVE_BRAINPOOL_P_R1 ); + case MBEDTLS_ECP_DP_BP512R1: + *bits = 512; + return( PSA_ECC_CURVE_BRAINPOOL_P_R1 ); + case MBEDTLS_ECP_DP_CURVE25519: + *bits = 255; + return( PSA_ECC_CURVE_MONTGOMERY ); + case MBEDTLS_ECP_DP_SECP192K1: + *bits = 192; + return( PSA_ECC_CURVE_SECP_K1 ); + case MBEDTLS_ECP_DP_SECP224K1: + *bits = 224; + return( PSA_ECC_CURVE_SECP_K1 ); + case MBEDTLS_ECP_DP_SECP256K1: + *bits = 256; + return( PSA_ECC_CURVE_SECP_K1 ); + case MBEDTLS_ECP_DP_CURVE448: + *bits = 448; + return( PSA_ECC_CURVE_MONTGOMERY ); + default: + return( 0 ); + } +} + +/** Convert an ECC curve identifier from the PSA encoding to Mbed TLS. + * + * \note This function is provided solely for the convenience of + * Mbed TLS and may be removed at any time without notice. + * + * \param curve A PSA elliptic curve identifier + * (`PSA_ECC_CURVE_xxx`). + * \param byte_length The byte-length of a private key on \p curve. + * + * \return The corresponding Mbed TLS elliptic curve identifier + * (`MBEDTLS_ECP_DP_xxx`). + * \return #MBEDTLS_ECP_DP_NONE if \c curve is not recognized. + * \return #MBEDTLS_ECP_DP_NONE if \p byte_length is not + * correct for \p curve. + */ +mbedtls_ecp_group_id mbedtls_ecc_group_of_psa( psa_ecc_curve_t curve, + size_t byte_length ); +#endif /* MBEDTLS_ECP_C */ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_EXTRA_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_platform.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_platform.h new file mode 100644 index 00000000..d85a719c --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_platform.h @@ -0,0 +1,102 @@ +/** + * \file psa/crypto_platform.h + * + * \brief PSA cryptography module: Mbed TLS platform definitions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains platform-dependent type definitions. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_PLATFORM_H +#define PSA_CRYPTO_PLATFORM_H + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +/* PSA requires several types which C99 provides in stdint.h. */ +#include + +/* Integral type representing a key handle. */ +typedef uint16_t psa_key_handle_t; + +/* This implementation distinguishes *application key identifiers*, which + * are the key identifiers specified by the application, from + * *key file identifiers*, which are the key identifiers that the library + * sees internally. The two types can be different if there is a remote + * call layer between the application and the library which supports + * multiple client applications that do not have access to each others' + * keys. The point of having different types is that the key file + * identifier may encode not only the key identifier specified by the + * application, but also the the identity of the application. + * + * Note that this is an internal concept of the library and the remote + * call layer. The application itself never sees anything other than + * #psa_app_key_id_t with its standard definition. + */ + +/* The application key identifier is always what the application sees as + * #psa_key_id_t. */ +typedef uint32_t psa_app_key_id_t; + +#if defined(MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER) + +#if defined(PSA_CRYPTO_SECURE) +/* Building for the PSA Crypto service on a PSA platform. */ +/* A key owner is a PSA partition identifier. */ +typedef int32_t psa_key_owner_id_t; +#endif + +typedef struct +{ + uint32_t key_id; + psa_key_owner_id_t owner; +} psa_key_file_id_t; +#define PSA_KEY_FILE_GET_KEY_ID( file_id ) ( ( file_id ).key_id ) + +/* Since crypto.h is used as part of the PSA Cryptography API specification, + * it must use standard types for things like the argument of psa_open_key(). + * If it wasn't for that constraint, psa_open_key() would take a + * `psa_key_file_id_t` argument. As a workaround, make `psa_key_id_t` an + * alias for `psa_key_file_id_t` when building for a multi-client service. */ +typedef psa_key_file_id_t psa_key_id_t; +#define PSA_KEY_ID_INIT {0, 0} + +#else /* !MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER */ + +/* By default, a key file identifier is just the application key identifier. */ +typedef psa_app_key_id_t psa_key_file_id_t; +#define PSA_KEY_FILE_GET_KEY_ID( id ) ( id ) + +#endif /* !MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER */ + +#endif /* PSA_CRYPTO_PLATFORM_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_se_driver.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_se_driver.h new file mode 100644 index 00000000..7ac1ed1c --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_se_driver.h @@ -0,0 +1,1388 @@ +/** + * \file psa/crypto_se_driver.h + * \brief PSA external cryptoprocessor driver module + * + * This header declares types and function signatures for cryptography + * drivers that access key material via opaque references. + * This is meant for cryptoprocessors that have a separate key storage from the + * space in which the PSA Crypto implementation runs, typically secure + * elements (SEs). + * + * This file is part of the PSA Crypto Driver HAL (hardware abstraction layer), + * containing functions for driver developers to implement to enable hardware + * to be called in a standardized way by a PSA Cryptography API + * implementation. The functions comprising the driver HAL, which driver + * authors implement, are not intended to be called by application developers. + */ + +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ +#ifndef PSA_CRYPTO_SE_DRIVER_H +#define PSA_CRYPTO_SE_DRIVER_H + +#include "crypto_driver_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \defgroup se_init Secure element driver initialization + */ +/**@{*/ + +/** \brief Driver context structure + * + * Driver functions receive a pointer to this structure. + * Each registered driver has one instance of this structure. + * + * Implementations must include the fields specified here and + * may include other fields. + */ +typedef struct { + /** A read-only pointer to the driver's persistent data. + * + * Drivers typically use this persistent data to keep track of + * which slot numbers are available. This is only a guideline: + * drivers may use the persistent data for any purpose, keeping + * in mind the restrictions on when the persistent data is saved + * to storage: the persistent data is only saved after calling + * certain functions that receive a writable pointer to the + * persistent data. + * + * The core allocates a memory buffer for the persistent data. + * The pointer is guaranteed to be suitably aligned for any data type, + * like a pointer returned by `malloc` (but the core can use any + * method to allocate the buffer, not necessarily `malloc`). + * + * The size of this buffer is in the \c persistent_data_size field of + * this structure. + * + * Before the driver is initialized for the first time, the content of + * the persistent data is all-bits-zero. After a driver upgrade, if the + * size of the persistent data has increased, the original data is padded + * on the right with zeros; if the size has decreased, the original data + * is truncated to the new size. + * + * This pointer is to read-only data. Only a few driver functions are + * allowed to modify the persistent data. These functions receive a + * writable pointer. These functions are: + * - psa_drv_se_t::p_init + * - psa_drv_se_key_management_t::p_allocate + * - psa_drv_se_key_management_t::p_destroy + * + * The PSA Cryptography core saves the persistent data from one + * session to the next. It does this before returning from API functions + * that call a driver method that is allowed to modify the persistent + * data, specifically: + * - psa_crypto_init() causes a call to psa_drv_se_t::p_init, and may call + * psa_drv_se_key_management_t::p_destroy to complete an action + * that was interrupted by a power failure. + * - Key creation functions cause a call to + * psa_drv_se_key_management_t::p_allocate, and may cause a call to + * psa_drv_se_key_management_t::p_destroy in case an error occurs. + * - psa_destroy_key() causes a call to + * psa_drv_se_key_management_t::p_destroy. + */ + const void *const persistent_data; + + /** The size of \c persistent_data in bytes. + * + * This is always equal to the value of the `persistent_data_size` field + * of the ::psa_drv_se_t structure when the driver is registered. + */ + const size_t persistent_data_size; + + /** Driver transient data. + * + * The core initializes this value to 0 and does not read or modify it + * afterwards. The driver may store whatever it wants in this field. + */ + uintptr_t transient_data; +} psa_drv_se_context_t; + +/** \brief A driver initialization function. + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param lifetime The lifetime value for which this driver + * is registered. + * + * \retval #PSA_SUCCESS + * The driver is operational. + * The core will update the persistent data in storage. + * \return + * Any other return value prevents the driver from being used in + * this session. + * The core will NOT update the persistent data in storage. + */ +typedef psa_status_t (*psa_drv_se_init_t)(psa_drv_se_context_t *drv_context, + void *persistent_data, + psa_key_lifetime_t lifetime); + +#if defined(__DOXYGEN_ONLY__) || !defined(MBEDTLS_PSA_CRYPTO_SE_C) +/* Mbed Crypto with secure element support enabled defines this type in + * crypto_types.h because it is also visible to applications through an + * implementation-specific extension. + * For the PSA Cryptography specification, this type is only visible + * via crypto_se_driver.h. */ +/** An internal designation of a key slot between the core part of the + * PSA Crypto implementation and the driver. The meaning of this value + * is driver-dependent. */ +typedef uint64_t psa_key_slot_number_t; +#endif /* __DOXYGEN_ONLY__ || !MBEDTLS_PSA_CRYPTO_SE_C */ + +/**@}*/ + +/** \defgroup se_mac Secure Element Message Authentication Codes + * Generation and authentication of Message Authentication Codes (MACs) using + * a secure element can be done either as a single function call (via the + * `psa_drv_se_mac_generate_t` or `psa_drv_se_mac_verify_t` functions), or in + * parts using the following sequence: + * - `psa_drv_se_mac_setup_t` + * - `psa_drv_se_mac_update_t` + * - `psa_drv_se_mac_update_t` + * - ... + * - `psa_drv_se_mac_finish_t` or `psa_drv_se_mac_finish_verify_t` + * + * If a previously started secure element MAC operation needs to be terminated, + * it should be done so by the `psa_drv_se_mac_abort_t`. Failure to do so may + * result in allocated resources not being freed or in other undefined + * behavior. + */ +/**@{*/ +/** \brief A function that starts a secure element MAC operation for a PSA + * Crypto Driver implementation + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] op_context A structure that will contain the + * hardware-specific MAC context + * \param[in] key_slot The slot of the key to be used for the + * operation + * \param[in] algorithm The algorithm to be used to underly the MAC + * operation + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_mac_setup_t)(psa_drv_se_context_t *drv_context, + void *op_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm); + +/** \brief A function that continues a previously started secure element MAC + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously-established MAC operation to be + * updated + * \param[in] p_input A buffer containing the message to be appended + * to the MAC operation + * \param[in] input_length The size in bytes of the input message buffer + */ +typedef psa_status_t (*psa_drv_se_mac_update_t)(void *op_context, + const uint8_t *p_input, + size_t input_length); + +/** \brief a function that completes a previously started secure element MAC + * operation by returning the resulting MAC. + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started MAC operation to be + * finished + * \param[out] p_mac A buffer where the generated MAC will be + * placed + * \param[in] mac_size The size in bytes of the buffer that has been + * allocated for the `output` buffer + * \param[out] p_mac_length After completion, will contain the number of + * bytes placed in the `p_mac` buffer + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_mac_finish_t)(void *op_context, + uint8_t *p_mac, + size_t mac_size, + size_t *p_mac_length); + +/** \brief A function that completes a previously started secure element MAC + * operation by comparing the resulting MAC against a provided value + * + * \param[in,out] op_context A hardware-specific structure for the previously + * started MAC operation to be fiinished + * \param[in] p_mac The MAC value against which the resulting MAC + * will be compared against + * \param[in] mac_length The size in bytes of the value stored in `p_mac` + * + * \retval PSA_SUCCESS + * The operation completed successfully and the MACs matched each + * other + * \retval PSA_ERROR_INVALID_SIGNATURE + * The operation completed successfully, but the calculated MAC did + * not match the provided MAC + */ +typedef psa_status_t (*psa_drv_se_mac_finish_verify_t)(void *op_context, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief A function that aborts a previous started secure element MAC + * operation + * + * \param[in,out] op_context A hardware-specific structure for the previously + * started MAC operation to be aborted + */ +typedef psa_status_t (*psa_drv_se_mac_abort_t)(void *op_context); + +/** \brief A function that performs a secure element MAC operation in one + * command and returns the calculated MAC + * + * \param[in,out] drv_context The driver context structure. + * \param[in] p_input A buffer containing the message to be MACed + * \param[in] input_length The size in bytes of `p_input` + * \param[in] key_slot The slot of the key to be used + * \param[in] alg The algorithm to be used to underlie the MAC + * operation + * \param[out] p_mac A buffer where the generated MAC will be + * placed + * \param[in] mac_size The size in bytes of the `p_mac` buffer + * \param[out] p_mac_length After completion, will contain the number of + * bytes placed in the `output` buffer + * + * \retval PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_mac_generate_t)(psa_drv_se_context_t *drv_context, + const uint8_t *p_input, + size_t input_length, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + uint8_t *p_mac, + size_t mac_size, + size_t *p_mac_length); + +/** \brief A function that performs a secure element MAC operation in one + * command and compares the resulting MAC against a provided value + * + * \param[in,out] drv_context The driver context structure. + * \param[in] p_input A buffer containing the message to be MACed + * \param[in] input_length The size in bytes of `input` + * \param[in] key_slot The slot of the key to be used + * \param[in] alg The algorithm to be used to underlie the MAC + * operation + * \param[in] p_mac The MAC value against which the resulting MAC will + * be compared against + * \param[in] mac_length The size in bytes of `mac` + * + * \retval PSA_SUCCESS + * The operation completed successfully and the MACs matched each + * other + * \retval PSA_ERROR_INVALID_SIGNATURE + * The operation completed successfully, but the calculated MAC did + * not match the provided MAC + */ +typedef psa_status_t (*psa_drv_se_mac_verify_t)(psa_drv_se_context_t *drv_context, + const uint8_t *p_input, + size_t input_length, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_mac, + size_t mac_length); + +/** \brief A struct containing all of the function pointers needed to + * perform secure element MAC operations + * + * PSA Crypto API implementations should populate the table as appropriate + * upon startup. + * + * If one of the functions is not implemented (such as + * `psa_drv_se_mac_generate_t`), it should be set to NULL. + * + * Driver implementers should ensure that they implement all of the functions + * that make sense for their hardware, and that they provide a full solution + * (for example, if they support `p_setup`, they should also support + * `p_update` and at least one of `p_finish` or `p_finish_verify`). + * + */ +typedef struct { + /**The size in bytes of the hardware-specific secure element MAC context + * structure + */ + size_t context_size; + /** Function that performs a MAC setup operation + */ + psa_drv_se_mac_setup_t p_setup; + /** Function that performs a MAC update operation + */ + psa_drv_se_mac_update_t p_update; + /** Function that completes a MAC operation + */ + psa_drv_se_mac_finish_t p_finish; + /** Function that completes a MAC operation with a verify check + */ + psa_drv_se_mac_finish_verify_t p_finish_verify; + /** Function that aborts a previoustly started MAC operation + */ + psa_drv_se_mac_abort_t p_abort; + /** Function that performs a MAC operation in one call + */ + psa_drv_se_mac_generate_t p_mac; + /** Function that performs a MAC and verify operation in one call + */ + psa_drv_se_mac_verify_t p_mac_verify; +} psa_drv_se_mac_t; +/**@}*/ + +/** \defgroup se_cipher Secure Element Symmetric Ciphers + * + * Encryption and Decryption using secure element keys in block modes other + * than ECB must be done in multiple parts, using the following flow: + * - `psa_drv_se_cipher_setup_t` + * - `psa_drv_se_cipher_set_iv_t` (optional depending upon block mode) + * - `psa_drv_se_cipher_update_t` + * - `psa_drv_se_cipher_update_t` + * - ... + * - `psa_drv_se_cipher_finish_t` + * + * If a previously started secure element Cipher operation needs to be + * terminated, it should be done so by the `psa_drv_se_cipher_abort_t`. Failure + * to do so may result in allocated resources not being freed or in other + * undefined behavior. + * + * In situations where a PSA Cryptographic API implementation is using a block + * mode not-supported by the underlying hardware or driver, it can construct + * the block mode itself, while calling the `psa_drv_se_cipher_ecb_t` function + * for the cipher operations. + */ +/**@{*/ + +/** \brief A function that provides the cipher setup function for a + * secure element driver + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] op_context A structure that will contain the + * hardware-specific cipher context. + * \param[in] key_slot The slot of the key to be used for the + * operation + * \param[in] algorithm The algorithm to be used in the cipher + * operation + * \param[in] direction Indicates whether the operation is an encrypt + * or decrypt + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_NOT_SUPPORTED + */ +typedef psa_status_t (*psa_drv_se_cipher_setup_t)(psa_drv_se_context_t *drv_context, + void *op_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + psa_encrypt_or_decrypt_t direction); + +/** \brief A function that sets the initialization vector (if + * necessary) for an secure element cipher operation + * + * Rationale: The `psa_se_cipher_*` operation in the PSA Cryptographic API has + * two IV functions: one to set the IV, and one to generate it internally. The + * generate function is not necessary for the drivers to implement as the PSA + * Crypto implementation can do the generation using its RNG features. + * + * \param[in,out] op_context A structure that contains the previously set up + * hardware-specific cipher context + * \param[in] p_iv A buffer containing the initialization vector + * \param[in] iv_length The size (in bytes) of the `p_iv` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_cipher_set_iv_t)(void *op_context, + const uint8_t *p_iv, + size_t iv_length); + +/** \brief A function that continues a previously started secure element cipher + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started cipher operation + * \param[in] p_input A buffer containing the data to be + * encrypted/decrypted + * \param[in] input_size The size in bytes of the buffer pointed to + * by `p_input` + * \param[out] p_output The caller-allocated buffer where the + * output will be placed + * \param[in] output_size The allocated size in bytes of the + * `p_output` buffer + * \param[out] p_output_length After completion, will contain the number + * of bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_cipher_update_t)(void *op_context, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief A function that completes a previously started secure element cipher + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started cipher operation + * \param[out] p_output The caller-allocated buffer where the output + * will be placed + * \param[in] output_size The allocated size in bytes of the `p_output` + * buffer + * \param[out] p_output_length After completion, will contain the number of + * bytes placed in the `p_output` buffer + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_cipher_finish_t)(void *op_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** \brief A function that aborts a previously started secure element cipher + * operation + * + * \param[in,out] op_context A hardware-specific structure for the + * previously started cipher operation + */ +typedef psa_status_t (*psa_drv_se_cipher_abort_t)(void *op_context); + +/** \brief A function that performs the ECB block mode for secure element + * cipher operations + * + * Note: this function should only be used with implementations that do not + * provide a needed higher-level operation. + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot The slot of the key to be used for the operation + * \param[in] algorithm The algorithm to be used in the cipher operation + * \param[in] direction Indicates whether the operation is an encrypt or + * decrypt + * \param[in] p_input A buffer containing the data to be + * encrypted/decrypted + * \param[in] input_size The size in bytes of the buffer pointed to by + * `p_input` + * \param[out] p_output The caller-allocated buffer where the output + * will be placed + * \param[in] output_size The allocated size in bytes of the `p_output` + * buffer + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_NOT_SUPPORTED + */ +typedef psa_status_t (*psa_drv_se_cipher_ecb_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + psa_encrypt_or_decrypt_t direction, + const uint8_t *p_input, + size_t input_size, + uint8_t *p_output, + size_t output_size); + +/** + * \brief A struct containing all of the function pointers needed to implement + * cipher operations using secure elements. + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup or at build time. + * + * If one of the functions is not implemented (such as + * `psa_drv_se_cipher_ecb_t`), it should be set to NULL. + */ +typedef struct { + /** The size in bytes of the hardware-specific secure element cipher + * context structure + */ + size_t context_size; + /** Function that performs a cipher setup operation */ + psa_drv_se_cipher_setup_t p_setup; + /** Function that sets a cipher IV (if necessary) */ + psa_drv_se_cipher_set_iv_t p_set_iv; + /** Function that performs a cipher update operation */ + psa_drv_se_cipher_update_t p_update; + /** Function that completes a cipher operation */ + psa_drv_se_cipher_finish_t p_finish; + /** Function that aborts a cipher operation */ + psa_drv_se_cipher_abort_t p_abort; + /** Function that performs ECB mode for a cipher operation + * (Danger: ECB mode should not be used directly by clients of the PSA + * Crypto Client API) + */ + psa_drv_se_cipher_ecb_t p_ecb; +} psa_drv_se_cipher_t; + +/**@}*/ + +/** \defgroup se_asymmetric Secure Element Asymmetric Cryptography + * + * Since the amount of data that can (or should) be encrypted or signed using + * asymmetric keys is limited by the key size, asymmetric key operations using + * keys in a secure element must be done in single function calls. + */ +/**@{*/ + +/** + * \brief A function that signs a hash or short message with a private key in + * a secure element + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of an asymmetric key pair + * \param[in] alg A signature algorithm that is compatible + * with the type of `key` + * \param[in] p_hash The hash to sign + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[out] p_signature Buffer where the signature is to be written + * \param[in] signature_size Size of the `p_signature` buffer in bytes + * \param[out] p_signature_length On success, the number of bytes + * that make up the returned signature value + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_asymmetric_sign_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + uint8_t *p_signature, + size_t signature_size, + size_t *p_signature_length); + +/** + * \brief A function that verifies the signature a hash or short message using + * an asymmetric public key in a secure element + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of a public key or an asymmetric key + * pair + * \param[in] alg A signature algorithm that is compatible with + * the type of `key` + * \param[in] p_hash The hash whose signature is to be verified + * \param[in] hash_length Size of the `p_hash` buffer in bytes + * \param[in] p_signature Buffer containing the signature to verify + * \param[in] signature_length Size of the `p_signature` buffer in bytes + * + * \retval PSA_SUCCESS + * The signature is valid. + */ +typedef psa_status_t (*psa_drv_se_asymmetric_verify_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_hash, + size_t hash_length, + const uint8_t *p_signature, + size_t signature_length); + +/** + * \brief A function that encrypts a short message with an asymmetric public + * key in a secure element + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of a public key or an asymmetric key + * pair + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to encrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the encrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes that make up + * the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_asymmetric_encrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A function that decrypts a short message with an asymmetric private + * key in a secure element. + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Key slot of an asymmetric key pair + * \param[in] alg An asymmetric encryption algorithm that is + * compatible with the type of `key` + * \param[in] p_input The message to decrypt + * \param[in] input_length Size of the `p_input` buffer in bytes + * \param[in] p_salt A salt or label, if supported by the + * encryption algorithm + * If the algorithm does not support a + * salt, pass `NULL`. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass `NULL`. + * For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param[in] salt_length Size of the `p_salt` buffer in bytes + * If `p_salt` is `NULL`, pass 0. + * \param[out] p_output Buffer where the decrypted message is to + * be written + * \param[in] output_size Size of the `p_output` buffer in bytes + * \param[out] p_output_length On success, the number of bytes + * that make up the returned output + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_asymmetric_decrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t alg, + const uint8_t *p_input, + size_t input_length, + const uint8_t *p_salt, + size_t salt_length, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A struct containing all of the function pointers needed to implement + * asymmetric cryptographic operations using secure elements. + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup or at build time. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs an asymmetric sign operation */ + psa_drv_se_asymmetric_sign_t p_sign; + /** Function that performs an asymmetric verify operation */ + psa_drv_se_asymmetric_verify_t p_verify; + /** Function that performs an asymmetric encrypt operation */ + psa_drv_se_asymmetric_encrypt_t p_encrypt; + /** Function that performs an asymmetric decrypt operation */ + psa_drv_se_asymmetric_decrypt_t p_decrypt; +} psa_drv_se_asymmetric_t; + +/**@}*/ + +/** \defgroup se_aead Secure Element Authenticated Encryption with Additional Data + * Authenticated Encryption with Additional Data (AEAD) operations with secure + * elements must be done in one function call. While this creates a burden for + * implementers as there must be sufficient space in memory for the entire + * message, it prevents decrypted data from being made available before the + * authentication operation is complete and the data is known to be authentic. + */ +/**@{*/ + +/** \brief A function that performs a secure element authenticated encryption + * operation + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Slot containing the key to use. + * \param[in] algorithm The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] p_nonce Nonce or IV to use + * \param[in] nonce_length Size of the `p_nonce` buffer in bytes + * \param[in] p_additional_data Additional data that will be + * authenticated but not encrypted + * \param[in] additional_data_length Size of `p_additional_data` in bytes + * \param[in] p_plaintext Data that will be authenticated and + * encrypted + * \param[in] plaintext_length Size of `p_plaintext` in bytes + * \param[out] p_ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is + * not part of this output. For algorithms + * where the encrypted data and the + * authentication tag are defined as + * separate outputs, the authentication + * tag is appended to the encrypted data. + * \param[in] ciphertext_size Size of the `p_ciphertext` buffer in + * bytes + * \param[out] p_ciphertext_length On success, the size of the output in + * the `p_ciphertext` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_aead_encrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + const uint8_t *p_nonce, + size_t nonce_length, + const uint8_t *p_additional_data, + size_t additional_data_length, + const uint8_t *p_plaintext, + size_t plaintext_length, + uint8_t *p_ciphertext, + size_t ciphertext_size, + size_t *p_ciphertext_length); + +/** A function that peforms a secure element authenticated decryption operation + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key_slot Slot containing the key to use + * \param[in] algorithm The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(`alg`) is true) + * \param[in] p_nonce Nonce or IV to use + * \param[in] nonce_length Size of the `p_nonce` buffer in bytes + * \param[in] p_additional_data Additional data that has been + * authenticated but not encrypted + * \param[in] additional_data_length Size of `p_additional_data` in bytes + * \param[in] p_ciphertext Data that has been authenticated and + * encrypted. + * For algorithms where the encrypted data + * and the authentication tag are defined + * as separate inputs, the buffer must + * contain the encrypted data followed by + * the authentication tag. + * \param[in] ciphertext_length Size of `p_ciphertext` in bytes + * \param[out] p_plaintext Output buffer for the decrypted data + * \param[in] plaintext_size Size of the `p_plaintext` buffer in + * bytes + * \param[out] p_plaintext_length On success, the size of the output in + * the `p_plaintext` buffer + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_aead_decrypt_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + psa_algorithm_t algorithm, + const uint8_t *p_nonce, + size_t nonce_length, + const uint8_t *p_additional_data, + size_t additional_data_length, + const uint8_t *p_ciphertext, + size_t ciphertext_length, + uint8_t *p_plaintext, + size_t plaintext_size, + size_t *p_plaintext_length); + +/** + * \brief A struct containing all of the function pointers needed to implement + * secure element Authenticated Encryption with Additional Data operations + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that performs the AEAD encrypt operation */ + psa_drv_se_aead_encrypt_t p_encrypt; + /** Function that performs the AEAD decrypt operation */ + psa_drv_se_aead_decrypt_t p_decrypt; +} psa_drv_se_aead_t; +/**@}*/ + +/** \defgroup se_key_management Secure Element Key Management + * Currently, key management is limited to importing keys in the clear, + * destroying keys, and exporting keys in the clear. + * Whether a key may be exported is determined by the key policies in place + * on the key slot. + */ +/**@{*/ + +/** An enumeration indicating how a key is created. + */ +typedef enum +{ + PSA_KEY_CREATION_IMPORT, /**< During psa_import_key() */ + PSA_KEY_CREATION_GENERATE, /**< During psa_generate_key() */ + PSA_KEY_CREATION_DERIVE, /**< During psa_key_derivation_output_key() */ + PSA_KEY_CREATION_COPY, /**< During psa_copy_key() */ + +#ifndef __DOXYGEN_ONLY__ + /** A key is being registered with mbedtls_psa_register_se_key(). + * + * The core only passes this value to + * psa_drv_se_key_management_t::p_validate_slot_number, not to + * psa_drv_se_key_management_t::p_allocate. The call to + * `p_validate_slot_number` is not followed by any other call to the + * driver: the key is considered successfully registered if the call to + * `p_validate_slot_number` succeeds, or if `p_validate_slot_number` is + * null. + * + * With this creation method, the driver must return #PSA_SUCCESS if + * the given attributes are compatible with the existing key in the slot, + * and #PSA_ERROR_DOES_NOT_EXIST if the driver can determine that there + * is no key with the specified slot number. + * + * This is an Mbed Crypto extension. + */ + PSA_KEY_CREATION_REGISTER, +#endif +} psa_key_creation_method_t; + +/** \brief A function that allocates a slot for a key. + * + * To create a key in a specific slot in a secure element, the core + * first calls this function to determine a valid slot number, + * then calls a function to create the key material in that slot. + * In nominal conditions (that is, if no error occurs), + * the effect of a call to a key creation function in the PSA Cryptography + * API with a lifetime that places the key in a secure element is the + * following: + * -# The core calls psa_drv_se_key_management_t::p_allocate + * (or in some implementations + * psa_drv_se_key_management_t::p_validate_slot_number). The driver + * selects (or validates) a suitable slot number given the key attributes + * and the state of the secure element. + * -# The core calls a key creation function in the driver. + * + * The key creation functions in the PSA Cryptography API are: + * - psa_import_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_IMPORT + * then a call to psa_drv_se_key_management_t::p_import. + * - psa_generate_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_GENERATE + * then a call to psa_drv_se_key_management_t::p_import. + * - psa_key_derivation_output_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_DERIVE + * then a call to psa_drv_se_key_derivation_t::p_derive. + * - psa_copy_key(), which causes + * a call to `p_allocate` with \p method = #PSA_KEY_CREATION_COPY + * then a call to psa_drv_se_key_management_t::p_export. + * + * In case of errors, other behaviors are possible. + * - If the PSA Cryptography subsystem dies after the first step, + * for example because the device has lost power abruptly, + * the second step may never happen, or may happen after a reset + * and re-initialization. Alternatively, after a reset and + * re-initialization, the core may call + * psa_drv_se_key_management_t::p_destroy on the slot number that + * was allocated (or validated) instead of calling a key creation function. + * - If an error occurs, the core may call + * psa_drv_se_key_management_t::p_destroy on the slot number that + * was allocated (or validated) instead of calling a key creation function. + * + * Errors and system resets also have an impact on the driver's persistent + * data. If a reset happens before the overall key creation process is + * completed (before or after the second step above), it is unspecified + * whether the persistent data after the reset is identical to what it + * was before or after the call to `p_allocate` (or `p_validate_slot_number`). + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param[in] attributes Attributes of the key. + * \param method The way in which the key is being created. + * \param[out] key_slot Slot where the key will be stored. + * This must be a valid slot for a key of the + * chosen type. It must be unoccupied. + * + * \retval #PSA_SUCCESS + * Success. + * The core will record \c *key_slot as the key slot where the key + * is stored and will update the persistent data in storage. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + */ +typedef psa_status_t (*psa_drv_se_allocate_key_t)( + psa_drv_se_context_t *drv_context, + void *persistent_data, + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_key_slot_number_t *key_slot); + +/** \brief A function that determines whether a slot number is valid + * for a key. + * + * To create a key in a specific slot in a secure element, the core + * first calls this function to validate the choice of slot number, + * then calls a function to create the key material in that slot. + * See the documentation of #psa_drv_se_allocate_key_t for more details. + * + * As of the PSA Cryptography API specification version 1.0, there is no way + * for applications to trigger a call to this function. However some + * implementations offer the capability to create or declare a key in + * a specific slot via implementation-specific means, generally for the + * sake of initial device provisioning or onboarding. Such a mechanism may + * be added to a future version of the PSA Cryptography API specification. + * + * This function may update the driver's persistent data through + * \p persistent_data. The core will save the updated persistent data at the + * end of the key creation process. See the description of + * ::psa_drv_se_allocate_key_t for more information. + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param[in] attributes Attributes of the key. + * \param method The way in which the key is being created. + * \param[in] key_slot Slot where the key is to be stored. + * + * \retval #PSA_SUCCESS + * The given slot number is valid for a key with the given + * attributes. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The given slot number is not valid for a key with the + * given attributes. This includes the case where the slot + * number is not valid at all. + * \retval #PSA_ERROR_ALREADY_EXISTS + * There is already a key with the specified slot number. + * Drivers may choose to return this error from the key + * creation function instead. + */ +typedef psa_status_t (*psa_drv_se_validate_slot_number_t)( + psa_drv_se_context_t *drv_context, + void *persistent_data, + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_key_slot_number_t key_slot); + +/** \brief A function that imports a key into a secure element in binary format + * + * This function can support any output from psa_export_key(). Refer to the + * documentation of psa_export_key() for the format for each key type. + * + * \param[in,out] drv_context The driver context structure. + * \param key_slot Slot where the key will be stored. + * This must be a valid slot for a key of the + * chosen type. It must be unoccupied. + * \param[in] attributes The key attributes, including the lifetime, + * the key type and the usage policy. + * Drivers should not access the key size stored + * in the attributes: it may not match the + * data passed in \p data. + * Drivers can call psa_get_key_lifetime(), + * psa_get_key_type(), + * psa_get_key_usage_flags() and + * psa_get_key_algorithm() to access this + * information. + * \param[in] data Buffer containing the key data. + * \param[in] data_length Size of the \p data buffer in bytes. + * \param[out] bits On success, the key size in bits. The driver + * must determine this value after parsing the + * key according to the key type. + * This value is not used if the function fails. + * + * \retval #PSA_SUCCESS + * Success. + */ +typedef psa_status_t (*psa_drv_se_import_key_t)( + psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + size_t *bits); + +/** + * \brief A function that destroys a secure element key and restore the slot to + * its default state + * + * This function destroys the content of the key from a secure element. + * Implementations shall make a best effort to ensure that any previous content + * of the slot is unrecoverable. + * + * This function returns the specified slot to its default state. + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] persistent_data A pointer to the persistent data + * that allows writing. + * \param key_slot The key slot to erase. + * + * \retval #PSA_SUCCESS + * The slot's content, if any, has been erased. + */ +typedef psa_status_t (*psa_drv_se_destroy_key_t)( + psa_drv_se_context_t *drv_context, + void *persistent_data, + psa_key_slot_number_t key_slot); + +/** + * \brief A function that exports a secure element key in binary format + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If a key is created with `psa_import_key()` and then exported with + * this function, it is not guaranteed that the resulting data is + * identical: the implementation may choose a different representation + * of the same key if the format permits it. + * + * This function should generate output in the same format that + * `psa_export_key()` does. Refer to the + * documentation of `psa_export_key()` for the format for each key type. + * + * \param[in,out] drv_context The driver context structure. + * \param[in] key Slot whose content is to be exported. This must + * be an occupied key slot. + * \param[out] p_data Buffer where the key data is to be written. + * \param[in] data_size Size of the `p_data` buffer in bytes. + * \param[out] p_data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_DOES_NOT_EXIST + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + */ +typedef psa_status_t (*psa_drv_se_export_key_t)(psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key, + uint8_t *p_data, + size_t data_size, + size_t *p_data_length); + +/** + * \brief A function that generates a symmetric or asymmetric key on a secure + * element + * + * If \p type is asymmetric (#PSA_KEY_TYPE_IS_ASYMMETRIC(\p type) = 1), + * the driver may export the public key at the time of generation, + * in the format documented for psa_export_public_key() by writing it + * to the \p pubkey buffer. + * This is optional, intended for secure elements that output the + * public key at generation time and that cannot export the public key + * later. Drivers that do not need this feature should leave + * \p *pubkey_length set to 0 and should + * implement the psa_drv_key_management_t::p_export_public function. + * Some implementations do not support this feature, in which case + * \p pubkey is \c NULL and \p pubkey_size is 0. + * + * \param[in,out] drv_context The driver context structure. + * \param key_slot Slot where the key will be stored. + * This must be a valid slot for a key of the + * chosen type. It must be unoccupied. + * \param[in] attributes The key attributes, including the lifetime, + * the key type and size, and the usage policy. + * Drivers can call psa_get_key_lifetime(), + * psa_get_key_type(), psa_get_key_bits(), + * psa_get_key_usage_flags() and + * psa_get_key_algorithm() to access this + * information. + * \param[out] pubkey A buffer where the driver can write the + * public key, when generating an asymmetric + * key pair. + * This is \c NULL when generating a symmetric + * key or if the core does not support + * exporting the public key at generation time. + * \param pubkey_size The size of the `pubkey` buffer in bytes. + * This is 0 when generating a symmetric + * key or if the core does not support + * exporting the public key at generation time. + * \param[out] pubkey_length On entry, this is always 0. + * On success, the number of bytes written to + * \p pubkey. If this is 0 or unchanged on return, + * the core will not read the \p pubkey buffer, + * and will instead call the driver's + * psa_drv_key_management_t::p_export_public + * function to export the public key when needed. + */ +typedef psa_status_t (*psa_drv_se_generate_key_t)( + psa_drv_se_context_t *drv_context, + psa_key_slot_number_t key_slot, + const psa_key_attributes_t *attributes, + uint8_t *pubkey, size_t pubkey_size, size_t *pubkey_length); + +/** + * \brief A struct containing all of the function pointers needed to for secure + * element key management + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup or at build time. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** Function that allocates a slot for a key. */ + psa_drv_se_allocate_key_t p_allocate; + /** Function that checks the validity of a slot for a key. */ + psa_drv_se_validate_slot_number_t p_validate_slot_number; + /** Function that performs a key import operation */ + psa_drv_se_import_key_t p_import; + /** Function that performs a generation */ + psa_drv_se_generate_key_t p_generate; + /** Function that performs a key destroy operation */ + psa_drv_se_destroy_key_t p_destroy; + /** Function that performs a key export operation */ + psa_drv_se_export_key_t p_export; + /** Function that performs a public key export operation */ + psa_drv_se_export_key_t p_export_public; +} psa_drv_se_key_management_t; + +/**@}*/ + +/** \defgroup driver_derivation Secure Element Key Derivation and Agreement + * Key derivation is the process of generating new key material using an + * existing key and additional parameters, iterating through a basic + * cryptographic function, such as a hash. + * Key agreement is a part of cryptographic protocols that allows two parties + * to agree on the same key value, but starting from different original key + * material. + * The flows are similar, and the PSA Crypto Driver Model uses the same functions + * for both of the flows. + * + * There are two different final functions for the flows, + * `psa_drv_se_key_derivation_derive` and `psa_drv_se_key_derivation_export`. + * `psa_drv_se_key_derivation_derive` is used when the key material should be + * placed in a slot on the hardware and not exposed to the caller. + * `psa_drv_se_key_derivation_export` is used when the key material should be + * returned to the PSA Cryptographic API implementation. + * + * Different key derivation algorithms require a different number of inputs. + * Instead of having an API that takes as input variable length arrays, which + * can be problemmatic to manage on embedded platforms, the inputs are passed + * to the driver via a function, `psa_drv_se_key_derivation_collateral`, that + * is called multiple times with different `collateral_id`s. Thus, for a key + * derivation algorithm that required 3 paramter inputs, the flow would look + * something like: + * ~~~~~~~~~~~~~{.c} + * psa_drv_se_key_derivation_setup(kdf_algorithm, source_key, dest_key_size_bytes); + * psa_drv_se_key_derivation_collateral(kdf_algorithm_collateral_id_0, + * p_collateral_0, + * collateral_0_size); + * psa_drv_se_key_derivation_collateral(kdf_algorithm_collateral_id_1, + * p_collateral_1, + * collateral_1_size); + * psa_drv_se_key_derivation_collateral(kdf_algorithm_collateral_id_2, + * p_collateral_2, + * collateral_2_size); + * psa_drv_se_key_derivation_derive(); + * ~~~~~~~~~~~~~ + * + * key agreement example: + * ~~~~~~~~~~~~~{.c} + * psa_drv_se_key_derivation_setup(alg, source_key. dest_key_size_bytes); + * psa_drv_se_key_derivation_collateral(DHE_PUBKEY, p_pubkey, pubkey_size); + * psa_drv_se_key_derivation_export(p_session_key, + * session_key_size, + * &session_key_length); + * ~~~~~~~~~~~~~ + */ +/**@{*/ + +/** \brief A function that Sets up a secure element key derivation operation by + * specifying the algorithm and the source key sot + * + * \param[in,out] drv_context The driver context structure. + * \param[in,out] op_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] kdf_alg The algorithm to be used for the key derivation + * \param[in] source_key The key to be used as the source material for + * the key derivation + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_setup_t)(psa_drv_se_context_t *drv_context, + void *op_context, + psa_algorithm_t kdf_alg, + psa_key_slot_number_t source_key); + +/** \brief A function that provides collateral (parameters) needed for a secure + * element key derivation or key agreement operation + * + * Since many key derivation algorithms require multiple parameters, it is + * expeced that this function may be called multiple times for the same + * operation, each with a different algorithm-specific `collateral_id` + * + * \param[in,out] op_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] collateral_id An ID for the collateral being provided + * \param[in] p_collateral A buffer containing the collateral data + * \param[in] collateral_size The size in bytes of the collateral + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_collateral_t)(void *op_context, + uint32_t collateral_id, + const uint8_t *p_collateral, + size_t collateral_size); + +/** \brief A function that performs the final secure element key derivation + * step and place the generated key material in a slot + * + * \param[in,out] op_context A hardware-specific structure containing any + * context information for the implementation + * \param[in] dest_key The slot where the generated key material + * should be placed + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_derive_t)(void *op_context, + psa_key_slot_number_t dest_key); + +/** \brief A function that performs the final step of a secure element key + * agreement and place the generated key material in a buffer + * + * \param[out] p_output Buffer in which to place the generated key + * material + * \param[in] output_size The size in bytes of `p_output` + * \param[out] p_output_length Upon success, contains the number of bytes of + * key material placed in `p_output` + * + * \retval PSA_SUCCESS + */ +typedef psa_status_t (*psa_drv_se_key_derivation_export_t)(void *op_context, + uint8_t *p_output, + size_t output_size, + size_t *p_output_length); + +/** + * \brief A struct containing all of the function pointers needed to for secure + * element key derivation and agreement + * + * PSA Crypto API implementations should populate instances of the table as + * appropriate upon startup. + * + * If one of the functions is not implemented, it should be set to NULL. + */ +typedef struct { + /** The driver-specific size of the key derivation context */ + size_t context_size; + /** Function that performs a key derivation setup */ + psa_drv_se_key_derivation_setup_t p_setup; + /** Function that sets key derivation collateral */ + psa_drv_se_key_derivation_collateral_t p_collateral; + /** Function that performs a final key derivation step */ + psa_drv_se_key_derivation_derive_t p_derive; + /** Function that perforsm a final key derivation or agreement and + * exports the key */ + psa_drv_se_key_derivation_export_t p_export; +} psa_drv_se_key_derivation_t; + +/**@}*/ + +/** \defgroup se_registration Secure element driver registration + */ +/**@{*/ + +/** A structure containing pointers to all the entry points of a + * secure element driver. + * + * Future versions of this specification may add extra substructures at + * the end of this structure. + */ +typedef struct { + /** The version of the driver HAL that this driver implements. + * This is a protection against loading driver binaries built against + * a different version of this specification. + * Use #PSA_DRV_SE_HAL_VERSION. + */ + uint32_t hal_version; + + /** The size of the driver's persistent data in bytes. + * + * This can be 0 if the driver does not need persistent data. + * + * See the documentation of psa_drv_se_context_t::persistent_data + * for more information about why and how a driver can use + * persistent data. + */ + size_t persistent_data_size; + + /** The driver initialization function. + * + * This function is called once during the initialization of the + * PSA Cryptography subsystem, before any other function of the + * driver is called. If this function returns a failure status, + * the driver will be unusable, at least until the next system reset. + * + * If this field is \c NULL, it is equivalent to a function that does + * nothing and returns #PSA_SUCCESS. + */ + psa_drv_se_init_t p_init; + + const psa_drv_se_key_management_t *key_management; + const psa_drv_se_mac_t *mac; + const psa_drv_se_cipher_t *cipher; + const psa_drv_se_aead_t *aead; + const psa_drv_se_asymmetric_t *asymmetric; + const psa_drv_se_key_derivation_t *derivation; +} psa_drv_se_t; + +/** The current version of the secure element driver HAL. + */ +/* 0.0.0 patchlevel 5 */ +#define PSA_DRV_SE_HAL_VERSION 0x00000005 + +/** Register an external cryptoprocessor (secure element) driver. + * + * This function is only intended to be used by driver code, not by + * application code. In implementations with separation between the + * PSA cryptography module and applications, this function should + * only be available to callers that run in the same memory space as + * the cryptography module, and should not be exposed to applications + * running in a different memory space. + * + * This function may be called before psa_crypto_init(). It is + * implementation-defined whether this function may be called + * after psa_crypto_init(). + * + * \note Implementations store metadata about keys including the lifetime + * value. Therefore, from one instantiation of the PSA Cryptography + * library to the next one, if there is a key in storage with a certain + * lifetime value, you must always register the same driver (or an + * updated version that communicates with the same secure element) + * with the same lifetime value. + * + * \param lifetime The lifetime value through which this driver will + * be exposed to applications. + * The values #PSA_KEY_LIFETIME_VOLATILE and + * #PSA_KEY_LIFETIME_PERSISTENT are reserved and + * may not be used for drivers. Implementations + * may reserve other values. + * \param[in] methods The method table of the driver. This structure must + * remain valid for as long as the cryptography + * module keeps running. It is typically a global + * constant. + * + * \return PSA_SUCCESS + * The driver was successfully registered. Applications can now + * use \p lifetime to access keys through the methods passed to + * this function. + * \return PSA_ERROR_BAD_STATE + * This function was called after the initialization of the + * cryptography module, and this implementation does not support + * driver registration at this stage. + * \return PSA_ERROR_ALREADY_EXISTS + * There is already a registered driver for this value of \p lifetime. + * \return PSA_ERROR_INVALID_ARGUMENT + * \p lifetime is a reserved value. + * \return PSA_ERROR_NOT_SUPPORTED + * `methods->hal_version` is not supported by this implementation. + * \return PSA_ERROR_INSUFFICIENT_MEMORY + * \return PSA_ERROR_NOT_PERMITTED + */ +psa_status_t psa_register_se_driver( + psa_key_lifetime_t lifetime, + const psa_drv_se_t *methods); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_SE_DRIVER_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_sizes.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_sizes.h new file mode 100644 index 00000000..1f04222c --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_sizes.h @@ -0,0 +1,662 @@ +/** + * \file psa/crypto_sizes.h + * + * \brief PSA cryptography module: Mbed TLS buffer size macros + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains the definitions of macros that are useful to + * compute buffer sizes. The signatures and semantics of these macros + * are standardized, but the definitions are not, because they depend on + * the available algorithms and, in some cases, on permitted tolerances + * on buffer sizes. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + * + * Macros that compute sizes whose values do not depend on the + * implementation are in crypto.h. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_SIZES_H +#define PSA_CRYPTO_SIZES_H + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8) +#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8) + +#define PSA_ROUND_UP_TO_MULTIPLE(block_size, length) \ + (((length) + (block_size) - 1) / (block_size) * (block_size)) + +/** The size of the output of psa_hash_finish(), in bytes. + * + * This is also the hash size that psa_hash_verify() expects. + * + * \param alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p alg) is true), or an HMAC algorithm + * (#PSA_ALG_HMAC(\c hash_alg) where \c hash_alg is a + * hash algorithm). + * + * \return The hash size for the specified hash algorithm. + * If the hash algorithm is not recognized, return 0. + * An implementation may return either 0 or the correct size + * for a hash algorithm that it recognizes, but does not support. + */ +#define PSA_HASH_SIZE(alg) \ + ( \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \ + 0) + +/** \def PSA_HASH_MAX_SIZE + * + * Maximum size of a hash. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a hash supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +/* Note: for HMAC-SHA-3, the block size is 144 bytes for HMAC-SHA3-226, + * 136 bytes for HMAC-SHA3-256, 104 bytes for SHA3-384, 72 bytes for + * HMAC-SHA3-512. */ +#if defined(MBEDTLS_SHA512_C) +#define PSA_HASH_MAX_SIZE 64 +#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128 +#else +#define PSA_HASH_MAX_SIZE 32 +#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 64 +#endif + +/** \def PSA_MAC_MAX_SIZE + * + * Maximum size of a MAC. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a MAC supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +/* All non-HMAC MACs have a maximum size that's smaller than the + * minimum possible value of PSA_HASH_MAX_SIZE in this implementation. */ +/* Note that the encoding of truncated MAC algorithms limits this value + * to 64 bytes. + */ +#define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE + +/** The tag size for an AEAD algorithm, in bytes. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The tag size for the specified algorithm. + * If the AEAD algorithm does not have an identified + * tag that can be distinguished from the rest of + * the ciphertext, return 0. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_TAG_LENGTH(alg) \ + (PSA_ALG_IS_AEAD(alg) ? \ + (((alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> PSA_AEAD_TAG_LENGTH_OFFSET) : \ + 0) + +/* The maximum size of an RSA key on this implementation, in bits. + * This is a vendor-specific macro. + * + * Mbed TLS does not set a hard limit on the size of RSA keys: any key + * whose parameters fit in a bignum is accepted. However large keys can + * induce a large memory usage and long computation times. Unlike other + * auxiliary macros in this file and in crypto.h, which reflect how the + * library is configured, this macro defines how the library is + * configured. This implementation refuses to import or generate an + * RSA key whose size is larger than the value defined here. + * + * Note that an implementation may set different size limits for different + * operations, and does not need to accept all key sizes up to the limit. */ +#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096 + +/* The maximum size of an ECC key on this implementation, in bits. + * This is a vendor-specific macro. */ +#if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 521 +#elif defined(MBEDTLS_ECP_DP_BP512R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 512 +#elif defined(MBEDTLS_ECP_DP_CURVE448_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 448 +#elif defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384 +#elif defined(MBEDTLS_ECP_DP_BP384R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 384 +#elif defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256 +#elif defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256 +#elif defined(MBEDTLS_ECP_DP_BP256R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 256 +#elif defined(MBEDTLS_ECP_DP_CURVE25519_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 255 +#elif defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224 +#elif defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 224 +#elif defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192 +#elif defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED) +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 192 +#else +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 0 +#endif + +/** \def PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN + * + * This macro returns the maximum length of the PSK supported + * by the TLS-1.2 PSK-to-MS key derivation. + * + * Quoting RFC 4279, Sect 5.3: + * TLS implementations supporting these ciphersuites MUST support + * arbitrary PSK identities up to 128 octets in length, and arbitrary + * PSKs up to 64 octets in length. Supporting longer identities and + * keys is RECOMMENDED. + * + * Therefore, no implementation should define a value smaller than 64 + * for #PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN. + */ +#define PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN 128 + +/** The maximum size of a block cipher supported by the implementation. */ +#define PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE 16 + +/** The size of the output of psa_mac_sign_finish(), in bytes. + * + * This is also the MAC size that psa_mac_verify_finish() expects. + * + * \param key_type The type of the MAC key. + * \param key_bits The size of the MAC key in bits. + * \param alg A MAC algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_MAC(\p alg) is true). + * + * \return The MAC size for the specified algorithm with + * the specified key parameters. + * \return 0 if the MAC algorithm is not recognized. + * \return Either 0 or the correct size for a MAC algorithm that + * the implementation recognizes, but does not support. + * \return Unspecified if the key parameters are not consistent + * with the algorithm. + */ +#define PSA_MAC_FINAL_SIZE(key_type, key_bits, alg) \ + ((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \ + PSA_ALG_IS_HMAC(alg) ? PSA_HASH_SIZE(PSA_ALG_HMAC_GET_HASH(alg)) : \ + PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_SIZE(key_type) : \ + ((void)(key_type), (void)(key_bits), 0)) + +/** The maximum size of the output of psa_aead_encrypt(), in bytes. + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_encrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the ciphertext may be smaller. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param plaintext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_ENCRYPT_OUTPUT_SIZE(alg, plaintext_length) \ + (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \ + (plaintext_length) + PSA_AEAD_TAG_LENGTH(alg) : \ + 0) + +/** The maximum size of the output of psa_aead_decrypt(), in bytes. + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_decrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the plaintext may be smaller. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param ciphertext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_DECRYPT_OUTPUT_SIZE(alg, ciphertext_length) \ + (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \ + (ciphertext_length) - PSA_AEAD_TAG_LENGTH(alg) : \ + 0) + +/** A sufficient output buffer size for psa_aead_update(). + * + * If the size of the output buffer is at least this large, it is + * guaranteed that psa_aead_update() will not fail due to an + * insufficient buffer size. The actual size of the output may be smaller + * in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output buffer size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +/* For all the AEAD modes defined in this specification, it is possible + * to emit output without delay. However, hardware may not always be + * capable of this. So for modes based on a block cipher, allow the + * implementation to delay the output until it has a full block. */ +#define PSA_AEAD_UPDATE_OUTPUT_SIZE(alg, input_length) \ + (PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_ROUND_UP_TO_MULTIPLE(PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE, (input_length)) : \ + (input_length)) + +/** A sufficient ciphertext buffer size for psa_aead_finish(). + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_finish() will not fail due to an + * insufficient ciphertext buffer size. The actual size of the output may + * be smaller in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient ciphertext buffer size for the + * specified algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_FINISH_OUTPUT_SIZE(alg) \ + (PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE : \ + 0) + +/** A sufficient plaintext buffer size for psa_aead_verify(). + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_verify() will not fail due to an + * insufficient plaintext buffer size. The actual size of the output may + * be smaller in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient plaintext buffer size for the + * specified algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_VERIFY_OUTPUT_SIZE(alg) \ + (PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE : \ + 0) + +#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + 2 * PSA_HASH_SIZE(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \ + 11 /*PKCS#1v1.5*/) + +/** + * \brief ECDSA signature size for a given curve bit size + * + * \param curve_bits Curve size in bits. + * \return Signature size in bytes. + * + * \note This macro returns a compile-time constant if its argument is one. + */ +#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ + (PSA_BITS_TO_BYTES(curve_bits) * 2) + +/** Sufficient signature buffer size for psa_sign_hash(). + * + * This macro returns a sufficient buffer size for a signature using a key + * of the specified type and size, with the specified algorithm. + * Note that the actual size of the signature may be smaller + * (some algorithms produce a variable-size signature). + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_sign_hash() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ + PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \ + ((void)alg, 0)) + +#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \ + PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) + +/** \def PSA_SIGNATURE_MAX_SIZE + * + * Maximum size of an asymmetric signature. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a signature supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +#define PSA_SIGNATURE_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \ + PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \ + PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE) + +/** Sufficient output buffer size for psa_asymmetric_encrypt(). + * + * This macro returns a sufficient buffer size for a ciphertext produced using + * a key of the specified type and size, with the specified algorithm. + * Note that the actual size of the ciphertext may be smaller, depending + * on the algorithm. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_asymmetric_encrypt() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? \ + ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ + 0) + +/** Sufficient output buffer size for psa_asymmetric_decrypt(). + * + * This macro returns a sufficient buffer size for a ciphertext produced using + * a key of the specified type and size, with the specified algorithm. + * Note that the actual size of the ciphertext may be smaller, depending + * on the algorithm. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_asymmetric_decrypt() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? \ + PSA_BITS_TO_BYTES(key_bits) - PSA_RSA_MINIMUM_PADDING_SIZE(alg) : \ + 0) + +/* Maximum size of the ASN.1 encoding of an INTEGER with the specified + * number of bits. + * + * This definition assumes that bits <= 2^19 - 9 so that the length field + * is at most 3 bytes. The length of the encoding is the length of the + * bit string padded to a whole number of bytes plus: + * - 1 type byte; + * - 1 to 3 length bytes; + * - 0 to 1 bytes of leading 0 due to the sign bit. + */ +#define PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(bits) \ + ((bits) / 8 + 5) + +/* Maximum size of the export encoding of an RSA public key. + * Assumes that the public exponent is less than 2^32. + * + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * + * - 4 bytes of SEQUENCE overhead; + * - n : INTEGER; + * - 7 bytes for the public exponent. + */ +#define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 11) + +/* Maximum size of the export encoding of an RSA key pair. + * Assumes thatthe public exponent is less than 2^32 and that the size + * difference between the two primes is at most 1 bit. + * + * RSAPrivateKey ::= SEQUENCE { + * version Version, -- 0 + * modulus INTEGER, -- N-bit + * publicExponent INTEGER, -- 32-bit + * privateExponent INTEGER, -- N-bit + * prime1 INTEGER, -- N/2-bit + * prime2 INTEGER, -- N/2-bit + * exponent1 INTEGER, -- N/2-bit + * exponent2 INTEGER, -- N/2-bit + * coefficient INTEGER, -- N/2-bit + * } + * + * - 4 bytes of SEQUENCE overhead; + * - 3 bytes of version; + * - 7 half-size INTEGERs plus 2 full-size INTEGERs, + * overapproximated as 9 half-size INTEGERS; + * - 7 bytes for the public exponent. + */ +#define PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) \ + (9 * PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE((key_bits) / 2 + 1) + 14) + +/* Maximum size of the export encoding of a DSA public key. + * + * SubjectPublicKeyInfo ::= SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING } -- contains DSAPublicKey + * AlgorithmIdentifier ::= SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters Dss-Parms } -- SEQUENCE of 3 INTEGERs + * DSAPublicKey ::= INTEGER -- public key, Y + * + * - 3 * 4 bytes of SEQUENCE overhead; + * - 1 + 1 + 7 bytes of algorithm (DSA OID); + * - 4 bytes of BIT STRING overhead; + * - 3 full-size INTEGERs (p, g, y); + * - 1 + 1 + 32 bytes for 1 sub-size INTEGER (q <= 256 bits). + */ +#define PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 59) + +/* Maximum size of the export encoding of a DSA key pair. + * + * DSAPrivateKey ::= SEQUENCE { + * version Version, -- 0 + * prime INTEGER, -- p + * subprime INTEGER, -- q + * generator INTEGER, -- g + * public INTEGER, -- y + * private INTEGER, -- x + * } + * + * - 4 bytes of SEQUENCE overhead; + * - 3 bytes of version; + * - 3 full-size INTEGERs (p, g, y); + * - 2 * (1 + 1 + 32) bytes for 2 sub-size INTEGERs (q, x <= 256 bits). + */ +#define PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 75) + +/* Maximum size of the export encoding of an ECC public key. + * + * The representation of an ECC public key is: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian; + * - where m is the bit size associated with the curve. + * + * - 1 byte + 2 * point size. + */ +#define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (2 * PSA_BITS_TO_BYTES(key_bits) + 1) + +/* Maximum size of the export encoding of an ECC key pair. + * + * An ECC key pair is represented by the secret value. + */ +#define PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) \ + (PSA_BITS_TO_BYTES(key_bits)) + +/** Sufficient output buffer size for psa_export_key() or psa_export_public_key(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * The following code illustrates how to allocate enough memory to export + * a key by querying the key type and size at runtime. + * \code{c} + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * psa_status_t status; + * status = psa_get_key_attributes(key, &attributes); + * if (status != PSA_SUCCESS) handle_error(...); + * psa_key_type_t key_type = psa_get_key_type(&attributes); + * size_t key_bits = psa_get_key_bits(&attributes); + * size_t buffer_size = PSA_KEY_EXPORT_MAX_SIZE(key_type, key_bits); + * psa_reset_key_attributes(&attributes); + * uint8_t *buffer = malloc(buffer_size); + * if (buffer == NULL) handle_error(...); + * size_t buffer_length; + * status = psa_export_key(key, buffer, buffer_size, &buffer_length); + * if (status != PSA_SUCCESS) handle_error(...); + * \endcode + * + * For psa_export_public_key(), calculate the buffer size from the + * public key type. You can use the macro #PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR + * to convert a key pair type to the corresponding public key type. + * \code{c} + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * psa_status_t status; + * status = psa_get_key_attributes(key, &attributes); + * if (status != PSA_SUCCESS) handle_error(...); + * psa_key_type_t key_type = psa_get_key_type(&attributes); + * psa_key_type_t public_key_type = PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(key_type); + * size_t key_bits = psa_get_key_bits(&attributes); + * size_t buffer_size = PSA_KEY_EXPORT_MAX_SIZE(public_key_type, key_bits); + * psa_reset_key_attributes(&attributes); + * uint8_t *buffer = malloc(buffer_size); + * if (buffer == NULL) handle_error(...); + * size_t buffer_length; + * status = psa_export_public_key(key, buffer, buffer_size, &buffer_length); + * if (status != PSA_SUCCESS) handle_error(...); + * \endcode + * + * \param key_type A supported key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_sign_hash() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_KEY_EXPORT_MAX_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \ + (key_type) == PSA_KEY_TYPE_RSA_KEY_PAIR ? PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_DSA_KEY_PAIR ? PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY ? PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + 0) + +#endif /* PSA_CRYPTO_SIZES_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_types.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_types.h new file mode 100644 index 00000000..d96c66e5 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_types.h @@ -0,0 +1,287 @@ +/** + * \file psa/crypto_types.h + * + * \brief PSA cryptography module: type aliases. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of integral types for properties + * of cryptographic keys, designations of cryptographic algorithms, and + * error codes returned by the library. + * + * This header file does not declare any function. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_TYPES_H +#define PSA_CRYPTO_TYPES_H + +#include + +/** \defgroup error Error codes + * @{ + */ + +/** + * \brief Function return status. + * + * This is either #PSA_SUCCESS (which is zero), indicating success, + * or a small negative value indicating that an error occurred. Errors are + * encoded as one of the \c PSA_ERROR_xxx values defined here. */ +/* If #PSA_SUCCESS is already defined, it means that #psa_status_t + * is also defined in an external header, so prevent its multiple + * definition. + */ +#ifndef PSA_SUCCESS +typedef int32_t psa_status_t; +#endif + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** \brief Encoding of a key type. + */ +typedef uint16_t psa_key_type_t; + +/** The type of PSA elliptic curve family identifiers. + * + * The curve identifier is required to create an ECC key using the + * PSA_KEY_TYPE_ECC_KEY_PAIR() or PSA_KEY_TYPE_ECC_PUBLIC_KEY() + * macros. + * + * Values defined by this standard will never be in the range 0x80-0xff. + * Vendors who define additional families must use an encoding in this range. + */ +typedef uint8_t psa_ecc_curve_t; + +/** The type of PSA Diffie-Hellman group family identifiers. + * + * The group identifier is required to create an Diffie-Hellman key using the + * PSA_KEY_TYPE_DH_KEY_PAIR() or PSA_KEY_TYPE_DH_PUBLIC_KEY() + * macros. + * + * Values defined by this standard will never be in the range 0x80-0xff. + * Vendors who define additional families must use an encoding in this range. + */ +typedef uint8_t psa_dh_group_t; + +/** \brief Encoding of a cryptographic algorithm. + * + * For algorithms that can be applied to multiple key types, this type + * does not encode the key type. For example, for symmetric ciphers + * based on a block cipher, #psa_algorithm_t encodes the block cipher + * mode and the padding mode while the block cipher itself is encoded + * via #psa_key_type_t. + */ +typedef uint32_t psa_algorithm_t; + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** Encoding of key lifetimes. + * + * The lifetime of a key indicates where it is stored and what system actions + * may create and destroy it. + * + * Keys with the lifetime #PSA_KEY_LIFETIME_VOLATILE are automatically + * destroyed when the application terminates or on a power reset. + * + * Keys with a lifetime other than #PSA_KEY_LIFETIME_VOLATILE are said + * to be _persistent_. + * Persistent keys are preserved if the application or the system restarts. + * Persistent keys have a key identifier of type #psa_key_id_t. + * The application can call psa_open_key() to open a persistent key that + * it created previously. + */ +typedef uint32_t psa_key_lifetime_t; + +/** Encoding of identifiers of persistent keys. + * + * - Applications may freely choose key identifiers in the range + * #PSA_KEY_ID_USER_MIN to #PSA_KEY_ID_USER_MAX. + * - Implementations may define additional key identifiers in the range + * #PSA_KEY_ID_VENDOR_MIN to #PSA_KEY_ID_VENDOR_MAX. + * - 0 is reserved as an invalid key identifier. + * - Key identifiers outside these ranges are reserved for future use. + */ +/* Implementation-specific quirk: The Mbed Crypto library can be built as + * part of a multi-client service that exposes the PSA Crypto API in each + * client and encodes the client identity in the key id argument of functions + * such as psa_open_key(). In this build configuration, we define + * psa_key_id_t in crypto_platform.h instead of here. */ +#if !defined(MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER) +typedef uint32_t psa_key_id_t; +#define PSA_KEY_ID_INIT 0 +#endif + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** \brief Encoding of permitted usage on a key. */ +typedef uint32_t psa_key_usage_t; + +/**@}*/ + +/** \defgroup attributes Key attributes + * @{ + */ + +/** The type of a structure containing key attributes. + * + * This is an opaque structure that can represent the metadata of a key + * object. Metadata that can be stored in attributes includes: + * - The location of the key in storage, indicated by its key identifier + * and its lifetime. + * - The key's policy, comprising usage flags and a specification of + * the permitted algorithm(s). + * - Information about the key itself: the key type and its size. + * - Implementations may define additional attributes. + * + * The actual key material is not considered an attribute of a key. + * Key attributes do not contain information that is generally considered + * highly confidential. + * + * An attribute structure can be a simple data structure where each function + * `psa_set_key_xxx` sets a field and the corresponding function + * `psa_get_key_xxx` retrieves the value of the corresponding field. + * However, implementations may report values that are equivalent to the + * original one, but have a different encoding. For example, an + * implementation may use a more compact representation for types where + * many bit-patterns are invalid or not supported, and store all values + * that it does not support as a special marker value. In such an + * implementation, after setting an invalid value, the corresponding + * get function returns an invalid value which may not be the one that + * was originally stored. + * + * An attribute structure may contain references to auxiliary resources, + * for example pointers to allocated memory or indirect references to + * pre-calculated values. In order to free such resources, the application + * must call psa_reset_key_attributes(). As an exception, calling + * psa_reset_key_attributes() on an attribute structure is optional if + * the structure has only been modified by the following functions + * since it was initialized or last reset with psa_reset_key_attributes(): + * - psa_set_key_id() + * - psa_set_key_lifetime() + * - psa_set_key_type() + * - psa_set_key_bits() + * - psa_set_key_usage_flags() + * - psa_set_key_algorithm() + * + * Before calling any function on a key attribute structure, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_attributes_t attributes; + * memset(&attributes, 0, sizeof(attributes)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_attributes_t attributes = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_ATTRIBUTES_INIT, + * for example: + * \code + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * \endcode + * - Assign the result of the function psa_key_attributes_init() + * to the structure, for example: + * \code + * psa_key_attributes_t attributes; + * attributes = psa_key_attributes_init(); + * \endcode + * + * A freshly initialized attribute structure contains the following + * values: + * + * - lifetime: #PSA_KEY_LIFETIME_VOLATILE. + * - key identifier: 0 (which is not a valid key identifier). + * - type: \c 0 (meaning that the type is unspecified). + * - key size: \c 0 (meaning that the size is unspecified). + * - usage flags: \c 0 (which allows no usage except exporting a public key). + * - algorithm: \c 0 (which allows no cryptographic usage, but allows + * exporting). + * + * A typical sequence to create a key is as follows: + * -# Create and initialize an attribute structure. + * -# If the key is persistent, call psa_set_key_id(). + * Also call psa_set_key_lifetime() to place the key in a non-default + * location. + * -# Set the key policy with psa_set_key_usage_flags() and + * psa_set_key_algorithm(). + * -# Set the key type with psa_set_key_type(). + * Skip this step if copying an existing key with psa_copy_key(). + * -# When generating a random key with psa_generate_key() or deriving a key + * with psa_key_derivation_output_key(), set the desired key size with + * psa_set_key_bits(). + * -# Call a key creation function: psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). This function reads + * the attribute structure, creates a key with these attributes, and + * outputs a handle to the newly created key. + * -# The attribute structure is now no longer necessary. + * You may call psa_reset_key_attributes(), although this is optional + * with the workflow presented here because the attributes currently + * defined in this specification do not require any additional resources + * beyond the structure itself. + * + * A typical sequence to query a key's attributes is as follows: + * -# Call psa_get_key_attributes(). + * -# Call `psa_get_key_xxx` functions to retrieve the attribute(s) that + * you are interested in. + * -# Call psa_reset_key_attributes() to free any resources that may be + * used by the attribute structure. + * + * Once a key has been created, it is impossible to change its attributes. + */ +typedef struct psa_key_attributes_s psa_key_attributes_t; + + +#ifndef __DOXYGEN_ONLY__ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +/* Mbed Crypto defines this type in crypto_types.h because it is also + * visible to applications through an implementation-specific extension. + * For the PSA Cryptography specification, this type is only visible + * via crypto_se_driver.h. */ +typedef uint64_t psa_key_slot_number_t; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ +#endif /* !__DOXYGEN_ONLY__ */ + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** \brief Encoding of the step of a key derivation. */ +typedef uint16_t psa_key_derivation_step_t; + +/**@}*/ + +#endif /* PSA_CRYPTO_TYPES_H */ diff --git a/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_values.h b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_values.h new file mode 100644 index 00000000..baaabff1 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/inc/psa/crypto_values.h @@ -0,0 +1,1705 @@ +/** + * \file psa/crypto_values.h + * + * \brief PSA cryptography module: macros to build and analyze integer values. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of macros to build and analyze + * values of integral types that encode properties of cryptographic keys, + * designations of cryptographic algorithms, and error codes returned by + * the library. + * + * This header file only defines preprocessor macros. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_VALUES_H +#define PSA_CRYPTO_VALUES_H + +/** \defgroup error Error codes + * @{ + */ + +/* PSA error codes */ + +/** The action was completed successfully. */ +#define PSA_SUCCESS ((psa_status_t)0) + +/** An error occurred that does not correspond to any defined + * failure cause. + * + * Implementations may use this error code if none of the other standard + * error codes are applicable. */ +#define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) + +/** The requested operation or a parameter is not supported + * by this implementation. + * + * Implementations should return this error code when an enumeration + * parameter such as a key type, algorithm, etc. is not recognized. + * If a combination of parameters is recognized and identified as + * not valid, return #PSA_ERROR_INVALID_ARGUMENT instead. */ +#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) + +/** The requested action is denied by a policy. + * + * Implementations should return this error code when the parameters + * are recognized as valid and supported, and a policy explicitly + * denies the requested operation. + * + * If a subset of the parameters of a function call identify a + * forbidden operation, and another subset of the parameters are + * not valid or not supported, it is unspecified whether the function + * returns #PSA_ERROR_NOT_PERMITTED, #PSA_ERROR_NOT_SUPPORTED or + * #PSA_ERROR_INVALID_ARGUMENT. */ +#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) + +/** An output buffer is too small. + * + * Applications can call the \c PSA_xxx_SIZE macro listed in the function + * description to determine a sufficient buffer size. + * + * Implementations should preferably return this error code only + * in cases when performing the operation with a larger output + * buffer would succeed. However implementations may return this + * error if a function has invalid or unsupported parameters in addition + * to the parameters that determine the necessary output buffer size. */ +#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) + +/** Asking for an item that already exists + * + * Implementations should return this error, when attempting + * to write an item (like a key) that already exists. */ +#define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) + +/** Asking for an item that doesn't exist + * + * Implementations should return this error, if a requested item (like + * a key) does not exist. */ +#define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) + +/** The requested action cannot be performed in the current state. + * + * Multipart operations return this error when one of the + * functions is called out of sequence. Refer to the function + * descriptions for permitted sequencing of functions. + * + * Implementations shall not return this error code to indicate + * that a key either exists or not, + * but shall instead return #PSA_ERROR_ALREADY_EXISTS or #PSA_ERROR_DOES_NOT_EXIST + * as applicable. + * + * Implementations shall not return this error code to indicate that a + * key handle is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. */ +#define PSA_ERROR_BAD_STATE ((psa_status_t)-137) + +/** The parameters passed to the function are invalid. + * + * Implementations may return this error any time a parameter or + * combination of parameters are recognized as invalid. + * + * Implementations shall not return this error code to indicate that a + * key handle is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. + */ +#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) + +/** There is not enough runtime memory. + * + * If the action is carried out across multiple security realms, this + * error can refer to available memory in any of the security realms. */ +#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) + +/** There is not enough persistent storage. + * + * Functions that modify the key storage return this error code if + * there is insufficient storage space on the host media. In addition, + * many functions that do not otherwise access storage may return this + * error code if the implementation requires a mandatory log entry for + * the requested action and the log storage space is full. */ +#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) + +/** There was a communication failure inside the implementation. + * + * This can indicate a communication failure between the application + * and an external cryptoprocessor or between the cryptoprocessor and + * an external volatile or persistent memory. A communication failure + * may be transient or permanent depending on the cause. + * + * \warning If a function returns this error, it is undetermined + * whether the requested action has completed or not. Implementations + * should return #PSA_SUCCESS on successful completion whenever + * possible, however functions may return #PSA_ERROR_COMMUNICATION_FAILURE + * if the requested action was completed successfully in an external + * cryptoprocessor but there was a breakdown of communication before + * the cryptoprocessor could report the status to the application. + */ +#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) + +/** There was a storage failure that may have led to data loss. + * + * This error indicates that some persistent storage is corrupted. + * It should not be used for a corruption of volatile memory + * (use #PSA_ERROR_CORRUPTION_DETECTED), for a communication error + * between the cryptoprocessor and its external storage (use + * #PSA_ERROR_COMMUNICATION_FAILURE), or when the storage is + * in a valid state but is full (use #PSA_ERROR_INSUFFICIENT_STORAGE). + * + * Note that a storage failure does not indicate that any data that was + * previously read is invalid. However this previously read data may no + * longer be readable from storage. + * + * When a storage failure occurs, it is no longer possible to ensure + * the global integrity of the keystore. Depending on the global + * integrity guarantees offered by the implementation, access to other + * data may or may not fail even if the data is still readable but + * its integrity cannot be guaranteed. + * + * Implementations should only use this error code to report a + * permanent storage corruption. However application writers should + * keep in mind that transient errors while reading the storage may be + * reported using this error code. */ +#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) + +/** A hardware failure was detected. + * + * A hardware failure may be transient or permanent depending on the + * cause. */ +#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) + +/** A tampering attempt was detected. + * + * If an application receives this error code, there is no guarantee + * that previously accessed or computed data was correct and remains + * confidential. Applications should not perform any security function + * and should enter a safe failure state. + * + * Implementations may return this error code if they detect an invalid + * state that cannot happen during normal operation and that indicates + * that the implementation's security guarantees no longer hold. Depending + * on the implementation architecture and on its security and safety goals, + * the implementation may forcibly terminate the application. + * + * This error code is intended as a last resort when a security breach + * is detected and it is unsure whether the keystore data is still + * protected. Implementations shall only return this error code + * to report an alarm from a tampering detector, to indicate that + * the confidentiality of stored data can no longer be guaranteed, + * or to indicate that the integrity of previously returned data is now + * considered compromised. Implementations shall not use this error code + * to indicate a hardware failure that merely makes it impossible to + * perform the requested operation (use #PSA_ERROR_COMMUNICATION_FAILURE, + * #PSA_ERROR_STORAGE_FAILURE, #PSA_ERROR_HARDWARE_FAILURE, + * #PSA_ERROR_INSUFFICIENT_ENTROPY or other applicable error code + * instead). + * + * This error indicates an attack against the application. Implementations + * shall not return this error code as a consequence of the behavior of + * the application itself. */ +#define PSA_ERROR_CORRUPTION_DETECTED ((psa_status_t)-151) + +/** There is not enough entropy to generate random data needed + * for the requested action. + * + * This error indicates a failure of a hardware random generator. + * Application writers should note that this error can be returned not + * only by functions whose purpose is to generate random data, such + * as key, IV or nonce generation, but also by functions that execute + * an algorithm with a randomized result, as well as functions that + * use randomization of intermediate computations as a countermeasure + * to certain attacks. + * + * Implementations should avoid returning this error after psa_crypto_init() + * has succeeded. Implementations should generate sufficient + * entropy during initialization and subsequently use a cryptographically + * secure pseudorandom generator (PRNG). However implementations may return + * this error at any time if a policy requires the PRNG to be reseeded + * during normal operation. */ +#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)-148) + +/** The signature, MAC or hash is incorrect. + * + * Verification functions return this error if the verification + * calculations completed successfully, and the value to be verified + * was determined to be incorrect. + * + * If the value to verify has an invalid size, implementations may return + * either #PSA_ERROR_INVALID_ARGUMENT or #PSA_ERROR_INVALID_SIGNATURE. */ +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) + +/** The decrypted padding is incorrect. + * + * \warning In some protocols, when decrypting data, it is essential that + * the behavior of the application does not depend on whether the padding + * is correct, down to precise timing. Applications should prefer + * protocols that use authenticated encryption rather than plain + * encryption. If the application must perform a decryption of + * unauthenticated data, the application writer should take care not + * to reveal whether the padding is invalid. + * + * Implementations should strive to make valid and invalid padding + * as close as possible to indistinguishable to an external observer. + * In particular, the timing of a decryption operation should not + * depend on the validity of the padding. */ +#define PSA_ERROR_INVALID_PADDING ((psa_status_t)-150) + +/** Return this error when there's insufficient data when attempting + * to read from a resource. */ +#define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) + +/** The key handle is not valid. See also :ref:\`key-handles\`. + */ +#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** An invalid key type value. + * + * Zero is not the encoding of any key type. + */ +#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x0000) + +/** Vendor-defined key type flag. + * + * Key types defined by this standard will never have the + * #PSA_KEY_TYPE_VENDOR_FLAG bit set. Vendors who define additional key types + * must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should + * respect the bitwise structure used by standard encodings whenever practical. + */ +#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x8000) + +#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x7000) +#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x1000) +#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x2000) +#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x4000) +#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x7000) + +#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x3000) + +/** Whether a key type is vendor-defined. + * + * See also #PSA_KEY_TYPE_VENDOR_FLAG. + */ +#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ + (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) + +/** Whether a key type is an unstructured array of bytes. + * + * This encompasses both symmetric keys and non-key data. + */ +#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_RAW || \ + ((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC) + +/** Whether a key type is asymmetric: either a key pair or a public key. */ +#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ + & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ + PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is the public part of a key pair. */ +#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is a key pair containing a private part and a public + * part. */ +#define PSA_KEY_TYPE_IS_KEY_PAIR(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) +/** The key pair type corresponding to a public key type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding key pair type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \ + ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) +/** The public key type corresponding to a key pair type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding public key type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \ + ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) + +/** Raw data. + * + * A "key" of this type cannot be used for any cryptographic operation. + * Applications may use this type to store arbitrary data in the keystore. */ +#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x1001) + +/** HMAC key. + * + * The key policy determines which underlying hash algorithm the key can be + * used for. + * + * HMAC keys should generally have the same size as the underlying hash. + * This size can be calculated with #PSA_HASH_SIZE(\c alg) where + * \c alg is the HMAC algorithm or the underlying hash algorithm. */ +#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x1100) + +/** A secret for key derivation. + * + * The key policy determines which key derivation algorithm the key + * can be used for. + */ +#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x1200) + +/** Key for a cipher, AEAD or MAC algorithm based on the AES block cipher. + * + * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or + * 32 bytes (AES-256). + */ +#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x2400) + +/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES). + * + * The size of the key can be 8 bytes (single DES), 16 bytes (2-key 3DES) or + * 24 bytes (3-key 3DES). + * + * Note that single DES and 2-key 3DES are weak and strongly + * deprecated and should only be used to decrypt legacy data. 3-key 3DES + * is weak and deprecated and should only be used in legacy protocols. + */ +#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x2301) + +/** Key for a cipher, AEAD or MAC algorithm based on the + * Camellia block cipher. */ +#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x2403) + +/** Key for the RC4 stream cipher. + * + * Note that RC4 is weak and deprecated and should only be used in + * legacy protocols. */ +#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x2002) + +/** Key for the ChaCha20 stream cipher or the Chacha20-Poly1305 AEAD algorithm. + * + * ChaCha20 and the ChaCha20_Poly1305 construction are defined in RFC 7539. + * + * Implementations must support 12-byte nonces, may support 8-byte nonces, + * and should reject other sizes. + */ +#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x2004) + +/** RSA public key. */ +#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x4001) +/** RSA key pair (private and public key). */ +#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x7001) +/** Whether a key type is an RSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_RSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) + +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x4100) +#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x7100) +#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x00ff) +/** Elliptic curve key pair. + * + * \param curve A value of type ::psa_ecc_curve_t that identifies the + * ECC curve to be used. + */ +#define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ + (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve)) +/** Elliptic curve public key. + * + * \param curve A value of type ::psa_ecc_curve_t that identifies the + * ECC curve to be used. + */ +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ + (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) + +/** Whether a key type is an elliptic curve key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_ECC(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ + ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) +/** Whether a key type is an elliptic curve key pair. */ +#define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_KEY_PAIR_BASE) +/** Whether a key type is an elliptic curve public key. */ +#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) + +/** Extract the curve from an elliptic curve key type. */ +#define PSA_KEY_TYPE_GET_CURVE(type) \ + ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ + ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ + 0)) + +/** SEC Koblitz curves over prime fields. + * + * This family comprises the following curves: + * secp192k1, secp224k1, secp256k1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECP_K1 ((psa_ecc_curve_t) 0x17) + +/** SEC random curves over prime fields. + * + * This family comprises the following curves: + * secp192k1, secp224r1, secp256r1, secp384r1, secp521r1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECP_R1 ((psa_ecc_curve_t) 0x12) +/* SECP160R2 (SEC2 v1, obsolete) */ +#define PSA_ECC_CURVE_SECP_R2 ((psa_ecc_curve_t) 0x1b) + +/** SEC Koblitz curves over binary fields. + * + * This family comprises the following curves: + * sect163k1, sect233k1, sect239k1, sect283k1, sect409k1, sect571k1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECT_K1 ((psa_ecc_curve_t) 0x27) + +/** SEC random curves over binary fields. + * + * This family comprises the following curves: + * sect163r1, sect233r1, sect283r1, sect409r1, sect571r1. + * They are defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECT_R1 ((psa_ecc_curve_t) 0x22) + +/** SEC additional random curves over binary fields. + * + * This family comprises the following curve: + * sect163r2. + * It is defined in _Standards for Efficient Cryptography_, + * _SEC 2: Recommended Elliptic Curve Domain Parameters_. + * https://www.secg.org/sec2-v2.pdf + */ +#define PSA_ECC_CURVE_SECT_R2 ((psa_ecc_curve_t) 0x2b) + +/** Brainpool P random curves. + * + * This family comprises the following curves: + * brainpoolP160r1, brainpoolP192r1, brainpoolP224r1, brainpoolP256r1, + * brainpoolP320r1, brainpoolP384r1, brainpoolP512r1. + * It is defined in RFC 5639. + */ +#define PSA_ECC_CURVE_BRAINPOOL_P_R1 ((psa_ecc_curve_t) 0x30) + +/** Curve25519 and Curve448. + * + * This family comprises the following Montgomery curves: + * - 255-bit: Bernstein et al., + * _Curve25519: new Diffie-Hellman speed records_, LNCS 3958, 2006. + * The algorithm #PSA_ALG_ECDH performs X25519 when used with this curve. + * - 448-bit: Hamburg, + * _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. + * The algorithm #PSA_ALG_ECDH performs X448 when used with this curve. + */ +#define PSA_ECC_CURVE_MONTGOMERY ((psa_ecc_curve_t) 0x41) + +#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x4200) +#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x7200) +#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x00ff) +/** Diffie-Hellman key pair. + * + * \param group A value of type ::psa_dh_group_t that identifies the + * Diffie-Hellman group to be used. + */ +#define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ + (PSA_KEY_TYPE_DH_KEY_PAIR_BASE | (group)) +/** Diffie-Hellman public key. + * + * \param group A value of type ::psa_dh_group_t that identifies the + * Diffie-Hellman group to be used. + */ +#define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ + (PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE | (group)) + +/** Whether a key type is a Diffie-Hellman key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_DH(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ + ~PSA_KEY_TYPE_DH_GROUP_MASK) == PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) +/** Whether a key type is a Diffie-Hellman key pair. */ +#define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \ + (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ + PSA_KEY_TYPE_DH_KEY_PAIR_BASE) +/** Whether a key type is a Diffie-Hellman public key. */ +#define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ + PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) + +/** Extract the group from a Diffie-Hellman key type. */ +#define PSA_KEY_TYPE_GET_GROUP(type) \ + ((psa_dh_group_t) (PSA_KEY_TYPE_IS_DH(type) ? \ + ((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \ + 0)) + +/** Diffie-Hellman groups defined in RFC 7919 Appendix A. + * + * This family includes groups with the following key sizes (in bits): + * 2048, 3072, 4096, 6144, 8192. A given implementation may support + * all of these sizes or only a subset. + */ +#define PSA_DH_GROUP_RFC7919 ((psa_dh_group_t) 0x03) + +#define PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) \ + (((type) >> 8) & 7) +/** The block size of a block cipher. + * + * \param type A cipher key type (value of type #psa_key_type_t). + * + * \return The block size for a block cipher, or 1 for a stream cipher. + * The return value is undefined if \p type is not a supported + * cipher key type. + * + * \note It is possible to build stream cipher algorithms on top of a block + * cipher, for example CTR mode (#PSA_ALG_CTR). + * This macro only takes the key type into account, so it cannot be + * used to determine the size of the data that #psa_cipher_update() + * might buffer for future processing in general. + * + * \note This macro returns a compile-time constant if its argument is one. + * + * \warning This macro may evaluate its argument multiple times. + */ +#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_SYMMETRIC ? \ + 1u << PSA_GET_KEY_TYPE_BLOCK_SIZE_EXPONENT(type) : \ + 0u) + +/** Vendor-defined algorithm flag. + * + * Algorithms defined by this standard will never have the #PSA_ALG_VENDOR_FLAG + * bit set. Vendors who define additional algorithms must use an encoding with + * the #PSA_ALG_VENDOR_FLAG bit set and should respect the bitwise structure + * used by standard encodings whenever practical. + */ +#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) + +#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) +#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000) +#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000) +#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) +#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000) +#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000) +#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000) +#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x20000000) +#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x30000000) + +/** Whether an algorithm is vendor-defined. + * + * See also #PSA_ALG_VENDOR_FLAG. + */ +#define PSA_ALG_IS_VENDOR_DEFINED(alg) \ + (((alg) & PSA_ALG_VENDOR_FLAG) != 0) + +/** Whether the specified algorithm is a hash algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) + +/** Whether the specified algorithm is a MAC algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_MAC(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) + +/** Whether the specified algorithm is a symmetric cipher algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a symmetric cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_CIPHER(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) + +/** Whether the specified algorithm is an authenticated encryption + * with associated data (AEAD) algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) + +/** Whether the specified algorithm is a public-key signature algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a public-key signature algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_SIGN(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) + +/** Whether the specified algorithm is a public-key encryption algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a public-key encryption algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) + +/** Whether the specified algorithm is a key agreement algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_AGREEMENT(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a key derivation algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key derivation algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_DERIVATION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) +/** MD2 */ +#define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001) +/** MD4 */ +#define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002) +/** MD5 */ +#define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003) +/** PSA_ALG_RIPEMD160 */ +#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004) +/** SHA1 */ +#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005) +/** SHA2-224 */ +#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008) +/** SHA2-256 */ +#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009) +/** SHA2-384 */ +#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a) +/** SHA2-512 */ +#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b) +/** SHA2-512/224 */ +#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c) +/** SHA2-512/256 */ +#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d) +/** SHA3-224 */ +#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010) +/** SHA3-256 */ +#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011) +/** SHA3-384 */ +#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012) +/** SHA3-512 */ +#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013) + +/** In a hash-and-sign algorithm policy, allow any hash algorithm. + * + * This value may be used to form the algorithm usage field of a policy + * for a signature algorithm that is parametrized by a hash. The key + * may then be used to perform operations using the same signature + * algorithm parametrized with any supported hash. + * + * That is, suppose that `PSA_xxx_SIGNATURE` is one of the following macros: + * - #PSA_ALG_RSA_PKCS1V15_SIGN, #PSA_ALG_RSA_PSS, + * - #PSA_ALG_ECDSA, #PSA_ALG_DETERMINISTIC_ECDSA. + * Then you may create and use a key as follows: + * - Set the key usage field using #PSA_ALG_ANY_HASH, for example: + * ``` + * psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH); // or VERIFY + * psa_set_key_algorithm(&attributes, PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH)); + * ``` + * - Import or generate key material. + * - Call psa_sign_hash() or psa_verify_hash(), passing + * an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each + * call to sign or verify a message may use a different hash. + * ``` + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...); + * ``` + * + * This value may not be used to build other algorithms that are + * parametrized over a hash. For any valid use of this macro to build + * an algorithm \c alg, #PSA_ALG_IS_HASH_AND_SIGN(\c alg) is true. + * + * This value may not be used to build an algorithm specification to + * perform an operation. It is only valid to build policies. + */ +#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x010000ff) + +#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) +#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000) +/** Macro to build an HMAC algorithm. + * + * For example, #PSA_ALG_HMAC(#PSA_ALG_SHA_256) is HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HMAC algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HMAC(hash_alg) \ + (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is an HMAC algorithm. + * + * HMAC is a family of MAC algorithms that are based on a hash function. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an HMAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HMAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_HMAC_BASE) + +/* In the encoding of a MAC algorithm, the bits corresponding to + * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is + * truncated. As an exception, the value 0 means the untruncated algorithm, + * whatever its length is. The length is encoded in 6 bits, so it can + * reach up to 63; the largest MAC is 64 bytes so its trivial truncation + * to full length is correctly encoded as 0 and any non-trivial truncation + * is correctly encoded as a value between 1 and 63. */ +#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x00003f00) +#define PSA_MAC_TRUNCATION_OFFSET 8 + +/** Macro to build a truncated MAC algorithm. + * + * A truncated MAC algorithm is identical to the corresponding MAC + * algorithm except that the MAC value for the truncated algorithm + * consists of only the first \p mac_length bytes of the MAC value + * for the untruncated algorithm. + * + * \note This macro may allow constructing algorithm identifiers that + * are not valid, either because the specified length is larger + * than the untruncated MAC or because the specified length is + * smaller than permitted by the implementation. + * + * \note It is implementation-defined whether a truncated MAC that + * is truncated to the same length as the MAC of the untruncated + * algorithm is considered identical to the untruncated algorithm + * for policy comparison purposes. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * \param mac_length Desired length of the truncated MAC in bytes. + * This must be at most the full length of the MAC + * and must be at least an implementation-specified + * minimum. The implementation-specified minimum + * shall not be zero. + * + * \return The corresponding MAC algorithm with the specified + * length. + * \return Unspecified if \p alg is not a supported + * MAC algorithm or if \p mac_length is too small or + * too large for the specified MAC algorithm. + */ +#define PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length) \ + (((mac_alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) | \ + ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) + +/** Macro to build the base MAC algorithm corresponding to a truncated + * MAC algorithm. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * + * \return The corresponding base MAC algorithm. + * \return Unspecified if \p alg is not a supported + * MAC algorithm. + */ +#define PSA_ALG_FULL_LENGTH_MAC(mac_alg) \ + ((mac_alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) + +/** Length to which a MAC algorithm is truncated. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). + * + * \return Length of the truncated MAC in bytes. + * \return 0 if \p alg is a non-truncated MAC algorithm. + * \return Unspecified if \p alg is not a supported + * MAC algorithm. + */ +#define PSA_MAC_TRUNCATED_LENGTH(mac_alg) \ + (((mac_alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) + +#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000) +/** The CBC-MAC construction over a block cipher + * + * \warning CBC-MAC is insecure in many cases. + * A more secure mode, such as #PSA_ALG_CMAC, is recommended. + */ +#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001) +/** The CMAC construction over a block cipher */ +#define PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002) + +/** Whether the specified algorithm is a MAC algorithm based on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm based on a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_CIPHER_MAC_BASE) + +#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000) +#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is a stream cipher. + * + * A stream cipher is a symmetric cipher that encrypts or decrypts messages + * by applying a bitwise-xor with a stream of bytes that is generated + * from a key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a stream cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier or if it is not a symmetric cipher algorithm. + */ +#define PSA_ALG_IS_STREAM_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ + (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) + +/** The ARC4 stream cipher algorithm. + */ +#define PSA_ALG_ARC4 ((psa_algorithm_t)0x04800001) + +/** The ChaCha20 stream cipher. + * + * ChaCha20 is defined in RFC 7539. + * + * The nonce size for psa_cipher_set_iv() or psa_cipher_generate_iv() + * must be 12. + * + * The initial block counter is always 0. + * + */ +#define PSA_ALG_CHACHA20 ((psa_algorithm_t)0x04800005) + +/** The CTR stream cipher mode. + * + * CTR is a stream cipher which is built from a block cipher. + * The underlying block cipher is determined by the key type. + * For example, to use AES-128-CTR, use this algorithm with + * a key of type #PSA_KEY_TYPE_AES and a length of 128 bits (16 bytes). + */ +#define PSA_ALG_CTR ((psa_algorithm_t)0x04c00001) + +/** The CFB stream cipher mode. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_CFB ((psa_algorithm_t)0x04c00002) + +/** The OFB stream cipher mode. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_OFB ((psa_algorithm_t)0x04c00003) + +/** The XTS cipher mode. + * + * XTS is a cipher mode which is built from a block cipher. It requires at + * least one full block of input, but beyond this minimum the input + * does not need to be a whole number of blocks. + */ +#define PSA_ALG_XTS ((psa_algorithm_t)0x044000ff) + +/** The CBC block cipher chaining mode, with no padding. + * + * The underlying block cipher is determined by the key type. + * + * This symmetric cipher mode can only be used with messages whose lengths + * are whole number of blocks for the chosen block cipher. + */ +#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04600100) + +/** The CBC block cipher chaining mode with PKCS#7 padding. + * + * The underlying block cipher is determined by the key type. + * + * This is the padding method defined by PKCS#7 (RFC 2315) §10.3. + */ +#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101) + +#define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is an AEAD mode on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm which is an AEAD mode based on + * a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) == \ + (PSA_ALG_CATEGORY_AEAD | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) + +/** The CCM authenticated encryption algorithm. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_CCM ((psa_algorithm_t)0x06401001) + +/** The GCM authenticated encryption algorithm. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_GCM ((psa_algorithm_t)0x06401002) + +/** The Chacha20-Poly1305 AEAD algorithm. + * + * The ChaCha20_Poly1305 construction is defined in RFC 7539. + * + * Implementations must support 12-byte nonces, may support 8-byte nonces, + * and should reject other sizes. + * + * Implementations must support 16-byte tags and should reject other sizes. + */ +#define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t)0x06001005) + +/* In the encoding of a AEAD algorithm, the bits corresponding to + * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag. + * The constants for default lengths follow this encoding. + */ +#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x00003f00) +#define PSA_AEAD_TAG_LENGTH_OFFSET 8 + +/** Macro to build a shortened AEAD algorithm. + * + * A shortened AEAD algorithm is similar to the corresponding AEAD + * algorithm, but has an authentication tag that consists of fewer bytes. + * Depending on the algorithm, the tag length may affect the calculation + * of the ciphertext. + * + * \param aead_alg An AEAD algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_AEAD(\p alg) + * is true). + * \param tag_length Desired length of the authentication tag in bytes. + * + * \return The corresponding AEAD algorithm with the specified + * length. + * \return Unspecified if \p alg is not a supported + * AEAD algorithm or if \p tag_length is not valid + * for the specified AEAD algorithm. + */ +#define PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, tag_length) \ + (((aead_alg) & ~PSA_ALG_AEAD_TAG_LENGTH_MASK) | \ + ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ + PSA_ALG_AEAD_TAG_LENGTH_MASK)) + +/** Calculate the corresponding AEAD algorithm with the default tag length. + * + * \param aead_alg An AEAD algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The corresponding AEAD algorithm with the default + * tag length for that algorithm. + */ +#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(aead_alg) \ + ( \ + PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, PSA_ALG_CCM) \ + PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, PSA_ALG_GCM) \ + PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, PSA_ALG_CHACHA20_POLY1305) \ + 0) +#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, ref) \ + PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, 0) == \ + PSA_ALG_AEAD_WITH_TAG_LENGTH(ref, 0) ? \ + ref : + +#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000) +/** RSA PKCS#1 v1.5 signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PKCS1-v1_5. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PKCS#1 v1.5 signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ + (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Raw PKCS#1 v1.5 signature. + * + * The input to this algorithm is the DigestInfo structure used by + * RFC 8017 (PKCS#1: RSA Cryptography Specifications), §9.2 + * steps 3–6. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE +#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) + +#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000) +/** RSA PSS signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PSS, with the message generation function MGF1, and with + * a salt length equal to the length of the hash. The specified + * hash algorithm is used to hash the input message, to create the + * salted hash, and for the mask generation. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PSS signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PSS(hash_alg) \ + (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_PSS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) + +#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000) +/** ECDSA signature with hashing. + * + * This is the ECDSA signature scheme defined by ANSI X9.62, + * with a random per-message secret number (*k*). + * + * The representation of the signature as a byte string consists of + * the concatentation of the signature values *r* and *s*. Each of + * *r* and *s* is encoded as an *N*-octet string, where *N* is the length + * of the base point of the curve in octets. Each value is represented + * in big-endian order (most significant octet first). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding ECDSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_ECDSA(hash_alg) \ + (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** ECDSA signature without hashing. + * + * This is the same signature scheme as #PSA_ALG_ECDSA(), but + * without specifying a hash algorithm. This algorithm may only be + * used to sign or verify a sequence of bytes that should be an + * already-calculated hash. Note that the input is padded with + * zeros on the left or truncated on the left as required to fit + * the curve size. + */ +#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE +#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000) +/** Deterministic ECDSA signature with hashing. + * + * This is the deterministic ECDSA signature scheme defined by RFC 6979. + * + * The representation of a signature is the same as with #PSA_ALG_ECDSA(). + * + * Note that when this algorithm is used for verification, signatures + * made with randomized ECDSA (#PSA_ALG_ECDSA(\p hash_alg)) with the + * same private key are accepted. In other words, + * #PSA_ALG_DETERMINISTIC_ECDSA(\p hash_alg) differs from + * #PSA_ALG_ECDSA(\p hash_alg) only for signature, not for verification. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding deterministic ECDSA signature + * algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) +#define PSA_ALG_IS_ECDSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_ECDSA_BASE) +#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) + +/** Whether the specified algorithm is a hash-and-sign algorithm. + * + * Hash-and-sign algorithms are public-key signature algorithms structured + * in two parts: first the calculation of a hash in a way that does not + * depend on the key, then the calculation of a signature from the + * hash value and the key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash-and-sign algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH_AND_SIGN(alg) \ + (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ + PSA_ALG_IS_ECDSA(alg)) + +/** Get the hash used by a hash-and-sign signature algorithm. + * + * A hash-and-sign algorithm is a signature algorithm which is + * composed of two phases: first a hashing phase which does not use + * the key and produces a hash of the input message, then a signing + * phase which only uses the hash and the key and not the message + * itself. + * + * \param alg A signature algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_SIGN(\p alg) is true). + * + * \return The underlying hash algorithm if \p alg is a hash-and-sign + * algorithm. + * \return 0 if \p alg is a signature algorithm that does not + * follow the hash-and-sign structure. + * \return Unspecified if \p alg is not a signature algorithm or + * if it is not supported by the implementation. + */ +#define PSA_ALG_SIGN_GET_HASH(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) == 0 ? /*"raw" algorithm*/ 0 : \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +/** RSA PKCS#1 v1.5 encryption. + */ +#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000) + +#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000) +/** RSA OAEP encryption. + * + * This is the encryption scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSAES-OAEP, with the message generation function MGF1. + * + * \param hash_alg The hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true) to use + * for MGF1. + * + * \return The corresponding RSA OAEP signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_OAEP(hash_alg) \ + (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_OAEP(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) +#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x20000100) +/** Macro to build an HKDF algorithm. + * + * For example, `PSA_ALG_HKDF(PSA_ALG_SHA256)` is HKDF using HMAC-SHA-256. + * + * This key derivation algorithm uses the following inputs: + * - #PSA_KEY_DERIVATION_INPUT_SALT is the salt used in the "extract" step. + * It is optional; if omitted, the derivation uses an empty salt. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key used in the "extract" step. + * - #PSA_KEY_DERIVATION_INPUT_INFO is the info string used in the "expand" step. + * You must pass #PSA_KEY_DERIVATION_INPUT_SALT before #PSA_KEY_DERIVATION_INPUT_SECRET. + * You may pass #PSA_KEY_DERIVATION_INPUT_INFO at any time after steup and before + * starting to generate output. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HKDF algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HKDF(hash_alg) \ + (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Whether the specified algorithm is an HKDF algorithm. + * + * HKDF is a family of key derivation algorithms that are based on a hash + * function and the HMAC construction. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an HKDF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_HKDF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) +#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x20000200) +/** Macro to build a TLS-1.2 PRF algorithm. + * + * TLS 1.2 uses a custom pseudorandom function (PRF) for key schedule, + * specified in Section 5 of RFC 5246. It is based on HMAC and can be + * used with either SHA-256 or SHA-384. + * + * This key derivation algorithm uses the following inputs, which must be + * passed in the order given here: + * - #PSA_KEY_DERIVATION_INPUT_SEED is the seed. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key. + * - #PSA_KEY_DERIVATION_INPUT_LABEL is the label. + * + * For the application to TLS-1.2 key expansion, the seed is the + * concatenation of ServerHello.Random + ClientHello.Random, + * and the label is "key expansion". + * + * For example, `PSA_ALG_TLS12_PRF(PSA_ALG_SHA256)` represents the + * TLS 1.2 PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PRF algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PRF(hash_alg) \ + (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PRF algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PRF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PRF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) +#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x20000300) +/** Macro to build a TLS-1.2 PSK-to-MasterSecret algorithm. + * + * In a pure-PSK handshake in TLS 1.2, the master secret is derived + * from the PreSharedKey (PSK) through the application of padding + * (RFC 4279, Section 2) and the TLS-1.2 PRF (RFC 5246, Section 5). + * The latter is based on HMAC and can be used with either SHA-256 + * or SHA-384. + * + * This key derivation algorithm uses the following inputs, which must be + * passed in the order given here: + * - #PSA_KEY_DERIVATION_INPUT_SEED is the seed. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key. + * - #PSA_KEY_DERIVATION_INPUT_LABEL is the label. + * + * For the application to TLS-1.2, the seed (which is + * forwarded to the TLS-1.2 PRF) is the concatenation of the + * ClientHello.Random + ServerHello.Random, + * and the label is "master secret" or "extended master secret". + * + * For example, `PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA256)` represents the + * TLS-1.2 PSK to MasterSecret derivation PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PSK to MS algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ + (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PSK to MS algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PSK to MS algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) +#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0x0803ffff) +#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0x10fc0000) + +/** Macro to build a combined algorithm that chains a key agreement with + * a key derivation. + * + * \param ka_alg A key agreement algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_AGREEMENT(\p ka_alg) is true). + * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_DERIVATION(\p kdf_alg) is true). + * + * \return The corresponding key agreement and derivation + * algorithm. + * \return Unspecified if \p ka_alg is not a supported + * key agreement algorithm or \p kdf_alg is not a + * supported key derivation algorithm. + */ +#define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \ + ((ka_alg) | (kdf_alg)) + +#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ + (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ + (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a raw key agreement algorithm. + * + * A raw key agreement algorithm is one that does not specify + * a key derivation function. + * Usually, raw key agreement algorithms are constructed directly with + * a \c PSA_ALG_xxx macro while non-raw key agreement algorithms are + * constructed with PSA_ALG_KEY_AGREEMENT(). + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a raw key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \ + (PSA_ALG_IS_KEY_AGREEMENT(alg) && \ + PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \ + ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg))) + +/** The finite-field Diffie-Hellman (DH) key agreement algorithm. + * + * The shared secret produced by key agreement is + * `g^{ab}` in big-endian format. + * It is `ceiling(m / 8)` bytes long where `m` is the size of the prime `p` + * in bits. + */ +#define PSA_ALG_FFDH ((psa_algorithm_t)0x30100000) + +/** Whether the specified algorithm is a finite field Diffie-Hellman algorithm. + * + * This includes the raw finite field Diffie-Hellman algorithm as well as + * finite-field Diffie-Hellman followed by any supporter key derivation + * algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a finite field Diffie-Hellman algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_FFDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH) + +/** The elliptic curve Diffie-Hellman (ECDH) key agreement algorithm. + * + * The shared secret produced by key agreement is the x-coordinate of + * the shared secret point. It is always `ceiling(m / 8)` bytes long where + * `m` is the bit size associated with the curve, i.e. the bit size of the + * order of the curve's coordinate field. When `m` is not a multiple of 8, + * the byte containing the most significant bit of the shared secret + * is padded with zero bits. The byte order is either little-endian + * or big-endian depending on the curve type. + * + * - For Montgomery curves (curve types `PSA_ECC_CURVE_CURVEXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in little-endian byte order. + * The bit size is 448 for Curve448 and 255 for Curve25519. + * - For Weierstrass curves over prime fields (curve types + * `PSA_ECC_CURVE_SECPXXX` and `PSA_ECC_CURVE_BRAINPOOL_PXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m = ceiling(log_2(p))` for the field `F_p`. + * - For Weierstrass curves over binary fields (curve types + * `PSA_ECC_CURVE_SECTXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m` for the field `F_{2^m}`. + */ +#define PSA_ALG_ECDH ((psa_algorithm_t)0x30200000) + +/** Whether the specified algorithm is an elliptic curve Diffie-Hellman + * algorithm. + * + * This includes the raw elliptic curve Diffie-Hellman algorithm as well as + * elliptic curve Diffie-Hellman followed by any supporter key derivation + * algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an elliptic curve Diffie-Hellman algorithm, + * 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_ECDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH) + +/** Whether the specified algorithm encoding is a wildcard. + * + * Wildcard values may only be used to set the usage algorithm field in + * a policy, not to perform an operation. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a wildcard algorithm encoding. + * \return 0 if \c alg is a non-wildcard algorithm encoding (suitable for + * an operation). + * \return This macro may return either 0 or 1 if \c alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_WILDCARD(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \ + (alg) == PSA_ALG_ANY_HASH) + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** A volatile key only exists as long as the handle to it is not closed. + * The key material is guaranteed to be erased on a power reset. + */ +#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) + +/** The default storage area for persistent keys. + * + * A persistent key remains in storage until it is explicitly destroyed or + * until the corresponding storage area is wiped. This specification does + * not define any mechanism to wipe a storage area, but implementations may + * provide their own mechanism (for example to perform a factory reset, + * to prepare for device refurbishment, or to uninstall an application). + * + * This lifetime value is the default storage area for the calling + * application. Implementations may offer other storage areas designated + * by other lifetime values as implementation-specific extensions. + */ +#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) + +/** The minimum value for a key identifier chosen by the application. + */ +#define PSA_KEY_ID_USER_MIN ((psa_app_key_id_t)0x00000001) +/** The maximum value for a key identifier chosen by the application. + */ +#define PSA_KEY_ID_USER_MAX ((psa_app_key_id_t)0x3fffffff) +/** The minimum value for a key identifier chosen by the implementation. + */ +#define PSA_KEY_ID_VENDOR_MIN ((psa_app_key_id_t)0x40000000) +/** The maximum value for a key identifier chosen by the implementation. + */ +#define PSA_KEY_ID_VENDOR_MAX ((psa_app_key_id_t)0x7fffffff) + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** Whether the key may be exported. + * + * A public key or the public part of a key pair may always be exported + * regardless of the value of this permission flag. + * + * If a key does not have export permission, implementations shall not + * allow the key to be exported in plain form from the cryptoprocessor, + * whether through psa_export_key() or through a proprietary interface. + * The key may however be exportable in a wrapped form, i.e. in a form + * where it is encrypted by another key. + */ +#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) + +/** Whether the key may be copied. + * + * This flag allows the use of psa_copy_key() to make a copy of the key + * with the same policy or a more restrictive policy. + * + * For lifetimes for which the key is located in a secure element which + * enforce the non-exportability of keys, copying a key outside the secure + * element also requires the usage flag #PSA_KEY_USAGE_EXPORT. + * Copying the key inside the secure element is permitted with just + * #PSA_KEY_USAGE_COPY if the secure element supports it. + * For keys with the lifetime #PSA_KEY_LIFETIME_VOLATILE or + * #PSA_KEY_LIFETIME_PERSISTENT, the usage flag #PSA_KEY_USAGE_COPY + * is sufficient to permit the copy. + */ +#define PSA_KEY_USAGE_COPY ((psa_key_usage_t)0x00000002) + +/** Whether the key may be used to encrypt a message. + * + * This flag allows the key to be used for a symmetric encryption operation, + * for an AEAD encryption-and-authentication operation, + * or for an asymmetric encryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) + +/** Whether the key may be used to decrypt a message. + * + * This flag allows the key to be used for a symmetric decryption operation, + * for an AEAD decryption-and-verification operation, + * or for an asymmetric decryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) + +/** Whether the key may be used to sign a message. + * + * This flag allows the key to be used for a MAC calculation operation + * or for an asymmetric signature operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00000400) + +/** Whether the key may be used to verify a message signature. + * + * This flag allows the key to be used for a MAC verification operation + * or for an asymmetric signature verification operation, + * if otherwise permitted by by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00000800) + +/** Whether the key may be used to derive other keys. + */ +#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000) + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** A secret input for key derivation. + * + * This should be a key of type #PSA_KEY_TYPE_DERIVE + * (passed to psa_key_derivation_input_key()) + * or the shared secret resulting from a key agreement + * (obtained via psa_key_derivation_key_agreement()). + * + * The secret can also be a direct input (passed to + * key_derivation_input_bytes()). In this case, the derivation operation + * may not be used to derive keys: the operation will only allow + * psa_key_derivation_output_bytes(), not psa_key_derivation_output_key(). + */ +#define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t)0x0101) + +/** A label for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t)0x0201) + +/** A salt for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t)0x0202) + +/** An information string for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t)0x0203) + +/** A seed for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t)0x0204) + +/**@}*/ + +#endif /* PSA_CRYPTO_VALUES_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h new file mode 100644 index 00000000..938abd07 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h @@ -0,0 +1,473 @@ +/** + * \file psa/crypto_struct.h + * + * \brief PSA cryptography module: Mbed TLS structured type implementations + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains the definitions of some data structures with + * implementation-specific definitions. + * + * In implementations with isolation between the application and the + * cryptography module, it is expected that the front-end and the back-end + * would have different versions of this file. + * + *

    Design notes about multipart operation structures

    + * + * Each multipart operation structure contains a `psa_algorithm_t alg` + * field which indicates which specific algorithm the structure is for. + * When the structure is not in use, `alg` is 0. Most of the structure + * consists of a union which is discriminated by `alg`. + * + * Note that when `alg` is 0, the content of other fields is undefined. + * In particular, it is not guaranteed that a freshly-initialized structure + * is all-zero: we initialize structures to something like `{0, 0}`, which + * is only guaranteed to initializes the first member of the union; + * GCC and Clang initialize the whole structure to 0 (at the time of writing), + * but MSVC and CompCert don't. + * + * In Mbed Crypto, multipart operation structures live independently from + * the key. This allows Mbed Crypto to free the key objects when destroying + * a key slot. If a multipart operation needs to remember the key after + * the setup function returns, the operation structure needs to contain a + * copy of the key. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_STRUCT_H +#define PSA_CRYPTO_STRUCT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" +#include "mbedtls/cmac.h" +#include "mbedtls/gcm.h" +#include "mbedtls/md.h" +#include "mbedtls/md2.h" +#include "mbedtls/md4.h" +#include "mbedtls/md5.h" +#include "mbedtls/ripemd160.h" +#include "mbedtls/sha1.h" +#include "mbedtls/sha256.h" +#include "mbedtls/sha512.h" + +struct psa_hash_operation_s +{ + psa_algorithm_t alg; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_MD2_C) + mbedtls_md2_context md2; +#endif +#if defined(MBEDTLS_MD4_C) + mbedtls_md4_context md4; +#endif +#if defined(MBEDTLS_MD5_C) + mbedtls_md5_context md5; +#endif +#if defined(MBEDTLS_RIPEMD160_C) + mbedtls_ripemd160_context ripemd160; +#endif +#if defined(MBEDTLS_SHA1_C) + mbedtls_sha1_context sha1; +#endif +#if defined(MBEDTLS_SHA256_C) + mbedtls_sha256_context sha256; +#endif +#if defined(MBEDTLS_SHA512_C) + mbedtls_sha512_context sha512; +#endif + } ctx; +}; + +#define PSA_HASH_OPERATION_INIT {0, {0}} +static inline struct psa_hash_operation_s psa_hash_operation_init( void ) +{ + const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; + return( v ); +} + +#if defined(MBEDTLS_MD_C) +typedef struct +{ + /** The hash context. */ + struct psa_hash_operation_s hash_ctx; + /** The HMAC part of the context. */ + uint8_t opad[PSA_HMAC_MAX_HASH_BLOCK_SIZE]; +} psa_hmac_internal_data; +#endif /* MBEDTLS_MD_C */ + +struct psa_mac_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_required : 1; + unsigned int iv_set : 1; + unsigned int has_input : 1; + unsigned int is_sign : 1; + uint8_t mac_size; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_MD_C) + psa_hmac_internal_data hmac; +#endif +#if defined(MBEDTLS_CMAC_C) + mbedtls_cipher_context_t cmac; +#endif + } ctx; +}; + +#define PSA_MAC_OPERATION_INIT {0, 0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_mac_operation_s psa_mac_operation_init( void ) +{ + const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; + return( v ); +} + +struct psa_cipher_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_required : 1; + unsigned int iv_set : 1; + uint8_t iv_size; + uint8_t block_size; + union + { + unsigned dummy; /* Enable easier initializing of the union. */ + mbedtls_cipher_context_t cipher; + } ctx; +}; + +#define PSA_CIPHER_OPERATION_INIT {0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) +{ + const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; + return( v ); +} + +struct psa_aead_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_set : 1; + uint8_t iv_size; + uint8_t block_size; + union + { + unsigned dummy; /* Enable easier initializing of the union. */ + mbedtls_cipher_context_t cipher; + } ctx; +}; + +#define PSA_AEAD_OPERATION_INIT {0, 0, 0, 0, 0, {0}} +static inline struct psa_aead_operation_s psa_aead_operation_init( void ) +{ + const struct psa_aead_operation_s v = PSA_AEAD_OPERATION_INIT; + return( v ); +} + +#if defined(MBEDTLS_MD_C) +typedef struct +{ + uint8_t *info; + size_t info_length; + psa_hmac_internal_data hmac; + uint8_t prk[PSA_HASH_MAX_SIZE]; + uint8_t output_block[PSA_HASH_MAX_SIZE]; +#if PSA_HASH_MAX_SIZE > 0xff +#error "PSA_HASH_MAX_SIZE does not fit in uint8_t" +#endif + uint8_t offset_in_block; + uint8_t block_number; + unsigned int state : 2; + unsigned int info_set : 1; +} psa_hkdf_key_derivation_t; +#endif /* MBEDTLS_MD_C */ + +#if defined(MBEDTLS_MD_C) +typedef enum +{ + TLS12_PRF_STATE_INIT, /* no input provided */ + TLS12_PRF_STATE_SEED_SET, /* seed has been set */ + TLS12_PRF_STATE_KEY_SET, /* key has been set */ + TLS12_PRF_STATE_LABEL_SET, /* label has been set */ + TLS12_PRF_STATE_OUTPUT /* output has been started */ +} psa_tls12_prf_key_derivation_state_t; + +typedef struct psa_tls12_prf_key_derivation_s +{ +#if PSA_HASH_MAX_SIZE > 0xff +#error "PSA_HASH_MAX_SIZE does not fit in uint8_t" +#endif + + /* Indicates how many bytes in the current HMAC block have + * not yet been read by the user. */ + uint8_t left_in_block; + + /* The 1-based number of the block. */ + uint8_t block_number; + + psa_tls12_prf_key_derivation_state_t state; + + uint8_t *seed; + size_t seed_length; + uint8_t *label; + size_t label_length; + psa_hmac_internal_data hmac; + uint8_t Ai[PSA_HASH_MAX_SIZE]; + + /* `HMAC_hash( prk, A(i) + seed )` in the notation of RFC 5246, Sect. 5. */ + uint8_t output_block[PSA_HASH_MAX_SIZE]; +} psa_tls12_prf_key_derivation_t; +#endif /* MBEDTLS_MD_C */ + +struct psa_key_derivation_s +{ + psa_algorithm_t alg; + unsigned int can_output_key : 1; + size_t capacity; + union + { + /* Make the union non-empty even with no supported algorithms. */ + uint8_t dummy; +#if defined(MBEDTLS_MD_C) + psa_hkdf_key_derivation_t hkdf; + psa_tls12_prf_key_derivation_t tls12_prf; +#endif + } ctx; +}; + +/* This only zeroes out the first byte in the union, the rest is unspecified. */ +#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, 0, {0}} +static inline struct psa_key_derivation_s psa_key_derivation_operation_init( void ) +{ + const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; + return( v ); +} + +struct psa_key_policy_s +{ + psa_key_usage_t usage; + psa_algorithm_t alg; + psa_algorithm_t alg2; +}; +typedef struct psa_key_policy_s psa_key_policy_t; + +#define PSA_KEY_POLICY_INIT {0, 0, 0} +static inline struct psa_key_policy_s psa_key_policy_init( void ) +{ + const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; + return( v ); +} + +/* The type used internally for key sizes. + * Public interfaces use size_t, but internally we use a smaller type. */ +typedef uint16_t psa_key_bits_t; +/* The maximum value of the type used to represent bit-sizes. + * This is used to mark an invalid key size. */ +#define PSA_KEY_BITS_TOO_LARGE ( (psa_key_bits_t) ( -1 ) ) +/* The maximum size of a key in bits. + * Currently defined as the maximum that can be represented, rounded down + * to a whole number of bytes. + * This is an uncast value so that it can be used in preprocessor + * conditionals. */ +#define PSA_MAX_KEY_BITS 0xfff8 + +/** A mask of flags that can be stored in key attributes. + * + * This type is also used internally to store flags in slots. Internal + * flags are defined in library/psa_crypto_core.h. Internal flags may have + * the same value as external flags if they are properly handled during + * key creation and in psa_get_key_attributes. + */ +typedef uint16_t psa_key_attributes_flag_t; + +#define MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER \ + ( (psa_key_attributes_flag_t) 0x0001 ) + +/* A mask of key attribute flags used externally only. + * Only meant for internal checks inside the library. */ +#define MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY ( \ + MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER | \ + 0 ) + +/* A mask of key attribute flags used both internally and externally. + * Currently there aren't any. */ +#define MBEDTLS_PSA_KA_MASK_DUAL_USE ( \ + 0 ) + +typedef struct +{ + psa_key_type_t type; + psa_key_bits_t bits; + psa_key_lifetime_t lifetime; + psa_key_id_t id; + psa_key_policy_t policy; + psa_key_attributes_flag_t flags; +} psa_core_key_attributes_t; + +#define PSA_CORE_KEY_ATTRIBUTES_INIT {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, PSA_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0} + +struct psa_key_attributes_s +{ + psa_core_key_attributes_t core; +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + psa_key_slot_number_t slot_number; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + void *domain_parameters; + size_t domain_parameters_size; +}; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +#define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, 0, NULL, 0} +#else +#define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, NULL, 0} +#endif + +static inline struct psa_key_attributes_s psa_key_attributes_init( void ) +{ + const struct psa_key_attributes_s v = PSA_KEY_ATTRIBUTES_INIT; + return( v ); +} + +static inline void psa_set_key_id(psa_key_attributes_t *attributes, + psa_key_id_t id) +{ + attributes->core.id = id; + if( attributes->core.lifetime == PSA_KEY_LIFETIME_VOLATILE ) + attributes->core.lifetime = PSA_KEY_LIFETIME_PERSISTENT; +} + +static inline psa_key_id_t psa_get_key_id( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.id ); +} + +static inline void psa_set_key_lifetime(psa_key_attributes_t *attributes, + psa_key_lifetime_t lifetime) +{ + attributes->core.lifetime = lifetime; + if( lifetime == PSA_KEY_LIFETIME_VOLATILE ) + { +#ifdef MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER + attributes->core.id.key_id = 0; + attributes->core.id.owner = 0; +#else + attributes->core.id = 0; +#endif + } +} + +static inline psa_key_lifetime_t psa_get_key_lifetime( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.lifetime ); +} + +static inline void psa_set_key_usage_flags(psa_key_attributes_t *attributes, + psa_key_usage_t usage_flags) +{ + attributes->core.policy.usage = usage_flags; +} + +static inline psa_key_usage_t psa_get_key_usage_flags( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.usage ); +} + +static inline void psa_set_key_algorithm(psa_key_attributes_t *attributes, + psa_algorithm_t alg) +{ + attributes->core.policy.alg = alg; +} + +static inline psa_algorithm_t psa_get_key_algorithm( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.alg ); +} + +/* This function is declared in crypto_extra.h, which comes after this + * header file, but we need the function here, so repeat the declaration. */ +psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length); + +static inline void psa_set_key_type(psa_key_attributes_t *attributes, + psa_key_type_t type) +{ + if( attributes->domain_parameters == NULL ) + { + /* Common case: quick path */ + attributes->core.type = type; + } + else + { + /* Call the bigger function to free the old domain paramteres. + * Ignore any errors which may arise due to type requiring + * non-default domain parameters, since this function can't + * report errors. */ + (void) psa_set_key_domain_parameters( attributes, type, NULL, 0 ); + } +} + +static inline psa_key_type_t psa_get_key_type( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.type ); +} + +static inline void psa_set_key_bits(psa_key_attributes_t *attributes, + size_t bits) +{ + if( bits > PSA_MAX_KEY_BITS ) + attributes->core.bits = PSA_KEY_BITS_TOO_LARGE; + else + attributes->core.bits = (psa_key_bits_t) bits; +} + +static inline size_t psa_get_key_bits( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.bits ); +} + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_STRUCT_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h new file mode 100644 index 00000000..edf3ab60 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h @@ -0,0 +1,175 @@ +/* + * PSA crypto core internal interfaces + */ +/* Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_CORE_H +#define PSA_CRYPTO_CORE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "psa/crypto.h" +#include "psa/crypto_se_driver.h" + +#include "mbedtls/ecp.h" +#include "mbedtls/rsa.h" + +/** The data structure representing a key slot, containing key material + * and metadata for one key. + */ +typedef struct +{ + psa_core_key_attributes_t attr; + union + { + /* Raw-data key (key_type_is_raw_bytes() in psa_crypto.c) */ + struct raw_data + { + uint8_t *data; + size_t bytes; + } raw; +#if defined(MBEDTLS_RSA_C) + /* RSA public key or key pair */ + mbedtls_rsa_context *rsa; +#endif /* MBEDTLS_RSA_C */ +#if defined(MBEDTLS_ECP_C) + /* EC public key or key pair */ + mbedtls_ecp_keypair *ecp; +#endif /* MBEDTLS_ECP_C */ +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + /* Any key type in a secure element */ + struct se + { + psa_key_slot_number_t slot_number; + } se; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + } data; +} psa_key_slot_t; + +/* A mask of key attribute flags used only internally. + * Currently there aren't any. */ +#define PSA_KA_MASK_INTERNAL_ONLY ( \ + 0 ) + +/** Test whether a key slot is occupied. + * + * A key slot is occupied iff the key type is nonzero. This works because + * no valid key can have 0 as its key type. + * + * \param[in] slot The key slot to test. + * + * \return 1 if the slot is occupied, 0 otherwise. + */ +static inline int psa_is_key_slot_occupied( const psa_key_slot_t *slot ) +{ + return( slot->attr.type != 0 ); +} + +/** Retrieve flags from psa_key_slot_t::attr::core::flags. + * + * \param[in] slot The key slot to query. + * \param mask The mask of bits to extract. + * + * \return The key attribute flags in the given slot, + * bitwise-anded with \p mask. + */ +static inline uint16_t psa_key_slot_get_flags( const psa_key_slot_t *slot, + uint16_t mask ) +{ + return( slot->attr.flags & mask ); +} + +/** Set flags in psa_key_slot_t::attr::core::flags. + * + * \param[in,out] slot The key slot to modify. + * \param mask The mask of bits to modify. + * \param value The new value of the selected bits. + */ +static inline void psa_key_slot_set_flags( psa_key_slot_t *slot, + uint16_t mask, + uint16_t value ) +{ + slot->attr.flags = ( ( ~mask & slot->attr.flags ) | + ( mask & value ) ); +} + +/** Turn on flags in psa_key_slot_t::attr::core::flags. + * + * \param[in,out] slot The key slot to modify. + * \param mask The mask of bits to set. + */ +static inline void psa_key_slot_set_bits_in_flags( psa_key_slot_t *slot, + uint16_t mask ) +{ + slot->attr.flags |= mask; +} + +/** Turn off flags in psa_key_slot_t::attr::core::flags. + * + * \param[in,out] slot The key slot to modify. + * \param mask The mask of bits to clear. + */ +static inline void psa_key_slot_clear_bits( psa_key_slot_t *slot, + uint16_t mask ) +{ + slot->attr.flags &= ~mask; +} + +/** Completely wipe a slot in memory, including its policy. + * + * Persistent storage is not affected. + * + * \param[in,out] slot The key slot to wipe. + * + * \retval PSA_SUCCESS + * Success. This includes the case of a key slot that was + * already fully wiped. + * \retval PSA_ERROR_CORRUPTION_DETECTED + */ +psa_status_t psa_wipe_key_slot( psa_key_slot_t *slot ); + +/** Import key data into a slot. + * + * `slot->type` must have been set previously. + * This function assumes that the slot does not contain any key material yet. + * On failure, the slot content is unchanged. + * + * Persistent storage is not affected. + * + * \param[in,out] slot The key slot to import data into. + * Its `type` field must have previously been set to + * the desired key type. + * It must not contain any key material yet. + * \param[in] data Buffer containing the key material to parse and import. + * \param data_length Size of \p data in bytes. + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_INVALID_ARGUMENT + * \retval PSA_ERROR_NOT_SUPPORTED + * \retval PSA_ERROR_INSUFFICIENT_MEMORY + */ +psa_status_t psa_import_key_into_slot( psa_key_slot_t *slot, + const uint8_t *data, + size_t data_length ); + +#endif /* PSA_CRYPTO_CORE_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h new file mode 100644 index 00000000..642652a4 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h @@ -0,0 +1,79 @@ +/** + * \file psa_crypto_invasive.h + * + * \brief PSA cryptography module: invasive interfaces for test only. + * + * The interfaces in this file are intended for testing purposes only. + * They MUST NOT be made available to clients over IPC in integrations + * with isolation, and they SHOULD NOT be made available in library + * integrations except when building the library for testing. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_INVASIVE_H +#define PSA_CRYPTO_INVASIVE_H + +#if defined(MBEDTLS_CONFIG_FILE) +#include MBEDTLS_CONFIG_FILE +#else +#include "mbedtls/config.h" +#endif + +#include "psa/crypto.h" + +#include "mbedtls/entropy.h" + +/** \brief Configure entropy sources. + * + * This function may only be called before a call to psa_crypto_init(), + * or after a call to mbedtls_psa_crypto_free() and before any + * subsequent call to psa_crypto_init(). + * + * This function is only intended for test purposes. The functionality + * it provides is also useful for system integrators, but + * system integrators should configure entropy drivers instead of + * breaking through to the Mbed TLS API. + * + * \param entropy_init Function to initialize the entropy context + * and set up the desired entropy sources. + * It is called by psa_crypto_init(). + * By default this is mbedtls_entropy_init(). + * This function cannot report failures directly. + * To indicate a failure, set the entropy context + * to a state where mbedtls_entropy_func() will + * return an error. + * \param entropy_free Function to free the entropy context + * and associated resources. + * It is called by mbedtls_psa_crypto_free(). + * By default this is mbedtls_entropy_free(). + * + * \retval PSA_SUCCESS + * Success. + * \retval PSA_ERROR_NOT_PERMITTED + * The caller does not have the permission to configure + * entropy sources. + * \retval PSA_ERROR_BAD_STATE + * The library has already been initialized. + */ +psa_status_t mbedtls_psa_crypto_configure_entropy_sources( + void (* entropy_init )( mbedtls_entropy_context *ctx ), + void (* entropy_free )( mbedtls_entropy_context *ctx ) ); + +#endif /* PSA_CRYPTO_INVASIVE_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h new file mode 100644 index 00000000..38097876 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h @@ -0,0 +1,144 @@ +/** \file psa_crypto_its.h + * \brief Interface of trusted storage that crypto is built on. + */ +/* Copyright (C) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + */ + +#ifndef PSA_CRYPTO_ITS_H +#define PSA_CRYPTO_ITS_H + +#include +#include + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief Flags used when creating a data entry + */ +typedef uint32_t psa_storage_create_flags_t; + +/** \brief A type for UIDs used for identifying data + */ +typedef uint64_t psa_storage_uid_t; + +#define PSA_STORAGE_FLAG_NONE 0 /**< No flags to pass */ +#define PSA_STORAGE_FLAG_WRITE_ONCE (1 << 0) /**< The data associated with the uid will not be able to be modified or deleted. Intended to be used to set bits in `psa_storage_create_flags_t`*/ + +/** + * \brief A container for metadata associated with a specific uid + */ +struct psa_storage_info_t +{ + uint32_t size; /**< The size of the data associated with a uid **/ + psa_storage_create_flags_t flags; /**< The flags set when the uid was created **/ +}; + +/** Flag indicating that \ref psa_storage_create and \ref psa_storage_set_extended are supported */ +#define PSA_STORAGE_SUPPORT_SET_EXTENDED (1 << 0) + +/** \brief PSA storage specific error codes + */ +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) +#define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) + +#define PSA_ITS_API_VERSION_MAJOR 1 /**< The major version number of the PSA ITS API. It will be incremented on significant updates that may include breaking changes */ +#define PSA_ITS_API_VERSION_MINOR 1 /**< The minor version number of the PSA ITS API. It will be incremented in small updates that are unlikely to include breaking changes */ + +/** + * \brief create a new or modify an existing uid/value pair + * + * \param[in] uid the identifier for the data + * \param[in] data_length The size in bytes of the data in `p_data` + * \param[in] p_data A buffer containing the data + * \param[in] create_flags The flags that the data will be stored with + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided `uid` value was already created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval PSA_ERROR_NOT_SUPPORTED The operation failed because one or more of the flags provided in `create_flags` is not supported or is not valid + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because there was insufficient space on the storage medium + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_data`) + * is invalid, for example is `NULL` or references memory the caller cannot access + */ +psa_status_t psa_its_set(psa_storage_uid_t uid, + uint32_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags); + +/** + * \brief Retrieve the value associated with a provided uid + * + * \param[in] uid The uid value + * \param[in] data_offset The starting offset of the data requested + * \param[in] data_length the amount of data requested (and the minimum allocated size of the `p_data` buffer) + * \param[out] p_data The buffer where the data will be placed upon successful completion + * \param[out] p_data_length The amount of data returned in the p_data buffer + * + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided `uid` value was not found in the storage + * \retval PSA_ERROR_INVALID_SIZE The operation failed because the data associated with provided uid is larger than `data_size` + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_data`, `p_data_length`) + * is invalid. For example is `NULL` or references memory the caller cannot access. + * In addition, this can also happen if an invalid offset was provided. + */ +psa_status_t psa_its_get(psa_storage_uid_t uid, + uint32_t data_offset, + uint32_t data_length, + void *p_data, + size_t *p_data_length ); + +/** + * \brief Retrieve the metadata about the provided uid + * + * \param[in] uid The uid value + * \param[out] p_info A pointer to the `psa_storage_info_t` struct that will be populated with the metadata + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided uid value was not found in the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the provided pointers(`p_info`) + * is invalid, for example is `NULL` or references memory the caller cannot access + */ +psa_status_t psa_its_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info); + +/** + * \brief Remove the provided key and its associated data from the storage + * + * \param[in] uid The uid value + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided key value was not found in the storage + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided key value was created with PSA_STORAGE_WRITE_ONCE_FLAG + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical storage has failed (Fatal error) + */ +psa_status_t psa_its_remove(psa_storage_uid_t uid); + +#endif /* PSA_CRYPTO_ITS_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h new file mode 100644 index 00000000..86bf7a7b --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h @@ -0,0 +1,190 @@ +/* + * PSA crypto support for secure element drivers + */ +/* Copyright (C) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of Mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_SE_H +#define PSA_CRYPTO_SE_H + +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "psa/crypto.h" +#include "psa/crypto_se_driver.h" + +/** The maximum lifetime value that this implementation supports + * for a secure element. + * + * This is not a characteristic that each PSA implementation has, but a + * limitation of the current implementation due to the constraints imposed + * by storage. See #PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE. + * + * The minimum lifetime value for a secure element is 2, like on any + * PSA implementation (0=volatile and 1=internal-storage are taken). + */ +#define PSA_MAX_SE_LIFETIME 255 + +/** The base of the range of ITS file identifiers for secure element + * driver persistent data. + * + * We use a slice of the implemenation reserved range 0xffff0000..0xffffffff, + * specifically the range 0xfffffe00..0xfffffeff. The length of this range + * drives the value of #PSA_MAX_SE_LIFETIME. + * The identifiers 0xfffffe00 and 0xfffffe01 are actually not used since + * they correspond to #PSA_KEY_LIFETIME_VOLATILE and + * #PSA_KEY_LIFETIME_PERSISTENT which don't have a driver. + */ +#define PSA_CRYPTO_SE_DRIVER_ITS_UID_BASE ( (psa_key_id_t) 0xfffffe00 ) + +/** The maximum number of registered secure element driver lifetimes. */ +#define PSA_MAX_SE_DRIVERS 4 + +/** Unregister all secure element drivers. + * + * \warning Do not call this function while the library is in the initialized + * state. This function is only intended to be called at the end + * of mbedtls_psa_crypto_free(). + */ +void psa_unregister_all_se_drivers( void ); + +/** Initialize all secure element drivers. + * + * Called from psa_crypto_init(). + */ +psa_status_t psa_init_all_se_drivers( void ); + +/** A structure that describes a registered secure element driver. + * + * A secure element driver table entry contains a pointer to the + * driver's method table as well as the driver context structure. + */ +typedef struct psa_se_drv_table_entry_s psa_se_drv_table_entry_t; + +/** Return the secure element driver information for a lifetime value. + * + * \param lifetime The lifetime value to query. + * \param[out] p_methods On output, if there is a driver, + * \c *methods points to its method table. + * Otherwise \c *methods is \c NULL. + * \param[out] p_drv_context On output, if there is a driver, + * \c *drv_context points to its context + * structure. + * Otherwise \c *drv_context is \c NULL. + * + * \retval 1 + * \p lifetime corresponds to a registered driver. + * \retval 0 + * \p lifetime does not correspond to a registered driver. + */ +int psa_get_se_driver( psa_key_lifetime_t lifetime, + const psa_drv_se_t **p_methods, + psa_drv_se_context_t **p_drv_context); + +/** Return the secure element driver table entry for a lifetime value. + * + * \param lifetime The lifetime value to query. + * + * \return The driver table entry for \p lifetime, or + * \p NULL if \p lifetime does not correspond to a registered driver. + */ +psa_se_drv_table_entry_t *psa_get_se_driver_entry( + psa_key_lifetime_t lifetime ); + +/** Return the method table for a secure element driver. + * + * \param[in] driver The driver table entry to access, or \c NULL. + * + * \return The driver's method table. + * \c NULL if \p driver is \c NULL. + */ +const psa_drv_se_t *psa_get_se_driver_methods( + const psa_se_drv_table_entry_t *driver ); + +/** Return the context of a secure element driver. + * + * \param[in] driver The driver table entry to access, or \c NULL. + * + * \return A pointer to the driver context. + * \c NULL if \p driver is \c NULL. + */ +psa_drv_se_context_t *psa_get_se_driver_context( + psa_se_drv_table_entry_t *driver ); + +/** Find a free slot for a key that is to be created. + * + * This function calls the relevant method in the driver to find a suitable + * slot for a key with the given attributes. + * + * \param[in] attributes Metadata about the key that is about to be created. + * \param[in] driver The driver table entry to query. + * \param[out] slot_number On success, a slot number that is free in this + * secure element. + */ +psa_status_t psa_find_se_slot_for_key( + const psa_key_attributes_t *attributes, + psa_key_creation_method_t method, + psa_se_drv_table_entry_t *driver, + psa_key_slot_number_t *slot_number ); + +/** Destoy a key in a secure element. + * + * This function calls the relevant driver method to destroy a key + * and updates the driver's persistent data. + */ +psa_status_t psa_destroy_se_key( psa_se_drv_table_entry_t *driver, + psa_key_slot_number_t slot_number ); + +/** Load the persistent data of a secure element driver. + * + * \param driver The driver table entry containing the persistent + * data to load from storage. + */ +psa_status_t psa_load_se_persistent_data( + const psa_se_drv_table_entry_t *driver ); + +/** Save the persistent data of a secure element driver. + * + * \param[in] driver The driver table entry containing the persistent + * data to save to storage. + */ +psa_status_t psa_save_se_persistent_data( + const psa_se_drv_table_entry_t *driver ); + +/** Destroy the persistent data of a secure element driver. + * + * This is currently only used for testing. + * + * \param[in] lifetime The driver lifetime whose persistent data should + * be erased. + */ +psa_status_t psa_destroy_se_persistent_data( psa_key_lifetime_t lifetime ); + + +/** The storage representation of a key whose data is in a secure element. + */ +typedef struct +{ + uint8_t slot_number[sizeof( psa_key_slot_number_t )]; + uint8_t bits[sizeof( psa_key_bits_t )]; +} psa_se_key_data_storage_t; + +#endif /* PSA_CRYPTO_SE_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h new file mode 100644 index 00000000..938bfe1d --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h @@ -0,0 +1,40 @@ +/* Copyright (C) 2019, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_SERVICE_INTEGRATION_H +#define PSA_CRYPTO_SERVICE_INTEGRATION_H + +/* + * When MBEDTLS_PSA_CRYPTO_SPM is defined, the code is being built for SPM + * (Secure Partition Manager) integration which separates the code into two + * parts: NSPE (Non-Secure Processing Environment) and SPE (Secure Processing + * Environment). When building for the SPE, an additional header file should be + * included. + */ +#if defined(MBEDTLS_PSA_CRYPTO_SPM) +/* + * PSA_CRYPTO_SECURE means that the file which included this file is being + * compiled for SPE. The files crypto_structs.h and crypto_types.h have + * different implementations for NSPE and SPE and are compiled according to this + * flag. + */ +#define PSA_CRYPTO_SECURE 1 +#include "crypto_spe.h" +#endif // MBEDTLS_PSA_CRYPTO_SPM + +#endif // PSA_CRYPTO_SERVICE_INTEGRATION_H diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h new file mode 100644 index 00000000..472253dd --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h @@ -0,0 +1,129 @@ +/* + * PSA crypto layer on top of Mbed TLS crypto + */ +/* Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_SLOT_MANAGEMENT_H +#define PSA_CRYPTO_SLOT_MANAGEMENT_H + +#include "psa/crypto.h" +#include "psa_crypto_se.h" + +/* Number of key slots (plus one because 0 is not used). + * The value is a compile-time constant for now, for simplicity. */ +#define PSA_KEY_SLOT_COUNT 32 + +/** Access a key slot at the given handle. + * + * \param handle Key handle to query. + * \param[out] p_slot On success, `*p_slot` contains a pointer to the + * key slot in memory designated by \p handle. + * + * \retval PSA_SUCCESS + * Success: \p handle is a handle to `*p_slot`. Note that `*p_slot` + * may be empty or occupied. + * \retval PSA_ERROR_INVALID_HANDLE + * \p handle is out of range or is not in use. + * \retval PSA_ERROR_BAD_STATE + * The library has not been initialized. + */ +psa_status_t psa_get_key_slot( psa_key_handle_t handle, + psa_key_slot_t **p_slot ); + +/** Initialize the key slot structures. + * + * \retval PSA_SUCCESS + * Currently this function always succeeds. + */ +psa_status_t psa_initialize_key_slots( void ); + +/** Delete all data from key slots in memory. + * + * This does not affect persistent storage. */ +void psa_wipe_all_key_slots( void ); + +/** Find a free key slot. + * + * This function returns a key slot that is available for use and is in its + * ground state (all-bits-zero). + * + * \param[out] handle On success, a slot number that can be used as a + * handle to the slot. + * \param[out] p_slot On success, a pointer to the slot. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + */ +psa_status_t psa_get_empty_key_slot( psa_key_handle_t *handle, + psa_key_slot_t **p_slot ); + +/** Test whether a lifetime designates a key in an external cryptoprocessor. + * + * \param lifetime The lifetime to test. + * + * \retval 1 + * The lifetime designates an external key. There should be a + * registered driver for this lifetime, otherwise the key cannot + * be created or manipulated. + * \retval 0 + * The lifetime designates a key that is volatile or in internal + * storage. + */ +static inline int psa_key_lifetime_is_external( psa_key_lifetime_t lifetime ) +{ + return( lifetime != PSA_KEY_LIFETIME_VOLATILE && + lifetime != PSA_KEY_LIFETIME_PERSISTENT ); +} + +/** Test whether the given parameters are acceptable for a persistent key. + * + * This function does not access the storage in any way. It only tests + * whether the parameters are meaningful and permitted by general policy. + * It does not test whether the a file by the given id exists or could be + * created. + * + * If the key is in external storage, this function returns the corresponding + * driver. + * + * \param lifetime The lifetime to test. + * \param id The key id to test. + * \param[out] p_drv On output, if \p lifetime designates a key + * in an external processor, \c *p_drv is a pointer + * to the driver table entry fot this lifetime. + * If \p lifetime designates a transparent key, + * \c *p_drv is \c NULL. + * \param creating 0 if attempting to open an existing key. + * Nonzero if attempting to create a key. + * + * \retval PSA_SUCCESS + * The given parameters are valid. + * \retval PSA_ERROR_INVALID_ARGUMENT + * \p lifetime is volatile or is invalid. + * \retval PSA_ERROR_INVALID_ARGUMENT + * \p id is invalid. + */ +psa_status_t psa_validate_persistent_key_parameters( + psa_key_lifetime_t lifetime, + psa_key_file_id_t id, + psa_se_drv_table_entry_t **p_drv, + int creating ); + + +#endif /* PSA_CRYPTO_SLOT_MANAGEMENT_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h new file mode 100644 index 00000000..1b7dbd67 --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h @@ -0,0 +1,390 @@ +/** + * \file psa_crypto_storage.h + * + * \brief PSA cryptography module: Mbed TLS key storage + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_STORAGE_H +#define PSA_CRYPTO_STORAGE_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "psa/crypto.h" +#include "psa/crypto_se_driver.h" + +#include +#include + +/* Limit the maximum key size in storage. This should have no effect + * since the key size is limited in memory. */ +#define PSA_CRYPTO_MAX_STORAGE_SIZE ( PSA_BITS_TO_BYTES( PSA_MAX_KEY_BITS ) ) +/* Sanity check: a file size must fit in 32 bits. Allow a generous + * 64kB of metadata. */ +#if PSA_CRYPTO_MAX_STORAGE_SIZE > 0xffff0000 +#error PSA_CRYPTO_MAX_STORAGE_SIZE > 0xffff0000 +#endif + +/** The maximum permitted persistent slot number. + * + * In Mbed Crypto 0.1.0b: + * - Using the file backend, all key ids are ok except 0. + * - Using the ITS backend, all key ids are ok except 0xFFFFFF52 + * (#PSA_CRYPTO_ITS_RANDOM_SEED_UID) for which the file contains the + * device's random seed (if this feature is enabled). + * - Only key ids from 1 to #PSA_KEY_SLOT_COUNT are actually used. + * + * Since we need to preserve the random seed, avoid using that key slot. + * Reserve a whole range of key slots just in case something else comes up. + * + * This limitation will probably become moot when we implement client + * separation for key storage. + */ +#define PSA_MAX_PERSISTENT_KEY_IDENTIFIER PSA_KEY_ID_VENDOR_MAX + +/** + * \brief Checks if persistent data is stored for the given key slot number + * + * This function checks if any key data or metadata exists for the key slot in + * the persistent storage. + * + * \param key Persistent identifier to check. + * + * \retval 0 + * No persistent data present for slot number + * \retval 1 + * Persistent data present for slot number + */ +int psa_is_key_present_in_storage( const psa_key_file_id_t key ); + +/** + * \brief Format key data and metadata and save to a location for given key + * slot. + * + * This function formats the key data and metadata and saves it to a + * persistent storage backend. The storage location corresponding to the + * key slot must be empty, otherwise this function will fail. This function + * should be called after psa_import_key_into_slot() to ensure the + * persistent key is not saved into a storage location corresponding to an + * already occupied non-persistent key, as well as validating the key data. + * + * + * \param[in] attr The attributes of the key to save. + * The key identifier field in the attributes + * determines the key's location. + * \param[in] data Buffer containing the key data. + * \param data_length The number of bytes that make up the key data. + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_INSUFFICIENT_MEMORY + * \retval PSA_ERROR_INSUFFICIENT_STORAGE + * \retval PSA_ERROR_STORAGE_FAILURE + * \retval PSA_ERROR_ALREADY_EXISTS + */ +psa_status_t psa_save_persistent_key( const psa_core_key_attributes_t *attr, + const uint8_t *data, + const size_t data_length ); + +/** + * \brief Parses key data and metadata and load persistent key for given + * key slot number. + * + * This function reads from a storage backend, parses the key data and + * metadata and writes them to the appropriate output parameters. + * + * Note: This function allocates a buffer and returns a pointer to it through + * the data parameter. psa_free_persistent_key_data() must be called after + * this function to zeroize and free this buffer, regardless of whether this + * function succeeds or fails. + * + * \param[in,out] attr On input, the key identifier field identifies + * the key to load. Other fields are ignored. + * On success, the attribute structure contains + * the key metadata that was loaded from storage. + * \param[out] data Pointer to an allocated key data buffer on return. + * \param[out] data_length The number of bytes that make up the key data. + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_INSUFFICIENT_MEMORY + * \retval PSA_ERROR_STORAGE_FAILURE + * \retval PSA_ERROR_DOES_NOT_EXIST + */ +psa_status_t psa_load_persistent_key( psa_core_key_attributes_t *attr, + uint8_t **data, + size_t *data_length ); + +/** + * \brief Remove persistent data for the given key slot number. + * + * \param key Persistent identifier of the key to remove + * from persistent storage. + * + * \retval PSA_SUCCESS + * The key was successfully removed, + * or the key did not exist. + * \retval PSA_ERROR_STORAGE_FAILURE + */ +psa_status_t psa_destroy_persistent_key( const psa_key_file_id_t key ); + +/** + * \brief Free the temporary buffer allocated by psa_load_persistent_key(). + * + * This function must be called at some point after psa_load_persistent_key() + * to zeroize and free the memory allocated to the buffer in that function. + * + * \param key_data Buffer for the key data. + * \param key_data_length Size of the key data buffer. + * + */ +void psa_free_persistent_key_data( uint8_t *key_data, size_t key_data_length ); + +/** + * \brief Formats key data and metadata for persistent storage + * + * \param[in] data Buffer containing the key data. + * \param data_length Length of the key data buffer. + * \param[in] attr The core attributes of the key. + * \param[out] storage_data Output buffer for the formatted data. + * + */ +void psa_format_key_data_for_storage( const uint8_t *data, + const size_t data_length, + const psa_core_key_attributes_t *attr, + uint8_t *storage_data ); + +/** + * \brief Parses persistent storage data into key data and metadata + * + * \param[in] storage_data Buffer for the storage data. + * \param storage_data_length Length of the storage data buffer + * \param[out] key_data On output, pointer to a newly allocated buffer + * containing the key data. This must be freed + * using psa_free_persistent_key_data() + * \param[out] key_data_length Length of the key data buffer + * \param[out] attr On success, the attribute structure is filled + * with the loaded key metadata. + * + * \retval PSA_SUCCESS + * \retval PSA_ERROR_INSUFFICIENT_STORAGE + * \retval PSA_ERROR_INSUFFICIENT_MEMORY + * \retval PSA_ERROR_STORAGE_FAILURE + */ +psa_status_t psa_parse_key_data_from_storage( const uint8_t *storage_data, + size_t storage_data_length, + uint8_t **key_data, + size_t *key_data_length, + psa_core_key_attributes_t *attr ); + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +/** This symbol is defined if transaction support is required. */ +#define PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS +#endif + +#if defined(PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS) + +/** The type of transaction that is in progress. + */ +/* This is an integer type rather than an enum for two reasons: to support + * unknown values when loading a transaction file, and to ensure that the + * type has a known size. + */ +typedef uint16_t psa_crypto_transaction_type_t; + +/** No transaction is in progress. + * + * This has the value 0, so zero-initialization sets a transaction's type to + * this value. + */ +#define PSA_CRYPTO_TRANSACTION_NONE ( (psa_crypto_transaction_type_t) 0x0000 ) + +/** A key creation transaction. + * + * This is only used for keys in an external cryptoprocessor (secure element). + * Keys in RAM or in internal storage are created atomically in storage + * (simple file creation), so they do not need a transaction mechanism. + */ +#define PSA_CRYPTO_TRANSACTION_CREATE_KEY ( (psa_crypto_transaction_type_t) 0x0001 ) + +/** A key destruction transaction. + * + * This is only used for keys in an external cryptoprocessor (secure element). + * Keys in RAM or in internal storage are destroyed atomically in storage + * (simple file deletion), so they do not need a transaction mechanism. + */ +#define PSA_CRYPTO_TRANSACTION_DESTROY_KEY ( (psa_crypto_transaction_type_t) 0x0002 ) + +/** Transaction data. + * + * This type is designed to be serialized by writing the memory representation + * and reading it back on the same device. + * + * \note The transaction mechanism is designed for a single active transaction + * at a time. The transaction object is #psa_crypto_transaction. + * + * \note If an API call starts a transaction, it must complete this transaction + * before returning to the application. + * + * The lifetime of a transaction is the following (note that only one + * transaction may be active at a time): + * + * -# Call psa_crypto_prepare_transaction() to initialize the transaction + * object in memory and declare the type of transaction that is starting. + * -# Fill in the type-specific fields of #psa_crypto_transaction. + * -# Call psa_crypto_save_transaction() to start the transaction. This + * saves the transaction data to internal storage. + * -# Perform the work of the transaction by modifying files, contacting + * external entities, or whatever needs doing. Note that the transaction + * may be interrupted by a power failure, so you need to have a way + * recover from interruptions either by undoing what has been done + * so far or by resuming where you left off. + * -# If there are intermediate stages in the transaction, update + * the fields of #psa_crypto_transaction and call + * psa_crypto_save_transaction() again when each stage is reached. + * -# When the transaction is over, call psa_crypto_stop_transaction() to + * remove the transaction data in storage and in memory. + * + * If the system crashes while a transaction is in progress, psa_crypto_init() + * calls psa_crypto_load_transaction() and takes care of completing or + * rewinding the transaction. This is done in psa_crypto_recover_transaction() + * in psa_crypto.c. If you add a new type of transaction, be + * sure to add code for it in psa_crypto_recover_transaction(). + */ +typedef union +{ + /* Each element of this union must have the following properties + * to facilitate serialization and deserialization: + * + * - The element is a struct. + * - The first field of the struct is `psa_crypto_transaction_type_t type`. + * - Elements of the struct are arranged such a way that there is + * no padding. + */ + struct psa_crypto_transaction_unknown_s + { + psa_crypto_transaction_type_t type; + uint16_t unused1; + uint32_t unused2; + uint64_t unused3; + uint64_t unused4; + } unknown; + /* ::type is #PSA_CRYPTO_TRANSACTION_CREATE_KEY or + * #PSA_CRYPTO_TRANSACTION_DESTROY_KEY. */ + struct psa_crypto_transaction_key_s + { + psa_crypto_transaction_type_t type; + uint16_t unused1; + psa_key_lifetime_t lifetime; + psa_key_slot_number_t slot; + psa_key_id_t id; + } key; +} psa_crypto_transaction_t; + +/** The single active transaction. + */ +extern psa_crypto_transaction_t psa_crypto_transaction; + +/** Prepare for a transaction. + * + * There must not be an ongoing transaction. + * + * \param type The type of transaction to start. + */ +static inline void psa_crypto_prepare_transaction( + psa_crypto_transaction_type_t type ) +{ + psa_crypto_transaction.unknown.type = type; +} + +/** Save the transaction data to storage. + * + * You may call this function multiple times during a transaction to + * atomically update the transaction state. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_STORAGE_FAILURE + */ +psa_status_t psa_crypto_save_transaction( void ); + +/** Load the transaction data from storage, if any. + * + * This function is meant to be called from psa_crypto_init() to recover + * in case a transaction was interrupted by a system crash. + * + * \retval #PSA_SUCCESS + * The data about the ongoing transaction has been loaded to + * #psa_crypto_transaction. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no ongoing transaction. + * \retval #PSA_ERROR_STORAGE_FAILURE + */ +psa_status_t psa_crypto_load_transaction( void ); + +/** Indicate that the current transaction is finished. + * + * Call this function at the very end of transaction processing. + * This function does not "commit" or "abort" the transaction: the storage + * subsystem has no concept of "commit" and "abort", just saving and + * removing the transaction information in storage. + * + * This function erases the transaction data in storage (if any) and + * resets the transaction data in memory. + * + * \retval #PSA_SUCCESS + * There was transaction data in storage. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There was no transaction data in storage. + * \retval #PSA_ERROR_STORAGE_FAILURE + * It was impossible to determine whether there was transaction data + * in storage, or the transaction data could not be erased. + */ +psa_status_t psa_crypto_stop_transaction( void ); + +/** The ITS file identifier for the transaction data. + * + * 0xffffffNN = special file; 0x74 = 't' for transaction. + */ +#define PSA_CRYPTO_ITS_TRANSACTION_UID ( (psa_key_id_t) 0xffffff74 ) + +#endif /* PSA_CRYPTO_STORAGE_HAS_TRANSACTIONS */ + +#if defined(MBEDTLS_PSA_INJECT_ENTROPY) +/** Backend side of mbedtls_psa_inject_entropy(). + * + * This function stores the supplied data into the entropy seed file. + * + * \retval #PSA_SUCCESS + * Success + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_NOT_PERMITTED + * The entropy seed file already exists. + */ +psa_status_t mbedtls_psa_storage_inject_entropy( const unsigned char *seed, + size_t seed_size ); +#endif /* MBEDTLS_PSA_INJECT_ENTROPY */ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_STORAGE_H */ diff --git a/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_SPE/crypto_struct_spe.h b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_SPE/crypto_struct_spe.h new file mode 100644 index 00000000..35a25f1f --- /dev/null +++ b/cores/arduino/mbed/features/mbedtls/platform/COMPONENT_SPE/crypto_struct_spe.h @@ -0,0 +1,520 @@ +/** + * \file psa/crypto_struct.h + * + * \brief PSA cryptography module: Mbed TLS structured type implementations + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains the definitions of some data structures with + * implementation-specific definitions. + * + * In implementations with isolation between the application and the + * cryptography module, it is expected that the front-end and the back-end + * would have different versions of this file. + * + *

    Design notes about multipart operation structures

    + * + * Each multipart operation structure contains a `psa_algorithm_t alg` + * field which indicates which specific algorithm the structure is for. + * When the structure is not in use, `alg` is 0. Most of the structure + * consists of a union which is discriminated by `alg`. + * + * Note that when `alg` is 0, the content of other fields is undefined. + * In particular, it is not guaranteed that a freshly-initialized structure + * is all-zero: we initialize structures to something like `{0, 0}`, which + * is only guaranteed to initializes the first member of the union; + * GCC and Clang initialize the whole structure to 0 (at the time of writing), + * but MSVC and CompCert don't. + * + * In Mbed Crypto, multipart operation structures live independently from + * the key. This allows Mbed Crypto to free the key objects when destroying + * a key slot. If a multipart operation needs to remember the key after + * the setup function returns, the operation structure needs to contain a + * copy of the key. + */ +/* + * Copyright (C) 2018, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed 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. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_STRUCT_H +#define PSA_CRYPTO_STRUCT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Include the Mbed TLS configuration file, the way Mbed TLS does it + * in each of its header files. */ +#if !defined(MBEDTLS_CONFIG_FILE) +#include "mbedtls/config.h" +#else +#include MBEDTLS_CONFIG_FILE +#endif + +#include "mbedtls/cipher.h" +#include "mbedtls/cmac.h" +#include "mbedtls/gcm.h" +#include "mbedtls/md.h" +#include "mbedtls/md2.h" +#include "mbedtls/md4.h" +#include "mbedtls/md5.h" +#include "mbedtls/ripemd160.h" +#include "mbedtls/sha1.h" +#include "mbedtls/sha256.h" +#include "mbedtls/sha512.h" + +struct psa_hash_operation_s +{ + psa_algorithm_t alg; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_MD2_C) + mbedtls_md2_context md2; +#endif +#if defined(MBEDTLS_MD4_C) + mbedtls_md4_context md4; +#endif +#if defined(MBEDTLS_MD5_C) + mbedtls_md5_context md5; +#endif +#if defined(MBEDTLS_RIPEMD160_C) + mbedtls_ripemd160_context ripemd160; +#endif +#if defined(MBEDTLS_SHA1_C) + mbedtls_sha1_context sha1; +#endif +#if defined(MBEDTLS_SHA256_C) + mbedtls_sha256_context sha256; +#endif +#if defined(MBEDTLS_SHA512_C) + mbedtls_sha512_context sha512; +#endif + } ctx; +}; + +#define PSA_HASH_OPERATION_INIT {0, {0}} +static inline struct psa_hash_operation_s psa_hash_operation_init( void ) +{ + const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; + return( v ); +} + +#if defined(MBEDTLS_MD_C) +typedef struct +{ + /** The hash context. */ + struct psa_hash_operation_s hash_ctx; + /** The HMAC part of the context. */ + uint8_t opad[PSA_HMAC_MAX_HASH_BLOCK_SIZE]; +} psa_hmac_internal_data; +#endif /* MBEDTLS_MD_C */ + +struct psa_mac_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_required : 1; + unsigned int iv_set : 1; + unsigned int has_input : 1; + unsigned int is_sign : 1; + uint8_t mac_size; + union + { + unsigned dummy; /* Make the union non-empty even with no supported algorithms. */ +#if defined(MBEDTLS_MD_C) + psa_hmac_internal_data hmac; +#endif +#if defined(MBEDTLS_CMAC_C) + mbedtls_cipher_context_t cmac; +#endif + } ctx; +}; + +#define PSA_MAC_OPERATION_INIT {0, 0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_mac_operation_s psa_mac_operation_init( void ) +{ + const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; + return( v ); +} + +struct psa_cipher_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_required : 1; + unsigned int iv_set : 1; + uint8_t iv_size; + uint8_t block_size; + union + { + unsigned dummy; /* Enable easier initializing of the union. */ + mbedtls_cipher_context_t cipher; + } ctx; +}; + +#define PSA_CIPHER_OPERATION_INIT {0, 0, 0, 0, 0, 0, {0}} +static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) +{ + const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; + return( v ); +} + +struct psa_aead_operation_s +{ + psa_algorithm_t alg; + unsigned int key_set : 1; + unsigned int iv_set : 1; + uint8_t iv_size; + uint8_t block_size; + union + { + unsigned dummy; /* Enable easier initializing of the union. */ + mbedtls_cipher_context_t cipher; + } ctx; +}; + +#define PSA_AEAD_OPERATION_INIT {0, 0, 0, 0, 0, {0}} +static inline struct psa_aead_operation_s psa_aead_operation_init( void ) +{ + const struct psa_aead_operation_s v = PSA_AEAD_OPERATION_INIT; + return( v ); +} + +#if defined(MBEDTLS_MD_C) +typedef struct +{ + uint8_t *info; + size_t info_length; + psa_hmac_internal_data hmac; + uint8_t prk[PSA_HASH_MAX_SIZE]; + uint8_t output_block[PSA_HASH_MAX_SIZE]; +#if PSA_HASH_MAX_SIZE > 0xff +#error "PSA_HASH_MAX_SIZE does not fit in uint8_t" +#endif + uint8_t offset_in_block; + uint8_t block_number; + unsigned int state : 2; + unsigned int info_set : 1; +} psa_hkdf_key_derivation_t; +#endif /* MBEDTLS_MD_C */ + +#if defined(MBEDTLS_MD_C) +typedef enum +{ + TLS12_PRF_STATE_INIT, /* no input provided */ + TLS12_PRF_STATE_SEED_SET, /* seed has been set */ + TLS12_PRF_STATE_KEY_SET, /* key has been set */ + TLS12_PRF_STATE_LABEL_SET, /* label has been set */ + TLS12_PRF_STATE_OUTPUT /* output has been started */ +} psa_tls12_prf_key_derivation_state_t; + +typedef struct psa_tls12_prf_key_derivation_s +{ +#if PSA_HASH_MAX_SIZE > 0xff +#error "PSA_HASH_MAX_SIZE does not fit in uint8_t" +#endif + + /* Indicates how many bytes in the current HMAC block have + * not yet been read by the user. */ + uint8_t left_in_block; + + /* The 1-based number of the block. */ + uint8_t block_number; + + psa_tls12_prf_key_derivation_state_t state; + + uint8_t *seed; + size_t seed_length; + uint8_t *label; + size_t label_length; + psa_hmac_internal_data hmac; + uint8_t Ai[PSA_HASH_MAX_SIZE]; + + /* `HMAC_hash( prk, A(i) + seed )` in the notation of RFC 5246, Sect. 5. */ + uint8_t output_block[PSA_HASH_MAX_SIZE]; +} psa_tls12_prf_key_derivation_t; +#endif /* MBEDTLS_MD_C */ + +struct psa_key_derivation_s +{ + psa_algorithm_t alg; + unsigned int can_output_key : 1; + size_t capacity; + union + { + /* Make the union non-empty even with no supported algorithms. */ + uint8_t dummy; +#if defined(MBEDTLS_MD_C) + psa_hkdf_key_derivation_t hkdf; + psa_tls12_prf_key_derivation_t tls12_prf; +#endif + } ctx; +}; + +/* This only zeroes out the first byte in the union, the rest is unspecified. */ +#define PSA_KEY_DERIVATION_OPERATION_INIT {0, 0, 0, {0}} +static inline struct psa_key_derivation_s psa_key_derivation_operation_init( void ) +{ + const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; + return( v ); +} + +struct psa_key_policy_s +{ + psa_key_usage_t usage; + psa_algorithm_t alg; + psa_algorithm_t alg2; +}; +typedef struct psa_key_policy_s psa_key_policy_t; + +#define PSA_KEY_POLICY_INIT {0, 0, 0} +static inline struct psa_key_policy_s psa_key_policy_init( void ) +{ + const struct psa_key_policy_s v = PSA_KEY_POLICY_INIT; + return( v ); +} + +/* The type used internally for key sizes. + * Public interfaces use size_t, but internally we use a smaller type. */ +typedef uint16_t psa_key_bits_t; +/* The maximum value of the type used to represent bit-sizes. + * This is used to mark an invalid key size. */ +#define PSA_KEY_BITS_TOO_LARGE ( (psa_key_bits_t) ( -1 ) ) +/* The maximum size of a key in bits. + * Currently defined as the maximum that can be represented, rounded down + * to a whole number of bytes. + * This is an uncast value so that it can be used in preprocessor + * conditionals. */ +#define PSA_MAX_KEY_BITS 0xfff8 + +/** A mask of flags that can be stored in key attributes. + * + * This type is also used internally to store flags in slots. Internal + * flags are defined in library/psa_crypto_core.h. Internal flags may have + * the same value as external flags if they are properly handled during + * key creation and in psa_get_key_attributes. + */ +typedef uint16_t psa_key_attributes_flag_t; + +#define MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER \ + ( (psa_key_attributes_flag_t) 0x0001 ) + +/* A mask of key attribute flags used externally only. + * Only meant for internal checks inside the library. */ +#define MBEDTLS_PSA_KA_MASK_EXTERNAL_ONLY ( \ + MBEDTLS_PSA_KA_FLAG_HAS_SLOT_NUMBER | \ + 0 ) + +/* A mask of key attribute flags used both internally and externally. + * Currently there aren't any. */ +#define MBEDTLS_PSA_KA_MASK_DUAL_USE ( \ + 0 ) + +typedef struct +{ + psa_key_type_t type; + psa_key_bits_t bits; + psa_key_lifetime_t lifetime; + psa_key_id_t id; + psa_key_policy_t policy; + psa_key_attributes_flag_t flags; +} psa_core_key_attributes_t; + +/* The server must be able to interpret the attributes as specified by the + * client. The server works with the psa_key_id_t encoding the key owner, but + * the client works with the psa_key_id_t not containing the key owner (pure + * psa_app_key_id_t. */ +typedef struct +{ + psa_key_type_t type; + psa_key_bits_t bits; + psa_key_lifetime_t lifetime; + psa_app_key_id_t id; + psa_key_policy_t policy; + psa_key_attributes_flag_t flags; +} psa_client_core_key_attributes_t; + +#define PSA_CORE_KEY_ATTRIBUTES_INIT {PSA_KEY_TYPE_NONE, 0, PSA_KEY_LIFETIME_VOLATILE, PSA_KEY_ID_INIT, PSA_KEY_POLICY_INIT, 0} + +struct psa_key_attributes_s +{ + psa_core_key_attributes_t core; +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) + psa_key_slot_number_t slot_number; +#endif /* MBEDTLS_PSA_CRYPTO_SE_C */ + void *domain_parameters; + size_t domain_parameters_size; +}; + +#if defined(MBEDTLS_PSA_CRYPTO_SE_C) +#define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, 0, NULL, 0} +#else +#define PSA_KEY_ATTRIBUTES_INIT {PSA_CORE_KEY_ATTRIBUTES_INIT, NULL, 0} +#endif + +typedef struct psa_client_key_attributes_s +{ + psa_client_core_key_attributes_t core; + void *domain_parameters; + size_t domain_parameters_size; +} psa_client_key_attributes_t; + +static inline struct psa_key_attributes_s psa_key_attributes_init( void ) +{ + const struct psa_key_attributes_s v = PSA_KEY_ATTRIBUTES_INIT; + return( v ); +} + +static void psa_core_attributes_to_client( + const psa_core_key_attributes_t *server, + psa_client_core_key_attributes_t *client) +{ + client->type = server->type; + client->lifetime = server->lifetime; + client->id = server->id.key_id; + client->policy = server->policy; + client->bits = server->bits; + client->flags = server->flags; +} + +static void psa_core_attributes_to_server( + const psa_client_core_key_attributes_t *client, + psa_key_owner_id_t owner, + psa_core_key_attributes_t *server) +{ + server->type = client->type; + server->lifetime = client->lifetime; + server->id.key_id = client->id; + server->id.owner = owner; + server->policy = client->policy; + server->bits = client->bits; + server->flags = client->flags; +} + +static inline void psa_set_key_id(psa_key_attributes_t *attributes, + psa_key_id_t id) +{ + attributes->core.id = id; + if( attributes->core.lifetime == PSA_KEY_LIFETIME_VOLATILE ) + attributes->core.lifetime = PSA_KEY_LIFETIME_PERSISTENT; +} + +static inline psa_key_id_t psa_get_key_id( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.id ); +} + +static inline void psa_set_key_lifetime(psa_key_attributes_t *attributes, + psa_key_lifetime_t lifetime) +{ + attributes->core.lifetime = lifetime; + if( lifetime == PSA_KEY_LIFETIME_VOLATILE ) + { +#ifdef MBEDTLS_PSA_CRYPTO_KEY_FILE_ID_ENCODES_OWNER + attributes->core.id.key_id = 0; + attributes->core.id.owner = 0; +#else + attributes->core.id = 0; +#endif + } +} + +static inline psa_key_lifetime_t psa_get_key_lifetime( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.lifetime ); +} + +static inline void psa_set_key_usage_flags(psa_key_attributes_t *attributes, + psa_key_usage_t usage_flags) +{ + attributes->core.policy.usage = usage_flags; +} + +static inline psa_key_usage_t psa_get_key_usage_flags( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.usage ); +} + +static inline void psa_set_key_algorithm(psa_key_attributes_t *attributes, + psa_algorithm_t alg) +{ + attributes->core.policy.alg = alg; +} + +static inline psa_algorithm_t psa_get_key_algorithm( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.policy.alg ); +} + +/* This function is declared in crypto_extra.h, which comes after this + * header file, but we need the function here, so repeat the declaration. */ +psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length); + +static inline void psa_set_key_type(psa_key_attributes_t *attributes, + psa_key_type_t type) +{ + if( attributes->domain_parameters == NULL ) + { + /* Common case: quick path */ + attributes->core.type = type; + } + else + { + /* Call the bigger function to free the old domain paramteres. + * Ignore any errors which may arise due to type requiring + * non-default domain parameters, since this function can't + * report errors. */ + (void) psa_set_key_domain_parameters( attributes, type, NULL, 0 ); + } +} + +static inline psa_key_type_t psa_get_key_type( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.type ); +} + +static inline void psa_set_key_bits(psa_key_attributes_t *attributes, + size_t bits) +{ + if( bits > PSA_MAX_KEY_BITS ) + attributes->core.bits = PSA_KEY_BITS_TOO_LARGE; + else + attributes->core.bits = (psa_key_bits_t) bits; +} + +static inline size_t psa_get_key_bits( + const psa_key_attributes_t *attributes) +{ + return( attributes->core.bits ); +} + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_STRUCT_H */ diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h index 9a782bff..51d4ca14 100644 --- a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/MeshInterfaceNanostack.h @@ -82,6 +82,8 @@ class Nanostack::Interface : public OnboardNetworkStack::Interface, private mbed }; class Nanostack::MeshInterface : public Nanostack::Interface { +public: + char *get_interface_name(char *buf); protected: MeshInterface(NanostackRfPhy &phy) : Interface(phy) { } NanostackRfPhy &get_phy() const @@ -172,6 +174,7 @@ class InterfaceNanostack : public virtual NetworkInterface { char mac_addr_str[24]; mbed::Callback _connection_status_cb; bool _blocking; + bool _configured = false; }; class MeshInterfaceNanostack : public InterfaceNanostack, public MeshInterface, private mbed::NonCopyable { diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackEthernetInterface.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackEthernetInterface.h index f58b5393..da2c9d48 100644 --- a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackEthernetInterface.h +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackEthernetInterface.h @@ -29,6 +29,7 @@ class Nanostack::EthernetInterface : public Nanostack::Interface { bool blocking = true); virtual nsapi_error_t bringdown(); + char *get_interface_name(char *buf); private: friend class Nanostack; friend class NanostackEthernetInterface; diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackPPPInterface.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackPPPInterface.h index f60f45ae..735ef52d 100644 --- a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackPPPInterface.h +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/NanostackPPPInterface.h @@ -32,6 +32,7 @@ class Nanostack::PPPInterface : public Nanostack::Interface { typedef mbed::Callback link_state_cb_t; virtual void set_link_state_changed_callback(link_state_cb_t link_state_cb); + char *get_interface_name(char *buf); private: friend class Nanostack; PPPInterface(NanostackPhy &phy) : Interface(phy), link_state_up(false), enet_tasklet_connected(false) {} diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h new file mode 100644 index 00000000..600e8d8d --- /dev/null +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunBorderRouter.h @@ -0,0 +1,155 @@ +/* + * Copyright (c) 2020 ARM Limited. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * Licensed 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. + */ + +#ifndef WISUNBORDERROUTER_H +#define WISUNBORDERROUTER_H + +/** Wi-SUN Border Router class + * + * Class can be used to start, stop and configure Wi-SUN Border Router. + */ +class WisunBorderRouter { +public: + + /** Create WisunBorderRouter + * + * */ + WisunBorderRouter() { } + + /** + * \brief Start Wi-SUN Border Router + * + * Starts Wi-SUN Border Router and routing between the mesh and backbone interfaces. Network interfaces + * must be initialized and connected before calling the start. Backbone interface can be either Ethernet + * (EMAC) or Cellular. + * + * \param mesh_if Wi-SUN mesh network interface + * \param backbone_if Backbone network interface + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t start(NetworkInterface *mesh_if, NetworkInterface *backbone_if); + + /** + * \brief Start Wi-SUN Border Router + * + * Starts Wi-SUN Border Router and routing between the mesh and backbone interfaces. Mesh network interface + * must be initialized and connected before calling the start. Backbone OnboardNetworkStack::Interface must + * be brought up before calling the start. Backbone interface can be either Ethernet (EMAC) or Cellular (PPP). + * + * \param mesh_if Wi-SUN mesh network interface + * \param backbone_if Backbone OnboardNetworkStack::Interface interface + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t start(NetworkInterface *mesh_if, OnboardNetworkStack::Interface *backbone_if); + + /** + * \brief Stop Wi-SUN Border Router + * + * Stops Wi-SUN Border Router. + * + * */ + void stop(); + + /** + * \brief Set Wi-SUN RPL DIO trickle parameters. + * + * Function stores new parameters to Border Router and uses them when mesh interface connect() is called + * next time. If device is already connected to the Wi-SUN network then device will restart Wi-SUN network after + * changing the RPL DIO trickle parameters. Mesh interface must be initialized before calling this + * function. + * + * \param dio_interval_min DIO trickle timer Imin parameter. Use 0x00 to use leave parameter unchanged. + * \param dio_interval_doublings DIO trickle timer Imax parameter as doublings of Imin. Use 0x00 to use leave parameter unchanged. + * \param dio_redundancy_constant DIO trickle timer redundancy constant. Use 0xff to use leave parameter unchanged. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_rpl_parameters(uint8_t dio_interval_min, uint8_t dio_interval_doublings, uint8_t dio_redundancy_constant); + + /** + * \brief Get Wi-SUN RPL DIO trickle parameters. + * + * Function reads DIO trickle timer Imin, DIO trickle timer Imax and DIO trickle timer redundancy + * constant from Border Router. Mesh interface must be initialized before calling this function. + * + * \param dio_interval_min DIO trickle timer Imin parameter. + * \param dio_interval_doublings DIO trickle timer Imax parameter as doublings of Imin. + * \param dio_redundancy_constant DIO trickle timer redundancy constant. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_rpl_parameters(uint8_t *dio_interval_min, uint8_t *dio_interval_doublings, uint8_t *dio_redundancy_constant); + + /** + * \brief Validate Wi-SUN RPL DIO trickle parameters. + * + * Function validates DIO trickle timer Imin, DIO trickle timer Imax and DIO trickle timer redundancy + * constant. Function can be used to test that values that will be used on set function are valid. + * Mesh interface must be initialized before the calling this function. + * + * \param dio_interval_min DIO trickle timer Imin parameter. + * \param dio_interval_doublings DIO trickle timer Imax parameter as doublings of Imin. + * \param dio_redundancy_constant DIO trickle timer redundancy constant. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_rpl_parameters(uint8_t dio_interval_min, uint8_t dio_interval_doublings, uint8_t dio_redundancy_constant); + + /** + * \brief Set Wi-SUN PAN configuration parameters. + * + * Function stores new parameters to Border Router and uses them when mesh interface connect() is called + * next time. If device is already connected to the Wi-SUN network then device will restart Wi-SUN network after + * changing the PAN configuration parameters. Mesh interface must be initialized before calling this + * function. + * + * \param pan_id PAN ID. 0xffff will generate the PAN ID on the mesh interface connect() call if not already generated. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_pan_configuration(uint16_t pan_id); + + /** + * \brief Get Wi-SUN PAN configuration parameters. + * + * Function reads PAN ID from Border Router. Mesh interface must be initialized before calling this function. + * + * \param pan_id PAN ID. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_pan_configuration(uint16_t *pan_id); + + /** + * \brief Validate Wi-SUN PAN configuration parameters. + * + * Function validates PAN ID. Function can be used to test that values that will be used on set function are valid. + * Mesh interface must be initialized before calling this function. + * + * \param pan_id PAN ID. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_pan_configuration(uint16_t pan_id); + +private: + int8_t _mesh_if_id = -1; + +}; + +#endif diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h index e80657c3..d23efc6b 100644 --- a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/WisunInterface.h @@ -52,6 +52,28 @@ class WisunInterface : public MeshInterfaceNanostack { * */ mesh_error_t set_network_name(char *network_name); + /** + * \brief Get Wi-SUN network name. + * + * Function reads network name from mbed-mesh-api. + * + * \param network_name Network name as NUL terminated string. Must have space for 33 characters (string and null terminator). + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_network_name(char *network_name); + + /** + * \brief Validate Wi-SUN network name. + * + * Function validates network name. Function can be used to test that values that will be used on set function are valid. + * + * \param network_name Network name as NUL terminated string. Can't exceed 32 characters and can't be NULL. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_network_name(char *network_name); + /** * \brief Set Wi-SUN network regulatory domain, operating class and operating mode. * @@ -69,6 +91,252 @@ class WisunInterface : public MeshInterfaceNanostack { * */ mesh_error_t set_network_regulatory_domain(uint8_t regulatory_domain = 0xff, uint8_t operating_class = 0xff, uint8_t operating_mode = 0xff); + /** + * \brief Get Wi-SUN network regulatory domain, operating class and operating mode. + * + * Function reads regulatory_domain, operating_class and operating_mode from mbed-mesh-api. + * + * \param regulatory_domain Values defined in Wi-SUN PHY-specification. + * \param operating_class Values defined in Wi-SUN PHY-specification. + * \param operating_mode Values defined in Wi-SUN PHY-specification. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_network_regulatory_domain(uint8_t *regulatory_domain, uint8_t *operating_class, uint8_t *operating_mode); + + /** + * \brief Validate Wi-SUN network regulatory domain, operating class and operating mode. + * + * Function validates regulatory_domain, operating_class and operating_mode. Function can be used to test that values that will + * be used on set function are valid. + * + * \param regulatory_domain Values defined in Wi-SUN PHY-specification. + * \param operating_class Values defined in Wi-SUN PHY-specification. + * \param operating_mode Values defined in Wi-SUN PHY-specification. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_network_regulatory_domain(uint8_t regulatory_domain, uint8_t operating_class, uint8_t operating_mode); + + /** + * \brief Set Wi-SUN network size. + * + * Function stores new parameters to mbed-mesh-api and uses them when connect() is called next time. + * If device is already connected to the Wi-SUN network then device will restart network discovery after + * changing the network size. + * + * Default value: medium + * Small network size: less than hundred devices + * Medium network size: hundreds of devices + * Large network size: thousands of devices + * Certificate: used on testing + * + * When network size is changed, it will override all or some of the following configuration values: + * - Timing settings set by set_timing_parameters() of the Wi-SUN interface. + * - RPL settings set by rpl_parameters_set() of the Border Router interface. + * + * When network size is changed, and if timing or RPL values should be other than defaults set by stack for the network size, + * they need to set again using above function calls. + * + * \param network_size Network size in hundreds of devices (e.g. 1200 devices is 12), 0x00 for network size certificate. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_network_size(uint8_t network_size); + + /** + * \brief Get Wi-SUN network size. + * + * Function reads network size from mbed-mesh-api. + * + * \param network_size Network size in hundreds of devices, 0x00 for network size certificate. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_network_size(uint8_t *network_size); + + /** + * \brief Validate Wi-SUN network size. + * + * Function validates network size from mbed-mesh-api. Function can be used to test that values that will + * be used on set function are valid. + * + * \param network_size Network size in hundreds of devices, 0x00 for network size certificate. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_network_size(uint8_t network_size); + + /** + * \brief Set Wi-SUN FHSS channel mask + * + * Function stores new parameters to mbed-mesh-api and uses them when connect() is called next time. + * If device is already connected to the Wi-SUN network then settings take effect right away. + * + * \param channel_mask Values defined in Wi-SUN management API. Channel mask bit field. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_channel_mask(uint32_t channel_mask[8]); + + /** + * \brief Get Wi-SUN FHSS channel mask + * + * Function reads FHSS channel mask from mbed-mesh-api. + * + * \param channel_mask Values defined in Wi-SUN management API. Channel mask bit field. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_channel_mask(uint32_t *channel_mask); + + /** + * \brief Validate Wi-SUN FHSS channel mask + * + * Function validates FHSS channel mask. Function can be used to test that values that will + * be used on set function are valid. + * + * \param channel_mask Values defined in Wi-SUN management API. Channel mask bit field. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_channel_mask(uint32_t channel_mask[8]); + + /** + * \brief Set Wi-SUN FHSS unicast channel function parameters + * + * Function stores new parameters to mbed-mesh-api and uses them when connect() is called next time. + * If device is already connected to the Wi-SUN network then device will restart network discovery after + * changing the channel function, fixed channel or dwell interval. + * + * Function overwrites parameters defined by Mbed OS configuration. + * + * \param channel_function Channel function. Fixed, TR51CF, DH1CF or vendor defined. + * \param fixed_channel Used channel when channel function is fixed channel. Use 0xffff when fixed channel function not on use. + * \param dwell_interval Used dwell interval when channel function is TR51 or DH1. Use 0x00 to use leave parameter unchanged. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_unicast_channel_function(mesh_channel_function_t channel_function, uint16_t fixed_channel = 0xffff, uint8_t dwell_interval = 0x00); + + /** + * \brief Get Wi-SUN FHSS unicast channel function parameters + * + * Function reads FHSS unicast channel function parameters from mbed-mesh-api. + * + * \param channel_function Channel function. Fixed, TR51CF, DH1CF or vendor defined. + * \param fixed_channel Used channel when channel function is fixed channel. + * \param dwell_interval Used dwell interval when channel function is TR51 or DH1. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_unicast_channel_function(mesh_channel_function_t *channel_function, uint16_t *fixed_channel, uint8_t *dwell_interval); + + /** + * \brief Validate Wi-SUN FHSS unicast channel function parameters + * + * Function validates FHSS unicast channel function parameters. Function can be used to test that values that will + * be used on set function are valid. + * + * \param channel_function Channel function. Fixed, TR51CF, DH1CF or vendor defined. + * \param fixed_channel Used channel when channel function is fixed channel. + * \param dwell_interval Used dwell interval when channel function is TR51 or DH1. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_unicast_channel_function(mesh_channel_function_t channel_function, uint16_t fixed_channel, uint8_t dwell_interval); + + /** + * \brief Set Wi-SUN FHSS broadcast channel function parameters + * + * Function stores new parameters to mbed-mesh-api and uses them when connect() is called next time. + * If device is already connected to the Wi-SUN network then device will restart network discovery after + * changing the channel function, fixed channel, dwell interval or broadcast_interval. + * + * Function overwrites parameters defined by Mbed OS configuration. + * + * \param channel_function Channel function. Fixed, TR51CF, DH1CF or vendor defined. + * \param fixed_channel Used channel when channel function is fixed channel. Use 0xffff when fixed channel function not on use. + * \param dwell_interval Used dwell interval when channel function is TR51 or DH1. Use 0x00 to use leave parameter unchanged. + * \param broadcast_interval Used broadcast interval. Use 0x00 to use leave parameter unchanged. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_broadcast_channel_function(mesh_channel_function_t channel_function, uint16_t fixed_channel = 0xffff, uint8_t dwell_interval = 0x00, uint32_t broadcast_interval = 0x00); + + /** + * \brief Get Wi-SUN FHSS broadcast channel function parameters + * + * Function reads FHSS broadcast channel function parameters from mbed-mesh-api. + * + * \param channel_function Channel function. Fixed, TR51CF, DH1CF or vendor defined. + * \param fixed_channel Used channel when channel function is fixed channel. + * \param dwell_interval Used dwell interval when channel function is TR51 or DH1. + * \param broadcast_interval Used broadcast interval. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_broadcast_channel_function(mesh_channel_function_t *channel_function, uint16_t *fixed_channel, uint8_t *dwell_interval, uint32_t *broadcast_interval); + + /** + * \brief Validate Wi-SUN FHSS broadcast channel function parameters + * + * Function validates FHSS broadcast channel function parameters from mbed-mesh-api. Function can be used to test that values that will + * be used on set function are valid. + * + * \param channel_function Channel function. Fixed, TR51CF, DH1CF or vendor defined. + * \param fixed_channel Used channel when channel function is fixed channel. + * \param dwell_interval Used dwell interval when channel function is TR51 or DH1. + * \param broadcast_interval Used broadcast interval. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_broadcast_channel_function(mesh_channel_function_t channel_function, uint16_t fixed_channel, uint8_t dwell_interval, uint32_t broadcast_interval); + + /** + * \brief Set Wi-SUN timing parameters + * + * Function stores new parameters to mbed-mesh-api and uses them when connect() is called next time. + * If device is already connected to the Wi-SUN network then settings take effect right away. + * + * \param disc_trickle_imin Discovery trickle Imin. Range 1-255 seconds. Use 0x00 to use leave parameter unchanged. + * \param disc_trickle_imax Discovery trickle Imax. Range (2-2^8)*Imin. Use 0x00 to use leave parameter unchanged. + * \param disc_trickle_k Discovery trickle k. Use 0x00 to use leave parameter unchanged. + * \param pan_timeout PAN timeout; seconds; Range 60-15300 seconds. Use 0x00 to use leave parameter unchanged. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t set_timing_parameters(uint16_t disc_trickle_imin = 0x00, uint16_t disc_trickle_imax = 0x00, uint8_t disc_trickle_k = 0x00, uint16_t pan_timeout = 0x00); + + /** + * \brief Get Wi-SUN timing parameters + * + * Function reads timing parameters from mbed-mesh-api. + * + * \param disc_trickle_imin Discovery trickle Imin. Range 1-255 seconds. + * \param disc_trickle_imax Discovery trickle Imax. Range (2-2^8)*Imin. + * \param disc_trickle_k Discovery trickle k. + * \param pan_timeout PAN timeout; seconds; Range 60-15300 seconds. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t get_timing_parameters(uint16_t *disc_trickle_imin, uint16_t *disc_trickle_imax, uint8_t *disc_trickle_k, uint16_t *pan_timeout); + + /** + * \brief Validates Wi-SUN timing parameters + * + * Function validates timing parameters. Function can be used to test that values that will be used on set + * function are valid. + * + * \param disc_trickle_imin Discovery trickle Imin. Range 1-255 seconds. + * \param disc_trickle_imax Discovery trickle Imax. Range (2-2^8)*Imin. + * \param disc_trickle_k Discovery trickle k. + * \param pan_timeout PAN timeout; seconds; Range 60-15300 seconds. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN in case of failure. + * */ + mesh_error_t validate_timing_parameters(uint16_t disc_trickle_imin, uint16_t disc_trickle_imax, uint8_t disc_trickle_k, uint16_t pan_timeout); + /** * \brief Set own certificate and private key reference to the Wi-SUN network. * @@ -131,9 +399,44 @@ class WisunInterface : public MeshInterfaceNanostack { * \param len * */ bool getRouterIpAddress(char *address, int8_t len); + + /** + * \brief Enable Wi-SUN statistics + * + * After enabling statistics those can be read using the network, physical layer, + * MAC and FHSS and Wi-SUN statistics read functions. + * + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN on error + * */ + mesh_error_t enable_statistics(void); + + /** + * \brief Reads Wi-SUN network statistics + * + * Reads network statistics. + * + * \param statistics Network statistics. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN on error + * */ + mesh_error_t read_nw_statistics(mesh_nw_statistics_t *statistics); + + /** + * \brief Reads Wi-SUN MAC statistics + * + * Reads MAC statistics. + * + * \param statistics MAC statistics. + * \return MESH_ERROR_NONE on success. + * \return MESH_ERROR_UNKNOWN on error + * */ + mesh_error_t read_mac_statistics(mesh_mac_statistics_t *statistics); + protected: Nanostack::WisunInterface *get_interface() const; virtual nsapi_error_t do_initialize(); + virtual nsapi_error_t configure(); }; #endif diff --git a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/mesh_interface_types.h b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/mesh_interface_types.h index 7a684695..d2e89d28 100644 --- a/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/mesh_interface_types.h +++ b/cores/arduino/mbed/features/nanostack/mbed-mesh-api/mbed-mesh-api/mesh_interface_types.h @@ -59,9 +59,48 @@ typedef enum { typedef enum { MESH_DEVICE_TYPE_THREAD_ROUTER = 0, /* Date: Thu, 11 Jun 2020 11:02:10 +0200 Subject: [PATCH 06/20] Recompile nano33ble variant --- variants/ARDUINO_NANO33BLE/defines.txt | 2 +- variants/ARDUINO_NANO33BLE/includes.txt | 9 +++------ variants/ARDUINO_NANO33BLE/libs/libmbed.a | Bin 17932392 -> 18255932 bytes variants/ARDUINO_NANO33BLE/mbed_config.h | 5 ++++- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/variants/ARDUINO_NANO33BLE/defines.txt b/variants/ARDUINO_NANO33BLE/defines.txt index 2e46f256..5145010b 100644 --- a/variants/ARDUINO_NANO33BLE/defines.txt +++ b/variants/ARDUINO_NANO33BLE/defines.txt @@ -32,7 +32,7 @@ -DFEATURE_CRYPTOCELL310=1 -DFEATURE_STORAGE=1 -DMBEDTLS_CONFIG_HW_SUPPORT --DMBED_BUILD_TIMESTAMP=1588769573.9861534 +-DMBED_BUILD_TIMESTAMP=1591865541.2185009 -DMBED_MPU_CUSTOM -DMBED_TICKLESS -DNRF52840_XXAA diff --git a/variants/ARDUINO_NANO33BLE/includes.txt b/variants/ARDUINO_NANO33BLE/includes.txt index 37990316..ea2b7134 100644 --- a/variants/ARDUINO_NANO33BLE/includes.txt +++ b/variants/ARDUINO_NANO33BLE/includes.txt @@ -195,13 +195,10 @@ -iwithprefixbefore/mbed/features/nanostack/coap-service -iwithprefixbefore/mbed/features/nanostack -iwithprefixbefore/mbed/features/mbedtls/platform/inc +-iwithprefixbefore/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE +-iwithprefixbefore/mbed/features/mbedtls/platform/COMPONENT_PSA_SRV_IMPL -iwithprefixbefore/mbed/features/mbedtls/platform --iwithprefixbefore/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE --iwithprefixbefore/mbed/features/mbedtls/mbed-crypto/platform/COMPONENT_PSA_SRV_IMPL --iwithprefixbefore/mbed/features/mbedtls/mbed-crypto/inc/psa --iwithprefixbefore/mbed/features/mbedtls/mbed-crypto/inc/mbedtls --iwithprefixbefore/mbed/features/mbedtls/mbed-crypto/inc --iwithprefixbefore/mbed/features/mbedtls/mbed-crypto +-iwithprefixbefore/mbed/features/mbedtls/inc/psa -iwithprefixbefore/mbed/features/mbedtls/inc/mbedtls -iwithprefixbefore/mbed/features/mbedtls/inc -iwithprefixbefore/mbed/features/mbedtls diff --git a/variants/ARDUINO_NANO33BLE/libs/libmbed.a b/variants/ARDUINO_NANO33BLE/libs/libmbed.a index f0d59ab765009915e36de0fcf57ed934f6fee422..28ff4763630d1bfe66b18050074efa1282439250 100644 GIT binary patch delta 4702962 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
    BFqD~vCnfE29iRp6uWE$VerLGWl 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

    )PLIbZGzH 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%0A3Gao9_)uRic4_nIUk%&Ye(qm$|E%V;Yow|#Mn+( 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

    DZ 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�#N`l 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

    Tb{qOmD-1QVtvj?yIc|bH{Ts zkGt3)@gAHmknR)WWt=XQ)(KiGf00CLAoL>$z}McfTjGUnMDqXyVE@7`ubJels>&FGRmX*7HG_ddQ8J5DT zXS(iiZ`H<;4qZy)HRdsGOVWb-xd1ddW)^vzTc|C*pKwc1Fo}i~uACp%5JYrzRT0)2xSxtzRSWkEeyX!zI z5dQIkG!devsFb8bL3jb4*KQz^&jFvXju7dsAVhk!UP8+6ln&`x?xBxn(#l2|B+F6F z?$?6V%#)z0rtO4H!uvlmJWVuO;w&LjNdj7qVT*uh$kTwLg3*so6QU`HXe;5IKj~n> z4@Ul6;0EJ=p&cSTTp+LcyP^QdD4Y0A+N~P%o;D_^1$dLA1!@pZEwG629kl;iihz=D zBt!yR2%Cfg=lj}Vq67-SrzX6Q@B>MzCqxZb5q>C17)Fu>i$%`~q!uJOB*EoAB}9fE zLOgt;Xe>R1_IJ?5y~s!mt|Y=H)PQiVP>Mm5*HT23e3?KUAyOR*q%mM1`i#~kR1t3r z(TBed1BrJ520#GOzz~jT{|LH3_2URP!F`bspvjU1dkO3>uuz~XaIC<|0%r=W7FZ|n z0f7$-WQ1;H&?FeRHF<_K7%5|nOO7W5qV+iavA}N#{{`JM!tc=n)MDRZ1}D5EX)SwE zsE~e(u|fO`*cm27mLL7yRXp#Lw4 zi_3(#3$79(V|*V77E4^LfoWl1ig{a482D|?-j@wXBA1}npMc?b;0NN`8xJ)?eeZHI`A&o zI`0?}-r8@jtFPXjMgtFVT!cvT1w!QY0inMnMN_w;u;U3)i8?}5?ny#a`U65V#;>BW z>L||y@Cnh%Tx}J-a};@ydOX*;M6ZURP*B)&OBr;5aWI?^<6{mX#?5L%jHkVX7-zH- zPUG)O!UEjaKENUrkPrj84`B&*kO^Iq^e7>22(Gg^8c%RM4`^77MJ08(arikF6EVpR zwt#^jLco`vD zvPRIgglN%agl;6Tf-cas8->6YLNxI%LGK|%Qy&#{8zGv!L(pFlI>aQ0^i0%s=mG~J zX#V&>SL6t~fUqlC1n4G#X~gKREkYArPc-_7>%)WQlO1l&2I7NmB1D(*Ne^^0(dfFP zBD{?dU3gN^?S$ycvx4p*M3-LTI}=FYGBI+YW*`J48dT_GDNPv~^t_c8DXy^2SZNhhm9=HQn#}gmt`9+H4-*PaBytSh^b;dNuzSYi|M&Rk{9; zpEEOOW*7#T0c013MMXs%L``!W7DoicIcR2TiK&G7 zH0TQW`}A_Yot^a|UjWswEQlsgYZf$%swRh03v&4F?aV>(-{CBF#r91w$X+!Wr+E8^ z!g|L_RC1s*3o5Zw>CNzD;My3@%3X^8h@xLYYyr*4Gg0dhlxB)whi`~X@IiL2^dtqu zU<~o(;of#3aSdySH5M4e#j1Xn?QRdu{XzRsyjG1Edj39}#H(wYs!~)_l4T3nj!Jk+ zawU<~@)%gGqV|5j!cc~qsSdRS#Ej71E;2>a%Kp%IY1=i-EUu-MF*k%)-h(XtkwtmM z$kLTsr`;P321sjj2z0JEdFWNia5C}6>gZ})3%q4e=$w3TXE;mtRaxSx_2KKGK>0>2 zTQE_o@xBpj3&_7JPa@UJm9R()e;PF7nq{zHy9%|8zbZ#Js;zxK8VXj^u2}}-eVjby zs$?9l?)DBU$UmZ0(8f7tT$Q6IiG850c4PQIOx5Og3%F3ud+~ASc4nbk_awZEJLejx z=w6RmOr~kC;fcM-6tK866JAIkir=Sr-B6NSIC=S1$$cq)`P`7o`%uF~wFbw1$g=9H zENPTsxhEQIsMbYG@Ji1H*aFsGm7GrU6N_MNA5~CW3cP^Fs9&#%>)Ci!#sO5C9|5H! zZmW*s50%0z%4$4P74kUH(^=GWH8jiGsr0)!5E>yV-~f`ankge>FtrZu9t!g`2Tjsi z>@b=_Tpj1Th>CpNaB0crUK~B-tU121(Y77x|ASH6K)y{mU7i`?r=MsV*8uuH~%)8 z>K5c10{)tv%KJTM!`tT?VRmD|-{!IHeB$ro?bERJ{(+N=Pt;$xZJT83`wZ1X^ckdOafI_I= zD#$$GIa{B%M}ixHUUAkU{Nalzk1qeIiM}C%a2wV34}*1($x&FCazGfO4_xkMs-66N zNPrW!d~J_q%|Cme%n*7SO-MCKomza-_XVA$oxVi8l+;hfg;E`GvZbA9ZF5HbS z;1!f8mEtFfR@T4QBVb}O?(r^W18kv;2hPM8uEFb|(ru1JX>T5Q9PG0qj9z-k(}!9f zUY$apiGi?`@mh|d?7v&>jL2&8D;ZViE3oU_(CiU?&*!*U>qs~&*v#49-G6_d;aamB zCO*gIWlavypFJ$-&wBN5K?`i#?)OgTT=N=qzn+Bd*9C{G)2OE5Vj`@0-VHUfsf`c& zx{4WDy0iAohv9$SlUDW*JQ=?P{E9!|*P4r;*EoFD#aJ@zgfXFq*R;8-o?pKKiZ_N& zaU-t4%L8J;w^dRggF-)!S+2wY_YjQy6U;Xpb)%mW#-|f{DiKrFh+c@WaE57qf(d(` zAZAAB&HMQ#DS{3SxIQknzn~Ai)_;iqVE+-3LnF}{EkaTvsB}P17PCxO}?+GeJ2F0KFm#jK$@|h84!toSn&=Sy!S^yu z+l$K^S~q$cMZooyo*^PRk}pc*@x}+@?eVcEEc^;|GsH`lwJ>8Ye2{I92Jh710~*}K z5anw%_%sD<@?39sU^+5Q##{(4-b{V+7bP`p-sHI?R#(CNj+NS6=grkEWp?ZdZ@0T4 z5~@6ErtP&8fYEIM)>Gjb2G#cd7p&C21+t))N>~$VyBK7ki=4%=6>B}SME0l)SNrns z?5qp43FhU;g-{8SscHV#u&dmf1;p?nxCN`(ijCFVvL}L?wtDQ;XW2w}TxiGve)US8 znc9`qJ0`#_*WeIfmQ~1d7iSsIS-icVef$K5cN?W$$WNrYpAJDjvTP#i=j6E;U?cfn zOcVI#MzXXNqgFEod;m%0STY_)kI#P;TKOodop%SS&EAJ{){977`_%A0w0>VsV&#w! zgSe71#EFU0K70bJX8!k4k5k|Ont_zI`u1elAnU%(Q*Mcfg7RM)tLM?aZ4mp1=SDye zaz=%a7*cd?@v#TG$Ywk8U4QThZjo3E%8fvWpldySn+c#?i*c7UFms_^2x*C|wD7Jb~$_goUT zis^;f!iFbL=^PLGB82;VUiRwiL*VJ5+1)bIHP@|M3yUK8sbFEhk z+LVIE;at}oy|VZ-uR$|;%Q8Y_R%jUA9eUX0ESt}TN2~P}DLK0%lON~gZ2>Ea0984Y zU|>_gx=>ZM&ZA^B+{9(yWqyV#Lx2X_X3o{X>sse?-Nx1N5AR3dOyGgwr`yuN86VS? z*+favy(?CA<+70her@*Sb?QD-b=!s_Ck$QU*VKj|t~!US`KM?zaqN=_6mi6Gtb>+Z z?$a*V>$E(@b!_FkAmq}m5+gCE8mv`0#&1<0fZw556)=|D{*}L( zy7^WGexYZ^?HRimxSI=ph?@k?bl5Hio#LAZl#VhpNURF<=jXWTggD+**uKFG!KaNU3l=AY?J0W&mpXQY2?z)HivGf)Tca2 z|80+#U7oJgRx{B|3)-6o)AwiBVMjTZVW5$Xb+D$r?eQQw_2!dyYPlC^z`G|Jqv=HB zQ6K;>4V7rYHBiI5d~;I-ExB)7AjNzNSCnb<$Ar=&PkV-eC>P%x7GC{Zg(#XW{GIq3 zD$>dOhKEu6;%qZTJ>%IMz+b)zf9LTRMxQ?88S#Hsa=fW0$T7Xp?N8ctG&9p0)bIa? zBHe@?o?D~!UrG+BdUe-tgCR|0e<^mj6zYQD4M&j#Q}PO?N;`&hC)9f_E%BRK>Ye8n@HaAKGex{d5+p9WWl$>rT%J zoT>0W=ZPsmE`9vaV(4B;`XQ2}e*oHb!NVlUk>^C!=LHAi9x59uh3Z>`)c7Ir0klLK z+84nKD<(?%G=1byDJVzMJ0(B;MUbE!&w0Y2-W6~wa{O}zw4?MEl)a|GzRPo3C(T4_ z@nov^+!O(0q5~x98bwX&YMh8_pUMA`KCH(UeD7{g2qo6 zrc=i)&>DI#B|nVc1b2MK%o%@G|54gNL0Z{BVafvzf zX!aA`yX6#H0+TY2zV+rCM_zyJ)#gAU(;x1O{uI+t^nz!oD2}3x6#*d)bq${7B89#_ zCWh+nN$`*-)CG*`_#IA(S2-uG-}bn0G{UPImL}G;-~;7@ z7*2--3h8X8;0}gG4Y`Ls>%=l_Tnf?*$g7zSaFhml1LClPG!GR7RH1|w@?C4QGh$Ls4r-m<_gb{A7lqkcMhuMVJV>WvLckslod-s0b5LPB|I?3ZIdG zu4h+v3(sJPo-4u(TY~&FEU1gQGN>;4Aj&LvjUzU7ch@r z5fwDu_M%N^?M^=;GZeiKZCL<@X6tJ<-IVU+eh(G6is3kC=mD@Ll=IWc)p_79cUM`i z!|-UKH0>wII*L9i1F2~|2|Y(cxlOmRJN=7GJMM;ZW@tOQ>$rY0{Q00D8adn?Liz85 zRIZt^3hsXDvqAWVR>Efwl5@!3jAZZK7eJ-k17VQh9EohApl0@$Hpz+s<)mqx;~Xl0 zd4rSZ=7d*!Uo(sFuG52dH8+RR&|^r+p=opS!B2m5l}*YgDke4-;XZ6l?08z+cv>E0FrHZOn%fP5@DeL9Nr}uNbv>Bd-x?sqn{=$lT<3LhXdvWEUhGeH8IJ6={A)* zf??)(_{ScnZooitB$V}}mA{6E7 z6>$A>t=n=*XlEkaHF8rU(wrxJITf24EthbxDf`xGLO0~h8SPg6_=*FH_wPlmeEQL` zN=)C5`yDu|Y`&ylG=19HQ-j^LR~84Pe3vzJT5VGQq0hBaaOPY^Hh5yWTthL0fft|svj#Pxi$Oe~Ai zvlvza2UPcO+!)it4Kkp(L#4|q&?HFfQyfL=(JL(E9L1Y}_<))VgMp)1^eh&tG}~S! zO1jKZ{neuNP30Lw!l-*NtnS52`YKs48K_ALRN#wZmC*@ro)T!~Q|_G5Ze zoUO#ZSxdNOhS%JYJ~0TGx)e0D3v+FpgXu%$58tIO7mv z7lVy1OpqK1@ER+!{K)5h1m;;@Z!*&tG{HlX7p4}|z>}VCW>bIoJ%hSPi^pi={YLGZ|B&rJaK8c zQp7+h)+t5w*DrN29T$@>1*U??D#7^?eHRCi2q4wJANojZs2`TuU1Zm$11R;R$Bz>3 zmV>dddV(l!r7X?7`bY+zVGQ`uOuQ_eIsG;q1mMSl4IuUzz()bDJ|v->L(sA-?o|Io z%3N*5o>q1gcJpkCd(l z#G|fZh*!|YFdoXU3=<)|HZ)B7$y2E($NSJqn35D>rirn6ILUHf7)+&H@+48wZ{wi< z!3l#VBv|RQvaifkbjjnCVo+@|Y_`CMVT)%NK;p>f~8a&4f#?LUu#$om%$ zkjoe<*y;$Q&u-1LQ<~=}FxFG>9l88cDFit%D@6xp)}g0AkAl!T^&B z*SEF@5GOuB?N!Ca9!_sY`b5=>qxVTS1UA2V%+gML9nFkWIV~iL@sIe1I;9S?j_ZBz zlwX}w^Y4g$(OFSm-}|nyz~0QmiiM6rekln;yuqzXW}0xX3XLA|Wx(Qv(0-Ek=;S-C zJs*5ww=p3-n{h+BRxhW3>vOAKcK5H@>+{)w*1t6;`@W6$9!+0QbD-=A?gCf8Kqx97rQ^t7U3fvjHha1MAHL;gw@j+r1 zxA=yN$vHTs%BUP@TBAlCP@+t4ajrIuCzam;+>ZGr;_DWUao`UqT`R}z3K0FSm+HNS z?)h^tn6?;YN1y*$01t`0p}#OHL>1BNsN->PA3G1vcc<^$c1YEq0@I5?hyEU;%QML% zpriGGNgkr&YguY2QRgvKpEwgJCX(lyd=JGnjhRl>uaA{zNEcZ-!eW@d2o1dXG)?p#3l9YCXMb1E_Xch;b*1NR*SqN5lT zr$_pZGm<4v4xpd><*roR14)wnrN(5w)OzgP76v<7i7(b*sRr-R;5{1L$Z#^0!nJTML+sl-wJ?*0jEyt`mNA0#8b<(K zY1J|uXV?YW=UVuj2ANc2^oJJ-E(enV3j0pMK@nDX#()lv2YRINj4?kIUNNAX<9lit znq3fX#-2MTX1qo0NiUbZ97o^2Ix3Oc#%4;?HAc>(ibsRH(B_&W4tiq#i;n6(jE7av zN(%rs*5zV|Ek6MqPwojI+wI_< z-Xl;+@>Yzn=?+9wV4~bzypJ*tgD!1<|8l{vU_$OdY#jF6jGd$1$vypO=oG85v zOlQ2R!l(GV&W@#RN$71baGWnF?Q6IduKUNkHmM!LjW}BW(JD~A|9ICd*?`)Bes&%R zr9R!z&e~WS-VN;}D`<@l{-Pd2P>R7W(nPhZ3KFH5IE*k=QRT;Oa$h=hQ+97%Odu6@ zm(P?vh7Z}f?=rjFIu{Y23B`58UYl|%wjmAdVyiEoMUkn;SYP~a(b|b{9nb$imDh`4^nl| z%T_UnJ{u&*(T_dkBHf!J9Xhw@FZ;~oR5_q4dhwt48HyiT5N-Pl@&9GAJlq*5-Uddo!;*`}_OreM}73mYJR z0-l9f{uC%{aFPb6YjBPR719&y$6Z?ZeukLc%7O;?D4lf53oJwN3OTw~q!qVjhc%R> z$)Aa2``~-bnsm%wuRm=|mwSm%s?($BaVYOK-TSEl?BI@cIZ@nAwVB}6+HSdov(dvx zf*HPHIGEu}kge{}IRjV%9qV8Ur-;*`4F-iop%tMU!d#!}{z2N@(5pJ+;79%O)4a_wF3gI&&PW~^Ec zN?VV*Yq+q@^+}54MFZg^&R7>mb&q-s;x=w9QA$SMi|WHo87QY223*t6p_qQu4YkvY z1Lf~5(QH9+vEdR_w|8G74=;NcZ?bcmO~dPB3#1Aw0c+xw>o3!cd3gU}nklo3Ih_AO zab>=J$TvLSc%Df>WAhOq-f!mWvz7ZQiRZ1jOu2gSvnVC6l- zC2{fSfj8S{Xy%~*#hj#;Q+Hu`mEQ=VxQb6h$iIKKA7%WQ6+%A`l9!oS0Y%Ri7_Knt z-pI82$Nd)-3T1i*bxzMtr0>_k^85d3E?#XXWLT!0Oy3-T1w%`lclKyr3VxrTFnoe= zCtK^+?Kecz#G#mg3M%D}fC-H~v*FWGnVGAQ@P|pM*l!6yc@3q5g%3)*BeSc5HB}am zcQmvQmEl>ju6K@9hJ{a=rGUyT1yp7!pfXDVm01d?%u+yJnfb()viAbs$zkjU_i6DD zGQ}0MmGhLB#Rbjy z+Mm6_0C`HsIadfZy${;m`^_8!opZ}c(mqUw63X}%DK*o}F^RXk!Q2}qCs9S-S_9nX zuID6g++so*#qC3 z&|JdtL8Ben43qFcDH*GLIccosO6~i{Cedg4vbnmhmr*nX+Mc)ObGCo3bDb|up!50i z-O%~_eHrC26w>A5N0eH_1A+-P>rx2TmnW~4X&yf*aN&5cKeuI)*Y+umvpxO1AfOq6d z`tE%tyWVfH6b#$&DN;y3$Y7v_wgh(C21*gbrLexvSSPG?g~BwO-ai#dx1~Zq4JN*f z!=?BHDKuRQ&zGV{z#NoJLK8%t$e46>#lXlOEz8 zn!m0fioz$!;U=|?#lP=FH0?nqDmRMliThQ>Z%^rO7HyPY2n)##tMR03zstl z@xDO|Z)F&)s(^F7yEqI!#eOaQ5MU-FS8r<(?=!?xexZfGW(cgIT?_xj5XhEJ#2+g3 zV;D&VU30_f^QEhkDZmX4=FdZKGSk7Et+35exPl?7uF}Fa z4AI0+EnLSCO&!p}P1G8jJB+p!K>W)~3k`m$pbM=jlE3u3dC{U&Wua*(8ghNMNG|)N zBwa}e1=>d8Fqh@Ht=iUX23=?S94-UOL%_bHX|_>}6SAc1g-j^)Oa~%afs`7m=ah;G z5Rn!6L*~2*DLQ8;t%%1;sR-6w-{BCr_2l=kLHGV}vm#y7<%H5v&QS5wZW~4Tx1-u6 zE_k_FH^L@O#3)Q=?hqtz`(V`0b1Mkz@)>B*ixe}Ja!T8tH9$nW$KlxcbokGxaAA{l z`9-4o_p{JvCF3DvtoDA%L}uHQSeKG#%1PBRp%$RHp^36Bo(;R0@wV`dluD9$KLHIV*VjRYF8k3teumDp49s4Qh;F{` zX{_ljcp*m={#xbFd+Y{O32CHrWQhHJ6vI=LXqB?qboa0xep4_;D-2jeNFIA@oOI46 zz{huO)~H0dum$f^#g+q$Wv717KquLqXOn6D?ngpsd9fTd)0bs%3qM$IU*iq~jtc?T z4`NAI1*>KJc93#6_Tt@(w)>*`-3(MTW#KfOx_Wx$pgWp+Hvv&4$0}c%uKDzXArtA}#d42?u_#{EuK>R_%J24mnGP=2?5ofLV{gCP z3)^~ftbM=F;N0%Zbnb^0`t81K=W&`dOYS2bKW$9xM~}{udt_|#^>i3I9HyxHtae%7 z>|5UNm~VOTp$jhkD&Ko)$4=M4{ed|VU2s0W|52Xa5Blbfy|}bQxTI6i{eLbMdyj4Ho!4t@Z1Fy~khJ5D#Eef&*B%r5 z>r>1>EM59ztB^Ez;fIh!z6u%S317K)&$8YNL7yz)oS&MkA2j$T3T#N<)Zq}}%tEPE z{T8SrC&l!`(%VnB#3f{qqKl#tRji zeG!YAPrs6G#8-Eur{QDTvNrgV@vRdQQ*&Q8HJ^S1lvdNioW||G*&u6*6UBs8zN*CJ zTu@v1B*l*ROrsl*`Q|2e%gt=p>6&qu-xw4bqj)2C^fw}S%k@-FA z@ojFCE(s&e#mUq7JITeuC4Cm%F;AYaU=g*LSC~Jz3?kNR!MXtvtoneB_R6JGOd;)z z)J^4C2x^EWCVEgqd4Mc44PpptD2;2oKTJ0dPy$sn8dKKDR1xz9Ok*N-Ly^%`(A97Y z>Mj#|b=u6IkD%BmjGIA0{t-9pc=c1d0q*XdC@(&6b(ArmqZVI%U`y&i?c!85ikBD^ ze2JsRs8Re#hwR@e(*$%z3{j(8N=efc&b3L^;EUnrt4tqq z)Ez1<2BZp6=5S8=82d1+^eLJA*e8M}qxC6y)*#*z!@t0vluLY5FZi>_Sr3Qu z(6YJ7Kt(08K{|p+sAh~`8U7#g!WK$vj}3j)C@!s%1QG6zi z;-eR9VZY^`Qh8tmNVEv1ykg^}h(6$`Xpz>(-Vnmbzw0f%?E)DLO%doo1^;>XRaw98!Wl zI9Fl|)UuSQzXQ$nr)i7i*px_p1hf%xSPB-N(-iyBx^a?(LsL2jNWN`l6Q#gyAS%BV zQgv3^wMb4Y3gh!uU77tKtiL5y3UQ*dQtSwH9VVp12IPaJL|Pb&2D<94sZxADsp}vq zbf6RsA#;W#xui6gB*jPxqcixhlo1{8jqWW=)q)L!7R$>-`t>&1|Buw9avbWDX9@ys znYYcFJ7a8#s^bTmkgC1Fz@AuZ42t2mf90^c@-42AmjeB|2G)%y6w34Yn;JXKE!!uI z4W%dI$JuFLAkXwV8w9w$S#%P+d1oUjnJy5*7bqPq# zUzoZn84A^;+IxU<&GRB5_2&W;jR8?)XG!+&s)#H<_8KR4p*bKkjeOWW)k&=@6F@}{ zg8^Gl_!z7B6}66s1mo&V2w>(#5ve{IIfvM=PYJ3bW$hr&~ zbqTVWAHXt1)f8r^kj+B{;W3T}HTwcXkdREtu+qUd3|%Vm##Aih=&Wo|!!S#ug7MU# zf^p1tq-JOl4ZV#FI?$jk459pajA0JwZ-%2a+hb_Gjl+4^SGl1v8o6AclCzevntfG_ zyoWhGU+W;^k8>FOf9{|z1*dNKn70lMw{t|HrmHzlvkrexg4)qK%r~l01u0VzORU^z3oV8z-SC6oR!ys^Y{&0FaLpvT! z3oA+*m^QK&p2!fdX}Tz+D+OkA1X#fe%K&gChtqMAMJvEqAXmJFVKl`a#l-)%W?XW^ zZL8&I@fM{x9`IgHM!iqz0MXtD3{l-$Js|p{__apA6`$kiFY7=s8{k=ncs|9IIG+1o z9LD>=)~URx*$jKq(It;5PMvf3bqo}Qe1>SINDJdrD9x?X!sQIn?9*C!Cqp#fq=lOq zq8mIlxW3OAqC4Mc;d2bpEuR*?4A_gmi!v2Zz{<~yekL(QIGG_nEaRfOfekOOk~Aaok?27!tUaN?s`GMq}2$X`)q`4d7K)fw5V4F3W(;OgSvp z_WgXDpGayZ#lMbOgyZYUSh>W`sBn=NaHJwzd^V zmK@_o+N9&i0P9Q9$N)JR4w~udi}wP<$jb`DjyTL7I{E24NR*+7oZU7O_W0k0r>coa zNhW)C10;1w5uc{gSHFVz>hWNk@ld)>Dz6l{LSz9QR@`=sBP(f0$a`Mk>ILq zS;bPjX~?v-sRK5w&Vexz0M+3L@K)BYTW5wZ7d&%J5A3|&5f5r+-5iTyVjh?$o^ahd zoD1VD9vp$AqNUJe9`9csN--7KuTm;d!FEn{Jv!N3U2=^X+zvhoskz{+cy}u{%&q8x zgKE2?pXZt~Sf5z2F6Wr>I5fQ+G~C?~Mi)=6uu1H188ZL!AtBv+^Xu`)7bo#X z)Om55P`%P%6GN0@PpFzbo04F`%j|$w3ayVtdk5CQhfm4gH_bTbAPC>8JeZ=V-3B^x z=Qt~v;H9_S7f$Ey9EZ0V&yvsehL8}l-anF62-NFEG*wRZy4j($KX!UhKs)mB63(kz zx9UTIL1MI&32Fms)dOr0M_)wcZ_f*X-NMFFgIG*ya27&Sf`|R?>++RA0S6pd^|?Cf zk{&kLdIw)&!(4oGH4f(?JW(Bc?Z=C4QVxcE3$>ym-6|a&{jKy`KaUZ7L-b%UoxH;u zEhS?)|CJ8ajY~2l!7iw(@=OnHfQrz(_a=;>%NyV{cqsB4@P}WKsQ&r(u97Z2T>l7- z_*w22@CQ{=I=OCGG%eUDr|Di6=%I<{QpmM4Z&alRTf5^CeEC%C_yE5vk{?QWL{3wW zmHaksoat}0VkCOGQV#edM%=+ZQWn}KhR}&hIb0E~SN~(UpV*CDIm0(L)R9~+`tfV# zC2atS|D4c+>ZY9wXqdNIZh%dt=dXvW3bD{Z2EXM{%ohuR$W4S1qR3j0P+UeOE3Bx&CSKO1?{p0Xlux%FEi?g!c zjCgCxh5Gk=5&gD`u!CcY`ru(-Xup^0EeemTs6O+&n3(0Y=1Jbw-e#|HrRa{hlX*3R z+&;z6XePbCP3~Ied!DWGaODPcqKjKRu5~y7Bq4&8K zwc$vm(LGwDLh{KLwOLD^0nNU8RkMQQ{ZpBa)>Br;yQiWY@9^f!7nN1Z_m=UV-8o1( z*7_sfHlK69`qC*U<)J+OD`MFK8WYZj5l~s%f*nxN5`Pmh61yJcJwsyGgRB!FvFpJ) zzG2sc(>OD`9?U_E_&%l-aF`tY;v8Uij(P#}TE%O?wZyGi`YjJ4qx|#UdQ7c~q*(dufN|lCyKE{H4rdA%2p2QJiFA0v6*p-pK zJJZECBHPezQt((Q62VmE7g6z2bSARXl*e!`AfA>yCeQujga(Owfu5fXgC4)TDLT3T zhC~|vpwW7@_D=2o8ywX7kNil{4WGa7V8hA)AH@7DbpE`njb^$NK6Qqf91T~AI_(FuFrEo_E}naBCc{xIV1sFM#hlyvA#x1J#@Q; zDxP#$sptuLC+$6&1A7>&XN8iX5qHj}HK8>3N%>-U5te zKEoKz5;HKCwFt9}s)8Z5<&6v-8a0!EogZN?H-jO{E#-9NU(OKuz4Yp{ay7Y{*O<$I z*C>_;Mre@BvLympgTUaG@N^B%)!=O!RO-YQvsw#3#1LEOW-VO95S!W#Exel{wpSkh zz}~2A-==9%gD}`RvVkEo_rg%;N^aCO#O{oe>b* z`do8mHL!wm5u}LlH(m`rn6PhR;N76o3wWx%XSc&i!bkp% zET#>)rFZZ?p3>BLQ9@db_o7Kpj&pb;!pl|RNdhX2u+fTo=qB$RJSK%&>QO;|D|ivA zGSNg3Q*Ko}GH|!t*Dz?{AP1}!%gMpOpK)DLCvu>P$9Kz#lf3RA$Vs}oKR<2R!Hf4s zpP_=`{tkUm)bR*qsTbW(*EgNk?QoqpV!^lM8B0f&Hk}5CSXu5lcj7WJJ+Ty$2F1{u zdTfUrd*r=kU!hfl(zZe5McB%pej;w1N~HS3*t()U%;*twqUQlBoM%AE8OF%CU>p#o z9|kD)>h!z1i99y&@bh{ zwu=tk0AZW$KV;Vp(oyMMJJm(}hN&eBXD#_}i@2a_IRCDZqv_|Ug^LAzq$@02r9QZM zq~R~f;{)R*TdXAYgGvlETtGD2u|5L<}?~Mn7mwRuw3f)5BpC#s<-2hvbMp`REXry29DvfM@3X85uKX zEW|+;;qT8#J8Al_0KdJkBY ztcl|757ovJlB_NJNH0P>mz%*5^-TbbMP@8tf~BX*iLvxjrW&01pn#hb zdTSIn3S#+JeBihkqM#X&D>P{FN=2zEYsUh*U=XKc;tpj9){cuIDDP~BX==xKInU=X zI%H&sL2MOh_LDcHmtkuf$Weg9HOO7!@bwJ);Y_9$p3V?2XucL!wjnHHUM;*vgAZ#^ z*@h&INdVmGC5{JdWQb}0HeeuQ{GW0J;0b}wY}%4YW18g0yED_1_a#=|<5EvCM5dn@ zqE(iJ=|bs?H^bw4B3bEVob~~bZ7tV{a0NqTuTsKv(;>Olzmso(k5BPiZ{JO9CSR&S zDXh$SxgfH6hf}Q895{^Cya_2TTF)uo7cw!PGA2Qlp&2RsT|v%sif6(B>}r>8#K~l& zkaH(AZ*7#8kEFV555r7qv+PthNf)i;$ac=Zebs4&{5R0kGjgp|14H@ZHyRbw0*my# zBesy(I3k2%Jm6t_sNEpesTpkDK&CWp{l$tiT&06?0><^>4K^4_pEm~DEBTVkT%G@^ zKg`PvrS%`Y9$q~c0aS<~QbC8tpaVmHe99(O=`nOP6E1Ws>J;2nLqf6 zLnJ4fi=~shZb%g8(II(Jk^$3l3e`_8jG#wem;2}k4{|Cx`PFrKL3n+aUzcq;w&(A! zGq}4$Q=nL(P(oo_ROhtjZSW=FNNi}MkQj^@gVW&-=#caf+3P$$Lv$AYDl-4ws+O_T z*$&c_Bl7X+iF?9F7rSk{c#m|WPSyBH2x`cr>)rtJtj`k??(sPs33X7}ZEV=|hFqZw zW9cSOLHt7QiRrTox9PM}9u`{0TC4XVsK*)BY|iJ>9HVPu&i+UftMs!N#PU#9mm82C z#8Ka=V$Nc|uQH551>!qult+!i@*;@Os8K0OloXChAl?gOm(qtKwncG1ZjC;U94BJ1 zs?!~tZw_Z4fJ9R&*Bgo9V7?LGKs2hGFE49QVZ|sD#Pht=C>yL;#bO!D8U8_(l~duw z#gA2S#ZPzz(P$^e9W7;?&)J#p8%S4Q;C!zt`4YHnm7gNCs8br?1x~Cg<&vEZ@QW22 z(14cDflpM_#S-!mj^bCq{pSxY zgua72zFhdj2jXCN`~~vk@`nvMLkEw_-T%bhIke(|ZuDE`M0mn(ZvxFZ08_g0>^dWr zTrLbEr*k~;oWgtJt8ZGzUOW!2stbl;gYXz?|18Hs(XSo$BiG0gMtbsEZy;^naBnQ_ z{AN`E)djyO(Q~FQfplHkln`=vy%|6A#{^Pp3q+8Y@0)6-F_tc78W9d;%JtSTGug_w zK}Tz5ApC60pP1=a`3)p+Ttx}N98L3VGrir25<6Pt9Qx{!Qd{LT@bmsJYZ@woy~AsX3n3vaN6RT*~NJ?myMo3gL-}>$HX#< zGGW@>Su>F0x$Wk;v!)|e>EyWSK-Dsi|LKUCYKpVVL&hK){t#4`e|-=%_M;!7(VF9O zyh)Yh3OI}v3TLCHKoc!^dXhwSb$vmFr9J9z%m{Q&!#6rq^iCo2YvgM{13kgTCkXg{YwsSIPf)29+c&17zv<)kpQ}pPv_DI zV}x(uFbIzs3=vk^1EF!d7Un6*QiJ=ou!505=<=u*eoBM&8e}SnY2RkRGOqBbmT+8y zZ4807oz=qU83O%N#72O@7&=@ol3^0iJPqg$o(R2m&uV3>Rwg%M{rq z2$r=R0k~O9s9}hulR1(M4{MM~WNzSN4SuP?vl`?*fw3qP78O=A4P%JKtQ$ipZYoE8 z9k8^?VZe!O9*}QX14oDVK8Ilnl$13HEjk6?tkz&%!@+NGptUSQYsksatejR>8eGC* zG^iM`M1%V|j0fPQlOON`L%ady2sqwQI@gQ#=Q6~bWQ$t-rVlX07x}%MBW>quo~Kd!(=VPo1v}Hp&SvK)*<(R+9;R@ z6>nt1N?(4S4Z@sy#8yfH2HN}N2pB;@R%*Esn4RG~FuS%YcrQrm76*nNpJFzn)5(-} z0@|1djCr=oZ=vRD{_t*0sBWy53U5Y=LU``b#Laod@S+B5Hs{ z3CYzvpNFRwaUjVBM|()ch<8wY8;VWo_ypXHETEmC58i?v86$zpDGir$a@7kvY}IYh z=tRf#;54>eK(%#92bGHS>dSCl6iOGrg~@)$MLbM?<(n{(a}hRsJh$W+DEs+FaMd}X zW#3`2Q7YdwNP`6?rl;8<99X>h3mncyazF$SYP@s!&;^}NV!%lFcKU!l1Z^qCyZeE; zK*)hZ&0nHZbHB{DiOp0S3e>cS(@KyQK{BTe&3y{uqWg~Gd17t~r8-V7SCVTv+4F-N zz9D{)&5{dW@n%Xpd_I)sNg*a$TONZ>pTRMNq8ASvz}sBug5I&`NA$ho-d7FP`!a*@ zq%EJ7!PpM!GgB+4*KoS)U{(YjQSRcVn<*({6mWb5C656#iN*)I_$Cf-qad98WT2qy zC!`0N1ff)wI=QMhz8PmB5yz@U0Xb@_zIdQQzpC(wcVf4^+CY&n$#R^ zTupg`fYWWQU*Y-kKiP#X(T7YvWQwNx55EYde{a4s2*`hiPwpXw07D=ueX1ptRmU+! zuJC4_1uYXt8NDF*c*Z9ONpB;Zq8_Sm@u45(N%Zp9=!XvhjO6%hLwf|IfN1j?RTa2= zT0eYii~$s2FZH1Lk#6wxs2V8T@^46yhRr|IntGUJo)F^C3kamL;pif{ewLH|gnL|(ESU}WST4&9T|0XXKsqXAwL`s$CASU`hlPI+fL+Pu8NtG`_4m1VAC8+~Xs(o}tmQ)f6 zDbv#|Wva(ld`gieQF{nl>VJVkS)3#;CA%K-C|eYA<{X&dpr_5(YqBIOrI{}#8?b)E z6aWvkc70(#`r_nuz3BL3*|w*q7z)L1dCTr!=6pWbU|kli+ZvJ5C?*IA(UEU2%j^)O zB%|ey=*Y~o60MU8hlM&1G8)?XDG%e`igjrzDh@h4!Wd5&BPyp`tkUhqt;nNBWm8a2Q{7f5MJU>U$~oWJuaHb zX)Sb$7@(ru`;Vh%L%i|Ax|D1`7x z65DB|4PRjVXYYVvG#l7z9d84$tb$l^2E{XRZCeE;v6ihKtg!aNByhgtS5E+=;9qc@ zQeSzk7YX90`tleZ8H74%(it@O5|U z)|z`K(5x%t&0)yBmS-0q!Q!h+bYPq03KFifKDLBq#WqHTZ!R5 zB2O}dc~|9;GJ#HrH*`~?fR%8j0o;7H5`!HSF~)x~NcK}aA^mBM`vZLyRNZveAS#A6 zCHn2!wb+>0`9a@~5xrn0r|vhX?)W>}&M z-8~@%v?fkrVc-as4&toj01j9aC9wzm5!{%o?~o_{&XO^FzFBTU8Pi- zyMyuLS!WEOl66KSNnHyg{-|!+weT2T&dIhe(c(>%_E5t?+VIBJ}zgr)ucFWad{0u7ZKW7QU-l(PU_NI}Wwk`85U$T@+j$pIW%7p+3Iw zoLCmG(H+asTM9{hz(hxJ5YW-hrw~H($XJi z2>uLrf$M*sA(*pGfZaIab&kN$dygT)A2S5{@s$=n+b}q(FkF;><1i*cs;H(GZ^9lw>H#vD{Ro~a%?oIXJLU3r#_zrr1rXS zb7il>9CFo%o5_Pa(My|q6^<1v=rjO%TVGeSj#j^n!QQ)Ykgmo?yH>v(Mm4<)L-FMf zEyLzg6niJW&!IwQh>GRN+1?u~VB3z727FW{2i$MMRn+%cW{GY8{z!)`XG3Ytceeyl zMcWo;iPo06!2->{(FSuQ;)yNrSeb%_`&z0^DeNIVjVCLjX;xSmY~$!>sRPke^i&u# zOY1q_*{9GZS@6c%sWlOZch9A+AZcGP2p*uZNcVC&volLoHfQ_yx7egPmMhD53#YF| zI6~Fdakbxq;kD-#ZlIPcaHOK)?bPvncn`nh_yUZ$_8_rW9MtCV0i3EZunF(}S5+AJ zN@}5#&c}V)tIXRSU-K$KU@xI3+Xl!8fYT=vB!SGS4A1MAytWbQh>k}yV~%$j{lq0v zK6GKMC?vSgc*ERhUI{Dr;T^zQp{{pWi(cW1>fmEZv}K&hO7jaY_vvgnu)os8B}4V` z;w35L(1msJV!{_?r^LiFr%pENgwU4q5aep#<9(?^0Ic_pZ5J(xYd0B%j(>Q=+eN*p)!r_e zgIYHF-j9FJBy>FGO?DrHnM6@JLnLnY>nO8GC}e)gBprLm6z~Burfo9$9ph}qE7@|| zb!Ov$Ymvv_)J4e?YqB5f<=zXMj5?og2tyb;5Ds7P*Jqs((xZdtl;pIV&0XA2ob}Tm z{=vJ@-tG`|9iq;}T>)YfLfe|VP*DqjJcM|O#R1w-8t)We)Ne}|Yh zyaWHjQ(N60{2|?ve+mjd=IN(4xu>17Z+rPvko!p4sbjukyMOlEryj|v#euCR9smx# zdn+E<p%{b$-MOtQ+Mp~l-pD8_Cn!NCsZ@Y7j@+)njGiinW%fzkY>No!T4x{+6 zs2a-LBKbuBoOYL49RpjvmG%76cW2_YFVe$VSaM@O_XfBQ3vt`G6t4MVcj3?XT(EB$ zw{joG47T+Sy=2>p5|VECgrD#IF}5_)t=hcQZC&Hjd#C<>kIVGgJ_O}hW_xmz+*8dpXfir`O> z+&K1Pn0=#fW_+`+$o~IP_9XySRNwz^-g^V@!2=%qBFkeDP!JI{H`E6rZiq00`x1nf zmJ6sAmIbDjl_ivNtVnRFtXyy@$~4imTocMl%L>cFatX`&lBNAW=gvUb@Av=x|G&}U zymRg{ckayGd(XLN8IXCjc~xr;HV_71%iqRtb?LP!+bl_?zfYv6dMbTNQ=1L@+CGZ! zZo{O2L;pC2JcSS81XfnA*fnq@n^u@wTuok?F6_bMx03}f35H)DEBoexsl~i_@v^MN ziw(7{_MV0WR|IGa%d|w6EGB?bL6e4n{xpV?JBJJ;u#!ox(*6(?G;~_l3<8^!@p7{5FbWN2SnAz{1jLRrO#+nOFd9Kg4o)J`}LczMRoj%XmsF+nq^|X)AIkewRvB0RW;f{}6?bV@txdjN7sp z!aZ~as8Urvk}dov2PYrW-?A0T?FNovHihwE$?kFs0X+nf@LJ@Tdch}t4yrUBh3OV& z;v>rd78Gmn-qf?d@^9VMn=fsMqa61&Db%@o1dN7uoOZ4LYMZCzUF`)ABOdh7#wT2< zws*QG4L>ytp`iz?uy}Jz`QTgQ;}q>4pm0>@F9s;l;oNXuO!3oOh4XEkEF--Q=S(9_ zTZAFxf2_gy2HbZRhIjO0_gMzk(HBw`@AkDhnFlH{gL}!QB$MZzvUD$;pv+8?z3%L0 z@<@X4RFWW9)_tqoG+>EtzfYFJWjlL8ffb#^UQp~&bk{&7Dt;wsFkVaHwS1D?v%4&3 z%iarQ8P<2qes|O8N!@AtKqb`LUv>)>3G~@OrI+hK=%dS)Nb(+}Bw(L-;2Pq>8 zu*B>~C4-chE(itYF4|^-msOL=%W=P)Z1I=9m&&H@vMo$DMT@^Z?xjPh!#gudMkujC z;j&Mb957L~cO$pK%BQwf(g?XrmTa9Q$0gF0!QiSrD8Q+7_T4OxNsbs^xrTh z_mzX~Iie~aZN_&mj#fe_yc}LbZj4s^Ooav0seH8JPm?ngPkObJ5=_wgE}m?oM@2RK=QrA!K(IWYLd3 z??Q8}PkB*~VajA`jh_~1N;b}4TWS=N)G6o^6*v1$@n3bYrAa z2>aH8QOZimNmoZHgQZhYr2uHDE6!4)jkA~oV_zyObm)n8vQL%!7-EoZVAuy+q!@VE zrwTlB36Hju7^c9$L#I3V-ur8YMsBH~bA8w~*v$|lQ!3ra#@Dc${KqKsA`deawO#^b z$112;;28|jno0EX7-bmMb{;Bo7$zRDWr$v0q~l8% zf@k5I~wj_R7>?7o14^$Qgf9S$fHpNw=U>+#82R~jCox2~ zTxN*w$^x6l-MEY%Qk1|_^t%XZ#Seq4ov!0E^_wi$anXCYOuddDWQfaM&~folaamR) z=Up(-TwFd`$9pkEGp6V`&vR%_h=_v219%_fn&vo5j52Paerk1hTAZwV2hOf7=O^%R#=iI;B4vB8qB($(AWEMTvlQVD8pvZZ?h7N# zq{(rJz%Uhwh$)99{I(BGW}zDrQI zDKm5>+H*BD{~aAYe^g1~{OCo-gk#P9OOa`k>*Y^Jl|;{fN{~$n^(cP6p%+qoui58) z)86_W&4#4Y4M{rvlXm(m$bY;c9`r9wheb_KmP9VPV?MKErY_O*-)m&6Fnbx$eYVD(%sln#bu?uBFH-y`qtlG|~yqf3HTu(92p|E+V8t0qU@< zTFTKg}seSQG9_?{$)as0gq28W5O$w80q5MS;YL2(F* z8$UK_et^j>ij#)m$4sVl0SomZe()h4e3kp&ThPJo{GxP7=GTM|@r0|~`TqIP?%kbV z2tM?>P8g_V*P_UOZH6>H3g3eD$Hux*!-FroRvsA`N~OzcV`*#QL~klPH`>0s1-l+) zgFln2zuDpX3FqrLH{)zOxPRWl`5w-CDxQeB@qd3YU;YBy zjw@K6m<$&YaCmg1rD*!SVhfvA){l;$s9DN+YXDnWnPR|JS?^ZPAks2>DKSOCqO#s|m2h$^!gkVux1nlR-wBuMw^;F`YOeeC2l2~U;o@V>L7}w5*~6!Ez>WfK zXKGKe;!O|E!yD#bgvNP1i#?}@9#gRK6qIKsrNYHQqZfmf`+*t17ami5{+rFHXl&aj z&sTEDR{EKZ>L2ol-BIXHOZDamn-ofp7rO^igxh@Y>ZT(mJm99q{#eO;40FGj1@5M019)SRvd>s>8n2w2qOlup zBY@x?cAEyBPlmbB&taGahKb=AZTH6w%*ArXF%lnVI8F-#>oyTP4~%1IgfX_k4a`R` z3VTS&C>^YGD!ug$FTl~b7%NZlILh7$?$P059X_qY3WmtHR>#-t_%-eO!$=vSVQvw%(x4h%Dy&P5t;E$I*ex6Mc?=Wy{}GpGVH7?*nzGx9*xaC zJ^fCGk=WkR@kI4$aru?~5**d-9>MUTp-<~K0QV~5#?COr4gbLq*A+K}>vrLK(NVm!&e!J^3wP*3hG@sr3?ndD zGmJDCer6bL7-Fzt{^Lj3i(wqrEDZ6enN{cbDYXpoO7O~tUzHGsc!zFdh#P@w#t)Au z_m!^T8*%EEA81&Wj@K|m12^kI78fMo{mpoh#M}_@r4X=<7GOIcU5#i zxsI=5h>oby@r?|7U?o$l6Lv8~&(!PqL5T*9%j{YA+A`%=uuFRfV-S1#PN=&)0fsEu z1A&)oYr>%-*z$py&OU*i{Gzp^%+<%uP#&y&Qn6REuAtwOP+8f0@SugR%{c;t6s9jb z6htNXf!Gm|NBt0*fqx&M?N5Ta`e=0;C@r8+QN6EOnxyfSm!_V90-!n&N-oA37`C56 ziMuKHDU^7I(%#&M4PKC-?{f~O_)o!!rp9mXGWtSj#VIYUcX$mca0-oQsMVUh0x3DZ z4?v}H1yWq_X5?upWk|ubD^`HRn+-Btx_<(P9SuxwfyF+^8?o5^Oj84NJdJv4*7=*U z%IJ}Q23{;zt+dMz;A_x>#}pxhq|%b7vCZ7nn#=KFgg=RTro$x~=u#2=0U)bbQ2nBL zj40XegdtX#8F=|Pcq zznnmhN3r2wdna5K*vqlKnTnkmV~aJm*KGp^4Cu#ya10!1cy#9{t&(GX{wJ-nb8FTemm-{ga>A<5B;0uurn4UVF{Qa7K5j%7b-wK}2~ zMHP4?TxpiNnHylFn($+@q1*MwU`KQ3W+S+$FI}#kYHj8_UVsyiivLQk_-o^#=@DUb zlL-&;CITu=#6!_sD@#?=IqMw!NyaJIj=S7tCeFsmhg1y41+sPM_t+(uP4FyHp>(=+ z5nH|PQE#a`H8|IFqLcM7bC}#4F4L03ifvY|g(tv=Y28P7cbuRZCqYfdvPsjwaplF} z48)HRYr%qN6+f_{BOJ3Pt)nH+D&f*2RP(Ij2zFqUl_WMa7;?ugCX?+8C_C*8Q3_35 zRdK?IAkE#zBb7>^3!+mfGm1$HQ$jVFF}np{{q}2k>))EVk(w0vkj0P(f4ts9$K69k z$0`x+VYQM6&4jc{Wr0f#(u@J*+1s~2Ih-HJHi+Lay^Db#E@dN&{cLz$XD|gRb7{%_ zC(pY_}Eg$L#$B_1RLK44=)!{gJbP@JN%pH_Wz8X^j@;d zk(kUP;A&@FwB)Rgw6WwWIpK8-bdxinv3!aB`Jf0jcwI@PvKKL2*wN-8Lj6uo1fO$K zYxDUR6~u~RqwV4cZE-X`@;W-ZN^y-H?LKmKYfQ4~;!=|-!8aLew79=g~$c2olW{kh`m ztA|Q16voGz3&M6s4QBedTItemH6j^DMASKI6wCsS_-nEm<5q9_>NtkFEp-(emA@sa zo+@5}Qc%NI^zivtuuz^EG0H}WB9A#H2#W75cSG}Xc=fsuZ3rjW(DWgK2rXWZNB4lu zTp5h?Yj=DPP4h=!V%hL3yazZ3Tr|_^SFvW#uSJc+3%`e!`BJ1hF2ZgpeiIbumQasJ z20_1^smZgEY2hY3Nw(12P<`$&E+ZM~+@lBs;tWCkyYh|)RW3u;#i*?ja&IGC{`Vf}K{%B9%*Ol($MkkbTNOqISbtFG> zb0$CZt|js)7bw*jdv=XxF7=lRDVsj~^o6c%N$xJC?q(AMSUiFBVv(xeBNCqXK>g@o0CLCVrdi3ZxV zU~q8T>nHbf9~_)YOELy`q80HY{b^;tJr*iGxyC|2Ke-hT^ScjWOSW+Ezi4JxUNM>s z8)^SV<$n5Lh|QB;TbG?kQCpR_$Zea_i3UE0ZL}`6N*7OIf<0sYkohxU;G|MyVk4gA zT4f^K^}r|c{Dcw0VThT=O@y1OK`+9Gd7nBZ;MO;K|B<=aWM|VRN{UcZ>g?NNra*PV>xt1s5m7g5-|%DnKMjA9`9K~LuWaxUg%=tVa- z%#Nr#@~+a|L`^sFO8MD`VOg_J=}TqXkHR`P9fJJnOv?vNW+5FSXS1jDTE>Hb+i6K; zu5V>M(0HI&mjI=ldL`c@ANT}Z7fVKi7p;pP*@;fqD>?GppeNIQ_J8i&uR!y1Cv@{R z?H5|fVwi2(ufSFVYx6R_G@@a(rsJY_4Y$Y^yau|Xq~rrwH4LS+16UudLH2mvJ2{gd zVuu-Vay`gS%^`UM$nwi5Jy#R!H)S~OGRueH>XUtuJKjezUy|~t2GX9GG^h){uUO<* z463>cbP+Ph!-1FSZbMcDdh;OS6pqKKp35Jm?fre@VA1@?`&e4lzdjiH)(7!L=ObTF z-PzS02bJ#T-n~;CRB_KdY@}2v0bNJ0ZjDRUzDsL|?-EppOZ%7kDDq%IR}fT0a}Fti zz5mOooPwvy9B9YGC?5IDAX7LJr3e3ihUk+9Dyo4}H#^eOhUl+8h1zWO2as2UKA~FO zd5mted06*>l5*<{UD0yIRpRJX7CN*VkwV`0%DcmaB6RtUv60$~Zhtcz!8vM_jgiWhk|LG}@(Z$_Ztogy3n?No7nWPpo+-F+dB4TFC>k z=hA>_Q5sH-omFU2p2Ye$*^G5z`}j;{oGJPKpUiY{N(NR$4R~5Bpp}o||4}LkRr2d| zKV_g=!QJpN#D$^1;i1}CRJ^6*)5UM&8Uv-CQsNRG2Ov}8u%y%-H)ApbVv znXG%x1;!Ak75l9(NrzF7*MODJ`IzhKPbZ&i+S04TX*S-Qeu8_;a`$H60#IA?cW8>;J|EhqWE}zu`vyb1v6K9QF$%bqg;@GCEh>E+8jfSte9(E6+S$XO+)7`geT6<)qK>|RkbRojHUZ=zisctH~4KU#Gh=OK{(qEV;X)*{DyqY zKlly7jA1Z-gJ57^@iXo!UX{goF{CQ~z-0b2lC$tR%uC=uwBdJp3!FtPLqvvqybUfq zl}jT`0VYfx_!Y%INFe^<-&K}A{2K?)^VlF^6r8R&jNj1J6TyLPuG+Nq3c1CC_?z{Ji)5`X-vExpD)sR7mV8{CL0Txp>c5m( z65@6STSk{|COm&b@%SI!YdvhWy~E4=(UPdB>hdQo;G^=L zQ(%O;+!IWiG0?THr=*T{nJAV+7zO#Uu>rtvhHeJKWF6k4!v}S^oFVc(tHT!<;>CN7 zAzr4pb-1T)zpJ{Ry$Zp2i^s!&KE8R6XuRPTlO)ugL2$e zdv(KH2`?fT)-eeC=Qse1m@;?OA|JtvzE*oXYmiO4i?+L~@Y;9-7B&u&W<|k@faye% zO^uUVu(ZpeTqZkhs$D*bH`l5ObBb1d0*+zFQ4UeMjx&@a1KBUZlgcmpJaiqOU%d@i zJ&Ie3Aj$Y5d?;7hZ5}b~nlitkBYj!XgM z{on*YYV=T(X~fM36Qn7;I`NNl8|@}|MFY6PTR24rVjNz4!~{MOT%%Z;UE0; z&sS*w&auI6VhF~ITY96{3VT zp3ymCT$`IuW*942&W#Qjbu!(Sl!OIZAC_3b^=IXQ6@S{VauPLE)@bh#YOe@|V9!>TS z&O-zlqQ=0q3hZJK_2{Jj2X8VzEf@Z9Fp#fXFt`ilADZY{R~ia8w3Iw<?p6y1> z;cDXlbxJR~V^$oMcA54Pl|4Dyug>C7Ev|@TD^^Wqi=kze7^hm`BA9)W)@8-1QIe^5 zkK43pw!Px$g?RNnn|)-bnb3c>zaP@co2GYBvw}TF*0)YcQ5Sh6$PL~JrUusp*M^X2 zLz7BJx~RoaxEs(_4I8>`8_YoX&o=zs*0+nH<*l-QUB)yR97*Rs95s27G~mk}VF~{^ zeQ4xoQ~pl+wc)_1sf+Fo59@m6w6rd_HL7I{25!ja5>?-+b?AEDci@vp96sN~@34Q- z7;j78i{E^<;S68vfWM62@9;?;32Jbxp=DKBH0(_3Tc@WOI&Wx_VxznCJMG?u&e-|| zc3E{=+Mu>Zw!k(?jW6AfVkYUS5_ZrxMi{EVfa8kbTHK>Ar5NqpzlG zj|PjwHEHng^F_bJw!DPVn@`@P3d2x*0%tDHLUGo8)J+{Kxwh36(p|k?8jZd~A`UZt zVYM*;;55!!#`MF;JQ$09Cvb0L)nVdoHWLDuo0)Bs#`s~E9f!=DQcz^UXs&C&BRJYo9w1vD< z)F7i>rkbt81IP~V7?qAY%rq=T4fWvNTHgL*g_SZYN>L+nZy|x)riYP@8@dDMdYl_^ z*5hnDxRZG)cm*dvg(#%8=clF=wNEF0a(rO2Z9l5<-axscJ=$pqz0yN-g7lnAA8D(R*6b3?$rqtv@DGfnMo3QE#ds0Uzk85OXecYlTyX`KxV z=M2@~>eM)h@HBcaL;Z!0Z+r)W=%MN+sKn07R3jjldLmPOHM3YtHf~@q$1$iuF z7{CzxPFIFV@2}IR>F{nny@=sZsADtC#JXHhuV)y9@ZmcASf~HO5cQ!C(GZs6;ox8> zpc^=(hlM=e`YM82yzUAs&Cv!!qk_F_PKNAsI78q(_%V(w24kLXDLqyjK#k+j0Zbon zFyu1?K9eCv*Vzmw>Xy@!w0$)rn2<82qtFV55Pp{fQY|&wJl8NKU*FEZovy&aMGxlo zSUtt5L$u#uMANc$92W!!YA_V&_$)e?q575fgcbr*zzbF|1in_s*XuY7iMZxB8KQUU zb^I_x@I#;I_?HYZBM1%_`Nhx${{Ig>otFe$k5DQHWTC#ygizWNlom>1jZfQY;7BzH zb~g`1osFWR^qX?sLnGB9DGd!j&(#15H5fc9w#{Ot3|?6AWv?(q^MuzVG;0ywN4~9R z@EDCoO8dOep@9oy zv1a+A%`Q+VqN|ycBIGG}eu(S5EIV4B-5H~@#-jGfQmi5VeG2bX`@pN2?rXaXe$=EVr2`MtGv@}>f+zXmo+EApJRg8 znNz$Nb{MXke)S!Kg>i}%K`19+C7frJnp_iphWR)*D4?;e;?Z{)k}4Z1d%PO%e7yPj z?WQhE8{HGEdOB)L8FHDbud6h{u8|J)xPB zR&h#|%MvCH*H*-=GAmWBM}q5HT7}v^;z*;t)RoD+yvqla3XHB69uMY%Fo+2YFd$iZ zlLQ-*9+K6Jc1YLZa@2Z`e?5Nf8s@xAT=~uYm+{!=Bi#4)^tE;l{ z{-N}#px`xT`%_yYlRgk6d<2~75>wt3lyHs0B4ufVpu}nvUUN#T1jVLN1edT(P&E0W z?I7n_*r6Wx&fFkKM?H9q$I(OhR+g%sM@~5rJ%BEMkZq%vLJ#;?em2;nx&|w9Z~7{u!i{n^ zA_h@WVYa3E%bPMh%!mbi{ykIOtFKs%kXInEq&pS+AdK*(q*9OS)UD92u73Tn89ER3 zlYX+0t=@Tty!sZnFG6RJoPTj((m=mNVs+y)AHo2O%!M;2%&~sF(?29;+ z2taANiAV!gx2r)8E0+3$WcMsN5)1xFIkKDV01Eq3(=(+bWw*g}>2@_lawXS%^@Up( z{~{!0Yym8vI}6k( z>S=?fGfLXc3L-Spx_mXboegl_gKC!U#~K!U=40sj0yTtQyBo~J$U;=PH(y0G&c~PN z+Z;k-mv4lWEu(tLQx++X%8J7w2VJxb^L7P9vNi9akYlkt5la$0DDD7FYNj6NCd2PLr~j#^hm-eer00Xyn+L>roZ1m0 zG{iF6Q0ym!;&)L8obzv@vQ+V0|gp5ebvzxjb(x}Jd^;qWw;yE;!-bEbr_j0gM zV(0aaE2^W~nTo(sh-5HTmE^5Q*wy zMg%$haxGT=vV3r7Yw7C2M@8&Oi%E2;lnYSFda*IEJOv)FPU5VDDC0#g+zvtT7_<)$8g3htzqG# z^$TX}7sMhA*Aj}hs9V4+ddIgG{()AFl1a`@x0lB03<=;*d@)z3FQYRV<}gGBGa2SU zhms*0_bfxSh3!w+qwOX@W3FaE%zjCEt_xSSDKb0{2o59WC2l)w5jz;7ZQS;uY~`BB z1Y{7s8>p|@$LXAuJ6K3gN7v3|h}vf}1ZTC7A@<)%wTP1=m0l6uzzWH z{++6`Nn>$69YG=%N2Mcs~Kg0g0TE~~`_-Y;Bz!3Fr(P5nq_v`QoLm9HQ zQ##=*9iC^1p7>eEe`g3jMdD6Gg*>OQvW`%_0M3RE%;vDDjMEbt`oqnKjt^pp*J*@~ z^Fw2u^T`5tLgK_f(A9JF4Ez+?AFohq2drQmce<8gB<@Iu+XbB-&Kwv>UzI!_PnTaf zmMpsuSeudnus=@4&>!1J^`H*?Yhxrlgpag_b}&^}Z# z-S-}9`FyBM-#pLv_&N|#ps0cDPp)o^$6%E&b;IY{na}M z+vOT02T>y@Cy$>5Zh0RzOwad3a?|ueyYX$fn{c3IIqze;%GqfeR4A`c#dz-t(>TZa z`G}4rE??|G`4!i}f0oyyyx$s>-_&m~CieSxGjF_~(`|h>*?F^b^heOEpYkKDm@0Qe z_y0x?=kSi?95>;mV}aGqLl%&WHjKfH6PX5kfR{e7(B_u!pmNz4L33*7MSzE| z<$zivi)Gr*#dG%iLdPuuhV7d*{dC(EKf4@{hrEWQC}ap7a}4XuS%VQeG6AXqP!kdX zGs|WTwj1j^QFc^XfcG&xP79trUPy5qri%5;g6PMU&=NQdVl72pea(*sb`J3JIE||L zeM`m}L5XwIHj8tn2k z7YyB6`uV~~?a-9Z4g3OYg?pfMwkNN_!;E1XipzgMxUhId8ur}QziE*!(7C=aXvkXs zCUn{G(w0#HGWg8H*M#P`9}Vzdy!tVJsx$rV4T(r0p3LUMezck6O>&$0XuvmRtuA;M z>IQy#@wTKh_`G!1|C-qsDkZ>6w4Ocu@OrzHOxrgf4#eVU%kjqt$mJLwdeGHlGa}?( zm^lUrZXX^=E7?0;#Y5^)(`|kGlJ}`Q<1-V*mD^)Z4S*oDFPwpnPO*-ZF21jCPHTEp z8q;sOc)&DyDl`4iYTYMFV|?&^SbeRpbwt!P!+dNhMvYwL(bbfRO~tO*RO~7@hD1tD zBOVB1&U;_cFmbOOve4E3ra9B)Q@Z}JItVvReM{A@(tIi`Ri7IW3ZX!4vnlrXW<%_? zW@GFx&F0vaW-0bcbC1k+P8%Hj#s9*=e@mmv)IK4dbjCcgu|ol{=DRi4e8yBbPh(cx zp#H@66u+V&J*f1nRd$jW!3v z67_AVbS&-@uOSYdcYhp&44ga&wjIV%JO+bzH=e--g__lPP)xCb=03a|p3^UrTOuddX2d6aE=xY5QKWb2*hzavB6}e61N<+c)yUpicm%;SA z)pM24f$4W=N9?82;*MOuZ7Da+QwveTpSo1#!45{GzdeAk(F#*oNG`Pq3ce6fJQJAm zH79HBtMdAjFSy@D@_d1lwu_{At@saI;W|+~q*NotFzH!A;>9Pf!4tit2?F@>fa1lJ z1zItUBBF#83JN}S39Y zzdoso1q{AS!T>G~RB7;gOhj(q3;WI)sUeUO41MgNIhg^wp)i+^FV} z4_xStA2)~7&F+&s(}bUnccPa^Pxq$2?>qutprC~5^qy&85|vRM#0>X7u7(cc{XZAI+i=%f zpl+SUYPu{W;BUmOVkT|L!1Fzu@mLh3NQ zUFx9g?Hc&n{|FuaGD7GODTEIHcX0z-OxGnp0Z}dX4THkvfGimsj~P!w{*XkopH%n8 zyPCGciKiS)-2hU1$hKjK7}nR z2fg)_3Xi{aUp%Fz|7-J6$R8X}!-k{_^LI}@uY!wT3E}v%`?3Scy#Thz!|#D~qH{Vp z`#DvR2CRG@!iNpdsQ$M0fSb^(q}=D#0Llx3n|2|mI8lJC^H)Od@Xn>tq2&4uQeVzT zMKe}T6bhQ&WP1Xl4ET(6kY5$9zw{Z^(JsIk6qFl4G0)@bLTvHbDi?1T);&rq1XH{u ztb?vI1Q%H0e2kcIj-$5+(tz1Ry)l_~h5(DLtZQG#OH_2V(v?cT9_3H@73u_P+3N#Q z2kos;2hic^(Ar8oJ_*5k|2*bi7xAp>Ew#%ox(V3@Na~8R+FX=UfunZ&4xQy7F+K3ta*#nzM!~;?SJX=gRGs{&vI?pL7F#|K>D1IHLW&;Ss@H z$3I7$;ZGeYqpR;P^EY)d_)?dH5dS!j-RmjjADSfO=F5*I(;%NrJKfx9x10JvoK!q0 zE6~aVx(}9wu;ILno@@!vuvmG1;-G)eRj=FUBB82ZU>Q>MDI`sfIWO4hZ2E^#DV*$r z1#C;=0~Rcl(sqXjR@U4J;mXZzSb6_aVz%tqC!Pr}T7w6MSH$fzVXqz%mo^l~}s590Ijz zW{C4nIaMEeDuang&Kaq-2h{l zj!BuPr0_9(Wk5w+IrB~|PiKr{k`a(w$IbwRG-a%o&dvgal%^B{1}@+>Ue7QA2##=v z-Vjt6%Qz|&6-~mM>;c@Svo}91TuczVu*7sjz@X)oVcGOH}Fb70xpnj?r|u zhasAFi6NSP4UqeapQKy9HqpA>p-Z9)G}}?`b8c#Qp)S-Js0(#w=t7;_A=u!#R5G85&Et#ApRSS=w@73(DCdI#sT{7I1*F@Oi4JTH{xWfp9P9K)>&22>c@*|5(TQ8FCAL&|!-Xd0okLp5$4! z;lU8NkZoAeZ8{#u5RwF*@HxF7L&&-^085!LiV0o@;j)wQ+x3ihGQi(ilW`c$HN7naO+ggqbC-p_f8p2wN?uy&L3^iF2T22H zZAoz)9cpPxpt7ZvIsD=H({JS&b}Jr&cwF7+y_lI%l(TtfXIgECAo=o#rSNZdiX6eX z-D}+MfUOL1dw&T?*Zb`pw%Y$uJI$zg(NT&wAeHY1(8&;Q2=_O`L!2MaOO&_j&kfxy zo(~>_%K7koSXj!>jhPef_Vo;L-F*yk-E#~hVfM}ty%)!KkKSTm5uLf8*?$zjSj;bQ zxBbKrui_FjAR6{Md7QdGrW8$Za+4qn&R~e9OwsXthG^1k9Ty)6nkIS)`OBD&Ca%!a z%Ne4nn{<3LLp1rIjvr=-rZ?&MdB9S>2k}m$LeaM|pz=KdH#5XN#prlE!>)RtB3<+; zZgGm9p3e}s%5yZAU%?Q!%nMq^c?{!QKdj@&p`l(q&p80zG)Kev&6vCpg4ipvZrsai zfU#Zn)p2g2{9I^)J^ZTr1Fan3`82TrOuiI>QHy$k*w2Q(1 zLKX`x;Vezkaz8EhRsE2~cG>I@A}mg+S%a7XO)tSEPRz#B{`69h3NN@4;)0Q1P4KOZ zjle7o$A>g~;~5(@6%R-B3m9X|G00-4Vq~G3^~bQWaTH;;Hp(6lf+c0!9U8D``<7RV;hR2VH*f6taB`0b+R)qNVRb1r3zegbMapmfEE< zO540EkXk?e&@L~F#5_V3oK}7SvY}J>Hgs`X@{DD6c{9?XS;Og5Jcin<&-!>v_R6u? zkzXL7!&Bd0v{WbP>(oPA&LQ%XAorzDml-bv`MQdchliOn!W5t zyT?J)z6RO);zWFdGh2OOVf~f-eT4sIRD*Z3{pf{(Vxne(k#l;HU7iw!frBEyMZ4bq z^aH!}G;JTX5<7qMhgrxrDbFIi;d9<36!k0f)9rE|KBhI~?L7vfz0Y&J%}CABq;*w~ z)IoIz$;nhae5WtPWbLxcJPYpCv}>{$55>1vPTNu3KNWYzElbwhwh!aNUd`ji9HAy*&lFPFPuRHt*Ub0B;R zZBw;DEO|uoEhcXjW-d2s)gIJ8_<^o|c61(&cJW)Xp}T<^&VV{+YQn^tnvY`8Buv~6bN4XsQN|v`)rb&r1o!g=M%MNJSjHN$! zs8OXcKQ*t0+DpQADZ$dX8Y(RA3Fd~NBx7T|(2p59D)eqYc%lEip=;8x2Klrt$qT8_ z2#-u|>X-CQ2O{H~(G-cMr61fbCB`;LF_ma2H}7Sr{QT1F`+x~bKpLg0QI7nv*$CAj zDe`+L_k7o^HGVaE!H{sSK~DIl!97}vc@*UzMUBOJIhTe{Q#9G1X!)HTipdF5gCXHy zV z1_Tq-)N}Dkuw2hPmA{QhP3TsJM5&7BBl!XR$vYhCT;dqj^`nF9(%w-ANj+f1iW@@K>(Doeh>^R(fqSOh zHAeR8D!at6rb%~L0K>!HNa%!nr@{vK!QJXKR|jM{ryowGrrm0Q)S3RXTP^m6EcI4b zdL6xVeA5SFns+m7?o{@!8Wx;Z2(9oL^K%OBT`+^a!9XcQb0tH$EovBj@Gg|_c6x8} z*PO zo1ayiJId=tRf^w(JvR3}P{=v8>0Vv4slU;RvDgc$4})vHr!z-y zfQth7Z>iawZKl@P#R&Gqa+Srtc`UqGQV&6f?M{q*5U;>cHFh_=!A$-lNC;ZU_7fb9 z`_R?rkm-^~nFTU3maEY5K_6N?__a4ev*2yOWUAPbonUoYK*7O}cVX zM`MI^#h-^A&dk%85qzLlPrI~5dYfh)P$N1sc@s|U2oXY+rZyDvTTaK85>!Nj`R6}J zsNiK7Z=%M58G&#t^2Y(S8oq`Lwxz*I=A6lx?l%m95)6wj8Ws%2udmrVJl@ETo%!P)Sg*5Sy`l2xgv4{7lo$2X! zAvBBsKn?QXw?>_lG;6{9f~4fS-XEx5#ya(|8Y%VQ8I@g-iN}$m@&3$UJ3(id&k&3@ z_n|Q!S_w3D{Tp$#`H1RF3Pu0BLAapku!vzE`V){{oGfNI76rMiFLgZ%nOYbr0A@E_ zk@ly~_L~^3UCW4T@t4k!zjlT>41;x^Im}>~pwk71;Lv$!uK=XCUg;KTrVWx)5t zb01%JJVV^iLWa1H3Wm76;K^|t-!YEKPrsY=Id7~+b%beunNzVdM$Z(xWPoYnCrhG>cCP+adX z;6B_WKW;JzK@4Na=OpZ-zZsKfsatYVO_eO#xC~Xm#?Map(w5!X7J9Eiy-B6%i?_?0 zaKU7f?pG0!d*-(oKp#J8mrsL;b?E)@)p54;JdBrr$0EAy!adAB%tJ7UKXdHH)<9Z& zKjiU_mquaGSOXK8YlEHO>yBe_Yzbnv>#C@p6o6E{MC>>AdkWk4iȍ$klv{ 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%0DH1AA2`<@Vp=# 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

    (2%3!+dvhOpZvs(7G)AZ251{V$ZkBB1vIhGf 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ò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

    Yg|S~EgBAwAWYPGLHe>DElsq+pWI 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 **pN7 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

    *@wngE@22PDdO;F`*2` zQ@fLpQ_Wjg!gw=qgO!%N>vft2Bn`ZW8Uh<#dY!rajn}v0VwoQeKLl|`zJmhyl#*td zGJjU#%xT!YriQ&>y7TzTQkV3(KQkJ>tF1Nb91algYCpK87aU zHPk`2(h%%PuYete#*ZgpH}%BQ82awFolqTl%7()MCznF=pSP{uzwg9$Y-s@A20w#6 z)n&NtaO#mw4$5Ai>4P(Ic2iaLX%%|%$KQB3qUtDK9aO{Y+033@gq7TS4#Kt^G!N4} zxADDQ=ZZ{}U6l)M{0AQAdl?(pc=*OQvSA1gjd>cKXZ+wB*=cmCDi=GzuTHYj)n9f) zxAXc=2R7MjS6~zQ^7WmGcu#sL05ga`b|!{k!X!p2Jpc_D(sNi)<@;!IBo(oHPwCEI zAcJy;a34+f%%DisMR8-IVi| z@GTSDkOpP22sM-9{9PPs-trY3T+(+VV(IPQc4J5Txj1Zfe>b9tiXOzyx9xjubziQJ zMK8{8wg$Wv@mtf2Pynvxw``_0@|)+MM{O0C@lx|T z{(=W6JV3ws1PZIuwI2g2US;kw6c_7WbN z!I7sTY(C@_YUp@SR{(GeQU~Q{$udshos`y;q&|nr`|NTXWnEc~GX3N^TXH!MyTHMd zqIm2;^1!|&{*}br3HPp0?5E+c&xwgk;gK9@&Gc-E^9U*)2MG)4%A@rzi;i|vo}l7` z54%d5(X)Ty?yeYF?DFB1L;>f}nH-OKau4YqhC+zL%EuUq^SCok8Kcbq3x98=>@Rp< z;&0zNoO6p+B{fMeB2CSj=Z8StA~8m9aNoU^3!4^u)h2IsN4p2cBGPacy4 z*RwQ284a8tE6W^PD-Y>7ZQi^moXTrv+SFNeWo3CR^uQms=Evf+*6v^4h_!FLvGSz{ zeVCRzcEr;5HIX)T2$tHW|LK+9!h2+4=R0Tktma=CJhCje~M`SS$=&&YcwGn$20YV;Z4h z=ZhbX!;W2sZW8C}XU8tXbcweEk6oFpENkhmzx_M*Qw^eEXxb=2S2f42KJt1{LHtF*(zs-8D?pLMHzx=AX1>k+FUibW- z)~8&CZ4!rnp0}~T1cuK_O^hd{h6L#SnEn*jUM1h13`@4_3I{RI$p~MN5CNhsD1Oh& zgu$H!#Sw^vyd)!dS@-X^Q>uE@$a7Y;(*G-xf45ZS0OSN3Ue)6%@vGApE&N`SIoYLG zI>Q?>A$xDSiyR_AHzx!Uq;NoQ>U=SG$fI!k<%hpsU)eGMPGG(UMah-W1Q?Sp{FOAn zD1L9Mp(dI4(JCY-!XlO(J)&t z0*2Y>Z53895)qD+5q@|x!e;tv4)`-^e&>|5(s5cpvSv7gElGCAP+}XybJD^}liYkg zuivU*_#8Wb?EZzWHe|S zQc(z;;|okcjxRDqjxRApjxRGrj;}JTl>5oZvDi;Wj(K>*0h$;h$7Y7e@qfL{=)-H6 zhm2oVmRWLDmc&o8Bz~49@rx`8h#7ej=|Yl4x-K*H{F{>a6^@+l7A3)ZFoxey#~5-+ z;W5X?DBsra}YY@q8M(iX8)DUabcjE za$4j6_bupuAhG|Al4vQ=2yP?@OEeN>K)Kn>{|6HJKP1s!|9gr4yFQ6VE-M@He>VL-*v&HP4H zAGP3X){b#(Id)>`ql%Sp!v;ARsgQb7q>qXWzN(VOay6jS9l#zes@P{VKxA2r`>C`z zDW+#hXGRw2gEfY?NxTokJF&ef@nI5uBp?z1lbnmr1eX*mx;iLW8l?+9-hu<)W&!by74V9L_+$wK1LAuFf5^LV zXPXhMrxhx3Vc`$%tr?G$ie7-35+4It!ZMg3J>)TLD;2*$Um)pA7{(!Q5*H`J;r=+| zu~5R6^sN#;&#=85IRGA(_(|!Gk$^}r1^^flpz{AH3BO6mE8Cnfo&qrxiht24Ux~Mp zu#1GoqVOD`B35Ggz;V9p*~HVzP&93oZdg=%5Y4?dZ~lB;;dt zhJjG&lekbM1^?d|?=LT20e*n-zKZg(gkMVdBSX0VA|du71a6Wr5Kt6~LlT728a(i6 zIri8}!j24wq5?~tEyc5YKZdBq!z7*~;TVR!QIRD+oncR@%LadoCH+Bh^AQMqR+9sK zRKf}gH!)0Bl;62q=i$qoGbC0!f>42L05iJz44Ji|~7`y~FOgugR%Vw%QVcO0>} z3JEaOq~p;Nwv#YP!rLV5E#V*uM@Tr9Aqtw60XW>*67sngHtDcT;txysSP8%QW5_HC z)e>%JXi=0`B>skkZ!z>$l%o>=M8dNSHC(eL@hc4NXuY6uLQD+N(Ksb^F+_(D(Ml3- zmoQVpERF8!9y5wMKN@bM$IjQf>CB_pN}K!ESu_2y`5`xjj4H9wzTjy%8o2gDGksio z#8%Q@j${YQxdh-f?m+-W4}wZAMyh}|ZhwGb3{i*N61HQAx|S$m4~9s18bfq?qDMg| znaw!hI0 z+WJ8QG+F$yWiv7MIWufRt$X^Fc(P@`r;%ob#}G%htv%Aeg8cxlmT;|v9tp*qYBUYE zmbqw5*=AcRvbKZW0BacH!>~(2Ui;-rAZ9(NB)>9_N)*T)04iB4>itKVt7JN(PVD+K z43+&3T94>w&}o0pbaa6~Gen=;iCaq?x-^Cfio!e9+;<;h*d8Uzb*&?;&oJzayX6?7 zm5NG_*1M8%i2Nmnw<|N127W<*aET%M2^DGP4on!z?2n>j9P(Vn5OqZ8P@|5pekRwA z_Zg!2dSaP{>%?+~kRdUITwY>0j^1C4Ny?YKVv0(T$!%Q33*{^tncXGvJq(d)@kNCD zamLYbnxy*$h7iVOiC<+1p_o~=;I}e_a76tDp1^p5tf#=UfS0hexPr2WX$&DXQ7?ht z&p4!4Dc!3XLW-hL;l77)Nb|6CZ)6Cmib96_MaEO))D^fG6Wy*T!CZR4v37?qAEez$ z5)v6g>ZuY>V+iSwllTOND20597cfL=ERndVHo(Pa3lXf9?i;0hB}0^2jl_2uN_0ZK zBnX{qFf>a1I71X~lf*Ab{IbNaGDNWp9cx5r<$4EPe6E21MaLR=8oQ%fjAICVg7^-N zMvf$*fFbZD5@+=n(FP^HmLcj!VAYYpS5@m#*g{#!SCPkRl}{B zZ}IGg_?G@J__+BuM_hk{j~*Exf^A$jcC$7d z_cD~MtbzW>z1Cn_9bRdrte1nL^taS+0-~xmVoCzd%Zyx`nn_#7xWeen+f##Ro8vCn zTwAz447W~sUk-ASXW@DfewqjU_=W2e=1&?dY^AVP*bH_5Gr&x5?>KJ@ z7=0I77;?g*jNPz23s=AW=`>ZD;4PXaChzlAtLa!uu&ZL+Hd{bJ3+8xAYI`KIs_|nE zxyRdY!!BIMk+7+{9e3Fk-S(n2UimQ>`HNQPX+S=AwQj{xL=wpnoU2Ws*7_dOwNLb<}4?X7mD-E z9-ue=>mXRHz52zC&?mHD#{CxU``ut3EkdV)Cy!WozQRudGt<_S=bTlkBURPX9Bw|v zElz_rN%H9%toMU8jIMyy-VR?-)L6wwhEh%GJ^Q-o`iPht+~wfLS^Ce;IceG>P=H$T zV=XSDAM)xAhDtEBBQF^2OKu6yN=XwS!Fua)lf9)F-WFk=7h!e?wLzuf*uex>2!G#O zvK;cUZZ-kck{eC>(j1p#!!0q7o?oYesN2PxR&tBr>>B5w}e;#A7*G=K&ED2Jq?ED!iRKV=-?w5 zV7`?5vW3S7{49izCZv@sc@BQuMRJ?#e~b4WWXIWsWImYIQh1{$fmeDT)x!IOH@t5M zTp1Jcz^&dUV^~gG&mx^K-r$6HJSPx)7~$5zwvl&_7{klKvtwAARdlcNT@OURrt%h86RrG4S!j;_zMfX zA=#pwS8eSpr`#0j#1{S@yv1JvU8#yjb6k%D9`{eN z3S9X)49<2kH%Q=(RK0&o=+hhsQ9s7gl(WMYaCN%AD$UZHO0^+zH@Dw+f%Q&Yy$HKv z7eeA}omb3&08w3-6~1mn;e*m(fi*vT-`01+{4`Cw_PkBI7J>1iei$SetfK5BZ}}X3 zEX+aX)A?D?-;BL93S%t&v`M>Bui65vbM?U;v(Bbt*Pf5m(qa_lbxKc&a+2xS=WU&{ ziWD&vXO;r|noD%BOkg5t{QQ=nD4$YJk9=py=v$nQfk&PbDYrap(=G$okBIb~cuU#~ ziczOfNjNq{d?Pm2lEB!IN#fZ{%l9sA8^A~AYHVm(Ag-ghzIR5M1}aJ|T^auztgqVx z(XQe2FrDvQHo(+9IYnAXTd_z4a>GK}a+r1#2QT*IP7b51o4vtyZfj@*q6|<(I6{*b zV~?b!E@jVBa;)7^x4LUtiW)L(;HcK9B#Ldf=U1~^=>U6Wr;L;{b23hrB$i#RyFa-M zx=By^1h-LxsC9B#9Aze##U!BqD2cmG8IRWFz2VGnm8-PQd1GY$sB5cJKhM@)oStis zSK?^Xi;WQ(W`#|eg#kBRaf^3;>mlCMR_=^#*D@3RYZCVvh93J`9nvx5_}8luHcXfD zMUnfJcvV313=56->9Je6k^*z^*|tzE5$`>yYvzZMbfQ~XA`O4h8(L?+`hi)6d7V+) zOV*>e81P1fFAjKdseo$QzGcUVZ?!zl8 zkr)qa<3cQ8D-j9@@T6#?U|!4y322=SL3bf+qiGe#fWsq%)Ej)m5yToW^24DZ`zu%+ z!D@t9O=CJsQmyoR1pyj;)F9D73^q4A1q&ztLmaZA2K^mjLe;&*rCLWZ=@*}^kQpc; z%*+ejYGplQ4B(V=`glZX{4F|=aYQTh4mhb$gYlxsjNe6ydjk!&P&f(>*dY5Iu^7J! z=*PXe!G{03-T}^*^g(RKvjHVSDb2w7M)SuHo`lo!ApQ=*6IWreT90!oVeIJx>k1SQ zT%rM*v+PLbG&BT#s>j4@!Fm-^D<8r;j$-MYEFj}sVHQ48;Kn@OAmela3y}on_}D>6NtX;2CnrtK+qxeobS~^BjCbM3Vz7g zCmcnIFAE3BXQ3)3Zs8O(7wI-G*4i^>uyI+*0t@|-gPN-a>e6tkuD6+WhI$C0h+MLO z)XHY^?TDiVIZSd3Qjy>c9|B<;C#x4A0!;9Ic}^WBil$l45zKJ~WJBa*_}_pS^hz?` zXFCEy0$FNePe!femD(GXgvrJUdL=|bSi=~ju1&e z*tV#RsA9$;zU62^z`3%?imh`F4B7?;xCH5(X+fVO0N|p<>Ef`8nwR3si}`R7VHY4A zwQ?PJMRnlf69+(yx9RnPrOp`xu2@ASZ0q|CasmIMdfq1dA8Gc_5efG8x_5kVn{nwq zB4`qr;GJ3J*&D8SB6{6>38IVA{kLiM9~GwfyaZ>TR@zHk$dT-aE3nT+rp9P&!`TqY zly{MUs1#;;$d!qA#KmHl;?iA~#SYO0DQY%Hi{m+;aS)4R2bG}o;E81+hKO+DT56c? zdIU0qi>RfXO_b9SAimv#`QQ{>l$a&V@~-OsQ)i9kKy=oaD#XL5ZTt}_crhHf;lx)s z@nM^*?1TeAkuBU9XLdsw&6i8LJV)=6v2gr(>APg2`BEUWIBAR zAsh3{aRe7*ESr+zevcmzkR^8ro7CjC#SedSU}G@CNY!_gb)%*%99gkVuINwW)_f5_ zHLmGC^!48B{;$9#_ikV6TjUC$uGw}g<>%rQ4bH^)Q->*A18^{=5hqr1 zWB9VsW2yL-_wIKjfL=Q92%@<&ZC0Arb#`!7&;eXSOS#{*^{JX$Y{r^5j?S3T8{_g6 zV_+};J760z*`NMZ7#2Z~-!s*R7EUO4nE0p+t(#DubmJ(EA03&1YdxcXfd>89ZnY6q zzY2$Bs-s&cQuYEqIMb^zOg}>7nFdRRiT^rf(=Q@OocW`fx`yn>vIt*J5WDLnT#MG2 zY1n}~%oXEs*I%bTxS(LtJ%_OE&_=YMzJH#LHG zwp$-gb$K{@Qr{1UC3f^HYek_`$^&WsdU#$3$=dsEC`Q%YLmGv)s zPyHw5XpPQxU#Y6NRCSPBYwduzkkXZ z+!`miIU6P|tT`J`i+rkQ>9&lrPPm+&C5AKBi!;iSsQk_kgAFSU^kzocDD_L>WLT}z zKL(ZchaJx@nPtO!LLxR}xslTnV7zj_TT748;=5?ExKOsMHV9|5VCFItz!(S4P~&nV zXF1OJ;4<2tS=P>{9EV>G2AVfpt3lN7GloQ z)UH572bFaQh0=q;Wc4xsq$To8w2o8pAZ%Ri8&u{-U^%{FaX7LSHyEV)2d0`zqB#i` z<3}Q~s&U8tZh;>+y4f&iKyM_BsY9S>0TBUd7SS~nwDi2&z&TZo?=N%fzF#%yzK4Qr z0ePH;Q}3r_qc(=2b?P{CXFsPLt#ip?#Y47=isvv0O}IHA=3QylE-{V|MQ z{`?KjYK>o17E8MuU{Cb&EbLSIS5F>Gaqr-EQ9d3-Ka80hOErVcHtL)EVJOv1!!4`1 zi|y_G`38`}=?mxPEto^+&E>a~;neyly1dvPM~OX-b*1V^-(Ws0_>4>u1 zHE|M*V&3tFTbmDB%_^FlN6UN8h@rpF&U2Dqsl5Zed1slc;*_}y-Fpg$o$ef6)`1es z@v)dvQJzd!KgL3J$yCUpzSA*8coimJ8=l_~VK2(R7niKeoV5Uo)5=s>FQqH<%X(A& z*!95`8*spK)@XFL`{$K8{ie-YFm+yG;q<8s$y49*K-`VvaDKG&xY?iP6_+{bTF(vQ zyjh58@vIrMC}|^3jOAXN>ue#|nxe9J>*Tu%7thYVN0~l1Zz^rEY>1=j@0(*y{gG2D zo=;9nw&sLV*Ebwy8hq~}th;f6KHgpRr=p^A9Qqrx-u<7PCv@Nh&eWwL6rEERkIT%; z?7q!O|Fy@lw&Z!#*KTdj^<;>E)N=2@fVtBb)S}37If`X!=l9`Z& z5>2omDr!(LsFY9?M8t$5sFa}i6BIF6Q9<5&?XxHCeV*@nuJ`-iKfZHia-X$!uV``yQ!M@Xl+6-=4zzIg-07K`A=SAQQ{W0yyHNVZb5T@zc~Tg@2)&(G>ZFVeRL1#- zvQ2hp&g|JUU|4p3W)4imPKWNArsMX?Ni^4NQ%MjEgdXomon|fRK-C`?x2GFpU2SOI z^d+6BaAd8KdN0VfQ@>Bp?_c+?iKM#@xhynqpedfR9>?te@FTSmG-3lK(w^ZMDc1GS zV4VM-@KA3y8j+N&PnEQ_e zYrQRn63cL~O+{U>7hT(sWhTGzu3SnBs);YXmo1KtcU4l|>l1MX%d<9&t2ZWk)4LD2 zrcmXxfjEQZ*3nR^xL#!-=lTmch-mmjepFrB3G@2gC~rd_|86sB+x6k7*sE)C7C@YT z1l7^k5tL?*#J>ry_|kj&=V;n?XU@2OYoaVyz2R&S)s0Ix2wgdP;gS<}{r}u-$KeCT zi(yKl`jRt>p7`PwDCe=VTpiAbrlLL%7{d5fSi53{gg4fB;?+qOty5De15yoQF@^R8m2?%_wePc3@0maoC;kZ ziZ~;DU$fHFZRX;Ls8?-X(xun}ZNq4KX5@Eabj+uf7nQNEioz0{JM?lE)F!jit@L+( zzLoauhc@BFoJH2SrOJ~WYs2L)1P>ZWDF4*ah+hiBX&jZ=>Bt-eZqx;2BaB>Vej8$4 zKsLJANQWrno6!zsWivWdoN(IcKTKis^o?{YAs^C6hbt`G#x%dxKo_u3SV?PSL@LLm z2Q5QUiZ8!l$pEYinBIbBK`&1NcEu?^s5hlqf`n;)bFwQj3d?0N&F|25rI5D~H3q*G z+m$$l<*e8Pk3%~Y)A&0Z)0%r5A!5Qbk4IJy6t?Oc+}kN(SmClem(UKiv~)@H>s&0v zKiSL=yK{zOG+j!CPFo=OM`$+T1OdMjyMXnAqUQ>DA+KV8`%>3(ptD}9yP^2P7zFqk6s z`2Lmn%S)y(&1Zjwx4}7Pt(gYG$WhFV5qO$EUuI~hmHQs$tn{OW8LW7riaAV*hqwyQqD>wpqalD(P zJJ+!tHi~yQqbDd|N;($qvC2fni#Jomy++?5X`Tn|N|v%f(mYSum7Gz^`;wv6=VZme zT^v^iel~0@@|m4{Y4i-Gx1>2kHYHaXCuu8EwZRDR9J&>PPqab1r-!Qd(WXC-1yb&g zO%ZhTVx~2{3l~XVe0yID`pFhFf7I|?e0z>|U)mKN+rNpZ2eYTPpi6DEV7luH-lH)gal>3CMRr#}Ai8^xT&M;D^w(4&BJIF^{aaUnsI7Zc$I_5-(Omuo| zi7$2ijgJd-xhz$!=eq9J(Qj9Z!>jNHkf&0OwFc)0&Y1}-{c^bh`rMopybVa{#7vhFz}HUz<|siJ0kuRTu7?GEk+gTQj>**0(k%)wEYb$oZTZ zi>d3yma3v}ZCHw4TXnn>bz6#*1}}9*7k;FTEc3_QHP9CiY3Ek3T^1e&X1F^UL38Ue z&AozY?)DrmnekKnq&tt)2KUbtbTH7zu%rO$`e?(+T%&Eq7U~9oi!185HjzdR)%NY9 zPDy&CqVV>-8MKq}jMN+aQYQSB^oLKeBE#n-JyDyu%@-jjfpEHPEkX0QGCVS#ip^|M zg25c|B~9&)J&2P2pe4u}PNGEDkV*CjOkljKP0Z$>v3LNjTPtf2;SjN6zOG4@m_d({ z{%5eiHCjfa3K$C!DQ?W{0UmkWm@mr`|1PT*SPMrL?)cz?JSjTlmcP`qnxGJ!#6K&C z2Xd1F*I#gXJ@kjxHFWRG7XMu9+d5=AfxV$HiHt|IE~k4(d$Q=>)p~#qm66KsJ7iC& z!s3?c_p~0M+X7ZO&qR}Z-OO*_oP`ZE{4&i zjeT}clJ0jfV*Sxe(mYz(eF!6Z;aEvelsJhoMSgsOzXg)NOyVjYavZ^vl7Tb@T_&-D z5nmnA3R-ZHc1&;U1)-%X0==amN70N=%fP z%s3tAEJ(Vq#6gUCQ2&-R+sfeZlNiUN#FAbhu}I=$5`|I;(tc4GBgf5Vc0kp?!w7nx z^mtgJkiG4wC|^tZ8;L(KqF??l>6;P_I`Bu}+a@D279uf0)6(LGoiICQ7_RVmHRc5Ehd3V2L9b7s9%_q;nYOp{i#}#(atV zNr_AL2xC6vB_!>VSSE3kL}3RR{)LS0av1YtK2WHJph-_i`Wxw=EhTdN;sa%&6SI|M z=na~KpTt0k;fzrjj*{*uQK*CIRT*(0?cH(uat@hJ}l{HfMWcY z$^b7gra>-5;y#H&1vF<&4}y!C*C?q7qw_w~1+u=CNnqKgIv1#= zUCamWVMIqc!HAA@nGqfB79%>MT?a%*ZOe#`+=~%C|6WFn4531Sk;6hHY%iY$kqdc} zc$*oRR1PvaVf~*m7S+etMozbQu-v5w-2u;d#*TQhF(zXYVMGTNvmu`GLNfu~>=^UA zDav<@Xq^zABYNV=$e4zLi(?AoSi2d~ z619wIiR+9Q5p8%xWI_jsF$bk%oC4`+)E2i#KSs1iF5^rbVB(Ex=6U@iX3SF*wl&KS zh8RXXIPPS`qGJ*xny7*iVSZwK7(GYaK5A$F`_M3NqP+<+7xMt@EaJ>wl7P13nSWiyQFtAqNxu``YZ-~_r=w$Ac=p$m#fEI%W zePt-~L1!>_!JI!qGO`#`7k71jJc8)!wH>IXe1%RWy~Lg zQ6Swb7{{TPOS+N~omGr7_&>~aA$sj4>ESYCCaPT0HyCq}QyxAD5Xy+&ELJt3Q<H&d<&P(ydPeW2<(rKOUx56-`(l zqf$|9iK*)DXIu{Kx=gE0Y51xXK>r-eUQ26kOvaa+K!^^EaN)BdzDU`q;+vdEdV4*- z4CAAol|C+Zy+QvLp&b@ITC^YAEFkM=R z&$T}vD8Uh(gwORo|G`F7w@_CASvI&n*YT-$NyiAv^p2h%}dmISf0k-+Kip; z@%?5q_DYX$yd#SU&?ty|o5%Ot&DgcW@`Ub|NVc+>liKMxtpC3sZq;3~5bJ9RKkqd2 zGZKF6oa1+!vMt2wTEhGGrhMAu@xHGq8&XLg@B5qb>AJ`Jfu?K={maT=oa*}KeE*pX zHGXMx{?qLmo6z%NO)9mHR^AMBP{k9Y8q_Z?(Wc8e4vHTVWyOh%;y(GoJ_f2N zL-3-hry;Uca2qFvA2?`LZ)omU%P=P9*R4P=eG9tN$!+%-DD-)kAEb_Iui)hI)aT)z za4!}lHI;Cm%w%Ooo`IINf76fB-f@`9lYhox+q4dWETLnxO(d?CIEp!OJ{*gmO>Wjy zaz*->z~yTwb$$n|3Ej{8kmUuJx6V0+qV|M`P~r=SJ-=&ED2>4#w5f!@dfiNjSigYi z6PiTdjQ$ z4QFp`pnWq?mnp}gYLJXXobbkF=tOGVi{WUQm3spnF<*q*H$k6HHwArUK^nw1K(^b`B(L3@L~~O{0}$75 zq^^T9M|B*`x|UfU_G`Bj0l83I33ub?DP(&rTSQ%oU|920`i{M@%zOEawOw_SFnH89 zgyBOWn}#t{j62d1`5@R>pDJlGs>4l!_oj?NRPk0G2FNr4?bA3U5tY(oX_WCr~YU@2Cp6sV|e{IPQ!U_rqyWT zV6^W*c%bcu%!j8*FVm)txei-@q|!8dH>mUW07uVsu$!iDMMR$7h~-E_r9a*xcp_Tx z9g(TX)h(iMB8miAK_kd^x}@<;8k~lD0OR7|l((#qm8*rqoUM;p=1Y#IUxXK1K?^pf zkE$h(;5lH6>`LE*IJ-3Rqj0EBc|ss*zF6O{pHTS;e$^97b5X`|4rvoY(PXb!o)~I- z^>@$>dzjT&B;2mU&1S@!xoMT1)zr*Xu$xxd7KDJ-;KzvV=(M*QCxJ_v_qHv(R|@aN z@NOIFNkEncNA^J7E_j$Hgkprfrov%ghrFkpcWx&kOqV%4k3+Lybw1nb}rdQWI2MPz;0UXdXcMI4zW;%fWVr#mQl>L z>5lTcNWI!z8S)0g;4GcP2y?&_MrL_UdHOLQ)e*e6MKad0+`@A>$mJG6)5GE3EEQkptj?|@yw%5fe_oNyMHSV62tr3Vd1ZIJiIN!(mx9m3wtY|$njgl zjnTo-5fkSSQ3iWClcT-&u$P52lf8sR;r*JjyS<1rx!}e4Zz5i!wa3L_rkx$}f^Q~u;u61b^DD%$?kyI1xcG8+iTS{8U~F0s^bv-B>ZwZ4tXR;X`M*f zTV2r!tq1FKA9zSt^4S%ob=+XRD{sJtf%=Vs+cxIr;_j8)=zBWguKXc-YpZKeu-8`= zx%%Ajhc*lxQGYvGttmIs?f2;%@!0#Z-V1hw1%oP4u|8%2*4LQ6omJ^nDq!IO1|J5 ztU|qakfNN&#sH$@hT4SW#m$STSp8#YJ~pF-=*r;uj~)MT$>^BH0uX#@(Rp)ocx~4C z-i@cL-o$0_f@a!z1VAhvU#4u7*bACz!vm3|aNt;=U66~B;04vRJCPy5M`r}TJ7P6| zCc^_1ucxsWVd{&bbM)s>8%?9Xf--RQCd4NAyk>!#S*naZ0hJ{ANM9}U>xg1{LDfw~ zK)v33GsdXbOFExo6hddKw(~j18VHV9wMThQSlIX%y=WRI%}Nz!#``sDW_3^4D%w zF|rA#9RV+jI?=X()Uww&M}y%Tla|8GWBhoiVlP7RjFn!O!9XmWG2y0`+4*=F;~QRI zBQJ14wmdF@tUqO3X39ou!G#@^I{ef!9OYW51ocKjsi2+s8J`;51-S_3>h$ou&g(jc ztdtDw*C<}Ik%<5Y@BQw1J8WL za+g=j!fqg2#zAZuSX^rb*U}okj9rb-AvwiZf_(YQ{+}$|_0^~yKG_XJXFFW?@X+C# zKM}6gVT4)>|2ji0SpVXuKaIRbV7S3Q?|7Vtw?c8}hq`O^CmQv8M2wHzh?fsa4e!SZ zCyOy0A(D)UML1&z!Qsk>-jUGSY$G^aw`y4wl;{*wym1{!z0SZ*xC51-{~Q78af8%( z{Dq-g8nRi%?^6V`ry{F{5A9!~TceTU!IDEdI*BKk_rlqtIb7oG!Kiq{w(#C4ALv;2 ziAa#JowXkgTf=#`1}-s;F3}J0ob_sWSELCSr~P?EW_U6DGv3SrBf5##GboDT5l35* zQ>$OJpqEFNXhD6WALT?AMzc{igfvGl=8R8qEZ2IMmy?TWxWiV26j9Ovh-MV~;2UrF z!TJw%aX9u2Dhc5W5iMNtgTB*vo-f*4SjiSaix8qKT1(uFMTYH%;I8W!C1k*KR^-D| zM=|_8Q0;EH8)>ULo#6un<*zj2W;ddXI*Y!cb~Cm{s&M}r?(I;2_Pj0}qDxdqM26g; zW<8mS=ET&5s7kHcRm%^k7oWFc)|;vJgVNCd?ckyh>duGLbNWymRg#KxP@lQ7J1mL`)_uPSW@e!;CDl6>07?(UvKQP34N=yc`yP4rK?cNpX?8tFk$|h3RV4qC86~BP6+CUMz^+7v=vHH z^?Zs^!22*}emn1&2^$`r4??bd`uk9>UT2Ac)b*fq$TA;#^nVm#U>&!Rygo+T>6Q0c zKPiDKK6Ibfw31#QVM(m2`_T2gj%W|$f}h#rvQ@pm*A)&kCUmOW)z5N%#eAriB=Jbs zze;WPx%%p$x$|FZw>-DUmDkqj-xC3%^^Yz~f@Y9K{|vNde4NHWO=IQyid187r!jge z_1^2cuZ_`9?|^DaCrq`f+83$~IXF=#wg0g6z8SfT6P@ygvi}GR5$E&xvJL`k17yx$ zMEfSRPax+B)ZgM$*bQxU*=3{W_Ce$xIw8K4b-CD^26YOsS^M&-Gqdxj%*~!Zdu~EI z1%}~VVJ5{BdCWpfRH>?3DCh@QCr#1h#w(y zTp*h3rGAcW(a%mG0|O2~@;ald+na7phl)ey8cL?W4!bM{ zp+Zr9#2smAJU|E~rR*c7ds(5wOb`ADiSELSrnVHY3K}wVPrw{N7i=}b#(nwc*m1qO z&y_`+4x=ND{?U~|!_S$ZH`CFbK-oqdx^(GFH;z@}9PK-gyV%ZHfrcM-g;O60*Wt)o z2-c+?DmIY$6YNCY-wBqCqCZC|7oK+e)9g+GMu$9{M;sNzRh>O~^4ux&=3&Fm5<>Uw zhkV@hRRzBE<{_NeQ-1`})!VV{wsUNOoz~U4y?s|SC}%*O!RU5S+(B1xIP1j7m@*g6 z&6__(;U*N?9ki)yKrr=O4wb~a{6g)Vc_Y_koY$lo{YQ7sB}EnGn#h}xxmT4nWE{!G?ax zthIt#weg+OaEueT!nWlYvbXvbnCbU3uE*Ee}Qri>I6FGL+)q(!=$#j3pdnb?YLlyG`ZDwL z^E30r@d;4GQBR>r$(?YRRb#WRn}*&d8guVli}Al!x+yw{zWvW9s87V}PxYVSL@DRM zS=gOiTo8=>{Qab@6QzBFP1-j5U9D;4LzZ9)9=o(>!`TZ^w=(*`3}rRct@dOc??7)q zg9C!m8B8>0uxl7qPMvC`^ElX)+a&;}!Qm_{ZWqe>34IW}c1*^Q{}7WGg})K!L!n1p zqv`o+I2Mb?mabn4)jw%-&^zz>MKtMVeTS| z>FjP#i%#R5vbuw=UUaNSKr5PC>q^pw%tPPdt3t(p@D2K;!3{Nz{%EcniD+t^$z`DZ z{xu<-gK(OA%#~pBOh;6F0iQ5N_6P{mI@*sPxtuk_J+KGeHh)PV6}0B0Z%d>6M>|<5(GUsyWlJnUbmj|J8dXh(of{n7sA} z)JDW1Sy@b$eu+;!`F!A2&5(P7AhD<|^mSCb;q08|+B}GAD5A=EGu>MH9fD5$eHhNl z+JS?dpss@!VMplZ_|xFiP;sdk4ZBv>VbIqRXJ4h^&X|VS@&1~Cqp|9OtxQ4judDL{E<^p}5V0>Q`et7+~{?;=P z&f8wY5iV&|`&wuuCH?rAm1dpq<)oy!$w=WH%n5zBYJ zI650dZtbK#m4_po6KCL2wdq+a&DetPayQG$a12-B6evy^zOkx5)38&|N2?=fjx!QA z$ezP&5m8B2>NX?Hs$RirVoG!jpVH*HI3IkHs^?<5oL2w-LNxUoR%eAqKro-kw21R4 zFZQyLR{uFOI`+F3>_&T2+5n$up*<6!j~loPYtr~ju0p!{4%v7eX7K9TKZBPAa@E$Y zYQk9)&i(6f*|nf*^%Yl?j(X=U5lc2-P2a%tobaW}cBioDHh2qHgI8xQqFOw9>0V>W zFzq1~dBv4j_0o^7N@F3vzndS`&b=`|rVSVKlZ_b4?oVsGdAd6moZJbm2SlETVU{4Ih>?pTNO(C`uONds?;V zFt6q^y;IvcXG!*arazFPMIU0ri|JjEUt!!W>wbe2HCiZD1NLYWkq(~GtPnMW7zo-+ z(e1_FHscbC%5?Y8P8)bYo;Coylih&n5(i5}Ul9D!5+_Q`VN6n#Ig&;-E4p}@Da3Usb`6 zKw~n3A0&}2TIrmH7z*M>3P9ZtSv2XPkHmqD7zd*y&FYgJQ6^(3zK=+HuEd3mm_{F# z^b-<`B|a$Ae3lc9${86G1Cx`#PnC^#?V?Z$S zemtWPABTHq(1l!*yV(JlCUKC&;S$G6%#tW9fy2KLr~=MsejkoZi|0{^PcZgITT2v{ z!r_0Lbbnvim~Jm6tl;pebU4A7fE_$Zi=zqP{u9%K(6D$mGa4AtWI>V^0#~40OS+wO z7jlsBKTz_87&+pbs7L#=k?TBm07FP#0p~M)2TCOQd>}cyKf%}raw?J*0+itM_hoi} zoiQ03f|7n;q7cx6`)86qF7XRb0(FuhBroAn$e9Cwll)r}c@@G5c}cWNKhLBT-hiQ_YC6O0ZEVa8*(rYBTC6-CtBvHt#Bc4j8vF!O! z^7l(TCh;`mNO%cDTM!!?P&O8i@*kXy&S#Y-zmkVGN3j_~nS@UJ~(~A73jBt?8V@s{H`rk^c zPpo|C$I^KhghGOG96}IM6>~bUjssy{xJ1tycSg|qPFtMRGw-aE(m$CGS?tRdkj1_u z&svBKq{vCG8zb^A#8-i0(nMwPM*wbx-x$$~zC4AX8^toB+X>Yf^vevU(T|0y3k;}}uA$&$_m7IHb~OU5Ebly|M9`Ewta`(;Usryt5+E$M@dsE0F>KFf&uxGd?b zjHnm!R6_=ZcrfZGp4$O5zFT4E7Zo*BGDORw!g3`oo?87BrAX4NsH6S<6gqdxGL?o! z*gH|8ifu^je|Ds|Rks(-R$&0E;&WGG1KEn|bC$FfWEEUb=&IZX_XjE+eQk*kRlXFD z9fv$@IHnogW9h5;w_pUQ*=8U0tb_fZtjhS9h7BQKD#|()K)-vr|3qsluu7A}ruoO> z9_v-bAb)r*iks}9v`ME8{=Cp?;G1ZL$Nz$+d>YCA*Rg*r44e8FrvEwqMNRosyL^@q zAEi1Dv$(07NwfXWVU{%K3)}z9U)r26Z2vQVS#!Ry{m=a6E%>ngZ)g6B=6seW6@1Lr zP0R2W{P$r0Ma}q{awJ&dD#L#(e(di-{F>BRl-aGtJFz*R#YjbZna%mLJpRj@^RIQc zhZs5jjhfi0Gk%YezCM6mLVu&B6@76a&Y$)i4U~5)UfUih#7;fpqWM>_M^*hB4D;Wx z_QtX6OVRu_Zv|NC5{sQye198foWBr-t#I9e2C>p>nxyHvi_1;r>!7|1YdG;Cp>)&N zZB=1NZK>Ts^(PM_M&D>Zs_Zk~Kx_QatBW4I0^urje7^prO-6{5RwteHp~#Ylygl-z z&WS9a>gV>OW#JK_lv?tTRrRBNKR`e;=F7(5Awp)8>U~ZkxW(;__vdY&;tN&QV{@=$ zZ*lvncWOQ=f6Ot_3=8&JYgpd(<||=Al<&K^QOc_a?K2N|&<5YdHa|?=p4MtZwH9|c z1^J^E4E`usP5DX{XC3gG2a`a9@aR`Grz_G;`{{OrE&Mb@V}ciM6bLJJbT-(+zbrgQ z^6~{wg9c0cgPH_Lq+5^Un_SJ<8Uv-C$qk~QU2j-@GCVnhaj%QfY64xv(E~mq7_K5O zq~7~4L~2j;GEweOi0x!~yd#m$G^c$Z7{i$Snn|5N`-TG1kl;Ln(D)Mx_oVd5o`F6dX*Wm@PVD38{yaiAZ58J|+RHX) z6*GE6R=w~*=Ttnw7iq!yIo~vRwjXKdu2hiN&>wMqXU*u#NY`+Q2S;05Z`L zhr%0drDq^Ut~1V1Km0s(H?KudK8LGJvz5O6MVGbX8iY$gjyc?bCgGlz;lL6XZ|LFZ zi65T`VgoOtEYhWNFm6yi9K#?|@7UG2|1=BBnf*eXEqH5-_>%omQcbcgzq;BG(=5ge zO+S!h9D<)H3tc?7Gtk%#3!*_tHd zhYr&Mk4rGBYhT8&zFSl@7-@zju7yNsR!fl5W4in)62)2Ls zmbKmGF<52EN=CvBsp-(xXzF~Km@=k(-*J=L)@Kb?A-o}ZAJwjKM;q7lzZ!3>qPu{e!# zLojPrZ^YNi`5|t6h$<__hxZWo)?moKwVsUR{&y4VRTCWU2vgxnyMIxiV zE07wCZ2iRxE&~TTqm@+5B@ho&S(VtZ%$sFMkO?HBC{FxT$h{+FLr%a^Eqi*^-+&km z;{$qw53e!cYf}=U;edwD0jIPg3KxF(!`?Ta{AGwkr`E1Pg1Z_SHGhGBAs`FQ_-AN0 zK(PwH!2u~;#q2!+Kge)(MuNufaboqVx4(n}1ZlZ71~SnKKdwK05L5gvpbzFdRd3^M z7Gu2eIp*m?IKfj0Y1|2RJrY4EkXYGht>ndg-k;#uIDMpx^u3wQ(<5IR%fT$frp-vO zJI`v!EAc~zU`T+jNdbH%AoFjTs6rMdWPL`4g?mBAPf=Fl({ue3`v8GwB>Y6iKj2 zXSOL0C%hMVN*K#NVgkR=;(4(|zzn90ep23o!U zY#?Qg4YyF_6W^NY_I8*wdi$c?i_Saom433d+ppI^ldx$IHMI7a3R#t-o2#NP36C}0sKaLcZs(w18+)Ba*v}~)x}Y?_v7LOvax*2twfe6IbrHT-`(MkVXdz##UT`ZpcqfU z6o}gFx&%pzjYr*f65<=D2ceVKumB3~;%NGz;s`oC5EgPFl;TYp!##o$LjLD`S9fbu z=J?^AyY!!*OaFM+z<}o=h~4$^Uf-T>O*wv-VFf$Fs+@_?IuyK z$+H*I#j%r{N*&GY;toMuiWct8Rg>|k8M1%tOCqVrH7TU@Bba4fx6C_^5{FKa(jL9D zZl|*eSjcl+I+t9YJlmiKmEMJxtype>WXDfCFiZWsH?%74E_WLp&3Y%a3)Osd2m%`2 z-N)6qa`jU`HJqH~h&a@i7lgOaIsG8dwYeG;f-ll;TBJ|{SoO6BtY{GTO%kT z710Zsjyvsn_TV-=Z{x>{dmX;Rb0R4e19=YBN!jmBj4rR+<^yTWv<<@uj_TRe) zd!fr6@}i>AL55%_LNs1oL=5p%Tr-$suvsFbsaqftFWC|rL5l+OqT2RQoQ?i**F))p z|C|Y4UFkq`CbH-{%YvK<%(K#p=SP`o#h4&3#F)OLAksTci-P8C%7Wa<509l`5@N9q z{UE4%W~Sa7M&~;Pdx5!f=fp@hw+ac5xyeqJ@aU306|py7zREL=1n&HV&T=Emq8w@@ zaObaFrInkkk<{xl6j7i1;>0Mb4v(xTqHN#X+`>{zH`4 zo4Grb+GccU3%QUmB?=E-4$o_%Sfy23gItKl2v_itsY!++#PPHoz>1$;iB#I+Va_x! z741qCy?ynu7;?V65;k~m46{;ddMsM~@oIFIf%{?lmw9O)ulCo+D9@G`m2rRg4zk4#>C!Hbqcin6pBeWxN8XASOm z3d0?Z{<|qZ(DIR+wNLf2P)SHIX$9bXGCc}3uiLc@rYb8yHwN#eya<{Lp!x5m90eWT z;J=sR(c}ah@uevdTsycj@Utm{l{AgMTWlxWbp4dM(gXKno34-YnxuKb$&xBZBpr%w zWm5(zKl;#})0ak(X`{bYt)-u~WJOa=_m`}lGsU8r)6#Okp#{Ca1?`0cAu&m0^mqxq z?Ddt_Qu|gbjQ+2O>6d0Rk~M;@5+`P;8~E z;A@UP(3EVMLW?ExbbA8H-Z{KM_|41<(ghtbrFJ@R{ z7T~Lh=VEVLThOOS-Czl$Bi}<#vB$;Y4pmVD-G9Rl=eMRrwQ9v+cd)8GZH2i_ArOg` zfu*Wqh&$Or$Hut_M{%s?ClrP2SQn$s9p;tVC^E05Hut+b6|U2Ef><_1%+U}lNoDVN zQ^&^!CF*JEUZN;Y&@7XZ!tSM7bWvTJqj`h&#%kUulR-E;hkHTFya3}lJhpmyDl0Ts zGzQ?#WQG6(=bJOY9?UN_x^o82goExGU%?y>)Qyn>9>83tN8$UqL=GP{K*qDVF&+

    5w!=gD(_U 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

    UKB^u{38# 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ℜ6qV2oBDc> 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⪚@3X@eZA$e@h~DLK9(_;Vvr!XT$kwNOQ>m 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Χ+kbGp4x2|N;T5-{XYr|tbU0n(V+zLDD+r$3Ymr> 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

  • )&tzN{qEFgx)bLZ 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%0A^w(HFGPaO6jL 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˖(sKsF(bEDmvCb}jw(S~z<2d%2-ZqjyH;zSx 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

    ?h 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 z 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