/usr/include/saml/binding/MessageEncoder.h is in libsaml2-dev 2.6.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | /**
* Licensed to the University Corporation for Advanced Internet
* Development, Inc. (UCAID) under one or more contributor license
* agreements. See the NOTICE file distributed with this work for
* additional information regarding copyright ownership.
*
* UCAID licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the
* License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*/
/**
* @file saml/binding/MessageEncoder.h
*
* Interface to SAML protocol binding message encoders.
*/
#ifndef __saml_encoder_h__
#define __saml_encoder_h__
#include <saml/base.h>
namespace xmltooling {
class XMLTOOL_API Credential;
class XMLTOOL_API GenericResponse;
class XMLTOOL_API XMLObject;
};
namespace opensaml {
class SAML_API SAMLArtifact;
namespace saml2p {
class SAML_API SAML2Artifact;
};
namespace saml2md {
class SAML_API EntityDescriptor;
};
/**
* Interface to SAML protocol binding message encoders.
*/
class SAML_API MessageEncoder
{
MAKE_NONCOPYABLE(MessageEncoder);
public:
virtual ~MessageEncoder();
/**
* Indicates whether the encoding format requires that messages be as compact as possible.
*
* @return true iff the encoding has size constraints
*/
virtual bool isCompact() const;
/**
* Indicates whether a web browser or similar user agent will receive the message.
*
* @return true iff the message will be handled by a user agent
*/
virtual bool isUserAgentPresent() const;
/**
* Returns identifier for the protocol family associated with the encoder.
*
* @return a protocol family identifier, or nullptr
*/
virtual const XMLCh* getProtocolFamily() const;
/**
* Interface to caller-supplied artifact generation mechanism.
*
* Generating an artifact for storage and retrieval requires knowledge of
* the sender's SourceID (or sometimes SourceLocation), and the relying party's
* preferred artifact type. This information can be supplied using whatever
* configuration or defaults are appropriate for the SAML application.
* A MessageEncoder implementation will invoke the supplied generator interface
* when it requires an artifact be created.
*/
class SAML_API ArtifactGenerator {
MAKE_NONCOPYABLE(ArtifactGenerator);
protected:
ArtifactGenerator();
public:
virtual ~ArtifactGenerator();
/**
* Generate a SAML 1.x artifact suitable for consumption by the relying party.
*
* @param relyingParty the party that will recieve the artifact
* @return a SAML 1.x artifact with a random assertion handle
*/
virtual SAMLArtifact* generateSAML1Artifact(const saml2md::EntityDescriptor* relyingParty) const=0;
/**
* Generate a SAML 2.0 artifact suitable for consumption by the relying party.
*
* @param relyingParty the party that will recieve the artifact
* @return a SAML 2.0 artifact with a random message handle
*/
virtual saml2p::SAML2Artifact* generateSAML2Artifact(const saml2md::EntityDescriptor* relyingParty) const=0;
};
/**
* Encodes an XML object/message into a binding- and transport-specific response.
* The XML content cannot have a parent object, and any existing references to
* the content will be invalidated if the encode method returns successfully.
*
* If a CredentialResolver is supplied, the message is also signed in a
* binding-specific manner. The CredentialResolver <strong>MUST</strong>
* be locked by the caller.
*
* <p>Artifact-based bindings require an ArtifactGenerator be set to
* produce an artifact suitable for the intended recipient.
*
* @param genericResponse reference to interface for sending transport response
* @param xmlObject XML message to encode
* @param destination destination URL for message
* @param recipient optional message recipient
* @param relayState optional RelayState value to accompany message
* @param artifactGenerator optional interface for generation of artifacts
* @param credential optional Credential to supply signing key
* @param signatureAlg optional signature algorithm identifier
* @param digestAlg optional reference digest algorithm identifier
*/
virtual long encode(
xmltooling::GenericResponse& genericResponse,
xmltooling::XMLObject* xmlObject,
const char* destination,
const saml2md::EntityDescriptor* recipient=nullptr,
const char* relayState=nullptr,
const ArtifactGenerator* artifactGenerator=nullptr,
const xmltooling::Credential* credential=nullptr,
const XMLCh* signatureAlg=nullptr,
const XMLCh* digestAlg=nullptr
) const=0;
protected:
MessageEncoder();
};
/**
* Registers MessageEncoder plugins into the runtime.
*/
void SAML_API registerMessageEncoders();
};
#endif /* __saml_encoder_h__ */
|