summaryrefslogtreecommitdiffstats
path: root/vendor/base64ct/tests/shacrypt.rs
blob: a69f7c7d14dcb068554cd60fe2cd0764340f5866 (plain)
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
//! `crypt(3)` Base64 tests

#[macro_use]
mod common;

use crate::common::*;
use base64ct::Base64ShaCrypt;

const TEST_VECTORS: &[TestVector] = &[
    TestVector { raw: b"", b64: "" },
    TestVector {
        raw: b"\x55",
        b64: "J/",
    },
    TestVector {
        raw: b"\x55\xaa",
        b64: "Jd8",
    },
    TestVector {
        raw: b"\x55\xaa\x55",
        b64: "JdOJ",
    },
    TestVector {
        raw: b"\x55\xaa\x55\xaa",
        b64: "JdOJe0",
    },
    TestVector {
        raw: b"\x55\xaa\x55\xaa\x55",
        b64: "JdOJeK3",
    },
    TestVector {
        raw: b"\x55\xaa\x55\xaa\x55\xaa",
        b64: "JdOJeKZe",
    },
    TestVector {
        raw: b"\x55\xaa\x55\xaf",
        b64: "JdOJj0",
    },
    TestVector {
        raw: b"\x55\xaa\x55\xaa\x5f",
        b64: "JdOJey3",
    },
    TestVector {
        raw: b"\0",
        b64: "..",
    },
    TestVector {
        raw: b"***",
        b64: "ecW8",
    },
    TestVector {
        raw: b"\x01\x02\x03\x04",
        b64: "/6k.2.",
    },
    TestVector {
        raw: b"\xAD\xAD\xAD\xAD\xAD",
        b64: "hqOfhq8",
    },
    TestVector {
        raw: b"\xFF\xEF\xFE\xFF\xEF\xFE",
        b64: "zzizzziz",
    },
    TestVector {
        raw: b"\xFF\xFF\xFF\xFF\xFF",
        b64: "zzzzzzD",
    },
    TestVector {
        raw: b"\x40\xC1\x3F\xBD\x05\x4C\x72\x2A\xA3\xC2\xF2\x11\x73\xC0\x69\xEA\
               \x49\x7D\x35\x29\x6B\xCC\x24\x65\xF6\xF9\xD0\x41\x08\x7B\xD7\xA9",
        b64: ".3wDxK.Hmdmc09T2n/QOebITpYmOAHGNqbDo/VkSLb8",
    },
    TestVector {
        raw: b"@ \x0cDa\x1cH\xa2,L\xe3<P$MTe]X\xa6m\\\xe7}`(\x8edi\x9eh\xaa\xael\xeb\xbep,\xcf\xfe\x0f\x00",
        b64: "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnyz..",
    },
];

impl_tests!(Base64ShaCrypt);

#[test]
fn reject_trailing_whitespace() {
    let input = "OKC9tOTKagohutGPa6/n4ij7LQjpxAPj7tlOOOf5z4i\n";
    let mut buf = [0u8; 1024];
    assert_eq!(
        Base64ShaCrypt::decode(input, &mut buf),
        Err(Error::InvalidEncoding)
    );
}

#[test]
fn unpadded_reject_trailing_equals() {
    let input = "OKC9tOTKagohutGPa6/n4ij7LQjpxAPj7tlOOOf5z4i=";
    let mut buf = [0u8; 1024];
    assert_eq!(
        Base64ShaCrypt::decode(input, &mut buf),
        Err(Error::InvalidEncoding)
    );
}