@@ -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,32 @@ 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+ if not enckey and dont_encrypt :
802+ plainkey = None
803+ elif enckey :
804+ if encrypt_keylen == 256 :
805+ encrypt_keylen_bytes = 32
806+ else :
807+ encrypt_keylen_bytes = 16
808+
809+ # No AES plain key and there is request to encrypt, generate random AES key
810+ plainkey = os .urandom (encrypt_keylen_bytes )
811+ else :
812+ click .UsageError ("No enckey and dont_encrypt true makes no sense" )
813+
814+ return self .create2 (key , public_key_format , enckey , dependencies , sw_type ,
815+ custom_tlvs , compression_tlvs , compression_type ,
816+ plainkey , clear , fixed_sig , pub_key , vector_to_sign ,
817+ user_sha , hmac_sha , is_pure , keep_comp_size , dont_encrypt )
818+
819+
794820 def get_struct_endian (self ):
795821 return STRUCT_ENDIAN_DICT [self .endian ]
796822
0 commit comments