Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2013-06-20 07:07:07 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-06-20 07:07:07 +0400
commitf5afa59158cea442fedd96403cf1630f5df5b30f (patch)
treed98fb95b53e48b3bf348df78301cfe45d1511d7b /core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java
parent6e5aa7a85ff3814ce64cc12baaa187ee77e76209 (diff)
Rewrite parse method
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java28
1 files changed, 15 insertions, 13 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java b/core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java
index 867f16e2..867cf97d 100644
--- a/core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java
+++ b/core/src/main/java/org/bouncycastle/crypto/tls/Certificate.java
@@ -1,5 +1,6 @@
package org.bouncycastle.crypto.tls;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -111,27 +112,28 @@ public class Certificate
public static Certificate parse(InputStream input)
throws IOException
{
- int left = TlsUtils.readUint24(input);
- if (left == 0)
+ int totalLength = TlsUtils.readUint24(input);
+ if (totalLength == 0)
{
return EMPTY_CHAIN;
}
- Vector tmp = new Vector();
- while (left > 0)
- {
- int size = TlsUtils.readUint24(input);
- left -= 3 + size;
+ byte[] certListData = TlsUtils.readFully(totalLength, input);
+
+ ByteArrayInputStream buf = new ByteArrayInputStream(certListData);
- byte[] derEncoding = TlsUtils.readFully(size, input);
- ASN1Primitive asn1 = TlsUtils.readASN1Object(derEncoding);
- tmp.addElement(org.bouncycastle.asn1.x509.Certificate.getInstance(asn1));
+ Vector certificate_list = new Vector();
+ while (buf.available() > 0)
+ {
+ byte[] derEncoding = TlsUtils.readOpaque24(buf);
+ ASN1Primitive asn1Cert = TlsUtils.readASN1Object(derEncoding);
+ certificate_list.addElement(org.bouncycastle.asn1.x509.Certificate.getInstance(asn1Cert));
}
- org.bouncycastle.asn1.x509.Certificate[] certificateList = new org.bouncycastle.asn1.x509.Certificate[tmp.size()];
- for (int i = 0; i < tmp.size(); i++)
+ org.bouncycastle.asn1.x509.Certificate[] certificateList = new org.bouncycastle.asn1.x509.Certificate[certificate_list.size()];
+ for (int i = 0; i < certificate_list.size(); i++)
{
- certificateList[i] = (org.bouncycastle.asn1.x509.Certificate)tmp.elementAt(i);
+ certificateList[i] = (org.bouncycastle.asn1.x509.Certificate)certificate_list.elementAt(i);
}
return new Certificate(certificateList);
}