hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * Copyright (c) 2014, STMicroelectronics International N.V.
 * All rights reserved.
 */
 
#ifndef TA_CRYPT_H
#define TA_CRYPT_H
 
/* This UUID is generated with the ITU-T UUID generator at
   http://www.itu.int/ITU-T/asn1/uuid.html */
#define TA_CRYPT_UUID { 0xcb3e5ba0, 0xadf1, 0x11e0, \
   { 0x99, 0x8b, 0x00, 0x02, 0xa5, 0xd5, 0xc5, 0x1b } }
 
#define TA_CRYPT_CMD_SHA224             1
#define TA_CRYPT_CMD_SHA256             2
#define TA_CRYPT_CMD_AES256ECB_ENC      3
#define TA_CRYPT_CMD_AES256ECB_DEC      4
 
/*
 * TEE_Result TEE_AllocateOperation(TEE_OperationHandle *operation,
 *              uint32_t algorithm, uint32_t mode, uint32_t maxKeySize);
 * in/out   params[0].value.a = operation
 * in/out   params[0].value.b = algorithm
 * in       params[1].value.a = mode
 * in       params[2].value.b = maxKeySize
 */
#define TA_CRYPT_CMD_ALLOCATE_OPERATION 5
 
/*
 * void TEE_FreeOperation(TEE_OperationHandle operation);
 * in       params[0].value.a = operation
 */
#define TA_CRYPT_CMD_FREE_OPERATION     6
 
/*
 * void TEE_GetOperationInfo(TEE_OperationHandle operation,
 *              TEE_OperationInfo* operationInfo);
 * in       params[0].value.a = operation
 * out      params[1].memref  = operationInfo
 */
#define TA_CRYPT_CMD_GET_OPERATION_INFO 7
 
/*
 * void TEE_ResetOperation(TEE_OperationHandle operation);
 * in       params[0].value.a = operation
 */
#define TA_CRYPT_CMD_RESET_OPERATION    8
 
/*
 * TEE_Result TEE_SetOperationKey(TEE_OperationHandle operation,
 *              TEE_ObjectHandle key);
 * in       params[0].value.a = operation
 * in       params[0].value.b = key
 */
#define TA_CRYPT_CMD_SET_OPERATION_KEY  9
 
/*
 * TEE_Result TEE_SetOperationKey2(TEE_OperationHandle operation,
 *              TEE_ObjectHandle key1, TEE_ObjectHandle key2);
 * in       params[0].value.a = operation
 * in       params[0].value.b = key1
 * in       params[0].value.a = key2
 */
#define TA_CRYPT_CMD_SET_OPERATION_KEY2 10
 
/*
 * void TEE_CopyOperation(TEE_OperationHandle dstOperation,
 *              TEE_OperationHandle srcOperation);
 * in       params[0].value.a = dstOperation
 * in       params[0].value.b = srcOperation
 */
#define TA_CRYPT_CMD_COPY_OPERATION     11
 
/*
 * void TEE_DigestUpdate(TEE_OperationHandle operation,
 *              void *chunk, size_t chunkSize);
 * in       params[0].value.a = operation
 * in       params[1].memref = chunk
 */
#define TA_CRYPT_CMD_DIGEST_UPDATE      12
 
/*
 * TEE_Result TEE_DigestDoFinal(TEE_OperationHandle operation,
 *              const void *chunk, size_t chunkLen,
 *              void *hash, size_t *hashLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = chunk
 * out      params[2].memref = hash
 */
#define TA_CRYPT_CMD_DIGEST_DO_FINAL    13
 
/*
 * void TEE_CipherInit(TEE_OperationHandle operation, const void *IV,
 *              size_t IVLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = IV
 */
#define TA_CRYPT_CMD_CIPHER_INIT        14
 
/*
 * TEE_Result TEE_CipherUpdate(TEE_OperationHandle operation,
 *              const void *srcData, size_t srcLen,
 *              void *destData, size_t *destLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = srcData
 * out      params[2].memref = dstData
 */
#define TA_CRYPT_CMD_CIPHER_UPDATE      15
 
/*
 * TEE_Result TEE_CipherDoFinal(TEE_OperationHandle operation,
 *              const void *srcData, size_t srcLen,
 *              void *destData, size_t *destLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = srcData
 * out      params[2].memref = destData
 */
