t-rust-less-lib 0.2.23

Password manager library
Documentation
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
use std::ptr::copy_nonoverlapping;

use capnp::Word;

use crate::secrets_store_capnp::block;
use crate::{memguard::SecretBytes, secrets_store::cipher::Cipher};
use spectral::prelude::*;

fn fixture_test<T>(
  cipher: &T,
  seal_key_raw: &[u8],
  seal_nonce: &[u8],
  maybe_public_key: Option<&[u8]>,
  crypted_key: &[u8],
  messages: &[&[u8]],
) where
  T: Cipher,
{
  let seal_key = SecretBytes::from_secured(seal_key_raw);
  let private_kex = cipher.open_private_key(&seal_key, seal_nonce, crypted_key).unwrap();

  for message in messages {
    let words = Word::allocate_zeroed_vec(message.len());
    unsafe {
      copy_nonoverlapping(message.as_ptr(), words.as_ptr() as *mut u8, words.len() * 8);
    }
    let mut message_payload: &[u8] = Word::words_to_bytes(&words);
    let message_reader =
      capnp::serialize::read_message_from_flat_slice(&mut message_payload, capnp::message::ReaderOptions::new())
        .unwrap();
    let block_reader = message_reader.get_root::<block::Reader>().unwrap();
    let cryped_content = block_reader.get_content().unwrap();

    let id1 = "recipient1";

    let decrypted = cipher
      .decrypt(
        (id1, &private_kex),
        block_reader.get_headers().unwrap().get(0),
        cryped_content,
      )
      .unwrap();

    assert_that(&decrypted.borrow().as_str()).is_equal_to("Hello, secret");
  }

  if let Some(public_key) = maybe_public_key {
    let mut message = capnp::message::Builder::new_default();

    let id1 = "recipient1";

    let mut block = message.init_root::<block::Builder>();
    let headers = block.reborrow().init_headers(1);

    let private_data = SecretBytes::from("New Secret".to_string());

    let crypted_data = cipher
      .encrypt(&[(id1, public_key.into())], &private_data, headers.get(0))
      .unwrap();
    block.set_content(&crypted_data);

    let mut message_payload: &[u8] = &capnp::serialize::write_message_to_words(&message);

    let message_reader =
      capnp::serialize::read_message_from_flat_slice(&mut message_payload, capnp::message::ReaderOptions::new())
        .unwrap();
    let block_reader = message_reader.get_root::<block::Reader>().unwrap();
    let cryped_content = block_reader.get_content().unwrap();

    let decrypted = cipher
      .decrypt(
        (id1, &private_kex),
        block_reader.get_headers().unwrap().get(0),
        cryped_content,
      )
      .unwrap();

    assert_that(&decrypted.borrow().as_str()).is_equal_to("New Secret");
  }
}

mod rsa1 {
  // This was generated with openssl

