13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Copyright (C) 2014 The Android Open Source Project
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * you may not use this file except in compliance with the License.
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * You may obtain a copy of the License at
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby *
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * Unless required by applicable law or agreed to in writing, software
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * See the License for the specific language governing permissions and
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby * limitations under the License.
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby */
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_NO_SESSION_DLL
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*==================================================================================================
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Source Name: dmSessionAPI.cc
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    General Description: Implementation of External interfaces to Server Session.
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby==================================================================================================*/
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "dmSessionFactory.h"
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_dm_Manager.h"
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Lib.h"
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#include "xpl_Logger.h"
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __cplusplus
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyextern "C" {
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmProcessServerData(CPCHAR szPrincipal,
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                 const DmtSessionProp&  session)
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status;
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_NO_SESSION_LIB
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    const char * lib_name = XPL_DM_GetEnv(SYNCML_DM_SESSION_LIB);
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* Loads dynamic library */
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T lib_handle = XPL_DL_Load(lib_name);
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( lib_handle == NULL )
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T pFunc = XPL_DL_GetFunction(lib_handle, "DmProcessServerDataInternal");
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFunc == NULL )
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       XPL_DL_Unload(lib_handle);
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       return SYNCML_DM_FAIL;
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = ((SYNCML_DM_RET_STATUS_T (*)(CPCHAR ,const DmtSessionProp&))(pFunc))(szPrincipal,session);
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_Unload(lib_handle);
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#else
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = DmProcessServerDataInternal(szPrincipal,session);
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_LOG_DM_SESS_Debug(("Returning from DmProcessServerDataInternal status=%d\n", ret_status));
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ret_status;
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmProcessScriptData(const UINT8 * docInputBuffer,
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                 UINT32 inDocSize,
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                 BOOLEAN isWBXML,
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                 DMBuffer & oResult)
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status;
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_NO_SESSION_LIB
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    const char * lib_name = XPL_DM_GetEnv(SYNCML_DM_SESSION_LIB);
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    /* Loads dynamic library */
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T lib_handle = XPL_DL_Load(lib_name);
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( lib_handle == NULL )
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T pFunc = XPL_DL_GetFunction(lib_handle, "DmProcessScriptDataInternal");
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFunc == NULL )
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       XPL_DL_Unload(lib_handle);
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       return SYNCML_DM_FAIL;
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = ((SYNCML_DM_RET_STATUS_T (*)(const UINT8 * , UINT32, BOOLEAN, DMBuffer &))(pFunc))
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                    (docInputBuffer,inDocSize,isWBXML,oResult);
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_Unload(lib_handle);
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#else
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = DmProcessScriptDataInternal(docInputBuffer,inDocSize,isWBXML,oResult);
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ret_status;
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmBootstrap(const UINT8 * docInputBuffer,
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                    UINT32 inDocSize,
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                    BOOLEAN isWBXML,
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                    BOOLEAN isProcess,
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                    DMString & serverID)
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status;
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_NO_SESSION_LIB
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    const char * lib_name = XPL_DM_GetEnv(SYNCML_DM_SESSION_LIB);
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T lib_handle = XPL_DL_Load(lib_name);
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( lib_handle == NULL )
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T pFunc = XPL_DL_GetFunction(lib_handle, "DmBootstrapInternal");
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFunc == NULL )
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       XPL_DL_Unload(lib_handle);
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby       return SYNCML_DM_FAIL;
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = ((SYNCML_DM_RET_STATUS_T (*)(const UINT8 * , UINT32, BOOLEAN, BOOLEAN, DMString &))(pFunc))
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                    (docInputBuffer,inDocSize,isWBXML,isProcess, serverID);
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_Unload(lib_handle);
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#else
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = DmBootstrapInternal(docInputBuffer,inDocSize,isWBXML,isProcess, serverID);
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ret_status;
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambySYNCML_DM_RET_STATUS_T
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake HambyDmAuthenticateServer(SYNCML_DM_AuthContext_T& AuthContext )
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby{
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    SYNCML_DM_RET_STATUS_T ret_status;
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifndef DM_NO_SESSION_LIB
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    const char * lib_name = XPL_DM_GetEnv(SYNCML_DM_SESSION_LIB);
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T lib_handle = XPL_DL_Load(lib_name);
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( lib_handle == NULL )
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_HANDLE_T pFunc = XPL_DL_GetFunction(lib_handle, "DmAuthenticateServerInternal");
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ( pFunc == NULL )
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    {
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        XPL_DL_Unload(lib_handle);
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return SYNCML_DM_FAIL;
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = ((SYNCML_DM_RET_STATUS_T (*)(SYNCML_DM_AuthContext_T& ))(pFunc))(AuthContext);
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    XPL_DL_Unload(lib_handle);
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#else
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ret_status = DmAuthenticateServerInternal(AuthContext);
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return ret_status;
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#ifdef __cplusplus
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby#endif
176