Browse Source

Verify the firmware of OneRNG devices

Bob Mottram 9 years ago
parent
commit
954fb61e91
1 changed files with 29 additions and 11 deletions
  1. 29
    11
      src/freedombone

+ 29
- 11
src/freedombone View File

@@ -1497,18 +1497,20 @@ function remove_instructions_from_motd {
1497 1497
 }
1498 1498
 
1499 1499
 function check_hwrng {
1500
-  # If hardware random number generation was enabled then make sure that the device exists.
1501
-  # if /dev/hwrng is not found then any subsequent cryptographic key generation would
1502
-  # suffer from low entropy and might be insecure
1503
-  if [ ! -f /etc/default/rng-tools ]; then
1504
-      return
1505
-  fi
1506
-  if [ ! -e /dev/hwrng ]; then
1507
-      ls /dev/hw*
1508
-      echo 'The hardware random number generator is enabled but could not be detected on'
1509
-      echo '/dev/hwrng.  There may be a problem with the installation or the Beaglebone hardware.'
1510
-      exit 75
1500
+  if [[ $HWRNG_TYPE == "beaglebone" ]]; then
1501
+      # If hardware random number generation was enabled then make sure that the device exists.
1502
+      # if /dev/hwrng is not found then any subsequent cryptographic key generation would
1503
+      # suffer from low entropy and might be insecure
1504
+      if [ ! -e /dev/hwrng ]; then
1505
+          ls /dev/hw*
1506
+          echo 'The hardware random number generator is enabled but could not be detected on'
1507
+          echo '/dev/hwrng.  There may be a problem with the installation or the Beaglebone hardware.'
1508
+          exit 75
1509
+      fi
1511 1510
   fi
1511
+
1512
+  # If a OneRNG device was install then verify its firmware
1513
+  check_onerng_verification
1512 1514
 }
1513 1515
 
1514 1516
 function get_mariadb_password {
@@ -4736,6 +4738,22 @@ function enable_zram {
4736 4738
   echo 'enable_zram' >> $COMPLETION_FILE
4737 4739
 }
4738 4740
 
4741
+function check_onerng_verification {
4742
+  if [[ $HWRNG_TYPE != "onerng" ]]; then
4743
+      return
4744
+  fi
4745
+  echo 'Checking OneRNG firmware verification'
4746
+  last_onerng_validation=$(cat /var/log/syslog.1 | grep "OneRNG: firmware verification" | awk '/./{line=$0} END{print line}')
4747
+  if [[ $last_onerng_validation != *"passed OK"* ]]; then
4748
+      last_onerng_validation=$(cat /var/log/syslog | grep "OneRNG: firmware verification" | awk '/./{line=$0} END{print line}')
4749
+      if [[ $last_onerng_validation != *"passed OK"* ]]; then
4750
+          echo $last_onerng_validation
4751
+          echo 'OneRNG firmware verification failed'
4752
+          exit 735026
4753
+      fi
4754
+  fi
4755
+}
4756
+
4739 4757
 function install_onerng {
4740 4758
   apt-get -y install rng-tools at python-gnupg
4741 4759