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 */