How to get public key from private in gpg without using local storage (under ~ / .gpg)?

Look at Subj: How to get the public key from private to gpg without using local storage (under ~ / .gpg)?

This solution does not satisfy the requirements:

  $ gpg --import priv.key
   $ gpg --export $ KEYID> pub.key
   $ gpg --delete-secret-and-public-key $ KEYID
+4
source share
1 answer

I donโ€™t understand why you are unhappy with the solution that you have already come up with, but if for some reason you really want to avoid clutter with your keywords, I can offer something else:

gtmp=$(mktemp -d) gpg --homedir $gtmp --import key gpg --homedir $gtmp --export key > pub.gpg rm -rf $gtmp 

Or as a convenient BASH function:

 # Requires keyfile as 1st argument; optional 2nd argument is output file gpg_priv_to_pub(){ g=$(mktemp -d) infile=$1 [[ $# > 1 ]] && outfile=$2 || outfile=${1%.*}_pub.gpg gpg --homedir $g --import "$infile" 2>/dev/null KEYID=$(gpg --homedir $g -k --with-colons | awk -F: '/^pub/{print $5}') gpg --homedir $g --export $KEYID > "$outfile" rm -rf $g echo "Public key $KEYID extracted from '$infile' and saved to '$outfile'" } 
+7
source

All Articles