summaryrefslogtreecommitdiffstats
path: root/tools/c_rehash
diff options
context:
space:
mode:
Diffstat (limited to 'tools/c_rehash')
-rw-r--r--tools/c_rehash47
1 files changed, 47 insertions, 0 deletions
diff --git a/tools/c_rehash b/tools/c_rehash
new file mode 100644
index 0000000000..007600152c
--- /dev/null
+++ b/tools/c_rehash
@@ -0,0 +1,47 @@
+#!/bin/sh
+#
+# redo the hashes for the certificates in your cert path or the ones passed
+# on the command line.
+#
+
+if [ "$SSLEAY"x = "x" ]; then
+ SSLEAY='ssleay'
+ export SSLEAY
+fi
+DIR=/usr/local/ssl
+#PATH=$DIR/bin:$PATH
+
+SSL_DIR=$DIR/certs
+
+if [ "$*" = "" ]; then
+ CERTS=${*:-${SSL_CERT_DIR:-$SSL_DIR}}
+else
+ CERTS=$*
+fi
+
+IFS=': '
+for i in $CERTS
+do
+ (
+ IFS=' '
+ if [ -d $i -a -w $i ]; then
+ cd $i
+ echo "Doing $i"
+ for i in *.pem
+ do
+ if [ $i != '*.pem' ]; then
+ h=`$SSLEAY x509 -hash -noout -in $i`
+ if [ "x$h" = "x" ]; then
+ echo $i does not contain a certificate
+ else
+ if [ -f $h.0 ]; then
+ /bin/rm -f $h.0
+ fi
+ echo "$i => $h.0"
+ ln -s $i $h.0
+ fi
+ fi
+ done
+ fi
+ )
+done