1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
/*
* Copyright 2019 Contributors to the Parsec project.
* SPDX-License-Identifier: Apache-2.0
*/
syntax = "proto3";
package psa_algorithm;
message Algorithm {
message None {}
enum Hash {
HASH_NONE = 0; // This default variant should not be used.
MD2 = 1 [ deprecated = true ];
MD4 = 2 [ deprecated = true ];
MD5 = 3 [ deprecated = true ];
RIPEMD160 = 4;
SHA_1 = 5 [ deprecated = true ];
SHA_224 = 6;
SHA_256 = 7;
SHA_384 = 8;
SHA_512 = 9;
SHA_512_224 = 10;
SHA_512_256 = 11;
SHA3_224 = 12;
SHA3_256 = 13;
SHA3_384 = 14;
SHA3_512 = 15;
}
message Mac {
message FullLength {
message Hmac { Hash hash_alg = 1; }
message CbcMac {}
message Cmac {}
oneof variant {
Hmac hmac = 1;
CbcMac cbc_mac = 2;
Cmac cmac = 3;
}
}
message Truncated {
FullLength mac_alg = 1;
uint32 mac_length = 2;
}
oneof variant {
FullLength full_length = 1;
Truncated truncated = 2;
}
}
enum Cipher {
CIPHER_NONE = 0; // This default variant should not be used.
STREAM_CIPHER = 1;
CTR = 2;
CFB = 3;
OFB = 4;
XTS = 5;
ECB_NO_PADDING = 6;
CBC_NO_PADDING = 7;
CBC_PKCS7 = 8;
}
message Aead {
enum AeadWithDefaultLengthTag {
AEAD_WITH_DEFAULT_LENGTH_TAG_NONE =
0; // This default variant should not be used.
CCM = 1;
GCM = 2;
CHACHA20_POLY1305 = 3;
}
message AeadWithShortenedTag {
AeadWithDefaultLengthTag aead_alg = 1;
uint32 tag_length = 2;
}
oneof variant {
AeadWithDefaultLengthTag aead_with_default_length_tag = 1;
AeadWithShortenedTag aead_with_shortened_tag = 2;
}
}
message AsymmetricSignature {
message SignHash {
message Any {}
oneof variant {
Any any = 1;
Hash specific = 2;
}
}
message RsaPkcs1v15Sign { SignHash hash_alg = 1; }
message RsaPkcs1v15SignRaw {}
message RsaPss { SignHash hash_alg = 1; }
message Ecdsa { SignHash hash_alg = 1; }
message EcdsaAny {}
message DeterministicEcdsa { SignHash hash_alg = 1; }
oneof variant {
RsaPkcs1v15Sign rsa_pkcs1v15_sign = 1;
RsaPkcs1v15SignRaw rsa_pkcs1v15_sign_raw = 2;
RsaPss rsa_pss = 3;
Ecdsa ecdsa = 4;
EcdsaAny ecdsa_any = 5;
DeterministicEcdsa deterministic_ecdsa = 6;
}
}
message AsymmetricEncryption {
message RsaPkcs1v15Crypt {}
message RsaOaep { Hash hash_alg = 1; }
oneof variant {
RsaPkcs1v15Crypt rsa_pkcs1v15_crypt = 1;
RsaOaep rsa_oaep = 2;
}
}
message KeyAgreement {
enum Raw {
RAW_NONE = 0; // This default variant should not be used.
FFDH = 1;
ECDH = 2;
}
message WithKeyDerivation {
Raw ka_alg = 1;
KeyDerivation kdf_alg = 2;
}
oneof variant {
Raw raw = 1;
WithKeyDerivation with_key_derivation = 2;
}
}
message KeyDerivation {
message Hkdf { Hash hash_alg = 1; }
message Tls12Prf { Hash hash_alg = 1; }
message Tls12PskToMs { Hash hash_alg = 1; }
oneof variant {
Hkdf hkdf = 1;
Tls12Prf tls12_prf = 2;
Tls12PskToMs tls12_psk_to_ms = 3;
}
}
oneof variant {
None none = 1;
Hash hash = 2;
Mac mac = 3;
Cipher cipher = 4;
Aead aead = 5;
AsymmetricSignature asymmetric_signature = 6;
AsymmetricEncryption asymmetric_encryption = 7;
KeyAgreement key_agreement = 8;
KeyDerivation key_derivation = 9;
}
}
|