diff options
author | David Hook <dgh@cryptoworkshop.com> | 2013-06-11 12:46:34 +0400 |
---|---|---|
committer | David Hook <dgh@cryptoworkshop.com> | 2013-06-11 12:46:34 +0400 |
commit | bc5deda7d2e66eb156590184dfe35b0dcc7088c0 (patch) | |
tree | 5b1b5cf06bf1e150b908e779787e93ee9940a935 /core/src/main | |
parent | b106bc64a6c6361761919967209e397bd4a78600 (diff) |
removed some troublesome casts
Diffstat (limited to 'core/src/main')
3 files changed, 32 insertions, 8 deletions
diff --git a/core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java b/core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java index e0590890..e615ef34 100644 --- a/core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java +++ b/core/src/main/java/org/bouncycastle/asn1/x9/X9ECParameters.java @@ -39,11 +39,21 @@ public class X9ECParameters } X9Curve x9c = new X9Curve( - new X9FieldID((ASN1Sequence)seq.getObjectAt(1)), - (ASN1Sequence)seq.getObjectAt(2)); + X9FieldID.getInstance(seq.getObjectAt(1)), + ASN1Sequence.getInstance(seq.getObjectAt(2))); this.curve = x9c.getCurve(); - this.g = new X9ECPoint(curve, (ASN1OctetString)seq.getObjectAt(3)).getPoint(); + Object p = seq.getObjectAt(3); + + if (p instanceof X9ECPoint) + { + this.g = ((X9ECPoint)p).getPoint(); + } + else + { + this.g = new X9ECPoint(curve, (ASN1OctetString)p).getPoint(); + } + this.n = ((ASN1Integer)seq.getObjectAt(4)).getValue(); this.seed = x9c.getSeed(); diff --git a/core/src/main/java/org/bouncycastle/asn1/x9/X9FieldID.java b/core/src/main/java/org/bouncycastle/asn1/x9/X9FieldID.java index 30598e2e..a210352e 100644 --- a/core/src/main/java/org/bouncycastle/asn1/x9/X9FieldID.java +++ b/core/src/main/java/org/bouncycastle/asn1/x9/X9FieldID.java @@ -71,11 +71,26 @@ public class X9FieldID this.parameters = new DERSequence(fieldIdParams); } - public X9FieldID( + private X9FieldID( ASN1Sequence seq) { - this.id = (ASN1ObjectIdentifier)seq.getObjectAt(0); - this.parameters = (ASN1Primitive)seq.getObjectAt(1); + this.id = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0)); + this.parameters = seq.getObjectAt(1).toASN1Primitive(); + } + + public static X9FieldID getInstance(Object obj) + { + if (obj instanceof X9FieldID) + { + return (X9FieldID)obj; + } + + if (obj != null) + { + return new X9FieldID(ASN1Sequence.getInstance(obj)); + } + + return null; } public ASN1ObjectIdentifier getIdentifier() diff --git a/core/src/main/java/org/bouncycastle/crypto/util/PublicKeyFactory.java b/core/src/main/java/org/bouncycastle/crypto/util/PublicKeyFactory.java index 343bbd3c..ab23e11c 100644 --- a/core/src/main/java/org/bouncycastle/crypto/util/PublicKeyFactory.java +++ b/core/src/main/java/org/bouncycastle/crypto/util/PublicKeyFactory.java @@ -160,8 +160,7 @@ public class PublicKeyFactory } else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_ecPublicKey)) { - X962Parameters params = new X962Parameters( - (ASN1Primitive)algId.getParameters()); + X962Parameters params = X962Parameters.getInstance(algId.getParameters()); X9ECParameters x9; if (params.isNamedCurve()) |