Changeset 29
- Timestamp:
- 11/06/04 09:50:36 (4 years ago)
- Files:
-
- trunk/lib/pgp/packet/packet.rb (modified) (5 diffs)
- trunk/lib/pgp/packet/sigsubpacket/packet.rb (modified) (1 diff)
- trunk/lib/pgp/packet/support.rb (modified) (1 diff)
- trunk/lib/pgp/packet/userattrsubpacket/packet.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/pgp/packet/packet.rb
r23 r29 90 90 loadport = wrap_port(port) 91 91 packets = [] 92 continue = false 92 93 while !loadport.eof? 93 newheader, tag, lengthdefined = load_header(loadport) 94 if continue 95 lengthdefined, partial = load_length_new(loadport) 96 else 97 newheader, tag, lengthdefined, partial = load_header(loadport) 98 end 99 if partial and continue 100 raise "Partial Body Lengths packet not supported" 101 end 102 continue = partial 94 103 initpos = loadport.readlength 95 104 unless TAG_LOADER.key?(tag) … … 112 121 dumpport = IndentDumpPort.for(io) 113 122 end 123 continue = false 114 124 loadport = wrap_port(port) 115 125 while !loadport.eof? 116 126 initpos = nil 117 127 begin 118 newheader, tag, lengthdefined = load_header(loadport) 128 if continue 129 lengthdefined, partial = load_length_new(loadport) 130 else 131 newheader, tag, lengthdefined, partial = load_header(loadport) 132 end 119 133 newtag = newheader ? "New" : "Old" 120 dumpport.puts "#{newtag}: #{taglabel(tag)}(tag #{tag})(#{lengthdefined} bytes)\n" 134 if partial 135 if continue 136 dumpport.puts "#{newtag}(partial continue): - (tag #{tag})(#{lengthdefined} bytes)" 137 loadport.read(lengthdefined) 138 next 139 else 140 newtag += '(partial start)' 141 end 142 else 143 if continue 144 newtag += '(partial end)' 145 end 146 end 147 continue = partial 148 dumpport.puts "#{newtag}: #{taglabel(tag)}(tag #{tag})(#{lengthdefined} bytes)" 121 149 initpos = loadport.readlength 122 150 dumpport.indent(4) do … … 175 203 def self.load_header(port) 176 204 v = load_1octet(port) 205 partial = false 177 206 if (H_BASE & v).zero? 178 207 raise "Illegal PGP packet (#{H_BASE} must be always one): #{v}" … … 180 209 if (H_FORMAT_MASK & v).nonzero? 181 210 tag = H_NEW_TAG_MASK & v 182 length = load_length_new(port)211 length, partial = load_length_new(port) 183 212 newheader = true 184 213 else … … 188 217 newheader = false 189 218 end 190 return [newheader, tag, length ]219 return [newheader, tag, length, partial] 191 220 end 192 221 trunk/lib/pgp/packet/sigsubpacket/packet.rb
r18 r29 99 99 100 100 def self.load(port) 101 length = load_length_new(port) 101 length, partial = load_length_new(port) 102 if partial 103 raise "Partial Body Lengths not allowed" 104 end 102 105 type = load_type(port) 103 106 critical = type & T_CRITICAL trunk/lib/pgp/packet/support.rb
r18 r29 114 114 octet1 = load_1octet(port) 115 115 if octet1 <= 191 116 octet1116 return octet1, false 117 117 elsif octet1 <= 223 118 118 octet2 = load_1octet(port) 119 ((octet1 - 192) << 8) + octet2 + 192119 return ((octet1 - 192) << 8) + octet2 + 192, false 120 120 elsif octet1 == 255 121 load_4octet(port)122 else 123 r aise "Unknown format"121 return load_4octet(port), false 122 else # Partial Body Length 123 return (1 << (octet1 & 0x1f)), true 124 124 end 125 125 end trunk/lib/pgp/packet/userattrsubpacket/packet.rb
r18 r29 72 72 73 73 def self.load(port) 74 length = load_length_new(port) 74 length, partial = load_length_new(port) 75 if partial 76 raise "Partial Body Lengths not allowed" 77 end 75 78 type = load_type(port) 76 79 unless TAG_LOADER.key?(type)