[ 
https://issues.apache.org/jira/browse/CODEC-135?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sebb updated CODEC-135:
-----------------------

    Description: 
I am trying to parse a certificate(.pfx).But I am getting following exception 
while parsing the certificate.

CertificateException:org.apache.harmony.security.asn1.ASN1Exception: DER:
only definite length encoding MUST be user.

{code}
package com.ams;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Enumeration;

import javax.security.cert.Certificate;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class CertificateComponent   {
        private static final String TAG = "CertificateParser";
        public static final String PFX = "sdcard/AC350.pfx";
        public static final String CER = "sdcard/test.cer";
        X509Certificate cert;
        FileInputStream in;
        Context ctx; 
        private Button Pkcs12Button;
        private Button CertButton;

        public void click(View v) {
                try {
                        if (v.getId() == R.id.pkcs12_button) {
                                String password = "TZ96dtbx";
                                KeyStore ks = KeyStore.getInstance("PKCS12");

                                 in= new FileInputStream(PFX);
                                // byte[] p12 = readFile(PFX);
                                 in.close();
                                ks.load(in, password.toCharArray());
                                Enumeration<String> aliasesEnum = ks.aliases();
                                // Log.i(TAG, "certificate details:" + 
aliasesEnum);
                                
                                String alias = (String) 
aliasesEnum.nextElement();
                                // System.out.println("Alias: " + alias);

                                cert = (X509Certificate) 
ks.getCertificate(alias);
                                
                                while (aliasesEnum.hasMoreElements()) {
                                        
                                        Log.i(TAG, "Type:" + cert.getType());
                                        Log.i(TAG, "Key Algorithm:"
                                                        + 
cert.getPublicKey().getAlgorithm());
                                        Log.i(TAG, "Version:" + 
cert.getVersion());
                                        Log.i(TAG, "Issuer DN:" + 
cert.getIssuerDN());
                                        Log.i(TAG, "Subject:" + 
cert.getSubjectDN());
                                        Log.i(TAG, "Valid From:" + 
cert.getNotBefore());
                                        Log.i(TAG, "Valid Till:" + 
cert.getNotAfter());
                                        Log.i(TAG, "Public Key:" + 
cert.getPublicKey());
                                        Log.i(TAG, "Serial Number:" + 
cert.getSerialNumber());
                                        Log.i(TAG, "Signature:" + 
cert.getSignature());
                                        
                                        String message = "Check Logcat For 
Certificate Details";
                                        Toast.makeText(ctx, message, 
Toast.LENGTH_SHORT).show();
                                }
                        } else if (v.getId() == R.id.cert_button) {

                                // String filename = "sdcard/test_b64.cer";

                                in = new FileInputStream(CER);
                                BufferedInputStream bf = new 
BufferedInputStream(in);

                                CertificateFactory cf = 
CertificateFactory.getInstance("X.509");
                                
                                cert = (X509Certificate) 
cf.generateCertificate(bf);
                                
                                while (bf.available() > 0) {
                                        
                                        Log.i(TAG, "Type:" + cert.getType());
                                        Log.i(TAG, "Key Algorithm:"
                                                        + 
cert.getPublicKey().getAlgorithm());
                                        Log.i(TAG, "Version:" + 
cert.getVersion());
                                        Log.i(TAG, "Issuer DN:" + 
cert.getIssuerDN());
                                        Log.i(TAG, "Subject:" + 
cert.getSubjectDN());
                                        Log.i(TAG, "Valid From:" + 
cert.getNotBefore());
                                        Log.i(TAG, "Valid Till:" + 
cert.getNotAfter());
                                        Log.i(TAG, "Public Key:" + 
cert.getPublicKey());
                                        Log.i(TAG, "Serial Number:" + 
cert.getSerialNumber());
                                        Log.i(TAG, "Signature:" + 
cert.getSignature());
                                        // Log.i(TAG, "certificate details:" + 
cert);

                                }
                                in.close();
                                String message = "Check Logcat For Certificate 
Details";
                                Toast.makeText(ctx, message, 
Toast.LENGTH_SHORT).show();
                        }

                } catch (KeyStoreException e) {
                        Log.i(TAG, " KeyStoreException " + e.getMessage());
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        Log.i(TAG, " Exception: " + e.getMessage());
                }
                
                 
                
        }
}
{code}


  was:
I am trying to parse a certificate(.pfx).But I am getting following exception 
while parsing the certificate.

CertificateException:org.apache.harmony.security.asn1.ASN1Exception: DER:
only definite length encoding MUST be user.

package com.ams;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Enumeration;

import javax.security.cert.Certificate;

