Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/Extensions.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/Extensions.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/Extensions.java (working copy) @@ -385,6 +385,21 @@ && (extensions.size() == extns.extensions.size())) ); } + + /** + * Places the string representation into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + if (extensions == null) { + return; + } + int num = 1; + for (Extension extension: extensions) { + buffer.append('\n').append(prefix) + .append('[').append(num++).append("]: "); //$NON-NLS-1$ + extension.dumpValue(buffer, prefix); + } + } /** * Custom X.509 Extensions decoder. Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/TBSCertList.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/TBSCertList.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/TBSCertList.java (working copy) @@ -26,6 +26,7 @@ import java.math.BigInteger; import java.util.Arrays; import java.util.Date; +import java.util.Iterator; import java.util.List; import javax.security.auth.x500.X500Principal; @@ -153,6 +154,22 @@ : crlEntryExtensions.equals(rcert.crlEntryExtensions)); } + /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("Certificae Serial Number: ") //$NON-NLS-1$ + .append(userCertificate).append('\n'); + buffer.append(prefix).append("Revocation Date: ") //$NON-NLS-1$ + .append(revocationDate); + if (crlEntryExtensions != null) { + buffer.append('\n').append(prefix) + .append("CRL Entry Extensions: ["); //$NON-NLS-1$ + crlEntryExtensions.dumpValue(buffer, prefix + " "); //$NON-NLS-1$ + buffer.append(prefix).append(']'); + } + } public static ASN1Sequence ASN1 = new ASN1Sequence( new ASN1Type[] {ASN1Integer.getInstance(), Time.ASN1, @@ -343,6 +360,37 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer) { + buffer.append("X.509 CRL v").append(version); //$NON-NLS-1$ + buffer.append("\nSignature Algorithm: ["); //$NON-NLS-1$ + signature.dumpValue(buffer); + buffer.append(']'); + buffer.append("\nIssuer: ").append(issuer.getName(X500Principal.RFC2253)); //$NON-NLS-1$ + buffer.append("\n\nThis Update: ").append(thisUpdate); //$NON-NLS-1$ + buffer.append("\nNext Update: ").append(nextUpdate).append('\n'); //$NON-NLS-1$ + if (revokedCertificates != null) { + buffer.append("\nRevoked Certificates: ") //$NON-NLS-1$ + .append(revokedCertificates.size()).append(" ["); //$NON-NLS-1$ + int number = 1; + for (Iterator it = revokedCertificates.iterator();it.hasNext();) { + buffer.append("\n [").append(number++).append(']'); //$NON-NLS-1$ + ((RevokedCertificate) it.next()).dumpValue(buffer, " "); //$NON-NLS-1$ + buffer.append('\n'); + } + buffer.append("]\n"); //$NON-NLS-1$ + } + if (crlExtensions != null) { + buffer.append("\nCRL Extensions: ") //$NON-NLS-1$ + .append(crlExtensions.size()).append(" ["); //$NON-NLS-1$ + crlExtensions.dumpValue(buffer, " "); //$NON-NLS-1$ + buffer.append("]\n"); //$NON-NLS-1$ + } + } + + /** * X.509 TBSCertList encoder/decoder. */ public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] { Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/PolicyInformation.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/PolicyInformation.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/PolicyInformation.java (working copy) @@ -84,6 +84,15 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer) { + buffer.append("Policy Identifier [") //$NON-NLS-1$ + .append(policyIdentifier).append(']'); + } + + /** * ASN.1 DER X.509 PolicyInformation encoder/decoder class. */ public static final ASN1Sequence ASN1 = new ASN1Sequence( Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/GeneralSubtree.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/GeneralSubtree.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/GeneralSubtree.java (working copy) @@ -126,6 +126,22 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("General Subtree: [\n"); //$NON-NLS-1$ + buffer.append(prefix).append(" base: ").append(base).append('\n'); //$NON-NLS-1$ + buffer.append(prefix).append(" minimum: ") //$NON-NLS-1$ + .append(minimum).append('\n'); + if (maximum >= 0) { + buffer.append(prefix).append(" maximum: ") //$NON-NLS-1$ + .append(maximum).append('\n'); + } + buffer.append(prefix).append("]\n"); //$NON-NLS-1$ + } + + /** * ASN.1 DER X.509 GeneralSubtree encoder/decoder class. */ public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] { Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/ExtensionValue.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/ExtensionValue.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/ExtensionValue.java (working copy) @@ -52,16 +52,24 @@ * Places the string representation of extension value * into the StringBuffer object. */ - public void dumpValue(StringBuffer buffer) { - buffer.append("Unparseable extension value:\n"); + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("Unparseable extension value:\n"); //$NON-NLS-1$ if (encoding == null) { encoding = getEncoded(); } if (encoding == null) { - buffer.append("NULL\n"); + buffer.append("NULL\n"); //$NON-NLS-1$ } else { - buffer.append(Array.toString(encoding, "")); + buffer.append(Array.toString(encoding, prefix)); } + } + + /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer) { + dumpValue(buffer, ""); //$NON-NLS-1$ }; } Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificatePolicies.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificatePolicies.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificatePolicies.java (working copy) @@ -25,6 +25,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collection; +import java.util.Iterator; import java.util.List; import org.apache.harmony.security.asn1.ASN1SequenceOf; @@ -117,6 +118,21 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("CertificatePolicies [\n"); //$NON-NLS-1$ + for (Iterator it=policyInformations.iterator(); it.hasNext();) { + buffer.append(prefix); + buffer.append(" "); //$NON-NLS-1$ + ((PolicyInformation) it.next()).dumpValue(buffer); + buffer.append('\n'); + } + buffer.append(prefix).append("]\n"); //$NON-NLS-1$ + } + + /** * ASN.1 DER X.509 CertificatePolicies encoder/decoder class. */ public static final ASN1Type ASN1 = Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/SubjectKeyIdentifier.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/SubjectKeyIdentifier.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/SubjectKeyIdentifier.java (working copy) @@ -74,10 +74,10 @@ * Places the string representation of extension value * into the StringBuffer object. */ - public void dumpValue(StringBuffer buffer) { - buffer.append("SubjectKeyIdentifier: [\n"); - buffer.append(Array.toString(keyIdentifier, "")); - buffer.append("]\n"); + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("SubjectKeyIdentifier: [\n"); //$NON-NLS-1$ + buffer.append(Array.toString(keyIdentifier, prefix)); + buffer.append(prefix).append("]\n"); //$NON-NLS-1$ } } Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/Extension.java (working copy) @@ -328,6 +328,72 @@ } } + /** + * Places the string representation into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append("OID: ").append(getExtnID()) //$NON-NLS-1$ + .append(", Critical: ").append(critical).append('\n'); //$NON-NLS-1$ + if (!valueDecoded) { + try { + decodeExtensionValue(); + } catch (IOException e) { } + } + if (extnValueObject != null) { + extnValueObject.dumpValue(buffer, prefix); + return; + } + // else: dump unparsed hex representation + buffer.append(prefix); + if (oidEquals(extnID, SUBJ_DIRECTORY_ATTRS)) { + buffer.append("Subject Directory Attributes Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, SUBJ_KEY_ID)) { + buffer.append("Subject Key Identifier Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, KEY_USAGE)) { + buffer.append("Key Usage Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, PRIVATE_KEY_USAGE_PERIOD)) { + buffer.append("Private Key Usage Period Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, SUBJECT_ALT_NAME)) { + buffer.append("Subject Alternative Name Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, ISSUER_ALTERNATIVE_NAME)) { + buffer.append("Issuer Alternative Name Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, BASIC_CONSTRAINTS)) { + buffer.append("Basic Constraints Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, NAME_CONSTRAINTS)) { + buffer.append("Name Constraints Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, CRL_DISTR_POINTS)) { + buffer.append("CRL Distribution Points Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, CERTIFICATE_POLICIES)) { + buffer.append("Certificate Policies Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, POLICY_MAPPINGS)) { + buffer.append("Policy Mappings Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, AUTH_KEY_ID)) { + buffer.append("Authority Key Identifier Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, POLICY_CONSTRAINTS)) { + buffer.append("Policy Constraints Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, EXTENDED_KEY_USAGE)) { + buffer.append("Extended Key Usage Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, INHIBIT_ANY_POLICY)) { + buffer.append("Inhibit Any-Policy Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, AUTHORITY_INFO_ACCESS)) { + buffer.append("Authority Information Access Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, SUBJECT_INFO_ACCESS)) { + buffer.append("Subject Information Access Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, INVALIDITY_DATE)) { + buffer.append("Invalidity Date Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, CRL_NUMBER)) { + buffer.append("CRL Number Extension"); //$NON-NLS-1$ + } else if (oidEquals(extnID, REASON_CODE)) { + buffer.append("Reason Code Extension"); //$NON-NLS-1$ + } else { + buffer.append("Unknown Extension"); //$NON-NLS-1$ + } + buffer.append('\n').append(prefix) + .append("Unparsed Extension Value:\n"); //$NON-NLS-1$ + buffer.append(Array.toString(extnValue, prefix)); + } + + // Compares two OIDs private static boolean oidEquals(int[] oid1, int[] oid2) { int length = oid1.length; Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/CRLDistributionPoints.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/CRLDistributionPoints.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/CRLDistributionPoints.java (working copy) @@ -103,6 +103,21 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("CRL Distribution Points: [\n"); //$NON-NLS-1$ + int number = 0; + for (Iterator it=distributionPoints.iterator(); + it.hasNext();) { + buffer.append(prefix).append(" [").append(++number).append("]\n"); //$NON-NLS-1$ //$NON-NLS-2$ + ((DistributionPoint) it.next()).dumpValue(buffer, prefix + " "); //$NON-NLS-1$ + } + buffer.append(prefix).append("]\n"); //$NON-NLS-1$ + } + + /** * Custom X.509 decoder. */ public static final ASN1Type ASN1 = Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificateIssuer.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificateIssuer.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificateIssuer.java (working copy) @@ -70,18 +70,18 @@ * Places the string representation of extension value * into the StringBuffer object. */ - public void dumpValue(StringBuffer buffer) { - buffer.append("Certificate Issuer: "); + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("Certificate Issuer: "); //$NON-NLS-1$ if (issuer == null) { try { issuer = getIssuer(); } catch (IOException e) { // incorrect extension value encoding - buffer.append("Unparseable (incorrect!) extension value:\n"); + buffer.append("Unparseable (incorrect!) extension value:\n"); //$NON-NLS-1$ super.dumpValue(buffer); } } - buffer.append(issuer).append("\n"); + buffer.append(issuer).append('\n'); } /** Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificateList.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificateList.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/CertificateList.java (working copy) @@ -27,6 +27,7 @@ import org.apache.harmony.security.asn1.ASN1Type; import org.apache.harmony.security.asn1.BerInputStream; import org.apache.harmony.security.asn1.BitString; +import org.apache.harmony.security.utils.Array; /** * The class incapsulates the ASN.1 DER encoding/decoding work @@ -113,17 +114,9 @@ public String toString() { StringBuffer res = new StringBuffer(); - res.append("X509 CertList: \n["); //$NON-NLS-1$ - res.append("\n tbsCertList:\n ["); //$NON-NLS-1$ - res.append(tbsCertList.toString()); - res.append("\n ]"); //$NON-NLS-1$ - res.append("\n signatureAlgorithm:\n ["); //$NON-NLS-1$ - res.append(signatureAlgorithm.toString()); - res.append("\n ]"); //$NON-NLS-1$ - res.append("\n signatureValue:\n ["); //$NON-NLS-1$ - //res.append(Arrays.toString(signatureValue)); - res.append("\n ]"); //$NON-NLS-1$ - res.append("\n]"); //$NON-NLS-1$ + tbsCertList.dumpValue(res); + res.append("\nSignature Value:\n"); //$NON-NLS-1$ + res.append(Array.toString(signatureValue, "")); //$NON-NLS-1$ return res.toString(); } Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/InhibitAnyPolicy.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/InhibitAnyPolicy.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/InhibitAnyPolicy.java (working copy) @@ -77,8 +77,9 @@ * Places the string representation of extension value * into the StringBuffer object. */ - public void dumpValue(StringBuffer buffer) { - buffer.append("Inhibit Any-Policy: ").append(skipCerts).append("\n"); + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("Inhibit Any-Policy: ") //$NON-NLS-1$ + .append(skipCerts).append('\n'); } } Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/Certificate.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/Certificate.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/Certificate.java (working copy) @@ -27,6 +27,7 @@ import org.apache.harmony.security.asn1.ASN1Type; import org.apache.harmony.security.asn1.BerInputStream; import org.apache.harmony.security.asn1.BitString; +import org.apache.harmony.security.utils.Array; /** * The class incapsulates the ASN.1 DER encoding/decoding work @@ -112,19 +113,16 @@ } public String toString() { - StringBuffer res = new StringBuffer(); - res.append("X509 Certificate: \n["); //$NON-NLS-1$ - res.append("\n tbsCertificate:\n ["); //$NON-NLS-1$ - res.append(tbsCertificate.toString()); - res.append("\n ]"); //$NON-NLS-1$ - res.append("\n signatureAlgorithm:\n ["); //$NON-NLS-1$ - res.append(signatureAlgorithm.toString()); - res.append("\n ]"); //$NON-NLS-1$ - res.append("\n signatureValue:\n ["); //$NON-NLS-1$ - //res.append(Arrays.toString(signatureValue)); - res.append("\n ]"); //$NON-NLS-1$ - res.append("\n]"); //$NON-NLS-1$ - return res.toString(); + StringBuffer buffer = new StringBuffer(); + buffer.append("X.509 Certificate:\n[\n"); //$NON-NLS-1$ + tbsCertificate.dumpValue(buffer); + buffer.append("\n Algorithm: ["); //$NON-NLS-1$ + signatureAlgorithm.dumpValue(buffer); + buffer.append(']'); + buffer.append("\n Signature Value:\n"); //$NON-NLS-1$ + buffer.append(Array.toString(signatureValue, "")); //$NON-NLS-1$ + buffer.append(']'); + return buffer.toString(); } /** Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/PolicyConstraints.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/PolicyConstraints.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/PolicyConstraints.java (working copy) @@ -123,6 +123,23 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("PolicyConstraints: [\n"); //$NON-NLS-1$ + if (requireExplicitPolicy != null) { + buffer.append(prefix).append(" requireExplicitPolicy: ") //$NON-NLS-1$ + .append(requireExplicitPolicy).append('\n'); + } + if (inhibitPolicyMapping != null) { + buffer.append(prefix).append(" inhibitPolicyMapping: ") //$NON-NLS-1$ + .append(inhibitPolicyMapping).append('\n'); + } + buffer.append(prefix).append("]\n"); //$NON-NLS-1$ + } + + /** * X.509 PolicyConstraints encoder/decoder. */ public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] { Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/CRLNumber.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/CRLNumber.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/CRLNumber.java (working copy) @@ -77,8 +77,8 @@ * into the StringBuffer object. */ public void dumpValue(StringBuffer buffer, String prefix) { - buffer.append(prefix).append("CRL Number: [ ").append(number).append( - " ]\n"); + buffer.append(prefix).append("CRL Number: [ ").append(number).append( //$NON-NLS-1$ + " ]\n"); //$NON-NLS-1$ } /** Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/AlgorithmIdentifier.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/AlgorithmIdentifier.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/AlgorithmIdentifier.java (working copy) @@ -24,6 +24,7 @@ import java.util.Arrays; +import org.apache.harmony.crypto.utils.AlgNameMapper; import org.apache.harmony.security.asn1.ASN1Any; import org.apache.harmony.security.asn1.ASN1Oid; import org.apache.harmony.security.asn1.ASN1Sequence; @@ -51,6 +52,8 @@ // the value of algorithm field private String algorithm; + // the name of the algorithm + private String algorithmName; // the value of parameters field private byte[] parameters; // the encoding of AlgorithmIdentifier value @@ -95,6 +98,22 @@ } /** + * Returns the name of the algorithm corresponding to + * its OID. If there is no the such correspondence, + * algorithm OID is returned. + * @return algorithm + */ + public String getAlgorithmName() { + if (algorithmName == null) { + algorithmName = AlgNameMapper.map2AlgName(algorithm); + if (algorithmName == null) { + algorithmName = algorithm; + } + } + return algorithmName; + } + + /** * Returns the value of parameters field of the structure. * @return parameters */ @@ -125,6 +144,20 @@ } /** + * Places the string representation into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer) { + buffer.append(getAlgorithmName()); + if (parameters == null) { + buffer.append(", no params, "); //$NON-NLS-1$ + } else { + buffer.append(", params unparsed, "); //$NON-NLS-1$ + } + buffer.append("OID = "); //$NON-NLS-1$ + buffer.append(getAlgorithm()); + } + + /** * Custom AlgorithmIdentifier DER encoder/decoder */ public static final ASN1Sequence ASN1 = new ASN1Sequence(new ASN1Type[] { Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/IssuingDistributionPoint.java (working copy) @@ -159,9 +159,22 @@ * Places the string representation of extension value * into the StringBuffer object. */ - public void dumpValue(StringBuffer buffer) { - buffer.append("Invalidity Date\n"); - super.dumpValue(buffer); + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix).append("Issuing Distribution Point: [\n"); //$NON-NLS-1$ + if (distributionPoint != null) { + distributionPoint.dumpValue(buffer, " " + prefix); //$NON-NLS-1$ + } + buffer.append(prefix).append(" onlyContainsUserCerts: ") //$NON-NLS-1$ + .append(onlyContainsUserCerts).append('\n'); + buffer.append(prefix).append(" onlyContainsCACerts: ") //$NON-NLS-1$ + .append(onlyContainsCACerts).append('\n'); + if (onlySomeReasons != null) { + onlySomeReasons.dumpValue(buffer, prefix + " "); //$NON-NLS-1$ + } + buffer.append(prefix).append(" indirectCRL: ") //$NON-NLS-1$ + .append(indirectCRL).append('\n'); + buffer.append(prefix).append(" onlyContainsAttributeCerts: ") //$NON-NLS-1$ + .append(onlyContainsAttributeCerts).append('\n'); } /** Index: modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java =================================================================== --- modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java (revision 454638) +++ modules/security/src/main/java/common/org/apache/harmony/security/x509/ReasonFlags.java (working copy) @@ -78,6 +78,23 @@ } /** + * Places the string representation of extension value + * into the StringBuffer object. + */ + public void dumpValue(StringBuffer buffer, String prefix) { + buffer.append(prefix); + buffer.append("ReasonFlags [\n"); //$NON-NLS-1$ + for (int i=0; i