Skip to content

Commit

Permalink
Add unit tests for MDC verification.
Browse files Browse the repository at this point in the history
  • Loading branch information
yunosh committed May 15, 2018
1 parent 1c054ce commit 64d67c7
Show file tree
Hide file tree
Showing 10 changed files with 230 additions and 1 deletion.
74 changes: 73 additions & 1 deletion test/Horde/Crypt/Pgp/TestBase.php
Expand Up @@ -652,6 +652,79 @@ public function testDetectingDigestAlgoBug14814($pgp)
);
}

/**
* @dataProvider backendProvider
*/
public function testMdcCorrect($pgp)
{
$this->_testMdc($pgp, 'correct');
}

/**
* @dataProvider backendProvider
*/
public function testMdcCorrectWithoutCrc($pgp)
{
$this->_testMdc($pgp, 'correct-withoutcrc');
}

/**
* @expectedException Horde_Crypt_Exception
* @expectedExceptionMessage Could not decrypt PGP data.
* @dataProvider backendProvider
*/
public function testMdcWithoutMdc($pgp)
{
$this->_testMdc($pgp, 'withoutmdc');
}

/**
* @expectedException Horde_Crypt_Exception
* @expectedExceptionMessage Could not decrypt PGP data.
* @dataProvider backendProvider
*/
public function testMdcManipulatedWithoutMdc($pgp)
{
$this->_testMdc($pgp, 'manipulated-withoutmdc');
}

/**
* @expectedException Horde_Crypt_Exception
* @expectedExceptionMessage Could not decrypt PGP data.
* @dataProvider backendProvider
*/
public function testMdcWrongMdc($pgp)
{
$this->_testMdc($pgp, 'wrongmdc');
}

/**
* @expectedException Horde_Crypt_Exception
* @expectedExceptionMessage Could not decrypt PGP data.
* @dataProvider backendProvider
*/
public function testMdcManipulated($pgp)
{
$this->_testMdc($pgp, 'manmessage');
}

protected function _testMdc($pgp, $fixture)
{
$crypt = $this->_getFixture('mdc/' . $fixture);

$decrypt = $pgp->decrypt($crypt, array(
'passphrase' => '',
'privkey' => $this->_getFixture('mdc/secret-key.gpg'),
'pubkey' => $this->_getFixture('mdc/public-key.gpg'),
'type' => 'message'
));

$this->assertStringEqualsFile(
dirname(__DIR__) . '/fixtures/mdc/testmessage',
$decrypt->message
);
}

/* Helper methods. */

protected function _getFixture($file)
Expand All @@ -668,5 +741,4 @@ protected function _getPublicKey()
{
return $this->_getFixture('pgp_public.asc');
}

}
12 changes: 12 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/correct
@@ -0,0 +1,12 @@
-----BEGIN PGP MESSAGE-----

hQEMA1XaaPN1azuyAQf+NWHEOwfl8ZIcbOrZ8dZ5GNZkQ7vk/t5QTgGzOlobiD0Q
g4w420Wvz0BbMUFfsvPJ3y2Sjet9bcbdOUR90XGC4X/cItvTfbYkDJYSzMd1xcOV
QgdaY3hDGqmtuWTL9DTeJ/u7ksjSM+VTDMaZVwIFbot6bSS9LorBBciNUDQlDwUk
maiW4JCNwCTlhq5GaQkQkqyIp4PBxkZf+QL9CL/AV3IcxtszQfcY3EuzuC0q57FM
bf8ufXD7Xh24fupcDWX5xl5izsGw5NQTxhh3rcaj+S4kD8MiMQvC4esTE1JmkfTh
+6dYb2z8iWXU0TneQuiKraPGscTO4NQCd2GE5ZYiN9JVAbf8j2iwfppzPAJUTSAZ
EG52t8vjfReGkad3ZrdrinUUr17qeCZa22j3ijV8WcEQw8GDPpV6AYvRja3Pmm5z
MeGe06NfUZWcdJh8DfuFX3BTmFRbxA==
=F0Xa
-----END PGP MESSAGE-----
12 changes: 12 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/correct-withoutcrc
@@ -0,0 +1,12 @@
-----BEGIN PGP MESSAGE-----

hQEMA1XaaPN1azuyAQf+NWHEOwfl8ZIcbOrZ8dZ5GNZkQ7vk/t5QTgGzOlobiD0Q
g4w420Wvz0BbMUFfsvPJ3y2Sjet9bcbdOUR90XGC4X/cItvTfbYkDJYSzMd1xcOV
QgdaY3hDGqmtuWTL9DTeJ/u7ksjSM+VTDMaZVwIFbot6bSS9LorBBciNUDQlDwUk
maiW4JCNwCTlhq5GaQkQkqyIp4PBxkZf+QL9CL/AV3IcxtszQfcY3EuzuC0q57FM
bf8ufXD7Xh24fupcDWX5xl5izsGw5NQTxhh3rcaj+S4kD8MiMQvC4esTE1JmkfTh
+6dYb2z8iWXU0TneQuiKraPGscTO4NQCd2GE5ZYiN9JVAbf8j2iwfppzPAJUTSAZ
EG52t8vjfReGkad3ZrdrinUUr17qeCZa22j3ijV8WcEQw8GDPpV6AYvRja3Pmm5z
MeGe06NfUZWcdJh8DfuFX3BTmFRbxA==

