diff options
Diffstat (limited to 'programs/_keycensor/_keycensor.in')
-rwxr-xr-x | programs/_keycensor/_keycensor.in | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/programs/_keycensor/_keycensor.in b/programs/_keycensor/_keycensor.in new file mode 100755 index 000000000..7d6f257e5 --- /dev/null +++ b/programs/_keycensor/_keycensor.in @@ -0,0 +1,52 @@ +#! /bin/sh +# implements key censoring for barf +# Copyright (C) 1999, 2002 Henry Spencer. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the +# Free Software Foundation; either version 2 of the License, or (at your +# option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. +# +# 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 GNU General Public License +# for more details. +# +# RCSID $Id: _keycensor.in,v 1.1 2004/03/15 20:35:27 as Exp $ + +usage="Usage: $0 [file ...]" +me="ipsec _keycensor" + +for dummy +do + case "$1" in + --help) echo "$usage" ; exit 0 ;; + --version) echo "$me $IPSEC_VERSION" ; exit 0 ;; + --) shift ; break ;; + -*) echo "$0: unknown option \`$1'" >&2 ; exit 2 ;; + *) break ;; + esac + shift +done + +awk ' /(sig|enc|auth)key[ \t]*=[ \t]*[^%]/ { + i = match($0, /key[ \t]*=[ \t]*/) + i += RLENGTH + cold = substr($0, 1, i-1) + hot = substr($0, i) + sub(/[ \t]+(#.*)?$/, "", hot) + q = "'"'"'" # single quote + if (hot ~ q) + cooled = "[cannot be condensed]" + else if (hot ~ /^0s/) + cooled = "[keyid " substr(hot, 3, 9) "]" + else { + run = "echo " q hot q " | md5sum" + run | getline + close(run) + cooled = "[sums to " substr($1, 1, 4) "...]" + } + print cold cooled + next + } + { print }' $* |