#define TA_CRYPT_CMD_CIPHER_DO_FINAL    16
 
/*
 * void TEE_MACInit(TEE_OperationHandle operation,
 *              const void *IV, size_t IVLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = IV
 */
#define TA_CRYPT_CMD_MAC_INIT           17
 
/*
 * void TEE_MACUpdate(TEE_OperationHandle operation,
 *              const void *chunk, size_t chunkSize);
 * in       params[0].value.a = operation
 * in       params[1].memref = chunk
 */
#define TA_CRYPT_CMD_MAC_UPDATE         18
 
/*
 * TEE_Result TEE_MACFinalCompute(TEE_OperationHandle operation,
 *              const void *message, size_t messageLen,
 *              void *mac, size_t *macLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = message
 * out      params[2].memref = mac
 */
#define TA_CRYPT_CMD_MAC_FINAL_COMPUTE  19
 
/*
 * TEE_Result TEE_MACFinalCompare(TEE_OperationHandle operation,
 *              const void *message, size_t messageLen,
 *              const void *mac, size_t *macLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = message
 * in       params[2].memref = mac
 */
#define TA_CRYPT_CMD_MAC_FINAL_COMPARE  20
 
/*
 * TEE_Result TEE_AllocateTransientObject(TEE_ObjectType objectType,
 *              uint32_t maxObjectSize, TEE_ObjectHandle* object);
 * in       params[0].value.a = objectType
 * in       params[0].value.b = maxObjectSize
 * out      params[1].value.a = object;
 */
#define TA_CRYPT_CMD_ALLOCATE_TRANSIENT_OBJECT  21
 
/*
 * void TEE_FreeTransientObject(TEE_ObjectHandle object);
 * in       params[0].value.a = object
 */
#define TA_CRYPT_CMD_FREE_TRANSIENT_OBJECT      22
 
/*
 * void TEE_ResetTransientObject(TEE_ObjectHandle object);
 * in       params[0].value.a = object
 */
#define TA_CRYPT_CMD_RESET_TRANSIENT_OBJECT     23
 
/*
 * TEE_Result TEE_PopulateTransientObject(TEE_ObjectHandle object,
 *              TEE_Attribute *attrs, uint32_t attrCount);
 * in       params[0].value.a = object
 * in       params[1].memref = attrs
 */
#define TA_CRYPT_CMD_POPULATE_TRANSIENT_OBJECT  24
 
/*
 * void TEE_CopyObjectAttributes(TEE_ObjectHandle destObject,
 *              TEE_ObjectHandle srcObject);
 * in       params[0].value.a = destObject
 * in       params[0].value.b = srcObject
 */
#define TA_CRYPT_CMD_COPY_OBJECT_ATTRIBUTES     25
 
/*
 * TEE_Result TEE_GenerateKey(TEE_ObjectHandle object, uint32_t keySize,
 *              TEE_Attribute *params, uint32_t paramCount);
 * in       params[0].value.a = object
 * in       params[0].value.b = keySize
 * in       params[1].memref = params
 */
#define TA_CRYPT_CMD_GENERATE_KEY               26
 
/*
 * TEE_Result TEE_AsymmetricEncrypt(TEE_OperationHandle operation,
 *              const TEE_Attribute *params, uint32_t paramCount,
 *              const void *srcData, size_t srcLen, void *destData,
 *              size_t *destLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = params
 * in       params[2].memref = srcData
 * out      params[3].memref = destData
 */
#define TA_CRYPT_CMD_ASYMMETRIC_ENCRYPT         27
 
/*
 * TEE_Result TEE_AsymmetricDecrypt(TEE_OperationHandle operation,
 *              const TEE_Attribute *params, uint32_t paramCount,
 *              const void *srcData, size_t srcLen, void *destData,
 *              size_t *destLen)
 * in       params[0].value.a = operation
 * in       params[1].memref = params
 * in       params[2].memref = srcData
 * out      params[3].memref = destData
 */
#define TA_CRYPT_CMD_ASYMMETRIC_DECRYPT         28
 
/*
 * TEE_Result TEE_AsymmetricSignDigest(TEE_OperationHandle operation,
 *              const TEE_Attribute *params, uint32_t paramCount,
 *              const void *digest, size_t digestLen, void *signature,
 *              size_t *signatureLen)
 * in       params[0].value.a = operation
 * in       params[1].memref = params
 * in       params[2].memref = digest
 * out      params[3].memref = signature
 */
