Skip to content

Commit 5be7fb2

Browse files
authored
Merge pull request #335 from athoelke/crypto-mpo-sign
Add multi-part operations for asymmetric signature
2 parents 8eecef2 + bae6682 commit 5be7fb2

4 files changed

Lines changed: 708 additions & 53 deletions

File tree

doc/crypto/api.db/psa/crypto.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ typedef uint32_t psa_pake_primitive_t;
2424
typedef uint8_t psa_pake_primitive_type_t;
2525
typedef uint8_t psa_pake_role_t;
2626
typedef uint8_t psa_pake_step_t;
27+
typedef /* implementation-defined type */ psa_sign_operation_t;
2728
typedef uint8_t psa_slh_dsa_family_t;
29+
typedef /* implementation-defined type */ psa_verify_operation_t;
2830
typedef /* implementation-defined type */ psa_xof_operation_t;
2931
typedef struct psa_custom_key_parameters_t {
3032
uint32_t flags;
@@ -471,6 +473,7 @@ typedef struct psa_custom_key_parameters_t {
471473
#define PSA_RAW_KEY_AGREEMENT_OUTPUT_SIZE(key_type, key_bits) \
472474
/* implementation-defined value */
473475
#define PSA_SIGNATURE_MAX_SIZE /* implementation-defined value */
476+
#define PSA_SIGN_OPERATION_INIT /* implementation-defined value */
474477
#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \
475478
/* implementation-defined value */
476479
#define PSA_SLH_DSA_FAMILY_SHA2_F ((psa_slh_dsa_family_t) 0x04)
@@ -479,6 +482,7 @@ typedef struct psa_custom_key_parameters_t {
479482
#define PSA_SLH_DSA_FAMILY_SHAKE_S ((psa_slh_dsa_family_t) 0x0b)
480483
#define PSA_TLS12_ECJPAKE_TO_PMS_OUTPUT_SIZE 32
481484
#define PSA_TLS12_PSK_TO_MS_PSK_MAX_SIZE /* implementation-defined value */
485+
#define PSA_VERIFY_OPERATION_INIT /* implementation-defined value */
482486
#define PSA_WRAP_KEY_OUTPUT_SIZE(wrap_key_type, alg, key_type, key_bits) \
483487
/* implementation-defined value */
484488
#define PSA_WRAP_KEY_PAIR_MAX_SIZE /* implementation-defined value */
@@ -827,6 +831,11 @@ void psa_set_key_type(psa_key_attributes_t * attributes,
827831
psa_key_type_t type);
828832
void psa_set_key_usage_flags(psa_key_attributes_t * attributes,
829833
psa_key_usage_t usage_flags);
834+
psa_status_t psa_sign_abort(psa_sign_operation_t * operation);
835+
psa_status_t psa_sign_finish(psa_sign_operation_t * operation,
836+
uint8_t * signature,
837+
size_t signature_size,
838+
size_t * signature_length);
830839
psa_status_t psa_sign_hash(psa_key_id_t key,
831840
psa_algorithm_t alg,
832841
const uint8_t * hash,
@@ -859,12 +868,24 @@ psa_status_t psa_sign_message_with_context(psa_key_id_t key,
859868
uint8_t * signature,
860869
size_t signature_size,
861870
size_t * signature_length);
871+
psa_sign_operation_t psa_sign_operation_init(void);
872+
psa_status_t psa_sign_set_context(psa_sign_operation_t * operation,
873+
const uint8_t * context,
874+
size_t context_length);
875+
psa_status_t psa_sign_setup(psa_sign_operation_t * operation,
876+
psa_key_id_t key,
877+
psa_algorithm_t alg);
878+
psa_status_t psa_sign_update(psa_sign_operation_t * operation,
879+
const uint8_t * input,
880+
size_t input_length);
862881
psa_status_t psa_unwrap_key(const psa_key_attributes_t * attributes,
863882
psa_key_id_t wrapping_key,
864883
psa_algorithm_t alg,
865884
const uint8_t * data,
866885
size_t data_length,
867886
psa_key_id_t * key);
887+
psa_status_t psa_verify_abort(psa_verify_operation_t * operation);
888+
psa_status_t psa_verify_finish(psa_verify_operation_t * operation);
868889
psa_status_t psa_verify_hash(psa_key_id_t key,
869890
psa_algorithm_t alg,
870891
const uint8_t * hash,
@@ -893,6 +914,18 @@ psa_status_t psa_verify_message_with_context(psa_key_id_t key,
893914
size_t context_length,
894915
const uint8_t * signature,
895916
size_t signature_length);
917+
psa_verify_operation_t psa_verify_operation_init(void);
918+
psa_status_t psa_verify_set_context(psa_verify_operation_t * operation,
919+
const uint8_t * context,
920+
size_t context_length);
921+
psa_status_t psa_verify_setup(psa_verify_operation_t * operation,
922+
psa_key_id_t key,
923+
psa_algorithm_t alg,
924+
const uint8_t * signature,
925+
size_t signature_length);
926+
psa_status_t psa_verify_update(psa_verify_operation_t * operation,
927+
const uint8_t * input,
928+
size_t input_length);
896929
psa_status_t psa_wrap_key(psa_key_id_t wrapping_key,
897930
psa_algorithm_t alg,
898931
psa_key_id_t key,

0 commit comments

Comments
 (0)