Hanno Becker
5178dcab12
Clarify parameter ownership in mbedtls_rsa_import[_raw]
2017-10-03 14:29:37 +01:00
Hanno Becker
b5beaa8995
Check that 1 < D, E < N in mbedtls_rsa_validate_params
2017-10-02 13:20:20 +01:00
Hanno Becker
c6fc878eda
Remove mbedtls_rsa_check_crt
...
This is no longer needed after the decision to not exhaustively validate private key material.
2017-10-02 13:20:15 +01:00
Hanno Becker
98838b04af
Minor improvements
2017-10-02 13:17:01 +01:00
Hanno Becker
3f3ae85e11
Correct memory leak in RSA test suite
...
The test for `mbedtls_rsa_import_raw` didn't include freeing the allocate buffers.
2017-10-02 13:17:01 +01:00
Hanno Becker
7471631dde
Make input arguments to mbedtls_rsa_import_raw
constant
...
Original intention was to be allowed to perform in-place operations like changing the byte-order before importing
parameters into an HSM. Now a copy is needed in this case, but there's no more danger of a user expecting the arguments
to be left untouched.
2017-10-02 13:17:01 +01:00
Hanno Becker
43a08d029e
Clarify guarantees made by rsa_check_privkey
and rsa_complete
...
Document explicitly that `mbedtls_rsa_check_privkey` and `mbedtls_rsa_complete` succeeding does not guarantee the
consistency of the underlying RSA private key but only that enough information is present to perform a private key
operation.
2017-10-02 13:17:01 +01:00
Hanno Becker
1b831fe1c5
Clarify guarantees made by rsa_deduce_moduli/private/crt
2017-10-02 13:06:47 +01:00
Hanno Becker
bdefff1dde
Change signature of mbedtls_rsa_deduce_private
...
Make input arguments constant and adapt the implementation to use a temporary instead of in-place operations.
2017-10-02 09:59:48 +01:00
Hanno Becker
ba5b755f1a
Change signature and semantics of mbedtls_rsa_deduce_moduli
...
Input arguments are marked as constant. Further, no double-checking is performed when a factorization of the modulus has
been found.
2017-10-02 09:55:49 +01:00
Hanno Becker
56bae95e1d
Improve style and documentation, fix typo
2017-09-29 15:43:49 +01:00
Hanno Becker
4b2f691691
Doxygen: Use typewriter font for variables in rsa.h documentation
2017-09-29 13:36:54 +01:00
Hanno Becker
ed20361321
Increase readability of Doxygen output
...
Multiple lists were not properly recognized as such.
2017-09-29 13:34:25 +01:00
Hanno Becker
91c194dabb
Add and document an RSA-specific error code for unsupported exports
...
E.g., a private key on an external chip might not be exportable to RAM.
2017-09-29 12:50:12 +01:00
Hanno Becker
bead71752e
Correct typo in rsa.c
2017-09-29 12:41:06 +01:00
Hanno Becker
e1582a832b
Add expectation when testing RSA key import/export
...
This commit adds a flag to the RSA import/export tests indicating whether it is
expected that a full RSA keypair can be set up from the provided parameters.
Further, the tests of `mbedtls_rsa_import` and `mbedtls_rsa_import_raw` are
expanded to perform key checks and an example encryption-decryption.
2017-09-29 11:54:05 +01:00
Hanno Becker
4d6e83406c
Improve readability of test for mbedtls_rsa_import
2017-09-29 11:54:05 +01:00
Hanno Becker
5063cd2cca
Deprecate direct manipulation of structure fields in RSA context
2017-09-29 11:54:05 +01:00
Hanno Becker
ba1ba11a98
Check that length is properly set in mbedtls_rsa_check_pubkey
2017-09-29 11:54:05 +01:00
Hanno Becker
2f8f06aa25
Don't always recompute context length in mbedtls_rsa_get_len
...
This commit changes the implementation of `mbedtls_rsa_get_len` to return
`ctx->len` instead of always re-computing the modulus' byte-size via
`mbedtls_mpi_size`.
2017-09-29 11:54:05 +01:00
Hanno Becker
54cfc585cd
Add test cases for mbedtls_rsa_import[_raw] where N is missing
2017-09-29 11:54:05 +01:00
Hanno Becker
2cca6f3290
Always deduce N from P, Q in mbedtls_rsa_complete
...
Previously, a parameter set of (-, P, Q, -, E) was completed, but (-, P, Q, D,
E) wasn't - this is odd.
2017-09-29 11:54:05 +01:00
Hanno Becker
45037ceac5
Add check for presence of relevant parameters in mbedtls_rsa_private
...
If CRT is used, check for the presence N, P, Q, D, E, DP, DQ and QP. If CRT is
not used, check for N, P, Q, D, E only.
2017-09-14 08:02:14 +01:00
Hanno Becker
603b8c62c4
Clarify guarantees made by successful mbedtls_rsa_complete call
2017-08-25 11:03:07 +01:00
Hanno Becker
b269a8584a
Change mbedtls_rsa_check_privkey to use new helper functions
2017-08-25 08:35:09 +01:00
Hanno Becker
d9431a7817
Minor comments improvement
2017-08-25 08:35:09 +01:00
Hanno Becker
d363799a9d
Add mbedtls_rsa_validate_crt
...
This commit adds the function mbedtls_rsa_validate_crt for validating a set of CRT parameters. The function
mbedtls_rsa_check_crt is simplified accordingly.
2017-08-25 08:35:09 +01:00
Hanno Becker
d56d83a7f3
Remove double-checking code from rsa_deduce_moduli and rsa_complete
2017-08-25 08:35:08 +01:00
Hanno Becker
750e8b4596
Rename rsa_check_params->rsa_validate_params and change error codes
2017-08-25 08:34:55 +01:00
Hanno Becker
fb81c0ec2e
Guard primality checks in RSA module by MBEDTLS_GENPRIME
...
Primality testing is guarded by the configuration flag MBEDTLS_GENPRIME and used in the new RSA helper functions. This
commit adds a corresponding preprocessor directive.
2017-08-24 06:55:11 +01:00
Hanno Becker
b0c5edcc2f
Correct typo in rsa.h
2017-08-23 22:16:10 +01:00
Hanno Becker
ab3773123c
Add support for alternative RSA implementations
...
Alternative RSA implementations can be provided by defining MBEDTLS_RSA_ALT in
config.h, defining an mbedtls_rsa_context struct in a new file rsa_alt.h and
re-implementing the RSA interface specified in rsa.h.
Through the previous reworkings, the adherence to the interface is the only
implementation obligation - in particular, implementors are free to use a
different layout for the RSA context structure.
2017-08-23 16:24:51 +01:00
Hanno Becker
bf37b10370
Add test run for RSA_NO_CRT to all.sh
2017-08-23 16:17:28 +01:00
Hanno Becker
6345dd33b9
Adapt rsa_check_privkey to deal with NO_CRT option
2017-08-23 16:17:28 +01:00
Hanno Becker
bee3aaeb50
Adapt rsa_gen_key to deal with RSA_NO_CRT option
2017-08-23 16:17:28 +01:00
Hanno Becker
dc95c890ad
Adapt rsa_deduce_crt to deal with RSA_NO_CRT option
2017-08-23 16:17:28 +01:00
Hanno Becker
33c30a0c7e
Adapt rsa_copy and rsa_free to deal with RSA_NO_CRT option
2017-08-23 16:17:28 +01:00
Hanno Becker
23344b5fcc
Adapt rsa_complete to deal with RSA_NO_CRT option
2017-08-23 16:17:28 +01:00
Hanno Becker
131134fa1a
Adapt RSA test suite to deal with RSA_NON_CRT option
2017-08-23 16:17:28 +01:00
Hanno Becker
1a59e791e5
Remove CRT fields from RSA context if RSA_NO_CRT is defined
2017-08-23 16:17:28 +01:00
Hanno Becker
f073de0c25
Adapt rsa_genkey example program to use new RSA interface
2017-08-23 16:17:28 +01:00
Hanno Becker
0c2639386e
Adapt rsa_encrypt example program to new RSA interface
2017-08-23 16:17:28 +01:00
Hanno Becker
d6ba5e3d8b
Adapt rsa_sign example program to new RSA interface
2017-08-23 16:17:28 +01:00
Hanno Becker
ccef18c2ff
Adapt rsa_decrypt example program to new RSA interface
2017-08-23 16:17:27 +01:00
Hanno Becker
40371ec783
Adapt key_app_writer example program to new RSA interface
2017-08-23 16:17:27 +01:00
Hanno Becker
54ebf9971d
Adapt key_app example program to new RSA interface
2017-08-23 16:17:27 +01:00
Hanno Becker
83aad1fa86
Adapt gen_key example program to new RSA interface
2017-08-23 16:17:27 +01:00
Hanno Becker
c95fad3566
Adapt dh_server example program to new RSA interface
2017-08-23 16:17:27 +01:00
Hanno Becker
ceb7a9ddb3
Adapt RSA test suites to new RSA interface
2017-08-23 16:17:27 +01:00
Hanno Becker
6326a6da7f
Adapt PKCS v21 test suite to new RSA interface
2017-08-23 16:17:27 +01:00