Module: MTProto::Crypto::MessageKey
- Defined in:
- lib/mtproto/crypto/message_key.rb
Class Method Summary collapse
- .derive_aes_key_iv(auth_key, msg_key, sender: :client) ⇒ Object
- .generate_msg_key(auth_key, plaintext, sender: :client) ⇒ Object
Class Method Details
.derive_aes_key_iv(auth_key, msg_key, sender: :client) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/mtproto/crypto/message_key.rb', line 19 def derive_aes_key_iv(auth_key, msg_key, sender: :client) x = sender == :client ? 0 : 8 sha256_a = Digest::SHA256.digest(msg_key + auth_key[x, 36]) sha256_b = Digest::SHA256.digest(auth_key[40 + x, 36] + msg_key) aes_key = sha256_a[0, 8] + sha256_b[8, 16] + sha256_a[24, 8] aes_iv = sha256_b[0, 8] + sha256_a[8, 16] + sha256_b[24, 8] { aes_key: aes_key, aes_iv: aes_iv } end |
.generate_msg_key(auth_key, plaintext, sender: :client) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/mtproto/crypto/message_key.rb', line 10 def generate_msg_key(auth_key, plaintext, sender: :client) x = sender == :client ? 0 : 8 auth_key_part = auth_key[88 + x, 32] sha256_a = Digest::SHA256.digest(auth_key_part + plaintext) sha256_a[8, 16] end |