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