--- a/browserui/browser/BrowserAppSrc/SessionAndSecurity.cpp Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,496 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-* Implementation of CSessionAndSecurity
-*
-*
-*/
-
-
-// INCLUDE FILES
-
-#include "Browser.hrh"
-#include <es_sock.h>
-#include "SessionAndSecurity.h"
-#include <mconnection.h>
-#include <BrowserNG.rsg>
-#include <AknQueryDialog.h>
-#include <AknMessageQueryDialog.h>
-#include <StringLoader.h>
-#include <FeatMgr.h>
-
-#include "BrowserUtil.h"
-#include "ApiProvider.h"
-#include <ssl.h> // for TCertInfo
-#include <brctlinterface.h>
-
-// CONSTANTS
-const TInt KWmlSessionInfoMaxLength = 1000;
-const TInt KWmlSecurityInfoMaxLength = 1000;
-const TInt KMaxLengthTextDateString = 16;
-_LIT( KWmlConnSpeed9600, "9600" );
-_LIT( KWmlConnSpeed14400, "14400" );
-_LIT( KWmlConnSpeed19200, "19200" );
-_LIT( KWmlConnSpeed28800, "28800" );
-_LIT( KWmlConnSpeed38400, "38400" );
-_LIT( KWmlConnSpeed43200, "43200" );
-_LIT( KWmlNewLine, "\n" );
-_LIT( KWmlSeparatorComma, "," );
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ----------------------------------------------------
-// CSessionAndSecurity::CSessionAndSecurity
-// ----------------------------------------------------
-//
-CSessionAndSecurity::CSessionAndSecurity(MApiProvider& aApiProvider)
-: iApiProvider(aApiProvider)
- {
- }
-
-//-----------------------------------------------------------------------------
-// CSessionAndSecurity::NewL
-//-----------------------------------------------------------------------------
-//
-CSessionAndSecurity* CSessionAndSecurity::NewL(MApiProvider& aApiProvider)
- {
- CSessionAndSecurity* self = CSessionAndSecurity::NewLC(aApiProvider);
- CleanupStack::Pop();
- return self;
- }
-
-//-----------------------------------------------------------------------------
-// CSessionAndSecurity::NewLC
-//-----------------------------------------------------------------------------
-//
-CSessionAndSecurity* CSessionAndSecurity::NewLC(MApiProvider& aApiProvider)
- {
- CSessionAndSecurity* self = new(ELeave) CSessionAndSecurity(aApiProvider);
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-//-----------------------------------------------------------------------------
-// CSessionAndSecurity::~CSessionAndSecurity
-//-----------------------------------------------------------------------------
-//
-CSessionAndSecurity::~CSessionAndSecurity()
- {
- }
-
-// ----------------------------------------------------
-// CSessionAndSecurity::ConstructL
-// ----------------------------------------------------
-//
-void CSessionAndSecurity::ConstructL()
- {
- }
-
-// ----------------------------------------------------
-// CSessionAndSecurity::ShowPageInfoL
-// ----------------------------------------------------
-//
-void CSessionAndSecurity::ShowPageInfoL()
- {
- HBufC* messagebody = NULL;
- HBufC* header = StringLoader::LoadLC( R_BROWSER_QUERY_CURRENT_PAGE );
- HBufC* urltxt = StringLoader::LoadLC( R_BROWSER_QUERY_CURRENT_PAGE_URL );
- HBufC* currentUrl = ApiProvider().BrCtlInterface().
- PageInfoLC( TBrCtlDefs::EPageInfoUrl );
- if( currentUrl == NULL )
- {
- CleanupStack::PopAndDestroy( currentUrl );
- currentUrl = KNullDesC().AllocLC();
- }
- TInt length = currentUrl->Length();
- messagebody = HBufC::NewLC( length + urltxt->Length()+2 + KWmlSecurityInfoMaxLength);
- messagebody->Des().Append( *urltxt );
- messagebody->Des().Append( KWmlNewLine() );
- messagebody->Des().Append( *currentUrl );
-
-
- // append security info
- const TCertInfo* certInfo = ApiProvider().BrCtlInterface().CertInfo();
- HBufC* message = HBufC::NewLC( KWmlSecurityInfoMaxLength );
- HttpSecurityInfoL( certInfo, *message);
- messagebody->Des().Append( KWmlNewLine() );
- messagebody->Des().Append( KWmlNewLine() );
- messagebody->Des().Append( *message );
-
-
- // output page and security info to dialog
- CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *messagebody );
- dlg->PrepareLC( R_BROWSER_PAGE_INFO );
- CAknPopupHeadingPane* hPane = dlg->QueryHeading();
- if ( hPane )
- {
- hPane->SetTextL( *header );
- }
- dlg->RunLD();
- CleanupStack::PopAndDestroy( 5 ); // header, urltxt, currentUrl, messagebody, message
- }
-
-// ----------------------------------------------------
-// CSessionAndSecurity::ShowSessionInfoL
-// ----------------------------------------------------
-//
-void CSessionAndSecurity::ShowSessionInfoL()
- {
- HBufC* header = StringLoader::LoadLC( R_WML_SESSION_VIEW_TITLE );
- HBufC* message = HBufC::NewLC( KWmlSessionInfoMaxLength );
-
- HBufC* value = StringLoader::LoadLC( R_WML_SESSION_VIEW_AP );
- message->Des().Append( *value );
- message->Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); // value
-
- value = ApiProvider().Connection().CurrentApNameLC();
- message->Des().Append( value->Des() );
- message->Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); // value
-
- //
- // Bearer type
- //
- value = StringLoader::LoadLC( R_WML_SESSION_VIEW_BT );
- message->Des().Append( *value );
- message->Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); // value
-
- TApBearerType bt = ApiProvider().Connection().CurrentBearerTypeL();
- switch ( bt )
- {
- case EApBearerTypeCSD:
- {
- value = StringLoader::LoadLC( R_WML_BEARER_DATA_CALL );
- break;
- }
- case EApBearerTypeGPRS:
- {
- value = StringLoader::LoadLC( R_WML_BEARER_PACKET_DATA );
- break;
- }
- case EApBearerTypeHSCSD:
- {
- value = StringLoader::LoadLC( R_WML_BEARER_HSCSD );
- break;
- }
- default:
- value = HBufC::NewLC( 1 );
- break;
- }
-
- message->Des().Append( value->Des() );
- message->Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); // value
-
- //
- // Max conn. speed
- //
- value = StringLoader::LoadLC( R_WML_SESSION_VIEW_CS );
- message->Des().Append( *value );
- message->Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); // value
- TApCallSpeed speed = ApiProvider().Connection().CurrentConnectionSpeed();
- value = HBufC::NewLC( sizeof( KWmlConnSpeed43200 ) );
- switch ( speed )
- {
- case KSpeed9600:
- {
- *value = KWmlConnSpeed9600();
- break;
- }
- case KSpeed14400:
- {
- *value = KWmlConnSpeed14400();
- break;
- }
- case KSpeed19200:
- {
- *value = KWmlConnSpeed19200();
- break;
- }
- case KSpeed28800:
- {
- *value = KWmlConnSpeed28800();
- break;
- }
- case KSpeed38400:
- {
- *value = KWmlConnSpeed38400();
- break;
- }
- case KSpeed43200:
- {
- *value = KWmlConnSpeed43200();
- break;
- }
- case KSpeedAutobaud: // default value
- default:
- {
- CleanupStack::PopAndDestroy(); // value
- value = StringLoader::LoadLC( R_WML_CONN_SPEED_AD );
- break;
- }
- }
-
- message->Des().Append( value->Des() );
- message->Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); // value
-
- CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *message );
- dlg->PrepareLC( R_BROWSER_SESSION_INFO );
- CAknPopupHeadingPane* hPane = dlg->QueryHeading();
- if ( hPane )
- {
- hPane->SetTextL( *header );
- }
- dlg->RunLD();
- CleanupStack::PopAndDestroy( 2 ); // header, message
- }
-
-// ----------------------------------------------------------------------------
-// CSessionAndSecurity::HttpSecurityInfoL
-// ----------------------------------------------------------------------------
-//
-void CSessionAndSecurity::HttpSecurityInfoL( const TCertInfo* aCertInfo,
- HBufC& aMessage )
- {
- HBufC* value;
- HBufC* prompt;
-
- if ( !aCertInfo )
- {
- // Connection: Unsecure
- value = StringLoader::LoadLC( R_WML_SECURITY_CONN_UNSECURE );
- prompt = StringLoader::LoadLC( R_WML_SECURITY_CONN_TYPE, *value );
- aMessage.Des().Append( *prompt );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(2); // value, prompt
- }
- else
- {
- // Connection: Secure
- value = StringLoader::LoadLC( R_WML_SECURITY_CONN_SECURE );
- prompt = StringLoader::LoadLC( R_WML_SECURITY_CONN_TYPE, *value );
- aMessage.Des().Append( *prompt );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(2); // value, prompt
-
- HBufC* buf2 = HBufC::NewMaxLC(256);
-
- // Server authentication
- value = StringLoader::LoadLC( R_WML_SECURITY_SERVER_AUT, KNullDesC );
- aMessage.Des().Append( *value );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); //value
-
- // Subject
- FillDNinfoL( aCertInfo->iSubjectDNInfo, buf2 );
- value = StringLoader::LoadLC( R_WML_SECURITY_CERT_OWNER, buf2->Des() );
- aMessage.Des().Append( *value );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(2); //value, buf2
-
- //Issuer
- buf2 = HBufC::NewMaxLC(256);
- FillDNinfoL( aCertInfo->iIssuerDNInfo, buf2 );
- value = StringLoader::LoadLC( R_WML_SECURITY_INFO_ISSUER, buf2->Des() );
- aMessage.Des().Append( *value );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(2); //value, buf2
-
- // Valid from
- TBuf< KMaxLengthTextDateString > validFromString;
- HBufC* dateFormatString = StringLoader::LoadLC( R_QTN_DATE_USUAL_WITH_ZERO );
- aCertInfo->iStartValDate.FormatL( validFromString, *dateFormatString );
- CleanupStack::PopAndDestroy(); //dateFormatString
- value = StringLoader::LoadLC( R_WML_SECURITY_VALID_FROM, validFromString );
- aMessage.Des().Append( *value );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); //value
-
- // Valid to
- dateFormatString = StringLoader::LoadLC( R_QTN_DATE_USUAL_WITH_ZERO );
- aCertInfo->iEndValDate.FormatL( validFromString, *dateFormatString );
- CleanupStack::PopAndDestroy(); //dateFormatString
- value = StringLoader::LoadLC( R_WML_SECURITY_VALID_TO, validFromString );
- aMessage.Des().Append( *value );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy(); //value
-
- // hex formatting
- TBuf<2> buf;
- _LIT( KHexFormat, "%02X");
-
- // Serial number
- HBufC* buffer = HBufC::NewLC( aCertInfo->iSerialNo.Length()*2 );
- for (TInt i = 0; i < aCertInfo->iSerialNo.Length(); i++)
- {
- buf.Format( KHexFormat, aCertInfo->iSerialNo[i] );
- buffer->Des().Append( buf );
- }
- value = StringLoader::LoadLC( R_WML_SECURITY_SERIALNO, *buffer );
- aMessage.Des().Append( *value );
- aMessage.Des().Append( TChar( '\n' ) );
- aMessage.Des().Append( TChar( '\n' ) );
- CleanupStack::PopAndDestroy( 2 ); // value, buffer
-
- // Fingerprint
- {
- TInt emptyChars = aCertInfo->iFingerprint.Length()/2;
- emptyChars++;
- HBufC* buffer = HBufC::NewLC( aCertInfo->iFingerprint.Length()*2 + emptyChars );
- TInt ind = 1;
- for (TInt i = 0; i < aCertInfo->iFingerprint.Length(); i++)
- {
- buf.Format( KHexFormat, aCertInfo->iFingerprint[i] );
- buffer->Des().Append( buf );
- if ( ind == 2 )
- {
- buffer->Des().Append( TChar( ' ' ) );
- ind = 0;
- }
- ind++;
- }
- value = StringLoader::LoadLC( R_WML_SECURITY_FINGERPRINT, *buffer );
- aMessage.Des().Append( *value );
- CleanupStack::PopAndDestroy( 2 ); // value, buffer
- }
- }
-
- }
-
-// ----------------------------------------------------
-// CSessionAndSecurity::ConvertTDesC8ToHBufC16LC
-// ----------------------------------------------------
-//
-void CSessionAndSecurity::ConvertTDesC8ToHBufC16LC( TDesC8& aSource,
- HBufC16*& aDestination)
- {
- const TInt length = aSource.Length(); // length of name
- TPtrC8 ptr ( aSource.Ptr(), aSource.Length() );
- aDestination = HBufC::NewLC( length );
- aDestination->Des().Copy( ptr );
- }
-
-// ----------------------------------------------------
-// CSessionAndSecurity::FillDNinfoL
-// ----------------------------------------------------
-//
-void CSessionAndSecurity::FillDNinfoL( TDNInfo aDNInfo, HBufC* aBuf )
- {
- HBufC16* buf2 = NULL;
- TInt num = 0;
- if ( aDNInfo.iCommonName.Length() )
- {
- aBuf->Des().Copy( aDNInfo.iCommonName );
- num++;
- }
- if ( aDNInfo.iOrganization.Length() )
- {
- if ( !num )
- {
- aBuf->Des().Copy( aDNInfo.iOrganization );
- }
- else
- {
- aBuf->Des().Append( KWmlSeparatorComma() );
- ConvertTDesC8ToHBufC16LC( aDNInfo.iOrganization, buf2 );
- aBuf->Des().Append( buf2->Ptr(),aDNInfo.iOrganization.Length() );
- CleanupStack::PopAndDestroy(); //buf2
- }
- num++;
- }
- if ( aDNInfo.iOrganizationUnit.Length() && num < 2 )
- {
- if ( !num )
- {
- aBuf->Des().Copy( aDNInfo.iOrganizationUnit );
- }
- else
- {
- aBuf->Des().Append( KWmlSeparatorComma() );
- ConvertTDesC8ToHBufC16LC( aDNInfo.iOrganizationUnit, buf2 );
- aBuf->Des().Append( buf2->Ptr(),aDNInfo.iOrganizationUnit.Length() );
- CleanupStack::PopAndDestroy(); //buf2
- }
- num++;
- }
- if ( aDNInfo.iLocality.Length() && num < 2 )
- {
- if ( !num )
- {
- aBuf->Des().Copy( aDNInfo.iLocality );
- }
- else
- {
- aBuf->Des().Append( KWmlSeparatorComma() );
- ConvertTDesC8ToHBufC16LC( aDNInfo.iLocality, buf2 );
- aBuf->Des().Append( buf2->Ptr(),aDNInfo.iLocality.Length() );
- CleanupStack::PopAndDestroy(); //buf2
- }
- num++;
- }
- if ( aDNInfo.iCountry.Length() && num < 2 )
- {
- if ( !num )
- {
- aBuf->Des().Copy( aDNInfo.iCountry );
- }
- else
- {
- aBuf->Des().Append( KWmlSeparatorComma() );
- ConvertTDesC8ToHBufC16LC( aDNInfo.iCountry, buf2 );
- aBuf->Des().Append( buf2->Ptr(),aDNInfo.iCountry.Length() );
- CleanupStack::PopAndDestroy(); //buf2
- }
- }
- }
-
-// ----------------------------------------------------
-// CSessionAndSecurity::ShowSecurityInfoL
-// ----------------------------------------------------
-//
-void CSessionAndSecurity::ShowSecurityInfoL()
- {
- const TCertInfo* certInfo = ApiProvider().BrCtlInterface().CertInfo();
-
- HBufC* header;
- HBufC* message = HBufC::NewLC( KWmlSecurityInfoMaxLength );
-
- header = StringLoader::LoadLC( R_WML_SECURITY_VIEW_TITLE );
- HttpSecurityInfoL( certInfo, *message);
-
- CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *message );
-
- dlg->PrepareLC( R_BROWSER_SECURITY_INFO );
- CAknPopupHeadingPane* hPane = dlg->QueryHeading();
- if ( hPane )
- {
- hPane->SetTextL( *header );
- }
-
- dlg->RunLD();
- CleanupStack::PopAndDestroy( 2 ); // header, message,
- }
-
-// End of File