| #!/usr/bin/expect -f |
| # |
| # This script test OP-TEE rust examples. The return code is 0 for |
| # success, >0 for error. |
| # |
| |
| set timeout 60 |
| |
| info "Test Rust example applications:\n" |
| info "Running acipher-rs...\n" |
| send -- "acipher-rs 256 teststring\r" |
| expect { |
| -re "Success decrypt the above ciphertext as (\\d+) bytes plain text:" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running aes-rs...\n" |
| send -- "aes-rs\r" |
| expect { |
| -re "Prepare encode operation.*Encode buffer from TA.*Clear text and decoded text match" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running authentication-rs...\n" |
| send -- "authentication-rs\r" |
| expect { |
| -re "Clear text and decoded text match.*Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running big_int-rs...\n" |
| send -- "big_int-rs\r" |
| expect { |
| "Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running diffie_hellman-rs...\n" |
| send -- "diffie_hellman-rs\r" |
| expect { |
| -re "get key (\\d+) pair as public:.*private.*Derived share key as.*Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running digest-rs...\n" |
| send -- "digest-rs message1 message2\r" |
| expect { |
| -re "Get message hash as:.*Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running hello_world-rs...\n" |
| send -- "hello_world-rs\r" |
| expect { |
| -re "original value is 29.*inc value is 129.*dec value is 29.*Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running hotp-rs...\n" |
| send -- "hotp-rs\r" |
| expect { |
| -re "Get HOTP.*Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running random-rs...\n" |
| send -- "random-rs\r" |
| expect { |
| -re "Generate random UUID: \[a-z0-9]*-\[a-z0-9]*-\[a-z0-9]*-\[a-z0-9]*.*Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running secure_storage-rs...\n" |
| send -- "secure_storage-rs\r" |
| expect { |
| -re "We're done, close and release TEE resources" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running supp_plugin-rs...\n" |
| send -- "supp_plugin-rs\r" |
| expect { |
| -re "invoke commmand finished" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running time-rs...\n" |
| send -- "time-rs\r" |
| expect { |
| "Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| expect "# " |
| info "Running signature_verification-rs...\n" |
| # This one can take up to 6 minutes when CFG_CORE_DEBUG_CHECK_STACKS=y |
| # (3-4 minutes is common on my machine) |
| set timeout 400 |
| send -- "signature_verification-rs\r" |
| expect { |
| "Success" { |
| info "Test success\n" |
| } |
| timeout { |
| info "!!! Timeout: Test failed\n" |
| exit 1 |
| } |
| } |
| |
| info "Rust examples tested successfully\n" |