(file) Return to SecureLocalAuthenticator.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Security / Authentication

Diff for /pegasus/src/Pegasus/Security/Authentication/SecureLocalAuthenticator.cpp between version 1.12.2.1 and 1.20

version 1.12.2.1, 2007/03/23 21:53:54 version 1.20, 2013/06/05 14:09:26
Line 1 
Line 1 
 //%2006////////////////////////////////////////////////////////////////////////  //%LICENSE////////////////////////////////////////////////////////////////
 // //
 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development  // Licensed to The Open Group (TOG) under one or more contributor license
 // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.  // agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
 // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;  // this work for additional information regarding copyright ownership.
 // IBM Corp.; EMC Corporation, The Open Group.  // Each contributor licenses this file to you under the OpenPegasus Open
 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;  // Source License; you may not use this file except in compliance with the
 // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.  // License.
 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;  //
 // EMC Corporation; VERITAS Software Corporation; The Open Group.  // Permission is hereby granted, free of charge, to any person obtaining a
 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;  // copy of this software and associated documentation files (the "Software"),
 // EMC Corporation; Symantec Corporation; The Open Group.  // to deal in the Software without restriction, including without limitation
 //  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
 // Permission is hereby granted, free of charge, to any person obtaining a copy  // and/or sell copies of the Software, and to permit persons to whom the
 // of this software and associated documentation files (the "Software"), to  // Software is furnished to do so, subject to the following conditions:
 // deal in the Software without restriction, including without limitation the  //
 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or  // The above copyright notice and this permission notice shall be included
 // sell copies of the Software, and to permit persons to whom the Software is  // in all copies or substantial portions of the Software.
 // furnished to do so, subject to the following conditions:  //
 //  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT  // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR  // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT  // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION  
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  
 // //
 //==============================================================================  //////////////////////////////////////////////////////////////////////////
 // //
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
Line 35 
Line 33 
 #include <Pegasus/Common/FileSystem.h> #include <Pegasus/Common/FileSystem.h>
 #include <Pegasus/Common/Tracer.h> #include <Pegasus/Common/Tracer.h>
 #include <Pegasus/Common/Executor.h> #include <Pegasus/Common/Executor.h>
 #include <Executor/Strlcpy.h>  
  
 #include "LocalAuthFile.h" #include "LocalAuthFile.h"
 #include "SecureLocalAuthenticator.h" #include "SecureLocalAuthenticator.h"
Line 74 
Line 71 
 // //
 // Does local authentication // Does local authentication
 // //
 Boolean SecureLocalAuthenticator::authenticate(  AuthenticationStatus SecureLocalAuthenticator::authenticate(
    const String& filePath,    const String& filePath,
    const String& secretReceived,    const String& secretReceived,
    const String& secretKept,     const String& secretKept)
    SessionKey& sessionKey)  
 { {
     PEG_METHOD_ENTER(TRC_AUTHENTICATION,     PEG_METHOD_ENTER(TRC_AUTHENTICATION,
         "SecureLocalAuthenticator::authenticate()");         "SecureLocalAuthenticator::authenticate()");
  
     Boolean authenticated = false;     Boolean authenticated = false;
  
     sessionKey.clear();  
   
     // Use executor, if present.     // Use executor, if present.
  
     if (Executor::detectExecutor() == 0)     if (Executor::detectExecutor() == 0)
     {     {
         Strlcpy(          if (!String::equal(secretKept, String::EMPTY) &&
             (char*)sessionKey.data(),              String::equal(secretKept, secretReceived))
             (const char*)secretKept.getCString(),          {
             sessionKey.size());              authenticated = true;
           }
         if (Executor::authenticateLocal(          else if (Executor::authenticateLocal(
             sessionKey, (const char*)secretReceived.getCString()) == 0)              (const char*)filePath.getCString(),
               (const char*)secretReceived.getCString()) == 0)
         {         {
             authenticated = true;             authenticated = true;
         }         }
Line 106 
Line 101 
     {     {
         // Check secret.         // Check secret.
  
         if ((!String::equal(secretReceived, String::EMPTY)) &&          if (!String::equal(secretKept, String::EMPTY) &&
             (!String::equal(secretKept, String::EMPTY)))              String::equal(secretKept, secretReceived))
         {  
             if (String::equal(secretKept, secretReceived))  
             {             {
                 authenticated = true;                 authenticated = true;
             }             }
         }  
  
         // Remove the auth file created for this user request         // Remove the auth file created for this user request
  
Line 128 
Line 120 
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
  
     return authenticated;      return AuthenticationStatus(authenticated);
 } }
  
 Boolean SecureLocalAuthenticator::validateUser (const String& userName)  AuthenticationStatus SecureLocalAuthenticator::validateUser(
       const String& userName,
       AuthenticationInfo* authInfo)
 { {
     PEG_METHOD_ENTER(TRC_AUTHENTICATION,     PEG_METHOD_ENTER(TRC_AUTHENTICATION,
         "SecureLocalAuthenticator::validateUser()");         "SecureLocalAuthenticator::validateUser()");
Line 144 
Line 138 
     }     }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
     return (authenticated);      return AuthenticationStatus(authenticated);
 } }
  
 // //
Line 153 
Line 147 
 String SecureLocalAuthenticator::getAuthResponseHeader( String SecureLocalAuthenticator::getAuthResponseHeader(
     const String& authType,     const String& authType,
     const String& userName,     const String& userName,
       String& filePath,
     String& secret)     String& secret)
 { {
     PEG_METHOD_ENTER(TRC_AUTHENTICATION,     PEG_METHOD_ENTER(TRC_AUTHENTICATION,
Line 166 
Line 161 
  
     if (Executor::detectExecutor() == 0)     if (Executor::detectExecutor() == 0)
     {     {
         char path[EXECUTOR_BUFFER_SIZE];          char filePathBuffer[EXECUTOR_BUFFER_SIZE];
         SessionKey sessionKey;  
  
         if (Executor::challengeLocal(         if (Executor::challengeLocal(
             userName.getCString(), path, sessionKey) != 0)                  userName.getCString(), filePathBuffer) != 0)
         {         {
             throw CannotOpenFile(path);              PEG_METHOD_EXIT();
               throw CannotOpenFile(filePathBuffer);
         }         }
           filePath = filePathBuffer;
           secret.clear();
  
         secret = sessionKey.data();          responseHeader.append(filePath);
   
         responseHeader.append(path);  
         responseHeader.append("\"");         responseHeader.append("\"");
     }     }
     else     else
     {     {
         // create a file using user name and write a random number in it.         // create a file using user name and write a random number in it.
         LocalAuthFile localAuthFile(userName);         LocalAuthFile localAuthFile(userName);
         String filePath = localAuthFile.create();          filePath = localAuthFile.create();
  
         //         //
         // get the secret string         // get the secret string
Line 197 
Line 192 
     }     }
  
     PEG_METHOD_EXIT();     PEG_METHOD_EXIT();
   
     return responseHeader;     return responseHeader;
 } }
  


Legend:
Removed from v.1.12.2.1  
changed lines
  Added in v.1.20

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2