chiark / gitweb /
New ktype operation `k_import'.
authorMark Wooding <mdw@distorted.org.uk>
Wed, 15 Feb 2012 00:48:18 +0000 (00:48 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 23 Feb 2012 03:14:37 +0000 (03:14 +0000)
Given a directory containing `pub', populate it with anything else
necessary.

This is trivial for `seccure'; `gnupg' requires a refactoring of key
generation, to split out the directory setup stuff.

keyfunc.sh.in
ktype.gnupg

index 952a095..dda8a2e 100644 (file)
@@ -461,6 +461,7 @@ c_verify () { k_verify "$@"; }
 ## Stub implementations.
 notsupp () { op=$1; echo >&2 "$quis: operation \`$op' not supported"; }
 k_info () { :; }
+k_import () { :; }
 k_encrypt () { notsupp encrypt; }
 k_decrypt () { notsupp decrypt; }
 k_sign () { notsupp sign; }
index 8a8e764..18a17a9 100644 (file)
@@ -56,10 +56,9 @@ EOF
 : ${kprop_realname=%{realname\}} ${kprop_email=%{email\}}
 : ${kprop_comment=%{comment-nil\}}
 
-k_generate () {
-  base=$1 nub=$2
+initdir () {
+  base=$1
 
-  makenub >"$nub"
   prefs="$kprop_cipher_prefs $kprop_digest_prefs $kprop_compress_prefs"
 
   case ${kprop_s2k_cipher+t} in
@@ -87,6 +86,13 @@ personal-digest-preferences $kprop_digest_prefs
 personal-compress-preferences $kprop_compress_prefs
 default-preference-list $prefs
 EOF
+}
+
+k_generate () {
+  base=$1 nub=$2
+
+  makenub >"$nub"
+  initdir "$base"
 
   { cat <<EOF
 Key-Type: $kprop_main_type
@@ -121,6 +127,15 @@ EOF
   run_gnupg "$base" --export --armor --output="$base/pub"
 }
 
+k_import () {
+  base=$1
+
+  initdir "$base"
+  run_gnupg "$base" --import "$base/pub"
+  run_gnupg "$base" --fingerprint --with-colons | \
+    grep '^fpr:' | cut -d: -f10 >"$base/fpr"
+}
+
 k_encrypt () {
   base=$1
   run_gnupg "$base" --encrypt --armor --recipient=$(cat "$base/fpr")