-----END PGP MESSAGE-----
10 changes: 10 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/manipulated-withoutmdc
@@ -0,0 +1,10 @@
-----BEGIN PGP MESSAGE-----

hQEMA1XaaPN1azuyAQf8CBZb0NoS376llYU0FX/piy/caA9edy7N7Zgx4Sb/ln+U
7Vn4ZX1gBfekGNlipWS2oA75ce4crTxKdtcggQEmnVHGasvbr1pvFWqYA3NiQqJk
mOMg9kJXm4TJ5rK340vndFUAH8xYbj1yKZC49BY5c+fCLjPhgxnVL6YdKJAl633N
RPIlwfetzV2zlgQbnEaoJsd2cG4yAhktoewFXzlYY1etwZaGKkmOSjneRPYXWK9R
/AaYhlEeJ1YcyisJmmmnqRliZu2B+Pu3UPbITcSb/i5f27IGhzddezuASNXeOG4M
z4O5pno5q6AKSaXGRXocjWsMedbq/sBQXtEQjfup16Q+DXTtpVG5HwWD+YiBUzcg
or4YUhvdETuAOwzbgh/FhDSeofoFaZj7WEFRdJUrofz7Gz5Vo5XqOz1xDly/As8=
-----END PGP MESSAGE-----
12 changes: 12 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/manmessage
@@ -0,0 +1,12 @@
-----BEGIN PGP MESSAGE-----

hQEMA1XaaPN1azuyAQf+NWHEOwfl8ZIcbOrZ8dZ5GNZkQ7vk/t5QTgGzOlobiD0Q
g4w420Wvz0BbMUFfsvPJ3y2Sjet9bcbdOUR90XGC4X/cItvTfbYkDJYSzMd1xcOV
QgdaY3hDGqmtuWTL9DTeJ/u7ksjSM+VTDMaZVwIFbot6bSS9LorBBciNUDQlDwUk
maiW4JCNwCTlhq5GaQkQkqyIp4PBxkZf+QL9CL/AV3IcxtszQfcY3EuzuC0q57FM
bf8ufXD7Xh24fupcDWX5xl5izsGw5NQTxhh3rcaj+S4kD8MiMQvC4esTE1JmkfTh
+6dYb2z8iWXU0TneQuiKraPGscTO4NQCd2GE5ZYiN9JVAbf8j2iwfppzPAJUTSAZ
EG52t8vjfReGkad3ZrdrinUUr17qeCZa22j3ijV8WcEQw8GDPpW6AYvRja3Pmm5z
MeGe06NfUZWcdJh8DfuFX3BTmFRbxA==

