lib/reticulum/src/conformance/identity.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

  1 //! Generated by `lib/reticulum/build/generate` with `rns==1.5.0`.
  2 //! The upstream source is Reticulum commit `e32d4df754a7b87b1bf1bb0d08675d12ff505ae6`.
  3 //! Hand edits are lost.
  4 //!
  5 //! The vectors in this file record an identity's keys, a signed message, an
  6 //! encrypted plaintext, and what the reference produced from them, and they
  7 //! come from Reticulum@1.5.0 RNS/Identity.py:730,737,804,908.
  8 //! The random bytes behind each ephemeral key come from
  9 //! RNS/Cryptography/X25519.py:127.
 10 //! The random bytes behind each signing key come from
 11 //! RNS/Cryptography/Ed25519.py:41.
 12 //! The initialization vectors of the encryptions come from
 13 //! RNS/Cryptography/Token.py:89.
 14 
 15 pub const Vector = struct {
 16     name: []const u8,
 17     key_entropy: []const u8,
 18     private_key: []const u8,
 19     public_key: []const u8,
 20     identity_hash: []const u8,
 21     message: []const u8,
 22     signature: []const u8,
 23     validate_verdict: bool,
 24     plaintext: []const u8,
 25     ephemeral_key_entropy: []const u8,
 26     ephemeral_private_key: []const u8,
 27     iv: []const u8,
 28     ciphertext: []const u8,
 29     ratchet_key_entropy: []const u8,
 30     ratchet_private_key: []const u8,
 31     ratchet_public_key: []const u8,
 32     uses_ratchet: bool,
 33     decrypt_verdict: bool,
 34 };
 35 
 36 pub const vectors: []const Vector = &.{
 37     .{
 38         .name = "identity-key",
 39         .key_entropy = &.{
 40             0x66, 0x16, 0x9c, 0x1b, 0xdd, 0xbf, 0x8d, 0x3a, 0x7d, 0xd1, 0xff, 0x37,
 41             0xa6, 0x43, 0x1a, 0x87, 0x6c, 0x0d, 0xe8, 0x32, 0x44, 0xb4, 0xe2, 0x28,
 42             0x2d, 0xd1, 0x81, 0xf2, 0x6e, 0xc6, 0x94, 0xd8, 0x8f, 0xf2, 0x50, 0x39,
 43             0x5f, 0x11, 0xae, 0x92, 0x7c, 0x5c, 0x49, 0x73, 0xf5, 0x54, 0x27, 0x0c,
 44             0x10, 0x20, 0x2d, 0xb1, 0xe2, 0xc8, 0xa5, 0x9a, 0xd9, 0x68, 0x68, 0xf3,
 45             0xf9, 0x67, 0x32, 0xde,
 46         },
 47         .private_key = &.{
 48             0x60, 0x16, 0x9c, 0x1b, 0xdd, 0xbf, 0x8d, 0x3a, 0x7d, 0xd1, 0xff, 0x37,
 49             0xa6, 0x43, 0x1a, 0x87, 0x6c, 0x0d, 0xe8, 0x32, 0x44, 0xb4, 0xe2, 0x28,
 50             0x2d, 0xd1, 0x81, 0xf2, 0x6e, 0xc6, 0x94, 0x58, 0x8f, 0xf2, 0x50, 0x39,
 51             0x5f, 0x11, 0xae, 0x92, 0x7c, 0x5c, 0x49, 0x73, 0xf5, 0x54, 0x27, 0x0c,
 52             0x10, 0x20, 0x2d, 0xb1, 0xe2, 0xc8, 0xa5, 0x9a, 0xd9, 0x68, 0x68, 0xf3,
 53             0xf9, 0x67, 0x32, 0xde,
 54         },
 55         .public_key = &.{
 56             0xed, 0x16, 0x4b, 0x07, 0x26, 0x39, 0x17, 0xd8, 0xbb, 0xe3, 0x6d, 0xca,
 57             0xbd, 0x63, 0xff, 0x76, 0x93, 0x3f, 0x0d, 0xf3, 0xfa, 0xc2, 0x2d, 0x2d,
 58             0x8f, 0x33, 0x43, 0xdd, 0xa3, 0x70, 0xfc, 0x7d, 0x56, 0xc5, 0x1d, 0x60,
 59             0x9b, 0x6b, 0x71, 0x08, 0x75, 0xb1, 0xd3, 0xad, 0x40, 0x17, 0xe4, 0xb7,
 60             0xf9, 0x34, 0xc3, 0x74, 0xc2, 0xb0, 0x8d, 0x20, 0x96, 0x57, 0x12, 0x0c,
 61             0xe4, 0x03, 0xad, 0x37,
 62         },
 63         .identity_hash = &.{
 64             0x4f, 0x87, 0xff, 0xe7, 0x37, 0x29, 0x1e, 0x22, 0x57, 0xdb, 0x47, 0xda,
 65             0x3f, 0xb1, 0x79, 0xd3,
 66         },
 67         .message = &.{
 68             0xa0, 0xc5, 0xea, 0x0f, 0x34, 0x59, 0x7e, 0xa3, 0xc8, 0xed, 0x12, 0x37,
 69             0x5c, 0x81, 0xa6, 0xcb, 0xf0, 0x15, 0x3a, 0x5f, 0x84, 0xa9, 0xce, 0xf3,
 70             0x18, 0x3d, 0x62, 0x87, 0xac, 0xd1, 0xf6,
 71         },
 72         .signature = &.{
 73             0xaa, 0xdf, 0x98, 0xb5, 0xe5, 0xca, 0xa9, 0xf7, 0x49, 0xc8, 0x30, 0xaa,
 74             0x27, 0x0b, 0xd6, 0x3a, 0x50, 0x49, 0xe3, 0x71, 0x04, 0x4c, 0xeb, 0xa5,
 75             0xc5, 0x85, 0x69, 0x99, 0x7a, 0x27, 0xb0, 0x06, 0x23, 0xdf, 0xa2, 0xbb,
 76             0x02, 0xe3, 0x59, 0x92, 0x10, 0xa3, 0x6f, 0xb3, 0x2b, 0x3b, 0x6b, 0x54,
 77             0x27, 0x5b, 0x0b, 0x3f, 0x29, 0x24, 0xaa, 0xe2, 0xdc, 0xdd, 0x82, 0x11,
 78             0xce, 0x77, 0xfa, 0x0c,
 79         },
 80         .validate_verdict = true,
 81         .plaintext = &.{
 82             0xa9, 0xce, 0xf3, 0x18, 0x3d, 0x62, 0x87, 0xac, 0xd1, 0xf6, 0x1b, 0x40,
 83             0x65, 0x8a, 0xaf, 0xd4, 0xf9, 0x1e, 0x43, 0x68, 0x8d, 0xb2, 0xd7,
 84         },
 85         .ephemeral_key_entropy = &.{
 86             0x21, 0x70, 0xd6, 0xca, 0x93, 0x4e, 0xde, 0xb2, 0xd5, 0x34, 0x29, 0xfa,
 87             0xeb, 0xa7, 0x3d, 0xb2, 0x3b, 0x41, 0xdf, 0x61, 0x0b, 0x22, 0x44, 0xe9,
 88             0x05, 0x5c, 0xae, 0xf0, 0x10, 0x85, 0xe9, 0xf1,
 89         },
 90         .ephemeral_private_key = &.{
 91             0x20, 0x70, 0xd6, 0xca, 0x93, 0x4e, 0xde, 0xb2, 0xd5, 0x34, 0x29, 0xfa,
 92             0xeb, 0xa7, 0x3d, 0xb2, 0x3b, 0x41, 0xdf, 0x61, 0x0b, 0x22, 0x44, 0xe9,
 93             0x05, 0x5c, 0xae, 0xf0, 0x10, 0x85, 0xe9, 0x71,
 94         },
 95         .iv = &.{
 96             0x31, 0x2d, 0x05, 0xf6, 0x7c, 0xc7, 0x09, 0xf5, 0x41, 0x5e, 0x0b, 0xf3,
 97             0xa5, 0x0b, 0x0a, 0x03,
 98         },
 99         .ciphertext = &.{
100             0x39, 0x14, 0x34, 0xe0, 0x6b, 0xc2, 0x29, 0xe4, 0xfb, 0x54, 0x87, 0x7b,
101             0x71, 0x82, 0xd7, 0xba, 0x7a, 0xc9, 0x02, 0xa3, 0x01, 0x75, 0xc6, 0xfc,
102             0x5f, 0x3f, 0xc4, 0x20, 0xab, 0x64, 0xd5, 0x65, 0x31, 0x2d, 0x05, 0xf6,
103             0x7c, 0xc7, 0x09, 0xf5, 0x41, 0x5e, 0x0b, 0xf3, 0xa5, 0x0b, 0x0a, 0x03,
104             0xae, 0x15, 0x94, 0x75, 0x35, 0x9b, 0xd5, 0x4c, 0xb7, 0x65, 0x7f, 0xd6,
105             0x11, 0xf9, 0x7a, 0xf3, 0x25, 0xe9, 0x8e, 0x3c, 0x59, 0x69, 0x74, 0x7e,
106             0xcd, 0x62, 0x62, 0x95, 0x82, 0x12, 0xbc, 0xb0, 0xf2, 0x6a, 0xdd, 0x0a,
107             0x32, 0xec, 0xc6, 0x03, 0x2f, 0xe9, 0x73, 0x51, 0x12, 0x8d, 0x7b, 0x79,
108             0x4e, 0x2e, 0xaa, 0x27, 0x2b, 0x14, 0xcf, 0x8d, 0xc0, 0xce, 0x5f, 0x99,
109             0xb3, 0xe8, 0xa3, 0x40,
110         },
111         .ratchet_key_entropy = &.{},
112         .ratchet_private_key = &.{},
113         .ratchet_public_key = &.{},
114         .uses_ratchet = false,
115         .decrypt_verdict = true,
116     },
117     .{
118         .name = "ratchet",
119         .key_entropy = &.{
120             0xf6, 0xdc, 0x39, 0x95, 0x92, 0x89, 0xd6, 0x85, 0xec, 0x9a, 0x68, 0x31,
121             0xc2, 0x0b, 0x4f, 0xc6, 0x97, 0xbe, 0xe4, 0xdf, 0x87, 0xe9, 0xa3, 0x84,
122             0x43, 0x9c, 0xa4, 0xbd, 0xf8, 0xc7, 0xbd, 0x94, 0x4f, 0x33, 0xc5, 0xd6,
123             0x5c, 0x37, 0x16, 0x79, 0xc1, 0x3d, 0xe2, 0x9f, 0x09, 0xa4, 0x08, 0x89,
124             0x3b, 0x20, 0xf0, 0xbd, 0x2d, 0x38, 0x80, 0xcd, 0xdf, 0xae, 0x3b, 0xaf,
125             0xe8, 0x2d, 0xe0, 0xcc,
126         },
127         .private_key = &.{
128             0xf0, 0xdc, 0x39, 0x95, 0x92, 0x89, 0xd6, 0x85, 0xec, 0x9a, 0x68, 0x31,
129             0xc2, 0x0b, 0x4f, 0xc6, 0x97, 0xbe, 0xe4, 0xdf, 0x87, 0xe9, 0xa3, 0x84,
130             0x43, 0x9c, 0xa4, 0xbd, 0xf8, 0xc7, 0xbd, 0x54, 0x4f, 0x33, 0xc5, 0xd6,
131             0x5c, 0x37, 0x16, 0x79, 0xc1, 0x3d, 0xe2, 0x9f, 0x09, 0xa4, 0x08, 0x89,
132             0x3b, 0x20, 0xf0, 0xbd, 0x2d, 0x38, 0x80, 0xcd, 0xdf, 0xae, 0x3b, 0xaf,
133             0xe8, 0x2d, 0xe0, 0xcc,
134         },
135         .public_key = &.{
136             0xd7, 0xbf, 0x6b, 0x83, 0x79, 0xcc, 0x9a, 0x2d, 0x68, 0x36, 0x64, 0x20,
137             0x47, 0xae, 0xcf, 0x87, 0xb3, 0xba, 0x4b, 0x99, 0x27, 0xb3, 0xf3, 0xfc,
138             0x0c, 0x5c, 0xec, 0x66, 0xc7, 0x17, 0xf4, 0x07, 0x5b, 0xea, 0x1c, 0x0e,
139             0xbf, 0x85, 0x3e, 0x26, 0x8f, 0xe2, 0x79, 0x56, 0x9b, 0x65, 0xf8, 0x8e,
140             0xf3, 0xdc, 0x91, 0xf2, 0xaf, 0x6c, 0xb2, 0x7e, 0x01, 0x6d, 0xb6, 0x98,
141             0xad, 0x99, 0x91, 0x02,
142         },
143         .identity_hash = &.{
144             0x77, 0x58, 0xdd, 0xa6, 0xcc, 0x2b, 0x93, 0x28, 0x12, 0x50, 0xbe, 0xe9,
145             0x18, 0xad, 0xad, 0x78,
146         },
147         .message = &.{
148             0xa1, 0xc6, 0xeb, 0x10, 0x35, 0x5a, 0x7f, 0xa4, 0xc9, 0xee, 0x13, 0x38,
149             0x5d, 0x82, 0xa7, 0xcc, 0xf1, 0x16, 0x3b, 0x60, 0x85, 0xaa, 0xcf, 0xf4,
150             0x19, 0x3e, 0x63, 0x88, 0xad, 0xd2, 0xf7, 0x1c,
151         },
152         .signature = &.{
153             0x5b, 0xb5, 0x0b, 0x26, 0xfc, 0x1f, 0x8d, 0xde, 0x7c, 0x50, 0xe2, 0x00,
154             0xed, 0xe3, 0x7a, 0x69, 0xe1, 0xc4, 0x36, 0xea, 0x24, 0x69, 0x0d, 0xa7,
155             0x15, 0xaf, 0xb7, 0x4d, 0x05, 0x53, 0xdf, 0xa8, 0x85, 0xc5, 0x4d, 0x95,
156             0xf6, 0x65, 0xb0, 0xed, 0x19, 0x84, 0x18, 0x4b, 0xd8, 0x1c, 0xc9, 0xa7,
157             0x13, 0x48, 0xbd, 0x63, 0xfe, 0x04, 0x64, 0xf2, 0xd8, 0xc4, 0xd3, 0x66,
158             0xbd, 0x2b, 0x39, 0x01,
159         },
160         .validate_verdict = true,
161         .plaintext = &.{
162             0xaa, 0xcf, 0xf4, 0x19, 0x3e, 0x63, 0x88, 0xad, 0xd2, 0xf7, 0x1c, 0x41,
163             0x66, 0x8b, 0xb0, 0xd5, 0xfa, 0x1f, 0x44, 0x69, 0x8e, 0xb3, 0xd8, 0xfd,
164         },
165         .ephemeral_key_entropy = &.{
166             0xbf, 0xdf, 0xc0, 0x74, 0xa2, 0x9e, 0xa4, 0x71, 0xc0, 0x4a, 0x2e, 0x04,
167             0xe1, 0x53, 0xef, 0xb4, 0xaa, 0xa4, 0x01, 0x28, 0x63, 0x70, 0x12, 0x4f,
168             0xd9, 0xa0, 0x1c, 0xc1, 0x5f, 0xfb, 0x6c, 0x00,
169         },
170         .ephemeral_private_key = &.{
171             0xb8, 0xdf, 0xc0, 0x74, 0xa2, 0x9e, 0xa4, 0x71, 0xc0, 0x4a, 0x2e, 0x04,
172             0xe1, 0x53, 0xef, 0xb4, 0xaa, 0xa4, 0x01, 0x28, 0x63, 0x70, 0x12, 0x4f,
173             0xd9, 0xa0, 0x1c, 0xc1, 0x5f, 0xfb, 0x6c, 0x40,
174         },
175         .iv = &.{
176             0x1e, 0x12, 0xaa, 0xba, 0xfb, 0x7f, 0xac, 0xbd, 0xdd, 0x3f, 0x94, 0x8c,
177             0x6c, 0xfa, 0xe6, 0x68,
178         },
179         .ciphertext = &.{
180             0x1c, 0xe8, 0x44, 0x5c, 0x59, 0x2b, 0xce, 0x18, 0x03, 0x00, 0xa3, 0xc5,
181             0x0a, 0x37, 0xd7, 0x4a, 0x10, 0x8b, 0x42, 0xcf, 0x34, 0x06, 0x3c, 0x6c,
182             0x25, 0x32, 0x9c, 0x95, 0x91, 0x04, 0xa2, 0x77, 0x1e, 0x12, 0xaa, 0xba,
183             0xfb, 0x7f, 0xac, 0xbd, 0xdd, 0x3f, 0x94, 0x8c, 0x6c, 0xfa, 0xe6, 0x68,
184             0xb8, 0xf6, 0xb5, 0xf5, 0x63, 0x80, 0x87, 0xb2, 0xb6, 0xad, 0x66, 0xe3,
185             0x54, 0x8e, 0x22, 0xea, 0x75, 0xc4, 0xe8, 0xf9, 0x90, 0xce, 0xfb, 0xa3,
186             0xa9, 0x1f, 0xe7, 0x18, 0x44, 0xb3, 0xd1, 0xf5, 0x32, 0x2f, 0x5d, 0xf0,
187             0xba, 0xd9, 0xe9, 0x71, 0x2b, 0x6d, 0x05, 0x83, 0xf6, 0x0b, 0xd7, 0xc4,
188             0x62, 0xdb, 0x7e, 0x28, 0xd4, 0x7f, 0x3d, 0xcd, 0xeb, 0xc3, 0x27, 0xf2,
189             0xe8, 0x87, 0xbc, 0x00,
190         },
191         .ratchet_key_entropy = &.{
192             0x68, 0x64, 0x67, 0x96, 0x23, 0x15, 0x94, 0x84, 0x57, 0x68, 0x2f, 0xc5,
193             0x16, 0x3a, 0xd7, 0x6f, 0xad, 0x2c, 0x16, 0xea, 0x49, 0xc0, 0x52, 0xa0,
194             0xa1, 0x22, 0xf4, 0x19, 0xaa, 0x9c, 0x95, 0x50,
195         },
196         .ratchet_private_key = &.{
197             0x68, 0x64, 0x67, 0x96, 0x23, 0x15, 0x94, 0x84, 0x57, 0x68, 0x2f, 0xc5,
198             0x16, 0x3a, 0xd7, 0x6f, 0xad, 0x2c, 0x16, 0xea, 0x49, 0xc0, 0x52, 0xa0,
199             0xa1, 0x22, 0xf4, 0x19, 0xaa, 0x9c, 0x95, 0x50,
200         },
201         .ratchet_public_key = &.{
202             0x9c, 0x7f, 0xe5, 0xb4, 0x34, 0x45, 0x77, 0x74, 0xd9, 0x56, 0x3e, 0x9d,
203             0xcd, 0x77, 0xc3, 0xf9, 0x74, 0xea, 0x14, 0x05, 0x66, 0xea, 0x1b, 0xae,
204             0x4d, 0xd4, 0xd8, 0xd7, 0x50, 0x95, 0xb2, 0x52,
205         },
206         .uses_ratchet = true,
207         .decrypt_verdict = true,
208     },
209 };