Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

pana_security_assoc.h

00001 /* BEGIN_COPYRIGHT                                                        */
00002 /*                                                                        */
00003 /* Open Diameter: Open-source software for the Diameter and               */
00004 /*                Diameter related protocols                              */
00005 /*                                                                        */
00006 /* Copyright (C) 2002-2004 Open Diameter Project                          */
00007 /*                                                                        */
00008 /* This library is free software; you can redistribute it and/or modify   */
00009 /* it under the terms of the GNU Lesser General Public License as         */
00010 /* published by the Free Software Foundation; either version 2.1 of the   */
00011 /* License, or (at your option) any later version.                        */
00012 /*                                                                        */
00013 /* This library is distributed in the hope that it will be useful,        */
00014 /* but WITHOUT ANY WARRANTY; without even the implied warranty of         */
00015 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      */
00016 /* Lesser General Public License for more details.                        */
00017 /*                                                                        */
00018 /* You should have received a copy of the GNU Lesser General Public       */
00019 /* License along with this library; if not, write to the Free Software    */
00020 /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307    */
00021 /* USA.                                                                   */
00022 /*                                                                        */
00023 /* In addition, when you copy and redistribute some or the entire part of */
00024 /* the source code of this software with or without modification, you     */
00025 /* MUST include this copyright notice in each copy.                       */
00026 /*                                                                        */
00027 /* If you make any changes that are appeared to be useful, please send    */
00028 /* sources that include the changed part to                               */
00029 /* diameter-developers@lists.sourceforge.net so that we can reflect your  */
00030 /* changes to one unified version of this software.                       */
00031 /*                                                                        */
00032 /* END_COPYRIGHT                                                          */
00033 
00034 #ifndef __PANA_SECURITY_ASSOC_H__
00035 #define __PANA_SECURITY_ASSOC_H__
00036 
00037 #include "pana_exports.h"
00038 #include "pana_message.h"
00039 
00040 class PANA_EXPORT PANA_MacKey
00041 {
00042     public:
00043         PANA_MacKey() { }
00044         PANA_MacKey(diameter_octetstring_t &msk,
00045                     ACE_UINT32 ISN_pac,
00046                     ACE_UINT32 ISN_paa) { 
00047             MacKey(msk, ISN_pac, ISN_paa);
00048         }
00049         diameter_octetstring_t &MacKey(diameter_octetstring_t &msk,
00050                                        ACE_UINT32 ISN_pac,
00051                                        ACE_UINT32 ISN_paa);
00052         diameter_octetstring_t &MacKey() { return m_MacKey; }
00053 
00054     protected:
00055         diameter_octetstring_t m_MacKey;
00056 };
00057 
00058 class PANA_EXPORT PANA_SecurityAssociation : public PANA_MacKey
00059 {
00060     public:
00061         PANA_SecurityAssociation() : m_KeyId(ACE_OS::rand()) { }
00062         ACE_UINT32 KeyId() {
00063             return m_KeyId;
00064         }
00065         void KeyId(ACE_UINT32 id) {
00066             m_KeyId = id;
00067         }
00068         diameter_octetstring_t &MSK() {
00069             return m_MSK;
00070         }
00071         diameter_octetstring_t &MSK(diameter_octetstring_t &msk,
00072                                     ACE_UINT32 ISN_pac,
00073                                     ACE_UINT32 ISN_paa) {
00074             PANA_MacKey::MacKey(msk, ISN_pac, ISN_paa);
00075             m_MSK = msk;
00076             return (m_MSK);
00077         }      
00078 
00079         bool AddMacValue(PANA_Message &msg);
00080         bool ValidateMacValue(PANA_Message &msg);
00081 
00082     protected:
00083         void GenerateMacValue(AAAMessageBlock *panaPDU,
00084                               diameter_octetstring_t &macValue);
00085     private:
00086         diameter_octetstring_t m_MSK;
00087         ACE_UINT32 m_KeyId;
00088 };
00089 
00090 #endif /* __PANA_SECURITY_ASSOC_H__ */
00091 

Generated on Fri Jun 25 19:18:30 2004 for PANA by doxygen 1.3.5