History: enc_base


This page describes all changes made to the enc_base package, Embedded Encryption Manager, since its release.

Version

1.35 (2021-08-30, 12:00):

  • Added utilities to calculate HMAC on any hash function.
  • Corrected enc_rsassa_pss_decrypt() function to return error code if decrypted signature padding has incorrect syntax. 

1.34 (2021-07-19, 12:15):

  • Added extra check for inverse modulo function (sbn_inverse_modulo()) to not accept 0 value as input.
  • Removed compiler warnings.

1.33 (2021-06-25, 8:30):

  • Corrected maximum buffer size in enc_rsassa_pss_encrypt(). This prevented module generating sha512 for 2048bit and 4096bit keys.

1.32 (2021-06-16, 13:11):

  • Added functions to encrypt/decrypt RSA using PSS padding.

1.31 (2020-11-02, 10:16):

  • Writing beyond end/beginning of buffer error got fixed in big_num.c.
  • Simple Barrett reduction has been removed from big_num.c.

1.30 (2020-06-05, 13:25)

  • Added GF GCM Shoup's 4bit table algorithm based on gcm-revised-spec.pdf.

1.29 (2020-05-25, 11:40)

  • Removed unused variables in big_num.c.

1.28 (2020-03-16, 12:00):

  • Optimized big number Galois Field function sbn_gf_mult_gcm().
  • Added optimized version of sbn_gf_add() function for 128 bit inputs.

1.27 (2019-10-11, 15:00):

  • Added 0 initialization to g_enc_config, because some compilers did not initialize global structures to zero.

1.26 (2019.04.29, 19:00):

  • MISRA 2012: violations eliminated (excluding big_num.c).

1.25 (2019-02-03, 23:55):

  • Removed obsolete configuration option READ_CHECK_ALIGNMENT from the configuration file.

1.24 (2019-01-07, 15:00):

  • Corrected reading of high and low 32 bits in sbn_mul_int().

1.23 r2 (2018-08-29, 18:24):

  • Document HTML link added to the documentation folder.
  • History and document files renamed to the package name.

1.23 (2018-07-18, 12:00)

  • Corrected sbn_div_int(), sbn_invmod(), sbn_gf_add(), sbn_inverse_modulo() to work in Big Endian mode.

1.22 (2018-01-19, 13:00):

  • Corrected typo in sbn_correct_len().

1.21 (2017-08-30, 9:30):

  • Added function enc_key_get_value() to read values from RSA/DSS keys.

1.20r2 (2017-06-08, 9:00):

  • Updated history file with release date.

1.20 (2017-06-06, 13:00):

  • Added functions for addition and multiply in Galois Field for GCM.
  • Added p_ecd_auth, ecd_auth_size fields to t_enc_cypher_data (needed by AEAD encryption algorithms).

1.19:

  • enc_get_random_bytes(): corrected to small loop index.

1.18:

  • Added const to buffers in t_enc_cypher_data structure.

1.17 r2:

  • Moved PSP template to psp_base_template module.

1.17:

  • Barrett reduction is now used only if modulus value has length that is power of 2.

1.16:

  • Corrected possible use of uninitialized variable in sbn_div_int().
  • Get random bytes uses now RTC for generating seed value.

1.15:

  • Added function sbn_add_fast().
  • Modified functions sbn_shl(), sbn_shr() to be able to take as input and output the same parameter.
  • Moved function declarations to the api file: sbn_get_bit(), sbn_sub_fast(), sbn_add_fast(), sbn_correct_len().

1.14:

  • Optimized sbn_invers_modulo() ( it uses euclidean GCD algorithm for even modulus values and binary GCD algorithm for odd modulus value).
  • Corrected sbn_shr() function.
  • Corrected sbn_add() function.
  • Function sbn_shr() can now take as input and output the same Big number variable.
  • Corrected length of allocated buffers in sbn_div_int().

1.13:

  • Function sbn_mul() is now visible to the user ( needed by RSA CRT ).

1.12:

  • Corrected block division function sbn_div_block() - added second quotient correction.

1.11:

Optimized functions:

  • sbn_div_int(): (algorithm based on long division).
  • sbn_modulo(): replaced by new division.
  • sbn_modular_multiplication(): replaced by multiply and modulo operation.

1.10:

  • Optimized functions sbn_shl() and sbn_shr().

1.9:

  • Corrected sbn_shr() for numbers of length smaller than 4 bytes.
  • bn_copy() and bn_get_length() functions are now visible for user.

1.8:

  • Moved Big Number maximum size to configuration file.
  • Corrected sbn_compare() buffer index casting  (from uint8_t to uint16_t, index is of int16_t type).

1.7:

  • Corrected handling of carry bit in big number add.

1.6:

  • sbn_assign_be()/le_buff() added correction of Big number size.

1.5:

  • Removed mutex protection from enc_init(), enc_start(), enc_stop(), enc_delete().
  • Code change in sbn_get_power_module() to enable passing the same parameter for input p_a and output p_r.
  • Removed setting '0' in  sbn_get_be_buf().

1.4:

  • Code review.
  • Big number: Replaced aligned checking with PSP functions.
  • Simplified Big number allocation mechanism.
  • Modified stack get/put mechanism.

1.3:

  • Big number: sbn_get_power_module checks in run time if it can use simple Barrett method.

1.2:

  • Big number Library updated to work under Big Endian architecture.

1.1:

 Big number library changes:

  • New buffer allocation system.
  • Added checking of alignment (all passed big numbers must have buffers aligned to 4 bytes and its length must be multiple of 4).
  • Corrected some functions to work on DWORDS.

 Removed:

  • ver_big_num.h
  • ver_big_num_ifc.h
  • ver_enc_common.h
  • ver_sw_big_num.h

Moved big number library API to api_enc.h and configuration to config_enc.h.

1.0:

  • Initial release.