import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class CertificateComponent   {
        private static final String TAG = "CertificateParser";
        public static final String PFX = "sdcard/AC350.pfx";
        public static final String CER = "sdcard/test.cer";
        X509Certificate cert;
        FileInputStream in;
        Context ctx; 
        private Button Pkcs12Button;
        private Button CertButton;

        public void click(View v) {
                try {
                        if (v.getId() == R.id.pkcs12_button) {
                                String password = "TZ96dtbx";
                                KeyStore ks = KeyStore.getInstance("PKCS12");

                                 in= new FileInputStream(PFX);
                                // byte[] p12 = readFile(PFX);
                                 in.close();
                                ks.load(in, password.toCharArray());
                                Enumeration<String> aliasesEnum = ks.aliases();
                                // Log.i(TAG, "certificate details:" + 
aliasesEnum);
                                
                                String alias = (String) 
aliasesEnum.nextElement();
                                // System.out.println("Alias: " + alias);

                                cert = (X509Certificate) 
ks.getCertificate(alias);
                                
                                while (aliasesEnum.hasMoreElements()) {
                                        
                                        Log.i(TAG, "Type:" + cert.getType());
                                        Log.i(TAG, "Key Algorithm:"
                                                        + 
cert.getPublicKey().getAlgorithm());
                                        Log.i(TAG, "Version:" + 
cert.getVersion());
                                        Log.i(TAG, "Issuer DN:" + 
cert.getIssuerDN());
                                        Log.i(TAG, "Subject:" + 
cert.getSubjectDN());
                                        Log.i(TAG, "Valid From:" + 
cert.getNotBefore());
                                        Log.i(TAG, "Valid Till:" + 
cert.getNotAfter());
                                        Log.i(TAG, "Public Key:" + 
cert.getPublicKey());
                                        Log.i(TAG, "Serial Number:" + 
cert.getSerialNumber());
                                        Log.i(TAG, "Signature:" + 
cert.getSignature());
                                        
                                        String message = "Check Logcat For 
Certificate Details";
                                        Toast.makeText(ctx, message, 
Toast.LENGTH_SHORT).show();
                                }
                        } else if (v.getId() == R.id.cert_button) {

                                // String filename = "sdcard/test_b64.cer";

                                in = new FileInputStream(CER);
                                BufferedInputStream bf = new 
BufferedInputStream(in);

                                CertificateFactory cf = 
CertificateFactory.getInstance("X.509");
                                
                                cert = (X509Certificate) 
cf.generateCertificate(bf);
                                
                                while (bf.available() > 0) {
                                        
                                        Log.i(TAG, "Type:" + cert.getType());
                                        Log.i(TAG, "Key Algorithm:"
                                                        + 
cert.getPublicKey().getAlgorithm());
                                        Log.i(TAG, "Version:" + 
cert.getVersion());
                                        Log.i(TAG, "Issuer DN:" + 
cert.getIssuerDN());
                                        Log.i(TAG, "Subject:" + 
cert.getSubjectDN());
                                        Log.i(TAG, "Valid From:" + 
cert.getNotBefore());
                                        Log.i(TAG, "Valid Till:" + 
cert.getNotAfter());
                                        Log.i(TAG, "Public Key:" + 
cert.getPublicKey());
                                        Log.i(TAG, "Serial Number:" + 
cert.getSerialNumber());
                                        Log.i(TAG, "Signature:" + 
cert.getSignature());
                                        // Log.i(TAG, "certificate details:" + 
cert);

                                }
                                in.close();
                                String message = "Check Logcat For Certificate 
Details";
                                Toast.makeText(ctx, message, 
Toast.LENGTH_SHORT).show();
                        }

                } catch (KeyStoreException e) {
                        Log.i(TAG, " KeyStoreException " + e.getMessage());
                } catch (Exception e) {
                        // TODO Auto-generated catch block
                        Log.i(TAG, " Exception: " + e.getMessage());
                }
                
                 
                
        }
}



    
> Null Pointer Exception
> ----------------------
>
>                 Key: CODEC-135
>                 URL: https://issues.apache.org/jira/browse/CODEC-135
>             Project: Commons Codec
>          Issue Type: Bug
>    Affects Versions: 1.5
>         Environment: Android Application Development
>            Reporter: john 
>   Original Estimate: 12h
>  Remaining Estimate: 12h
>
> I am trying to parse a certificate(.pfx).But I am getting following exception 
> while parsing the certificate.
> CertificateException:org.apache.harmony.security.asn1.ASN1Exception: DER:
> only definite length encoding MUST be user.
> {code}
> package com.ams;
> import java.io.BufferedInputStream;
> import java.io.FileInputStream;
> import java.security.KeyStore;
> import java.security.KeyStoreException;
> import java.security.cert.CertificateFactory;
> import java.security.cert.X509Certificate;
> import java.util.Enumeration;
> import javax.security.cert.Certificate;
> import android.content.Context;
> import android.util.Log;
> import android.view.View;
> import android.view.View.OnClickListener;
> import android.widget.Button;
> import android.widget.Toast;
> public class CertificateComponent   {
>       private static final String TAG = "CertificateParser";
>       public static final String PFX = "sdcard/AC350.pfx";
>       public static final String CER = "sdcard/test.cer";
>       X509Certificate cert;
>       FileInputStream in;
>       Context ctx; 
>       private Button Pkcs12Button;
>       private Button CertButton;
>       public void click(View v) {
>               try {
>                       if (v.getId() == R.id.pkcs12_button) {
>                               String password = "TZ96dtbx";
>                               KeyStore ks = KeyStore.getInstance("PKCS12");
>                                in= new FileInputStream(PFX);
>                               // byte[] p12 = readFile(PFX);
>                                in.close();
>                               ks.load(in, password.toCharArray());
>                               Enumeration<String> aliasesEnum = ks.aliases();
>                               // Log.i(TAG, "certificate details:" + 
> aliasesEnum);
>                               
>                               String alias = (String) 
> aliasesEnum.nextElement();
>                               // System.out.println("Alias: " + alias);
>                               cert = (X509Certificate) 
> ks.getCertificate(alias);
>                               
>                               while (aliasesEnum.hasMoreElements()) {
>                                       
>                                       Log.i(TAG, "Type:" + cert.getType());
>                                       Log.i(TAG, "Key Algorithm:"
>                                                       + 
> cert.getPublicKey().getAlgorithm());
>                                       Log.i(TAG, "Version:" + 
> cert.getVersion());
>                                       Log.i(TAG, "Issuer DN:" + 
> cert.getIssuerDN());
>                                       Log.i(TAG, "Subject:" + 
> cert.getSubjectDN());
>                                       Log.i(TAG, "Valid From:" + 
> cert.getNotBefore());
>                                       Log.i(TAG, "Valid Till:" + 
> cert.getNotAfter());
>                                       Log.i(TAG, "Public Key:" + 
> cert.getPublicKey());
>                                       Log.i(TAG, "Serial Number:" + 
> cert.getSerialNumber());
>                                       Log.i(TAG, "Signature:" + 
> cert.getSignature());
>                                       
>                                       String message = "Check Logcat For 
> Certificate Details";
>                                       Toast.makeText(ctx, message, 
> Toast.LENGTH_SHORT).show();
>                               }
>                       } else if (v.getId() == R.id.cert_button) {
>                               // String filename = "sdcard/test_b64.cer";
>                               in = new FileInputStream(CER);
>                               BufferedInputStream bf = new 
> BufferedInputStream(in);
>                               CertificateFactory cf = 
> CertificateFactory.getInstance("X.509");
>                               
>                               cert = (X509Certificate) 
> cf.generateCertificate(bf);
>                               
>                               while (bf.available() > 0) {
>                                       
>                                       Log.i(TAG, "Type:" + cert.getType());
>                                       Log.i(TAG, "Key Algorithm:"
>                                                       + 
> cert.getPublicKey().getAlgorithm());
>                                       Log.i(TAG, "Version:" + 
> cert.getVersion());
>                                       Log.i(TAG, "Issuer DN:" + 
> cert.getIssuerDN());
>                                       Log.i(TAG, "Subject:" + 
> cert.getSubjectDN());
>                                       Log.i(TAG, "Valid From:" + 
> cert.getNotBefore());
>                                       Log.i(TAG, "Valid Till:" + 
> cert.getNotAfter());
>                                       Log.i(TAG, "Public Key:" + 
> cert.getPublicKey());
>                                       Log.i(TAG, "Serial Number:" + 
> cert.getSerialNumber());
>                                       Log.i(TAG, "Signature:" + 
> cert.getSignature());
>                                       // Log.i(TAG, "certificate details:" + 
> cert);
>                               }
>                               in.close();
>                               String message = "Check Logcat For Certificate 
> Details";
>                               Toast.makeText(ctx, message, 
> Toast.LENGTH_SHORT).show();
>                       }
>               } catch (KeyStoreException e) {
>                       Log.i(TAG, " KeyStoreException " + e.getMessage());
>               } catch (Exception e) {
>                       // TODO Auto-generated catch block
>                       Log.i(TAG, " Exception: " + e.getMessage());
>               }
>               
>                
>               
>       }
> }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to