You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

passwords_test.go 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. // Copyright (c) 2020 Shivaram Lingamneni <slingamn@cs.stanford.edu>
  2. // released under the MIT license
  3. package migrations
  4. import (
  5. "encoding/base64"
  6. "testing"
  7. )
  8. func TestAthemePassphrases(t *testing.T) {
  9. var err error
  10. err = CheckAthemePassphrase([]byte("$1$hcspif$nCm4r3S14Me9ifsOPGuJT."), []byte("shivarampassphrase"))
  11. if err != nil {
  12. t.Errorf("failed to check passphrase: %v", err)
  13. }
  14. err = CheckAthemePassphrase([]byte("$1$hcspif$nCm4r3S14Me9ifsOPGuJT."), []byte("sh1varampassphrase"))
  15. if err == nil {
  16. t.Errorf("accepted invalid passphrase")
  17. }
  18. err = CheckAthemePassphrase([]byte("khMlbBBIFya2ihyN42abc3e768663e2c4fd0e0020e46292bf9fdf44e9a51d2a2e69509cb73b4b1bf9c1b6355a1fc9ea663fcd6da902287159494f15b905e5e651d6a60f2ec834598"), []byte("password"))
  19. if err != nil {
  20. t.Errorf("failed to check passphrase: %v", err)
  21. }
  22. err = CheckAthemePassphrase([]byte("khMlbBBIFya2ihyN42abc3e768663e2c4fd0e0020e46292bf9fdf44e9a51d2a2e69509cb73b4b1bf9c1b6355a1fc9ea663fcd6da902287159494f15b905e5e651d6a60f2ec834598"), []byte("passw0rd"))
  23. if err == nil {
  24. t.Errorf("accepted invalid passphrase")
  25. }
  26. err = CheckAthemePassphrase([]byte("$z$65$64000$1kz1I9YJPJ2gkJALbrpL2DoxRDhYPBOg60KNJMK/6do=$Cnfg6pYhBNrVXiaXYH46byrC+3HKet/XvYwvI1BvZbs=$m0hrT33gcF90n2TU3lm8tdm9V9XC4xEV13KsjuT38iY="), []byte("password"))
  27. if err != nil {
  28. t.Errorf("failed to check passphrase: %v", err)
  29. }
  30. err = CheckAthemePassphrase([]byte("$z$65$64000$1kz1I9YJPJ2gkJALbrpL2DoxRDhYPBOg60KNJMK/6do=$Cnfg6pYhBNrVXiaXYH46byrC+3HKet/XvYwvI1BvZbs=$m0hrT33gcF90n2TU3lm8tdm9V9XC4xEV13KsjuT38iY="), []byte("passw0rd"))
  31. if err == nil {
  32. t.Errorf("accepted invalid passphrase")
  33. }
  34. }
  35. func TestOragonoLegacyPassphrase(t *testing.T) {
  36. shivaramHash, err := base64.StdEncoding.DecodeString("ZPLKvCGipalUo9AlDIlMzAuY/ACWvM3yr1kh7k0/wa7lLlCwaPpe2ht9LNZZlZ9FPUWggUi7D4jyg2WnJDJhJDE0JDRsN0gwVmYvNHlyNjR1U212U2Q0YU9EVmRvWngwcXNGLkkyYVc4eUZISGxYaGE4SWVrRzRt")
  37. if err != nil {
  38. panic(err)
  39. }
  40. edHash, err := base64.StdEncoding.DecodeString("ZPLKvCGipalUo9AlDIlMzAuY/ACWvM3yr1kh7k0/+42q72mFnpDZWgjmqp1Zd77rEUO8ItYe4aGwWelUJDJhJDE0JHFqSGJ5NWVJbnJTdXBRT29pUmNUUWV5U2xmWjZETlRNcXlSMExUb2RmY3l1Skw2c3BTb3lh")
  41. if err != nil {
  42. panic(err)
  43. }
  44. err = CheckOragonoPassphraseV0(shivaramHash, []byte("shivarampassphrase"))
  45. if err != nil {
  46. t.Errorf("failed to check passphrase: %v", err)
  47. }
  48. err = CheckOragonoPassphraseV0(shivaramHash, []byte("edpassphrase"))
  49. if err == nil {
  50. t.Errorf("accepted invalid passphrase")
  51. }
  52. err = CheckOragonoPassphraseV0(edHash, []byte("edpassphrase"))
  53. if err != nil {
  54. t.Errorf("failed to check passphrase: %v", err)
  55. }
  56. err = CheckOragonoPassphraseV0(edHash, []byte("shivarampassphrase"))
  57. if err == nil {
  58. t.Errorf("accepted invalid passphrase")
  59. }
  60. }