Skip to content

Commit 24ba8fe

Browse files
committed
[fix] incorrect ASN.1 for wrapped Integer type
1 parent 5d00f88 commit 24ba8fe

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/main/java/org/jruby/ext/openssl/ASN1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1683,7 +1683,7 @@ private static BigInteger bigIntegerValue(final IRubyObject val) {
16831683
if ( val instanceof RubyInteger ) { // RubyBignum
16841684
return ((RubyInteger) val).getBigIntegerValue();
16851685
}
1686-
if ( val instanceof BN ) ((BN) val).getValue();
1686+
if ( val instanceof BN ) return ((BN) val).getValue();
16871687
return new BigInteger( val.asString().getBytes() );
16881688
}
16891689

src/test/ruby/test_asn1.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,25 @@ def test_decode_application_specific
505505
# assert_equal raw, asn1.to_der
506506
end
507507

508+
509+
def test_encode_der_integer_wrapped
510+
asn1 = OpenSSL::ASN1::Sequence([ OpenSSL::ASN1::Integer(42), OpenSSL::ASN1::Integer(84) ])
511+
512+
der = "0\x06\x02\x01*\x02\x01T"
513+
assert_equal der, asn1.to_der
514+
515+
asn1 = OpenSSL::ASN1::Sequence([ OpenSSL::ASN1::Integer(OpenSSL::BN.new(42)), OpenSSL::ASN1::Integer(OpenSSL::BN.new(84)) ])
516+
517+
der = "0\x06\x02\x01*\x02\x01T"
518+
assert_equal der, asn1.to_der
519+
520+
i = OpenSSL::ASN1::Integer(OpenSSL::BN.new('1234567890'))
521+
assert_equal 1234567890, i.value.to_i
522+
523+
i = OpenSSL::ASN1::Integer('12345678901234567890')
524+
assert_equal 12345678901234567890, i.value.to_i
525+
end
526+
508527
private
509528

510529
def assert_universal(tag, asn1, inf_len=false)

0 commit comments

Comments
 (0)