Class: OpenPGP::Message
- Inherits:
-
Object
- Object
- OpenPGP::Message
- Includes:
- Enumerable
- Defined in:
- lib/openpgp/message.rb
Overview
OpenPGP message.
Instance Attribute Summary collapse
Class Method Summary collapse
- .decrypt(data, options = {}, &block) ⇒ Object
-
.encrypt(data, options = {}, &block) ⇒ Message
Creates an encrypted OpenPGP message.
-
.parse(data) ⇒ Message
Parses an OpenPGP message.
- .write(io = nil, &block) ⇒ IO, ...
Instance Method Summary collapse
- #<<(packet) ⇒ self
- #each {|packet| ... } ⇒ Enumerator
- #empty? ⇒ Boolean
-
#initialize(*packets, &block) ⇒ Message
constructor
A new instance of Message.
- #size ⇒ Integer
- #to_a ⇒ Array<Packet>
- #to_s ⇒ String
Constructor Details
#initialize(*packets, &block) ⇒ Message
Returns a new instance of Message.
84 85 86 87 |
# File 'lib/openpgp/message.rb', line 84 def initialize(*packets, &block) @packets = packets.flatten block.call(self) if block_given? end |
Instance Attribute Details
Class Method Details
.decrypt(data, options = {}, &block) ⇒ Object
49 50 51 |
# File 'lib/openpgp/message.rb', line 49 def self.decrypt(data, = {}, &block) raise NotImplementedError # TODO end |
.encrypt(data, options = {}, &block) ⇒ Message
Creates an encrypted OpenPGP message.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/openpgp/message.rb', line 20 def self.encrypt(data, = {}, &block) if [:symmetric] key = ([:key] || S2K::DEFAULT.new([:passphrase])) cipher = ([:cipher] || Cipher::DEFAULT).new(key) msg = self.new do |msg| msg << Packet::SymmetricSessionKey.new(:algorithm => cipher.identifier, :s2k => key) msg << Packet::EncryptedData.new do |packet| plaintext = self.write do |msg| case data when Message then data.each { |packet| msg << packet } when Packet then msg << data else msg << Packet::LiteralData.new(:data => data) end end packet.data = cipher.encrypt(plaintext) end end block_given? ? block.call(msg) : msg else raise NotImplementedError # TODO end end |
.parse(data) ⇒ Message
Parses an OpenPGP message.
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/openpgp/message.rb', line 60 def self.parse(data) data = Buffer.new(data.to_str) if data.respond_to?(:to_str) msg = self.new until data.eof? if packet = OpenPGP::Packet.parse(data) msg << packet else raise "Invalid OpenPGP message data at position #{data.pos}" end end msg end |
.write(io = nil, &block) ⇒ IO, ...
77 78 79 80 |
# File 'lib/openpgp/message.rb', line 77 def self.write(io = nil, &block) data = self.new(&block).to_s io.respond_to?(:write) ? io.write(data) : data end |
Instance Method Details
#<<(packet) ⇒ self
106 107 108 |
# File 'lib/openpgp/message.rb', line 106 def <<(packet) packets << packet end |
#each {|packet| ... } ⇒ Enumerator
93 94 95 |
# File 'lib/openpgp/message.rb', line 93 def each(&block) # :yields: packet packets.each(&block) end |
#empty? ⇒ Boolean
112 113 114 |
# File 'lib/openpgp/message.rb', line 112 def empty? packets.empty? end |
#size ⇒ Integer
118 119 120 |
# File 'lib/openpgp/message.rb', line 118 def size inject(0) { |sum, packet| sum + packet.size } end |