61 lines
1.2 KiB
Markdown
61 lines
1.2 KiB
Markdown
|
# Go PGP
|
||
|
|
||
|
Layer on top of `golang.org/x/crypto/openpgp` to handle a few PGP use cases.
|
||
|
|
||
|
Forked from [jchavannes/go-pgp](https://github.com/jchavannes/go-pgp). Updated
|
||
|
to be used as a package.
|
||
|
|
||
|
## Examples
|
||
|
|
||
|
### Encryption
|
||
|
|
||
|
[pgp/encrypt_test.go](pgp/encrypt_test.go)
|
||
|
|
||
|
#### Encrypt
|
||
|
|
||
|
````go
|
||
|
// Create public key entity
|
||
|
publicKeyPacket, _ := pgp.GetPublicKeyPacket([]byte(TestPublicKey))
|
||
|
pubEntity, _ := pgp.CreateEntityFromKeys(publicKeyPacket, nil)
|
||
|
|
||
|
// Encrypt message
|
||
|
encrypted, _ := pgp.Encrypt(pubEntity, []byte(TestMessage))
|
||
|
````
|
||
|
|
||
|
#### Decrypt
|
||
|
|
||
|
````go
|
||
|
// Create private key entity
|
||
|
privEntity, _ := pgp.GetEntity([]byte(TestPublicKey), []byte(TestPrivateKey))
|
||
|
|
||
|
// Decrypt message
|
||
|
decrypted, _ := pgp.Decrypt(privEntity, encrypted)
|
||
|
````
|
||
|
|
||
|
### Signing
|
||
|
|
||
|
[pgp/sign_test.go](pgp/sign_test.go)
|
||
|
|
||
|
#### Sign
|
||
|
|
||
|
````go
|
||
|
// Create private key entity
|
||
|
entity, _ := pgp.GetEntity([]byte(TestPublicKey), []byte(TestPrivateKey))
|
||
|
|
||
|
// Sign message
|
||
|
signature, _ := pgp.Sign(entity, []byte(TestMessage))
|
||
|
````
|
||
|
|
||
|
#### Verify
|
||
|
|
||
|
````go
|
||
|
// Create public key packet
|
||
|
pubKeyPacket, _ := pgp.GetPublicKeyPacket([]byte(TestPublicKey))
|
||
|
|
||
|
// Verify signature
|
||
|
err = pgp.Verify(pubKeyPacket, []byte(TestMessage), signature)
|
||
|
if err == nil {
|
||
|
fmt.Println("Signature verified.")
|
||
|
}
|
||
|
````
|