blob: 8ac651ff5e609dd086a481251cb51b2c8eb4df70 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Proton DotNet: Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Proton DotNet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceApache.html">Apache</a></li><li class="navelem"><a class="el" href="namespaceApache_1_1Qpid.html">Qpid</a></li><li class="navelem"><a class="el" href="namespaceApache_1_1Qpid_1_1Proton.html">Proton</a></li><li class="navelem"><a class="el" href="namespaceApache_1_1Qpid_1_1Proton_1_1Engine.html">Engine</a></li><li class="navelem"><a class="el" href="namespaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl.html">Sasl</a></li><li class="navelem"><a class="el" href="namespaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client.html">Client</a></li><li class="navelem"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html">AbstractMechanism</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>Common base for SASL mechanism types that provides basic service to ease the creation of SASL mechanisms.
<a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism:</div>
<div class="dyncontent">
<div class="center">
<img src="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.png" usemap="#Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism_map" alt=""/>
<map id="Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism_map" name="Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism_map">
<area href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html" title="Interface that is implemented by all SASL mechanisms provided in this package." alt="Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism" shape="rect" coords="1477,0,1889,24"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html" title="Common base for SASL mechanism types that provides basic service to ease the creation of SASL mechani..." alt="Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism" shape="rect" coords="422,112,834,136"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AnonymousMechanism.html" title="Implementation of the SASL Anonymous mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.AnonymousMechanism" shape="rect" coords="844,112,1256,136"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1CramMD5Mechanism.html" title="Implementation of the SASL CRAM-MD5 mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.CramMD5Mechanism" shape="rect" coords="1266,112,1678,136"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ExternalMechanism.html" title="Implementation of the SASL External mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.ExternalMechanism" shape="rect" coords="1688,112,2100,136"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1PlainMechanism.html" title="Implementation of the SASL Plain mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.PlainMechanism" shape="rect" coords="2110,112,2522,136"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1XOauth2Mechanism.html" title="Implementation of the SASL XOAUTH2 mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.XOauth2Mechanism" shape="rect" coords="2532,112,2944,136"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA1Mechanism.html" title="Implements the SASL Scram SHA1 authentication Mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA1Mechanism" shape="rect" coords="0,168,412,192"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA256Mechanism.html" title="Implements the SASL Scram SHA256 authentication Mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA256Mechanism" shape="rect" coords="422,168,834,192"/>
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA512Mechanism.html" title="Implements the SASL Scram SHA512 authentication Mechanism." alt="Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA512Mechanism" shape="rect" coords="844,168,1256,192"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a7551c43011de4767250d398df8b94068"><td class="memItemLeft" align="right" valign="top">abstract bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a7551c43011de4767250d398df8b94068">IsApplicable</a> (<a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ISaslCredentialsProvider.html">ISaslCredentialsProvider</a> credentials)</td></tr>
<tr class="memdesc:a7551c43011de4767250d398df8b94068"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows the Mechanism to determine if it is a valid choice based on the configured credentials at the time of selection. The sasl processing layer must query each mechanism to determine its applicability and must not attempt to utilize a given mechanism if it reports it cannot be applied using the provided credentials. <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a7551c43011de4767250d398df8b94068">More...</a><br /></td></tr>
<tr class="separator:a7551c43011de4767250d398df8b94068"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a35b525088befdab621407726f9c0e506"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a35b525088befdab621407726f9c0e506">GetChallengeResponse</a> (<a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ISaslCredentialsProvider.html">ISaslCredentialsProvider</a> credentials, <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a> challenge)</td></tr>
<tr class="memdesc:a35b525088befdab621407726f9c0e506"><td class="mdescLeft">&#160;</td><td class="mdescRight">Based on the functionality of the implemented mechanism, formulate the challenge response packet that will be sent back to the remote. If the mechanism is not expecting a challenge this method my throw an exception. <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a35b525088befdab621407726f9c0e506">More...</a><br /></td></tr>
<tr class="separator:a35b525088befdab621407726f9c0e506"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afaa919377d569c8d2e995d98bc63be63"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#afaa919377d569c8d2e995d98bc63be63">GetInitialResponse</a> (<a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ISaslCredentialsProvider.html">ISaslCredentialsProvider</a> credentialsProvider)</td></tr>
<tr class="memdesc:afaa919377d569c8d2e995d98bc63be63"><td class="mdescLeft">&#160;</td><td class="mdescRight">Based on the functionality of the implemented mechanism, formulate the initial response packet that will be sent back to the remote, if no response is required for this mechanism this method may return null. <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#afaa919377d569c8d2e995d98bc63be63">More...</a><br /></td></tr>
<tr class="separator:afaa919377d569c8d2e995d98bc63be63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f79af7956f0d70a505c7807eb8db982"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a9f79af7956f0d70a505c7807eb8db982">IsEnabledByDefault</a> ()</td></tr>
<tr class="memdesc:a9f79af7956f0d70a505c7807eb8db982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allows the mechanism to indicate if it is enabled by default, or only when explicitly enabled through configuring the permitted SASL mechanisms. Any mechanism selection logic should examine this value along with the configured allowed mechanism and decide if this one should be used. <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a9f79af7956f0d70a505c7807eb8db982">More...</a><br /></td></tr>
<tr class="separator:a9f79af7956f0d70a505c7807eb8db982"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6001a6713477491eda12f5462e1c6907"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a6001a6713477491eda12f5462e1c6907">VerifyCompletion</a> ()</td></tr>
<tr class="memdesc:a6001a6713477491eda12f5462e1c6907"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies that the SASL exchange has completed successfully. This is an opportunity for the mechanism to ensure that all mandatory steps have been completed successfully and to cleanup and resources that are held by this Mechanism. When verification fails this method throw a <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1SaslException.html" title="Base exception type for exceptions encountered during SASL authentication.">SaslException</a>. <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a6001a6713477491eda12f5462e1c6907">More...</a><br /></td></tr>
<tr class="separator:a6001a6713477491eda12f5462e1c6907"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b826c4bc33f5d8b04196d46f3f604e6"><td class="memItemLeft" align="right" valign="top"><a id="a8b826c4bc33f5d8b04196d46f3f604e6"></a>
override string&#160;</td><td class="memItemRight" valign="bottom"><b>ToString</b> ()</td></tr>
<tr class="separator:a8b826c4bc33f5d8b04196d46f3f604e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
Static Protected Attributes</h2></td></tr>
<tr class="memitem:a990af17bf3eee94d9aa126d70adfce5a"><td class="memItemLeft" align="right" valign="top"><a id="a990af17bf3eee94d9aa126d70adfce5a"></a>
static readonly <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a>&#160;</td><td class="memItemRight" valign="bottom"><b>EMPTY</b> = ProtonByteBufferAllocator.Instance.Allocate(0, 0)</td></tr>
<tr class="separator:a990af17bf3eee94d9aa126d70adfce5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a1518a96137a976d27381e57faac47f42"><td class="memItemLeft" align="right" valign="top"><a id="a1518a96137a976d27381e57faac47f42"></a>
abstract <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Types_1_1Symbol.html">Symbol</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Name</b><code> [get]</code></td></tr>
<tr class="separator:a1518a96137a976d27381e57faac47f42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header properties_interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism"><td colspan="2" onclick="javascript:toggleInherit('properties_interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism')"><img src="closed.png" alt="-"/>&#160;Properties inherited from <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html">Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism</a></td></tr>
<tr class="memitem:a7f4aa2e38fd799afaae79d51bff4ec5d inherit properties_interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Types_1_1Symbol.html">Symbol</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#a7f4aa2e38fd799afaae79d51bff4ec5d">Name</a><code> [get]</code></td></tr>
<tr class="memdesc:a7f4aa2e38fd799afaae79d51bff4ec5d inherit properties_interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the proper name of the SASL mechanism <a href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#a7f4aa2e38fd799afaae79d51bff4ec5d">More...</a><br /></td></tr>
<tr class="separator:a7f4aa2e38fd799afaae79d51bff4ec5d inherit properties_interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Common base for SASL mechanism types that provides basic service to ease the creation of SASL mechanisms. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a35b525088befdab621407726f9c0e506"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a35b525088befdab621407726f9c0e506">&#9670;&nbsp;</a></span>GetChallengeResponse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a> Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism.GetChallengeResponse </td>
<td>(</td>
<td class="paramtype"><a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ISaslCredentialsProvider.html">ISaslCredentialsProvider</a>&#160;</td>
<td class="paramname"><em>credentials</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a>&#160;</td>
<td class="paramname"><em>challenge</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Based on the functionality of the implemented mechanism, formulate the challenge response packet that will be sent back to the remote. If the mechanism is not expecting a challenge this method my throw an exception. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">credentialsProvider</td><td>The provider of the credentials</td></tr>
<tr><td class="paramname">challenge</td><td>The encoded challenge received from the remote</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The challenge response encoded into a proton buffer.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1SaslException.html" title="Base exception type for exceptions encountered during SASL authentication.">SaslException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#aabaf857bd26e20ee28da962e6a07a65f">Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism</a>.</p>
<p>Reimplemented in <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1XOauth2Mechanism.html#a8fc9163833f7ec46502730673a02c38d">Apache.Qpid.Proton.Engine.Sasl.Client.XOauth2Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1CramMD5Mechanism.html#acd0b02fc31dc3413652302c19b7a46e4">Apache.Qpid.Proton.Engine.Sasl.Client.CramMD5Mechanism</a>, and <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#a64b689b25fce2802cbf6850bba4017c4">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism</a>.</p>
</div>
</div>
<a id="afaa919377d569c8d2e995d98bc63be63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afaa919377d569c8d2e995d98bc63be63">&#9670;&nbsp;</a></span>GetInitialResponse()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a> Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism.GetInitialResponse </td>
<td>(</td>
<td class="paramtype"><a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ISaslCredentialsProvider.html">ISaslCredentialsProvider</a>&#160;</td>
<td class="paramname"><em>credentialsProvider</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Based on the functionality of the implemented mechanism, formulate the initial response packet that will be sent back to the remote, if no response is required for this mechanism this method may return null. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">credentialsProvider</td><td>The provider of the credentials</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The initial response encoded into a proton buffer.</dd></dl>
<p>Implements <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#a20f41c0a2bf53a9d96102c172578e8b7">Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism</a>.</p>
<p>Reimplemented in <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1CramMD5Mechanism.html#a33fa0eef3428c578c4f8955ffbf00a2e">Apache.Qpid.Proton.Engine.Sasl.Client.CramMD5Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1XOauth2Mechanism.html#a79586f27ffeb004e52e3a6aa18eb1727">Apache.Qpid.Proton.Engine.Sasl.Client.XOauth2Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1PlainMechanism.html#aa046ba050202f577043c1ae122513133">Apache.Qpid.Proton.Engine.Sasl.Client.PlainMechanism</a>, and <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#a3f98c8b329db7373c38e54f1c37c9ea2">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism</a>.</p>
</div>
</div>
<a id="a7551c43011de4767250d398df8b94068"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7551c43011de4767250d398df8b94068">&#9670;&nbsp;</a></span>IsApplicable()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract bool Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism.IsApplicable </td>
<td>(</td>
<td class="paramtype"><a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ISaslCredentialsProvider.html">ISaslCredentialsProvider</a>&#160;</td>
<td class="paramname"><em>credentials</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allows the Mechanism to determine if it is a valid choice based on the configured credentials at the time of selection. The sasl processing layer must query each mechanism to determine its applicability and must not attempt to utilize a given mechanism if it reports it cannot be applied using the provided credentials. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">credentialsProvider</td><td>The provider of the credentials</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if the mechanism can operate given the provided credentials</dd></dl>
<p>Implements <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#a9441036670277401b4927221a873ee9d">Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism</a>.</p>
<p>Implemented in <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1XOauth2Mechanism.html#a5886fd267ea2d26f11e00d0ba3a544eb">Apache.Qpid.Proton.Engine.Sasl.Client.XOauth2Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1PlainMechanism.html#a862ab0c52a4b053b33bc4953568c3852">Apache.Qpid.Proton.Engine.Sasl.Client.PlainMechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ExternalMechanism.html#a13fca3e0b0c7f08aab48e08196328820">Apache.Qpid.Proton.Engine.Sasl.Client.ExternalMechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1CramMD5Mechanism.html#a6d01202d4d853a748e6b992893cbd315">Apache.Qpid.Proton.Engine.Sasl.Client.CramMD5Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AnonymousMechanism.html#a1c089eaedcc87f74fedb8bf277cdcef9">Apache.Qpid.Proton.Engine.Sasl.Client.AnonymousMechanism</a>, and <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#a812fea47aee1c6098bf4637a4ed4db6c">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism</a>.</p>
</div>
</div>
<a id="a9f79af7956f0d70a505c7807eb8db982"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f79af7956f0d70a505c7807eb8db982">&#9670;&nbsp;</a></span>IsEnabledByDefault()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism.IsEnabledByDefault </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Allows the mechanism to indicate if it is enabled by default, or only when explicitly enabled through configuring the permitted SASL mechanisms. Any mechanism selection logic should examine this value along with the configured allowed mechanism and decide if this one should be used. </p>
<p>Typically most mechanisms can be enabled by default but some require explicit configuration in order to operate which implies that selecting them by default would always cause an authentication error if that mechanism matches the highest priority value offered by the remote peer. </p>
<dl class="section return"><dt>Returns</dt><dd>true if the mechanim should used without it having been requested</dd></dl>
<p>Implements <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#a5086a51a81198f440dc7510a8ba3fc48">Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism</a>.</p>
</div>
</div>
<a id="a6001a6713477491eda12f5462e1c6907"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6001a6713477491eda12f5462e1c6907">&#9670;&nbsp;</a></span>VerifyCompletion()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism.VerifyCompletion </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Verifies that the SASL exchange has completed successfully. This is an opportunity for the mechanism to ensure that all mandatory steps have been completed successfully and to cleanup and resources that are held by this Mechanism. When verification fails this method throw a <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1SaslException.html" title="Base exception type for exceptions encountered during SASL authentication.">SaslException</a>. </p>
<dl class="exception"><dt>Exceptions</dt><dd>
<table class="exception">
<tr><td class="paramname"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1SaslException.html" title="Base exception type for exceptions encountered during SASL authentication.">SaslException</a></td><td></td></tr>
</table>
</dd>
</dl>
<p>Implements <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1IMechanism.html#a8a3774039d5d580c03022d5b22d5da59">Apache.Qpid.Proton.Engine.Sasl.Client.IMechanism</a>.</p>
<p>Reimplemented in <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1CramMD5Mechanism.html#ae4e704e49755bb2b52d8efc221c45eb8">Apache.Qpid.Proton.Engine.Sasl.Client.CramMD5Mechanism</a>, and <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#aee899ddbab177226270633f3c8e8216a">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/Proton/Engine/Sasl/Client/AbstractMechanism.cs</li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>