gen-key non-interactively

snowcrash+gnupg-users schneecrash+gnupg-users at gmail.com
Thu Feb 8 16:44:02 CET 2007


here's an "expect"-based function i use in a bash script for just such purpose,

# function: "DO_GENKEY_SESSION"
	# auto-execute a GPG --gen-key session
	# usage:
		# 	DO_GENKEY_SESSION (SELECTION) $NOTATION $COMMENT
	# gen-key dialog options (SELECTION):
	# Please select what kind of key you want:
	#   (1) DSA and Elgamal (default)
	#   (2) DSA (sign only)
	#   (3) DSA (set your own capabilities)
	#   (5) RSA (sign only)
	#   (7) RSA (set your own capabilities)
DO_GENKEY_SESSION () {
	echo "START: $COMMENT"
	VAR=$($EXPECT -c "
		spawn  $GPG $GPG_RING_OPTS --expert --cert-notation $NOTATION --gen-key
		set timeout -1
		stty -echo
		expect     \"Your selection? \"
		exp_send   \"$1\n\"
		expect -re \"(What keysize do you want\?).*\\\\(\[0-9\]*\\\\) \"
		exp_send   \"$BITS\n\"
		expect     \"Key is valid for? (0) \"
		exp_send   \"0\n\"
		expect     \"Is this correct? (y/N) \"
		exp_send   \"y\n\"
		expect     \"Real name: \"
		exp_send   \"$NAME_REAL\n\"
		expect     \"Email address: \"
		exp_send   \"$EMAIL\n\"
		expect     \"Comment: \"
		exp_send   \"$SIG_COMMENT\n\"
		expect     \"(O)kay/(Q)uit? \"
		exp_send   \"O\n\"
		expect     \"Enter passphrase: \"
		exp_send   \"$PASS\n\"
		expect     \"Repeat passphrase: \"
		exp_send   \"$PASS\n\"
		expect exp_continue -continue_timer
	")
	echo "   DONE"
}

of course, you define/pass/replace the various vars as you need/like ...


hth!



More information about the Gnupg-users mailing list