Skip to content

Commit 7578581

Browse files
committed
fixed some errors related to ASN.1 encoding issues.
1 parent 1cdf7be commit 7578581

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

util/src/main/java/org/bouncycastle/asn1/cmp/Challenge.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ private Challenge(ASN1Sequence seq)
5353
{
5454
int index = 0;
5555

56-
if (seq.getObjectAt(0) instanceof ASN1Sequence)
56+
if (seq.getObjectAt(0).toASN1Primitive() instanceof ASN1Sequence)
5757
{
5858
owf = AlgorithmIdentifier.getInstance(seq.getObjectAt(index++));
5959
}
@@ -65,16 +65,15 @@ private Challenge(ASN1Sequence seq)
6565
witness = ASN1OctetString.getInstance(seq.getObjectAt(index++));
6666
challenge = ASN1OctetString.getInstance(seq.getObjectAt(index++));
6767
if (seq.size() > index)
68-
{
69-
encryptedRand = EnvelopedData.getInstance(ASN1TaggedObject.getInstance(seq.getObjectAt(index)), true);
70-
}
71-
else
7268
{
7369
if (challenge.getOctets().length != 0)
7470
{
7571
throw new IllegalArgumentException("ambigous challenge");
7672
}
77-
73+
encryptedRand = EnvelopedData.getInstance(ASN1TaggedObject.getInstance(seq.getObjectAt(index)), true);
74+
}
75+
else
76+
{
7877
encryptedRand = null;
7978
}
8079
}
@@ -180,7 +179,10 @@ public ASN1Primitive toASN1Primitive()
180179
v.addOptional(owf);
181180
v.add(witness);
182181
v.add(challenge);
183-
v.addOptional(new DERTaggedObject(0, encryptedRand));
182+
if (encryptedRand != null)
183+
{
184+
v.add(new DERTaggedObject(0, encryptedRand));
185+
}
184186

185187
return new DERSequence(v);
186188
}

0 commit comments

Comments
 (0)