457be52f25d977ea279d97a3c170c8eaa5f29fc5
[p5sagit/p5-mst-13.2.git] / t / op / crypt.t
1 #!./perl -Tw
2
3 BEGIN {
4     chdir 't' if -d 't';
5     @INC = ('../lib');
6 }
7
8 use Config;
9
10 BEGIN {
11     require Test::More;
12
13     if( !$Config{d_crypt} ) {
14         Test::More->import('skip_all');
15     }
16     else {
17         Test::More->import(tests => 2);
18     }
19 }
20
21 # Can't assume too much about the string returned by crypt(),
22 # and about how many bytes of the encrypted (really, hashed)
23 # string matter.
24 #
25 # HISTORICALLY the results started with the first two bytes of the salt,
26 # followed by 11 bytes from the set [./0-9A-Za-z], and only the first
27 # eight characters mattered, but those are probably no more safe
28 # bets, given alternative encryption/hashing schemes like MD5,
29 # C2 (or higher) security schemes, and non-UNIX platforms.
30
31 SKIP: {
32     skip "crypt unimplemented", 2, unless $Config{d_crypt};
33     
34     ok(substr(crypt("ab", "cd"), 2) ne substr(crypt("ab", "ce"), 2), "salt");
35
36     ok(crypt("HI", "HO") eq crypt(v4040.4041, "HO"), "Unicode");
37 }