  const SEAL_NONCE: &[u8] = &hex!("8e0fe638fee592a0f4e2b311");
  const SEAL_KEY: &[u8] = &hex!("0f698890f99ae4ad83c1ded1e3797e42f0a4854b1adda416ef4c4d94b20aede4");
  const PUBLIC_KEY: &[u8] = &hex!(
    "
    30820222300d06092a864886f70d01010105000382020f003082020a0282020100bd7121180e55a5
    c3ec1580dce5154243b288f53f2056fdf23af0f2d37df3bd74a33cfed48bb09214b057c9a4e7bef0
    f2a47e8001d7ec2bed512847ded30d945d94398fd3889c0db42f7ae3808b548da489197deeab2708
    a1abff88924a90a36f7d8da714f79436776e56c17b34001bf72abf7a6b9939eb98bbf1dd3f0cfe39
    bb2076edb68259eece98af9d937501355a478fb25354cd86974217fa6be6f304fe6eddc4a1f38a03
    c4252100c164cbc092b0c7ef09f295219cbb66413e4a199da60a5f486d0c489cc4cb5e46dedbd052
    b3b2c6cdbb238000db2a06bc12c9327a4a4dc88ff321baf5a6b47cbe6fbba041b3020510709f5cb4
    64770e24b934d67242cfe4519e5c9aad4bf7070cf3455d3b9e14035b6decdfca167b4ba7b0e52ea8
    dc5b8caeace94385bac6dab445e2089271b29c2c29e37b0309763d34e8e987b94baab236d27fad1f
    9ed66e5c3c5dbe4bbc68c43bfa25ef94c671278853c5087c2288a1e60fe11849a25967f9303d4170
    8d1ecf45b79c77f6230a4bd41619f3b2c72c90b7f35801a3c4371c5c0ad3edc7575bd5720b78c36e
    1a3f10d038ccc9d5cd44e996574daf98e00deb06cc03d7b53f5767b3c191f65d9cdaca249c51677f
    96562c76450542620db9ed659fc2fd8cce0d21246934fbbed23122bfddd9799ece8b9821e4ab43d1
    77f0f08a1e1e9aff717b3d76b23c72b8495bb2caa54d9d86030203010001
  "
  );
  const CRYPTED_KEY: &[u8] = &hex!(
    "
    6dbc5306f8faf060ee49d9dabbee97ea09ea99279d2a4115de5daea89dc45737865bda0274365cee
    6097c5af368dd5e490ef9f493aa9d855d38f7d2e44133b8fb386168c1d968ca0446dbc82343445d3
    5ac9f2fb56da120b503c78bdaa1099fba12255df1005fa60124337de29fb5363ebfd52721e67b5ec
    b9a4e1327e129e2b2a34b5154caf45fc8306cea79a1cfbac03e33e3631782f31e8b36ea96948fad0
    a5473b33b5bb6247e8ed73c023b41bf2f262ffa3c4bf236043341d7b4878d14bddec3e795b98d3e0
    29f6de45b9d658c9b4e93192f4e0f3136409730f57ff6b615a600a38a9d477c2c58b7c77b0a0637b
    7b3f61edd9f09527af98accc4d4d831e9072c52414c6e4924fc24fc31ac4cdf5ece308611d9ef956
    d89a10621838d9bf0aff796196b9422a04495d7e97dc7a707cda48697d5c847cab85c1144304ae2d
    26def8753321ff84378e9b9b87b9f533e55bc371e5e27412ee01eb47ca267f380d8ecce761a73d4c
    8a1334cfea13740b95c935fc10166ced3bc9b2a2bbfe17b7db2a0f8f56a71d7be4d1da83285fc6f9
    b2019f35c8ea7cc25a5c9207935008fcdfc80127533079d0d15cf53dd750acc41928bceafa2999c3
    2e933852ece6cde042850bc1f084f10cc6eba8ee54b0a0491aeff6c788598b63186d4e0e44626db0
    8d90642c9e10de23955c4c7f62c89f0c0d7e83a25c5bb506221e0f9d3eb8c1b028a6d2be4758e0f2
    b2464e3928423aaf5ef4eaa2fd8dbb98a3adfbb13f61f93f61de623e2282edcbc8d05a2fa0026513
    4f9d7993e73331b47ee49e923e6db38d2822110d490f28bddf96511334b67e8879182d66fa803ced
    9473bf96309439cce4d7b758c43fe3bacc5566956303781ce2f07c58ab45de18eb853db785fbf7ce
    9525b6020d06332e0b4b674b16e70abc4176f9432c694330a3dd769086da1f9d71d3fa3da4dc4dff
    be3c99719a6d0460c393a20f5092a9240f2ba69a7f122af28f0e2540d149ec244d5b178cd47cd9d6
    cad7e8749385ae089e76fca61311954b8beda5ba08ed10ecc3e1377e899ce9817e1d49dfb1f6e561
    4171f5a8792a7069d3d1b955943fdba946d50d36529d83ab712fc3283008564164c4be18d628fd9d
    71eebe5b950e443ff6ad1075c6edd62f4a17cb165f53db12dc2f59d37965220912ee4c1f70b59296
    31ff5b6e943705cb3db1ab8c3e80ed20f0375d4f7565bd12a2be59e505a3b47a8bb5f854d0955a6f
    aae71b283de2f8a36e1a3b3c4124f0b3b33c8c20ce238131045c904f90066b1470885d8f17ea2ff2
    082aab98ea15098e9f00e1ac3632efcff8732662ff4f48b70fdf7f0969aa30e4aa9a2cb7a1fb022a
    98d2b0e91737a3c5c8df847da9a180b3869ca705c20af325ec685802b529d69338c6dec066540c04
    4e2640048fc50c6ffdbb36c8db29ca8dc0f5664d30c3fe6456373efb469bba41a2772883a5cc254c
    300f4067cb57bcf1011e631fe73b7c33afd500f017afbd3a8dc779d6e48a913625c7259b72b659e3
    3b8463068b6dc683059ec4fcf09f49fba5c6e305ecd5bf855bde0924e94123e87444081b08451e22
    78a7065148c8fc5d401b9fea1be319f4075e269572e8b767208c36bf708dd09cc31f289b8a6e7da1
    8fc4adcfa3c6c62a8e068d60da0da9b3d89b5276f12b33f28b00e22ded3e95237de5d3f0424ee533
    8ea9ae64f637239260d39255012315b2ef7685706fa769e06211bf62ecb1bfd00e35528322254ca8
    77a7d755ce65f44cdc551aa8b9df07fb8e2c51d76ab115005843fc8cc90fe54fc761a41a1534c560
    f8de2fb3a11eeed6b068c5ed26bcb4f45c3fbb54eb007b238a26f282a2a48320431fce00070387e8
    8037814898960c80b2f02872a82b31d2d526c26e8bc2eeaaf7377b91dc6b8f3e65c650a1bdc0154e
    861aabc9b5b2778f3c857579ef4035d47044f781ae5a3a5cbd229e3c87918d260ecaebc7a958f254
    70073cf0159f43025f0ae6977bdce0cfc24d1202e39ac2b247e3052a5335611930c86c8f06476e61
    8cac43214fdbb0e7990e79518ea7071cec5fa89dccb2ea2d3f199b65dcedc2093f2e35eddefd22f6
    11811854cb00fca18f7e299440ead2375b65e7499f6f72567d58f4f8a21f61d6733173dc34c7249d
    50de0fc52f2bff627791171a6f826660295188e7cd7b2a034858652b2914b6a380327935a7e5094c
    e4d55d9715f4f0335a6f4424078b3a99c58f10f79ae364e60b1e90d6c382e390bf720a9b8f43d72b
    7cd54cb57c9c871cf41991fdabe47d192babe3942f9415312858ed81b1386acb6076883925ff62e7
    fb78eec9511d33605c507b1a3bf699dbbf66dfe782e6f320bdcae01584d1b87d27a387e8b564481d
    a09839583282af1201bb2b8f67f72806a089e10ae57d4531e04f459facf9264113ec7d11e107d116
    41880bd1c03134c9dd08dec8e83b625e0390f486c4cf39e93089139d0740ee91c83362c38d970769
    7ad8e7ff23020ed4740e656dc5c92170627d811b2bbc5242c1c909b965bc433b92261ac7bb71afbe
    060458fbd483afd007f1f7f12cd7db1e61e6974c452cf998ff513394d9bcd9a245e4b4fbc50942dc
    827d4d0c8a6979e9c14a0ba7fdd28ee51e7937d041759aed63bb27295ebdbe1f250bc76fc4711883
    336efea0ba5d999d7e91a0f29b7cb74e211891c35ed1cdf1f5279406306fef73127f53bb01fb7dba
    9eeb48590abcd9503212aa876ebe55031f51a4afc0f41d89a60aebd6b2847f6b0e81b2385a7b30e9
    40c14ca46a63e4886be3c346a98f239b587688574a8b0fad62462012dff86ffab45580f3461a3c5c
    7eb688106731bdb57813f96b8a8d8a46656823a04d2dcb5541ea491e4fa3eb20849b478937a74344
    8052793d2dd5849a74ea017802505942fe3a9808457878431c8234cdf2e875fae49ea302780abfd3
    a36ed5d06090dd7896b1d7ff6cd4004019727e6e1fc0010c47cabb75085240698a95e42de45bf571
    0b08f2db932c1278393027a34a8ecbe1703a1d6ca213bf5dae09cc73e62929ad0d2be7b45b3ec6c3
    ea291f6e9f1268af8c77af156e956b28a36b3ad127fc0d217ea38de67b21389e5908428e784ef656
    b063c05b8fd88f89b0df3c802cbc093b263686d64ebe59cc86af240f0a5a273e1c3950b702754993
    1b9f429c498cfcd86ec3e4a41007694e77ffc695f533e8106ec883b1ad82686b1cf2754c220025aa
    a57622ca78751ea0cfa0ae2f7dbbf1da1f78f41ca0f25a83f239899fc1365cd5140f612b1e7efa3a
    d9b830fe13ffab78a40ac4305a57a387b0380c7997cf2a44d9bc380e5a1b78b170a30fd3fb4ecbe6
    c95db24039
  "
  );
  const MESSAGES: &[&[u8]] = &[
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000883895210061acb85b869ca100000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    aeda7c2c45acfa0286a5f4a55f1df9faa030a2aa686b79b3ba1e3e7a93b2b711854055f0ae9454bf
    06b2c78493d8b0a07612e3efb5b448c5097600843585e745f382f625460311866628c1451c3dabb4
    928c3add5a13a547d1bc1f337a671857241105093c1d1e685bf260ee5fbb4f950e64f52fabe8a3c7
    96bbfb8d1e0b0af480d3e90f5262204d115779fdcd425ea4793a9c316f43df8aadebfd0f71687d8c
    5d4ef64bbe257ba5e263b6785e599b16d630bef8f398943a8ed4949bee38b7b74b124e6de5d7c19a
    2d76c160ecbbd15bcb15ea79c9e754d3eeb03d8f3740eee24d9803b83b487e1fe7794a7cfb7bc4d3
    c0fc7ca5ea51e3480a5eff9c81870ae30cbd595369eaf2156703d4310682ed7f806c1c14018953e8
    96aba290522cf1b6f4d16a525c253a5cf6c1e0098c8921dc9e6f87ddf5ac3d01b2d13d07f07e2393
    1b5a38194df40111491074308d2621acddc48e42ded5203b22727e572203df04903957f171801822
    0d25bc1d004f67062416b0cf9b884b7efefb4c605a633a52b5f1cfc1691020b0a1c66082a92d6911
    7aa47494c0386e4773371b026ae42543ace440973302ba2aabf30b5cff0c385ab36915721427b26b
    54071d712112f93936c9c35b8af4625e4f3e89e00edd280ceff449de93096a4441d3d4e549b7b220
    19d6c2487f6f121f724f3fc9e51d5cff96db7d508ca2e20307598e13640625a745cf7b6c6f67fbdc
    55ce1f98ae3fceb2d275d4e247c7c8796e4529dcae000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000ee802b39c2781055f9bfa85200000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    455533253dcb79246495edbbb57fe2e61bda76edf94c43a63ebfa764ee0a5e5f126c304cfcd4ccc7
    49e1df1b2993ee408d5fcb69ffde11f6670d2c08b7c5c3466c7e956c6a30a93967970a9fef8b19a0
    b833b99f0c0a911b159e56af823220e3a45226c96932343745ece7415dfe3d34803722d4e25769d4
    e01e98707a52fa8927f4f82ad2fd56adec66714cacac51d75831faf4b03cbece6d82afedfafa05c9
    216c747191af359e3c797a8c7ee1049d1546db160262ba2f5a932c41f14659102bb78d0c29d7ac9e
    66667ccedca1fa7e273c02400d20f05f6cd88e083c32e3c9a2af9484b5c23f26fd9e39807ebcba31
    7e09e50be3430d04669a237f51dd74554d3906dbff9ef7b2786e3e21a1012e23231f4c9c98e202f3
    9853f83817c45da150bcff141b3e525a1a8abef9e58ba8ed4d116efd0e1b82745d1ab7e64bdf5dca
    8b1d9a2cb9f0e15ba5e7ba7e535a9f3b5c1f151b572b2424be6c7e5a8e2a5d7d509c51dda6c7726d
    0ecd22e2ab93538259bfd072c5c79266e0ace7a1cf11ecf796790b650600a289acbec43d2e3f813b
    7212184b01d9cd9b5e28656ea2ec4621f2f06b19aa18d96cfd20b381b70aa83a56e85a3f508a481b
    7de03ae7759a95d16e2966bb78a0bc1a4a5b6163417b7342063e315ef099cdb5fa145719955dd21f
    04e0486c24d1a8405b2def65b90bf95705b7757376f9e787fceba667f1fc9a0ddce3932951a06681
    082d4a8d43f34672a769d7453b4d19e18c3cadda35000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000e2b04c9d308def5ed92ec35300000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    335a8a464db7efafd074eb5d9bea5d6d8fa2a2550bbfaf333ff0fae85c7e831a6fc04d261f1c53d3
    9e792c23a15b93121a686b21d2c1c4ab510db5e8c5e63c2e50dcf80a955b5fec67710448c2ffcdd0
    0c22a6d2173765ed5dd375b1423c62f9ac438eba5bad763c272d07c9f8f0911ef15a115e7d2313cf
    54e48b7d2575ed03eaf5f2225694b356f877ef51e65d807f329a416c9a097e3a5cedc9657e806fa0
    89e861aacdaed6072dfa7c91a110095c8aff06bae1a519b0d6be792efe9957dfc26d8343a7c288cb
    fa209b73d5887b6927ba60954f4a66bb11cfd1fd6d9fdfe50d6ba1b464a3458e3ef2ea0aae9df089
    98df623fd07d6f2259c60f4a331e495b5827185c6ae4e2fa8f147a40717dc0041f50ab8a1d296c34
    6155bcba5f4b3d64a11b513057c7a5ea491c41524343fcf6108cbfff5d62ae223e29c73ef121cf6d
    f6d0d737d3a91bcbf0fb634d6e2d1a7004636ea4e5ebb9bf0c37330046308f2751d310ccc482221d
    700a57d3b1653cda8a48c35072c6f072984dc02de9a698419c31754d3635845fc14043050f6eb41a
    2c782fdf68a3b14e7e96ade6ee313c323f7eeb187467fa5c3f21e67d70e33d5c65a2a23634911a05
    03b3def6f5b8a5933a03afed47b3a4594025a83827488dfedf33deda660ce6ab63a83e6d592a39f6
    d4db20930bcb868dc16e51962911bdeb0a087bb2eee76d19ef31dfbbaca82babc1f9a590935e7e69
    683d65dd9a87f4e2cec1958527e6c153a72758591c000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000afaf5dc16b51d348c0aa43de00000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    a6600c008c2b5d4ad670f8558df769bafafb546c4100781247674c8758adda467b5b713264d262b6
    717e0e176da0feb9054a1f12e0321c293bea0f357c3bf0906d59a5d6020540abdeb403da24ecfe8b
    4bdcc73e9a7bf14386f10bd2283000a9b55c5689f6b33bd839e69e92b927b2dc101d331af0e92c96
    607606133e20c53d3819fe627a091a81cfe38c10fe824822ed9892d5cf48dfa91bf26cbaaddd5a4d
    0da94608bb7a43578f81a9d0db75c7e530bbd844ec74b63a934d50a09630e81cc7475332b3407183
    ca9cb1679cf44b2c7bd5ea3566f03034c65caafbe7ec31d84bd487ffa78ab109324ecc2c3deb880b
    1082fdfe0baac4ced4a88e58777fa0371bb5fcc1e7fc58560f81bcc54ff8f437c3cfe12efd80db34
    909b1c61dc67bdad58a92ef90015aed6d64faa0245c5e8e78de88d67921e29ee2e213c1316ad0a6f
    d698491414e5b3559468a578e62558416b87fcdece13f546412a26734437ae0c7f8e5ba784d3636b
    4abfe1f53cf10ca90dae0b24ed08ebb2ff9078a3466321ea4449b6974d1af500a4eb39b918b23e97
    d61cf4bf68725e59d183279adb0f2de5d0ed443e058b46434fd11cb53a9c064d263e8d47c2c995f2
    581979e51a212f9bc9ae04183f127afe0a4943cd0a7532b8c680b657f522dd56438f25e33627b38b
    ba88520539ec2852959b2f60387b54bc537c0443ba862e024c1b958acb02baa9473a64ee438c0ebc
    f7d327d83169cb2cd57acdda3717c7220259865b9e000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000ae9996275972c61c9c30a3f000000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    7d838712f1d82ba9b19b97c889b960605baf06452215314ef0b0a6664e5866da0d6a970f7daf8dc1
    f08e77e8145b0a371b9f9d2f0eb303a1285ce52766a004285eddff3658bf3c2748dd97ce6ddde511
    60d7b3bc5a27dbf77b74ade8f484fc05328f2e435b951b52f981d09d3279fedd5e0b08558cee826d
    91a8b86c3b37b5e82049f5a0219d586d1b819b7b0b25ad14f1b389fed302c3f8d74c8326f879917c
    c1503da503454a319aa47fd3e22a3a3aafefcff2ba1ae1117b962b0215a4772d3a7a41e16022bc47
    8fc2b2213e2e91ee5393bf8e6cb640c7bbc4a507e9c706f3e4e5dbf11fb2372d78a4d27d231de546
    7ea2915b1dc313d94fef3c80c0c2643b05bf05fb1fefe08f011f44bd9f9c61fc14f0864da0b666bb
    c950165e5d1703ec1343abe3bdb01a64aae8ed2fe85f785b8c226e88b011b115dea7fadc1b52dd25
    abdb597ac18dc131d0f2dabacec55033d1713ad1106b996d449dfefb4c01c0cc1c3db34ab3e40850
    50abf78fec8401b0b541eb48d2c63bac94cc540e859158bf79cdf0419a9fdc91f7eb754e3e64bcd3
    4a3cb2af831e9aa1e8758de1d8188ce605779244884282908079f97e13ee843fd6f8fa2fe50ad2d8
    4ebe998ee85df8da852faac8aa4def9fb0604e2b44f08034393d328d49aecf83a674bad792ae68de
    982b345bcdf2d8e8444c57bae4d88d75d8b93449c0f64b59d3777eb326a44901da2b3d80cb13ce8b
    d4a6e8077c8f1c75d98147a31e144bc352416a8857000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000631d84b62110fea263b45df100000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    a4e3a33da3ccdc326ae1b6e1cafe95f6494056ca826162309192f541d3a145a5e89e1b5050630be4
    62cd1c60214e701359ede621f6686ebde4cc3140a5ca3512f0ff7893761d334fabfa7f27a1cabe67
    95bdb3a53b8ee299ae7843089051ed6a98f0bd89667b4a10d9220a04c10c5bf7ca4facfd25adc717
    e63c5331ca1ee5ad9ed67dc565747e0c4bc77caa64c3331d559c775f1aec8ece2915f5eb41c5d609
    eee65932636ba0e3f9986e9b248e8101e55936e7360fb8c4f1b793816cc12e0a1841766b7a2ca90a
    9123675bb0f6029a62ec67b1e5349f0c779bd4b5d7283ac07a68bb1a8d5b4aa227b1c6f2f48ea8ed
    eef254f10bafe674898a0bb41e858c3ace837a01447d1f8c4ce526b78acc32f1f3122b857293d358
    905d00ef328e6986ab6ee481da58d5a7602686efff226925dd95e034ca47e6128c8da51ec21301da
    23afc811a3d6085c476b101b3d2da14a8857d4ceca13175d97ab74431abff9fbda7ac1320bada29b
    e58dafe54faca46051a181f9ce8e0c14efcd1363fd22fa5ccf9d81074702e4c8d25ce76939a7d4d2
    960c4e486493bc40b8d2100543249d9fa31c3727f94e8c9ce75e135cb9956535743cfaa478c7b1fb
    f55e20d5ecd47a9668ff61052ddc193c687a505bd96468fbf1b3df80d97dfeacb2fd074ece8007a2
    21e49fb99bf1e9f626c66fd0c4e58e60655297419ea8a0e7dcaadcbd3972aebe2ce16772e7f5e928
    887d17d34312867b0580f728ee2c7ebce3ec709522000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    0000000000000000050000006200000009000000170000002b79193245c6a528abf6851400000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    5efe823052bd570c6073091b5fa9c61c81d983c2501989674a8c401f449ea613425be7d93360d852
    b6dd023d70afe42ffc10d178737899453664295e2a2e206f06611c503957009dcdfb17eff1d11758
    bb4f93c085c7c70d5a94439fdbd2bb6dd59c640b2751e19f63e9aa6b6603d9e0e3e869867c7374f0
    66b276db7c04933c2f329b550c7ba07b739c2a6b8336a881ea141dd2811e6b028de1efe46b4ae5b6
    d0393e51008b76a9ed40d47057e68735231b0d770045dfedacc3400c828887635aa677c3165c2156
    3b91ca7adddb896dc1ccb724772a7f6026384d6530df02bd4388e42dce747fbdfbf6e1e859b1f772
    8670bba3671d51cae83a3b32c225fe69991da32b5342d57e30edfbb8b99b36f6e439ec9d86374bad
    fdeca1d5f014c16e8b0de5d73ed6fd405508c0f3f67f6ea31a88295f565e835afdd7fd5fa4dbecd5
    8a571fec105bf8e94b6f2634d33fa99bb7c410141517bbea0c56170378daed5b5be903b19e665304
    4ffdd968ec17c7b6fcedd34bcfbc8bafd2474cd438481121626f77012c2a02e6012591b9fe40aed1
    8d69e89a491184f067346563695c5d631eb2798f4bd80f57c2c0311e91b072a3092808eae6ee25b9
    d89a8cf590a206183280e0b814edb98d538a5968c438965d421b668e5869dfe72faed4a33ef1642a
    3a67e5b42b17f4890608df7ff2883d83ca13583e81f27e40b8e4eb2adce8b09a1a780733131e9f7d
    9edf9685f5132a851c016788cbe5c01d227c01b071000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    0000000000000000050000006200000009000000170000007e2a8404d16ce6787e15639b00000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    869b64c17e59ecf321fdc29796b6163a37fb9c1190dc3338ea5e96e8ba5973426cafb0302fcb775f
    98e3022204c387fb7dbd1c5ad08e61bdc82134244bd0be81866c84d39aff94fd2a0aa3b8c4da1c77
    dddae13f181ebe1b2aefac5ece0d4f311ba4c906e01b6e894ea37d0d1db05a52f58c7ae44184a134
    8fd904dc8409f64155b3ce0a9255728e5d040a9eb7ff46ed2307cae368731803aede3aee44e77c18
    b663ac8827818c3cd011c34bee18d9cf0869ff8846acf28d218205c02258c7aeafdbb6e62f70e6dd
    56778ae8de4eee9415ae9fb5f3efaba489a8673d02630df2bce0204419ecb031b963be8f88aa2dde
    550bafb4b384139bebce87bf1df43a5ccbfcd5545395f876cc4013c2fc01e93621587f1b9f7a9354
    1d1813ad1c1cdef36e2efffd758496c8cad258cf3d31ab1d522b97a587d9f58ba2460a6edb0cc910
    ce8fc4ebd80f82c9a8829ddde51ef01ce8f62fead7db2b80a6aa65cdec965b3b0e5af4a75a66df36
    ddfd7b75e2d35b3e58994aad006b5de608a030f2a3dabe330670e99d8164a962b05a1df289a77705
    9c1379094962ecec41a98d3122dad852619002dc0a01b7e4f60488e719d48d6a0b898579f92438d4
    a178e49156bd71fd3ea94de7f72459c3c19311469bc79cc916fb031d7000a220597471033fb95078
    8d37ab92a1fcd5229e7937f3734f2cb4a83501d6eeb2777e324d727f96f465091d047e154042cf28
    f139280dfbfedef0c28e8cd1637425feeedd88f732000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    0000000000000000050000006200000009000000170000001ffc93069975b5c17552197000000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    2d9e6f31914d3154473ec4d42b1f9da350c1a654948118f0396d8d6ff0e59ea4b1c0d43ee8f5a389
    7678016d6f863ecca79c7d460e8e27eb04a02bc418fea6555affc9e025357c03e3815534f640d48d
    90f25a7ed21e8cd3a2e8759bef4ce0e476a6f305298647f75ae6911134b344e61f49f9f4923da5f5
    744c4e26cb783d45688b66ed78bc7a6224b054c8e2ef8b5d8d3c54ea58aa57ea119aa12a12859e54
    a343c4e742cc4cf424efa11b8b7b780761f10f907e46002735cd0de5ca0a47dfad283385df514274
    3faf2ab6058d9949e608f9077fa11bd716f762c68a1ce6de658bcd3af1e4f70e3ccd124f67471e30
    5857246826187a60212c289ce5092647a4ef839eb6099e7ad3063e7405e4b3cd5e4755cdf4ed730a
    815c2835e9f85ac862208896228c5d8d9632c16aeae84975714e28e437b708ba65f0a94534625e73
    fac9da4ab6d36f692a7b29413a31d1a9bd38613cc85b7b85b153342cfda143381bdc28b745035b0f
    76f754ae6acb47473d652e08046ccb1478c70b11d13546a4b2d7eebc8f67aebd1fd3fadad2992524
    ea07d7dcb3d5875426f930592490277e15ebc47079bf9b2354de0e5ac2811604b3f7de0337b562f0
    b8157ff658a72d71dbd8b7564a6525afaa638d0cb2e20701b9179621cf74b6738df5b10cb85b6967
    c2937389051ad55e408f06aca5fc08086e47d1be1ce8a7b29fda4c7271a9b252af5e7f8b6a427734
    6a33205f326d246abd4d5550a3344822e428e1f6a3000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000ec69156b5c34b72ded3148ec00000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    a71850a5efc3bbbad0d356cae74fcb7deb428a6a754af28b49ba1b344c34449bfad1476a9737c1de
    8ddb5abc49918286eea3199eeb615b8d6bc76c66c8185707b9d43472989ef87c0fc667761a2ec31c
    55c563eea1b7a45a5676b5213b06bc5d41e14ffb87b3c86bc40a77553d3d0b65264444c7b6b089fc
    a009d8347cd0351e6d73b836af8f86c412a1d7ce4eb6135b1474eb47b9cca4f9418b7d22e3814b19
    71b1d2c0497c3f122b3a40cb30f9c471ce1cbe0cba2ddd6a6c06f7064d0eb5df2fe0792f1c5b1887
    f979e71a53b3b2fade8ad685d428f29dee5fac70f2b12f0523570120433b23f8675eae72d8d9fbd2
    f90e88d0e59d7b9c0dd7c418c6ce012f993422ed5764b7e3638804183dbd3fac1ea32a323296a023
    a3b567142c8f8d2efd8345250c5648d48961bdb652eea609acae2293f8ef6dedca09495e405a5eb2
    9938ed830744c925791bd33597c27b57a598d019e533bfa38f3d58249cf1a47106097f50d8b0b980
    be5d8f6fa719014d1ce8a62f355a167d185c08c9e6057499f8775bd8c9f7621deaeac176bbe0625e
    fa4603ef93a4d54e4b767dbcbde5a907dd70bb092acf011c2d9e47bfff9200c7ff564321e6e2c5f4
    e70547d45a79b77e9989207150bc4fddf3f330135cd087006b74cf505d7ced9c59e7eea7832aa7e2
    3c8e5cc48582d49ed1bea7e2d74eba18e7d4cefbbc03c5b7106ac6ba8299779a7e078393eb68f81e
    01487c2e30bb6bc86deeae692a132b20afd7c87193000000
  "
    ),
  ];

  #[test]
  #[cfg(feature = "openssl")]
  fn test_openssl_rsa_aes_gcm_fixture() {
    super::fixture_test(
      &crate::secrets_store::cipher::OPEN_SSL_RSA_AES_GCM,
      SEAL_KEY,
      SEAL_NONCE,
      Some(PUBLIC_KEY),
      CRYPTED_KEY,
      MESSAGES,
    );
  }

  #[test]
  #[cfg(feature = "rust_crypto")]
  fn test_rust_rsa_aes_gcm_fixture() {
    super::fixture_test(
      &crate::secrets_store::cipher::RUST_RSA_AES_GCM,
      SEAL_KEY,
      SEAL_NONCE,
      Some(PUBLIC_KEY),
      CRYPTED_KEY,
      MESSAGES,
    );
  }
}

mod rsa2 {
  // This was generated with rust-crypto rsa

  const SEAL_NONCE: &[u8] = &hex!("ec52605bb40e51c144782320");
  const SEAL_KEY: &[u8] = &hex!("3ae9d60336c318d2da12c088cd89831b30115bf2e3a18b878633471b094677c5");
  const CRYPTED_KEY: &[u8] = &hex!(
    "
      3e3da1a861baa34cce0e97e497bdf4dc80cc01eeacef65eb9f1da709211b7a3a4db495a5b60de937
      c1e94d5f8ce8270f11dc82d88ee2a3f843f63d81cb3b20811ac1cc4741e3548a939605f261a2e8f3
      c3b5b66e2ddb0576de228259188f1b2a10e697e485a8ef60e606f85225d541a1cd9c9c16430bf386
      14ac316d80613f16fa14cb56b7db863919297834edc42439389c198c00123d825dd3b7d4687c55d4
      c3b11f604ecf5a8cb96026aecfdfc789ff43f808f52a08826b7d3ecadcc573579742f42b929546e2
      59710c3acce83850bee5a5fe161c0985066c7bbcd98d8c19c356fb16938d7161b3450a3994b3977a
      87792aa1e77947d5cee6000e5c85b4158bc70e43a6e1cb42e6d022d31a252bb669672f430f640a74
      51c06edc5d685fc2656e2a65e58699f5474f8b4f6d1d5491b1dc481a8f4119bc269f0d736ccecfb6
      a9e03e9d3a65de76b2dca47188a921feaa0a7635e69715bc70dd3809bae56d6a6cffca938523d3ab
      7f26fff06b82ee9df10b22a97839065f9b7f0fe7f15abe5834b7293218d38ab9cc9e2c63b1058070
      76939cd2912988f4e934c145f3e763f521e05fa7c7d5a06b723d87dd0c7225a926d73ab1f9142cff
      b1f6eb396fa4b1a07096bc10bcf640c34eae8e350f02ef5be3367fe4e415fa593706d1a0fd753106
      fe418cdd2c4cb7bba1c5d47b7411b3aafd2a4e9465cd96759692857763bc222c38f237b6491b4208
      146acd4681315d041a0389a12c445a6b90bcf5d98c1a8836ae99986c6b2ac5d59a6a8c6335caf15e
      d25fbac91dafa0619ba046fc0658f765591d7d29ccf60356d7f9352616e466445406239b6277c48d
      a5126b2c0b94f07a96d21241ac0faa854a9545b8862b81b09e29f660640ce75e0913d81a1355bbaf
      537e7be82035c4565278e73e799159196863776e28616432f2f4560faa962ed275ae5939c35c80b3
      1bdb58c10d6aa4330dca34d69ede390cbbdc5abcbaa12d3697a632176b9e7dd91a3ae14ddf7ed062
      3b293821aa8d7add8174a1ad59ec1f390f901837e5860948c1c659e76cc0a10d38bf0f7600d54545
      ffb306ebdaaba7dbd671d34fa824a3c948de160fee3d7555be77c7edc7d818c449cd2f66420940ef
      dc1a10e931181302ba7a943880a57bad1f0169732a4fee319af336dc7072eb00b393fb141a53fe23
      31277070efe78494f3cbee4ff1d427f280442f721866f9005401faf2e1ffbccbd238aba9c2e1a7e8
      22f636d2626f4566814c100c639da9c6ec6bd2844bfd99a5e287fbbf2f6f51d3c350788e70a4ca2d
      23db72943d4201c33d763e0821bc06a8257eff058e077b3f6d4058589c1ce58bdb72a442193a78b8
      9cb39fbf45434ea96cda0ac934e317a8bec7a65c78350fe1e0c056a08def56022c8b06a6e274efd6
      88dade8ef76053f585703eef22f9fdcb6b30aa458bfec5d53ad2a03336d6bc9050e70b7245228ddd
      6e12795f0049f134cdd2b2c0e6da2216be1c87f1da7c46c4471cd137c771cefda232c2598e4878b0
      1cd87af33553108e6b48de805bbe97f0f74298e6bcc4dafdd7f55b0de771ec53cdf30f54718728f3
      fa09f0d7361e84b76289d556b2610f2b655853018d84e652f2b0e39560fd5cae53fdec345a6b85bf
      4702148f1abf18960a439f2e75022bb993a49cb5bea9e52db74d33fb3d2f04cf1402876359be5c56
      97a2ea1e178f40a6277bb75b6fa8bb513af7e33c1a296ac4ebb1bc1a6e7963ac7bf9beacf7f2b21a
      b8be933863c83bc1765ce0731c4e10ff597c6cfff6798c02acf0333fade2ca2e5f7619349b3082a1
      d3e21f8aec6cd11a09dba7353927df9ebd4fa868368e31b3ce44c3fe34bab894208c177b741b8859
      0d51bd4d6af4d9163d7c35d72e3dc59681304288b229171befcc3f6a7e092324b0bcaf1d9c8396c2
      944a6eab2f76e7a04a91fc9fa9d2820ca0d0ef7b33dbbca7b3fdb60ceb1eec8f2e3cd2ba89c61217
      04cfcdaf64096b845b26b5594e3af6ee6839f718a57cdcf77e2b439217d4d81426761fcb9a908dcf
      426f3f8d356abfae78dd2312700d8f75f00197e1446ca6aa9a7eaa45405482c860af55c866e1dd73
      7c5cb651710556435252ac71b8e9494bf96438153b343704657adf83bd5f6a95a8fb56593fb0b2ee
      38f51b55eac21f06d1878f1498368fcac0d2bf9033645ee5bda7bbdf054e78df6fc0dba876819486
      6815f448090e75ace663e62e5ec64ba93e4d2a92c04758a88e4f3be6caf6f04e21cbb66287cc4485
      7e30c9afa4359f26f5ec701539585aa38931e845fbabb4784269c5ec222e070bd11094d3c7ff51e1
      87efd2718b4f04f10b0fedf2358d3827760b83d31c08ad6bbb4831c961167817ed8f95873ebe88fa
      e4f0ed14dca2a7429cc790ea7494488c83e6c9160a86070098a8ea28af5306db2f19053c5cc5daaa
      d51ce20f82efafb61979d7c2f62c92d7f52b22983df0179b04f5a0690e8e5e080b85bf19cad7e4c3
      ecdb92b380bcc9699c55e91ccd691f9a05e7b2b3329b22903b08914eef13003945970288563966a7
      25467fef776dc650fd9804fdc4f7af9bd476d6330bf4dc8da596cfd6a89884279ff0fe63e6318358
      ebffffcf2e6ffac712aecd533b0e9edfeb9a70c1b35442f6f8dda15fd61de21bfd5377ddd6026fd7
      1985b2a43024099e906c28153cf70492aba2f54b522618ea6f0529bddd70e621a691d7f83081cb06
      b3e364ff3847ab60253a970e673bdca99d822f1cc4d779fe3553e6c2c3ef8b42bb8c38a0c77508e6
      94a4502acd0935526b10b94c500d3003b877a77da5bae8c5173c9ef022cda25be42edeb2e4157880
      1bad1f7b656f98fbfbac118e5781ddfd69cf88752905fb2ef4b9f18938614db8ece201f2d2dbf186
      a1c22fe91b27ec12371b0f345d733c27411284b1eb7508a0cbdad62ded94ca1f9ddcfd0f0ef1b6fc
      d0f2ba35350e5b17add1ab17ba516d712da21bdcfc1f2e85b16f1ca6a10aef20669e268a9c307ebe
      4ba63bf8e34bff7aa18c5dc7caf58dfd7a37655abff14a883c1e793d3aa83278224b7faa7ad35b06
      e8dab532c0fe74d5fd85fcda2a883023821116a1449db4dfc98a8c1dfeb5fe7d5e574282805eef62
      a86f536a0b9f669ae534b04adccccbbfcc35c2c7fe0b6ceef100caf588c9265beec2dbe6c852a115
      227c47e9bba6a83359f1edd33155fdf9d340a19bdec7d897cd9241907d3e6ca7e3039085a2e3c342
      e135eb12a34f5590b6543b8614fef6e2a290be4358ebba3aff6ea2bbe60e46eac776de992ba361d8
      6d8a7fb3bdb13dce1f299ab5248707ddc17828e6b3998385c863649d0e6039d6ec303ef9bae9ee15
      7600da
    "
  );
  const MESSAGES: &[&[u8]] = &[
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      000000000000000005000000620000000900000017000000c2a19c60aa5abe627b43297b00000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      759f120dab5a47b64a77933de43a102770e3c170a9ea8fc9144c03df419a6ac9f4db11b2d066a8c7
      01e49f45fa33d7a1bf8bcd15a9712d58c6cef6b77b25ad20bd6ebe4b7d253d1305848d4b1828c659
      a436ed7a66c195d949b9cb7b85910a39d94100013e6582701c903eb09405c082cc25057da846fb98
      20f5b2aa499e64f5d93f20d1f17f463cfb92dfd39593d1485b018102c47f42d06b1fdcae3318ac9c
      eba4233faadca93801bc2b1621548eefae5b2960e187348f88e227eb9ab80dad3c427b1ea7706456
      f50ec6e483e20839bbc0b899d715b3c6641275f878ea0be1a7931a61a3f5602bccd75b089bd8c635
      3e79989df9f466d2086806060318ec08901a7ddabcd3161bddc5e3b298d7e5570fe2ee72500130aa
      770389a216d04d07cc8fc05fe96a6074046bcf49f357023b29d8151c5f3e73ab17b3430144c799e9
      ba0a6cc283af72dc2e84762eadebc9b5006e1b15a79bc8622c4b0eef7de1585fef5c95d0b069988d
      3d832291be51c5159e32778500fed9508552d3f8f4317c1a2b3875f8854bf79e375e2f02700b71e0
      da6c02275bb5ff9691813ef297e58a0f22668c780c54feb0b67b46767c443ae5567a556cb393accb
      6358872435a2c29d8648e4c84fffe5a869698e39ac6bf3cb7d905a12206d530391e2b1c89be4bb4b
      fb4c6453d6ef3f71d46b3cade45fd8af48f4c6a741f698100c420e3a951e6a8f63f96511fc875bfb
      1ade04734b65c0b5ac846727411344d7055a956bf7000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      0000000000000000050000006200000009000000170000006e89ed9ef60c4bfc9dd89afb00000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      1d2d9b761f0b392eec6399ab9ab96bfb17c911b266fa877bbf58897543bc1874494becc91d33b682
      469b3939b699580fa932cb42f6c45bc732d9dd96172f105280a22795d12a3d46dc33b446cadb115c
      15e07ac0f7cd6059a7836a4b633cc9a17b401342bc6bd19f8486a6f1e369375512be7da6582f0b06
      b28bad5836277dade39876c8623303aadf72aa046e9592e8d2132ce297f0047f3973f75f701cea7c
      4b89e05aaaaf5dc2ddf838b691695eed75c75e9b02072a9fe8bbf2c91a2c1c0ee7968edcb84d6723
      219155eb15fcb8a067a1808e02ecac24fe88f9fb363a3377b2089eaa7d768fdf94565350a9ff106e
      10fe3cd3a929de904ad4d7170c947dc10a885a95090bf1515cca91b5db6c11aeb1fca9d01ead1af1
      323301a5eae81d235754571d73ecc4c57c0d039b2efbaff0ac212547eefcede71a9fc3b0d63755dc
      4cb92a927c99aee9d0e1fe57dca394907ddf0d2225b0901d9c493dc5886ad7f083c3f165e38cca93
      f10c49bcbc8a3c7a0129f44d76fa2e0af29c02196605ea469c11943912dcd33f8a2d5953c975d469
      4f87177f76a7f7124be70cc262fe39154826cfc0242c8aadd0a594bbbc9630e8dd47a1afc4da551f
      203e5927bc3435d19238d42dd7d276b2bfb9b4bc40fe6959c3ca083e2a0025873ab363c4d3131f64
      01e2f6c318c5663ddfa1980b8e748de36c470357cdc04237238cf8dea22797b71c4146ef52a8a9ab
      5e17b0e5775b69ea25805a055ec3a4914ec1489679000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      00000000000000000500000062000000090000001700000039324c6f967f582daaabafe700000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      538869e0f12be3a1a7bda77b812022b7a02854749695fe0c0d4e127be690798f77fbb2baaf398b54
      d4023278502651b8c319106cfef706e77dfdb07f556b167525f437bac9aebd4c4a42e432360175f7
      2bf7028f5a1cdcac021d5a3c81e4682ba2180c917cdd86bd3e448a4bc92e040707dd4ad56003cbdf
      8f6f39b45a70da07eac86274f81121d4156b11a51da30a2f899ff88c577c4bd0efed868b9a98dca7
      a47c79243af44b5c4ace5322e3498e987a440980bac6fefcaaa080fbcab7d9a12574a6d3df577351
      aa0ecd18d19e3f49c0f6637c8db56f31428a755a7b4cc96c36f22a61f213772604d984cc97fde5d9
      3e446dcf3103ec920adc413ddcb0a3b7b785f9c34a0b5f6901d00ceb3c1f15290187c06a1d577f2d
      ff46d1da8913206950cf321e1d15f637c45e5ef2ed2388ba4f0769999ad9654e0c57c070e27320cd
      6e45966219542b1c34e5a7d9a1db79a2ccc46baa0e0279db12d552bd5118822c46d497d694332bf5
      eea090a5eb8f8b3daf8ee14de185c280def16fd2b5b40bb0fb2f32dad2e1f0a18794800c6608ff06
      61b3641c5992e57d97a6cb730df9c582521d1be437a13c8d396226371f813746085dc5836cb04a00
      92587b6559ac8a13c95665d51a0bc96627d0f083efb417867f111ecbdcc4bfe5fbb953aa32f4af32
      d7634a828cd059d15a7d4648d4e203721250090dd3506692a8f8bbf64f3669cee9b5adcdc3350232
      89fbf227de6c8f6f44222900db5c84b36db3c5b877000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      00000000000000000500000062000000090000001700000056bc70eabdfa8cea788213ca00000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      0a5cc98fd70a464f04f44bfc06359fc821ecfcfa91a1b4e64470d2cfeb1979b06088e266163cc850
      b45ce6b3632f7e899a9e6ca528349634df88124b42ac3a64c7d7fb21069772777204bba1f5fdf2f5
      e4ed060503b4b17c58ae061e4dadde0df23bd080360e4ab56805ba9183ab8d3981dd1536be104234
      d4fee4ce0b350a044dd91058511e27499cdd9b6a5e48bc475163c1e2105e8ca0789b39124ba4674d
      e4686e3492746d6898b8c3a2902334c25318bbd3842eee83d5fd217deb89902699a86ceec09f50cc
      2f6b3af049329aabbdedf71764d9933e40539d0381efa07ede9350dd5399aaf3b121e85ee10662f2
      757d759f6da1aa9f21a5ec005a123b7dc40f060b9ceec5ac362c664e06016be4c44278b3346a022f
      da8d92c49cac1e5473aeff1aa3fe6336232d5374aa95cd59f9d110e278ec01702c8dfe85f821d025
      121eb7ea0362a33ebf87ebb73aadac432d86b7b162e73914ce7d5f2e4b471d89e33508f4b0e2a1d0
      4a3cf5b3bb03ad238be3ac44aa9f8088f100fc9ac4681b9bf58ac2324a6e3e3513e686a834dd914f
      40c905b98258d44b541b9ef3ca55c13c98c9c2111f68d5df1128af36d8d1b79b9dd4e10b2aea1a90
      ed0e581022cdacce76e24f9f5741bc2deb50d8971498b17782be0b3e282f720efd81f3c6391cd9b0
      ce12dbf6fa2cc59c294beeed283c59cf03513af62d6792955bb6f38ef72e8c4207a0e4fe800ff0af
      716022c9128b41ead0f92fc2899c4d7c5cf25263db000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      000000000000000005000000620000000900000017000000536e25dd0457aab29067e6ec00000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      9ac79862577231a3fdd899bae178d2c78845646311d551908ded7b55bd562b44f73edb49372c9b3d
      1148b998900a9e48eadfcbb02d2c45c1345d0b78b7ccce1a469c4cfebb48b0dc91f8960721093e3d
      a559802126a6e053a5d985c3ddb1e0a19774928eff00b60f490cc3ef8df4bb26c79e8a906b22c308
      13ca44c69de1337aeb5b2704984b1b780499f59dad9850c9a572b9a4abcf23cd56f25a6d728f8629
      9ea3f20e2670d62cfcec2a57f8b9ff3a4964d731164f0a5ca6c4cb547c1155e5220455a2a0b8d88c
      73d4eb150f149d4fce46812f7afe776df1adde347e6f5949dac4655db7dae11f1548c90a605829ae
      c084b35289f181fc153162c56b9646099dd1ab692097cafe76c8466183082c03b06901f2e9c5dbb0
      3d6cac789f11651b2b3eb8d040c424c139e797405044afdd72cad84dee8db88ad6ff3e7c0254950b
      b4ee9f38896fa4f8da21790cc47c7a7bcc122753ad75159d46bb96cac3487bd3b85bff44e7b0a59a
      a88b82d3f07f110c9ec74a3c80c754f8b3303b0f6126ca03e099e6c02665a0ec706718480e1f941b
      9b2b0393c5a9a3e9fc2a53707c017a0bca137a6990b9327fe1c3beb9192eb0eb6f7c19ad240c7610
      fc541c5a144dfc0c013c0668cfa82c8bc8eed737c47e2901939c976907b1f84406358644c28a2cac
      1917dce48b59109603ac9f56dfc8f2bd5e91ab667cde8720c4c5902f8b097abb4a0808e2df27ac28
      e90e41641dcdffef1e6747075374a3b0b172a553c2000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      000000000000000005000000620000000900000017000000cbc96a23aabe40910128849f00000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      4bfff100d287f7ac820881415b51a969aad6965ad7abae1baad522ec551d81de561b6f86583732a0
      ff8b46f25bf9de5c9fe6b0dc2f0e1e643eb2a5bb84297fb5adccb09e004a8a0d0a9979bd3a1f395e
      b527058a9a6cf0482aad5447356d578094dbb8faa2e0364cca9a0d543d93836d770fa22623ada491
      b7973879e11e554e44f7d034ad8c0ebd76e333b76622c7a6872269692df5f2c1fdd7577479a032f9
      904e769b4cb7bd6709b7590a10290f986d18728df4c0cd1b1861ece781305292fafaefcddac29d8d
      b6db09e77ccfe5d1a4fbf79e849787aa58426c7930a72140cda6494f0cb59b62a07b8520fdaa006b
      a64593c91ab9956cc95554f30d2d48635ac7fd9f6208ac84898a1be61559f033c2a84ed25b91b77e
      f014725278181904526ff5019e25858f5122b9b83fb067f31a52dd74da9c1358f360982d5d0daed4
      76b3dc9f92c55f62641d9c5fbdbc92d804f80e71dbf45d332fb7ff0a1fd291dce264f261caa0639e
      e18ffa470f46b9c942cfd34b8843aee6896a258babdb356e3d292ec67eae66fb399b2153188792dc
      20fd5190dad37d7f5fbc12818e6ac01691f3c9b4bf85231f30e9fe81b52258343c08440d219089a9
      38f6eb52b9e470f2b22448c6fbad57e8da5d14c378adfc4182b916a4834eb3d940f0db5105f3a488
      f90c164bb1c35b3d3fddfc57375b0c82ea7fd7c93dce448730f8064a7071a54660804c6b13e50725
      83d05fbfc28a1c650a18e85e6c5406db2304734e44000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      0000000000000000050000006200000009000000170000000ccd959481f2ac68202be96900000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      53de6bf521ad11e55ee416a7fd32f41aa7a3907862ba4927fc4d0baba3c0fc35abbed4f5eb5af92f
      8f18dffde651e4f7d1e8d52fbf8373890aa7aaeda6f82f46b2ee9cced3edc4358373de69af233b09
      1566805e1dc0a85124151f7889e6fde1fba0b1b666bf9eac0a81761d974d89462a550327a9d79e1e
      72f785ee275c98165f3d5d73f7a2b8fe24737b93b1399d7f0d205a7c49f5631176ed3616310a0be5
      5bb6e8be2638b09769976a2cde173c12893d799a7d0b0db57cbdee34168f66f795d917b41b356f29
      a487fb0d9484f6d15dbbb52624d9d92f6a92b0c5e846162ecd78f6e28e5a69131d813910985fe21e
      c9da85b809a5795d728c0897fdf04e4d6c81722bcedccf90761bfb53a38ccfb2a1b747fb2434021d
      27f54711d2bc09d16e6bf4ea19e4738078e2839d924955165cc511637ecfb9b37af0a10c94886518
      b34c2c7b3f85f838e8e0cb4e376fe088faeedf6cb85717c114bc14a4dc7b3ce21de38a253db28f15
      ca15da69ac6caa0a944264c6778ef5295ce22ed2708026f7aa0ee4aa79fab368bc1ee16cce23e741
      1e2c3ad08e126c0b69de2181a136ed14bc173bedd7e98def065fb2da0f9d7cd36403d24aa323766c
      3bf5fa34ac16cc5d413e9d67c8e749c0b3d6690fe56d958b29b31fb61d44b721763fb8da081a43c4
      8dfd4363b5d42941b6fdf982d5a196700d447cce306ceffff965db3373034f680c883be8e44c0ac1
      2e8aa5c743d42043e7d1bfa15d710cf8971506fb1a000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      00000000000000000500000062000000090000001700000044eeadc9425f1a7c88480f7100000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      3aedd6af106708ebf862bb90e5313f14470ba03ebb96bce3c1d40c5928868943085784a9df6ac238
      86a1225f588256f0deac84b8a22d12feaa51a41eba12c5110f325d71ed16a70f6bf2b1a382d09486
      31541eec772f6d2de35db4db159442af25bf3c4a32863f692a21fc2339098c0c0027176f78e172a8
      d2435059bfd3ceb43e450506ee54d6a5871b3393156d27c6ef90203577426968ad2f4b735bdc323c
      3ab8490375ab6056b691e242eaf2da43e98acb3e66f0708a54a0011beaa7dbf1b652189f7a405d7d
      dad41bbd43ff0de7e8c236ef5731c2ec8050941a8a0cb00a09d534079ab860e293f89b98fd195a9e
      9a3597619d937f412424575fc0af9fae6875b238fdb0ebc73b507dadbbeda8083d6935e3a0035ab0
      54c60e8ebe09205b43e4ed4ae636b222e7806e173f2e1705aa5a87023ca11eafef5e20a27fb1d549
      564256906752622b6ccd1bb4191ac9f669df3b718e28ef07799c93724feb3bd6d7d51236fe0f6bc8
      8a1a1f10ed120d0a5ec217ff7ee63bbdb7871d60d7f733e50eb485f0f467cb9a490da9260e0f3afa
      c689b65788007b8e1bccc8619abe70fff8863106a940bae8d1bd0ab5bfe18ef22c79fe0d9cc8527d
      ff9fce03615cff705f9a6152b1658ba1d333102b8bb04c464441df8e16d8797a0544d61dff5081c2
      6eb2695d9302ba40a0d44d4533106e659d10030fc2ddd0bc527858673e76f378f1817e72126d1dc2
      e02efec0d48af2435e91bf0bf9958fbd31a945b0c1000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      0000000000000000050000006200000009000000170000002db1b079afea1d9b0074a9c400000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      4fe9a72e37e98bde087eb9505ee651084b978b308f1c4a1a2f787e696994fd232963d10f9877c2b1
      23bc79929525821347bdcaa03916efdb87d89c5faa79fce8e61dd6d751b5e47ed572aec732c8d11b
      f9933d15f7a6e2e5866c1e86b1fd0d11b4952e308de119bf5f971cfd2cf5d33fc9bc2dd2a40867c7
      ffdf709347bf4e2057534822b81e35824cefd096d6fc081e87bc23142b7602a7b17ef1cd6f248cfe
      50fdabd6dc5e142b59ffd605c91c3c57c8ff8525ed70157abb4d20dc739b9618fea96768071424b7
      58048d4635b8139168929663596fa398bfa5a6c5e24fe6efed7c8bba2542887eda6a6cb09ea51752
      0abf2c9ac64a0ee9476224a03259edce159440a75e73b6ec08eebf6a8b890c9b24d0a31353ac6c22
      72f9eeafbf85ad4bfe83a36962e16a1cf306043e36a4c9d4f59b5466452d13e0f4f7611d1fb7969d
      c8dcd5f833392abc8be41bb7ab667b663cb5fca34370b3e9464396749ffce5bc589edce19bf4dcc2
      fb01e77e951709cc4b91718498342478195cb4822cefddd55074ae9a2c0a8faf93f3604450062416
      d8c79d1dffd31bb88fb51199a90fbd5b08de15117997cdd321ef69ceef8a83252127cb63856c5493
      ed6ed21ed02f3d2553ecc7cb99db8741fa1a6afdf6247b184546f6a13f61b2810f7b585bf0c1e12f
      5049b11e3bc899baed90aed50bc3e74c90152e113a452d737749aac2491118f24ed83ca754e1dc25
      48a6326688387b5bb48a15cde38579ae08b46f04b6000000
    "
    ),
    &hex!(
      "
      00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
      000000000000000005000000620000000900000017000000d0d688119c56eed120eb2c2200000000
      0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
      6982ca2ff344231126d8dfd6ac3a579a1135890c0d0ba2fa3989cf94778934620cb5aa5455861336
      0e8d7adca99c11e0b197d6cc9686b706a56822e59d6eab5a312c9c879cd1942cd9885b1c05b61bdd
      d1bb76becb39847134ee51f8342cee8420fe238480d6be236f4d9a969eba2f46655bbbeadafabf9a
      9a62b8918577e848d8b2c4aa5aeb437e6f21ceeb736d195d29151be916c97e46885fc806e041958a
      770b5c25d731b67bed0bce56c81b92903289bc81598cd29e132569dfece3a6fdc06cafb477f889f3
      7fe66fa588e5fed99af08b027234bbc6e8860f041e8b87cc4defc67322736e13ca3d2edf9767a842
      d02f4b6bc90f6abb6fe5e9fafe6374dfdb5d831f8bd357984863484fb6583c10e2a141a81a8c0916
      f1a50e3533ac45f63ffad1af18c00847c14e9bbce62ab4cbefae174de49ec88fdb92f41ec5672631
      4715912ef11a4c5e2a63272fabae0624e3254ad37eff9c0fc02b29b2741b3ec62177e78bbf6a00fb
      1db76850fefee07ceea19d077e41983e24c8ba44c0b7d36ff4a40aaa50772840792b048d3e1d7141
      fef90de538db6a1f5fd9527f52e490784b4ce81ba7c5e05f12bf4cd39749df03031baaaabcf7a53a
      9ed290c674b42be93e2863e1b0fb385575c124f9a073cc7eee07f22f0a05c6216fea9b4d6e5508e8
      021609abec744af44f89de865d00fe6d8b94d27e5780b53290f5be3cb4f1890996212e4e1005c9f1
      0fbe83992ae03ffb573052c46d60361caf13f508d8000000
    "
    ),
  ];

  #[test]
  #[cfg(feature = "openssl")]
  fn test_openssl_rsa_aes_gcm_fixture() {
    super::fixture_test(
      &crate::secrets_store::cipher::OPEN_SSL_RSA_AES_GCM,
      SEAL_KEY,
      SEAL_NONCE,
      None,
      CRYPTED_KEY,
      MESSAGES,
    );
  }

  #[test]
  #[cfg(feature = "rust_crypto")]
  fn test_rust_rsa_aes_gcm_fixture() {
    super::fixture_test(
      &crate::secrets_store::cipher::RUST_RSA_AES_GCM,
      SEAL_KEY,
      SEAL_NONCE,
      None,
      CRYPTED_KEY,
      MESSAGES,
    );
  }
}