#define TA_CRYPT_CMD_ASYMMETRIC_SIGN_DIGEST     29
 
/*
 * TEE_Result TEE_AsymmetricVerifyDigest(TEE_OperationHandle operation,
 *              const TEE_Attribute *params, uint32_t paramCount,
 *              const void *digest, size_t digestLen, const void *signature,
 *              size_t signatureLen)
 * in       params[0].value.a = operation
 * in       params[1].memref = params
 * in       params[2].memref = digest
 * in       params[3].memref = signature
 */
#define TA_CRYPT_CMD_ASYMMETRIC_VERIFY_DIGEST   30
 
/*
 * void TEE_DeriveKey(TEE_OperationHandle operation,
 *              const TEE_Attribute *params, uint32_t paramCount,
 *              TEE_ObjectHandle derivedKey)
 * in       params[0].value.a = operation
 * in       params[1].memref = params
 * in       params[0].value.b = derivedKey
 */
#define TA_CRYPT_CMD_DERIVE_KEY                 31
 
/*
 * void TEE_RandomNumberGenerate(void *randomBuffer, size_t randomBufferLen);
 * out      params[0].memref = randomBuffer
 */
#define TA_CRYPT_CMD_RANDOM_NUMBER_GENERATE     32
 
/*
 * TEE_Result TEE_AEInit(TEE_OperationHandle operation,
 *              const void* nonce, size_t nonceLen,
 *              uint32_t tagLen, uint32_t AADLen, uint32_t payloadLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = nonce
 * in       params[0].value.b = tagLen
 * in       params[2].value.a = AADLen
 * in       params[2].value.b = payloadLen
 */
#define TA_CRYPT_CMD_AE_INIT                    33
 
/*
 * void TEE_AEUpdateAAD(TEE_OperationHandle operation,
 *              void* AADdata, size_t AADdataLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = AADdata
 */
#define TA_CRYPT_CMD_AE_UPDATE_AAD              34
 
/*
 * TEE_Result TEE_AEUpdate(TEE_OperationHandle operation,
 *              const void* srcData, size_t srcLen,
 *              void* destData, size_t *destLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = srcData
 * out      params[2].memref = destData
 */
#define TA_CRYPT_CMD_AE_UPDATE                  35
 
/*
 * TEE_Result TEE_AEEncryptFinal(TEE_OperationHandle operation,
 *              const void* srcData, size_t srcLen,
 *              void* destData, size_t* destLen,
 *              void* tag, size_t* tagLen);
 * in       params[0].value[0].a = operation
 * in       params[1].memref = srcData
 * out      params[2].memref = destData
 * out      params[3].memref = tag
 */
#define TA_CRYPT_CMD_AE_ENCRYPT_FINAL           36
 
/*
 * TEE_Result TEE_AEDecryptFinal(TEE_OperationHandle operation,
 *              const void* srcData, size_t srcLen,
 *              void* destData, size_t *destLen,
 *              const void* tag, size_t tagLen);
 * in       params[0].value.a = operation
 * in       params[1].memref = srcData
 * out      params[2].memref = destData
 * in       params[3].memref = tag
 */
#define TA_CRYPT_CMD_AE_DECRYPT_FINAL           37
 
/*
 * TEE_Result TEE_GetObjectBufferAttribute(TEE_ObjectHandle object,
 *              uint32_t attributeID, void* buffer, size_t* size);
 * in      params[0].value.a = object
 * in      params[0].value.b = attributeID
 * out     params[1].memrefs = buffer
 */
#define TA_CRYPT_CMD_GET_OBJECT_BUFFER_ATTRIBUTE 38
 
/*
 * TEE_Result TEE_GetObjectValueAttribute(TEE_ObjectHandle object,
 *              uint32_t attributeID, void* buffer, size_t* size);
 * in      params[0].value.a = object
 * in      params[0].value.b = attributeID
 * out     params[1].value.a = value a
 * out     params[1].value.b = value b
 */
#define TA_CRYPT_CMD_GET_OBJECT_VALUE_ATTRIBUTE 39
 
