diff options
Diffstat (limited to 'gnu/java/security/x509/ext/CertificatePolicies.java')
-rw-r--r-- | gnu/java/security/x509/ext/CertificatePolicies.java | 57 |
1 files changed, 41 insertions, 16 deletions
diff --git a/gnu/java/security/x509/ext/CertificatePolicies.java b/gnu/java/security/x509/ext/CertificatePolicies.java index 874b8eeeb..9b36485b2 100644 --- a/gnu/java/security/x509/ext/CertificatePolicies.java +++ b/gnu/java/security/x509/ext/CertificatePolicies.java @@ -1,5 +1,5 @@ /* CertificatePolicies.java -- certificate policy extension. - Copyright (C) 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2006, 2014 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -113,24 +113,49 @@ public class CertificatePolicies extends Extension.Value public CertificatePolicies (final List<OID> policies, final Map<OID, List<PolicyQualifierInfo>> policyQualifierInfos) { - for (Iterator it = policies.iterator(); it.hasNext(); ) - if (!(it.next() instanceof OID)) - throw new IllegalArgumentException ("policies must be OIDs"); - for (Iterator it = policyQualifierInfos.entrySet().iterator(); it.hasNext();) + List<OID> polCopy = new ArrayList<OID>(policies.size()); + try { - Map.Entry e = (Map.Entry) it.next(); - if (!(e.getKey() instanceof OID) || !policies.contains (e.getKey())) - throw new IllegalArgumentException - ("policyQualifierInfos keys must be OIDs"); - if (!(e.getValue() instanceof List)) - throw new IllegalArgumentException - ("policyQualifierInfos values must be Lists of PolicyQualifierInfos"); - for (Iterator it2 = ((List) e.getValue()).iterator(); it.hasNext(); ) - if (!(it2.next() instanceof PolicyQualifierInfo)) + for (OID o : policies) { polCopy.add(o); } + } + catch (ClassCastException e) + { + throw new IllegalArgumentException ("policies must be OIDs", e); + } + for (Map.Entry<OID,List<PolicyQualifierInfo>> e : policyQualifierInfos.entrySet()) + { + try + { + if (!policies.contains (e.getKey())) + throw new IllegalArgumentException + ("policyQualifierInfos keys must be OIDs"); + } + catch (ClassCastException cce) + { + throw new IllegalArgumentException + ("policyQualifierInfos keys must be OIDs", cce); + } + try + { + e.getValue(); + } + catch (ClassCastException cce) + { + throw new IllegalArgumentException + ("policyQualifierInfos values must be Lists of PolicyQualifierInfos", cce); + } + try + { + for (Iterator<PolicyQualifierInfo> i = e.getValue().iterator(); + i.hasNext(); i.next()); + } + catch (ClassCastException cce) + { throw new IllegalArgumentException - ("policyQualifierInfos values must be Lists of PolicyQualifierInfos"); + ("policyQualifierInfos values must be Lists of PolicyQualifierInfos", cce); + } } - this.policies = Collections.unmodifiableList (new ArrayList<OID>(policies)); + this.policies = Collections.unmodifiableList (polCopy); this.policyQualifierInfos = Collections.unmodifiableMap (new HashMap<OID, List<PolicyQualifierInfo>>(policyQualifierInfos)); } |