diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/asn1/pkcs')
26 files changed, 113 insertions, 67 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Attribute.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Attribute.java index 6374c980..1cc67fac 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Attribute.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Attribute.java @@ -78,7 +78,7 @@ public class Attribute */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(attrType); v.add(attrValues); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/AuthenticatedSafe.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/AuthenticatedSafe.java index b7cae332..5022ef4d 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/AuthenticatedSafe.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/AuthenticatedSafe.java @@ -64,20 +64,13 @@ public class AuthenticatedSafe public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); - - for (int i = 0; i != info.length; i++) - { - v.add(info[i]); - } - if (isBer) { - return new BERSequence(v); + return new BERSequence(info); } else { - return new DLSequence(v); + return new DLSequence(info); } } } diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CRLBag.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CRLBag.java index 49b2652c..47e1a541 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CRLBag.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CRLBag.java @@ -76,7 +76,7 @@ public class CRLBag */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(crlId); v.add(new DERTaggedObject(0, crlValue)); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertBag.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertBag.java index 4a730286..f43f472b 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertBag.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertBag.java @@ -6,6 +6,7 @@ import org.bouncycastle.asn1.ASN1Object; import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.ASN1Primitive; import org.bouncycastle.asn1.ASN1Sequence; +import org.bouncycastle.asn1.ASN1TaggedObject; import org.bouncycastle.asn1.DERSequence; import org.bouncycastle.asn1.DERTaggedObject; @@ -18,8 +19,8 @@ public class CertBag private CertBag( ASN1Sequence seq) { - this.certId = (ASN1ObjectIdentifier)seq.getObjectAt(0); - this.certValue = ((DERTaggedObject)seq.getObjectAt(1)).getObject(); + this.certId = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); + this.certValue = ASN1TaggedObject.getInstance(seq.getObjectAt(1)).getObject(); } public static CertBag getInstance(Object o) @@ -56,7 +57,7 @@ public class CertBag public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(certId); v.add(new DERTaggedObject(0, certValue)); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequest.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequest.java index e089cbc4..13587f8b 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequest.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequest.java @@ -83,7 +83,7 @@ public class CertificationRequest public ASN1Primitive toASN1Primitive() { // Construct the CertificateRequest - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); v.add(reqInfo); v.add(sigAlgId); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequestInfo.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequestInfo.java index 25e62863..11fdf6ce 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequestInfo.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequestInfo.java @@ -148,7 +148,7 @@ public class CertificationRequestInfo public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(4); v.add(version); v.add(subject); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/ContentInfo.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/ContentInfo.java index 1ee920fd..a7b2bc74 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/ContentInfo.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/ContentInfo.java @@ -81,7 +81,7 @@ public class ContentInfo */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(contentType); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/DHParameter.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/DHParameter.java index fa22f792..aeb8f01e 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/DHParameter.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/DHParameter.java @@ -89,7 +89,7 @@ public class DHParameter public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); v.add(p); v.add(g); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedData.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedData.java index 7a250eaa..e4d449be 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedData.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedData.java @@ -55,7 +55,7 @@ public class EncryptedData private EncryptedData( ASN1Sequence seq) { - int version = ((ASN1Integer)seq.getObjectAt(0)).getValue().intValue(); + int version = ((ASN1Integer)seq.getObjectAt(0)).intValueExact(); if (version != 0) { @@ -70,7 +70,7 @@ public class EncryptedData AlgorithmIdentifier encryptionAlgorithm, ASN1Encodable content) { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); v.add(contentType); v.add(encryptionAlgorithm.toASN1Primitive()); @@ -103,7 +103,7 @@ public class EncryptedData public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(new ASN1Integer(0)); v.add(data); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java index acbe04a9..82645ae8 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.java @@ -76,7 +76,7 @@ public class EncryptedPrivateKeyInfo */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(algId); v.add(data); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/IssuerAndSerialNumber.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/IssuerAndSerialNumber.java index 6cbf907a..aa06263b 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/IssuerAndSerialNumber.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/IssuerAndSerialNumber.java @@ -75,7 +75,7 @@ public class IssuerAndSerialNumber public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(name); v.add(certSerialNumber); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/MacData.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/MacData.java index 593373f5..36c462b1 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/MacData.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/MacData.java @@ -92,7 +92,7 @@ public class MacData */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); v.add(digInfo); v.add(new DEROctetString(salt)); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBEParameter.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBEParameter.java index 06180dfe..fa4dacd3 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBEParameter.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBEParameter.java @@ -63,7 +63,7 @@ public class PBEParameter public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(salt); v.add(iterations); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBES2Parameters.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBES2Parameters.java index b47e9cdd..fdea9b14 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBES2Parameters.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBES2Parameters.java @@ -67,7 +67,7 @@ public class PBES2Parameters public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(func); v.add(scheme); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBKDF2Params.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBKDF2Params.java index 6a6ad559..58fa82ba 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBKDF2Params.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PBKDF2Params.java @@ -243,7 +243,7 @@ public class PBKDF2Params */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(4); v.add(octStr); v.add(iterationCount); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCS12PBEParams.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCS12PBEParams.java index 0ddf5c34..1587a596 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCS12PBEParams.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCS12PBEParams.java @@ -59,7 +59,7 @@ public class PKCS12PBEParams public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(iv); v.add(iterations); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java index d245b9bb..7cf720fd 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.java @@ -261,6 +261,49 @@ public interface PKCSObjectIdentifiers */ ASN1ObjectIdentifier id_rsa_KEM = id_alg.branch("14"); + + /** + * id-alg-hss-lms-hashsig OBJECT IDENTIFIER ::= { iso(1) + * member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) + * smime(16) alg(3) 17 } + */ + public static final ASN1ObjectIdentifier id_alg_hss_lms_hashsig = id_alg.branch("17"); + + /** + * <pre> + * id-alg-AEADChaCha20Poly1305 OBJECT IDENTIFIER ::= + * { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) + * pkcs9(9) smime(16) alg(3) 18 } + * + * AEADChaCha20Poly1305Nonce ::= OCTET STRING (SIZE(12)) + * </pre> + */ + ASN1ObjectIdentifier id_alg_AEADChaCha20Poly1305 = id_alg.branch("18"); + + /** + * <pre> + * id-alg-hkdf-with-sha256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 28 } + * </pre> + */ + ASN1ObjectIdentifier id_alg_hkdf_with_sha256 = id_alg.branch("28"); + + /** + * <pre> + * id-alg-hkdf-with-sha384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 29 } + * </pre> + */ + ASN1ObjectIdentifier id_alg_hkdf_with_sha384 = id_alg.branch("29"); + + /** + * <pre> + * id-alg-hkdf-with-sha512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) + * us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 30 } + * </pre> + */ + ASN1ObjectIdentifier id_alg_hkdf_with_sha512 = id_alg.branch("30"); + // // id-cti OBJECT IDENTIFIER ::= {iso(1) member-body(2) usa(840) // rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) cti(6)} @@ -292,7 +335,7 @@ public interface PKCSObjectIdentifiers /** PKCS#9: 1.2.840.113549.1.9.16.2.1 -- smime attribute receiptRequest */ ASN1ObjectIdentifier id_aa_receiptRequest = id_aa.branch("1"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.4 - See <a href="http://tools.ietf.org/html/rfc2634">RFC 2634</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.4 - See <a href="https://tools.ietf.org/html/rfc2634">RFC 2634</a> */ ASN1ObjectIdentifier id_aa_contentHint = id_aa.branch("4"); // See RFC 2634 /** PKCS#9: 1.2.840.113549.1.9.16.2.5 */ ASN1ObjectIdentifier id_aa_msgSigDigest = id_aa.branch("5"); @@ -309,40 +352,40 @@ public interface PKCSObjectIdentifiers /** PKCS#9: 1.2.840.113549.1.9.16.2.47 */ ASN1ObjectIdentifier id_aa_signingCertificateV2 = id_aa.branch("47"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.7 - See <a href="http://tools.ietf.org/html/rfc2634">RFC 2634</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.7 - See <a href="https://tools.ietf.org/html/rfc2634">RFC 2634</a> */ ASN1ObjectIdentifier id_aa_contentIdentifier = id_aa.branch("7"); // See RFC 2634 /* * RFC 3126 */ - /** PKCS#9: 1.2.840.113549.1.9.16.2.14 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.14 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_signatureTimeStampToken = id_aa.branch("14"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.15 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.15 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_sigPolicyId = id_aa.branch("15"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.16 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.16 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_commitmentType = id_aa.branch("16"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.17 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.17 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_signerLocation = id_aa.branch("17"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.18 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.18 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_signerAttr = id_aa.branch("18"); - /** PKCS#9: 1.2.840.113549.1.9.16.6.2.19 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.6.2.19 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_otherSigCert = id_aa.branch("19"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.20 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.20 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_contentTimestamp = id_aa.branch("20"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.21 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.21 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_certificateRefs = id_aa.branch("21"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.22 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.22 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_revocationRefs = id_aa.branch("22"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.23 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.23 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_certValues = id_aa.branch("23"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.24 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.24 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_revocationValues = id_aa.branch("24"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.25 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.25 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_escTimeStamp = id_aa.branch("25"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.26 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.26 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_certCRLTimestamp = id_aa.branch("26"); - /** PKCS#9: 1.2.840.113549.1.9.16.2.27 - <a href="http://tools.ietf.org/html/rfc3126">RFC 3126</a> */ + /** PKCS#9: 1.2.840.113549.1.9.16.2.27 - <a href="https://tools.ietf.org/html/rfc3126">RFC 3126</a> */ ASN1ObjectIdentifier id_aa_ets_archiveTimestamp = id_aa.branch("27"); /** PKCS#9: 1.2.840.113549.1.9.16.2.37 - <a href="https://tools.ietf.org/html/rfc4108#section-2.2.5">RFC 4108</a> */ diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Pfx.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Pfx.java index ce7e0758..5954313e 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Pfx.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/Pfx.java @@ -1,7 +1,5 @@ package org.bouncycastle.asn1.pkcs; -import java.math.BigInteger; - import org.bouncycastle.asn1.ASN1EncodableVector; import org.bouncycastle.asn1.ASN1Integer; import org.bouncycastle.asn1.ASN1Object; @@ -22,8 +20,8 @@ public class Pfx private Pfx( ASN1Sequence seq) { - BigInteger version = ASN1Integer.getInstance(seq.getObjectAt(0)).getValue(); - if (version.intValue() != 3) + ASN1Integer version = ASN1Integer.getInstance(seq.getObjectAt(0)); + if (version.intValueExact() != 3) { throw new IllegalArgumentException("wrong version for PFX PDU"); } @@ -72,7 +70,7 @@ public class Pfx public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); v.add(new ASN1Integer(3)); v.add(contentInfo); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PrivateKeyInfo.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PrivateKeyInfo.java index 85700b6a..9ac8c5eb 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PrivateKeyInfo.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/PrivateKeyInfo.java @@ -1,7 +1,6 @@ package org.bouncycastle.asn1.pkcs; import java.io.IOException; -import java.math.BigInteger; import java.util.Enumeration; import org.bouncycastle.asn1.ASN1BitString; @@ -88,12 +87,12 @@ public class PrivateKeyInfo private static int getVersionValue(ASN1Integer version) { - BigInteger bigValue = version.getValue(); - if (bigValue.compareTo(BigIntegers.ZERO) < 0 || bigValue.compareTo(BigIntegers.ONE) > 0) + int versionValue = version.intValueExact(); + if (versionValue < 0 || versionValue > 1) { throw new IllegalArgumentException("invalid version for private key info"); } - return bigValue.intValue(); + return versionValue; } public PrivateKeyInfo( @@ -176,6 +175,11 @@ public class PrivateKeyInfo } } + public ASN1Integer getVersion() + { + return version; + } + public ASN1Set getAttributes() { return attributes; @@ -186,6 +190,11 @@ public class PrivateKeyInfo return privateKeyAlgorithm; } + public ASN1OctetString getPrivateKey() + { + return new DEROctetString(privateKey.getOctets()); + } + public ASN1Encodable parsePrivateKey() throws IOException { @@ -228,7 +237,7 @@ public class PrivateKeyInfo public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(5); v.add(version); v.add(privateKeyAlgorithm); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java index e707fd10..9e5c364e 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAESOAEPparams.java @@ -133,7 +133,7 @@ public class RSAESOAEPparams */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); if (!hashAlgorithm.equals(DEFAULT_HASH_ALGORITHM)) { diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKey.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKey.java index 36992cf5..be914ec0 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKey.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKey.java @@ -74,13 +74,14 @@ public class RSAPrivateKey { Enumeration e = seq.getObjects(); - BigInteger v = ((ASN1Integer)e.nextElement()).getValue(); - if (v.intValue() != 0 && v.intValue() != 1) + ASN1Integer v = (ASN1Integer)e.nextElement(); + int versionValue = v.intValueExact(); + if (versionValue < 0 || versionValue > 1) { throw new IllegalArgumentException("wrong version for RSA private key"); } - version = v; + version = v.getValue(); modulus = ((ASN1Integer)e.nextElement()).getValue(); publicExponent = ((ASN1Integer)e.nextElement()).getValue(); privateExponent = ((ASN1Integer)e.nextElement()).getValue(); @@ -165,7 +166,7 @@ public class RSAPrivateKey */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(10); v.add(new ASN1Integer(version)); // version v.add(new ASN1Integer(getModulus())); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKeyStructure.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKeyStructure.java index 5912d5ea..8e654cc0 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKeyStructure.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPrivateKeyStructure.java @@ -76,13 +76,14 @@ public class RSAPrivateKeyStructure { Enumeration e = seq.getObjects(); - BigInteger v = ((ASN1Integer)e.nextElement()).getValue(); - if (v.intValue() != 0 && v.intValue() != 1) + ASN1Integer v = (ASN1Integer)e.nextElement(); + int versionValue = v.intValueExact(); + if (versionValue < 0 || versionValue > 1) { throw new IllegalArgumentException("wrong version for RSA private key"); } - version = v.intValue(); + version = versionValue; modulus = ((ASN1Integer)e.nextElement()).getValue(); publicExponent = ((ASN1Integer)e.nextElement()).getValue(); privateExponent = ((ASN1Integer)e.nextElement()).getValue(); @@ -167,7 +168,7 @@ public class RSAPrivateKeyStructure */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(10); v.add(new ASN1Integer(version)); // version v.add(new ASN1Integer(getModulus())); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPublicKey.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPublicKey.java index 6c432985..f07819be 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPublicKey.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSAPublicKey.java @@ -85,7 +85,7 @@ public class RSAPublicKey */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(2); v.add(new ASN1Integer(getModulus())); v.add(new ASN1Integer(getPublicExponent())); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java index dc91c9c1..fb89370c 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/RSASSAPSSparams.java @@ -145,7 +145,7 @@ public class RSASSAPSSparams */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(4); if (!hashAlgorithm.equals(DEFAULT_HASH_ALGORITHM)) { diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SafeBag.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SafeBag.java index 00ca0a20..1d39416f 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SafeBag.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SafeBag.java @@ -81,7 +81,7 @@ public class SafeBag public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(3); v.add(bagId); v.add(new DLTaggedObject(true, 0, bagValue)); diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SignedData.java b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SignedData.java index 3d3089bc..e5d4a897 100644 --- a/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SignedData.java +++ b/bcprov/src/main/java/org/bouncycastle/asn1/pkcs/SignedData.java @@ -144,7 +144,7 @@ public class SignedData */ public ASN1Primitive toASN1Primitive() { - ASN1EncodableVector v = new ASN1EncodableVector(); + ASN1EncodableVector v = new ASN1EncodableVector(6); v.add(version); v.add(digestAlgorithms); |