hockeypuck / server

Hockeypuck configurable server and executable
GNU Affero General Public License v3.0
16 stars 6 forks source link

panic when receiving a bare revocation certificate #16

Open bjmgeek opened 8 years ago

bjmgeek commented 8 years ago

I created a test key pair, and sent the bare revocation certificate to hockeypuck with the submit key option of the web interface. It caused an immediate panic of the server process.

hockeypuck@hockeypuck:~$  hockeypuck -config=/etc/hockeypuck/hockeypuck.conf
WARN[0000] error executing "ALTER TABLE keys ADD CONSTRAINT keys_pk PRIMARY KEY (rfingerprint);": pq: multiple primary keys for table "keys" are not allowed
WARN[0000] error executing "ALTER TABLE keys ADD CONSTRAINT keys_md5 UNIQUE (md5);": pq: relation "keys_md5" already exists
WARN[0000] error executing "CREATE INDEX keys_rfp ON keys(rfingerprint text_pattern_ops);": pq: relation "keys_rfp" already exists
WARN[0000] error executing "CREATE INDEX keys_ctime ON keys (ctime);": pq: relation "keys_ctime" already exists
WARN[0000] error executing "CREATE INDEX keys_mtime ON keys (mtime);": pq: relation "keys_mtime" already exists
WARN[0000] error executing "CREATE INDEX keys_keywords ON keys USING gin(keywords);": pq: relation "keys_keywords" already exists
WARN[0000] error executing "ALTER TABLE subkeys ADD CONSTRAINT subkeys_pk PRIMARY KEY (rsubfp);": pq: multiple primary keys for table "subkeys" are not allowed
WARN[0000] error executing "ALTER TABLE subkeys ADD CONSTRAINT subkeys_fk FOREIGN KEY (rfingerprint) REFERENCES keys(rfingerprint);": pq: constraint "subkeys_fk" for relation "subkeys" already exists
WARN[0000] error executing "CREATE INDEX subkeys_rfp ON subkeys(rsubfp text_pattern_ops);": pq: relation "subkeys_rfp" already exists

I submit the bare certificate now...

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xb code=0x1 addr=0x0 pc=0x663807]

goroutine 48 [running]:
runtime.panic(0x998400, 0xd61293)
        /usr/lib/go/src/pkg/runtime/panic.c:279 +0xf5
gopkg.in/hockeypuck/openpgp%2ev1.func·001()
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/openpgp.v1/io.go:204 +0x317
created by gopkg.in/hockeypuck/openpgp%2ev1.ReadOpaqueKeyrings
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/openpgp.v1/io.go:216 +0x10c

