Hanno Becker
230b4f4159
Fix definition of MBEDTLS_SHA256_VALIDATE[_RET] in sha256.c
2018-12-18 16:31:06 +00:00
Hanno Becker
236ea16c01
Fix wrong conditional in free() functions
2018-12-18 15:30:30 +00:00
Hanno Becker
e463c42902
Minor improvements
2018-12-18 15:30:30 +00:00
Hanno Becker
305e4e4f32
Implement parameter validation for ChaCha/Poly modules
2018-12-18 15:30:30 +00:00
Andres Amaya Garcia
863d483965
Add MBEDTLS_ERR_SHA512_BAD_INPUT_DATA to error.{h,c}
2018-12-18 15:06:39 +00:00
Andres Amaya Garcia
ba519b94a5
Add parameter validation to SHA-512 module
2018-12-18 15:06:39 +00:00
Hanno Becker
b86e684ed4
Move/remove param validation in mbedtls_rsa_rsaes_pkcs1_v15_encrypt
...
- The validity of the input and output parameters is checked by
parameter validation.
- A PRNG is required in public mode only (even though it's also
recommended in private mode), so move the check to the
corresponding branch.
2018-12-18 14:46:04 +00:00
Hanno Becker
319ae11ab3
Implement parameter validation in ECDSA module
2018-12-18 14:31:50 +00:00
Hanno Becker
71c8e1b8d8
Implement parameter validation in ECJPAKE module
2018-12-18 14:31:18 +00:00
Hanno Becker
91796d7471
Implement parameter validation in ECDH module
2018-12-18 14:30:39 +00:00
Hanno Becker
ddeeed7d1b
Implement parameter validation for RSA module
2018-12-18 13:38:05 +00:00
Hanno Becker
4f8e8e5805
Implement parameter validation for ECP module
2018-12-18 13:00:48 +00:00
Andres Amaya Garcia
9e76c0e77f
Add MBEDTLS_ERR_SHA256_BAD_INPUT_DATA to error.{h,c}
2018-12-18 11:41:20 +00:00
Andres Amaya Garcia
79e593f617
Add parameter validation to SHA-256 module
2018-12-18 11:41:20 +00:00
Hanno Becker
b3906d8829
Minor fixes to implementation of SHA1 parameter validation
2018-12-18 11:37:28 +00:00
Andres Amaya Garcia
a685d4f28d
Add MBEDTLS_ERR_SHA1_BAD_INPUT_DATA to error.{h,c}
2018-12-18 11:37:28 +00:00
Andres Amaya Garcia
f7c43b3145
Add parameter validation to SHA-1
2018-12-18 11:37:28 +00:00
Manuel Pégourié-Gonnard
e55e103bfe
Fix off-by-one in iv_off check and add tests
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
5b89c09273
Add check for iv_off in AES-CFB128 and AES-OFB
...
The check is mandatory as skipping it results in buffer overread of arbitrary
size.
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
998a358529
Make a check more explicit in aes.c
...
The check was already done later when calling ECB, (as evidenced by the tests
passing, which have a call with data_unit set to NULL), but it's more readable
to have it here too, and more helpful when debugging.
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
eb6d3968b1
Fix some whitespace issues in aes.c
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
2bc535be86
Add parameter validation for AES-CTR
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
8e41eb7187
Add parameter validation for AES-OFB
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
1677cca54b
Add parameter validation for AES-CFB functions
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
191af1313a
Add param validation for mbedtls_aes_crypt_xts()
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
3178d1a997
Add param validation for mbedtls_aes_crypt_cbc()
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
1aca260571
Add parameter validation for mbedtls_aes_crypt_ecb()
2018-12-18 12:22:40 +01:00
Manuel Pégourié-Gonnard
68e3dff3f1
Add parameter validation XTS setkey functions
2018-12-18 12:22:40 +01:00
Hanno Becker
6640b0d9a3
Undo deprecation of MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH
2018-12-18 09:53:14 +00:00
Hanno Becker
a034369eca
Undo deprecation of MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH
2018-12-18 09:53:11 +00:00
Hanno Becker
938f9e9bdb
Undo deprecation of MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH
...
Merging MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH and
MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH is an API break.
2018-12-18 09:50:57 +00:00
Hanno Becker
3214215b1e
Update errors.c
2018-12-17 13:26:42 +00:00
Hanno Becker
d2f3a00062
Introduce single BLOWFISH error code for bad input data
...
Deprecate the old specific error codes
* MBEDTLS_ERR_BLOWFISH_INVALID_KEY_LENGTH
* MBEDTLS_ERR_BLOWFISH_INVALID_INPUT_LENGTH
2018-12-17 13:26:37 +00:00
Hanno Becker
4c029d09be
Introduce single CAMELLIA error code for bad input data
...
Deprecate the old specific error codes
* MBEDTLS_ERR_CAMELLIA_INVALID_KEY_LENGTH
* MBEDTLS_ERR_CAMELLIA_INVALID_INPUT_LENGTH
2018-12-17 13:26:33 +00:00
Hanno Becker
2f47550018
Introduce single ARIA error code for bad input data
...
Deprecate the old specific error codes
* MBEDTLS_ERR_ARIA_INVALID_KEY_LENGTH
* MBEDTLS_ERR_ARIA_INVALID_INPUT_LENGTH
2018-12-17 13:26:28 +00:00
Gilles Peskine
1a76f3971c
Merge remote-tracking branch 'psa/pr/230' into feature-psa
...
Implement a key handle mechanism
2018-12-12 16:15:34 +01:00
Gilles Peskine
2e14bd3aaf
Add missing static on file-scope variable
2018-12-12 14:05:18 +01:00
Gilles Peskine
23fd2bdb94
Update some documentation related to key slots
...
Some of the documentation is obsolete in its reference to key slots
when it should discuss key handles. This may require a further pass,
possibly with some reorganization of error codes.
Update the documentation of functions that modify key slots (key
material creation and psa_set_key_policy()) to discuss how they affect
storage.
2018-12-11 16:48:14 +01:00
Gilles Peskine
09829036ab
Document some functions in internal headers
2018-12-11 16:48:14 +01:00
Gilles Peskine
fa4135b135
Move more slot management functions to the proper module
...
Move psa_load_persistent_key_into_slot,
psa_internal_make_key_persistent and psa_internal_release_key_slot to
the slot management module.
Expose psa_import_key_into_slot from the core.
After this commit, there are no longer any functions declared in
psa_crypto_slot_management.h and defined in psa_crypto.c. There are
still function calls in both directions between psa_crypto.c and
psa_crypto_slot_management.c.
2018-12-11 16:48:14 +01:00
Gilles Peskine
66fb126e87
Move the key slot array to the slot management module
...
Move the key slot array and its initialization and wiping to the slot
management module.
Also move the lowest-level key slot access function psa_get_key_slot
and the auxiliary function for slot allocation
psa_internal_allocate_key_slot to the slot management module.
2018-12-11 16:48:14 +01:00
Gilles Peskine
408319be3a
Remove redundant check for slot->allocated
...
This check became redundant when support for direct access to key
slots was removed.
2018-12-11 16:48:14 +01:00
Gilles Peskine
48868129cd
Document the maximum key identifier
...
Give it a name and explain why it was chosen.
2018-12-11 16:48:14 +01:00
Gilles Peskine
039b90cf5b
Expose the PSA key slot structure to internal modules
...
Move psa_key_slot_t to a new header psa_crypto_core.h, to prepare for
moving the responsibility for some fields to
psa_crypto_slot_management.c.
2018-12-11 16:48:14 +01:00
Gilles Peskine
3f10812ff9
Use the library-wide zeroize function
...
Since Mbed TLS 2.10, there is a single copy of
mbedtls_platform_zeroize for the whole library instead of one per
module. Update the PSA crypto module accordingly.
2018-12-11 16:48:14 +01:00
Gilles Peskine
fe9756b1f5
Remove a comment that is no longer applicable
2018-12-11 16:48:14 +01:00
Gilles Peskine
2f060a8ea5
Rename key_slot_t to psa_key_slot_t in psa_crypto.c
...
That way it'll be ok to add it to an internal header so as to use it
in multiple source modules.
2018-12-11 16:48:14 +01:00
Gilles Peskine
4a044739a8
Fix the build without persistent storage
...
Add missing guards on MBEDTLS_PSA_CRYPTO_STORAGE_C.
Add test cases to test that psa_create_key and psa_open_key return
NOT_SUPPORTED.
2018-12-11 16:48:14 +01:00
Gilles Peskine
c5487a8892
Drop support for psa_key_slot_t in psa_crypto.c
...
This commit finishes the removal of support for direct access to key
slots in psa_crypto.c.
This marks the end of the necessary phase of the transition to key
handles. The code should subsequently be refactored to move key slot
management from psa_crypto.c to psa_crypto_slot_management.c.
2018-12-11 16:48:13 +01:00
Gilles Peskine
b77a6b25c0
Remove psa_set_key_lifetime
...
This function is no longer relevant. Use psa_create_key instead.
2018-12-11 16:48:13 +01:00