# Using OpenPGP gem and getting "out of range error"

**URL:** <https://www.ruby-forum.com/t/using-openpgp-gem-and-getting-out-of-range-error/195153>\
**Category:** Rails\
**Created:** [September 17, 2010, 8:02pm UTC](https://www.ruby-forum.com/t/using-openpgp-gem-and-getting-out-of-range-error/195153 "2010-09-17T20:02:22Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![lunaclaire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/f4b2a3/32.png) [@lunaclaire](https://www.ruby-forum.com/u/lunaclaire)\
**Post date:** [September 17, 2010, 8:02pm UTC](https://www.ruby-forum.com/t/using-openpgp-gem-and-getting-out-of-range-error/195153/1 "2010-09-17T20:02:22Z")

</div>

I’ve been handed someone else’s code to debug, but am getting no  
further than he did… perhaps someone can help.

We’re using the OpenPGP gem ([http://openpgp.rubyforge.org/](http://openpgp.rubyforge.org/)) to PGP-  
encrypt an XML file for submission to a third-party for processing.

The prob is that when encrypting, we get errors like the following:

RangeError: 1502 out of char range  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/buffer.rb:138:in `chr' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/buffer.rb:138:in `write\_byte’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/message.rb:129  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/message.rb:126:in `each' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/message.rb:126 from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/buffer.rb:18:in `call’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/buffer.rb:18:in `initialize' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/buffer.rb:9:in `new’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/buffer.rb:9:in `write' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/message.rb:125:in `to\_s’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/message.rb:78:in `write' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/message.rb:28 from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/packet.rb:105:in `call’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/packet.rb:105:in `initialize' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/packet.rb:346:in `initialize’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/message.rb:27:in `new' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/message.rb:27 from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/message.rb:86:in `call’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/message.rb:86:in `initialize' from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/ openpgp-0.0.3/lib/openpgp/message.rb:25:in `new’  
from /Users/szagerman/.rvm/gems/ruby-1.8.7-p249@eveo-vapps/gems/  
openpgp-0.0.3/lib/openpgp/message.rb:25:in `encrypt’

If the XML being encrypted grows larger (more elements included), that  
RangeError number value becomes a larger number.

Looking at that trace and digging into the src for OpenPGP to where  
the error is occurring finds this line at from /Users/szagerman/.rvm/  
gems/ruby-1.8.7-p249@eveo-vapps/gems/openpgp-0.0.3/lib/openpgp/  
message.rb:129:

buffer.write\_byte(body.size)

So, I’m wondering if the body.size is greater than 255 if this causes  
a prob writing it as a byte (the call being write\_byte)…?

And if so, whether one is supposed to break up the payload into small  
chunks somehow? That doesnt seem right and I think from more reading  
of the OpenPGP code that it is packetizing the original data in some  
way.

Any thoughts?

---

<div class="post-metadata">

**Author:** ![lunaclaire](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/f4b2a3/32.png) [@lunaclaire](https://www.ruby-forum.com/u/lunaclaire)\
**Post date:** [September 17, 2010, 8:42pm UTC](https://www.ruby-forum.com/t/using-openpgp-gem-and-getting-out-of-range-error/195153/2 "2010-09-17T20:42:10Z")

</div>

one more bit of info…

if the data being encrypted is 250 chars or longer, the RangeError  
occurs; if it’s 249 chars long, no error

strange
