FormatV2Test.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. use PrivateBin\FormatV2;
  3. class FormatV2Test extends PHPUnit_Framework_TestCase
  4. {
  5. public function testFormatV2ValidatorValidatesCorrectly()
  6. {
  7. $paste = Helper::getPaste();
  8. $paste['meta'] = array('expire' => $paste['meta']['expire']);
  9. $this->assertTrue(FormatV2::isValid($paste), 'valid format');
  10. $comment = Helper::getComment();
  11. unset($comment['meta']);
  12. $this->assertTrue(FormatV2::isValid($comment, true), 'valid format');
  13. $paste['adata'][0][0] = '$';
  14. $this->assertFalse(FormatV2::isValid($paste), 'invalid base64 encoding of iv');
  15. $paste = Helper::getPaste();
  16. $paste['adata'][0][1] = '$';
  17. $this->assertFalse(FormatV2::isValid($paste), 'invalid base64 encoding of salt');
  18. $paste = Helper::getPaste();
  19. $paste['ct'] = '$';
  20. $this->assertFalse(FormatV2::isValid($paste), 'invalid base64 encoding of ct');
  21. $paste = Helper::getPaste();
  22. $paste['ct'] = 'bm9kYXRhbm9kYXRhbm9kYXRhbm9kYXRhbm9kYXRhCg==';
  23. $this->assertFalse(FormatV2::isValid($paste), 'low ct entropy');
  24. $paste = Helper::getPaste();
  25. $paste['adata'][0][0] = 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=';
  26. $this->assertFalse(FormatV2::isValid($paste), 'iv too long');
  27. $paste = Helper::getPaste();
  28. $paste['adata'][0][1] = 'MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=';
  29. $this->assertFalse(FormatV2::isValid($paste), 'salt too long');
  30. $paste = Helper::getPaste();
  31. $paste['foo'] = 'bar';
  32. $this->assertFalse(FormatV2::isValid($paste), 'invalid additional key');
  33. unset($paste['meta']);
  34. $this->assertFalse(FormatV2::isValid($paste), 'invalid missing key');
  35. $paste = Helper::getPaste();
  36. $paste['v'] = 0.9;
  37. $this->assertFalse(FormatV2::isValid($paste), 'unsupported version');
  38. $paste = Helper::getPaste();
  39. $paste['adata'][0][2] = 1000;
  40. $this->assertFalse(FormatV2::isValid($paste), 'not enough iterations');
  41. $paste = Helper::getPaste();
  42. $paste['adata'][0][3] = 127;
  43. $this->assertFalse(FormatV2::isValid($paste), 'invalid key size');
  44. $paste = Helper::getPaste();
  45. $paste['adata'][0][4] = 63;
  46. $this->assertFalse(FormatV2::isValid($paste), 'invalid tag length');
  47. $paste = Helper::getPaste();
  48. $paste['adata'][0][5] = '!#@';
  49. $this->assertFalse(FormatV2::isValid($paste), 'invalid algorithm');
  50. $paste = Helper::getPaste();
  51. $paste['adata'][0][6] = '!#@';
  52. $this->assertFalse(FormatV2::isValid($paste), 'invalid mode');
  53. $paste = Helper::getPaste();
  54. $paste['adata'][0][7] = '!#@';
  55. $this->assertFalse(FormatV2::isValid($paste), 'invalid compression');
  56. }
  57. }