omadrm/drmengine/drmserviceapi/src/drmserviceapi.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:52:27 +0200
changeset 0 95b198f216e5
child 12 8a03a285ab14
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "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 class for DrmServiceAPI.dll
*
*/



#include <drmserviceapi.h>

#include "roapstorageclient.h"
#include "drmclockclient.h"


// ======== LOCAL FUNCTIONS ========

// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// two-phase costructor
// ---------------------------------------------------------------------------
//
EXPORT_C DRM::CDrmServiceApi* DRM::CDrmServiceApi::NewL()
    {
    CDrmServiceApi* self = CDrmServiceApi::NewLC();
    CleanupStack::Pop( self );
    return self;
    }


// ---------------------------------------------------------------------------
// two-phase costructor
// ---------------------------------------------------------------------------
//
EXPORT_C DRM::CDrmServiceApi* DRM::CDrmServiceApi::NewLC()
    {
    CDrmServiceApi* self = new( ELeave ) CDrmServiceApi;
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }


// ---------------------------------------------------------------------------
// Destructor
// ---------------------------------------------------------------------------
//
DRM::CDrmServiceApi::~CDrmServiceApi()
    {
    // Clock client
    if( iClockClient )
        {
        iClockClient->Close();
        delete iClockClient;
        iClockClient = NULL;
        }
    
    // Roap storage client
    if( iRoapStorageClient )
        {
        iRoapStorageClient->Close();
        delete iRoapStorageClient;
        iRoapStorageClient = NULL;
        }
    }

// ---------------------------------------------------------------------------
// CDrmServiceApi::GetSecureTime
// ---------------------------------------------------------------------------
//
EXPORT_C TInt DRM::CDrmServiceApi::GetSecureTime( 
    TTime& aTime, 
    TInt& aTimeZone,
    DRMClock::ESecurityLevel& aSecurityLevel ) const
    {
    return iClockClient->GetSecureTime( aTime, aTimeZone, aSecurityLevel);    
    };
                        
// ---------------------------------------------------------------------------
// CDrmServiceApi::UpdateSecureTime
// ---------------------------------------------------------------------------
//
EXPORT_C TInt DRM::CDrmServiceApi::UpdateSecureTime( const TTime& aTime, const TInt& aTimeZone )
    {
    return iClockClient->UpdateSecureTime( aTime, aTimeZone );
    };


// ---------------------------------------------------------------------------
// CDrmServiceApi::GetDevicePublicKeyDerL
// ---------------------------------------------------------------------------
//
EXPORT_C void DRM::CDrmServiceApi::GetDevicePublicKeyDerL( HBufC8*& aPublicKey )
    {
    iRoapStorageClient->GetDevicePublicKeyDerL( aPublicKey );
    };

// ---------------------------------------------------------------------------
// CDrmServiceApi::SignL
// ---------------------------------------------------------------------------
//
EXPORT_C void DRM::CDrmServiceApi::SignL( const TDesC8& aHash, HBufC8*& aSignature )
    {
    iRoapStorageClient->SignL( aHash, aSignature );
    };


// ---------------------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------------------
//
DRM::CDrmServiceApi::CDrmServiceApi()
    {
    }

// ---------------------------------------------------------------------------
// 2nd phase constructor
// ---------------------------------------------------------------------------
//
void DRM::CDrmServiceApi::ConstructL()
    {
    // Create an instance of the clock client
    iClockClient = new (ELeave) RDRMClockClient;
    
    // Connect to the server
    User::LeaveIfError( iClockClient->Connect() );
    
    // Create and instance of the roap storage client
    iRoapStorageClient = new (ELeave) Roap::RRoapStorageClient;

    // Connect to the server
    User::LeaveIfError( iRoapStorageClient->Connect() );
    }