1#!/usr/bin/expect -f
2#
3# This script test OP-TEE rust examples. The return code is 0 for
4# success, >0 for error.
5#
6
7set timeout 60
8
9info "Test Rust example applications:\n"
10info "Running acipher-rs...\n"
11send -- "acipher-rs 256 teststring\r"
12expect {
13	-re "Success decrypt the above ciphertext as (\\d+) bytes plain text:" {
14		info "Test success\n"
15	}
16	timeout {
17		info "!!! Timeout: Test failed\n"
18		exit 1
19	}
20}
21
22expect "# "
23info "Running aes-rs...\n"
24send -- "aes-rs\r"
25expect {
26	-re "Prepare encode operation.*Encode buffer from TA.*Clear text and decoded text match" {
27		info "Test success\n"
28	}
29	timeout {
30		info "!!! Timeout: Test failed\n"
31		exit 1
32	}
33}
34
35expect "# "
36info "Running authentication-rs...\n"
37send -- "authentication-rs\r"
38expect {
39	-re "Clear text and decoded text match.*Success" {
40		info "Test success\n"
41	}
42	timeout {
43		info "!!! Timeout: Test failed\n"
44		exit 1
45	}
46}
47
48expect "# "
49info "Running big_int-rs...\n"
50send -- "big_int-rs\r"
51expect {
52	"Success" {
53		info "Test success\n"
54	}
55	timeout {
56		info "!!! Timeout: Test failed\n"
57		exit 1
58	}
59}
60
61expect "# "
62info "Running diffie_hellman-rs...\n"
63send -- "diffie_hellman-rs\r"
64expect {
65	-re "get key (\\d+) pair as public:.*private.*Derived share key as.*Success" {
66		info "Test success\n"
67	}
68	timeout {
69		info "!!! Timeout: Test failed\n"
70		exit 1
71	}
72}
73
74expect "# "
75info "Running digest-rs...\n"
76send -- "digest-rs message1 message2\r"
77expect {
78	-re "Get message hash as:.*Success" {
79		info "Test success\n"
80	}
81	timeout {
82		info "!!! Timeout: Test failed\n"
83		exit 1
84	}
85}
86
87expect "# "
88info "Running hello_world-rs...\n"
89send -- "hello_world-rs\r"
90expect {
91	-re "original value is 29.*inc value is 129.*dec value is 29.*Success" {
92		info "Test success\n"
93	}
94	timeout {
95		info "!!! Timeout: Test failed\n"
96		exit 1
97	}
98}
99
100expect "# "
101info "Running hotp-rs...\n"
102send -- "hotp-rs\r"
103expect {
104	-re "Get HOTP.*Success" {
105		info "Test success\n"
106	}
107	timeout {
108		info "!!! Timeout: Test failed\n"
109		exit 1
110	}
111}
112
113expect "# "
114info "Running random-rs...\n"
115send -- "random-rs\r"
116expect {
117	-re "Generate random UUID: \[a-z0-9]*-\[a-z0-9]*-\[a-z0-9]*-\[a-z0-9]*.*Success" {
118		info "Test success\n"
119	}
120	timeout {
121		info "!!! Timeout: Test failed\n"
122		exit 1
123	}
124}
125
126expect "# "
127info "Running secure_storage-rs...\n"
128send -- "secure_storage-rs\r"
129expect {
130	-re "We're done, close and release TEE resources" {
131		info "Test success\n"
132	}
133	timeout {
134		info "!!! Timeout: Test failed\n"
135		exit 1
136	}
137}
138
139expect "# "
140info "Running supp_plugin-rs...\n"
141send -- "supp_plugin-rs\r"
142expect {
143	-re "invoke commmand finished" {
144		info "Test success\n"
145	}
146	timeout {
147		info "!!! Timeout: Test failed\n"
148		exit 1
149	}
150}
151
152expect "# "
153info "Running time-rs...\n"
154send -- "time-rs\r"
155expect {
156	"Success" {
157		info "Test success\n"
158	}
159	timeout {
160		info "!!! Timeout: Test failed\n"
161		exit 1
162	}
163}
164
165expect "# "
166info "Running signature_verification-rs...\n"
167# This one can take up to 6 minutes when CFG_CORE_DEBUG_CHECK_STACKS=y
168# (3-4 minutes is common on my machine)
169set timeout 400
170send -- "signature_verification-rs\r"
171expect {
172	"Success" {
173		info "Test success\n"
174	}
175	timeout {
176		info "!!! Timeout: Test failed\n"
177		exit 1
178	}
179}
180
181info "Rust examples tested successfully\n"
182