blob: 2415d5cda122ac374b70599b54af247f67cdeff7 [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 * SPDX-License-Identifier: BSD-3-Clause
4 */
5syntax = "proto3";
6
7package ts_crypto;
8
9/* Key types */
10enum KeyType {
Julian Hallc02fffb2020-11-23 18:22:06 +010011 KEY_TYPE_NONE = 0x0000;
12 KEY_TYPE_RAW_DATA = 0x1001;
13 KEY_TYPE_HMAC = 0x1100;
14 KEY_TYPE_DERIVE = 0x1200;
15 KEY_TYPE_AES = 0x2400;
16 KEY_TYPE_DES = 0x2301;
17 KEY_TYPE_CAMELLIA = 0x2403;
18 KEY_TYPE_ARC4 = 0x2002;
19 KEY_TYPE_CHACHA20 = 0x2004;
julhal01734dbad2020-12-21 10:27:41 +000020 KEY_TYPE_RSA_PUBLIC_KEY = 0x4001;
Julian Hallc02fffb2020-11-23 18:22:06 +010021 KEY_TYPE_RSA_KEY_PAIR = 0x7001;
Julian Hallc02fffb2020-11-23 18:22:06 +010022}
23
24/* ECC curves for use with ECC Key types */
25enum EccCurve {
Balint Dobszay3c52ce62021-05-10 16:27:18 +020026 ECC_FAMILY_NONE = 0x00;
27 ECC_FAMILY_SECP_K1 = 0x17;
28 ECC_FAMILY_SECP_R1 = 0x12;
29 ECC_FAMILY_SECP_R2 = 0x1b;
30 ECC_FAMILY_SECT_K1 = 0x27;
31 ECC_FAMILY_SECT_R1 = 0x22;
32 ECC_FAMILY_SECT_R2 = 0x2b;
33 ECC_FAMILY_BRAINPOOL_P_R1 = 0x30;
34 ECC_FAMILY_MONTGOMERY = 0x41;
Julian Hallc02fffb2020-11-23 18:22:06 +010035}
36
37/* Diffie-Hellman groups for use with DH key types */
38enum DhGroup {
Balint Dobszay3c52ce62021-05-10 16:27:18 +020039 DH_FAMILY_NONE = 0x00;
40 DH_FAMILY_RFC7919 = 0x03;
Julian Hallc02fffb2020-11-23 18:22:06 +010041}
42
43/* Crypto algorithms */
44enum Alg {
45 ALG_NONE = 0x00000000;
Balint Dobszay3c52ce62021-05-10 16:27:18 +020046 ALG_MD2 = 0x02000001;
47 ALG_MD4 = 0x02000002;
48 ALG_MD5 = 0x02000003;
49 ALG_RIPEMD160 = 0x02000004;
50 ALG_SHA_1 = 0x02000005;
51 ALG_SHA_224 = 0x02000008;
52 ALG_SHA_256 = 0x02000009;
53 ALG_SHA_384 = 0x0200000a;
54 ALG_SHA_512 = 0x0200000b;
55 ALG_SHA_512_224 = 0x0200000c;
56 ALG_SHA_512_256 = 0x0200000d;
57 ALG_SHA3_224 = 0x02000010;
58 ALG_SHA3_256 = 0x02000011;
59 ALG_SHA3_384 = 0x02000012;
60 ALG_SHA3_512 = 0x02000013;
61 ALG_CBC_MAC = 0x03c00100;
62 ALG_CMAC = 0x03c00200;
63 ALG_STREAM_CIPHER = 0x04800100;
64 ALG_CTR = 0x04c01000;
65 ALG_CFB = 0x04c01100;
66 ALG_OFB = 0x04c01200;
67 ALG_XTS = 0x0440ff00;
68 ALG_CBC_NO_PADDING = 0x04404000;
69 ALG_CBC_PKCS7 = 0x04404100;
70 ALG_CCM = 0x05500100;
71 ALG_GCM = 0x05500200;
72 ALG_CHACHA20_POLY1305 = 0x05100500;
73 ALG_RSA_PKCS1V15_CRYPT = 0x07000200;
74 ALG_FFDH = 0x09010000;
75 ALG_ECDH = 0x09020000;
Julian Hallc02fffb2020-11-23 18:22:06 +010076}
77
78/* Key lifetime */
79enum KeyLifetime {
80 KEY_LIFETIME_VOLATILE = 0x00000000;
81 KEY_LIFETIME_PERSISTENT = 0x00000001;
82}
83
84/* Key usage constraints */
85enum KeyUsage {
86 KEY_USAGE_NONE = 0x00000000;
87 KEY_USAGE_EXPORT = 0x00000001;
88 KEY_USAGE_COPY = 0x00000002;
89 KEY_USAGE_ENCRYPT = 0x00000100;
90 KEY_USAGE_DECRYPT = 0x00000200;
Balint Dobszay3c52ce62021-05-10 16:27:18 +020091 KEY_USAGE_SIGN_HASH = 0x00001000;
92 KEY_USAGE_VERIFY_HASH = 0x00002000;
93 KEY_USAGE_DERIVE = 0x00004000;
Julian Hallc02fffb2020-11-23 18:22:06 +010094}
95
96/* Key policy to define what key can be used for */
97message KeyPolicy {
98 uint32 usage = 1;
99 uint32 alg = 2;
100}
101
102/* Key attributes object */
103message KeyAttributes {
104 uint32 type = 1;
105 uint32 key_bits = 2;
106 uint32 lifetime = 3;
107 uint32 id = 4;
108 KeyPolicy policy = 5;
109}