(t *testing.T)
| 105 | } |
| 106 | |
| 107 | func TestKeyRing_MultiKeyEncryptDecrypt(t *testing.T) { |
| 108 | plaintext := []byte("this is a plain text message") |
| 109 | extra := []byte("random data") |
| 110 | |
| 111 | keyring, err := NewKeyring(TestKeys, TestKeys[0]) |
| 112 | if err != nil { |
| 113 | t.Fatalf("err: %s", err) |
| 114 | } |
| 115 | |
| 116 | // First encrypt using the primary key and make sure we can decrypt |
| 117 | var buf bytes.Buffer |
| 118 | err = encryptPayload(1, TestKeys[0], plaintext, extra, &buf) |
| 119 | if err != nil { |
| 120 | t.Fatalf("err: %v", err) |
| 121 | } |
| 122 | |
| 123 | msg, err := decryptPayload(keyring.GetKeys(), buf.Bytes(), extra) |
| 124 | if err != nil { |
| 125 | t.Fatalf("err: %v", err) |
| 126 | } |
| 127 | |
| 128 | if !bytes.Equal(msg, plaintext) { |
| 129 | t.Fatalf("bad: %v", msg) |
| 130 | } |
| 131 | |
| 132 | // Now encrypt with a secondary key and try decrypting again. |
| 133 | buf.Reset() |
| 134 | err = encryptPayload(1, TestKeys[2], plaintext, extra, &buf) |
| 135 | if err != nil { |
| 136 | t.Fatalf("err: %v", err) |
| 137 | } |
| 138 | |
| 139 | msg, err = decryptPayload(keyring.GetKeys(), buf.Bytes(), extra) |
| 140 | if err != nil { |
| 141 | t.Fatalf("err: %v", err) |
| 142 | } |
| 143 | |
| 144 | if !bytes.Equal(msg, plaintext) { |
| 145 | t.Fatalf("bad: %v", msg) |
| 146 | } |
| 147 | |
| 148 | // Remove a key from the ring, and then try decrypting again |
| 149 | if err := keyring.RemoveKey(TestKeys[2]); err != nil { |
| 150 | t.Fatalf("err: %s", err) |
| 151 | } |
| 152 | |
| 153 | _, err = decryptPayload(keyring.GetKeys(), buf.Bytes(), extra) |
| 154 | if err == nil { |
| 155 | t.Fatalf("Expected no keys to decrypt message") |
| 156 | } |
| 157 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…