goroutine 16 [chan receive]:
gopkg.in/tomb%2ev2.(*Tomb).Wait(0xc2080400d0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:116 +0x5d
github.com/hockeypuck/server.(*Server).Wait(0xc208040090, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/server.go:304 +0x45
main.main()
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/cmd/hockeypuck/main.go:68 +0x46f

goroutine 19 [finalizer wait]:
runtime.park(0x413ce0, 0xd68410, 0xd65e29)
        /usr/lib/go/src/pkg/runtime/proc.c:1369 +0x89
runtime.parkunlock(0xd68410, 0xd65e29)
        /usr/lib/go/src/pkg/runtime/proc.c:1385 +0x3b
runfinq()
        /usr/lib/go/src/pkg/runtime/mgc0.c:2644 +0xcf
runtime.goexit()
        /usr/lib/go/src/pkg/runtime/proc.c:1445

goroutine 20 [syscall]:
os/signal.loop()
        /usr/lib/go/src/pkg/os/signal/signal_unix.go:21 +0x1e
created by os/signal.init·1
        /usr/lib/go/src/pkg/os/signal/signal_unix.go:27 +0x32

goroutine 21 [chan receive]:
database/sql.(*DB).connectionOpener(0xc208048280)
        /usr/lib/go/src/pkg/database/sql/sql.go:583 +0x48
created by database/sql.Open
        /usr/lib/go/src/pkg/database/sql/sql.go:442 +0x27c

goroutine 17 [syscall]:
runtime.goexit()
        /usr/lib/go/src/pkg/runtime/proc.c:1445

goroutine 22 [select]:
github.com/syndtr/goleveldb/leveldb/util.(*BufferPool).drain(0xc208010380)
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:205 +0x1d0
created by github.com/syndtr/goleveldb/leveldb/util.NewBufferPool
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/util/buffer_pool.go:236 +0x202

goroutine 23 [select]:
github.com/syndtr/goleveldb/leveldb.(*DB).compactionError(0xc2080f6160)
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go:120 +0x3df
created by github.com/syndtr/goleveldb/leveldb.openDB
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db.go:126 +0x518

goroutine 24 [select]:
github.com/syndtr/goleveldb/leveldb.(*DB).mpoolDrain(0xc2080f6160)
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db_state.go:82 +0xfb
created by github.com/syndtr/goleveldb/leveldb.openDB
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db.go:127 +0x530

goroutine 25 [select]:
github.com/syndtr/goleveldb/leveldb.(*DB).tCompaction(0xc2080f6160)
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go:812 +0x774
created by github.com/syndtr/goleveldb/leveldb.openDB
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db.go:130 +0x572

goroutine 26 [select]:
github.com/syndtr/goleveldb/leveldb.(*DB).mCompaction(0xc2080f6160)
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db_compaction.go:759 +0x235
created by github.com/syndtr/goleveldb/leveldb.openDB
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db.go:131 +0x58a

goroutine 27 [select]:
github.com/syndtr/goleveldb/leveldb.(*DB).jWriter(0xc2080f6160)
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db_write.go:37 +0x143
created by github.com/syndtr/goleveldb/leveldb.openDB
        /var/lib/hockeypuck/src/packaging/src/github.com/syndtr/goleveldb/leveldb/db.go:132 +0x5a2

goroutine 39 [chan receive]:
github.com/hockeypuck/server.func·007(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/server.go:345 +0x70
gopkg.in/tomb%2ev2.(*Tomb).run(0xc2080400d0, 0xc2080f4ea0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 33 [IO wait]:
net.runtime_pollWait(0x7f562cc29e60, 0x72, 0x0)
        /usr/lib/go/src/pkg/runtime/netpoll.goc:146 +0x66
net.(*pollDesc).Wait(0xc20802c6f0, 0x72, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/fd_poll_runtime.go:84 +0x46
net.(*pollDesc).WaitRead(0xc20802c6f0, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/fd_poll_runtime.go:89 +0x42
net.(*netFD).accept(0xc20802c690, 0xb589a8, 0x0, 0x7f562cc284c8, 0xb)
        /usr/lib/go/src/pkg/net/fd_unix.go:419 +0x343
net.(*TCPListener).AcceptTCP(0xc20803c5d8, 0x7f562a146fa0, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/tcpsock_posix.go:234 +0x5d
github.com/hockeypuck/server.tcpKeepAliveListener.Accept(0xc20803c5d8, 0x0, 0x0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/server.go:327 +0x4e
net/http.(*Server).Serve(0xc208004720, 0x7f562cc2b260, 0xc20803c5d8, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/http/server.go:1698 +0x91
net/http.Serve(0x7f562cc2b260, 0xc20803c5d8, 0x7f562cc2b298, 0xc208097a00, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/http/server.go:1576 +0x7c
github.com/hockeypuck/server.(*Server).listenAndServeHKP(0xc208040090, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/server.go:357 +0x137
github.com/hockeypuck/server.*Server.(github.com/hockeypuck/server.listenAndServeHKP)·fm(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/server.go:252 +0x38
gopkg.in/tomb%2ev2.(*Tomb).run(0xc2080400d0, 0xc2080017a0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 34 [select]:
gopkg.in/hockeypuck/hkp.v1/sks.(*Peer).handleRecovery(0xc208048380, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/hkp.v1/sks/recon.go:207 +0x12b
gopkg.in/hockeypuck/hkp.v1/sks.*Peer.(gopkg.in/hockeypuck/hkp.v1/sks.handleRecovery)·fm(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/hkp.v1/sks/recon.go:148 +0x38
gopkg.in/tomb%2ev2.(*Tomb).run(0xc2080483c8, 0xc2080017b0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 35 [select]:
gopkg.in/hockeypuck/hkp.v1/sks.(*Peer).pruneStats(0xc208048380, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/hkp.v1/sks/recon.go:133 +0x151
gopkg.in/hockeypuck/hkp.v1/sks.*Peer.(gopkg.in/hockeypuck/hkp.v1/sks.pruneStats)·fm(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/hkp.v1/sks/recon.go:149 +0x38
gopkg.in/tomb%2ev2.(*Tomb).run(0xc2080483c8, 0xc2080017c0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 36 [IO wait]:
net.runtime_pollWait(0x7f562cc29db0, 0x72, 0x0)
        /usr/lib/go/src/pkg/runtime/netpoll.goc:146 +0x66
net.(*pollDesc).Wait(0xc20802c7d0, 0x72, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/fd_poll_runtime.go:84 +0x46
net.(*pollDesc).WaitRead(0xc20802c7d0, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/fd_poll_runtime.go:89 +0x42
net.(*netFD).accept(0xc20802c770, 0xb589a8, 0x0, 0x7f562cc284c8, 0xb)
        /usr/lib/go/src/pkg/net/fd_unix.go:419 +0x343
net.(*TCPListener).AcceptTCP(0xc20803c700, 0xc208010568, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/tcpsock_posix.go:234 +0x5d
net.(*TCPListener).Accept(0xc20803c700, 0x0, 0x0, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/tcpsock_posix.go:244 +0x4b
gopkg.in/hockeypuck/conflux.v2/recon.(*Peer).Serve(0xc208010540, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:286 +0x40e
gopkg.in/hockeypuck/conflux.v2/recon.*Peer.Serve·fm(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:135 +0x38
gopkg.in/tomb%2ev2.(*Tomb).run(0xc208010568, 0xc2080017d0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 37 [chan receive]:
gopkg.in/tomb%2ev2.(*Tomb).Wait(0xc208985230, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:116 +0x5d
gopkg.in/hockeypuck/conflux.v2/recon.(*Peer).remoteConfig(0xc208010540, 0x7f562cc28f40, 0xc20803c850, 0xa26070, 0x6, 0xc208043d40, 0x31a5e557, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:371 +0x29a
gopkg.in/hockeypuck/conflux.v2/recon.(*Peer).handleConfig(0xc208010540, 0x7f562cc28f40, 0xc20803c850, 0xa26070, 0x6, 0xa0f5d0, 0x0, 0x0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:425 +0x14a
gopkg.in/hockeypuck/conflux.v2/recon.(*Peer).InitiateRecon(0xc208010540, 0x7f562cc28ee0, 0xc2089842a0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/gossip.go:113 +0x2b3
gopkg.in/hockeypuck/conflux.v2/recon.(*Peer).Gossip(0xc208010540, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/gossip.go:59 +0x5cb
gopkg.in/hockeypuck/conflux.v2/recon.*Peer.Gossip·fm(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:133 +0x38
gopkg.in/tomb%2ev2.(*Tomb).run(0xc208010568, 0xc2080017e0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 38 [chan receive]:
main.func·001()
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/cmd/hockeypuck/main.go:54 +0x8c
created by main.main
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/cmd/hockeypuck/main.go:66 +0x459

goroutine 40 [chan receive]:
gopkg.in/hockeypuck/conflux.v2/recon.func·004(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:281 +0x70
gopkg.in/tomb%2ev2.(*Tomb).run(0xc208010568, 0xc2080f5980)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 41 [semacquire]:
sync.runtime_Semacquire(0xc2080d6528)
        /usr/lib/go/src/pkg/runtime/sema.goc:199 +0x30
sync.(*WaitGroup).Wait(0xc208010598)
        /usr/lib/go/src/pkg/sync/waitgroup.go:129 +0x14b
gopkg.in/hockeypuck/conflux.v2/recon.func·003(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:216 +0x50
gopkg.in/tomb%2ev2.(*Tomb).run(0xc208010568, 0xc2080d6330)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 46 [chan receive]:
gopkg.in/hockeypuck/openpgp%2ev1.func·002()
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/openpgp.v1/io.go:273 +0x93
created by gopkg.in/hockeypuck/openpgp%2ev1.ReadKeys
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/openpgp.v1/io.go:279 +0xab

goroutine 45 [chan receive]:
gopkg.in/hockeypuck/hkp%2ev1.(*Handler).Add(0xc2080cc540, 0x7f562cc2b418, 0xc208046280, 0xc208974820, 0x0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/hkp.v1/handler.go:350 +0x2a2
gopkg.in/hockeypuck/hkp%2ev1.*Handler.Add·fm(0x7f562cc2b418, 0xc208046280, 0xc208974820, 0x0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/hkp.v1/handler.go:138 +0x62
github.com/julienschmidt/httprouter.(*Router).ServeHTTP(0xc2080dc870, 0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /var/lib/hockeypuck/src/packaging/src/github.com/julienschmidt/httprouter/router.go:299 +0x18c
github.com/carbocation/interpose.func·002(0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /var/lib/hockeypuck/src/packaging/src/github.com/carbocation/interpose/interpose.go:55 +0x5f
net/http.HandlerFunc.ServeHTTP(0xc2080f5da0, 0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /usr/lib/go/src/pkg/net/http/server.go:1235 +0x40
github.com/hockeypuck/server.func·001(0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /var/lib/hockeypuck/src/packaging/src/github.com/hockeypuck/server/server.go:66 +0x9c
net/http.HandlerFunc.ServeHTTP(0xc2080d6740, 0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /usr/lib/go/src/pkg/net/http/server.go:1235 +0x40
github.com/carbocation/interpose.(*Middleware).ServeHTTP(0xc208097a00, 0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /var/lib/hockeypuck/src/packaging/src/github.com/carbocation/interpose/interpose.go:85 +0x72
net/http.serverHandler.ServeHTTP(0xc208004720, 0x7f562cc2b418, 0xc208046280, 0xc208974820)
        /usr/lib/go/src/pkg/net/http/server.go:1673 +0x19f
net/http.(*conn).serve(0xc208048e80)
        /usr/lib/go/src/pkg/net/http/server.go:1174 +0xa7e
created by net/http.(*Server).Serve
        /usr/lib/go/src/pkg/net/http/server.go:1721 +0x313

goroutine 44 [IO wait]:
net.runtime_pollWait(0x7f562cc29d00, 0x72, 0x0)
        /usr/lib/go/src/pkg/runtime/netpoll.goc:146 +0x66
net.(*pollDesc).Wait(0xc20802c8b0, 0x72, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/fd_poll_runtime.go:84 +0x46
net.(*pollDesc).WaitRead(0xc20802c8b0, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/fd_poll_runtime.go:89 +0x42
net.(*netFD).Read(0xc20802c850, 0xc2080d6648, 0x4, 0x4, 0x0, 0x7f562cc284c8, 0xb)
        /usr/lib/go/src/pkg/net/fd_unix.go:242 +0x34c
net.(*conn).Read(0xc20803c850, 0xc2080d6648, 0x4, 0x4, 0x0, 0x0, 0x0)
        /usr/lib/go/src/pkg/net/net.go:122 +0xe7
io.ReadAtLeast(0x7f562cc29fc0, 0xc20803c850, 0xc2080d6648, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0)
        /usr/lib/go/src/pkg/io/io.go:289 +0xf7
io.ReadFull(0x7f562cc29fc0, 0xc20803c850, 0xc2080d6648, 0x4, 0x4, 0x4, 0x0, 0x0)
        /usr/lib/go/src/pkg/io/io.go:307 +0x71
gopkg.in/hockeypuck/conflux.v2/recon.ReadInt(0x7f562cc29fc0, 0xc20803c850, 0x0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/messages.go:136 +0x98
gopkg.in/hockeypuck/conflux.v2/recon.ReadLen(0x7f562cc29fc0, 0xc20803c850, 0xa283d0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/messages.go:142 +0x57
gopkg.in/hockeypuck/conflux.v2/recon.ReadMsg(0x7f562cc29fc0, 0xc20803c850, 0x0, 0x0, 0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/messages.go:599 +0x72
gopkg.in/hockeypuck/conflux.v2/recon.func·008(0x0, 0x0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/conflux.v2/recon/peer.go:357 +0x2a2
gopkg.in/tomb%2ev2.(*Tomb).run(0xc208985230, 0xc2089854d0)
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:153 +0x23
created by gopkg.in/tomb%2ev2.(*Tomb).Go
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/tomb.v2/tomb.go:149 +0x110

goroutine 47 [runnable]:
gopkg.in/hockeypuck/openpgp%2ev1.func·003()
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/openpgp.v1/io.go:287 +0x93
created by gopkg.in/hockeypuck/openpgp%2ev1.readKeys
        /var/lib/hockeypuck/src/packaging/src/gopkg.in/hockeypuck/openpgp.v1/io.go:295 +0xab
hockeypuck@hockeypuck:~$
bjmgeek commented 8 years ago

here's the original key:

-----BEGIN PGP PUBLIC KEY BLOCK-----

xsBNBFaMFhUBCAC28MXk+nb3E0OYTFpdDn9x1Q6Jzu+p3QSB/5wdud+6KilHuGXC
e8tCkkdhd1FcGaDcuRohAC6Y3uNX163LMlD0Nu1pUDPRijQ8ayAr7QiUfWD+az5y
ISUgb5U69O8DnBsn7iW024y5W+quoCtHi4BNwKCRurw94xV++433wQ6AvwX5GSm8
kl3lRuFDBtztzeHhWg/tiZrBnkv15LyTJoe0AF6sg2thFA6zxg3CYEbiQEBXbJ9c
1BCT0od6K3iXZrX2WkwNYoIe3kgE0JEVPx+zcIymVOCpSrg4g2BkYHtkRzOnGcz5
3vi9fXGSFmA6pkH/dn+CKr/MznDtH+6L3bhPABEBAAHNHFRlc3QgVGVzdCA8dGVz
dEBleGFtcGxlLmNvbT7CwH4EEwEIACgFAlaMFhUCGwMFCQABUYAGCwkIBwMCBhUI
AgkKCwQWAgMBAh4BAheAAAoJEAqq5aWzrNlNWOQIAJ3FzqfKaJ3zxqJVWg2QF49n
u5sfCkXtMiL/4W6I9TsOax2Tbf0+4yN58p0F/4sFixUGJymRlwDld2PbSFBgrqPx
rNXuQfFyGrPbbc3+zNb70kPAax81MlMTC5VuzEU5AV8bE2eBGGv3BcODYdTlBzZC
FKPRyA2wPEeBgcTaKNM2elIhKBzLrm77aMxIU9MdumOdNK0H3AiCiSNwun7s5BO7
ntKQgZPy1/iyflV0DXaCCCwOKnpjJGseBmoOJd9gtG3BxIuZ99PbVtcm6h/B515A
8dNCS2Vpts7h7RLCTAz6VfNyiMu2u0CbQo+DvxApVMvwhPRCTuAq8w/THYwAeh3O
wE0EVowWFQEIAPVve2kPFCNi9sCTXAuaEo5L6gZyqca2GnE4cAB2gU2dzWanG8hf
2hyZ50l8oCfxk0/ngAIUqCQEXVOMUfJ00T5JOZiLCdLPwlK/sfjlycqKbfAIv95z
8vLIUNMUrcSPnvlcSMD1CtP2nl7pGEWTvgT28+KCnOhVJU4lXbVVaLNnc+EiXpzZ
p8fXF+qal3aL2GtAA50YzGJ1/l+0bSS8Ao27tx+WS9KrPX3q2zmiVYo6CP5KSqGG
FhhcuY/LlskQfwenXb86OYwmP62n51cC2k0vVIpo4A4xP7LDQ2Onvsq8qdtU5c5r
lCYLlCMLUCbgJXnk2FmIeIvX/oP16EfFQmsAEQEAAcLAZQQYAQgADwUCVowWFQIb
DAUJAAFRgAAKCRAKquWls6zZTa5KCACFzAHtrzEt5ovdxAwhEmMEeVTbpaMg/5VS
CRpjMJ+vHrtgjJ6S6Kfm9WTmuPEy/XdBMp2mdpN4yvOYO0V6UMEcCo6YNyCabvY1
AUp0rYco6Q0YUiWvEHH9eFIzkpM955Uy6B0skQUFz0WbPcHSWRPAfr65kbpZ8HYg
nasYT/6wmgKdNpGWIwrdGvCA/B2DgcWmQIxwChtWd5DnL7laEFAU2QCIet2IEBbK
hjvgkY8dBnHzkyFSalC1POWNDuwBOKfPyqQ56wp+57Al0zIDqKtH7hhSrVdfda5T
ktnENxeP8C9kS9xzu/aG4p8zQPnLMndBc1wKZ0RueSqIAakimrn7
=jYjX
-----END PGP PUBLIC KEY BLOCK-----

And here's the revocation certificate:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
Comment: A revocation certificate should follow

iQEfBCABCAAJBQJWjB6fAh0AAAoJEAqq5aWzrNlNwgoIAI5se8l7w9x3yzI0m8Mb
4uftEUEyoZKZmOtQtucb8gxZIvuK9it3K6Epl+Cq1/4YXVF32ljPyPwKiQlOaSkw
YGOJgYi2v3cxcRIw20WtgFjhnebQUPrm7+cYlHCMdSiw/15FUVHeItloHs/7thg+
g7r5YTbpOO0bQSwXG1JSLfPO5hTh/joXb0UrDZQsyJYbIhZ4HuBU8S8yZPOuFvlI
DVK4g5719ccJV3GOS3HqrXWPqHLAkQgmt7230s64PtshdPQna3usJRe7yTcYiCXd
igH1N1zFZTZlT4uALR1oDIwUGzHSj51SPMpD6NOteToTq95BP5oZsIgPWxSOaVCn
fEc=
=FbHx
-----END PGP PUBLIC KEY BLOCK-----