Skip to content

Commit cb4c3d3

Browse files
remove integer_to_octets implementation, replace with inline pack + to_bn.to_s(2)
1 parent 5938f5e commit cb4c3d3

File tree

1 file changed

+2
-15
lines changed

1 file changed

+2
-15
lines changed

lib/openssl/asn1.rb

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -461,9 +461,8 @@ def put_length(length)
461461
if length < 0x80
462462
length.chr.force_encoding(Encoding::BINARY)
463463
else
464-
data = integer_to_octets(length)
465-
data.unshift(data.size | 0x80)
466-
data.pack("C*")
464+
data = length.to_bn.to_s(2)
465+
[data.size | 0x80].pack("C") << data
467466
end
468467
end
469468

@@ -483,18 +482,6 @@ def put_integer(value)
483482
data
484483
end
485484

486-
def integer_to_octets(i)
487-
done = i >= 0 ? 0 : -1
488-
489-
octets = []
490-
491-
until i == done
492-
octets.unshift(i & 0xff)
493-
i >>= 8
494-
end
495-
octets
496-
end
497-
498485
# :nodoc:
499486
def take_default_tag(klass)
500487
tag = CLASS_TAG_MAP[klass]

0 commit comments

Comments
 (0)