Changeset 7
- Timestamp:
- 10/30/04 23:30:40 (4 years ago)
- Files:
-
- trunk/lib/pgp/packet/userattrsubpacket/image.rb (modified) (6 diffs)
- trunk/lib/pgp/packet/userattrsubpacket/packet.rb (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/pgp/packet/userattrsubpacket/image.rb
r2 r7 1 require 'pgp/packet/ sigsubpacket/packet'1 require 'pgp/packet/userattrsubpacket/packet' 2 2 3 3 4 4 module PGP 5 5 module Packet 6 module SigSubPacket6 module UserAttrSubPacket 7 7 8 8 … … 18 18 attr_accessor :format 19 19 attr_accessor :body 20 21 def scan(io) 22 super 23 io.puts "Version - #{@version}" 24 io.puts "Format - #{@format}" 25 end 20 26 21 27 private … … 34 40 35 41 def self.scanner(io, port, length) 36 loader(port, length).s ummary42 loader(port, length).scan(io) 37 43 end 38 44 … … 44 50 load_image_version_1(packet, port) 45 51 else 46 raise "Not supported "52 raise "Not supported: #{packet.version}" 47 53 end 48 54 end … … 51 57 packet.format = load_1octet(port) 52 58 header_rest = port.read(12) 53 if port.read(12)!= "\000" * 1254 raise "Illegal image header (version 1) "59 if header_rest != "\000" * 12 60 raise "Illegal image header (version 1): #{header_rest}" 55 61 end 56 62 end … … 68 74 end 69 75 70 def self.load_image_header(port) 71 72 add_loader(2, method(:loader)) 73 add_scanner(2, method(:scanner)) 76 add_loader(1, method(:loader)) 77 add_scanner(1, method(:scanner)) 74 78 end 75 79 trunk/lib/pgp/packet/userattrsubpacket/packet.rb
r2 r7 25 25 110 => "private or experimental use", 26 26 } 27 28 def self.typelabel(type) 29 TYPES[type] 30 end 31 27 32 TAG_LOADER = {} 33 TAG_SCANNER = {} 28 34 29 35 def initialize(type = nil) … … 36 42 end 37 43 @type = type 44 end 45 46 def typelabel 47 Packet.typelabel(@type) 48 end 49 50 def scan(io) 38 51 end 39 52 … … 52 65 end 53 66 67 def self.scan(port, io) 68 length = load_length_new(port) 69 type = load_type(port) 70 io.puts "Sub: #{typelabel(type)}(#{type})(#{length - 1} bytes)" 71 unless TAG_SCANNER.key?(type) 72 raise "Not supported: #{type}" 73 end 74 io.indent(4) do 75 TAG_SCANNER[type].call(io, port, length - 1) 76 end 77 end 78 54 79 private 55 80 … … 62 87 end 63 88 64 def self.add_loader(type, method) 65 TAG_LOADER[type] = method 89 def self.add_loader(tag, method) 90 if tag.is_a?(Enumerable) 91 tag.each do |tagitem| 92 TAG_LOADER[tagitem] = method 93 end 94 else 95 TAG_LOADER[tag] = method 96 end 66 97 end 67 98 68 def self.scanner(port, length) 69 loader(port, length).summary 99 def self.add_scanner(tag, method) 100 if tag.is_a?(Enumerable) 101 tag.each do |tagitem| 102 TAG_SCANNER[tagitem] = method 103 end 104 else 105 TAG_SCANNER[tag] = method 106 end 70 107 end 71 108 end