odil
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  {
32  enum class Result
33  {
34  Acceptance = 0,
35  UserRejection = 1,
36  NoReason = 2,
37  AbstractSyntaxNotSupported = 3,
38  TransferSyntaxesNotSupported = 4,
39  };
40 
41  uint8_t id;
42  std::string abstract_syntax;
43  std::vector<std::string> transfer_syntaxes;
44  bool scu_role_support;
45  bool scp_role_support;
46  Result result;
47  };
48 
50  struct UserIdentity
51  {
52  enum class Type
53  {
54  None = 0,
55  Username = 1,
56  UsernameAndPassword = 2,
57  Kerberos = 3,
58  SAML = 4
59  };
60 
61  Type type;
62  std::string primary_field;
63  std::string secondary_field;
64  };
65 
68 
70  AssociationParameters(pdu::AAssociateRQ const & pdu);
71 
74  pdu::AAssociateAC const & pdu, AssociationParameters const & request);
75 
77  std::string const & get_called_ae_title() const;
78 
85  AssociationParameters & set_called_ae_title(std::string const & value);
86 
88  std::string const & get_calling_ae_title() const;
89 
96  AssociationParameters & set_calling_ae_title(std::string const & value);
97 
99  std::vector<PresentationContext> const & get_presentation_contexts() const;
100 
103  set_presentation_contexts(std::vector<PresentationContext> const & value);
104 
106  UserIdentity const & get_user_identity() const;
107 
110 
113  set_user_identity_to_username(std::string const & username);
114 
118  std::string const & username, std::string const & password);
119 
122  set_user_identity_to_kerberos(std::string const & ticket);
123 
126  set_user_identity_to_saml(std::string const & assertion);
127 
129  uint32_t get_maximum_length() const;
130 
135  AssociationParameters & set_maximum_length(uint32_t value);
136 
138  pdu::AAssociateRQ as_a_associate_rq() const;
139 
141  pdu::AAssociateAC as_a_associate_ac() const;
142 
143 private:
144  std::string _called_ae_title;
145  std::string _calling_ae_title;
146  std::vector<PresentationContext> _presentation_contexts;
147  UserIdentity _user_identity;
148  uint32_t _maximum_length;
149 
151  AssociationParameters & _set_user_identity(UserIdentity const & value);
152 };
153 
154 }
155 
156 #endif // _061fafd4_982e_4a7e_9eb0_29e06443ebf3
AssociationParameters & set_calling_ae_title(std::string const &value)
Set the calling AE title.
Definition: AssociationParameters.cpp:226
AssociationParameters()
Constructor.
Definition: AssociationParameters.cpp:31
AssociationParameters & set_presentation_contexts(std::vector< PresentationContext > const &value)
Set the presentation contexts. All ids must be odd and unique.
Definition: AssociationParameters.cpp:246
AssociationParameters & set_user_identity_to_kerberos(std::string const &ticket)
Authenticate user using a Kerberos ticket.
Definition: AssociationParameters.cpp:300
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:291
AssociationParameters & set_user_identity_to_username(std::string const &username)
Authenticate user using only a username.
Definition: AssociationParameters.cpp:283
uint32_t get_maximum_length() const
Return the maximum length of a PDU, default to 16384.
Definition: AssociationParameters.cpp:314
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:307
std::string const & get_calling_ae_title() const
Return the calling AE title, default to empty.
Definition: AssociationParameters.cpp:219
std::string const & get_called_ae_title() const
Return the called AE title, default to empty.
Definition: AssociationParameters.cpp:199
pdu::AAssociateAC as_a_associate_ac() const
Create an A-ASSOCIATE-AC PDU.
Definition: AssociationParameters.cpp:397
std::vector< PresentationContext > const & get_presentation_contexts() const
Return the presentation contexts, default to empty.
Definition: AssociationParameters.cpp:239
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
AssociationParameters & set_maximum_length(uint32_t value)
Set the maximum length of a PDU, the value 0 meaning no maximum length.
Definition: AssociationParameters.cpp:321
AssociationParameters & set_called_ae_title(std::string const &value)
Set the called AE title.
Definition: AssociationParameters.cpp:206
User Identity, cf. PS3.8 D.3.3.7.
Definition: AssociationParameters.h:50
UserIdentity const & get_user_identity() const
Return the user identity, default to None.
Definition: AssociationParameters.cpp:269
AssociationParameters & set_user_identity_to_none()
Do no authenticate user.
Definition: AssociationParameters.cpp:276
pdu::AAssociateRQ as_a_associate_rq() const
Create an A-ASSOCIATE-RQ PDU.
Definition: AssociationParameters.cpp:329