From e1760189a039588613fe56c9c679d60bd4d7f531 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Sun, 29 May 2016 20:55:09 -0700 Subject: [PATCH] attempts to get v3 fingerprint --- scans/pgp_content_scan.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/scans/pgp_content_scan.go b/scans/pgp_content_scan.go index e3e4b46..85d8375 100644 --- a/scans/pgp_content_scan.go +++ b/scans/pgp_content_scan.go @@ -3,9 +3,12 @@ package scans import ( "github.com/s-rah/onionscan/report" "golang.org/x/crypto/openpgp" + "golang.org/x/crypto/openpgp/armor" + //pgpPacket "golang.org/x/crypto/openpgp/packet" "log" "regexp" "strings" + "bytes" ) type PGPContentScan struct { @@ -17,6 +20,27 @@ func (cs *PGPContentScan) ScanContent(content string, report *report.OnionScanRe foundPGP := pgpRegexp.FindAllString(content, -1) for _, keyString := range foundPGP { log.Printf("\tFound key: %s\n", keyString) + + buf := bytes.NewBuffer([]byte(keyString)) + block, err := armor.Decode(buf) + if err != nil { + log.Printf("error decoding: %s\n", err) + } else { + log.Printf("Block: %s\n", block) + log.Printf("body: %s\n", block.Body) + + + //packet, err := pgpPacket.Read(block.Body) + /*if err != nil { + log.Printf("Read error: %s", err) + }*/ + /*pk, ok := packet.(*pgpPacket.PublicKeyV3) + if !ok { + log.Printf("failed to parse, got: %s", packet) + }*/ + //log.Printf("fingerprint: %s\n", pk.Fingerprint) + } + keys, err := openpgp.ReadArmoredKeyRing(strings.NewReader(keyString)); if err != nil { log.Printf("ERROR: %s\n", err) @@ -33,6 +57,7 @@ func (cs *PGPContentScan) ScanContent(content string, report *report.OnionScanRe pubkey := keys[0].Subkeys[0].PublicKey log.Printf("pubkey: %X", pubkey.Fingerprint) + //pk3 := pubkey.(*pgpPacket.PublicKeyV3) report.AddPGPKey(keyString) }