]> git.proxmox.com Git - rustc.git/blob - vendor/base64ct/tests/crypt.rs
New upstream version 1.70.0+dfsg2
[rustc.git] / vendor / base64ct / tests / crypt.rs
1 //! `crypt(3)` Base64 tests
2
3 #[macro_use]
4 mod common;
5
6 use crate::common::*;
7 use base64ct::Base64Crypt;
8
9 const TEST_VECTORS: &[TestVector] = &[
10 TestVector { raw: b"", b64: "" },
11 TestVector {
12 raw: b"\0",
13 b64: "..",
14 },
15 TestVector {
16 raw: b"***",
17 b64: "8Wce",
18 },
19 TestVector {
20 raw: b"\x01\x02\x03\x04",
21 b64: ".E61/.",
22 },
23 TestVector {
24 raw: b"\xAD\xAD\xAD\xAD\xAD",
25 b64: "fOqhfOo",
26 },
27 TestVector {
28 raw: b"\xFF\xEF\xFE\xFF\xEF\xFE",
29 b64: "zyzyzyzy",
30 },
31 TestVector {
32 raw: b"\xFF\xFF\xFF\xFF\xFF",
33 b64: "zzzzzzw",
34 },
35 TestVector {
36 raw: b"\x40\xC1\x3F\xBD\x05\x4C\x72\x2A\xA3\xC2\xF2\x11\x73\xC0\x69\xEA\
37 \x49\x7D\x35\x29\x6B\xCC\x24\x65\xF6\xF9\xD0\x41\x08\x7B\xD7\xA9",
38 b64: "EA2zjEJAQWeXkj6FQw/duYZxBGZfn0FZxjbEEEVvpuY",
39 },
40 TestVector {
41 raw: b"\x00\x10\x83\x10Q\x87 \x92\x8B0\xD3\x8FA\x14\x93QU\x97a\x96\x9Bq\
42 \xD7\x9F\x82\x18\xA3\x92Y\xA7\xA2\x9A\xAB\xB2\xDB\xAF\xC3\x1C\xB3\
43 \xFB\xF0\x00",
44 b64: "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnyz..",
45 },
46 ];
47
48 impl_tests!(Base64Crypt);
49
50 #[test]
51 fn reject_trailing_whitespace() {
52 let input = "OKC9tOTKagohutGPa6/n4ij7LQjpxAPj7tlOOOf5z4i\n";
53 let mut buf = [0u8; 1024];
54 assert_eq!(
55 Base64Crypt::decode(input, &mut buf),
56 Err(Error::InvalidEncoding)
57 );
58 }
59
60 #[test]
61 fn unpadded_reject_trailing_equals() {
62 let input = "OKC9tOTKagohutGPa6/n4ij7LQjpxAPj7tlOOOf5z4i=";
63 let mut buf = [0u8; 1024];
64 assert_eq!(
65 Base64Crypt::decode(input, &mut buf),
66 Err(Error::InvalidEncoding)
67 );
68 }