File: psa_algorithm.proto

package info (click to toggle)
rust-parsec-interface 0.29.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,268 kB
  • sloc: sh: 34; makefile: 4
file content (153 lines) | stat: -rw-r--r-- 3,554 bytes parent folder | download | duplicates (3)
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;
  }
}