1package oaep
2
3import (
4	"bytes"
5	"crypto/rand"
6	"crypto/rsa"
7	"testing"
8
9	"github.com/ssh-vault/crypto"
10)
11
12func TestOAEP(t *testing.T) {
13	privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
14	if err != nil {
15		t.Error(err)
16	}
17	publicKey := &privateKey.PublicKey
18	message := []byte("The quick brown fox jumps over the lazy dog")
19
20	ciphertext, err := Encrypt(publicKey, message, []byte(""))
21	if err != nil {
22		t.Error(err)
23	}
24
25	plaintext, err := Decrypt(privateKey, ciphertext, []byte(""))
26	if err != nil {
27		t.Error(err)
28	}
29
30	if !bytes.Equal(message, plaintext) {
31		t.Error("message != plaintext")
32	}
33}
34
35func TestOAEPLabel(t *testing.T) {
36	privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
37	if err != nil {
38		t.Error(err)
39	}
40	publicKey := &privateKey.PublicKey
41	message := []byte("The quick brown fox jumps over the lazy dog")
42
43	label, err := crypto.GenerateNonce(64)
44	if err != nil {
45		t.Error(err)
46	}
47
48	ciphertext, err := Encrypt(publicKey, message, label)
49	if err != nil {
50		t.Error(err)
51	}
52
53	plaintext, err := Decrypt(privateKey, ciphertext, label)
54	if err != nil {
55		t.Error(err)
56	}
57
58	if !bytes.Equal(message, plaintext) {
59		t.Error("message != plaintext")
60	}
61}
62