class As2::Message

Attributes

original_message[R]

Public Class Methods

new(message, private_key, public_certificate) click to toggle source
# File lib/as2/message.rb, line 7
def initialize(message, private_key, public_certificate)
  @original_message = message
  @private_key = private_key
  @public_certificate = public_certificate
end

Public Instance Methods

attachment() click to toggle source

Return the attached file, use .filename and .body on the return value

# File lib/as2/message.rb, line 27
def attachment
  if mail.has_attachments?
    mail.attachments.find{|a| a.content_type == "application/edi-consent"}
  else
    mail
  end
end
decrypted_message() click to toggle source
# File lib/as2/message.rb, line 13
def decrypted_message
  @decrypted_message ||= decrypt_smime(original_message)
end
valid_signature?(partner_certificate) click to toggle source
# File lib/as2/message.rb, line 17
def valid_signature?(partner_certificate)
  store = OpenSSL::X509::Store.new
  store.add_cert(partner_certificate)

  smime = Base64Helper.ensure_body_base64(decrypted_message)
  message = read_smime(smime)
  message.verify [partner_certificate], store
end

Private Instance Methods

decrypt_smime(smime) click to toggle source
# File lib/as2/message.rb, line 44
def decrypt_smime(smime)
  message = read_smime(smime)
  message.decrypt @private_key, @public_certificate
end
mail() click to toggle source
# File lib/as2/message.rb, line 36
def mail
  @mail ||= Mail.new(decrypted_message)
end
read_smime(smime) click to toggle source
# File lib/as2/message.rb, line 40
def read_smime(smime)
  OpenSSL::PKCS7.read_smime(smime)
end