-----END PGP MESSAGE-----
30 changes: 30 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/public-key.gpg
@@ -0,0 +1,30 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBFr6/vEBCADe3J9qNXpZYpeSGNiN/RTtP+UdsFoeG6t0vYGqJy4gy0wQ7t3U
7hKQS+0iytydjMoKek1ukNNDsKOtOJoMo4cRgRYiLEyrYsYrbsWUQbZdWq8xPuRa
Yh8GLEkgJddQNHjThzAAz8YikwGFia3j9b1mzeW4mCMqAZWaMzYEYCd+qmeLkC+l
RmX4yI0TqFwOOX4lWSIUCMrJe5EPXMrKgrln6+HTXE4umGThXgmlsdUnTooBNTLv
LkFEg51H7s4sGssMo9gcYVVgTy0F/hFUVWE/gVwIfDx4KaYgH2tB1oEllyJPOTkv
xYlOeQMA8xSIhcJhhZCW4H8nNfd2G6zznuIXABEBAAG0HXRlc3RrZXkgPHRlc3RA
ZGViaWFuZm9ydW0uZGU+iQFUBBMBCAA+FiEE9GriEoF0LqjLKWJq0Vd721xXE3oF
Alr6/vECGwMFCQPCZwAFCwkIBwIGFQgJCgsCBBYCAwECHgECF4AACgkQ0Vd721xX
E3pX4Qf+OUCIc67jDK+CzvC6ZgezJ+DOXH2iW6lH73ZBbM9oQUNx9WXw548TY35S
oME6PYcWOayAYBEXOfyU0QHN5csNAWKDRdsyR8SM3+Rghmo9cFF3c/sw5MSjrJfE
OqJu/OiZbtuwX0P3m0oliurnivY6Wvp4EpUIqZa4Fq1dL6TAOc+zFE0Br4xiOKbC
k/vMzBh7gAkYHjfa9QxDDS2Xs1Mu3C8JPAebW06KneGHyCDtQAQr+O4SRNOxCYTX
Mzd1c/RhBdGV9B24qvmu2xVZWnXo0LQ0T58D98W+ivVA5Tcir6vkHiK2Ky16N5qN
kmHepj5ez+Grm7d76BhKDXXhMdHMoLkBDQRa+v7xAQgAuQxuNilgkXm2l9XCXBfB
g9VJ5XuLyvVgePHsKp1sFaRJqAOYsUdFWoyuRiDPcKSR3/NL6GuU/9MCK4M0Y2Xb
mlYeCofXyVCsNvhb6Eipy+siOt0V7CzPSnhbR9Vrq4UMVTTeT0CsS3Gi7Nil1Epc
xkFxOaSIkky28lRbgRdMF0anBizvSokEaNZQpCSveyQNKiNAY1fByHgnFO4Kd/zJ
ObyaQwoVpFkOLyUmvUO477YkA3Y5AWe2/XjYEj1KWLTZj9RmphAhX5FxnkewxAaG
NeH+vqlFDYxXCPHqshPa9g3ZaND2zrPNt94aK8nH0Rt1Kkmg2iWpZ27aXgtZJNb7
2wARAQABiQE8BBgBCAAmFiEE9GriEoF0LqjLKWJq0Vd721xXE3oFAlr6/vECGwwF
CQPCZwAACgkQ0Vd721xXE3qfEAgAq2xT71hzSVaeuy2Ne31TVNdiA3VxCvOcgjQj
Fu5V8sa6KfdVByCxaS0P60QnNfWCTDUZJAsEYNbyEZ3ljQXq6dsUPX1Ex5vjwtG6
g5+SApYXpcztJdh8qlLpkAMKJD+Q+oadxNA3YAdGrPSZ8+kEvStE7wd0VLFlPwSk
1lx0BWpineVMtj6p77WxVDB6P9fGsauUPRDwUARIL6+SMS3baMnOdxzNbW7P5zdC
rrWyigLvuFepnLXBKEFoDBBpFY7yXstBavJRqVqNSIlxsCMn3FfLf0elddygRpOT
nRb0+QISlZOoHBtLEumGy58i4fK4T0cToYDj2AymEiiFBHIeYw==
=BzjY
-----END PGP PUBLIC KEY BLOCK-----
57 changes: 57 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/secret-key.gpg
@@ -0,0 +1,57 @@
-----BEGIN PGP PRIVATE KEY BLOCK-----

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
=eUC3
-----END PGP PRIVATE KEY BLOCK-----
1 change: 1 addition & 0 deletions test/Horde/Crypt/fixtures/mdc/testmessage
@@ -0,0 +1 @@
Streng geheime Botschaft
11 changes: 11 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/withoutmdc
@@ -0,0 +1,11 @@
-----BEGIN PGP MESSAGE-----

hQEMA1XaaPN1azuyAQf8CBZb0NoS376llYU0FX/piy/caA9edy7N7Zgx4Sb/ln+U
7Vn4ZX1gBfekGNlipWS2oA75ce4crTxKdtcggQEmnVHGasvbr1pvFWqYA3NiQqJk
mOMg9kJXm4TJ5rK340vndFUAH8xYbj1yKZC49BY5c+fCLjPhgxnVL6YdKJAl633N
RPIlwfetzV2zlgQbnEaoJsd2cG4yAhktoewFXzlYY1etwZaGKkmOSjneRPYXWK9R
/AaYhlEeJ1YcyisJmmmnqRliZu2B+Pu3UPbITcSb/i5f27IGhzddezuASNXeOG4M
z4O5pno5q6AKSaXGRXocjWsMedbq/sBQXtEQjfup16Q+DXTtpVG5HwWD+YiBUzcg
or4YUhvdETuAOwzbgh/FhDSeofoFaZj7WEFRdJUrofz7Gz5Vo5XpOz1xDly/As8=
=R6/k
-----END PGP MESSAGE-----
12 changes: 12 additions & 0 deletions test/Horde/Crypt/fixtures/mdc/wrongmdc
@@ -0,0 +1,12 @@
-----BEGIN PGP MESSAGE-----

hQEMA1XaaPN1azuyAQf+NWHEOwfl8ZIcbOrZ8dZ5GNZkQ7vk/t5QTgGzOlobiD0Q
g4w420Wvz0BbMUFfsvPJ3y2Sjet9bcbdOUR90XGC4X/cItvTfbYkDJYSzMd1xcOV
QgdaY3hDGqmtuWTL9DTeJ/u7ksjSM+VTDMaZVwIFbot6bSS9LorBBciNUDQlDwUk
maiW4JCNwCTlhq5GaQkQkqyIp4PBxkZf+QL9CL/AV3IcxtszQfcY3EuzuC0q57FM
bf8ufXD7Xh24fupcDWX5xl5izsGw5NQTxhh3rcaj+S4kD8MiMQvC4esTE1JmkfTh
+6dYb2z8iWXU0TneQuiKraPGscTO4NQCd2GE5ZYiN9JVAbf8j2iwfppzPAJUTSAZ
EG52t8vjfReGkad3ZrdrinUUr17qeCZa22j3ijV8WcEQw8GDPpV6AYvRja3Pmm5z
MeGe06NfUZWcdJh8DfuFX3BSmFRbxA==

-----END PGP MESSAGE-----

0 comments on commit 64d67c7

Please sign in to comment.