~sileht/pyopenssl/pyopenssl

« back to all changes in this revision

Viewing changes to OpenSSL/test/test_crypto.py

  • Committer: Jean-Paul Calderone
  • Date: 2011-06-13 01:56:13 UTC
  • mfrom: (155.1.9 rsa-check-2)
  • Revision ID: exarkun@divmod.com-20110613015613-wofszuiemj1j6lyf
Add PKey.check method

Show diffs side-by-side

added added

removed removed

Lines of Context:
207
207
11n8RkgFIQA0AhuKSIg3CbuartRsJnWOLwgLTzsrKYL4yRog1RJrtw==
208
208
-----END RSA PRIVATE KEY-----
209
209
""")
 
210
 
210
211
encryptedPrivateKeyPEMPassphrase = b("foobar")
211
212
 
212
213
# Some PKCS#7 stuff.  Generated with the openssl command line:
250
251
-----END X509 CRL-----
251
252
""")
252
253
 
 
254
 
 
255
# A broken RSA private key which can be used to test the error path through
 
256
# PKey.check.
 
257
inconsistentPrivateKeyPEM = b("""-----BEGIN RSA PRIVATE KEY-----
 
258
MIIBPAIBAAJBAKy+e3dulvXzV7zoTZWc5TzgApr8DmeQHTYC8ydfzH7EECe4R1Xh
 
259
5kwIzOuuFfn178FBiS84gngaNcrFi0Z5fAkCAwEaAQJBAIqm/bz4NA1H++Vx5Ewx
 
260
OcKp3w19QSaZAwlGRtsUxrP7436QjnREM3Bm8ygU11BjkPVmtrKm6AayQfCHqJoT
 
261
zIECIQDW0BoMoL0HOYM/mrTLhaykYAVqgIeJsPjvkEhTFXWBuQIhAM3deFAvWNu4
 
262
nklUQ37XsCT2c9tmNt1LAT+slG2JOTTRAiAuXDtC/m3NYVwyHfFm+zKHRzHkClk2
 
263
HjubeEgjpj32AQIhAJqMGTaZVOwevTXvvHwNeH+vRWsAYU/gbx+OQB+7VOcBAiEA
 
264
oolb6NMg/R3enNPvS1O4UU1H8wpaF77L4yiSWlE0p4w=
 
265
-----END RSA PRIVATE KEY-----
 
266
""")
 
267
 
 
268
 
253
269
class X509ExtTests(TestCase):
254
270
    """
255
271
    Tests for L{OpenSSL.crypto.X509Extension}.
512
528
    def test_pregeneration(self):
513
529
        """
514
530
        L{PKeyType.bits} and L{PKeyType.type} return C{0} before the key is
 
531
        generated.  L{PKeyType.check} raises L{TypeError} before the key is
515
532
        generated.
516
533
        """
517
534
        key = PKey()
518
535
        self.assertEqual(key.type(), 0)
519
536
        self.assertEqual(key.bits(), 0)
 
537
        self.assertRaises(TypeError, key.check)
520
538
 
521
539
 
522
540
    def test_failedGeneration(self):
564
582
        key.generate_key(TYPE_RSA, bits)
565
583
        self.assertEqual(key.type(), TYPE_RSA)
566
584
        self.assertEqual(key.bits(), bits)
 
585
        self.assertTrue(key.check())
567
586
 
568
587
 
569
588
    def test_dsaGeneration(self):
579
598
        key.generate_key(TYPE_DSA, bits)
580
599
        self.assertEqual(key.type(), TYPE_DSA)
581
600
        self.assertEqual(key.bits(), bits)
 
601
        self.assertRaises(TypeError, key.check)
582
602
 
583
603
 
584
604
    def test_regeneration(self):
593
613
             self.assertEqual(key.bits(), bits)
594
614
 
595
615
 
 
616
    def test_inconsistentKey(self):
 
617
        """
 
618
        L{PKeyType.check} returns C{False} if the key is not consistent.
 
619
        """
 
620
        key = load_privatekey(FILETYPE_PEM, inconsistentPrivateKeyPEM)
 
621
        self.assertRaises(Error, key.check)
 
622
 
 
623
 
 
624
    def test_check_wrong_args(self):
 
625
        """
 
626
        L{PKeyType.check} raises L{TypeError} if called with any arguments.
 
627
        """
 
628
        self.assertRaises(TypeError, PKey().check, None)
 
629
        self.assertRaises(TypeError, PKey().check, object())
 
630
        self.assertRaises(TypeError, PKey().check, 1)
 
631
 
 
632
 
596
633
 
597
634
class X509NameTests(TestCase):
598
635
    """
2077
2114
        L{dump_privatekey} writes a PEM, DER, and text.
2078
2115
        """
2079
2116
        key = load_privatekey(FILETYPE_PEM, cleartextPrivateKeyPEM)
 
2117
        self.assertTrue(key.check())
2080
2118
        dumped_pem = dump_privatekey(FILETYPE_PEM, key)
2081
2119
        self.assertEqual(dumped_pem, cleartextPrivateKeyPEM)
2082
2120
        dumped_der = dump_privatekey(FILETYPE_ASN1, key)