Parsing PGP keys in Go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bytes" | |
"code.google.com/p/go.crypto/openpgp" | |
"crypto/rsa" | |
"encoding/hex" | |
"fmt" | |
"strconv" | |
"strings" | |
) | |
func main() { | |
// iterate over the keys, and load them into an io.Reader keyring | |
for _, key := range PUBLICPGPKEYS { | |
// Load PGP public key | |
els, err := openpgp.ReadArmoredKeyRing(bytes.NewBufferString(key)) | |
if err != nil { | |
panic(err) | |
} | |
if len(els) != 1 { | |
err = fmt.Errorf("Public GPG Key contains %d entities, wanted 1\n", len(els)) | |
panic(err) | |
} | |
for _, el := range els { | |
keyid := strconv.FormatUint(el.PrimaryKey.KeyId, 16) | |
fmt.Println("Details of Key ID", strings.ToUpper(keyid)) | |
fingerprint := hex.EncodeToString(el.PrimaryKey.Fingerprint[:]) | |
fmt.Println("Fingerprint:", strings.ToUpper(fingerprint)) | |
fmt.Println("Creation Time:", el.PrimaryKey.CreationTime) | |
switch el.PrimaryKey.PubKeyAlgo { | |
case 1: | |
fmt.Println("Pubkey algorithm: RSA") | |
parseRSAPubKey(el.PrimaryKey.PublicKey.(*rsa.PublicKey)) | |
case 2: | |
fmt.Println("Pubkey algorithm: RSA Encrypt Only") | |
case 3: | |
fmt.Println("Pubkey algorithm: RSA Sign Only") | |
case 16: | |
fmt.Println("Pubkey algorithm: ElGamal") | |
case 17: | |
fmt.Println("Pubkey algorithm: DSA") | |
case 18: | |
fmt.Println("Pubkey algorithm: ECDH") | |
case 19: | |
fmt.Println("Pubkey algorithm: ECDSA") | |
} | |
fmt.Println("Identities:") | |
for name, id := range el.Identities { | |
fmt.Println("-", name) | |
fmt.Println("\tsignatures:") | |
for _, sig := range id.Signatures { | |
hexsig := strconv.FormatUint(*sig.IssuerKeyId, 16) | |
fmt.Println("\t-", strings.ToUpper(hexsig), sig.CreationTime.String()) | |
} | |
} | |
} | |
} | |
} | |
func parseRSAPubKey(pubkey *rsa.PublicKey) (err error) { | |
fmt.Println("Public Modulus:", pubkey.N.BitLen(), "bits. Public exponent:", pubkey.E) | |
return | |
} | |
// PGP public key that is authorized to sign actions | |
var PUBLICPGPKEYS = [...]string{ | |
` | |
-----BEGIN PGP PUBLIC KEY BLOCK----- | |
Version: SKS 1.1.4 | |
Comment: Hostname: keyserver.mozilla.org | |
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 | |
uH0wPPE= | |
=QsLA | |
-----END PGP PUBLIC KEY BLOCK----- | |
`} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment