Class: MrSmime::Encrypter

Inherits:
Object
  • Object
show all
Defined in:
lib/mr_smime/encrypter.rb

Instance Method Summary collapse

Constructor Details

#initialize(message) ⇒ Encrypter

Returns a new instance of Encrypter.



5
6
7
# File 'lib/mr_smime/encrypter.rb', line 5

def initialize(message)
  @message = message
end

Instance Method Details

#cipherObject



26
27
28
# File 'lib/mr_smime/encrypter.rb', line 26

def cipher
  @cipher ||= OpenSSL::Cipher.new('AES-128-CBC')
end

#encryptable?Boolean

Returns:

  • (Boolean)


21
22
23
24
# File 'lib/mr_smime/encrypter.rb', line 21

def encryptable?
  Signer.new(@message).signable? &&
    recipient_certificates.all? { |certificate| !certificate.nil? && certificate.present? }
end

#encrypted_data(data) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/mr_smime/encrypter.rb', line 9

def encrypted_data(data)
  return data unless encryptable?

  OpenSSL::PKCS7.write_smime(
    OpenSSL::PKCS7.encrypt(
      recipient_certificates.map(&:certificate),
      data,
      cipher
    )
  )
end

#recipient_certificatesObject



30
31
32
33
34
# File 'lib/mr_smime/encrypter.rb', line 30

def recipient_certificates
  @message.to.map do |email_address|
    Certificate.find(email_address)
  end
end