mod rsa3 {
  // This was generated with rust-crypto rsa version 0.4

  const SEAL_NONCE: &[u8] = &hex!("cae362f8e470c3037718e2a1");
  const SEAL_KEY: &[u8] = &hex!("0667d8b8994fdd468c01d50f2f3158730bbd43f4fb761ed0e9dcf00c33de5222");
  const PUBLIC_KEY: &[u8] = &hex!(
    "
    30820220300b06092a864886f70d0101010382020f003082020a0282020100cd590bd0613cd3df5c
    05fb78acb1a80c44c979fe3eca543c1e609b18875dccccd1da0883c231cbae895c2c079793565570
    4fe6fbc4a1fca09f35fa96bb3d65ad2d2c3ea9b79db53481dcf6c49304d6243ce711bea4abb6bb83
    9489e9dc53214a5265a073dfde221e0200ce58ab9574c76d84c0a0e5c01f2302aaae7f85f4e1eaf9
    38704428403892eedd4369a289bcab16713fb458a9c9b21140bc10790f3030313e5d46a3a80aeb81
    d0e7f4c9c640605357ebe43f46449c07dfdabc7d711b4f2ebaf38dcf291267823e784c0d7300593c
    58591bcb10b5946651b9fd37302ed6268158aaefcb601d85c928db73448a97b05259c9b0a86fc366
    47248783e468fcd68901de05d620332ad7def284d556cf78eeadf9fbe023ac4128b74b3c7c7c2a9c
    baca6d3ed7ff33c8a15fd561dfec5038d8efc98cb9367132c08a749ed655b9de95b70a78c58325e5
    c341a9cd693dde17b603f9186c3289a763992cdb4e8827c321e261859e47d998c768a27deddcb5d8
    4bf17744e6d9e97ac06338f69c6de682a77676f951bdc592ef4f24937f3822d217f3128dbaf717de
    a8ed45aebf31fc55aa55954e1cb42a7f7d7c27a06d3595c847fc3d7d7009392f52889325a0552ed1
    49a8c4048ad0aee0ee4749e96269d148c35401cb35b135f77ababe3b7017bb21f89e60c31f5df4e5
    359b1b0bb12dfb56502be657876cedb1e9b8ff8cad72c90203010001
  "
  );
  const CRYPTED_KEY: &[u8] = &hex!(
    "
    7421f4270b363844584e4094f3eeeeb15be50d8275dde0edbbcc5f35ea90db2dddea59ab7e12890d
    adfc2d3a99885aeb2bade0bad5170e595a5a75cbfc9a84da61e74bc8e6d44dd0f02d659ca5b60cc3
    f8efa66a068910c5a4bff41b66701c8850e109152cb9abc0812215fb45ffd36e30944fcfed83de79
    a7b005cb9d99864403c07cd74f12bda5bbefdf57cf52638c70fe291322f80add9fa6ea237f599739
    c5b10e36c927f43f1ad4278f78966692c5f543da9b73f1a8449928e340733881d7d7a0385a4392c5
    e4a83cf0ebf844b34d5b8e8beec2328fd6da418e8edfbcb27a67da585921a6118d26e54c384146cd
    2a4b5b7057a6238b61e377b00cbf99ad3f0f5eb8364885acfbb26622e3f9660bfac5993edf22865e
    f14b20377209a3988dd6d5f95b0895da3012387dbcd002429f891fa14cee3c8c4b66ded8ebe9baa9
    bae7d48a8f3f11590250261976aa07e3ef8e0507b922e2b3d946fcbf5746e4a4502e0e447d87c982
    14dc42854f76806d885e4a0570e893349d541867ed845d504901fb04607eb6967721f6ac7dfad4a3
    276b314f847edf142b62f9aeaa6cafb642576970599291be929e19f4c6513b36c1ffe8bb154df033
    e78f62a02746629113c68f1e66c1ace39ce63e9bb973997a7146e8ecb463cc930f917c417be65bf6
    f355063553b4f8f9f9fbc699f9ab188ae5483d5e12cd0b417b7df55b7dce14cfa5119440739eab88
    0d8ec3e458dae7154e0255d79d43e6b249bbe749e61eb12e04c78443171c29ce255538712c2aaebc
    b8451bb2774817beb1d132900ff87167f43106ac1a68d2e121b83b4428d1116b98c5ca8ad528fa57
    a31d5234acd7bc04077df36fd861a704c4ac4a4c12e683b64b84a645e0bf81cb8bc60f34ca343bd5
    ce2730b8c7d769c45306967c85e98bcd9d1185288a5f02f9201b1f0dd6227a3c04cda6dd0f5553ed
    7ad3b2b8eaec2df5ef4a034ee9f851cd5bbb4160aad2daf44c8cce46dd289b219d519718318889f1
    0bcb9a9a4f35778c001b664c1d5afc776f84d2aab513dc78c7ed17cb1f71feb15299d9a5c5fa32c1
    139e51590beb35fb686302e89c47e8742253bb58d246293523c3ddfd7e2e0e52e717c7132717d747
    5a51f132046d212b8693af7caf4870431a8c52a02c3f793c3a138cd1f2adab713b2545ccdc89b102
    862ef98be5c66026c6c17a3a78322971c5416ffe4cc9706ffa9357294d924a4b03080d9b4f056dbc
    8d578914055064bb41840ac109eb792c3f143a01b408759fd155017ef9990e2c1993cffc01464dd1
    16f6e59ccfc9ad9159cec200b1a82a4d92300bb200ac018396215824b586ed97c8a236dbb3884205
    f07945c2efa0dafdf6633737fa3bbb17af30024cf7a9f6d1c859e933afe7c73da50f844308bb8ff2
    5d6fcea1f18b0547a170a81fa78f550e0a25289f6a5a3b4bf146c0e6f49dfb2c6d40ef7117412647
    3a6a49ff3fdd0325c177a740c7f85202ed351b5df323bdff23e79c980316f54e87435de7f46667c7
    7d5c6aea79fde86f44eb5dcefa54da17809602111cdc4f50b1274a1e001c8bfabeb48086140561a9
    55539982ed2daa89e502f10e3ddc7ad8f651b317cd7ee35a603be85fa33c075fe083c8add662c54b
    fae7c4caa666aad5b9704720382cc20d8e27c1d7c3a99ffe94e539fa86d7fdffefdce5bee077d0ca
    e78e731a9d9c5b8f915a06054c31bd49eac82a5cbdaa0131defd38c9ac376e49615ef02605da239c
    def8c95de04f05a9d760767a8bacf0f8e431fc6dfad379dabe3142c770779f475b739af97832fa26
    cbf7f2b2824eb4234f393931e02eb89b684496111b55bcfe7fdb257241c8e2673172d7baedc75236
    a2a1f59744357f4f613809d4e5abd473fe50d32eaf6865750c9dd97208158a0a124ec7625bb2da79
    371d8ca7d2103fbf4ebd7fa138198b6242258106f4584e079a67d9b4e3965bdf86d180661c193110
    d1ea45590355304abc26d6ecf029d6ca739dcff165420021cf935c4d0ce1d542af78687c2023e1cb
    13523dbdf99728f0affe2887d8853385d5ac769be5e796d9b57f8baf15f82a659fd1304aefe4d568
    c811d6b4ee54fa3638ed28b0b8f8d2f07e9fd32bb7effaa07802123f10a643fd5ea1561ac5875b2a
    94dc15fa0366d4574abbf0ae56f1162174687a53e93ed701fc0eed303948ab4bf3fcd644aaf0e63b
    68c1d5197e1d68c1c44e4f74de92b440d9d561828ec696711413bf9753295f4a87a7b09beb67ac97
    f9130a40a274b0d2bc860afd6f7c28bc05674aca2e801e6d418ac0f46392f10747028abfb5646693
    109ed63f8821a53e807aed4328bef9382618def1bab2bb596d6df4d96b35ac353e9a7603264c0725
    5c5d232e60cd2c69eec40286e5fd4d5ab5bcd5a447cfbd4714d39d302ad02a24c4869ace0557fa9a
    1e43bcc311561ee13746d50b1fc2da47dfedb88b42e1f1d25158c7644fff34f3e8d755efbd6e27c8
    b243ce67e143ffc5ebd79d0b37fcb51411842e170707a0c290b42a452f12685c8c3379374119d238
    d3e6f7ddfedecadf5fc95c54d9c7a57d5ec677ca8f093abd499a47c92bb7c3169c290c4a0312861d
    773533ed1abf97126c3ebc84c1d1e53e8698a93ca7dc64e1450c0f230f0477592a2ea0cebd8deddf
    24468ddcf7c574015c161524dc57f12890b6d53e604b1963e8dd8304329029d5bb13ebb44da74ac1
    799892dfd18c1b738ff40d8af8ecfb1445301115b56184b1adba7921f052570d9fc5f0ddc2d09331
    da5953f9a5f34e802d8c8324a906c448f23df3718f51836b3ca1e6c66f36a89243df05624a013065
    d500da512969dac92cb8c417bb01ff9c3195d5f8b9828712cdf3d42e85ba4357e7319032c042774d
    d0a5947b306ca7b4591704d0e722e1f10e0b3afb8488fc64bbd127125213a225f85ac05ef5ff4c98
    ae0c552e4b099419e4378e8d17f01444d7ef5de161182e73abd2572b332ac9af5937559d95705741
    6b2867c5fd27587d81b31d9d6c65023f9a9fce046ff46de6bd0d44fafafff5031b76ebac2d771ad9
    685b5460f40ee375b3965ca8c583d383322ebd500906f96ddbbc28edcf0bfe7a78cb0f2ce8beaa90
    7f0324f6ce2c34e483987690887c3b404ab864c8e033351ec04db51e0ff3fde8b2d3c77654ab29ff
    bafa38672775a4e5d476bfe539f416d094e502b63c39166c6d17c037cead2faf1f74e233643e1846
    f9cd7df46f3cf876108d26cd8230fce147a5b3a810de67ea8f90aa243d1c9be816577d7b62bfcc3b
    3f3d18bc7361399aa71693ad3c1b9d7c4aba2c0f8b00c8a3e6fdb3ea7e44872b0bd54478a726aeb0
    36831895e822
  "
  );
  const MESSAGES: &[&[u8]] = &[
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    00000000000000000500000062000000090000001700000053e3e800bcee95089806aa8c00000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    92731a5adf38430f2dde951023ab67cadd05afc5fd54055f952ea6bda32a5465f5e3592064cb4dc3
    025420710a1550b3494fc290cd5008a4ca29d60b8dbe75838bce7043deec6ae9e8b5b1b3771ff8db
    4bfd29d77bda84a3d3be43d2b8793ef9a8cc76c7d38c905ad1691c7e6682bed5a8b54bf84cb4c5c5
    47fce0c169d2f2d38a968a77e7721b8f8fdfd2a470993d620b12cc4b9cf605d1f8c469337549d806
    e6c38bac9b44d6a87c6eea04dbbee2db19a472fda027ff91ec15342d1e806e8dc6caa3442ddb94df
    e637b1c3f67387ec4eaf453b3be40439f61c607e2f95acd802a3759d05d829aa6104222183edeb8a
    2dbd2e87d6c48a445de9a53cd840df2a1d7c7a8bf7cbacc8e00673cf3762417c6799287d348f5e5d
    bb122754b9535b8d72ac1ab07b763e3ecb6925f56cb24ded7078ef934ba5b5d76f44bc989ef4f318
    ab8d27fc266647cce51e637e97881c35c894f9e8a556b9230be67ca1f3aeb303b63aa55c7baa10f1
    f2200c4f8a33d12a21ab86bf717432ae918db632d1d9e8aef6e051aac3db35d33f78b6fa5f356d7e
    449eab03983805cea34d6c920ac990ebeba6d99d776858efce2112a6b5e56f11f08367b96fecbfff
    efca5feb6f6440b5e3da7b45172e519edb086d2f898bf683699a4fa0250b43209b0ad6d01366c7f8
    cef96aca851e8fa0a0e7fbee27fa3bb9800dcadba207849e7a3d200b3c4895b4cad589d9e88a0d10
    73a42e32e818c82ea1563ded598b5ace52fa28b800000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    00000000000000000500000062000000090000001700000037acba4e1b6228a379cc95ec00000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    7a8a56e7a2bcb71065e46c71b9e867e8e8827dec820835424fea436f608433b75f651ad62309435c
    97803696e361d0044011f029762b2a12ed53fc9464a48b5c82f4c3607973500c4bdca2cfa0d5e7e5
    5a18720ce57f609a25468de0388fececf8817952a2649b0fef293040ea410ba38d23d5b007d94f4b
    4956ac4ec9cf3187529c93ae65aa009871de2e04f9992564647cb3266774279f859f26ec1b5fd362
    89faf0449f81448cbd148c727072bf75ab3f3c9c483c0b2132c44159082c835ffd5c4036a0b3fb68
    1ff229c4333492c6fd67498251ff72e31fbf708c5282df0928180390b4fa439c4928fac0de597484
    0373c52ad2fe687a65a9a9c45e39829004ffe9e3e9cd8858d0f6ece0cfcd4d3172bf0440af2db0e4
    cf32bd5a8852ebc0f5da0acfee8bd4a18dcbe6d197c997fe5a0190481bef040487e44f48946afdd8
    2e655893af5270cc480563e91d4be60c166a1a1c42eab04de77f8915403fb9e43649994a1a8835ac
    01fbf244cad30b5ab40b2cc0f4e2ba3dc71fb866d7052512f6408cbd54ff8eb7cb8091bf7b0a73fc
    39acb57b459dea70902df70ee3e9bb7558757dbcfb00e04aafdfcd04761033650c7b50fa30ada421
    a853fac26f34a9d05394ece5027ab8a2e3ca8602b31d6eb39c7ffa8ddc10992f3b71f1867cc729fe
    8f4b1397bc4f2bd4e7a29c74d1cd6bea36124e728a1fa4d2b486fdcc08c6ebc0f146a0cdc9ceab5a
    de9df27d5e79f33d636e47717c43b8b5989a9aebf4000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000cccbd6e3cddefa51db110d2e00000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    c5fd91477d482acf1b5b5ec3949f1f73b2953ee17ee9d7dea49a99e97c8d16f152e78d9055471e80
    7834b696e473a7a7348bdf55b2b867c144b29ac0034f92d4b9c9d1d9783f164db9e5e634054151a3
    ba4db639d05375661f65ae30ca09cfc3ce9cf7a0dc52bd8212ed7b29d6d571c871d9d8d8b4d88946
    dfcdee4dbca7a08d60e38cfa58986795e7d94676ad55c04ea8a0ceef0f1e8696b30d0c2b9db10307
    429fd5c21b4eb02f6020a7f5b664dcc9dee0cda4dc8ae6cea5175e404591c11859161e23fbfcabf8
    dfbe4537eefa4570130d2b41928cbc876b953ba488fa16af186e3294986c26ef6b8aac1e2f821acb
    a618dc25a73ce436b42e9399bbbf80c00334214839c98f50c6a92cb5c168bb52c54bd2df917f0f00
    9be0bea99cd736d85a54e0f287d6e728eb4422fb02291a17794b20a838c86b4a51a94186493b9f8f
    b4a8b6aa41d719889a1ac3e1ef24cc1434a45a744cd72e872ea080ce9e92cf7f4cd398ad2ef061dc
    305e9f4ad8374ae6ff6697d89ecb6879523ac3950ff9e4c956af83dc87c33678fddc5f9a70e854d5
    dd6b4b67f40a3c451c1828d4b2552143723947b7db738c5cf335d958532a8895c6bf679705ef9f7d
    b0674ef23641e1b4e88b758bdf4b4cb3afd2b643ad72c63051b2f45bb40a79e9cc1361ef331eb71d
    19b14a4ae92275a9d5091709cb9ec8ea7b8d4c4ec2f414c5ee7aecb76df4e1db71a7cac41d66eb96
    2e5d74d82b030ea8fee14263fa67ec33ac90344470000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000eded5278253180327b453cf000000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    581cfb9e8fe09a033f3c00b1570d74919149ef833c4d3776765c1cb8bd6b3b357929f250fe9586c3
    f1e96ef32f64f960bfb316469c6fa37d0e95476daf27aeb07543a252337157b3ef7f1477c81fbb32
    1bce6a92dcb8f9845643a6ed73208a71361675345de79cd904aba4a84dcee73bb76085705fe61bf0
    f2f0e0a9f200a3e61966a01bd3ced2e06578dde20d2342bbf6568342b931edfd3ab58b9909a9cfab
    340d8efcc0b31c095332153a22e405e9e80566695ca89f07126e994eb3ffe099e9f2c89fa09e5f41
    0f57fb9a470ff29511a773ba7bacdbd29f59aa512971405ab08b016610efb316b67d3303d6d4cdc4
    2b0cfe17b1aa50e6006d05227a6d51111b243dbc392bd13c4947d340373a028efc19a3bb43cf49e3
    62af57b70e5f2a7db84bbf9e0016f5cc762118edde414f6d7994c64d1f3663eb9e07635a57ffb98a
    85e9832c831a7f5be3cfaac30f86271255aa2e6527138e8bec3d3042e05f934e7dd72b8107760db4
    667686533958ee9aebf03a3a56562b5251f2c02c0e70494b065dc60f31ed0a51a2888e710cedfe3b
    3c668f8837b2b37dda55853996e18350e406dbe4e034d3f5776a11aecde963a838b94fdfd2ffcfcf
    82e2225981848d23d538f0fb2ffa39de2de7f52009dc8effe046078d695509edfbc7eda80d3ec854
    279cc3719ab6fd4f735feb1acc90ba5cb16145a50739f95a9580f1a15721cb025f4f18b6e5e76a90
    daa3685a205f654755a1c440a399388dd0245e1a45000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000bb734be36aa8534dd5151a3100000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    3c05c2b8c24a755c70abae48bf0a2ac22032e484c6353b2747501525efae67bf062e89001071b5b6
    b29725c5bbe3feb89e2e60984fd05733abaee69e8eec3df1d89bb397b5f8a4192b4c180db42fde71
    2a0ebfda6ee0b2c1af8deec2745502dbec3cd981f7dcbf3cb58b7010404a617953650b4d04a6ccfe
    47aa1a3a986eb60ece80175a535430e4178ce2e3ae9c75fc228c104cc8fd4501b376c1eef0a4cd6c
    a7443ad4a56da3f106345810866f00d8b43f29891ad9d5aa3b3182a28e238aa3180d8853d46443ad
    3db999dba4cd40131343639131d92e76b1a61de19a8f90e6fcddccb117b6664b31ac3167d2e34792
    03f7c478fc3f1abb4a582c4462d63463488b600e52d075c036b340eeffd8e1f181c152764931cbd3
    8d6edac0842affa8061e141656fcc470adb23ea39380b8ac2c6a029c8183c2901f07a305af4c7a4c
    094828f0accd10627c7b296311a938c2b2f31b26866d4e1ec9488b35bbf0b8244b01f690817fb647
    198d65194ec468a1f0aec3be83659b3100242068db5eb11e5464ebc5d8f155fe1f784650ea0dc65c
    45d436512db41a84e1bb73466639c1953f490b0370e58fa61a066a68b6a0700363554934dffcb781
    ae19da995201d925e105ce1ad6373f65200f0bc4936c9f2002a1615e02fece27669c8003ddfd62f4
    536428815122c636ccd42a3cc4eb8d50e7b95ca32cf1caf108c04eb7658cfd280f40c888775ca663
    49a1cbb11745c8fffb4b21cdfacafa9af4a40a5030000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000d8bd10e19a47316ad227b26600000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    8a376b430e2622060f4f33d441364d4a4e80720ac6c100da244544e8c66cf804e7ccdf09da0d6b6c
    50d74b76ed463058b465e2202295703c9e54bf61ef75371600b07b6ff2b18fd1551a92130e5aa086
    85194a0caf898f8c717645df15596be8e4d7dca2827057c5b3bda0cc01cd5a5b8f20eab6dc44b625
    517b87fc92474f74fba7ad4804f602edf27bf3f3b01f0eb8cae7bea99f1f2d20b873e856132a7f39
    cdc59268704de6a8af3d9df2d3aabff863fda560b391f75dfa4f5d64fdac001cd11c144a2be65b9a
    ac2af497ef223f1d81ab8b7514e642aee9f39f0b4f1bd9f7324efa5b42c3505174e380216109c146
    b2974cb4391e93eca7c87c4eb5242a143a7b7a1ae4ef7d7204516c59b90d12a3588ad28f4da88d08
    a952816a840e40bea4cd3a44c913fd1214b800ec226d5acbc00f7056f1a16db4c4d66e6a57157f04
    e54957252bcfbb8ec5753ed5233cfd9ce3eb0b241a32ca1c229510740394f76003fbb5c417c2f384
    169b2283d32ec071249548a757f8c8800a67ad39c407dd6043f99ab8c5502e5438e660a552f7475b
    fd03ddf0e46613e9842fe574adf7c1f96e7513d6f6d58a996d3cf3522a880a86fc79d8a8bb07c116
    6bf2a5b475b667f73a511394a6f74fa1774752946ee2ddd6f373836b913bf7d562a1baf7cb821a5c
    1fbbe8391d7c4c4ec1cd618d5d2430ee86850759be898481ea8fd74a4c4a1826907e6ebadcf71b74
    5d1593d4d9cb54cabff83e9bd030309f769ecf0f09000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    0000000000000000050000006200000009000000170000007a978e846d4359030170e7d700000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    3a207a34d335b57bcbd303b77080221defbc66bc20ddebda64486428e07857167fb16349e9111fea
    590400b127741aaf2f8f5b6b4eb4accbb7881df0fff3af1a4322446ddd7cf6d538dca6414322b8d3
    eb8ddc8faf18bb84e380731e77b8c03ffc127548c2c60dc7fb9402e378a7eabfb3489e109f29a906
    58db9bd7ee1c8f0c5441143abd00047bd830fd152d0396579928d36bd2d2f22aee20a60d543887ea
    30847dd56ce541a451b39f5fb7f6992858dfc2b0f3e4a771fd55a79ea78ab8fff316b68ff5639ce1
    7be2260a032d8616f60aab3b1d0fd973f9aeb7b859397d1ad315ec9be6af99807187b9e49a727c28
    5a95dee0bf84d7a8f0439525df80a556b3a54ff5c000da46ff6f4310231dd823ea114776fd84caa9
    0761f83f4d8d24a130854b4aefef91b8a361ee26fc1f3e1bfa4666211068c4cd7c22bd1dafe307be
    7fa626b3ef8c42d84a99d753172c2c8143d44f3468abbde1c5c96bfb2efad52ce6da1ec796ce49ba
    8c3477307b71d42a64b0604e768734d2ef1ae952c30614a198954afb1748a64106588c33f8070209
    401cf598580f79f8f264605044cd0164ee9aff80a7fc95f8672f5f581ad058345591539c2fbf3a0c
    2aeee994f035f3b1fc81b4070a199731f239a082378e2ab882c70deef02d1d1c996464a0a8a4acf8
    ee8befc5797d370db1f2bbcc74968b9780612cd9d863e0c1dbb84dd39790ef7ec246d3727087f77b
    896303f248fd4b1fd2a8cb725479adf4d68d5b4888000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000f4376c944e463c7f84e6473700000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    1e4c69c5592ec511c6fb774df41d77d8b8423e6ac5cc23be737d9aa57ceedf688025ec06a594accc
    309c6d4f2fd6ddee5aab29299400cf04dfe0b6f755c0bd2e241aa13aa895cb59fbcba260a64b6f57
    65055d1f0be6f620636cbf4af4c06d480fa601f79b8506df5f1445b4e51351ccdc73efdc34932481
    8bdea9c6ac2c6d710721d20fa1c62f2d1a1adc7c948099b9262f66c2b69cae82f0c7f6b6b08ff416
    2a60f13e82d13b66d03f4cfe1bceaae1a9e4acb0db2b406079e8f87b16900eb78af05b515ba206b1
    37dab81f4eef38d562288c6d0675a51db99b7c8aab2320f7b68b890543e87df5b12a7e5e7f9ca9d8
    957e201a4cac3790ae5240c843d31c3465e63b310c50b109e1800f37284c59a1b8b2f49d1f29226c
    e550a52b869978ced45f991cbc85071cd97456c904f126802dc95e814d8adc6893dc7c9d4646ff5a
    4eb3bcb124a0a99aba67fd3413b57e333ab49e56b2356e803b620f18a106e31afae13e4f3ebeec27
    e9d3ef41ffb2c864cfdb8cdb83c8ee19053af830b0461ced80db7f370fcd133781eaa11c11384005
    654759a2c4419a9de85abb42ea3a3062e7d5d9428010ee81f2aa44c8430af37dd7ecb9dd6287ae60
    fb5dabd59bcd7b75f564a39ad3200fa63f7951ff40410b96f61bd736b5b055356b8f4a1c3d212f28
    4e5a37ccfbc9725ee7591f0018b67f4fb61902be9402b2eeadc103d2ee8a9c3dda42f56dec936d3f
    d95ef2f0c803a3651172ded070b84923cb3ece2629000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    0000000000000000050000006200000009000000170000009daae7600066b2b7b912192400000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    46c2cbcb410c5c65f5a10e072312ff00c7e8ccb49741d8a3df359bf53a6297c1e7d4a6a691ab7c1c
    e1f2594d9bf4fd8a67dc584ec3990e9fcdb8fd60d8719e0ddfca7164a62e6dfebb2bfff62c133c27
    998d3eddb002c1aaf12d64fde7aae1825596edaa8ea3a6027091a2b9c09992e85bd2a6500a2a0d79
    2220038a6063aa680305354c3571e1a745187a470a3700777ad1f2fde73983d9f82d9972bf6a0991
    17c954f01067545988c8622352047fb6b8b0cb076245dc15e77542995f258dec6afe4ee792a0c911
    47d07b526e31e2ffba01664c90d9a9cd92f0d63ce0ac197a1568ef85c2ea99708919ec72cce9d629
    68d45f7c54e1279d9afdd00ffbda7095222a64248149807efc8c2a37d994a9d4f1130c48ce55fa9b
    9ac0207ce32e01cbe612549e2ac93b333228e806f774bb288bed03325e3ed8fa3224cd214bfaa734
    85c2756ffe1a61a8dda34719e93c32fc12ee3f1a66e55c5999f10defe476b249cb72d2baf1651091
    86e439e4e1da0c62fafd49659a97be4e622c58621fb476e52d431c3fa14e64c18128418ddc137001
    cb331378ccdfe126d97043c2e364bf1de075106fe4b742ac78d2f92a6d0ce30d1070e41990094993
    5c847bc74395fdf5e03ec1a29b768c1d0a46b3cd72b80c4612a3b4df5e055b4e674d53ae8ab0738e
    947a52952667e896cfd52a3bedab4da9c8556f837376a6024b8480f32826bea8624ea48410004806
    8957fe8c36e6a398fd1f818d4b3e3c16824490e915000000
  "
    ),
    &hex!(
      "
    00000000520000000000000000000200050000001f0000002d010000ea0000000400000001000200
    000000000000000005000000620000000900000017000000ce8faf6d34dee018567f2d7900000000
    0400000000000200050000005a0000000900000002100000726563697069656e7431000000000000
    6b7eb1baa12aa4511721e79ae68ba49572fb8bed7e3ac7af28c36daafd6e5ba78f46f5a41792cec4
    0d5013707e57661980b15405470abc6a4760392f51e11b5789a9c2e5940cbf02e99e5e60fb69f513
    2891905696f77285d53228ceeba426e1ed42d8e8c83aa9702af70bbfb69d6a496bb97fb9311953c9
    cded4c828b6e4d994791eda5cd77d51da0435b67ec08c99c6cb8ac192bb6c6c596e519f5b14ab3fb
    7efaf7d4ad922a9c1869702ed314f5d07af923b8cc4ca879d30766a5707658f1170ae199e72c723c
    9c4264c22a6c912ab65e22f6a5043ebd774d65da2c6cd0f5d7bdfef7d18b30f4af0310105556b50e
    1bd901b5c2b9506c0de3b2bdbd87a216c3f59da9ae4cacdbb09688e9b68353ffd6b1f3481112ece5
    4c4e6e3c699cb1a681f1b882dcdc5b577a5ea406e71e9d7e513069a8229b95a2b05bc2de66aa0ee3
    24da843a9eb88298ad04cbc15ba540a0c51af8be80817dca8eab426c4d2fedf3ab4b93d19ac8bf85
    457ec1f117ae50c86af0be106251005866071b3d0ef2acc09205b9c4088dc2b85a09ca83554e1f0b
    9f4acc330ee6716620085cad97adebde3e3f41758af89d381155cc13529f12f34bb04d508fac1cf9
    726a412497c74d76b077124d4c24698ecb228809595b8f9b7c50665bfd8639661bf8ae1005b00ebf
    bd8eddd1388527ad7a1ff3fa8aef7320c992d2daf8097008e8a2e9682883dbddf8404b39dd56e74e
    5a6d5eb242d527e81a3b0d1c58a501c971ce7ae862000000
  "
    ),
  ];

  #[test]
  #[cfg(feature = "openssl")]
  fn test_openssl_rsa_aes_gcm_fixture() {
    super::fixture_test(
      &crate::secrets_store::cipher::OPEN_SSL_RSA_AES_GCM,
      SEAL_KEY,
      SEAL_NONCE,
      Some(PUBLIC_KEY),
      CRYPTED_KEY,
      MESSAGES,
    );
  }

  #[test]
  #[cfg(feature = "rust_crypto")]
  fn test_rust_rsa_aes_gcm_fixture() {
    super::fixture_test(
      &crate::secrets_store::cipher::RUST_RSA_AES_GCM,
      SEAL_KEY,
      SEAL_NONCE,
      Some(PUBLIC_KEY),
      CRYPTED_KEY,
      MESSAGES,
    );
  }
}