Sha256: ef73a554985ebc2c0d20e1deb4a78a04101ae319a767a56fbaff590c98bd43b1
Contents?: true
Size: 1.81 KB
Versions: 3
Compression:
Stored size: 1.81 KB
Contents
module FinTS class Message attr_accessor :msg_no attr_accessor :dialog_id attr_accessor :encrypted_segments 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 def append_enc_segment(seg) @encrypted_segments << seg @enc_envelop.set_data(@enc_envelop.encoded_data + seg.to_s) end def build_signature_head @secref = Kernel.rand(1000000..9999999) Segment::HNSHK.new(2, @secref, @blz, @username, @system_id, @profile_version, @security_function) end def build_encryption_head Segment::HNVSK.new(998, @blz, @username, @system_id, @profile_version) end def build_header length = @segments.map(&:to_s).inject(0) { |sum, segment| sum + segment.length } Segment::HNHBK.new(length, @dialog_id, @msg_no) end def to_s build_header.to_s + @segments.map(&:to_s).join('') end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ruby_fints-0.0.4 | lib/fints/message.rb |
ruby_fints-0.0.3 | lib/fints/message.rb |
ruby_fints-0.0.2 | lib/fints/message.rb |