FormatV2Test.php 3.0 KB

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