12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/bin/bash -e
- #
- # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- # Attempt to trigger the TPM Dictionary Attack Defense Lock and measure its
- # behavior.
- if [ -f /sys/class/misc/tpm0/device/owned ]; then
- owned=$(cat /sys/class/misc/tpm0/device/owned)
- else
- owned=$(cat /sys/class/tpm/tpm0/device/owned)
- fi
- if [ "$owned" = "" ]; then
- echo "TPM is not functional"
- exit 1
- fi
- if [ "$owned" = "0" ]; then
- echo "please use random, non-empty passwords"
- tpm_takeownership || exit 1
- fi
- attempts=0
- max=1
- e=/tmp/x$$
- while true; do
- attempts=$(( $attempts + 1 ))
- before=$(date +%s)
- defending=1
- while [ $defending -eq 1 ]; do
- if tpm_getpubek -z 2> $e; then
- echo "unexpected success of tpm_getpubek"
- exit 1
- fi
- if grep -q communication $e; then
- echo "communication failure"
- exit 1
- fi
- if ! grep -q dictionary $e; then
- defending=0
- fi
- done
- after=$(date +%s)
- elapsed=$(( $after - $before ))
- if [ $elapsed -gt $max ]; then
- echo delay of $elapsed seconds after $attempts attempts
- max=$elapsed
- fi
- done
|