class CryptoToolchain::BlackBoxes::RSAUnpaddedMessageRecoveryOracle

Attributes

keypair[R]

Public Class Methods

new(keypair: CryptoToolchain::BlackBoxes::RSAKeypair.new) click to toggle source
# File lib/crypto_toolchain/black_boxes/rsa_unpadded_message_recovery_oracle.rb, line 7
def initialize(keypair: CryptoToolchain::BlackBoxes::RSAKeypair.new)
  @keypair = keypair
  @seen = []
end

Public Instance Methods

encrypt(ciphertext) click to toggle source
# File lib/crypto_toolchain/black_boxes/rsa_unpadded_message_recovery_oracle.rb, line 19
def encrypt(ciphertext)
  keypair.encrypt(ciphertext, to: keypair.public_key)
end
execute(ciphertext) click to toggle source
# File lib/crypto_toolchain/black_boxes/rsa_unpadded_message_recovery_oracle.rb, line 12
def execute(ciphertext)
  hsh = Digest::SHA256.hexdigest(ciphertext)
  raise ArgumentError.new("Already decrypted") if @seen.include?(hsh)
  @seen << hsh
  keypair.decrypt(ciphertext)
end