Prepare release 2.7.5 with packet API (#269)
Adds the following API functions: - API to get signature key IDs for mobile: func (msg *PGPMessage) GetHexSignatureKeyIDsJson() []byte - API to get encryption key IDs for mobile: func (msg *PGPMessage) GetHexEncryptionKeyIDsJson() []byte - API to get the number of key packets in a PGP message: func (msg *PGPSplitMessage) GetNumberOfKeyPackets() (int, error) - API in package `helper` to encrypt a PGP message to an additional key: func EncryptPGPMessageToAdditionalKey(messageToModify *crypto.PGPSplitMessage, keyRing *crypto.KeyRing, additionalKey *crypto.KeyRing) error
This commit is contained in:
parent
02a4599829
commit
c6a3058e2e
7 changed files with 157 additions and 2 deletions
56
helper/message_test.go
Normal file
56
helper/message_test.go
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
package helper_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/ProtonMail/gopenpgp/v2/crypto"
|
||||
"github.com/ProtonMail/gopenpgp/v2/helper"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestEncryptPGPMessageToAdditionalKey(t *testing.T) {
|
||||
keyA, err := crypto.GenerateKey("A", "a@a.a", "x25519", 0)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when generating key, got:", err)
|
||||
}
|
||||
|
||||
keyB, err := crypto.GenerateKey("B", "b@b.b", "x25519", 0)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when generating key, got:", err)
|
||||
}
|
||||
|
||||
keyRingA, err := crypto.NewKeyRing(keyA)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when creating keyring, got:", err)
|
||||
}
|
||||
keyRingB, err := crypto.NewKeyRing(keyB)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when creating keyring, got:", err)
|
||||
}
|
||||
|
||||
message := crypto.NewPlainMessageFromString("plain text")
|
||||
// Encrypt towards A
|
||||
ciphertext, err := keyRingA.Encrypt(message, nil)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when encrypting, got:", err)
|
||||
}
|
||||
ciphertextSplit, err := ciphertext.SplitMessage()
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when splitting message, got:", err)
|
||||
}
|
||||
// Also encrypt the message towards B
|
||||
if err := helper.EncryptPGPMessageToAdditionalKey(ciphertextSplit, keyRingA, keyRingB); err != nil {
|
||||
t.Fatal("Expected no error when modifying the message, got:", err)
|
||||
}
|
||||
|
||||
// Test decrypt with B
|
||||
decrypted, err := keyRingB.Decrypt(
|
||||
ciphertextSplit.GetPGPMessage(),
|
||||
nil,
|
||||
0,
|
||||
)
|
||||
if err != nil {
|
||||
t.Fatal("Expected no error when decrypting, got:", err)
|
||||
}
|
||||
assert.Exactly(t, message.GetString(), decrypted.GetString())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue