(t *testing.T, v *vector)
| 150 | } |
| 151 | |
| 152 | func testDecrypt(t *testing.T, v *vector) []byte { |
| 153 | var in io.Reader = bytes.NewReader(v.file) |
| 154 | if v.armored { |
| 155 | in = armor.NewReader(in) |
| 156 | } |
| 157 | r, err := age.Decrypt(in, v.identities...) |
| 158 | if err != nil && strings.HasSuffix(err.Error(), "bad header MAC") { |
| 159 | if v.expect == "HMAC failure" { |
| 160 | t.Log(err) |
| 161 | return nil |
| 162 | } |
| 163 | t.Fatalf("expected %s, got HMAC error", v.expect) |
| 164 | } else if e := new(armor.Error); errors.As(err, &e) { |
| 165 | if v.expect == "armor failure" { |
| 166 | t.Log(err) |
| 167 | return nil |
| 168 | } |
| 169 | t.Fatalf("expected %s, got: %v", v.expect, err) |
| 170 | } else if _, ok := err.(*age.NoIdentityMatchError); ok { |
| 171 | if v.expect == "no match" { |
| 172 | t.Log(err) |
| 173 | return nil |
| 174 | } |
| 175 | t.Fatalf("expected %s, got: %v", v.expect, err) |
| 176 | } else if err != nil { |
| 177 | if v.expect == "header failure" { |
| 178 | t.Log(err) |
| 179 | return nil |
| 180 | } |
| 181 | t.Fatalf("expected %s, got: %v", v.expect, err) |
| 182 | } else if v.expect != "success" && v.expect != "payload failure" && |
| 183 | v.expect != "armor failure" { |
| 184 | t.Fatalf("expected %s, got success", v.expect) |
| 185 | } |
| 186 | out, err := io.ReadAll(r) |
| 187 | if err != nil && v.expect == "success" { |
| 188 | t.Fatalf("expected %s, got: %v", v.expect, err) |
| 189 | } else if err != nil { |
| 190 | t.Log(err) |
| 191 | if v.expect == "armor failure" { |
| 192 | if e := new(armor.Error); !errors.As(err, &e) { |
| 193 | t.Errorf("expected armor.Error, got %T", err) |
| 194 | } |
| 195 | } |
| 196 | if v.payloadHash != nil && sha256.Sum256(out) != *v.payloadHash { |
| 197 | t.Errorf("partial payload hash mismatch, read %d bytes", len(out)) |
| 198 | } |
| 199 | return out |
| 200 | } else if v.expect != "success" { |
| 201 | t.Fatalf("expected %s, got success", v.expect) |
| 202 | } |
| 203 | if sha256.Sum256(out) != *v.payloadHash { |
| 204 | t.Error("payload hash mismatch") |
| 205 | } |
| 206 | return out |
| 207 | } |
| 208 | |
| 209 | func testDecryptReaderAt(t *testing.T, v *vector, plaintext []byte) { |
no test coverage detected
searching dependent graphs…