#!/usr/bin/expect -f ######################################################################## # The Initial Developer of the Original Code is International # Business Machines Corporation. Portions created by IBM # Corporation are Copyright (C) 2007 International Business # Machines Corporation. All Rights Reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the Common Public License as published by # IBM Corporation; either version 1 of the License, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # Common Public License for more details. # # You should have received a copy of the Common Public License # along with this program; if not, a copy can be viewed at # http://www.opensource.org/licenses/cpl1.0.php. # # # Program: tpm_changeownerauth01.sh # Purpose: Test transitions between plain text, unicode and well-known # for Owner and SRK passwords, using tpm_changeownerauth from tpm-tools # package. # Pre-Conditions: Owner and SRK password must be set to a plain text # password before running this test. # # Author: Ramon Brandão # Date: Nov/07 # ######################################################################## set timeout -1 set options {"-s" "-o"} # States if the current owner password is the Well Known secret set wnOpt "" # States if the crrent owner password is a Unicode one set isU "" #Prompts for the owner and SRK Passwords send_user "Enter the current Owner Password: " expect_user -re "(.*)\n" set ownerPasswd $expect_out(1,string) send_user "Enter the current SRK Password: " expect_user -re "(.*)\n" set SRKPasswd $expect_out(1,string) # Start of changeauth tests foreach opt $options { if {$opt == "-s"} { send_user "\n\n#############################################################\n" send_user "####### Testing tpm_changeownerauth for SRK password:########\n" send_user "#############################################################\n\n" } else { send_user "\n\n###############################################################\n" send_user "####### Testing tpm_changeownerauth for OWNER password:########\n" send_user "###############################################################\n\n" } # Plaintext -> Unicode puts stdout "Test 1) tpm_changeownerauth \"$opt\": Changing password from PLAINTEXT to UNICODE:" spawn tpm_changeownerauth $opt -n -l debug sleep 1 expect "Enter owner password" { exp_send "$ownerPasswd\r" if {$opt == "-s"} { expect "Enter new SRK" { exp_send "$SRKPasswd\r" expect "Confirm" { exp_send "$SRKPasswd\r" } } } else { expect "Enter new owner" { exp_send "$ownerPasswd\r" expect "Confirm" { exp_send "$ownerPasswd\r" set isU "-g" } } } expect { "ngeAuth success" { expect "Tspi_Context_Close success" { send_user "PLAINTEXT to UNICODE auth change SUCCEED. \n\n" } } "*Auth*ailed" { expect "Tspi_Context_Close success" { send_user "PLAINTEXT to UNICODE auth change FAILED. \n\n" } } } } sleep 4 # Unicode -> plaintext puts stdout "Test 2) tpm_changeownerauth \"$opt\": Changing password from UNICODE to PLAINTEXT:" spawn tpm_changeownerauth $opt $isU -l debug sleep 1 expect "Enter owner password" { exp_send "$ownerPasswd\r" if {$opt == "-s"} { expect "Enter new SRK" { exp_send "$SRKPasswd\r" expect "Confirm" { exp_send "$SRKPasswd\r" } } } else { expect "Enter new owner" { exp_send "$ownerPasswd\r" expect "Confirm" { exp_send "$ownerPasswd\r" set isU "" } } } expect { "ngeAuth success" { expect "Tspi_Context_Close success" { send_user "UNICODE to PLAINTEXT auth change SUCCEED. \n\n" } } "*Auth*ailed" { expect "Tspi_Context_Close success" { send_user "UNICODE to PLAINTEXT auth change FAILED. \n\n" } } } } sleep 4 # Plaintext -> Well Known puts stdout "Test 3) tpm_changeownerauth \"$opt\": Changing password from PLAINTEXT to WELL KNOWN:" spawn tpm_changeownerauth $opt -r -l debug sleep 1 expect "Enter owner password" { exp_send "$ownerPasswd\r" if {$opt == "-o"} { set wnOpt "-z" } expect { "ngeAuth success" { expect "Tspi_Context_Close success" { send_user "PLAINTEXT to WELL KNOWN auth change SUCCEED. \n\n" } } "*Auth*ailed" { expect "Tspi_Context_Close success" { send_user "PLAINTEXT to WELL KNOWN auth change FAILED. \n\n" } } } } sleep 4 # Well Known -> Unicode puts stdout "Test 4) tpm_changeownerauth \"$opt\": Changing password from WELL KNOWN to UNICODE:" spawn tpm_changeownerauth $opt $wnOpt -n -l debug sleep 1 if {$wnOpt != "-z"} { expect "Enter owner password" {exp_send "$ownerPasswd\r"} } if {$opt == "-s"} { expect "Enter new SRK" { exp_send "$SRKPasswd\r" expect "Confirm" { exp_send "$SRKPasswd\r" } } } else { expect "Enter new owner" { exp_send "$ownerPasswd\r" expect "Confirm" { exp_send "$ownerPasswd\r" set wnOpt "" set isU "-g" } } } expect { "ngeAuth success" { expect "Tspi_Context_Close success" { send_user "WELL KNOWN to UNICODE auth change SUCCEED. \n\n" } } "*Auth*ailed" { expect "Tspi_Context_Close success" { send_user "WELL KNOWN to UNICODE auth change FAILED. \n\n" } } } sleep 4 # Unicode -> Well Known puts stdout "Test 5) tpm_changeownerauth \"$opt\": Changing password from UNICODE to WELL KNOWN:" spawn tpm_changeownerauth $opt $isU -r -l debug sleep 1 if {$wnOpt != "-z"} { expect "Enter owner password" {exp_send "$ownerPasswd\r"} } if {$opt == "-o"} { set wnOpt "-z" } expect { "ngeAuth success" { expect "Tspi_Context_Close success" { send_user "UNICODE to WELL KNOWN auth change SUCCEED. \n\n" } } "*Auth*ailed" { expect "Tspi_Context_Close success" { send_user "UNICODE to WELL KNOWN auth change FAILED. \n\n" } } } sleep 4 # Well Known -> Plain - return to the starting state puts stdout "Test 6) tpm_changeownerauth \"$opt\": Changing password from WELL KNOWN to PLAIN:" spawn tpm_changeownerauth $opt $wnOpt -l debug sleep 1 if {$wnOpt != "-z"} { expect "Enter owner password" {exp_send "$ownerPasswd\r"} } if {$opt == "-s" } { expect "Enter new SRK" { exp_send "$SRKPasswd\r" expect "Confirm" { exp_send "$SRKPasswd\r" } } } else { expect "Enter new owner" { exp_send "$ownerPasswd\r" expect "Confirm" { exp_send "$ownerPasswd\r" } } } expect { "ngeAuth succes" { expect "Tspi_Context_Close success" { send_user "WELL KNOWN to PLAIN auth change SUCCEED. \n\n" } } "*Auth*ailed" { expect "Tspi_Context_Close success" { send_user "WELL KNOWN to PLAIN auth change FAILED. \n\n" } } } sleep 4 }