1--
2-- crypt() and gen_salt(): extended des
3--
4SELECT crypt('', '_J9..j2zz');
5        crypt
6----------------------
7 _J9..j2zzR/nIRDK3pPc
8(1 row)
9
10SELECT crypt('foox', '_J9..j2zz');
11        crypt
12----------------------
13 _J9..j2zzAYKMvO2BYRY
14(1 row)
15
16-- check XDES handling of keys longer than 8 chars
17SELECT crypt('longlongpassword', '_J9..j2zz');
18        crypt
19----------------------
20 _J9..j2zz4BeseiQNwUg
21(1 row)
22
23-- error, salt too short
24SELECT crypt('foox', '_J9..BWH');
25ERROR:  invalid salt
26-- error, count specified in the second argument is 0
27SELECT crypt('password', '_........');
28ERROR:  crypt(3) returned NULL
29-- error, count will wind up still being 0 due to invalid encoding
30-- of the count: only chars ``./0-9A-Za-z' are valid
31SELECT crypt('password', '_..!!!!!!');
32ERROR:  crypt(3) returned NULL
33-- count should be non-zero here, will work
34SELECT crypt('password', '_/!!!!!!!');
35        crypt
36----------------------
37 _/!!!!!!!zqM49hRzxko
38(1 row)
39
40CREATE TABLE ctest (data text, res text, salt text);
41INSERT INTO ctest VALUES ('password', '', '');
42UPDATE ctest SET salt = gen_salt('xdes', 1001);
43UPDATE ctest SET res = crypt(data, salt);
44SELECT res = crypt(data, res) AS "worked"
45FROM ctest;
46 worked
47--------
48 t
49(1 row)
50
51DROP TABLE ctest;
52