File tree Expand file tree Collapse file tree 1 file changed +9
-7
lines changed Expand file tree Collapse file tree 1 file changed +9
-7
lines changed Original file line number Diff line number Diff line change @@ -761,22 +761,24 @@ def negotiate_tlv_encryption(timeout: client.comm_timeout)
761
761
rsa_key = OpenSSL ::PKey ::RSA . new ( 2048 )
762
762
rsa_pub_key = rsa_key . public_key
763
763
764
- request = Packet . create_request ( COMMAND_ID_CORE_NEGOTIATE_TLV_ENCRYPTION )
764
+ request = Packet . create_request ( COMMAND_ID_CORE_NEGOTIATE_TLV_ENCRYPTION )
765
765
request . add_tlv ( TLV_TYPE_RSA_PUB_KEY , rsa_pub_key . to_der )
766
766
767
767
begin
768
768
response = client . send_request ( request , timeout )
769
769
key_enc = response . get_tlv_value ( TLV_TYPE_ENC_SYM_KEY )
770
770
key_type = response . get_tlv_value ( TLV_TYPE_SYM_KEY_TYPE )
771
+ key_length = { Packet ::ENC_FLAG_AES128 => 16 , Packet ::ENC_FLAG_AES256 => 32 } [ key_type ]
771
772
is_weak_key = false
772
773
if key_enc
773
774
key_dec_data = rsa_key . private_decrypt ( key_enc , OpenSSL ::PKey ::RSA ::PKCS1_PADDING )
774
-
775
- if key_dec_data . length == 17 || key_dec_data . length == 33
776
- sym_key = key_dec_data [ 0 , key_dec_data . length - 1 ]
777
- is_weak_key = key_dec_data [ key_dec_data . length - 1 ] != "\x00 "
778
- else
779
- sym_key = key_dec_data
775
+ sym_key = key_dec_data [ 0 ..key_length - 1 ]
776
+ if key_dec_data . length > key_length
777
+ key_dec_data = key_dec_data [ key_length ...]
778
+ if key_dec_data . length > 0
779
+ key_strength = key_dec_data [ 0 ]
780
+ is_weak_key = key_strength != "\x00 "
781
+ end
780
782
end
781
783
else
782
784
sym_key = response . get_tlv_value ( TLV_TYPE_SYM_KEY )
You can’t perform that action at this time.
0 commit comments