Ensure that Nostr::Crypto#descrypt_text always returns a string
Fixes another Steep/RBS violation
This commit is contained in:
parent
3077aa67a7
commit
4b630c678b
@ -62,6 +62,10 @@ module Nostr
|
|||||||
#
|
#
|
||||||
def decrypt_text(recipient_private_key, sender_public_key, encrypted_text)
|
def decrypt_text(recipient_private_key, sender_public_key, encrypted_text)
|
||||||
base64_encoded_text, iv = encrypted_text.split('?iv=')
|
base64_encoded_text, iv = encrypted_text.split('?iv=')
|
||||||
|
|
||||||
|
# Ensure iv and base64_encoded_text are not nil
|
||||||
|
return '' unless iv && base64_encoded_text
|
||||||
|
|
||||||
cipher = OpenSSL::Cipher.new(CIPHER_ALGORITHM).decrypt
|
cipher = OpenSSL::Cipher.new(CIPHER_ALGORITHM).decrypt
|
||||||
cipher.iv = Base64.decode64(iv)
|
cipher.iv = Base64.decode64(iv)
|
||||||
cipher.key = compute_shared_key(recipient_private_key, sender_public_key)
|
cipher.key = compute_shared_key(recipient_private_key, sender_public_key)
|
||||||
|
@ -69,6 +69,7 @@ RSpec.describe Nostr::Crypto do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when the encrypted text includes an iv query string' do
|
||||||
it 'decrypts an encrypted text' do
|
it 'decrypts an encrypted text' do
|
||||||
encrypted_text = crypto.encrypt_text(sender_keypair.private_key, recipient_keypair.public_key, 'Twitter Files')
|
encrypted_text = crypto.encrypt_text(sender_keypair.private_key, recipient_keypair.public_key, 'Twitter Files')
|
||||||
decrypted_text = crypto.decrypt_text(recipient_keypair.private_key, sender_keypair.public_key, encrypted_text)
|
decrypted_text = crypto.decrypt_text(recipient_keypair.private_key, sender_keypair.public_key, encrypted_text)
|
||||||
@ -76,4 +77,14 @@ RSpec.describe Nostr::Crypto do
|
|||||||
expect(decrypted_text).to eq('Twitter Files')
|
expect(decrypted_text).to eq('Twitter Files')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when the encrypted text does not include an iv query string' do
|
||||||
|
it 'returns an empty string' do
|
||||||
|
encrypted_text = 'wrYQaHDfpOEvyJELSCg1vzsywmlJTz8NqH03eFW44s8iQs869jtSb26Lr4s23gmY?it=v38vAJ3LlJAGZxbmWU4qAg=='
|
||||||
|
decrypted_text = crypto.decrypt_text(recipient_keypair.private_key, sender_keypair.public_key, encrypted_text)
|
||||||
|
|
||||||
|
expect(decrypted_text).to eq('')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user