Package org.gudy.azureus2.pluginsimpl.local.utils.security

Source Code of org.gudy.azureus2.pluginsimpl.local.utils.security.SESecurityManagerImpl

/*
* Created on 17-Jun-2004
* Created by Paul Gardner
* Copyright (C) 2004, 2005, 2006 Aelitis, All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*
* AELITIS, SAS au capital de 46,603.30 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*
*/

package org.gudy.azureus2.pluginsimpl.local.utils.security;

import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.Map;

import javax.net.ssl.SSLSocketFactory;

import org.gudy.azureus2.core3.util.SHA1Hasher;

/**
* @author parg
*
*/

import org.gudy.azureus2.core3.security.*;
import org.gudy.azureus2.plugins.messaging.generic.GenericMessageConnection;
import org.gudy.azureus2.plugins.utils.security.CertificateListener;
import org.gudy.azureus2.plugins.utils.security.PasswordListener;
import org.gudy.azureus2.plugins.utils.security.SEPublicKey;
import org.gudy.azureus2.plugins.utils.security.SEPublicKeyLocator;
import org.gudy.azureus2.pluginsimpl.local.messaging.GenericMessageConnectionImpl;

import com.aelitis.azureus.core.AzureusCore;


public class
SESecurityManagerImpl
  implements org.gudy.azureus2.plugins.utils.security.SESecurityManager
{
  private AzureusCore  core;
 
  private Map  password_listeners    = new HashMap();
  private Map  certificate_listeners  = new HashMap();
 
  public
  SESecurityManagerImpl(
    AzureusCore    _core )
  {
    core  = _core;
  }
 
  public byte[]
  calculateSHA1(
    byte[]    data_in )
  {
    if (data_in == null ){
     
      data_in = new byte[0];
    }
   
        SHA1Hasher hasher = new SHA1Hasher();
       
        return( hasher.calculateHash(data_in))
  }
 
  public void
  runWithAuthenticator(
    Authenticator  authenticator,
    Runnable    target )
  {
    try{
      Authenticator.setDefault( authenticator );
     
      target.run();
     
    }finally{
     
      SESecurityManager.installAuthenticator();
    }
  }
 
  public void
  addPasswordListener(
    final PasswordListener  listener )
  {
    SEPasswordListener  sepl =
      new SEPasswordListener()
      {
        public PasswordAuthentication
        getAuthentication(
          String    realm,
          URL      tracker )
        {
          return( listener.getAuthentication( realm, tracker ));
        }
       
        public void
        setAuthenticationOutcome(
          String    realm,
          URL      tracker,
          boolean    success )
        {
          listener.setAuthenticationOutcome( realm, tracker, success );
        }
       
        public void
        clearPasswords()
        {
        }
      };
     
    password_listeners.put( listener, sepl );
   
    SESecurityManager.addPasswordListener( sepl );
  }
   
  public void
  removePasswordListener(
    PasswordListener  listener )
  {
    SEPasswordListener  sepl = (SEPasswordListener)password_listeners.get( listener );
   
    if ( sepl != null ){
     
      SESecurityManager.removePasswordListener( sepl );
    }
  }
 
  public void
  addCertificateListener(
    final CertificateListener  listener )
  {
    SECertificateListener  sepl =
      new SECertificateListener()
      {
      public boolean
      trustCertificate(
        String      resource,
        X509Certificate  cert )
      {
        return( listener.trustCertificate( resource, cert ));
      }
      };
     
    certificate_listeners.put( listener, sepl );
   
    SESecurityManager.addCertificateListener( sepl );
  }
   
  public void
  removeCertificateListener(
      CertificateListener  listener )
  {
    SECertificateListener  sepl = (SECertificateListener)certificate_listeners.get( listener );
   
    if ( sepl != null ){
     
      SESecurityManager.removeCertificateListener( sepl );
    }
  }
 
  public SSLSocketFactory
  installServerCertificate(
    URL    url )
  {
    return( SESecurityManager.installServerCertificates( url ));
  }
 
  public KeyStore
  getKeyStore()
 
    throws Exception
  {
    return( SESecurityManager.getKeyStore());
  }
 
  public KeyStore
  getTrustStore()
 
    throws Exception
  {
    return( SESecurityManager.getTrustStore());
  }
 
 
  public Certificate
  createSelfSignedCertificate(
    String    alias,
    String    cert_dn,
    int      strength )
 
    throws Exception
  {
    return( SESecurityManager.createSelfSignedCertificate(alias, cert_dn, strength ));   
  }
 
  public byte[]
  getIdentity()
  {
    return( core.getCryptoManager().getSecureID());
  }
 
  public SEPublicKey
  getPublicKey(
    int    key_type,
    String  reason_resource )
 
    throws Exception
  {
    byte[]  encoded = core.getCryptoManager().getECCHandler().getPublicKey( reason_resource );
    
    return( new SEPublicKeyImpl( key_type, encoded ));
  }
 
  public SEPublicKey
  decodePublicKey(
    byte[]  encoded )
  {
    return( SEPublicKeyImpl.decode( encoded ));
  }
 
  public GenericMessageConnection
  getSTSConnection(
    GenericMessageConnection  connection,
    SEPublicKey          my_public_key,
    SEPublicKeyLocator      key_locator,
    String            reason_resource,
    int              block_crypto )
 
    throws Exception
  {
    return( new SESTSConnectionImpl( core, (GenericMessageConnectionImpl)connection, my_public_key, key_locator, reason_resource, block_crypto ));
  }
}
TOP

Related Classes of org.gudy.azureus2.pluginsimpl.local.utils.security.SESecurityManagerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.