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

Function TestScryptIdentityErrors

age_test.go:418–481  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

416}
417
418func TestScryptIdentityErrors(t *testing.T) {
419 t.Run("not passphrase-encrypted", func(t *testing.T) {
420 i, err := age.GenerateX25519Identity()
421 if err != nil {
422 t.Fatal(err)
423 }
424
425 buf := &bytes.Buffer{}
426 w, err := age.Encrypt(buf, i.Recipient())
427 if err != nil {
428 t.Fatal(err)
429 }
430 if err := w.Close(); err != nil {
431 t.Fatal(err)
432 }
433
434 scryptID, err := age.NewScryptIdentity("password")
435 if err != nil {
436 t.Fatal(err)
437 }
438 _, err = age.Decrypt(bytes.NewReader(buf.Bytes()), scryptID)
439 if err == nil {
440 t.Fatal("expected decryption to fail")
441 }
442 if !errors.Is(err, age.ErrIncorrectIdentity) {
443 t.Errorf("expected ErrIncorrectIdentity, got %v", err)
444 }
445 if !strings.Contains(err.Error(), "not passphrase-encrypted") {
446 t.Errorf("expected error to mention 'not passphrase-encrypted', got %v", err)
447 }
448 })
449
450 t.Run("incorrect passphrase", func(t *testing.T) {
451 r, err := age.NewScryptRecipient("correct-password")
452 if err != nil {
453 t.Fatal(err)
454 }
455 r.SetWorkFactor(10) // Low for fast test
456
457 buf := &bytes.Buffer{}
458 w, err := age.Encrypt(buf, r)
459 if err != nil {
460 t.Fatal(err)
461 }
462 if err := w.Close(); err != nil {
463 t.Fatal(err)
464 }
465
466 scryptID, err := age.NewScryptIdentity("wrong-password")
467 if err != nil {
468 t.Fatal(err)
469 }
470 _, err = age.Decrypt(bytes.NewReader(buf.Bytes()), scryptID)
471 if err == nil {
472 t.Fatal("expected decryption to fail")
473 }
474 if !errors.Is(err, age.ErrIncorrectIdentity) {
475 t.Errorf("expected ErrIncorrectIdentity, got %v", err)

Callers

nothing calls this directly

Calls 10

SetWorkFactorMethod · 0.95
GenerateX25519IdentityFunction · 0.92
EncryptFunction · 0.92
NewScryptIdentityFunction · 0.92
DecryptFunction · 0.92
NewScryptRecipientFunction · 0.92
BytesMethod · 0.80
RecipientMethod · 0.45
CloseMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…