Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 1 | #!/usr/bin/expect -f |
| 2 | # |
| 3 | # This script test Linux trusted keys support using OP-TEE as a trust |
| 4 | # source. The return code is 0 for success, >0 for error. |
| 5 | # |
| 6 | |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 7 | set timeout 5 |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 8 | set tk_id 0 |
| 9 | set ek_id 0 |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 10 | # Wait for next prompt, dealing with key ID, failure message and timeout |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 11 | proc check_keyctl_result arg { |
| 12 | expect { |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 13 | -re {(\d+)\r} { |
| 14 | set ::$arg $expect_out(1,string) |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 15 | exp_continue |
| 16 | } |
Jerome Forissier | 4d36aea | 2022-11-08 14:25:46 +0100 | [diff] [blame] | 17 | "add_key: No such device" { |
| 18 | info [join {"Skipping test due to 'No such device':" |
| 19 | "trusted keys are not supported" |
| 20 | "(missing driver? CFG_CORE_DYN_SHM=n?)\n"}] |
| 21 | exit 0 |
| 22 | } |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 23 | "FAILED" { |
| 24 | info "!!! Error\n" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 25 | exit 1 |
| 26 | } |
| 27 | timeout { |
| 28 | info "!!! Timeout\n" |
| 29 | exit 1 |
| 30 | } |
| 31 | "# " |
| 32 | } |
| 33 | } |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 34 | proc run_cmd arg { |
| 35 | send -- [append arg " || fail\r"] |
| 36 | } |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 37 | info "Running: keyctl tests...\n" |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 38 | expect "# " |
| 39 | send -- "function fail { echo FAILED ; }\r" |
| 40 | expect "# " |
| 41 | run_cmd "keyctl add trusted kmk \"new 32\" @u" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 42 | check_keyctl_result tk_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 43 | run_cmd "keyctl add encrypted evm \"new trusted:kmk 32\" @u" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 44 | check_keyctl_result ek_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 45 | run_cmd "keyctl pipe $tk_id > kmk.blob" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 46 | check_keyctl_result tk_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 47 | run_cmd "keyctl pipe $ek_id > evm.blob" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 48 | check_keyctl_result ek_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 49 | run_cmd "keyctl revoke $ek_id" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 50 | check_keyctl_result ek_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 51 | run_cmd "keyctl revoke $tk_id" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 52 | check_keyctl_result tk_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 53 | run_cmd "keyctl add trusted kmk \"load `cat kmk.blob`\" @u" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 54 | check_keyctl_result tk_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 55 | run_cmd "keyctl add encrypted evm \"load `cat evm.blob`\" @u" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 56 | check_keyctl_result ek_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 57 | run_cmd "keyctl pipe $tk_id > kmk.blob2" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 58 | check_keyctl_result tk_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 59 | run_cmd "keyctl pipe $ek_id > evm.blob2" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 60 | check_keyctl_result ek_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 61 | run_cmd "diff kmk.blob kmk.blob2" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 62 | check_keyctl_result tk_id |
Jerome Forissier | e412929 | 2022-11-08 10:45:23 +0100 | [diff] [blame] | 63 | run_cmd "diff evm.blob evm.blob2" |
Sumit Garg | 45cf44c | 2021-12-24 17:02:25 +0530 | [diff] [blame] | 64 | check_keyctl_result ek_id |
| 65 | info "Status: keyctl tests successful\n" |