1 /**
2  * Licensed to the University Corporation for Advanced Internet
3  * Development, Inc. (UCAID) under one or more contributor license
4  * agreements. See the NOTICE file distributed with this work for
5  * additional information regarding copyright ownership.
6  *
7  * UCAID licenses this file to you under the Apache License,
8  * Version 2.0 (the "License"); you may not use this file except
9  * in compliance with the License. You may obtain a copy of the
10  * License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17  * either express or implied. See the License for the specific
18  * language governing permissions and limitations under the License.
19  */
20 
21 /**
22  * @file saml/saml2/binding/SAML2ArtifactType0004.h
23  *
24  * Type 0x0004 SAML 2.0 artifact class.
25  */
26 
27 #ifndef __saml_artifacttype0004_h__
28 #define __saml_artifacttype0004_h__
29 
30 #include <saml/saml2/binding/SAML2Artifact.h>
31 
32 namespace opensaml {
33     namespace saml2p {
34 
35         /**
36          * Type 0x0004 SAML 2.0 artifact class.
37          */
38         class SAML_API SAML2ArtifactType0004 : public SAML2Artifact
39         {
40             SAML2ArtifactType0004& operator=(const SAML2ArtifactType0004& src);
41         public:
42             /**
43              * Decodes a base64-encoded type 0x0004 artifact
44              *
45              * @param s NULL-terminated base64-encoded string
46              */
47             SAML2ArtifactType0004(const char* s);
48 
49             /**
50              * Constructs an artifact with the specified source ID and index, but a random message handle.
51              *
52              * @param sourceid  SOURCEID_LENGTH bytes of binary data
53              * @param index     endpoint index
54              */
55             SAML2ArtifactType0004(const std::string& sourceid, int index);
56 
57             /**
58              * Constructs an artifact with the specified source ID and assertion handle.
59              *
60              * @param sourceid  SOURCEID_LENGTH bytes of binary data
61              * @param index     endpoint index
62              * @param handle    HANDLE_LENGTH bytes of binary data
63              */
64             SAML2ArtifactType0004(const std::string& sourceid, int index, const std::string& handle);
65 
66             virtual ~SAML2ArtifactType0004();
67 
68             // Virtual function overrides.
69             SAML2ArtifactType0004* clone() const;
70             std::string getSource() const;
71             std::string getMessageHandle() const;
72 
73             /**
74              * Returns the binary data that identifies the source.
75              * The result MAY contain embedded null characters.
76              *
77              * @return the binary source ID
78              */
79             virtual std::string getSourceID() const;
80 
81             /** Length of source ID */
82             static const unsigned int SOURCEID_LENGTH;
83 
84             /** Length of message handle */
85             static const unsigned int HANDLE_LENGTH;
86 
87         protected:
88             /**
89              * Copy constructor.
90              *
91              * @param src   object to copy
92              */
93             SAML2ArtifactType0004(const SAML2ArtifactType0004& src);
94         };
95 
96     };
97 };
98 
99 #endif /* __saml_artifacttype0004_h__ */
100