blob: 7ef590597680544b58b7661e2d4030690fc4aa04 [file] [log] [blame]
Julian Hallc02fffb2020-11-23 18:22:06 +01001/*
julhal01734dbad2020-12-21 10:27:41 +00002 * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved.
Julian Hallc02fffb2020-11-23 18:22:06 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef TS_CRYPTO_OPCODES_H
8#define TS_CRYPTO_OPCODES_H
9
10/* C/C++ definition of crypto service opcodes
11 */
Julian Hall0ed3d452021-07-15 14:31:07 +010012
13/* Base operations */
Julian Hallc02fffb2020-11-23 18:22:06 +010014#define TS_CRYPTO_OPCODE_NOP (0x0000)
Julian Hall0ed3d452021-07-15 14:31:07 +010015#define TS_CRYPTO_OPCODE_BASE (0x0100)
Julian Hallf5728962021-06-24 09:40:23 +010016#define TS_CRYPTO_OPCODE_GENERATE_KEY (TS_CRYPTO_OPCODE_BASE + 1)
17#define TS_CRYPTO_OPCODE_DESTROY_KEY (TS_CRYPTO_OPCODE_BASE + 2)
18#define TS_CRYPTO_OPCODE_EXPORT_KEY (TS_CRYPTO_OPCODE_BASE + 5)
19#define TS_CRYPTO_OPCODE_EXPORT_PUBLIC_KEY (TS_CRYPTO_OPCODE_BASE + 6)
20#define TS_CRYPTO_OPCODE_IMPORT_KEY (TS_CRYPTO_OPCODE_BASE + 7)
21#define TS_CRYPTO_OPCODE_SIGN_HASH (TS_CRYPTO_OPCODE_BASE + 8)
22#define TS_CRYPTO_OPCODE_VERIFY_HASH (TS_CRYPTO_OPCODE_BASE + 9)
23#define TS_CRYPTO_OPCODE_ASYMMETRIC_DECRYPT (TS_CRYPTO_OPCODE_BASE + 10)
24#define TS_CRYPTO_OPCODE_ASYMMETRIC_ENCRYPT (TS_CRYPTO_OPCODE_BASE + 11)
25#define TS_CRYPTO_OPCODE_GENERATE_RANDOM (TS_CRYPTO_OPCODE_BASE + 12)
Julian Hall0ed3d452021-07-15 14:31:07 +010026#define TS_CRYPTO_OPCODE_COPY_KEY (TS_CRYPTO_OPCODE_BASE + 13)
27#define TS_CRYPTO_OPCODE_PURGE_KEY (TS_CRYPTO_OPCODE_BASE + 14)
28#define TS_CRYPTO_OPCODE_GET_KEY_ATTRIBUTES (TS_CRYPTO_OPCODE_BASE + 15)
29
30/* Hash operations */
31#define TS_CRYPTO_OPCODE_HASH_BASE (0x0200)
32#define TS_CRYPTO_OPCODE_HASH_SETUP (TS_CRYPTO_OPCODE_HASH_BASE + 1)
33#define TS_CRYPTO_OPCODE_HASH_UPDATE (TS_CRYPTO_OPCODE_HASH_BASE + 2)
34#define TS_CRYPTO_OPCODE_HASH_FINISH (TS_CRYPTO_OPCODE_HASH_BASE + 3)
35#define TS_CRYPTO_OPCODE_HASH_ABORT (TS_CRYPTO_OPCODE_HASH_BASE + 4)
36#define TS_CRYPTO_OPCODE_HASH_VERIFY (TS_CRYPTO_OPCODE_HASH_BASE + 5)
37#define TS_CRYPTO_OPCODE_HASH_CLONE (TS_CRYPTO_OPCODE_HASH_BASE + 6)
Julian Hallc02fffb2020-11-23 18:22:06 +010038
Julian Halle7bccbe2021-07-16 09:50:34 +010039/* Cipher operations */
40#define TS_CRYPTO_OPCODE_CIPHER_BASE (0x0300)
41#define TS_CRYPTO_OPCODE_CIPHER_ENCRYPT_SETUP (TS_CRYPTO_OPCODE_CIPHER_BASE + 1)
42#define TS_CRYPTO_OPCODE_CIPHER_DECRYPT_SETUP (TS_CRYPTO_OPCODE_CIPHER_BASE + 2)
43#define TS_CRYPTO_OPCODE_CIPHER_GENERATE_IV (TS_CRYPTO_OPCODE_CIPHER_BASE + 3)
44#define TS_CRYPTO_OPCODE_CIPHER_SET_IV (TS_CRYPTO_OPCODE_CIPHER_BASE + 4)
45#define TS_CRYPTO_OPCODE_CIPHER_UPDATE (TS_CRYPTO_OPCODE_CIPHER_BASE + 5)
46#define TS_CRYPTO_OPCODE_CIPHER_FINISH (TS_CRYPTO_OPCODE_CIPHER_BASE + 6)
47#define TS_CRYPTO_OPCODE_CIPHER_ABORT (TS_CRYPTO_OPCODE_CIPHER_BASE + 7)
48
Julian Hallfe487b72021-07-19 10:29:59 +010049/* Key derivation operations */
50#define TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE (0x0400)
51#define TS_CRYPTO_OPCODE_KEY_DERIVATION_SETUP (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 1)
52#define TS_CRYPTO_OPCODE_KEY_DERIVATION_GET_CAPACITY (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 2)
53#define TS_CRYPTO_OPCODE_KEY_DERIVATION_SET_CAPACITY (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 3)
54#define TS_CRYPTO_OPCODE_KEY_DERIVATION_INPUT_BYTES (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 4)
55#define TS_CRYPTO_OPCODE_KEY_DERIVATION_INPUT_KEY (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 5)
56#define TS_CRYPTO_OPCODE_KEY_DERIVATION_OUTPUT_BYTES (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 6)
57#define TS_CRYPTO_OPCODE_KEY_DERIVATION_OUTPUT_KEY (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 7)
58#define TS_CRYPTO_OPCODE_KEY_DERIVATION_ABORT (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 8)
59#define TS_CRYPTO_OPCODE_KEY_DERIVATION_KEY_AGREEMENT (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 9)
60#define TS_CRYPTO_OPCODE_KEY_DERIVATION_RAW_KEY_AGREEMENT (TS_CRYPTO_OPCODE_KEY_DERIVATION_BASE + 10)
61
Julian Hallc02fffb2020-11-23 18:22:06 +010062#endif /* TS_CRYPTO_OPCODES_H */