/* To set or get a global value */
#define TA_CRYPT_CMD_SETGLOBAL     40
#define TA_CRYPT_CMD_GETGLOBAL     41
 
/* If mbedtls is compiled with MBEDTLS_SELF_TEST, run the self tests */
#define TA_CRYPT_CMD_MBEDTLS_SELF_TESTS        42
 
/*
 * in    params[0].memref = cert-chain
 * in    params[1].memref = trust-anchor-cert
 */
#define TA_CRYPT_CMD_MBEDTLS_CHECK_CERT        43
 
/*
 * in    params[0].memref = Certificate request in PKCS#10 format
 * out    params[1].memref = Signed certificate in X.509 format
 * out    params[2].memref = Certificate chain
 */
#define TA_CRYPT_CMD_MBEDTLS_SIGN_CERT        44
 
/*
 * system pTA is used for adding entropy to RNG pool */
#define TA_CRYPT_CMD_SEED_RNG_POOL 45
 
/*
 * Testing arithmetical interface.
 *
 * Coding of signed 32-bit values:
 * a int32_t with its bit pattern stored in a 32-bit value
 */
 
#define TA_CRYPT_ARITH_INVALID_HANDLE    0xffffffff
 
/*
 * in    params[0].value.a:    Number of bits
 * out    params[1].value.b:    Handle to bignum variable
 */
#define TA_CRYPT_CMD_ARITH_NEW_VAR        46
 
/*
 * in    params[0].value.a:    Number of bits
 * in    params[0].value.b:    Handle to bignum variable modulus
 * out    params[1].value.a:    Handle to FMM context
 */
#define TA_CRYPT_CMD_ARITH_NEW_FMM_CTX        47
 
/*
 * in    params[0].value.a:    Number of bits
 * out    params[1].value.a:    Handle to FMM variable
 */
#define TA_CRYPT_CMD_ARITH_NEW_FMM_VAR        48
 
/*
 * in    params[0].value.a:    Handle to bignum variable, FMM context, or
 *                FMM variable
 */
#define TA_CRYPT_CMD_ARITH_FREE_HANDLE        49
 
 
/*
 * in    params[0].value.a:    Handle to bignum variable
 * in    params[0].value.b:    S32 representing the sign of the value
 * in    params[1].memref:    octet string representing the value
 */
#define TA_CRYPT_CMD_ARITH_FROM_OCTET_STRING    50
 
/*
 * in    params[0].value.a:    Handle to bignum variable
 * in    params[0].value.b:    S32 representing the value
 */
#define TA_CRYPT_CMD_ARITH_FROM_S32        51
 
/*
 * in    params[0].value.a:    Handle to bignum variable
 * out    params[1].value.a:    S32 representing the sign of the value
 * out    params[2].memref:    octet string representing the value
 */
#define TA_CRYPT_CMD_ARITH_GET_VALUE        52
 
/*
 * in    params[0].value.a:    Handle to bignum variable
 * out    params[1].value.a:    S32 the value
 */
#define TA_CRYPT_CMD_ARITH_GET_VALUE_S32    53
 
/*
 * in    params[0].value.a:    Handle to bignum variable
 * in    params[0].value.b:    Bit number
 * out    params[1].value.a:    Bit value
 */
#define TA_CRYPT_CMD_ARITH_GET_BIT        54
 
/*
 * in    params[0].value.a:    Handle to bignum variable
 * out    params[1].value.a:    Bit count
 */
#define TA_CRYPT_CMD_ARITH_GET_BIT_COUNT    55
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    number of bits
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_SHIFT_RIGHT        56
 
/*
 * in    params[0].value.a:    handle op1
 * in    params[0].value.b:    handle op2
 * out    params[1].value.a:    result
 */
#define TA_CRYPT_CMD_ARITH_CMP            57
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    S32 shortVal
 * out    params[1].value.a:    result
 */
#define TA_CRYPT_CMD_ARITH_CMP_S32        58
 
/*
 * in    params[0].value.a:    handle a
 * in    params[0].value.b:    handle b
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_ADD            59
 
/*
 * in    params[0].value.a:    handle a
 * in    params[0].value.b:    handle b
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_SUB            60
 
/*
 * in    params[0].value.a:    handle a
 * in    params[0].value.b:    handle b
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_MUL            61
 
/*
 * in    params[0].value.a:    handle a
 * in    params[0].value.b:    handle result
 */
