dcmtls/include/dcmtk/dcmtls/tlsscu.h

00001 /*
00002  *
00003  *  Copyright (C) 2010, OFFIS e.V.
00004  *  All rights reserved.  See COPYRIGHT file for details.
00005  *
00006  *  This software and supporting documentation were developed by
00007  *
00008  *    OFFIS e.V.
00009  *    R&D Division Health
00010  *    Escherweg 2
00011  *    D-26121 Oldenburg, Germany
00012  *
00013  *
00014  *  Module:  dcmtls
00015  *
00016  *  Author:  Michael Onken
00017  *
00018  *  Purpose: Base class for TLS-enabled Service Class Users (SCUs)
00019  *
00020  *  Last Update:      $Author: joergr $
00021  *  Update Date:      $Date: 2010-10-14 13:17:27 $
00022  *  CVS/RCS Revision: $Revision: 1.4 $
00023  *  Status:           $State: Exp $
00024  *
00025  *  CVS/RCS Log at end of file
00026  *
00027  */
00028 
00029 #ifndef TLSSCU_H
00030 #define TLSSCU_H
00031 
00032 #include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
00033 
00034 #ifdef WITH_OPENSSL
00035 #include "dcmtk/dcmnet/scu.h"
00036 #include "dcmtk/dcmtls/tlstrans.h"
00037 #include "dcmtk/dcmtls/tlslayer.h"
00038 
00039 
00045 class DcmTLSSCU : public DcmSCU
00046 {
00047 
00048 public:
00049 
00052   DcmTLSSCU();
00053 
00059   DcmTLSSCU(const OFString& peerHost,
00060             const OFString& peerAETitle,
00061             const Uint16& portNum);
00062 
00065   virtual ~DcmTLSSCU();
00066 
00070   virtual OFCondition initNetwork();
00071 
00076   virtual OFCondition negotiateAssociation();
00077 
00081   virtual void closeAssociation(const DcmCloseAssociationType closeType);
00082 
00086   virtual void addTrustedCertFile(const OFString& str);
00087 
00091   virtual void addTrustedCertDir(const OFString& certDir);
00092 
00104   virtual void enableAuthentication(const OFString& privateKey,
00105                                     const OFString& certFile,
00106                                     const char* passphrase = NULL,
00107                                     const int& privKeyFormat = SSL_FILETYPE_PEM,
00108                                     const int& certFormat = SSL_FILETYPE_PEM);
00109 
00113   virtual void disableAuthentication();
00114 
00118   virtual void addCiphersuite(const OFString& cs);
00119 
00123   virtual void setReadSeedFile(const OFString& seedFile);
00124 
00128   virtual void setWriteSeedFile(const OFString& seedFile);
00129 
00134   virtual void setPeerCertVerification(const DcmCertificateVerification& cert);
00135 
00139   virtual void setDHParam(const OFString& dhParam);
00140 
00145   virtual OFBool getAuthenticationParams(OFString& privKeyFile,
00146                                          OFString& certFile,
00147                                          const char*& passphrase,
00148                                          int& privKeyFormat,
00149                                          int& certFormat) const;
00150 
00154   virtual void getTrustedCertFiles(OFList<OFString>& files /*out*/) const;
00155 
00159   virtual void getTrustedCertDirs(OFList<OFString>& trustedDirs /*out*/) const;
00160 
00164   virtual OFString getCiphersuites() const;
00165 
00169   virtual OFString getReadSeedFile() const;
00170 
00174   virtual OFString getWriteSeedFile() const;
00175 
00179   virtual OFString getDHParam() const;
00180 
00181 private:
00182 
00186   DcmTLSSCU( const DcmTLSSCU &src );
00187 
00192   DcmTLSSCU &operator=( const DcmTLSSCU &src );
00193 
00195   DcmTLSTransportLayer *m_tLayer;
00196 
00198   OFBool m_doAuthenticate;
00199 
00201   OFList<OFString> m_trustedCertDirs;
00202 
00204   OFList<OFString> m_trustedCertFiles;
00205 
00207   OFString m_privateKeyFile ;
00208 
00210   int m_privateKeyFileFormat;
00211 
00213   OFString m_certificateFile;
00214 
00216   int m_certKeyFileFormat;
00217 
00221   char* m_passwd;
00222 
00224   OFString m_ciphersuites;
00225 
00227   OFString m_readSeedFile;
00228 
00230   OFString m_writeSeedFile;
00231 
00234   DcmCertificateVerification m_certVerification;
00235 
00237   OFString m_dhparam;
00238 
00239 };
00240 
00241 #endif // WITH_OPENSSL
00242 
00243 #endif // TLSSCU_H
00244 
00245 
00246 /*
00247 ** CVS Log
00248 ** $Log: tlsscu.h,v $
00249 ** Revision 1.4  2010-10-14 13:17:27  joergr
00250 ** Updated copyright header. Added reference to COPYRIGHT file.
00251 **
00252 ** Revision 1.3  2010-10-01 12:25:29  uli
00253 ** Fixed most compiler warnings in remaining modules.
00254 **
00255 ** Revision 1.2  2010-06-22 15:49:38  joergr
00256 ** Introduced new enumeration type to be used for closeAssociation().
00257 **
00258 ** Revision 1.1  2010-04-29 16:18:00  onken
00259 ** Added new class DcmTLSSCU as base class for developing TLS-enabled SCUs.
00260 **
00261 */


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1