Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 2b96413

Browse files
justinstollerkares
andauthoredOct 24, 2023
Update src/main/java/org/jruby/ext/openssl/ASN1.java
Co-authored-by: Karol Bucek <kares@users.noreply.github.com>
1 parent dd3e170 commit 2b96413

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed
 

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,6 +1073,22 @@ else if ( obj instanceof DERBMPString ) {
10731073
}
10741074

10751075
if (obj instanceof ASN1TaggedObject) {
1076+
final ASN1TaggedObject taggedObj = (ASN1TaggedObject) obj;
1077+
if (taggedObj.getTagClass() == BERTags.APPLICATION) {
1078+
IRubyObject tag = runtime.newFixnum( taggedObj.getTagNo() );
1079+
IRubyObject tag_class = runtime.newSymbol("APPLICATION");
1080+
final ASN1Sequence sequence = (ASN1Sequence) taggedObj.getBaseUniversal(false, SEQUENCE);
1081+
@SuppressWarnings("unchecked")
1082+
final RubyArray valArr = decodeObjects(context, ASN1, sequence.getObjects());
1083+
return ASN1.getClass("ASN1Data").newInstance(context, new IRubyObject[] { valArr, tag, tag_class }, Block.NULL_BLOCK);
1084+
} else {
1085+
IRubyObject val = decodeObject(context, ASN1, taggedObj.getBaseObject());
1086+
IRubyObject tag = runtime.newFixnum( taggedObj.getTagNo() );
1087+
IRubyObject tag_class = runtime.newSymbol("CONTEXT_SPECIFIC");
1088+
final RubyArray valArr = runtime.newArray(val);
1089+
return ASN1.getClass("ASN1Data").newInstance(context, new IRubyObject[] { valArr, tag, tag_class }, Block.NULL_BLOCK);
1090+
}
1091+
}
10761092
final ASN1TaggedObject taggedObj = (ASN1TaggedObject) obj;
10771093
if (taggedObj.getTagClass() == BERTags.APPLICATION) {
10781094
IRubyObject tag = runtime.newFixnum( taggedObj.getTagNo() );

0 commit comments

Comments
 (0)
Please sign in to comment.