Revision 68857643 test/ganeti.utils_unittest.py
b/test/ganeti.utils_unittest.py | ||
---|---|---|
1698 | 1698 |
self.assertEqual(validity, (None, None)) |
1699 | 1699 |
|
1700 | 1700 |
|
1701 |
class TestSignX509Certificate(unittest.TestCase): |
|
1702 |
KEY = "My private key!" |
|
1703 |
KEY_OTHER = "Another key" |
|
1704 |
|
|
1705 |
def test(self): |
|
1706 |
# Generate certificate valid for 5 minutes |
|
1707 |
(_, cert_pem) = utils.GenerateSelfSignedX509Cert(None, 300) |
|
1708 |
|
|
1709 |
cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, |
|
1710 |
cert_pem) |
|
1711 |
|
|
1712 |
# No signature at all |
|
1713 |
self.assertRaises(errors.GenericError, |
|
1714 |
utils.LoadSignedX509Certificate, cert_pem, self.KEY) |
|
1715 |
|
|
1716 |
# Invalid input |
|
1717 |
self.assertRaises(errors.GenericError, utils.LoadSignedX509Certificate, |
|
1718 |
"", self.KEY) |
|
1719 |
self.assertRaises(errors.GenericError, utils.LoadSignedX509Certificate, |
|
1720 |
"X-Ganeti-Signature: \n", self.KEY) |
|
1721 |
self.assertRaises(errors.GenericError, utils.LoadSignedX509Certificate, |
|
1722 |
"X-Ganeti-Sign: $1234$abcdef\n", self.KEY) |
|
1723 |
self.assertRaises(errors.GenericError, utils.LoadSignedX509Certificate, |
|
1724 |
"X-Ganeti-Signature: $1234567890$abcdef\n", self.KEY) |
|
1725 |
self.assertRaises(errors.GenericError, utils.LoadSignedX509Certificate, |
|
1726 |
"X-Ganeti-Signature: $1234$abc\n\n" + cert_pem, self.KEY) |
|
1727 |
|
|
1728 |
# Invalid salt |
|
1729 |
for salt in list("-_@$,:;/\\ \t\n"): |
|
1730 |
self.assertRaises(errors.GenericError, utils.SignX509Certificate, |
|
1731 |
cert_pem, self.KEY, "foo%sbar" % salt) |
|
1732 |
|
|
1733 |
for salt in ["HelloWorld", "salt", string.letters, string.digits, |
|
1734 |
utils.GenerateSecret(numbytes=4), |
|
1735 |
utils.GenerateSecret(numbytes=16), |
|
1736 |
"{123:456}".encode("hex")]: |
|
1737 |
signed_pem = utils.SignX509Certificate(cert, self.KEY, salt) |
|
1738 |
|
|
1739 |
self._Check(cert, salt, signed_pem) |
|
1740 |
|
|
1741 |
self._Check(cert, salt, "X-Another-Header: with a value\n" + signed_pem) |
|
1742 |
self._Check(cert, salt, (10 * "Hello World!\n") + signed_pem) |
|
1743 |
self._Check(cert, salt, (signed_pem + "\n\na few more\n" |
|
1744 |
"lines----\n------ at\nthe end!")) |
|
1745 |
|
|
1746 |
def _Check(self, cert, salt, pem): |
|
1747 |
(cert2, salt2) = utils.LoadSignedX509Certificate(pem, self.KEY) |
|
1748 |
self.assertEqual(salt, salt2) |
|
1749 |
self.assertEqual(cert.digest("sha1"), cert2.digest("sha1")) |
|
1750 |
|
|
1751 |
# Other key |
|
1752 |
self.assertRaises(errors.GenericError, utils.LoadSignedX509Certificate, |
|
1753 |
pem, self.KEY_OTHER) |
|
1754 |
|
|
1755 |
|
|
1701 | 1756 |
if __name__ == '__main__': |
1702 | 1757 |
testutils.GanetiTestProgram() |
Also available in: Unified diff