Skip to content

Instantly share code, notes, and snippets.

@maxtaco
Created August 5, 2014 12:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maxtaco/b5c0983ba96b8dc88c5f to your computer and use it in GitHub Desktop.
Save maxtaco/b5c0983ba96b8dc88c5f to your computer and use it in GitHub Desktop.
How to decode and decrypt P3SKB format into Standard PGP blocks
{unpack,pack} = require 'purepack'
{createHash} = require 'crypto'
{decrypt} = require 'triplesec'
assert = require 'assert'
{encode} = require('pgp-utils').armor
key = """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"""
passphrase = "aaaabbbbcccc"
# Base64-decode the buffer...
buf = new Buffer key, 'base64'
# Unpack it into a JSON object via Msgpack
json = unpack buf
# Check the hash
given = json.hash.value.toString('hex')
json.hash.value = new Buffer []
newbuf = pack json, { sort_keys : true }
computed = createHash('SHA256').update(newbuf).digest().toString('hex')
assert (given is computed)
# print out the public PGP material. It's in binary form, so we have
# to reencode it using PGP-armoring.
console.log encode {header: {comment : "none", version : "0" } }, "PUBLIC KEY BLOCK", json.body.pub
# Decrypt the private key materal
await decrypt { data : json.body.priv.data, key : (new Buffer passphrase, 'utf8') }, defer err, res
throw err if err?
# print out the private PGP material. It's in binary form, so we have
# to reencode it using PGP-armoring.
console.log encode {header: {comment : "none", version : "0" } }, "PRIVATE KEY BLOCK", res
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment