blob: 7e504f6439d74f84338a6fd90d50abfce21b8f55 [file] [log] [blame]
Julian Hallc02fffb2020-11-23 18:22:06 +01001/*
2 * Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
3 * SPDX-License-Identifier: BSD-3-Clause
4 */
5syntax = "proto3";
6
7package ts_crypto;
8
9/* Key types */
10enum KeyType {
11 option allow_alias = true;
12
13 KEY_TYPE_NONE = 0x0000;
14 KEY_TYPE_RAW_DATA = 0x1001;
15 KEY_TYPE_HMAC = 0x1100;
16 KEY_TYPE_DERIVE = 0x1200;
17 KEY_TYPE_AES = 0x2400;
18 KEY_TYPE_DES = 0x2301;
19 KEY_TYPE_CAMELLIA = 0x2403;
20 KEY_TYPE_ARC4 = 0x2002;
21 KEY_TYPE_CHACHA20 = 0x2004;
22 KEY_TYPE_PUBLIC_KEY = 0x4001;
23 KEY_TYPE_RSA_KEY_PAIR = 0x7001;
24 KEY_TYPE_ECC_PUBLIC_KEY_BASE = 0x4100;
25 KEY_TYPE_ECC_KEY_PAIR_BASE = 0x7100;
26 KEY_TYPE_ECC_CURVE_MASK = 0x00ff;
27 KEY_TYPE_DH_PUBLIC_KEY_BASE = 0x4200;
28 KEY_TYPE_DH_KEY_PAIR_BASE = 0x7200;
29 KEY_TYPE_DH_GROUP_MASK = 0x00ff;
30}
31
32/* ECC curves for use with ECC Key types */
33enum EccCurve {
34 ECC_CURVE_NONE = 0x00;
35 ECC_CURVE_SECP_K1 = 0x17;
36 ECC_CURVE_SECP_R1 = 0x12;
37 ECC_CURVE_SECP_R2 = 0x1b;
38 ECC_CURVE_SECT_K1 = 0x27;
39 ECC_CURVE_SECT_R1 = 0x22;
40 ECC_CURVE_SECT_R2 = 0x2b;
41 ECC_CURVE_BRAINPOOL_P_R1 = 0x30;
42 ECC_CURVE_MONTGOMERY = 0x41;
43}
44
45/* Diffie-Hellman groups for use with DH key types */
46enum DhGroup {
47 DH_GROUP_NONE = 0x00;
48 DH_GROUP_RFC7919 = 0x03;
49}
50
51/* Crypto algorithms */
52enum Alg {
53 ALG_NONE = 0x00000000;
54 ALG_HASH_MASK = 0x000000ff;
55 ALG_MD2 = 0x01000001;
56 ALG_MD4 = 0x01000002;
57 ALG_MD5 = 0x01000003;
58 ALG_RIPEMD160 = 0x01000004;
59 ALG_SHA_1 = 0x01000005;
60 ALG_SHA_224 = 0x01000008;
61 ALG_SHA_256 = 0x01000009;
62 ALG_SHA_384 = 0x0100000a;
63 ALG_SHA_512 = 0x0100000b;
64 ALG_SHA_512_224 = 0x0100000c;
65 ALG_SHA_512_256 = 0x0100000d;
66 ALG_SHA3_224 = 0x01000010;
67 ALG_SHA3_256 = 0x01000011;
68 ALG_SHA3_384 = 0x01000012;
69 ALG_SHA3_512 = 0x01000013;
70 ALG_CBC_MAC = 0x02c00001;
71 ALG_CMAC = 0x02c00002;
72 ALG_ARC4 = 0x04800001;
73 ALG_CHACHA20 = 0x04800005;
74 ALG_CTR = 0x04c00001;
75 ALG_CFB = 0x04c00002;
76 ALG_OFB = 0x04c00003;
77 ALG_XTS = 0x044000ff;
78 ALG_CBC_NO_PADDING = 0x04600100;
79 ALG_CBC_PKCS7 = 0x04600101;
80 ALG_AEAD_FROM_BLOCK_FLAG = 0x00400000;
81 ALG_CCM = 0x06401001;
82 ALG_GCM = 0x06401002;
83 ALG_CHACHA20_POLY1305 = 0x06001005;
84 ALG_RSA_PKCS1V15_SIGN_BASE = 0x10020000;
85 ALG_RSA_PSS_BASE = 0x10030000;
86 ALG_ECDSA_BASE = 0x10060000;
87 ALG_DETERMINISTIC_ECDSA_BASE = 0x10070000;
88 ALG_RSA_PKCS1V15_CRYPT = 0x12020000;
89 ALG_RSA_OAEP_BASE = 0x12030000;
90 ALG_HKDF_BASE = 0x20000100;
91 ALG_TLS12_PRF_BASE = 0x20000200;
92 ALG_TLS12_PSK_TO_MS_BASE = 0x20000300;
93 ALG_KEY_DERIVATION_MASK = 0x0803ffff;
94 ALG_KEY_AGREEMENT_MASK = 0x10fc0000;
95 ALG_FFDH = 0x30100000;
96 ALG_ECDH = 0x30200000;
97}
98
99/* Key lifetime */
100enum KeyLifetime {
101 KEY_LIFETIME_VOLATILE = 0x00000000;
102 KEY_LIFETIME_PERSISTENT = 0x00000001;
103}
104
105/* Key usage constraints */
106enum KeyUsage {
107 KEY_USAGE_NONE = 0x00000000;
108 KEY_USAGE_EXPORT = 0x00000001;
109 KEY_USAGE_COPY = 0x00000002;
110 KEY_USAGE_ENCRYPT = 0x00000100;
111 KEY_USAGE_DECRYPT = 0x00000200;
112 KEY_USAGE_SIGN_HASH = 0x00000400;
113 KEY_USAGE_VERIFY_HASH = 0x00000800;
114 KEY_USAGE_DERIVE = 0x00001000;
115}
116
117/* Key policy to define what key can be used for */
118message KeyPolicy {
119 uint32 usage = 1;
120 uint32 alg = 2;
121}
122
123/* Key attributes object */
124message KeyAttributes {
125 uint32 type = 1;
126 uint32 key_bits = 2;
127 uint32 lifetime = 3;
128 uint32 id = 4;
129 KeyPolicy policy = 5;
130}