blob: bdf2a67103415f7c9a8de82558bc90790602f008 [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;
Julian Hallc02fffb2020-11-23 18:22:06 +010018 KEY_TYPE_CHACHA20 = 0x2004;
julhal01734dbad2020-12-21 10:27:41 +000019 KEY_TYPE_RSA_PUBLIC_KEY = 0x4001;
Julian Hallc02fffb2020-11-23 18:22:06 +010020 KEY_TYPE_RSA_KEY_PAIR = 0x7001;
Julian Hallc02fffb2020-11-23 18:22:06 +010021}
22
23/* ECC curves for use with ECC Key types */
24enum EccCurve {
Balint Dobszay3c52ce62021-05-10 16:27:18 +020025 ECC_FAMILY_NONE = 0x00;
26 ECC_FAMILY_SECP_K1 = 0x17;
27 ECC_FAMILY_SECP_R1 = 0x12;
28 ECC_FAMILY_SECP_R2 = 0x1b;
29 ECC_FAMILY_SECT_K1 = 0x27;
30 ECC_FAMILY_SECT_R1 = 0x22;
31 ECC_FAMILY_SECT_R2 = 0x2b;
32 ECC_FAMILY_BRAINPOOL_P_R1 = 0x30;
33 ECC_FAMILY_MONTGOMERY = 0x41;
Julian Hallc02fffb2020-11-23 18:22:06 +010034}
35
36/* Diffie-Hellman groups for use with DH key types */
37enum DhGroup {
Balint Dobszay3c52ce62021-05-10 16:27:18 +020038 DH_FAMILY_NONE = 0x00;
39 DH_FAMILY_RFC7919 = 0x03;
Julian Hallc02fffb2020-11-23 18:22:06 +010040}
41
42/* Crypto algorithms */
43enum Alg {
44 ALG_NONE = 0x00000000;
Balint Dobszay3c52ce62021-05-10 16:27:18 +020045 ALG_MD5 = 0x02000003;
46 ALG_RIPEMD160 = 0x02000004;
47 ALG_SHA_1 = 0x02000005;
48 ALG_SHA_224 = 0x02000008;
49 ALG_SHA_256 = 0x02000009;
50 ALG_SHA_384 = 0x0200000a;
51 ALG_SHA_512 = 0x0200000b;
52 ALG_SHA_512_224 = 0x0200000c;
53 ALG_SHA_512_256 = 0x0200000d;
54 ALG_SHA3_224 = 0x02000010;
55 ALG_SHA3_256 = 0x02000011;
56 ALG_SHA3_384 = 0x02000012;
57 ALG_SHA3_512 = 0x02000013;
58 ALG_CBC_MAC = 0x03c00100;
59 ALG_CMAC = 0x03c00200;
60 ALG_STREAM_CIPHER = 0x04800100;
61 ALG_CTR = 0x04c01000;
62 ALG_CFB = 0x04c01100;
63 ALG_OFB = 0x04c01200;
64 ALG_XTS = 0x0440ff00;
65 ALG_CBC_NO_PADDING = 0x04404000;
66 ALG_CBC_PKCS7 = 0x04404100;
67 ALG_CCM = 0x05500100;
68 ALG_GCM = 0x05500200;
69 ALG_CHACHA20_POLY1305 = 0x05100500;
70 ALG_RSA_PKCS1V15_CRYPT = 0x07000200;
71 ALG_FFDH = 0x09010000;
72 ALG_ECDH = 0x09020000;
Julian Hallc02fffb2020-11-23 18:22:06 +010073}
74
75/* Key lifetime */
76enum KeyLifetime {
77 KEY_LIFETIME_VOLATILE = 0x00000000;
78 KEY_LIFETIME_PERSISTENT = 0x00000001;
79}
80
81/* Key usage constraints */
82enum KeyUsage {
83 KEY_USAGE_NONE = 0x00000000;
84 KEY_USAGE_EXPORT = 0x00000001;
85 KEY_USAGE_COPY = 0x00000002;
86 KEY_USAGE_ENCRYPT = 0x00000100;
87 KEY_USAGE_DECRYPT = 0x00000200;
Balint Dobszay3c52ce62021-05-10 16:27:18 +020088 KEY_USAGE_SIGN_HASH = 0x00001000;
89 KEY_USAGE_VERIFY_HASH = 0x00002000;
90 KEY_USAGE_DERIVE = 0x00004000;
Julian Hallc02fffb2020-11-23 18:22:06 +010091}
92
93/* Key policy to define what key can be used for */
94message KeyPolicy {
95 uint32 usage = 1;
96 uint32 alg = 2;
97}
98
99/* Key attributes object */
100message KeyAttributes {
101 uint32 type = 1;
102 uint32 key_bits = 2;
103 uint32 lifetime = 3;
104 uint32 id = 4;
105 KeyPolicy policy = 5;
Julian Hallc6350942021-07-21 12:08:09 +0100106}