blob: 7ab32cfebc8bdef48f2e239d5e7399565f8fc9c3 [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.AbstractScramSHAMechanism 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_1AbstractScramSHAMechanism.html">AbstractScramSHAMechanism</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism 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_1AbstractScramSHAMechanism.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism:</div>
<div class="dyncontent">
<div class="center">
<img src="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.png" usemap="#Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism_map" alt=""/>
<map id="Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism_map" name="Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism_map">
<area href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.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.AbstractMechanism" shape="rect" coords="422,56,834,80"/>
<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="422,0,834,24"/>
<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:a812fea47aee1c6098bf4637a4ed4db6c"><td class="memItemLeft" align="right" valign="top">override bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#a812fea47aee1c6098bf4637a4ed4db6c">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:a812fea47aee1c6098bf4637a4ed4db6c"><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_1AbstractScramSHAMechanism.html#a812fea47aee1c6098bf4637a4ed4db6c">More...</a><br /></td></tr>
<tr class="separator:a812fea47aee1c6098bf4637a4ed4db6c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3f98c8b329db7373c38e54f1c37c9ea2"><td class="memItemLeft" align="right" valign="top">override <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_1AbstractScramSHAMechanism.html#a3f98c8b329db7373c38e54f1c37c9ea2">GetInitialResponse</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:a3f98c8b329db7373c38e54f1c37c9ea2"><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_1AbstractScramSHAMechanism.html#a3f98c8b329db7373c38e54f1c37c9ea2">More...</a><br /></td></tr>
<tr class="separator:a3f98c8b329db7373c38e54f1c37c9ea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64b689b25fce2802cbf6850bba4017c4"><td class="memItemLeft" align="right" valign="top">override <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_1AbstractScramSHAMechanism.html#a64b689b25fce2802cbf6850bba4017c4">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:a64b689b25fce2802cbf6850bba4017c4"><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_1AbstractScramSHAMechanism.html#a64b689b25fce2802cbf6850bba4017c4">More...</a><br /></td></tr>
<tr class="separator:a64b689b25fce2802cbf6850bba4017c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee899ddbab177226270633f3c8e8216a"><td class="memItemLeft" align="right" valign="top">override void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#aee899ddbab177226270633f3c8e8216a">VerifyCompletion</a> ()</td></tr>
<tr class="memdesc:aee899ddbab177226270633f3c8e8216a"><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_1AbstractScramSHAMechanism.html#aee899ddbab177226270633f3c8e8216a">More...</a><br /></td></tr>
<tr class="separator:aee899ddbab177226270633f3c8e8216a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a></td></tr>
<tr class="memitem:a9f79af7956f0d70a505c7807eb8db982 inherit pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><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 inherit pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><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 inherit pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8b826c4bc33f5d8b04196d46f3f604e6 inherit pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><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 inherit pub_methods_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a468a8abc80fad2f199d7f3a90dd3a0e3"><td class="memItemLeft" align="right" valign="top"><a id="a468a8abc80fad2f199d7f3a90dd3a0e3"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>AbstractScramSHAMechanism</b> (string clientNonce)</td></tr>
<tr class="separator:a468a8abc80fad2f199d7f3a90dd3a0e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aadf904df5155bf29fad60420f8e77570"><td class="memItemLeft" align="right" valign="top">abstract HMAC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#aadf904df5155bf29fad60420f8e77570">CreateHmac</a> (byte[] keyBytes)</td></tr>
<tr class="memdesc:aadf904df5155bf29fad60420f8e77570"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derived SHA based SASL Mechanisms should create an HMAC that encapsulates the algorithm they represent and initialize it using the provided bytes. <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#aadf904df5155bf29fad60420f8e77570">More...</a><br /></td></tr>
<tr class="separator:aadf904df5155bf29fad60420f8e77570"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7747ae169106fc94a2ca15baf80f113e"><td class="memItemLeft" align="right" valign="top">abstract HashAlgorithm&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#a7747ae169106fc94a2ca15baf80f113e">CreateHashAlgorithm</a> ()</td></tr>
<tr class="memdesc:a7747ae169106fc94a2ca15baf80f113e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Derived SHA based message digest algorithm used by this SASL mechanism <a href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractScramSHAMechanism.html#a7747ae169106fc94a2ca15baf80f113e">More...</a><br /></td></tr>
<tr class="separator:a7747ae169106fc94a2ca15baf80f113e"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_static_attribs_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><td colspan="2" onclick="javascript:toggleInherit('pro_static_attribs_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism')"><img src="closed.png" alt="-"/>&#160;Static Protected Attributes inherited from <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a></td></tr>
<tr class="memitem:a990af17bf3eee94d9aa126d70adfce5a inherit pro_static_attribs_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><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 inherit pro_static_attribs_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header properties_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><td colspan="2" onclick="javascript:toggleInherit('properties_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism')"><img src="closed.png" alt="-"/>&#160;Properties inherited from <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a></td></tr>
<tr class="memitem:a1518a96137a976d27381e57faac47f42 inherit properties_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><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 inherit properties_classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism"><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="a7747ae169106fc94a2ca15baf80f113e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7747ae169106fc94a2ca15baf80f113e">&#9670;&nbsp;</a></span>CreateHashAlgorithm()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract HashAlgorithm Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism.CreateHashAlgorithm </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derived SHA based message digest algorithm used by this SASL mechanism </p>
<dl class="section return"><dt>Returns</dt><dd>A new hash algorithm that perform the digest required by this SASL mechanism</dd></dl>
<p>Implemented in <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA512Mechanism.html#a1c4e261824c82a75587f2f0a5e0ab751">Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA512Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA256Mechanism.html#a0a8757b918c21e9fc87d4362c34a33f0">Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA256Mechanism</a>, and <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA1Mechanism.html#a727dce91f2243a549edd37024a5c1ad0">Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA1Mechanism</a>.</p>
</div>
</div>
<a id="aadf904df5155bf29fad60420f8e77570"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aadf904df5155bf29fad60420f8e77570">&#9670;&nbsp;</a></span>CreateHmac()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">abstract HMAC Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism.CreateHmac </td>
<td>(</td>
<td class="paramtype">byte[]&#160;</td>
<td class="paramname"><em>keyBytes</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Derived SHA based SASL Mechanisms should create an HMAC that encapsulates the algorithm they represent and initialize it using the provided bytes. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keyBytes</td><td>The algorithm key to use during initialization</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The correct HMAC for the mechanism</dd></dl>
<p>Implemented in <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA512Mechanism.html#a82e42c2c6559d29532d20d7389d101ec">Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA512Mechanism</a>, <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA256Mechanism.html#a6f86edc2e0de0be6d3537c8e73424eff">Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA256Mechanism</a>, and <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1ScramSHA1Mechanism.html#aca58bce511603c340d55a31dd1043f24">Apache.Qpid.Proton.Engine.Sasl.Client.ScramSHA1Mechanism</a>.</p>
</div>
</div>
<a id="a64b689b25fce2802cbf6850bba4017c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64b689b25fce2802cbf6850bba4017c4">&#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">override <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a> Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism.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>Reimplemented from <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a35b525088befdab621407726f9c0e506">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a>.</p>
</div>
</div>
<a id="a3f98c8b329db7373c38e54f1c37c9ea2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3f98c8b329db7373c38e54f1c37c9ea2">&#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">override <a class="el" href="interfaceApache_1_1Qpid_1_1Proton_1_1Buffer_1_1IProtonBuffer.html">IProtonBuffer</a> Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism.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>Reimplemented from <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#afaa919377d569c8d2e995d98bc63be63">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a>.</p>
</div>
</div>
<a id="a812fea47aee1c6098bf4637a4ed4db6c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a812fea47aee1c6098bf4637a4ed4db6c">&#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">override bool Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism.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">inline</span><span class="mlabel">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="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a7551c43011de4767250d398df8b94068">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a>.</p>
</div>
</div>
<a id="aee899ddbab177226270633f3c8e8216a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee899ddbab177226270633f3c8e8216a">&#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">override void Apache.Qpid.Proton.Engine.Sasl.Client.AbstractScramSHAMechanism.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>Reimplemented from <a class="el" href="classApache_1_1Qpid_1_1Proton_1_1Engine_1_1Sasl_1_1Client_1_1AbstractMechanism.html#a6001a6713477491eda12f5462e1c6907">Apache.Qpid.Proton.Engine.Sasl.Client.AbstractMechanism</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>src/Proton/Engine/Sasl/Client/AbstractScramSHAMechanism.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>