@@ -2,6 +2,8 @@ package delphi_test
2
2
3
3
import (
4
4
"crypto/rand"
5
+ "fmt"
6
+ "slices"
5
7
"testing"
6
8
7
9
"github.com/sean9999/go-delphi"
@@ -42,3 +44,40 @@ func TestExample(t *testing.T) {
42
44
assert .Equal (t , "bar" , foo )
43
45
44
46
}
47
+
48
+ func Example () {
49
+
50
+ // some plain text
51
+ sentence := []byte ("hello world" )
52
+
53
+ // create two principals
54
+ alice := delphi .NewPrincipal (rand .Reader )
55
+ bob := delphi .NewPrincipal (rand .Reader )
56
+
57
+ // create a message for bob, from alice
58
+ msg := delphi .NewMessage (rand .Reader , delphi .PlainMessage , sentence )
59
+ msg .SenderKey = alice .PublicKey ()
60
+
61
+ // add some metadata (this becomes AAD)
62
+ msg .Headers ["foo" ] = "bar"
63
+ msg .Headers ["bing" ] = "bat"
64
+
65
+ // encrypt message
66
+ err := msg .Encrypt (rand .Reader , alice , bob .PublicKey (), nil )
67
+ fmt .Println ("should be nil" , err )
68
+
69
+ // decrpyt message
70
+ err = bob .Decrypt (msg , nil )
71
+ fmt .Println ("should be nil" , err )
72
+
73
+ // is decrypted text same as plain text?
74
+ diff := slices .Compare (sentence , msg .PlainText )
75
+ fmt .Println ("should be 0" , diff )
76
+
77
+ // has the metadata survived?
78
+ foo , ok := msg .Headers ["foo" ]
79
+
80
+ fmt .Println ("should be true" , ok )
81
+ fmt .Println ("should be bar" , foo )
82
+
83
+ }
0 commit comments