added missing upstream files
[tridge/bind9.git] / contrib / pkcs11-keygen / genkey.sh
1 #!/usr/bin/bash
2
3 usage="Usage: $0 -z zone -x ext -p pin -b bits -e engine [-f] -k key_path"
4 tmp_file=/tmp/cur_key.$$
5 while getopts ":z:x:p:t:k:b:e:f" opt; do
6   case $opt in
7     z  ) zone=$OPTARG ;;
8     x  ) ext=$OPTARG ;;
9     p  ) pin=$OPTARG ;;
10     t  ) id=$OPTARG ;;
11     f  ) flag="ksk" ;;
12     e  ) engine=$OPTARG ;;
13     b  ) bits=$OPTARG ;;
14     k  ) key_path=$OPTARG ;;
15     \? ) echo $usage 
16          exit 1 ;;
17    esac
18 done
19 shift $(($OPTIND -1))
20
21 if [ ! "$zone" -o ! "$ext" -o ! "$pin" -o ! "$engine" -o ! "$bits" -o ! "$key_path" ] ; then
22   echo $usage
23   exit 1
24 fi
25
26 if [ "$flag" ] ; then
27   label="$zone,$flag,$ext"
28 else
29   label="$zone,zsk,$ext"
30 fi
31
32 # for testing
33 mypath=.
34
35 echo "Generating key"
36 $mypath/genkey -b $bits -l $label -p $pin
37 if [ $? -ne 0 ] ; then exit 1 ; fi
38
39 echo "Exporting public key"
40 $mypath/PEM_write_pubkey -e $engine -p $pin -k pkcs11:$label -f $tmp_file
41 if [ $? -ne 0 ] ; then exit 1 ; fi
42
43 echo "Generating DNSKEY RR"
44 if [ "$flag" ] ; then
45   keytag=`$mypath/keyconv.pl -a 5 -k -e $engine -l $label -p $key_path -i $tmp_file $zone`
46 else
47   keytag=`$mypath/keyconv.pl -a 5 -e $engine -l $label -p $key_path -i $tmp_file $zone`
48 fi
49
50 if [ ! $keytag ] ; then rm $tmp_file; exit 1 ; fi
51
52 echo "Set key id"
53 $mypath/set_key_id -l $label -n $keytag -p $pin
54
55 rm $tmp_file