@@ -511,7 +511,7 @@ def ecies_hkdf(self, enckey, plainkey, hmac_sha_alg):
511511 format = PublicFormat .Raw )
512512 return cipherkey , ciphermac , pubk
513513
514- def create (self , key , public_key_format , enckey , dependencies = None ,
514+ def create2 (self , key , public_key_format , enckey , dependencies = None ,
515515 sw_type = None , custom_tlvs = None , compression_tlvs = None ,
516516 compression_type = None , aes_key = None , clear = False ,
517517 fixed_sig = None , pub_key = None , vector_to_sign = None ,
@@ -791,6 +791,34 @@ def create(self, key, public_key_format, enckey, dependencies=None,
791791
792792 self .check_trailer ()
793793
794+ def create (self , key , public_key_format , enckey , dependencies = None ,
795+ sw_type = None , custom_tlvs = None , compression_tlvs = None ,
796+ compression_type = None , encrypt_keylen = 128 , clear = False ,
797+ fixed_sig = None , pub_key = None , vector_to_sign = None ,
798+ user_sha = 'auto' , hmac_sha = 'auto' , is_pure = False , keep_comp_size = False ,
799+ dont_encrypt = False ):
800+
801+ # With enckey None and dont_encrypt false we still get encrypted image generated
802+ # but without TLV for sharing key; if we do not have enckey and dont_encrypt is
803+ # true, we are not going to encrypt image at all, so it is pointless to generate
804+ # AES key.
805+ if not enckey and dont_encrypt :
806+ plainkey = None
807+ else
808+ if encrypt_keylen == 256 :
809+ encrypt_keylen_bytes = 32
810+ else :
811+ encrypt_keylen_bytes = 16
812+
813+ # No AES plain key and there is request to encrypt, generate random AES key
814+ plainkey = os .urandom (encrypt_keylen_bytes )
815+
816+ return self .create2 (key , public_key_format , enckey , dependencies , sw_type ,
817+ custom_tlvs , compression_tlvs , compression_type ,
818+ plainkey , clear , fixed_sig , pub_key , vector_to_sign ,
819+ user_sha , hmac_sha , is_pure , keep_comp_size , dont_encrypt )
820+
821+
794822 def get_struct_endian (self ):
795823 return STRUCT_ENDIAN_DICT [self .endian ]
796824
0 commit comments