Class: FinTS::Message
- Inherits:
-
Object
- Object
- FinTS::Message
- Defined in:
- lib/fints/message.rb
Instance Attribute Summary collapse
-
#dialog_id ⇒ Object
Returns the value of attribute dialog_id.
-
#encrypted_segments ⇒ Object
Returns the value of attribute encrypted_segments.
-
#msg_no ⇒ Object
Returns the value of attribute msg_no.
Instance Method Summary collapse
- #append_enc_segment(seg) ⇒ Object
- #build_encryption_head ⇒ Object
- #build_header ⇒ Object
- #build_signature_head ⇒ Object
-
#initialize(blz, username, pin, system_id, dialog_id, msg_no, encrypted_segments, tan_mechs = nil) ⇒ Message
constructor
A new instance of Message.
- #to_s ⇒ Object
Constructor Details
#initialize(blz, username, pin, system_id, dialog_id, msg_no, encrypted_segments, tan_mechs = nil) ⇒ Message
Returns a new instance of Message.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/fints/message.rb', line 7 def initialize(blz, username, pin, system_id, dialog_id, msg_no, encrypted_segments, tan_mechs=nil) @blz = blz @username = username @pin = pin @system_id = system_id @dialog_id = dialog_id @msg_no = msg_no @segments = [] @encrypted_segments = [] if tan_mechs && !tan_mechs.include?('999') @profile_version = 2 @security_function = tan_mechs[0] else @profile_version = 1 @security_function = '999' end sig_head = build_signature_head enc_head = build_encryption_head @segments << enc_head @enc_envelop = Segment::HNVSD.new(999, '') @segments << @enc_envelop append_enc_segment(sig_head) encrypted_segments.each do |segment| append_enc_segment(segment) end cur_count = encrypted_segments.length + 3 sig_end = Segment::HNSHA.new(cur_count, @secref, @pin) append_enc_segment(sig_end) @segments << Segment::HNHBS.new(cur_count + 1, msg_no) end |
Instance Attribute Details
#dialog_id ⇒ Object
Returns the value of attribute dialog_id.
4 5 6 |
# File 'lib/fints/message.rb', line 4 def dialog_id @dialog_id end |
#encrypted_segments ⇒ Object
Returns the value of attribute encrypted_segments.
5 6 7 |
# File 'lib/fints/message.rb', line 5 def encrypted_segments @encrypted_segments end |
#msg_no ⇒ Object
Returns the value of attribute msg_no.
3 4 5 |
# File 'lib/fints/message.rb', line 3 def msg_no @msg_no end |
Instance Method Details
#append_enc_segment(seg) ⇒ Object
44 45 46 47 |
# File 'lib/fints/message.rb', line 44 def append_enc_segment(seg) @encrypted_segments << seg @enc_envelop.set_data(@enc_envelop.encoded_data + seg.to_s) end |
#build_encryption_head ⇒ Object
54 55 56 |
# File 'lib/fints/message.rb', line 54 def build_encryption_head Segment::HNVSK.new(998, @blz, @username, @system_id, @profile_version) end |
#build_header ⇒ Object
58 59 60 61 |
# File 'lib/fints/message.rb', line 58 def build_header length = @segments.map(&:to_s).inject(0) { |sum, segment| sum + segment.length } Segment::HNHBK.new(length, @dialog_id, @msg_no) end |
#build_signature_head ⇒ Object
49 50 51 52 |
# File 'lib/fints/message.rb', line 49 def build_signature_head @secref = Kernel.rand(1000000..9999999) Segment::HNSHK.new(2, @secref, @blz, @username, @system_id, @profile_version, @security_function) end |
#to_s ⇒ Object
63 64 65 |
# File 'lib/fints/message.rb', line 63 def to_s build_header.to_s + @segments.map(&:to_s).join('') end |