@@ -2814,6 +2814,78 @@ psa_status_t psa_driver_wrapper_init_random(psa_driver_random_context_t *context
2814
2814
#endif
2815
2815
}
2816
2816
2817
+ /*
2818
+ * Key wrapping functions.
2819
+ */
2820
+ psa_status_t psa_driver_wrapper_wrap_key (const psa_key_attributes_t * wrapping_key_attributes ,
2821
+ const uint8_t * wrapping_key_data , size_t wrapping_key_size ,
2822
+ psa_algorithm_t alg ,
2823
+ const psa_key_attributes_t * key_attributes ,
2824
+ const uint8_t * key_data , size_t key_size , uint8_t * data ,
2825
+ size_t data_size , size_t * data_length )
2826
+ {
2827
+ switch (PSA_KEY_LIFETIME_GET_LOCATION (wrapping_key_attributes -> lifetime )) {
2828
+ case PSA_KEY_LOCATION_LOCAL_STORAGE :
2829
+ /* Add cases for transparent drivers here */
2830
+ #ifdef PSA_NEED_OBERON_KEY_WRAP_DRIVER
2831
+ return oberon_wrap_key (wrapping_key_attributes , wrapping_key_data ,
2832
+ wrapping_key_size , alg , key_attributes , key_data , key_size ,
2833
+ data , data_size , data_length );
2834
+ #endif /* PSA_NEED_OBERON_KEY_WRAP_DRIVER */
2835
+ return PSA_ERROR_NOT_SUPPORTED ;
2836
+
2837
+ /* Add cases for opaque drivers here */
2838
+
2839
+ default :
2840
+ /* Key is declared with a lifetime not known to us */
2841
+ (void )key_attributes ;
2842
+ (void )key_data ;
2843
+ (void )key_size ;
2844
+ (void )wrapping_key_data ;
2845
+ (void )wrapping_key_size ;
2846
+ (void )alg ;
2847
+ (void )data ;
2848
+ (void )data_size ;
2849
+ (void )data_length ;
2850
+ return PSA_ERROR_INVALID_ARGUMENT ;
2851
+ }
2852
+ }
2853
+
2854
+ psa_status_t psa_driver_wrapper_unwrap_key (const psa_key_attributes_t * attributes ,
2855
+ const psa_key_attributes_t * wrapping_key_attributes ,
2856
+ const uint8_t * wrapping_key_data ,
2857
+ size_t wrapping_key_size , psa_algorithm_t alg ,
2858
+ const uint8_t * data , size_t data_length , uint8_t * key ,
2859
+ size_t key_size , size_t * key_length )
2860
+ {
2861
+ switch (PSA_KEY_LIFETIME_GET_LOCATION (wrapping_key_attributes -> lifetime )) {
2862
+ case PSA_KEY_LOCATION_LOCAL_STORAGE :
2863
+ /* Add cases for transparent drivers here */
2864
+ #ifdef PSA_NEED_OBERON_KEY_WRAP_DRIVER
2865
+ return oberon_unwrap_key (attributes , wrapping_key_attributes , wrapping_key_data ,
2866
+ wrapping_key_size , alg , data , data_length , key , key_size ,
2867
+ key_length );
2868
+ #endif /* PSA_NEED_OBERON_KEY_WRAP_DRIVER */
2869
+ return PSA_ERROR_NOT_SUPPORTED ;
2870
+
2871
+ /* Add cases for opaque drivers here */
2872
+
2873
+ default :
2874
+ /* Key is declared with a lifetime not known to us */
2875
+ (void )attributes ;
2876
+ (void )key_size ;
2877
+ (void )wrapping_key_data ;
2878
+ (void )wrapping_key_size ;
2879
+ (void )alg ;
2880
+ (void )data ;
2881
+ (void )data_length ;
2882
+ (void )key ;
2883
+ (void )key_size ;
2884
+ (void )key_length ;
2885
+ return PSA_ERROR_INVALID_ARGUMENT ;
2886
+ }
2887
+ }
2888
+
2817
2889
psa_status_t psa_driver_wrapper_get_random (psa_driver_random_context_t * context , uint8_t * output ,
2818
2890
size_t output_size )
2819
2891
{
0 commit comments