#define TA_CRYPT_CMD_ARITH_NEG            62
 
/*
 * in    params[0].value.a:    handle a
 * in    params[0].value.b:    handle result
 */
#define TA_CRYPT_CMD_ARITH_SQR            63
 
/*
 * in    params[0].value.a:    handle op1
 * in    params[0].value.b:    handle op2
 * in    params[1].value.a:    handle result Q
 * in    params[1].value.b:    handle result R
 */
#define TA_CRYPT_CMD_ARITH_DIV            64
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    handle n
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_MOD            65
 
/*
 * in    params[0].value.a:    handle op1
 * in    params[0].value.b:    handle op2
 * in    params[1].value.a:    handle n
 * in    params[1].value.b:    handle result
 */
#define TA_CRYPT_CMD_ARITH_ADDMOD        66
 
/*
 * in    params[0].value.a:    handle op1
 * in    params[0].value.b:    handle op2
 * in    params[1].value.a:    handle n
 * in    params[1].value.b:    handle result
 */
#define TA_CRYPT_CMD_ARITH_SUBMOD        67
 
/*
 * in    params[0].value.a:    handle op1
 * in    params[0].value.b:    handle op2
 * in    params[1].value.a:    handle n
 * in    params[1].value.b:    handle result
 */
#define TA_CRYPT_CMD_ARITH_MULMOD        68
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    handle n
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_SQRMOD        69
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    handle n
 * in    params[1].value.a:    handle result
 */
#define TA_CRYPT_CMD_ARITH_INVMOD        70
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    handle n
 * in    params[1].value.a:    bool result
 */
#define TA_CRYPT_CMD_ARITH_IS_RELATIVE_PRIME    71
 
/*
 * in    params[0].value.a:    handle op1
 * in    params[0].value.b:    handle op2
 * in    params[1].value.a:    handle result u
 * in    params[1].value.b:    handle result v
 * in    params[2].value.a:    handle result gcd
 */
#define TA_CRYPT_CMD_ARITH_COMPUTE_EGCD        72
 
/*
 * in    params[0].value.a:    handle op
 * in    params[0].value.b:    confidence level
 * out    params[1].value.a:    S32 result
 */
#define TA_CRYPT_CMD_ARITH_IS_PRIME        73
 
/*
 * in    params[0].value.a:    handle src
 * in    params[0].value.b:    handle n
 * in    params[1].value.a:    handle FMM context
 * in    params[1].value.b:    handle result FMM variable
 */
#define TA_CRYPT_CMD_ARITH_TO_FMM        74
 
/*
 * in    params[0].value.a:    handle FMM src
 * in    params[0].value.b:    handle bigint n
 * in    params[1].value.a:    handle FMM context
 * in    params[1].value.b:    handle result bigint
 */
#define TA_CRYPT_CMD_ARITH_FROM_FMM        75
 
/*
 * in    params[0].value.a:    handle FMM op1
 * in    params[0].value.b:    handle FMM op2
 * in    params[1].value.a:    handle bigint n
 * in    params[1].value.b:    handle FMM context
 * in    params[2].value.a:    handle FMM result
 */
#define TA_CRYPT_CMD_ARITH_COMPUTE_FMM        76
 
/*
 * system PTA is used for deriving device and TA unique keys. This function in
 * the "crypt" TA is testing the key derivation.
 */
#define TA_CRYPT_CMD_DERIVE_TA_UNIQUE_KEY    77
 
/*
 * system PTA is used for deriving device and TA unique keys. This function in
 * the "crypt" TA is testing the key derivation. This function tries to derive
 * keys by using shared memory buffers (something that shall fail).
 *
 * in  params[0].memref.buffer     Buffer for extra data
 * in  params[0].memref.size       Size of extra data
 * out params[1].memref.buffer     Buffer for the derived key
 * out params[1].memref.size       Size of the derived key
 */
#define TA_CRYPT_CMD_DERIVE_TA_UNIQUE_KEY_SHM    78
 
/*
 * in    params[0].value.a:    algorithm
 * in    params[0].value.b:    element
 * out    params[1].value.a:    TEE_IsAlgorithmSupported() return status
 */
#define TA_CRYPT_CMD_IS_ALGO_SUPPORTED        79
#endif /*TA_CRYPT_H */