Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[geclipse-dev] Certificate class problem

Hi again every body,

I am actually building an autonomous application taking benefit of geclipse architecture that will submit jobs on computational grids.

For that I think I need to download the certificates of the authorities. I have a problem witting the code that downloads the certificates because the EUGridPMACertificate class is in the package eu.geclipse.core.internal.auth, that in internal.

The code I have written is (EFSFile is a class that simplify file usage over EFS):

           byte[] certificateData = null;
           byte[] infoData = null;

String DEFAULT_LOCATION = "http://www.eugridpma.org/distribution/igtf/current/accredited/tgz";;
           URI defaultURI;

           defaultURI = new URI( DEFAULT_LOCATION );

           EFSFile repo = new EFSFile(defaultURI);
           List< String > result = new ArrayList< String >();

InputStreamReader iReader = new InputStreamReader(repo.openInputStream());
           BufferedReader bReader = new BufferedReader( iReader );
           StringBuffer buffer = new StringBuffer();
           String line;
           while ( ( line = bReader.readLine() ) != null ) {
               buffer.append( line );
           }

String content = buffer.toString().replaceAll( " ", "" ); //$NON-NLS-1$ //$NON-NLS-2$
           int index = -1;
while ( ( index = content.indexOf( "ahref=\"", index+1 ) ) > 0 ) { //$NON-NLS-1$ int endIndex = content.indexOf( "\">", index+7 ); //$NON-NLS-1$
               if ( endIndex > 0 ) {
                   String file = content.substring( index+7, endIndex );
if ( file.toLowerCase().endsWith( ".tar.gz" ) //$NON-NLS-1$ || file.toLowerCase().endsWith( ".tgz" ) ) { //$NON-NLS-1$
                       result.add( file );
                   }
               }
               index = endIndex;
           }

           for(String certName: result) {
URI uri = new URI( defaultURI.toString() + "/" + certName ); //$NON-NLS-1$ EFSFile cert = new EFSFile(uri);

             InputStream iStream = cert.openInputStream();
BufferedInputStream bStream = new BufferedInputStream( iStream );
             GZIPInputStream zStream = new GZIPInputStream( bStream );
             TarInputStream tiStream = new TarInputStream( zStream );
             TarEntry tEntry;
             while ( ( tEntry = tiStream.getNextEntry() ) != null ) {
               if ( !tEntry.isDirectory() ) {

                 IPath oPath = tEntry.getPath();
                 String extension = oPath.getFileExtension();

if ( *PEMCertificate*.CERT_FILE_EXTENSION.equalsIgnoreCase( extension ) ) {
                   certificateData = readFromStream( tiStream );
} else if (* EUGridPMACertificate*.INFO_FILE_EXTENSION.equalsIgnoreCase( extension ) ) {
                   infoData = readFromStream( tiStream );
                 }
               }
             }
           }
           if ( ( certificateData != null ) && ( infoData != null ) ) {
result = *new EUGridPMACertificate( certificateData, infoData );*
           }

Is there a way of bypassing it?

Sorry to bother. Once, I will be finished I will publish the code as a tutorial, if you are interested.

Romain



Back to the top