@@ -284,15 +284,20 @@ def public_numbers(self, *args, **kwargs):
284284 def key_size (self ):
285285 return self .pubkey .key_size
286286
287- def export (self , filename , fmt = "DER" ):
287+ def export (self , filename , fmt = None ):
288288 """
289289 Export public key in 'fmt' format (DER or PEM) to file 'filename'
290290 """
291+ if fmt is None :
292+ if filename .endswith (".pem" ):
293+ fmt = "PEM"
294+ else :
295+ fmt = "DER"
291296 with open (filename , "wb" ) as f :
292297 if fmt == "DER" :
293- f .write (self .der )
298+ return f .write (self .der )
294299 elif fmt == "PEM" :
295- f .write (self .pem )
300+ return f .write (self .pem . encode () )
296301
297302
298303class PubKeyRSA (PubKey , _EncryptAndVerifyRSA ):
@@ -544,15 +549,20 @@ def der(self):
544549 encryption_algorithm = serialization .NoEncryption ()
545550 )
546551
547- def export (self , filename , fmt = "DER" ):
552+ def export (self , filename , fmt = None ):
548553 """
549554 Export private key in 'fmt' format (DER or PEM) to file 'filename'
550555 """
556+ if fmt is None :
557+ if filename .endswith (".pem" ):
558+ fmt = "PEM"
559+ else :
560+ fmt = "DER"
551561 with open (filename , "wb" ) as f :
552562 if fmt == "DER" :
553- f .write (self .der )
563+ return f .write (self .der )
554564 elif fmt == "PEM" :
555- f .write (self .pem )
565+ return f .write (self .pem . encode () )
556566
557567
558568class PrivKeyRSA (PrivKey , _DecryptAndSignRSA ):
@@ -826,6 +836,12 @@ def setSubjectPublicKeyFromPrivateKey(self, key):
826836 else :
827837 raise ValueError ("Unknown type 'key', should be PubKey or PrivKey" )
828838
839+ def resignWith (self , key ):
840+ """
841+ Resign a certificate with a specific key
842+ """
843+ self .import_from_asn1pkt (key .resignCert (self ))
844+
829845 def remainingDays (self , now = None ):
830846 """
831847 Based on the value of notAfter field, returns the number of
@@ -896,15 +912,20 @@ def pem(self):
896912 def der (self ):
897913 return bytes (self .x509Cert )
898914
899- def export (self , filename , fmt = "DER" ):
915+ def export (self , filename , fmt = None ):
900916 """
901917 Export certificate in 'fmt' format (DER or PEM) to file 'filename'
902918 """
919+ if fmt is None :
920+ if filename .endswith (".pem" ):
921+ fmt = "PEM"
922+ else :
923+ fmt = "DER"
903924 with open (filename , "wb" ) as f :
904925 if fmt == "DER" :
905- f .write (self .der )
926+ return f .write (self .der )
906927 elif fmt == "PEM" :
907- f .write (self .pem )
928+ return f .write (self .pem . encode () )
908929
909930 def show (self ):
910931 print ("Serial: %s" % self .serial )
0 commit comments