@@ -163,6 +163,86 @@ static inline int mbedtls_psa_get_ecc_oid_from_id(
163
163
psa_ecc_curve_t curve , size_t bits ,
164
164
char const * * oid , size_t * oid_len )
165
165
{
166
+ #if TARGET_TFM
167
+ /* Use older Crypto API, at least until TF-M updates its crypto
168
+ * implementation to Mbed TLS 2.22.0. */
169
+ (void ) bits ;
170
+ switch ( curve )
171
+ {
172
+ #if defined(MBEDTLS_ECP_DP_SECP192R1_ENABLED )
173
+ case PSA_ECC_CURVE_SECP192R1 :
174
+ * oid = MBEDTLS_OID_EC_GRP_SECP192R1 ;
175
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP192R1 );
176
+ return ( 0 );
177
+ #endif /* MBEDTLS_ECP_DP_SECP192R1_ENABLED */
178
+ #if defined(MBEDTLS_ECP_DP_SECP224R1_ENABLED )
179
+ case PSA_ECC_CURVE_SECP224R1 :
180
+ * oid = MBEDTLS_OID_EC_GRP_SECP224R1 ;
181
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP224R1 );
182
+ return ( 0 );
183
+ #endif /* MBEDTLS_ECP_DP_SECP224R1_ENABLED */
184
+ #if defined(MBEDTLS_ECP_DP_SECP256R1_ENABLED )
185
+ case PSA_ECC_CURVE_SECP256R1 :
186
+ * oid = MBEDTLS_OID_EC_GRP_SECP256R1 ;
187
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP256R1 );
188
+ return ( 0 );
189
+ #endif /* MBEDTLS_ECP_DP_SECP256R1_ENABLED */
190
+ #if defined(MBEDTLS_ECP_DP_SECP384R1_ENABLED )
191
+ case PSA_ECC_CURVE_SECP384R1 :
192
+ * oid = MBEDTLS_OID_EC_GRP_SECP384R1 ;
193
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP384R1 );
194
+ return ( 0 );
195
+ #endif /* MBEDTLS_ECP_DP_SECP384R1_ENABLED */
196
+ #if defined(MBEDTLS_ECP_DP_SECP521R1_ENABLED )
197
+ case PSA_ECC_CURVE_SECP521R1 :
198
+ * oid = MBEDTLS_OID_EC_GRP_SECP521R1 ;
199
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP521R1 );
200
+ return ( 0 );
201
+ #endif /* MBEDTLS_ECP_DP_SECP521R1_ENABLED */
202
+ #if defined(MBEDTLS_ECP_DP_SECP192K1_ENABLED )
203
+ case PSA_ECC_CURVE_SECP192K1 :
204
+ * oid = MBEDTLS_OID_EC_GRP_SECP192K1 ;
205
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP192K1 );
206
+ return ( 0 );
207
+ #endif /* MBEDTLS_ECP_DP_SECP192K1_ENABLED */
208
+ #if defined(MBEDTLS_ECP_DP_SECP224K1_ENABLED )
209
+ case PSA_ECC_CURVE_SECP224K1 :
210
+ * oid = MBEDTLS_OID_EC_GRP_SECP224K1 ;
211
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP224K1 );
212
+ return ( 0 );
213
+ #endif /* MBEDTLS_ECP_DP_SECP224K1_ENABLED */
214
+ #if defined(MBEDTLS_ECP_DP_SECP256K1_ENABLED )
215
+ case PSA_ECC_CURVE_SECP256K1 :
216
+ * oid = MBEDTLS_OID_EC_GRP_SECP256K1 ;
217
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_SECP256K1 );
218
+ return ( 0 );
219
+ #endif /* MBEDTLS_ECP_DP_SECP256K1_ENABLED */
220
+ #if defined(MBEDTLS_ECP_DP_BP256R1_ENABLED )
221
+ case PSA_ECC_CURVE_BRAINPOOL_P256R1 :
222
+ * oid = MBEDTLS_OID_EC_GRP_BP256R1 ;
223
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_BP256R1 );
224
+ return ( 0 );
225
+ #endif /* MBEDTLS_ECP_DP_BP256R1_ENABLED */
226
+ #if defined(MBEDTLS_ECP_DP_BP384R1_ENABLED )
227
+ case PSA_ECC_CURVE_BRAINPOOL_P384R1 :
228
+ * oid = MBEDTLS_OID_EC_GRP_BP384R1 ;
229
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_BP384R1 );
230
+ return ( 0 );
231
+ #endif /* MBEDTLS_ECP_DP_BP384R1_ENABLED */
232
+ #if defined(MBEDTLS_ECP_DP_BP512R1_ENABLED )
233
+ case PSA_ECC_CURVE_BRAINPOOL_P512R1 :
234
+ * oid = MBEDTLS_OID_EC_GRP_BP512R1 ;
235
+ * oid_len = MBEDTLS_OID_SIZE ( MBEDTLS_OID_EC_GRP_BP512R1 );
236
+ return ( 0 );
237
+ #endif /* MBEDTLS_ECP_DP_BP512R1_ENABLED */
238
+ default :
239
+ (void ) oid ;
240
+ (void ) oid_len ;
241
+ return ( -1 );
242
+ }
243
+ #else
244
+ /* Use more up to date Crypto API */
245
+
166
246
switch ( curve )
167
247
{
168
248
case PSA_ECC_CURVE_SECP_R1 :
@@ -250,6 +330,7 @@ static inline int mbedtls_psa_get_ecc_oid_from_id(
250
330
(void ) oid ;
251
331
(void ) oid_len ;
252
332
return ( -1 );
333
+ #endif /* TARGET_TFM */
253
334
}
254
335
255
336
#define MBEDTLS_PSA_MAX_EC_PUBKEY_LENGTH 1
@@ -369,12 +450,16 @@ static inline int mbedtls_psa_err_translate_pk( psa_status_t status )
369
450
static inline psa_key_type_t mbedtls_psa_parse_tls_ecc_group (
370
451
uint16_t tls_ecc_grp_reg_id , size_t * bits )
371
452
{
453
+ #if TARGET_TFM
454
+ return ( (psa_ecc_curve_t ) tls_ecc_grp_reg_id );
455
+ #else
372
456
const mbedtls_ecp_curve_info * curve_info =
373
457
mbedtls_ecp_curve_info_from_tls_id ( tls_ecc_grp_reg_id );
374
458
if ( curve_info == NULL )
375
459
return ( 0 );
376
460
return ( PSA_KEY_TYPE_ECC_KEY_PAIR (
377
461
mbedtls_ecc_group_to_psa ( curve_info -> grp_id , bits ) ) );
462
+ #endif
378
463
}
379
464
#endif /* MBEDTLS_ECP_C */
380
465
0 commit comments