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