@Override protected Object getDecodedObject(BerInputStream in) throws IOException { Object[] values = (Object[]) in.content; int[] oid = (int[]) values[0]; byte[] extnValue = (byte[]) ((Object[]) values[2])[0]; byte[] rawExtnValue = (byte[]) ((Object[]) values[2])[1]; ExtensionValue decodedExtValue = null; // decode Key Usage and Basic Constraints extension values if (Arrays.equals(oid, KEY_USAGE)) { decodedExtValue = new KeyUsage(extnValue); } else if (Arrays.equals(oid, BASIC_CONSTRAINTS)) { decodedExtValue = new BasicConstraints(extnValue); } return new Extension((int[]) values[0], (Boolean) values[1], extnValue, rawExtnValue, in.getEncoded(), decodedExtValue); }
public ExtensionValue getDecodedExtensionValue() throws IOException { if (!valueDecoded) { decodeExtensionValue(); } return extnValueObject; }
public void dumpValue(StringBuilder sb, String prefix) { if (extensions == null) { return; } int num = 1; for (Extension extension: extensions) { sb.append('\n').append(prefix).append('[').append(num++).append("]: "); extension.dumpValue(sb, prefix); } }
private void makeOidsLists() { if (extensions == null) { return; } int size = extensions.size(); Set<String> localCritical = new HashSet<String>(size); Set<String> localNoncritical = new HashSet<String>(size); Boolean localHasUnsupported = Boolean.FALSE; for (Extension extension : extensions) { String oid = extension.getExtnID(); if (extension.getCritical()) { if (!SUPPORTED_CRITICAL.contains(oid)) { localHasUnsupported = Boolean.TRUE; } localCritical.add(oid); } else { localNoncritical.add(oid); } } this.critical = localCritical; this.noncritical = localNoncritical; this.hasUnsupported = localHasUnsupported; }
public void dumpValue(StringBuilder sb, String prefix) { sb.append("OID: ").append(getExtnID()).append(", Critical: ").append(critical).append('\n'); if (!valueDecoded) { try { decodeExtensionValue(); } catch (IOException ignored) {
@Override public byte[] getExtensionValue(String oid) { if (extensions == null) { return null; } // retrieve the info from the cached extensions object Extension ext = extensions.getExtensionByOID(oid); return (ext == null) ? null : ext.getRawExtnValue(); }
/** * Returns the value of Certificate Issuer Extension (OID = 2.5.29.29). * It is a CRL entry extension and contains the GeneralNames describing * the issuer of revoked certificate. Its ASN.1 notation is as follows: * <pre> * id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } * * certificateIssuer ::= GeneralNames * </pre> * (as specified in RFC 3280) * * @return the value of Certificate Issuer Extension */ public X500Principal valueOfCertificateIssuerExtension() throws IOException { Extension extension = getExtensionByOID("2.5.29.29"); if (extension == null) { return null; } return ((CertificateIssuer) extension.getDecodedExtensionValue()).getIssuer(); }
/** * Returns the values of extensions. */ public Extension getExtensionByOID(String oid) { if (extensions == null) { return null; } HashMap<String, Extension> localOidMap = oidMap; if (localOidMap == null) { localOidMap = new HashMap<String, Extension>(); for (Extension extension : extensions) { localOidMap.put(extension.getExtnID(), extension); } this.oidMap = localOidMap; } return localOidMap.get(oid); }
/** * Given an X.509 extension that encodes GeneralNames, return it in the * format expected by APIs. */ private static Collection<List<?>> decodeGeneralNames(Extension extension) throws IOException { if (extension == null) { return null; } Collection<List<?>> collection = ((GeneralNames) GeneralNames.ASN1.decode(extension .getExtnValue())).getPairsList(); /* * If the extension had any invalid entries, we may have an empty * collection at this point, so just return null. */ if (collection.size() == 0) { return null; } return Collections.unmodifiableCollection(collection); }
return -1; BasicConstraints bc = extension.getBasicConstraintsValue(); if (bc == null || !bc.getCa()) { return -1;
Extension extension = getExtensionByOID("2.5.29.15"); KeyUsage kUsage; if ((extension == null) || ((kUsage = extension.getKeyUsageValue()) == null)) { return null;
private void makeOidsLists() { if (extensions == null) { return; } int size = extensions.size(); Set<String> localCritical = new HashSet<String>(size); Set<String> localNoncritical = new HashSet<String>(size); Boolean localHasUnsupported = Boolean.FALSE; for (Extension extension : extensions) { String oid = extension.getExtnID(); if (extension.getCritical()) { if (!SUPPORTED_CRITICAL.contains(oid)) { localHasUnsupported = Boolean.TRUE; } localCritical.add(oid); } else { localNoncritical.add(oid); } } this.critical = localCritical; this.noncritical = localNoncritical; this.hasUnsupported = localHasUnsupported; }
/** * @see java.security.cert.X509Extension#getExtensionValue(String) * method documentation for more info */ public byte[] getExtensionValue(String oid) { if (extensions == null) { return null; } Extension ext = extensions.getExtensionByOID(oid); return (ext == null) ? null : ext.getRawExtnValue(); }
/** * Returns the value of Extended Key Usage extension (OID == 2.5.29.37). * The ASN.1 definition of Extended Key Usage Extension is: * * <pre> * id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } * * ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId * * KeyPurposeId ::= OBJECT IDENTIFIER * </pre> * (as specified in RFC 3280) * * @return the list with string representations of KeyPurposeId's OIDs * and null * @throws IOException if extension was incorrectly encoded. */ public List<String> valueOfExtendedKeyUsage() throws IOException { Extension extension = getExtensionByOID("2.5.29.37"); if (extension == null) { return null; } return ((ExtendedKeyUsage) extension.getDecodedExtensionValue()).getExtendedKeyUsage(); }
public void dumpValue(StringBuilder sb, String prefix) { sb.append("OID: ").append(getExtnID()).append(", Critical: ").append(critical).append('\n'); if (!valueDecoded) { try { decodeExtensionValue(); } catch (IOException ignored) {
/** * Returns the values of extensions. */ public Extension getExtensionByOID(String oid) { if (extensions == null) { return null; } HashMap<String, Extension> localOidMap = oidMap; if (localOidMap == null) { localOidMap = new HashMap<String, Extension>(); for (Extension extension : extensions) { localOidMap.put(extension.getExtnID(), extension); } this.oidMap = localOidMap; } return localOidMap.get(oid); }
/** * Given an X.509 extension that encodes GeneralNames, return it in the * format expected by APIs. */ private static Collection<List<?>> decodeGeneralNames(Extension extension) throws IOException { if (extension == null) { return null; } Collection<List<?>> collection = ((GeneralNames) GeneralNames.ASN1.decode(extension .getExtnValue())).getPairsList(); /* * If the extension had any invalid entries, we may have an empty * collection at this point, so just return null. */ if (collection.size() == 0) { return null; } return Collections.unmodifiableCollection(collection); }
return -1; BasicConstraints bc = extension.getBasicConstraintsValue(); if (bc == null || !bc.getCa()) { return -1;
Extension extension = getExtensionByOID("2.5.29.15"); KeyUsage kUsage; if ((extension == null) || ((kUsage = extension.getKeyUsageValue()) == null)) { return null;
private void makeOidsLists() { if (extensions == null) { return; } int size = extensions.size(); Set<String> localCritical = new HashSet<String>(size); Set<String> localNoncritical = new HashSet<String>(size); Boolean localHasUnsupported = Boolean.FALSE; for (Extension extension : extensions) { String oid = extension.getExtnID(); if (extension.getCritical()) { if (!SUPPORTED_CRITICAL.contains(oid)) { localHasUnsupported = Boolean.TRUE; } localCritical.add(oid); } else { localNoncritical.add(oid); } } this.critical = localCritical; this.noncritical = localNoncritical; this.hasUnsupported = localHasUnsupported; }