1#!/bin/sh -e
2
3set -e
4
5
6echo "test => $0"
7
8case "$(uname -s)" in
9	Linux|CYGWIN*)
10		SHA1_BIN=$(which sha1sum)
11	;;
12	*BSD)
13		SHA1_BIN="$(which sha1) -r"
14	;;
15	*)
16		echo "unknown system."
17		exit 1
18	;;
19esac
20
21
22PASSWORD=aabbccdd112233
23
24rm -f regress/test_export.kcd
25printf "export -k regress/test_export -e blowfish -m ecb\n${PASSWORD}\n${PASSWORD}\n" |${KC_RUN} -b -k ${KC_DB} -p ${KC_PASSFILE}
26
27if [ ! -r "regress/test_export.kcd" ];then
28	echo "$0 test failed (unreadable export file, blowfish)!"
29	exit 1
30fi
31
32if printf "${PASSWORD}" |${KC_RUN} -b -k regress/test_export.kcd -e blowfish -m ecb;then
33	echo "$0 test ok (export, blowfish)!"
34else
35	echo "$0 test failed (export, blowfish)!"
36	exit 1
37fi
38
39
40rm -f regress/test_export.kcd
41printf "export -k regress/test_export -P bcrypt -e blowfish -m cbc\n${PASSWORD}\n${PASSWORD}\n" |${KC_RUN} -b -k ${KC_DB} -p ${KC_PASSFILE}
42
43if [ ! -r "regress/test_export.kcd" ];then
44	echo "$0 test failed (unreadable export file, bcrypt + blowfish)!"
45	exit 1
46fi
47
48if printf "${PASSWORD}" |${KC_RUN} -b -k regress/test_export.kcd -P bcrypt -e blowfish -m cbc;then
49	echo "$0 test ok (export, bcrypt + blowfish)!"
50else
51	echo "$0 test failed (export, bcrypt + blowfish)!"
52	exit 1
53fi
54
55
56if [ ${SCRYPT} ];then
57	rm -f regress/test_export.kcd
58	printf "export -k regress/test_export -P scrypt\n${PASSWORD}\n${PASSWORD}\n" |${KC_RUN} -b -k ${KC_DB} -p ${KC_PASSFILE}
59
60	if [ ! -r "regress/test_export.kcd" ];then
61		echo "$0 test failed (unreadable export file, scrypt)!"
62		exit 1
63	fi
64
65	if printf "${PASSWORD}" |${KC_RUN} -b -k regress/test_export.kcd -P scrypt;then
66		echo "$0 test ok (export, scrypt)!"
67	else
68		echo "$0 test failed (export, scrypt)!"
69		exit 1
70	fi
71fi
72
73
74# This test must be the last one that writes test_export.kcd,
75# because the cmd_import.sh test will use this as its input.
76rm -f regress/test_export.kcd
77printf "export -k regress/test_export -P bcrypt -m cfb128\n${PASSWORD}\n${PASSWORD}\n" |${KC_RUN} -b -k ${KC_DB} -p ${KC_PASSFILE}
78
79if [ ! -r "regress/test_export.kcd" ];then
80	echo "$0 test failed (unreadable export file)!"
81	exit 1
82fi
83
84if printf "${PASSWORD}" |${KC_RUN} -b -k regress/test_export.kcd -P bcrypt -m cfb128;then
85	echo "$0 test ok (export)!"
86else
87	echo "$0 test failed (export)!"
88	exit 1
89fi
90
91
92rm -f regress/test_dump.xml
93
94printf "dump -k regress/test_dump\n" |${KC_RUN} -b -k ${KC_DB} -p ${KC_PASSFILE}
95
96if [ ! -r "regress/test_dump.xml" ];then
97	echo "$0 test failed (unreadable dump file)!"
98	exit 1
99fi
100
101SHA1=$(cat regress/test_dump.xml |sed -e 's/ created="[0-9]\{1,\}"//' -e 's/ modified="[0-9]\{1,\}"//' |$SHA1_BIN |cut -d' ' -f1)
102if [ "$SHA1" = "$SHA1_COMMON_1" ];then
103	echo "$0 test ok (dump)!"
104else
105	echo "$0 test failed (dump)!"
106	exit 1
107fi
108
109exit 0
110