MCPcopy
hub / github.com/FiloSottile/age / testDecrypt

Function testDecrypt

testkit_test.go:152–207  ·  view source on GitHub ↗
(t *testing.T, v *vector)

Source from the content-addressed store, hash-verified

150}
151
152func 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
209func testDecryptReaderAt(t *testing.T, v *vector, plaintext []byte) {

Callers 1

TestVectorsFunction · 0.85

Calls 2

NewReaderFunction · 0.92
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…