odil
C++11libraryfortheDICOMstandard
AssociationParameters.h
1 /*************************************************************************
2  * odil - Copyright (C) Universite de Strasbourg
3  * Distributed under the terms of the CeCILL-B license, as published by
4  * the CEA-CNRS-INRIA. Refer to the LICENSE file or to
5  * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
6  * for details.
7  ************************************************************************/
8 
9 #ifndef _061fafd4_982e_4a7e_9eb0_29e06443ebf3
10 #define _061fafd4_982e_4a7e_9eb0_29e06443ebf3
11 
12 #include <cstdint>
13 #include <string>
14 #include <vector>
15 
16 #include "odil/pdu/AAssociateAC.h"
17 #include "odil/pdu/AAssociateRQ.h"
18 
19 namespace odil
20 {
21 
24 {
25 public:
31  {
33  enum class Result
34  {
35  Acceptance = 0,
36  UserRejection = 1,
37  NoReason = 2,
38  AbstractSyntaxNotSupported = 3,
39  TransferSyntaxesNotSupported = 4,
40  };
41 
43  uint8_t id;
44 
46  std::string abstract_syntax;
47 
49  std::vector<std::string> transfer_syntaxes;
50 
53 
56 
59 
61  bool operator==(PresentationContext const & other) const;
62  };
63 
65  struct UserIdentity
66  {
68  enum class Type
69  {
70  None = 0,
71  Username = 1,
72  UsernameAndPassword = 2,
73  Kerberos = 3,
74  SAML = 4
75  };
76 
79 
81  std::string primary_field;
82 
84  std::string secondary_field;
85 
87  bool operator==(UserIdentity const & other) const;
88  };
89 
92 
94  AssociationParameters(pdu::AAssociateRQ const & pdu);
95 
98  pdu::AAssociateAC const & pdu, AssociationParameters const & request);
99 
101  std::string const & get_called_ae_title() const;
102 
109  AssociationParameters & set_called_ae_title(std::string const & value);
110 
112  std::string const & get_calling_ae_title() const;
113 
120  AssociationParameters & set_calling_ae_title(std::string const & value);
121 
123  std::vector<PresentationContext> const & get_presentation_contexts() const;
124 
127  set_presentation_contexts(std::vector<PresentationContext> const & value);
128 
130  UserIdentity const & get_user_identity() const;
131 
134 
137  set_user_identity_to_username(std::string const & username);
138 
142  std::string const & username, std::string const & password);
143 
146  set_user_identity_to_kerberos(std::string const & ticket);
147 
150  set_user_identity_to_saml(std::string const & assertion);
151 
153  uint32_t get_maximum_length() const;
154 
159  AssociationParameters & set_maximum_length(uint32_t value);
160 
162  pdu::AAssociateRQ as_a_associate_rq() const;
163 
165  pdu::AAssociateAC as_a_associate_ac() const;
166 
168  bool operator==(AssociationParameters const & other) const;
169 
170 private:
171  std::string _called_ae_title;
172  std::string _calling_ae_title;
173  std::vector<PresentationContext> _presentation_contexts;
174  UserIdentity _user_identity;
175  uint32_t _maximum_length;
176 
178  AssociationParameters & _set_user_identity(UserIdentity const & value);
179 };
180 
181 }
182 
183 #endif // _061fafd4_982e_4a7e_9eb0_29e06443ebf3
bool operator==(PresentationContext const &other) const
Member-wise equality.
Definition: AssociationParameters.cpp:32
AssociationParameters & set_calling_ae_title(std::string const &value)
Set the calling AE title.
Definition: AssociationParameters.cpp:269
AssociationParameters()
Constructor.
Definition: AssociationParameters.cpp:74
std::string abstract_syntax
Proposed abstract syntax.
Definition: AssociationParameters.h:46
AssociationParameters & set_presentation_contexts(std::vector< PresentationContext > const &value)
Set the presentation contexts. All ids must be odd and unique.
Definition: AssociationParameters.cpp:289
uint8_t id
Identifier of the presentation context, must be odd.
Definition: AssociationParameters.h:43
AssociationParameters & set_user_identity_to_kerberos(std::string const &ticket)
Authenticate user using a Kerberos ticket.
Definition: AssociationParameters.cpp:343
bool scu_role_support
Support for SCU role.
Definition: AssociationParameters.h:52
bool scp_role_support
Support for SCP role.
Definition: AssociationParameters.h:55
Definition: Association.cpp:39
AssociationParameters & set_user_identity_to_username_and_password(std::string const &username, std::string const &password)
Authenticate user using a username and a password.
Definition: AssociationParameters.cpp:334
AssociationParameters & set_user_identity_to_username(std::string const &username)
Authenticate user using only a username.
Definition: AssociationParameters.cpp:326
uint32_t get_maximum_length() const
Return the maximum length of a PDU, default to 16384.
Definition: AssociationParameters.cpp:357
Encapsulate association parameters.
Definition: AssociationParameters.h:23
AssociationParameters & set_user_identity_to_saml(std::string const &assertion)
Authenticate user using a SAML assertion.
Definition: AssociationParameters.cpp:350
std::string const & get_calling_ae_title() const
Return the calling AE title, default to empty.
Definition: AssociationParameters.cpp:262
std::string const & get_called_ae_title() const
Return the called AE title, default to empty.
Definition: AssociationParameters.cpp:242
pdu::AAssociateAC as_a_associate_ac() const
Create an A-ASSOCIATE-AC PDU.
Definition: AssociationParameters.cpp:440
Result
Result of the presentation context negotiation.
Definition: AssociationParameters.h:33
Type
User identity type.
Definition: AssociationParameters.h:68
std::vector< PresentationContext > const & get_presentation_contexts() const
Return the presentation contexts, default to empty.
Definition: AssociationParameters.cpp:282
Presentation Context, cf. PS 3.8, 9.3.2.2, PS 3.8, 9.3.3.2, PS 3.7, D.3.3.4.1 and PS 3...
Definition: AssociationParameters.h:30
std::string secondary_field
Secondary identity field.
Definition: AssociationParameters.h:84
AssociationParameters & set_maximum_length(uint32_t value)
Set the maximum length of a PDU, the value 0 meaning no maximum length.
Definition: AssociationParameters.cpp:364
Type type
Identity type.
Definition: AssociationParameters.h:78
Result result
Result of the negotiation.
Definition: AssociationParameters.h:58
std::string primary_field
Primary identity field.
Definition: AssociationParameters.h:81
AssociationParameters & set_called_ae_title(std::string const &value)
Set the called AE title.
Definition: AssociationParameters.cpp:249
User Identity, cf. PS3.8 D.3.3.7.
Definition: AssociationParameters.h:65
UserIdentity const & get_user_identity() const
Return the user identity, default to None.
Definition: AssociationParameters.cpp:312
std::vector< std::string > transfer_syntaxes
Proposed transfer syntaxes or accepted transfer syntax.
Definition: AssociationParameters.h:49
AssociationParameters & set_user_identity_to_none()
Do no authenticate user.
Definition: AssociationParameters.cpp:319
pdu::AAssociateRQ as_a_associate_rq() const
Create an A-ASSOCIATE-RQ PDU.
Definition: AssociationParameters.cpp:372