DragonNest/Common/SVNLib/doc/svn__auth_8h-source.html
2024-12-19 09:48:26 +08:00

868 lines
98 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Subversion: svn_auth.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
<li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<form action="search.php" method="get">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
<td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
</tr>
</table>
</form>
</li>
</ul>
</div>
<h1>svn_auth.h</h1><a href="svn__auth_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/**</span>
<a name="l00002"></a>00002 <span class="comment"> * @copyright</span>
<a name="l00003"></a>00003 <span class="comment"> * ====================================================================</span>
<a name="l00004"></a>00004 <span class="comment"> * Copyright (c) 2000-2004 CollabNet. All rights reserved.</span>
<a name="l00005"></a>00005 <span class="comment"> *</span>
<a name="l00006"></a>00006 <span class="comment"> * This software is licensed as described in the file COPYING, which</span>
<a name="l00007"></a>00007 <span class="comment"> * you should have received as part of this distribution. The terms</span>
<a name="l00008"></a>00008 <span class="comment"> * are also available at http://subversion.tigris.org/license-1.html.</span>
<a name="l00009"></a>00009 <span class="comment"> * If newer versions of this license are posted there, you may use a</span>
<a name="l00010"></a>00010 <span class="comment"> * newer version instead, at your option.</span>
<a name="l00011"></a>00011 <span class="comment"> *</span>
<a name="l00012"></a>00012 <span class="comment"> * This software consists of voluntary contributions made by many</span>
<a name="l00013"></a>00013 <span class="comment"> * individuals. For exact contribution history, see the revision</span>
<a name="l00014"></a>00014 <span class="comment"> * history and logs, available at http://subversion.tigris.org/.</span>
<a name="l00015"></a>00015 <span class="comment"> * ====================================================================</span>
<a name="l00016"></a>00016 <span class="comment"> * @endcopyright</span>
<a name="l00017"></a>00017 <span class="comment"> *</span>
<a name="l00018"></a>00018 <span class="comment"> * @file svn_auth.h</span>
<a name="l00019"></a>00019 <span class="comment"> * @brief Subversion's authentication system</span>
<a name="l00020"></a>00020 <span class="comment"> */</span>
<a name="l00021"></a>00021
<a name="l00022"></a>00022 <span class="preprocessor">#ifndef SVN_AUTH_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span><span class="preprocessor">#define SVN_AUTH_H</span>
<a name="l00024"></a>00024 <span class="preprocessor"></span>
<a name="l00025"></a>00025 <span class="preprocessor">#include &lt;apr_pools.h&gt;</span>
<a name="l00026"></a>00026
<a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="svn__types_8h.html" title="Subversion&amp;#39;s data types.">svn_types.h</a>"</span>
<a name="l00028"></a>00028
<a name="l00029"></a>00029 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00031"></a>00031 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
<a name="l00032"></a>00032 <span class="comment"></span>
<a name="l00033"></a>00033 <span class="comment">/** Overview of the svn authentication system.</span>
<a name="l00034"></a>00034 <span class="comment"> *</span>
<a name="l00035"></a>00035 <span class="comment"> * We define an authentication "provider" as a module that is able to</span>
<a name="l00036"></a>00036 <span class="comment"> * return a specific set of credentials. (e.g. username/password,</span>
<a name="l00037"></a>00037 <span class="comment"> * certificate, etc.) Each provider implements a vtable that</span>
<a name="l00038"></a>00038 <span class="comment"> *</span>
<a name="l00039"></a>00039 <span class="comment"> * - can fetch initial credentials</span>
<a name="l00040"></a>00040 <span class="comment"> * - can retry the fetch (or try to fetch something different)</span>
<a name="l00041"></a>00041 <span class="comment"> * - can store the credentials for future use</span>
<a name="l00042"></a>00042 <span class="comment"> *</span>
<a name="l00043"></a>00043 <span class="comment"> * For any given type of credentials, there can exist any number of</span>
<a name="l00044"></a>00044 <span class="comment"> * separate providers -- each provider has a different method of</span>
<a name="l00045"></a>00045 <span class="comment"> * fetching. (i.e. from a disk store, by prompting the user, etc.)</span>
<a name="l00046"></a>00046 <span class="comment"> *</span>
<a name="l00047"></a>00047 <span class="comment"> * The application begins by creating an auth baton object, and</span>
<a name="l00048"></a>00048 <span class="comment"> * "registers" some number of providers with the auth baton, in a</span>
<a name="l00049"></a>00049 <span class="comment"> * specific order. (For example, it may first register a</span>
<a name="l00050"></a>00050 <span class="comment"> * username/password provider that looks in disk store, then register</span>
<a name="l00051"></a>00051 <span class="comment"> * a username/password provider that prompts the user.)</span>
<a name="l00052"></a>00052 <span class="comment"> *</span>
<a name="l00053"></a>00053 <span class="comment"> * Later on, when any svn library is challenged, it asks the auth</span>
<a name="l00054"></a>00054 <span class="comment"> * baton for the specific credentials. If the initial credentials</span>
<a name="l00055"></a>00055 <span class="comment"> * fail to authenticate, the caller keeps requesting new credentials.</span>
<a name="l00056"></a>00056 <span class="comment"> * Under the hood, libsvn_auth effectively "walks" over each provider</span>
<a name="l00057"></a>00057 <span class="comment"> * (in order of registry), one at a time, until all the providers have</span>
<a name="l00058"></a>00058 <span class="comment"> * exhausted all their retry options.</span>
<a name="l00059"></a>00059 <span class="comment"> *</span>
<a name="l00060"></a>00060 <span class="comment"> * This system allows an application to flexibly define authentication</span>
<a name="l00061"></a>00061 <span class="comment"> * behaviors (by changing registration order), and very easily write</span>
<a name="l00062"></a>00062 <span class="comment"> * new authentication providers.</span>
<a name="l00063"></a>00063 <span class="comment"> *</span>
<a name="l00064"></a>00064 <span class="comment"> * An auth_baton also contains an internal hashtable of run-time</span>
<a name="l00065"></a>00065 <span class="comment"> * parameters; any provider or library layer can set these run-time</span>
<a name="l00066"></a>00066 <span class="comment"> * parameters at any time, so that the provider has access to the</span>
<a name="l00067"></a>00067 <span class="comment"> * data. (For example, certain run-time data may not be available</span>
<a name="l00068"></a>00068 <span class="comment"> * until an authentication challenge is made.) Each credential type</span>
<a name="l00069"></a>00069 <span class="comment"> * must document the run-time parameters that are made available to</span>
<a name="l00070"></a>00070 <span class="comment"> * its providers.</span>
<a name="l00071"></a>00071 <span class="comment"> *</span>
<a name="l00072"></a>00072 <span class="comment"> * @defgroup auth_fns Authentication functions</span>
<a name="l00073"></a>00073 <span class="comment"> * @{</span>
<a name="l00074"></a>00074 <span class="comment"> */</span>
<a name="l00075"></a>00075
<a name="l00076"></a>00076 <span class="comment"></span>
<a name="l00077"></a>00077 <span class="comment">/** The type of a Subversion authentication object */</span>
<a name="l00078"></a><a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d">00078</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d" title="The type of a Subversion authentication object.">svn_auth_baton_t</a> <a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d" title="The type of a Subversion authentication object.">svn_auth_baton_t</a>;
<a name="l00079"></a>00079 <span class="comment"></span>
<a name="l00080"></a>00080 <span class="comment">/** The type of a Subversion authentication-iteration object */</span>
<a name="l00081"></a><a class="code" href="group__auth__fns.html#g1ac4eb8d42d56257c6ba607f976b2979">00081</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="group__auth__fns.html#g1ac4eb8d42d56257c6ba607f976b2979" title="The type of a Subversion authentication-iteration object.">svn_auth_iterstate_t</a> <a class="code" href="group__auth__fns.html#g1ac4eb8d42d56257c6ba607f976b2979" title="The type of a Subversion authentication-iteration object.">svn_auth_iterstate_t</a>;
<a name="l00082"></a>00082
<a name="l00083"></a>00083 <span class="comment"></span>
<a name="l00084"></a>00084 <span class="comment">/** The main authentication "provider" vtable. */</span>
<a name="l00085"></a><a class="code" href="structsvn__auth__provider__t.html">00085</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__provider__t.html" title="The main authentication &amp;quot;provider&amp;quot; vtable.">svn_auth_provider_t</a>
<a name="l00086"></a>00086 {<span class="comment"></span>
<a name="l00087"></a>00087 <span class="comment"> /** The kind of credentials this provider knows how to retrieve. */</span>
<a name="l00088"></a><a class="code" href="structsvn__auth__provider__t.html#0d358c058410dfc169d2efa3cd76f477">00088</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__provider__t.html#0d358c058410dfc169d2efa3cd76f477" title="The kind of credentials this provider knows how to retrieve.">cred_kind</a>;
<a name="l00089"></a>00089 <span class="comment"></span>
<a name="l00090"></a>00090 <span class="comment"> /** Get an initial set of credentials.</span>
<a name="l00091"></a>00091 <span class="comment"> *</span>
<a name="l00092"></a>00092 <span class="comment"> * Set @a *credentials to a set of valid credentials within @a</span>
<a name="l00093"></a>00093 <span class="comment"> * realmstring, or NULL if no credentials are available. Set @a</span>
<a name="l00094"></a>00094 <span class="comment"> * *iter_baton to context that allows a subsequent call to @c</span>
<a name="l00095"></a>00095 <span class="comment"> * next_credentials, in case the first credentials fail to</span>
<a name="l00096"></a>00096 <span class="comment"> * authenticate. @a provider_baton is general context for the</span>
<a name="l00097"></a>00097 <span class="comment"> * vtable, @a parameters contains any run-time data that the</span>
<a name="l00098"></a>00098 <span class="comment"> * provider may need, and @a realmstring comes from the</span>
<a name="l00099"></a>00099 <span class="comment"> * svn_auth_first_credentials() call.</span>
<a name="l00100"></a>00100 <span class="comment"> */</span>
<a name="l00101"></a>00101 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> * (*first_credentials)(<span class="keywordtype">void</span> **credentials,
<a name="l00102"></a>00102 <span class="keywordtype">void</span> **iter_baton,
<a name="l00103"></a>00103 <span class="keywordtype">void</span> *provider_baton,
<a name="l00104"></a>00104 apr_hash_t *parameters,
<a name="l00105"></a>00105 <span class="keyword">const</span> <span class="keywordtype">char</span> *realmstring,
<a name="l00106"></a>00106 apr_pool_t *pool);
<a name="l00107"></a>00107 <span class="comment"></span>
<a name="l00108"></a>00108 <span class="comment"> /** Get a different set of credentials.</span>
<a name="l00109"></a>00109 <span class="comment"> *</span>
<a name="l00110"></a>00110 <span class="comment"> * Set @a *credentials to another set of valid credentials (using @a</span>
<a name="l00111"></a>00111 <span class="comment"> * iter_baton as the context from previous call to first_credentials</span>
<a name="l00112"></a>00112 <span class="comment"> * or next_credentials). If no more credentials are available, set</span>
<a name="l00113"></a>00113 <span class="comment"> * @a *credentials to NULL. If the provider only has one set of</span>
<a name="l00114"></a>00114 <span class="comment"> * credentials, this function pointer should simply be NULL. @a</span>
<a name="l00115"></a>00115 <span class="comment"> * provider_baton is general context for the vtable, @a parameters</span>
<a name="l00116"></a>00116 <span class="comment"> * contains any run-time data that the provider may need, and @a</span>
<a name="l00117"></a>00117 <span class="comment"> * realmstring comes from the svn_auth_first_credentials() call.</span>
<a name="l00118"></a>00118 <span class="comment"> */</span>
<a name="l00119"></a>00119 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> * (*next_credentials)(<span class="keywordtype">void</span> **credentials,
<a name="l00120"></a>00120 <span class="keywordtype">void</span> *iter_baton,
<a name="l00121"></a>00121 <span class="keywordtype">void</span> *provider_baton,
<a name="l00122"></a>00122 apr_hash_t *parameters,
<a name="l00123"></a>00123 <span class="keyword">const</span> <span class="keywordtype">char</span> *realmstring,
<a name="l00124"></a>00124 apr_pool_t *pool);
<a name="l00125"></a>00125 <span class="comment"></span>
<a name="l00126"></a>00126 <span class="comment"> /** Save credentials.</span>
<a name="l00127"></a>00127 <span class="comment"> *</span>
<a name="l00128"></a>00128 <span class="comment"> * Store @a credentials for future use. @a provider_baton is</span>
<a name="l00129"></a>00129 <span class="comment"> * general context for the vtable, and @a parameters contains any</span>
<a name="l00130"></a>00130 <span class="comment"> * run-time data the provider may need. Set @a *saved to TRUE if</span>
<a name="l00131"></a>00131 <span class="comment"> * the save happened, or FALSE if not. The provider is not required</span>
<a name="l00132"></a>00132 <span class="comment"> * to save; if it refuses or is unable to save for non-fatal</span>
<a name="l00133"></a>00133 <span class="comment"> * reasons, return FALSE. If the provider never saves data, then</span>
<a name="l00134"></a>00134 <span class="comment"> * this function pointer should simply be NULL. @a realmstring comes</span>
<a name="l00135"></a>00135 <span class="comment"> * from the svn_auth_first_credentials() call.</span>
<a name="l00136"></a>00136 <span class="comment"> */</span>
<a name="l00137"></a>00137 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> * (*save_credentials)(<a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> *saved,
<a name="l00138"></a>00138 <span class="keywordtype">void</span> *credentials,
<a name="l00139"></a>00139 <span class="keywordtype">void</span> *provider_baton,
<a name="l00140"></a>00140 apr_hash_t *parameters,
<a name="l00141"></a>00141 <span class="keyword">const</span> <span class="keywordtype">char</span> *realmstring,
<a name="l00142"></a>00142 apr_pool_t *pool);
<a name="l00143"></a>00143
<a name="l00144"></a>00144 } <a class="code" href="structsvn__auth__provider__t.html" title="The main authentication &amp;quot;provider&amp;quot; vtable.">svn_auth_provider_t</a>;
<a name="l00145"></a>00145
<a name="l00146"></a>00146 <span class="comment"></span>
<a name="l00147"></a>00147 <span class="comment">/** A provider object, ready to be put into an array and given to</span>
<a name="l00148"></a>00148 <span class="comment"> svn_auth_open(). */</span>
<a name="l00149"></a><a class="code" href="structsvn__auth__provider__object__t.html">00149</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a>
<a name="l00150"></a>00150 {
<a name="l00151"></a>00151 <span class="keyword">const</span> <a class="code" href="structsvn__auth__provider__t.html" title="The main authentication &amp;quot;provider&amp;quot; vtable.">svn_auth_provider_t</a> *vtable;
<a name="l00152"></a>00152 <span class="keywordtype">void</span> *provider_baton;
<a name="l00153"></a>00153
<a name="l00154"></a>00154 } <a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a>;
<a name="l00155"></a>00155
<a name="l00156"></a>00156
<a name="l00157"></a>00157 <span class="comment"></span>
<a name="l00158"></a>00158 <span class="comment">/** Specific types of credentials **/</span>
<a name="l00159"></a>00159 <span class="comment"></span>
<a name="l00160"></a>00160 <span class="comment">/** Simple username/password pair credential kind.</span>
<a name="l00161"></a>00161 <span class="comment"> *</span>
<a name="l00162"></a>00162 <span class="comment"> * The following auth parameters may be available to the providers:</span>
<a name="l00163"></a>00163 <span class="comment"> *</span>
<a name="l00164"></a>00164 <span class="comment"> * - @c SVN_AUTH_PARAM_NO_AUTH_CACHE (@c void*)</span>
<a name="l00165"></a>00165 <span class="comment"> * - @c SVN_AUTH_PARAM_DEFAULT_USERNAME (@c char*)</span>
<a name="l00166"></a>00166 <span class="comment"> * - @c SVN_AUTH_PARAM_DEFAULT_PASSWORD (@c char*)</span>
<a name="l00167"></a>00167 <span class="comment"> */</span>
<a name="l00168"></a><a class="code" href="group__auth__fns.html#g32d8f21dd9e0e36dca43bd5961d95ec1">00168</a> <span class="preprocessor">#define SVN_AUTH_CRED_SIMPLE "svn.simple"</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00170"></a>00170 <span class="comment">/** @c SVN_AUTH_CRED_SIMPLE credentials. */</span>
<a name="l00171"></a><a class="code" href="structsvn__auth__cred__simple__t.html">00171</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__cred__simple__t.html" title="SVN_AUTH_CRED_SIMPLE credentials.">svn_auth_cred_simple_t</a>
<a name="l00172"></a>00172 {<span class="comment"></span>
<a name="l00173"></a>00173 <span class="comment"> /** Username */</span>
<a name="l00174"></a><a class="code" href="structsvn__auth__cred__simple__t.html#ca61326f536c24bf136768f785a32344">00174</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__cred__simple__t.html#ca61326f536c24bf136768f785a32344" title="Username.">username</a>;<span class="comment"></span>
<a name="l00175"></a>00175 <span class="comment"> /** Password */</span>
<a name="l00176"></a><a class="code" href="structsvn__auth__cred__simple__t.html#36cdf3022ae54ec983986ef4681d4c30">00176</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__cred__simple__t.html#36cdf3022ae54ec983986ef4681d4c30" title="Password.">password</a>;<span class="comment"></span>
<a name="l00177"></a>00177 <span class="comment"> /** Indicates if the credentials may be saved (to disk). For example, a</span>
<a name="l00178"></a>00178 <span class="comment"> * GUI prompt implementation with a remember password checkbox shall set</span>
<a name="l00179"></a>00179 <span class="comment"> * @a may_save to TRUE if the checkbox is checked.</span>
<a name="l00180"></a>00180 <span class="comment"> */</span>
<a name="l00181"></a><a class="code" href="structsvn__auth__cred__simple__t.html#57ab107bc469ceb88dab033862a72ab4">00181</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__auth__cred__simple__t.html#57ab107bc469ceb88dab033862a72ab4" title="Indicates if the credentials may be saved (to disk).">may_save</a>;
<a name="l00182"></a>00182 } <a class="code" href="structsvn__auth__cred__simple__t.html" title="SVN_AUTH_CRED_SIMPLE credentials.">svn_auth_cred_simple_t</a>;
<a name="l00183"></a>00183
<a name="l00184"></a>00184 <span class="comment"></span>
<a name="l00185"></a>00185 <span class="comment">/** Username credential kind.</span>
<a name="l00186"></a>00186 <span class="comment"> *</span>
<a name="l00187"></a>00187 <span class="comment"> * The following optional auth parameters are relevant to the providers:</span>
<a name="l00188"></a>00188 <span class="comment"> *</span>
<a name="l00189"></a>00189 <span class="comment"> * - @c SVN_AUTH_PARAM_NO_AUTH_CACHE (@c void*)</span>
<a name="l00190"></a>00190 <span class="comment"> * - @c SVN_AUTH_PARAM_DEFAULT_USERNAME (@c char*)</span>
<a name="l00191"></a>00191 <span class="comment"> */</span>
<a name="l00192"></a><a class="code" href="group__auth__fns.html#g12378bbc34a66b2acc68e9cad5e8354e">00192</a> <span class="preprocessor">#define SVN_AUTH_CRED_USERNAME "svn.username"</span>
<a name="l00193"></a>00193 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00194"></a>00194 <span class="comment">/** @c SVN_AUTH_CRED_USERNAME credentials. */</span>
<a name="l00195"></a><a class="code" href="structsvn__auth__cred__username__t.html">00195</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__cred__username__t.html" title="SVN_AUTH_CRED_USERNAME credentials.">svn_auth_cred_username_t</a>
<a name="l00196"></a>00196 {<span class="comment"></span>
<a name="l00197"></a>00197 <span class="comment"> /** Username */</span>
<a name="l00198"></a><a class="code" href="structsvn__auth__cred__username__t.html#94b6592c04859b5a0161e789b2422de5">00198</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__cred__username__t.html#94b6592c04859b5a0161e789b2422de5" title="Username.">username</a>;<span class="comment"></span>
<a name="l00199"></a>00199 <span class="comment"> /** Indicates if the credentials may be saved (to disk). For example, a</span>
<a name="l00200"></a>00200 <span class="comment"> * GUI prompt implementation with a remember username checkbox shall set</span>
<a name="l00201"></a>00201 <span class="comment"> * @a may_save to TRUE if the checkbox is checked.</span>
<a name="l00202"></a>00202 <span class="comment"> */</span>
<a name="l00203"></a><a class="code" href="structsvn__auth__cred__username__t.html#630ebfc6cb7d09a4db8df5c917ca91ab">00203</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__auth__cred__username__t.html#630ebfc6cb7d09a4db8df5c917ca91ab" title="Indicates if the credentials may be saved (to disk).">may_save</a>;
<a name="l00204"></a>00204 } <a class="code" href="structsvn__auth__cred__username__t.html" title="SVN_AUTH_CRED_USERNAME credentials.">svn_auth_cred_username_t</a>;
<a name="l00205"></a>00205
<a name="l00206"></a>00206 <span class="comment"></span>
<a name="l00207"></a>00207 <span class="comment">/** SSL client certificate credential type.</span>
<a name="l00208"></a>00208 <span class="comment"> *</span>
<a name="l00209"></a>00209 <span class="comment"> * The following auth parameters are available to the providers:</span>
<a name="l00210"></a>00210 <span class="comment"> *</span>
<a name="l00211"></a>00211 <span class="comment"> * - @c SVN_AUTH_PARAM_CONFIG (@c svn_config_t*)</span>
<a name="l00212"></a>00212 <span class="comment"> * - @c SVN_AUTH_PARAM_SERVER_GROUP (@c char*)</span>
<a name="l00213"></a>00213 <span class="comment"> *</span>
<a name="l00214"></a>00214 <span class="comment"> * The following optional auth parameters are relevant to the providers:</span>
<a name="l00215"></a>00215 <span class="comment"> *</span>
<a name="l00216"></a>00216 <span class="comment"> * - @c SVN_AUTH_PARAM_NO_AUTH_CACHE (@c void*)</span>
<a name="l00217"></a>00217 <span class="comment"> */</span>
<a name="l00218"></a><a class="code" href="group__auth__fns.html#gbf9f622d1575beede8fe83ae220865cc">00218</a> <span class="preprocessor">#define SVN_AUTH_CRED_SSL_CLIENT_CERT "svn.ssl.client-cert"</span>
<a name="l00219"></a>00219 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00220"></a>00220 <span class="comment">/** @c SVN_AUTH_CRED_SSL_CLIENT_CERT credentials. */</span>
<a name="l00221"></a><a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html">00221</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html" title="SVN_AUTH_CRED_SSL_CLIENT_CERT credentials.">svn_auth_cred_ssl_client_cert_t</a>
<a name="l00222"></a>00222 {<span class="comment"></span>
<a name="l00223"></a>00223 <span class="comment"> /** Full paths to the certificate file */</span>
<a name="l00224"></a><a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html#0228bfdd58c212759df32eba5eded2e7">00224</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html#0228bfdd58c212759df32eba5eded2e7" title="Full paths to the certificate file.">cert_file</a>;<span class="comment"></span>
<a name="l00225"></a>00225 <span class="comment"> /** Indicates if the credentials may be saved (to disk). For example, a</span>
<a name="l00226"></a>00226 <span class="comment"> * GUI prompt implementation with a remember certificate checkbox shall</span>
<a name="l00227"></a>00227 <span class="comment"> * set @a may_save to TRUE if the checkbox is checked.</span>
<a name="l00228"></a>00228 <span class="comment"> */</span>
<a name="l00229"></a><a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html#d0172bcdd7c85658e1c3e8b44400f26b">00229</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html#d0172bcdd7c85658e1c3e8b44400f26b" title="Indicates if the credentials may be saved (to disk).">may_save</a>;
<a name="l00230"></a>00230 } <a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html" title="SVN_AUTH_CRED_SSL_CLIENT_CERT credentials.">svn_auth_cred_ssl_client_cert_t</a>;
<a name="l00231"></a>00231
<a name="l00232"></a>00232 <span class="comment"></span>
<a name="l00233"></a>00233 <span class="comment">/** SSL client certificate passphrase credential type.</span>
<a name="l00234"></a>00234 <span class="comment"> *</span>
<a name="l00235"></a>00235 <span class="comment"> * @note The realmstring used with this credential type must be a name that</span>
<a name="l00236"></a>00236 <span class="comment"> * makes it possible for the user to identify the certificate.</span>
<a name="l00237"></a>00237 <span class="comment"> *</span>
<a name="l00238"></a>00238 <span class="comment"> * The following auth parameters are available to the providers:</span>
<a name="l00239"></a>00239 <span class="comment"> *</span>
<a name="l00240"></a>00240 <span class="comment"> * - @c SVN_AUTH_PARAM_CONFIG (@c svn_config_t*)</span>
<a name="l00241"></a>00241 <span class="comment"> * - @c SVN_AUTH_PARAM_SERVER_GROUP (@c char*)</span>
<a name="l00242"></a>00242 <span class="comment"> *</span>
<a name="l00243"></a>00243 <span class="comment"> * The following optional auth parameters are relevant to the providers:</span>
<a name="l00244"></a>00244 <span class="comment"> *</span>
<a name="l00245"></a>00245 <span class="comment"> * - @c SVN_AUTH_PARAM_NO_AUTH_CACHE (@c void*)</span>
<a name="l00246"></a>00246 <span class="comment"> */</span>
<a name="l00247"></a><a class="code" href="group__auth__fns.html#g6b0c78d76560ac103bb431026d2c80ba">00247</a> <span class="preprocessor">#define SVN_AUTH_CRED_SSL_CLIENT_CERT_PW "svn.ssl.client-passphrase"</span>
<a name="l00248"></a>00248 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00249"></a>00249 <span class="comment">/** @c SVN_AUTH_CRED_SSL_CLIENT_CERT_PW credentials. */</span>
<a name="l00250"></a><a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html">00250</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html" title="SVN_AUTH_CRED_SSL_CLIENT_CERT_PW credentials.">svn_auth_cred_ssl_client_cert_pw_t</a>
<a name="l00251"></a>00251 {<span class="comment"></span>
<a name="l00252"></a>00252 <span class="comment"> /** Certificate password */</span>
<a name="l00253"></a><a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html#fbbb92f4f19fc13036b7c7611f48725f">00253</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html#fbbb92f4f19fc13036b7c7611f48725f" title="Certificate password.">password</a>;<span class="comment"></span>
<a name="l00254"></a>00254 <span class="comment"> /** Indicates if the credentials may be saved (to disk). For example, a</span>
<a name="l00255"></a>00255 <span class="comment"> * GUI prompt implementation with a remember password checkbox shall set</span>
<a name="l00256"></a>00256 <span class="comment"> * @a may_save to TRUE if the checkbox is checked.</span>
<a name="l00257"></a>00257 <span class="comment"> */</span>
<a name="l00258"></a><a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html#8dac9fe51a5825793d9984f71ee56dcb">00258</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html#8dac9fe51a5825793d9984f71ee56dcb" title="Indicates if the credentials may be saved (to disk).">may_save</a>;
<a name="l00259"></a>00259 } <a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html" title="SVN_AUTH_CRED_SSL_CLIENT_CERT_PW credentials.">svn_auth_cred_ssl_client_cert_pw_t</a>;
<a name="l00260"></a>00260
<a name="l00261"></a>00261 <span class="comment"></span>
<a name="l00262"></a>00262 <span class="comment">/** SSL server verification credential type.</span>
<a name="l00263"></a>00263 <span class="comment"> *</span>
<a name="l00264"></a>00264 <span class="comment"> * The following auth parameters are available to the providers:</span>
<a name="l00265"></a>00265 <span class="comment"> *</span>
<a name="l00266"></a>00266 <span class="comment"> * - @c SVN_AUTH_PARAM_CONFIG (@c svn_config_t*)</span>
<a name="l00267"></a>00267 <span class="comment"> * - @c SVN_AUTH_PARAM_SERVER_GROUP (@c char*)</span>
<a name="l00268"></a>00268 <span class="comment"> * - @c SVN_AUTH_PARAM_SSL_SERVER_FAILURES (@c apr_uint32_t*)</span>
<a name="l00269"></a>00269 <span class="comment"> * - @c SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO</span>
<a name="l00270"></a>00270 <span class="comment"> * (@c svn_auth_ssl_server_cert_info_t*)</span>
<a name="l00271"></a>00271 <span class="comment"> *</span>
<a name="l00272"></a>00272 <span class="comment"> * The following optional auth parameters are relevant to the providers:</span>
<a name="l00273"></a>00273 <span class="comment"> *</span>
<a name="l00274"></a>00274 <span class="comment"> * - @c SVN_AUTH_PARAM_NO_AUTH_CACHE (@c void*)</span>
<a name="l00275"></a>00275 <span class="comment"> */</span>
<a name="l00276"></a><a class="code" href="group__auth__fns.html#g86bda1cf1af50c7ac5d65cda286686e2">00276</a> <span class="preprocessor">#define SVN_AUTH_CRED_SSL_SERVER_TRUST "svn.ssl.server"</span>
<a name="l00277"></a>00277 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00278"></a>00278 <span class="comment">/** SSL server certificate information used by @c</span>
<a name="l00279"></a>00279 <span class="comment"> * SVN_AUTH_CRED_SSL_SERVER_TRUST providers.</span>
<a name="l00280"></a>00280 <span class="comment"> */</span>
<a name="l00281"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html">00281</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html" title="SSL server certificate information used by SVN_AUTH_CRED_SSL_SERVER_TRUST providers...">svn_auth_ssl_server_cert_info_t</a>
<a name="l00282"></a>00282 {<span class="comment"></span>
<a name="l00283"></a>00283 <span class="comment"> /** Primary CN */</span>
<a name="l00284"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#f5c199081ea98c10ffb64db579986961">00284</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#f5c199081ea98c10ffb64db579986961" title="Primary CN.">hostname</a>;<span class="comment"></span>
<a name="l00285"></a>00285 <span class="comment"> /** ASCII fingerprint */</span>
<a name="l00286"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#13ac9907608952183cdaa2be8a5822a0">00286</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#13ac9907608952183cdaa2be8a5822a0" title="ASCII fingerprint.">fingerprint</a>;<span class="comment"></span>
<a name="l00287"></a>00287 <span class="comment"> /** ASCII date from which the certificate is valid */</span>
<a name="l00288"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#25082853d863ac6f3803616d41dcbb9d">00288</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#25082853d863ac6f3803616d41dcbb9d" title="ASCII date from which the certificate is valid.">valid_from</a>;<span class="comment"></span>
<a name="l00289"></a>00289 <span class="comment"> /** ASCII date until which the certificate is valid */</span>
<a name="l00290"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#81f46ccdddf2611a86fe7c02e6227598">00290</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#81f46ccdddf2611a86fe7c02e6227598" title="ASCII date until which the certificate is valid.">valid_until</a>;<span class="comment"></span>
<a name="l00291"></a>00291 <span class="comment"> /** DN of the certificate issuer */</span>
<a name="l00292"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#4fda462229f4bfff13f1756555a0cd32">00292</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#4fda462229f4bfff13f1756555a0cd32" title="DN of the certificate issuer.">issuer_dname</a>;<span class="comment"></span>
<a name="l00293"></a>00293 <span class="comment"> /** Base-64 encoded DER certificate representation */</span>
<a name="l00294"></a><a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#1485385c5a42bf8b367af21533f80dca">00294</a> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structsvn__auth__ssl__server__cert__info__t.html#1485385c5a42bf8b367af21533f80dca" title="Base-64 encoded DER certificate representation.">ascii_cert</a>;
<a name="l00295"></a>00295 } <a class="code" href="structsvn__auth__ssl__server__cert__info__t.html" title="SSL server certificate information used by SVN_AUTH_CRED_SSL_SERVER_TRUST providers...">svn_auth_ssl_server_cert_info_t</a>;
<a name="l00296"></a>00296 <span class="comment"></span>
<a name="l00297"></a>00297 <span class="comment">/**</span>
<a name="l00298"></a>00298 <span class="comment"> * Return a deep copy of @a info, allocated in @a pool.</span>
<a name="l00299"></a>00299 <span class="comment"> *</span>
<a name="l00300"></a>00300 <span class="comment"> * @since New in 1.3.</span>
<a name="l00301"></a>00301 <span class="comment"> */</span>
<a name="l00302"></a>00302 <a class="code" href="structsvn__auth__ssl__server__cert__info__t.html" title="SSL server certificate information used by SVN_AUTH_CRED_SSL_SERVER_TRUST providers...">svn_auth_ssl_server_cert_info_t</a> *
<a name="l00303"></a>00303 <a class="code" href="group__auth__fns.html#ge9bbd41b063adf3212e6bc2d10079089" title="Return a deep copy of info, allocated in pool.">svn_auth_ssl_server_cert_info_dup</a>(<span class="keyword">const</span> <a class="code" href="structsvn__auth__ssl__server__cert__info__t.html" title="SSL server certificate information used by SVN_AUTH_CRED_SSL_SERVER_TRUST providers...">svn_auth_ssl_server_cert_info_t</a> *info,
<a name="l00304"></a>00304 apr_pool_t *pool);
<a name="l00305"></a>00305 <span class="comment"></span>
<a name="l00306"></a>00306 <span class="comment">/** @c SVN_AUTH_CRED_SSL_SERVER_TRUST credentials. */</span>
<a name="l00307"></a><a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html">00307</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html" title="SVN_AUTH_CRED_SSL_SERVER_TRUST credentials.">svn_auth_cred_ssl_server_trust_t</a>
<a name="l00308"></a>00308 {<span class="comment"></span>
<a name="l00309"></a>00309 <span class="comment"> /** Indicates if the credentials may be saved (to disk). For example, a</span>
<a name="l00310"></a>00310 <span class="comment"> * GUI prompt implementation with a checkbox to accept the certificate</span>
<a name="l00311"></a>00311 <span class="comment"> * permanently shall set @a may_save to TRUE if the checkbox is checked.</span>
<a name="l00312"></a>00312 <span class="comment"> */</span>
<a name="l00313"></a><a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html#1f194bad8cec30013e9cdd6bc266fba5">00313</a> <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> <a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html#1f194bad8cec30013e9cdd6bc266fba5" title="Indicates if the credentials may be saved (to disk).">may_save</a>;<span class="comment"></span>
<a name="l00314"></a>00314 <span class="comment"> /** Bit mask of the accepted failures */</span>
<a name="l00315"></a><a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html#e1ccadf10cb428b0bd70347f00076100">00315</a> apr_uint32_t <a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html#e1ccadf10cb428b0bd70347f00076100" title="Bit mask of the accepted failures.">accepted_failures</a>;
<a name="l00316"></a>00316 } <a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html" title="SVN_AUTH_CRED_SSL_SERVER_TRUST credentials.">svn_auth_cred_ssl_server_trust_t</a>;
<a name="l00317"></a>00317
<a name="l00318"></a>00318
<a name="l00319"></a>00319 <span class="comment"></span>
<a name="l00320"></a>00320 <span class="comment">/** Credential-constructing prompt functions. **/</span>
<a name="l00321"></a>00321 <span class="comment"></span>
<a name="l00322"></a>00322 <span class="comment">/** These exist so that different client applications can use</span>
<a name="l00323"></a>00323 <span class="comment"> * different prompt mechanisms to supply the same credentials. For</span>
<a name="l00324"></a>00324 <span class="comment"> * example, if authentication requires a username and password, a</span>
<a name="l00325"></a>00325 <span class="comment"> * command-line client's prompting function might prompt first for the</span>
<a name="l00326"></a>00326 <span class="comment"> * username and then for the password, whereas a GUI client's would</span>
<a name="l00327"></a>00327 <span class="comment"> * present a single dialog box asking for both, and a telepathic</span>
<a name="l00328"></a>00328 <span class="comment"> * client's would read all the information directly from the user's</span>
<a name="l00329"></a>00329 <span class="comment"> * mind. All these prompting functions return the same type of</span>
<a name="l00330"></a>00330 <span class="comment"> * credential, but the information used to construct the credential is</span>
<a name="l00331"></a>00331 <span class="comment"> * gathered in an interface-specific way in each case.</span>
<a name="l00332"></a>00332 <span class="comment"> */</span>
<a name="l00333"></a>00333 <span class="comment"></span>
<a name="l00334"></a>00334 <span class="comment">/** Set @a *cred by prompting the user, allocating @a *cred in @a pool.</span>
<a name="l00335"></a>00335 <span class="comment"> * @a baton is an implementation-specific closure.</span>
<a name="l00336"></a>00336 <span class="comment"> *</span>
<a name="l00337"></a>00337 <span class="comment"> * If @a realm is non-NULL, maybe use it in the prompt string.</span>
<a name="l00338"></a>00338 <span class="comment"> *</span>
<a name="l00339"></a>00339 <span class="comment"> * If @a username is non-NULL, then the user might be prompted only</span>
<a name="l00340"></a>00340 <span class="comment"> * for a password, but @a *cred would still be filled with both</span>
<a name="l00341"></a>00341 <span class="comment"> * username and password. For example, a typical usage would be to</span>
<a name="l00342"></a>00342 <span class="comment"> * pass @a username on the first call, but then leave it NULL for</span>
<a name="l00343"></a>00343 <span class="comment"> * subsequent calls, on the theory that if credentials failed, it's</span>
<a name="l00344"></a>00344 <span class="comment"> * as likely to be due to incorrect username as incorrect password.</span>
<a name="l00345"></a>00345 <span class="comment"> *</span>
<a name="l00346"></a>00346 <span class="comment"> * If @a may_save is FALSE, the auth system does not allow the credentials</span>
<a name="l00347"></a>00347 <span class="comment"> * to be saved (to disk). A prompt function shall not ask the user if the</span>
<a name="l00348"></a>00348 <span class="comment"> * credentials shall be saved if @a may_save is FALSE. For example, a GUI</span>
<a name="l00349"></a>00349 <span class="comment"> * client with a remember password checkbox would grey out the checkbox if</span>
<a name="l00350"></a>00350 <span class="comment"> * @a may_save is FALSE.</span>
<a name="l00351"></a>00351 <span class="comment"> */</span>
<a name="l00352"></a>00352 <span class="keyword">typedef</span> <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*svn_auth_simple_prompt_func_t)
<a name="l00353"></a><a class="code" href="group__auth__fns.html#gb3e889e27559677e7e1a13a9142a381d">00353</a> (<a class="code" href="structsvn__auth__cred__simple__t.html" title="SVN_AUTH_CRED_SIMPLE credentials.">svn_auth_cred_simple_t</a> **cred,
<a name="l00354"></a>00354 <span class="keywordtype">void</span> *baton,
<a name="l00355"></a>00355 <span class="keyword">const</span> <span class="keywordtype">char</span> *realm,
<a name="l00356"></a>00356 <span class="keyword">const</span> <span class="keywordtype">char</span> *username,
<a name="l00357"></a>00357 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> may_save,
<a name="l00358"></a>00358 apr_pool_t *pool);
<a name="l00359"></a>00359
<a name="l00360"></a>00360 <span class="comment"></span>
<a name="l00361"></a>00361 <span class="comment">/** Set @a *cred by prompting the user, allocating @a *cred in @a pool.</span>
<a name="l00362"></a>00362 <span class="comment"> * @a baton is an implementation-specific closure.</span>
<a name="l00363"></a>00363 <span class="comment"> *</span>
<a name="l00364"></a>00364 <span class="comment"> * If @a realm is non-NULL, maybe use it in the prompt string.</span>
<a name="l00365"></a>00365 <span class="comment"> *</span>
<a name="l00366"></a>00366 <span class="comment"> * If @a may_save is FALSE, the auth system does not allow the credentials</span>
<a name="l00367"></a>00367 <span class="comment"> * to be saved (to disk). A prompt function shall not ask the user if the</span>
<a name="l00368"></a>00368 <span class="comment"> * credentials shall be saved if @a may_save is FALSE. For example, a GUI</span>
<a name="l00369"></a>00369 <span class="comment"> * client with a remember username checkbox would grey out the checkbox if</span>
<a name="l00370"></a>00370 <span class="comment"> * @a may_save is FALSE.</span>
<a name="l00371"></a>00371 <span class="comment"> */</span>
<a name="l00372"></a>00372 <span class="keyword">typedef</span> <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*svn_auth_username_prompt_func_t)
<a name="l00373"></a><a class="code" href="group__auth__fns.html#gf05167cb101739421c2e9542e27d5a88">00373</a> (<a class="code" href="structsvn__auth__cred__username__t.html" title="SVN_AUTH_CRED_USERNAME credentials.">svn_auth_cred_username_t</a> **cred,
<a name="l00374"></a>00374 <span class="keywordtype">void</span> *baton,
<a name="l00375"></a>00375 <span class="keyword">const</span> <span class="keywordtype">char</span> *realm,
<a name="l00376"></a>00376 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> may_save,
<a name="l00377"></a>00377 apr_pool_t *pool);
<a name="l00378"></a>00378
<a name="l00379"></a>00379 <span class="comment"></span>
<a name="l00380"></a>00380 <span class="comment">/** @name SSL server certificate failure bits</span>
<a name="l00381"></a>00381 <span class="comment"> *</span>
<a name="l00382"></a>00382 <span class="comment"> * @note These values are stored in the on disk auth cache by the SSL</span>
<a name="l00383"></a>00383 <span class="comment"> * server certificate auth provider, so the meaning of these bits must</span>
<a name="l00384"></a>00384 <span class="comment"> * not be changed.</span>
<a name="l00385"></a>00385 <span class="comment"> * @{</span>
<a name="l00386"></a>00386 <span class="comment"> */</span><span class="comment"></span>
<a name="l00387"></a>00387 <span class="comment">/** Certificate is not yet valid. */</span>
<a name="l00388"></a><a class="code" href="group__auth__fns.html#g241ceaea2fee42793d5ec05e80f460dd">00388</a> <span class="preprocessor">#define SVN_AUTH_SSL_NOTYETVALID 0x00000001</span>
<a name="l00389"></a>00389 <span class="preprocessor"></span><span class="comment">/** Certificate has expired. */</span>
<a name="l00390"></a><a class="code" href="group__auth__fns.html#gae0127e8e012387291902cb0cf44c150">00390</a> <span class="preprocessor">#define SVN_AUTH_SSL_EXPIRED 0x00000002</span>
<a name="l00391"></a>00391 <span class="preprocessor"></span><span class="comment">/** Certificate's CN (hostname) does not match the remote hostname. */</span>
<a name="l00392"></a><a class="code" href="group__auth__fns.html#g9c57755aef85ef30017e78b26d9c1b27">00392</a> <span class="preprocessor">#define SVN_AUTH_SSL_CNMISMATCH 0x00000004</span>
<a name="l00393"></a>00393 <span class="preprocessor"></span><span class="comment">/** @brief Certificate authority is unknown (i.e. not trusted) */</span>
<a name="l00394"></a><a class="code" href="group__auth__fns.html#g9672897802eba02cd5d2418f57120742">00394</a> <span class="preprocessor">#define SVN_AUTH_SSL_UNKNOWNCA 0x00000008</span>
<a name="l00395"></a>00395 <span class="preprocessor"></span><span class="comment">/** @brief Other failure. This can happen if neon has introduced a new</span>
<a name="l00396"></a>00396 <span class="comment"> * failure bit that we do not handle yet. */</span>
<a name="l00397"></a><a class="code" href="group__auth__fns.html#gae23f698dc7c9dd280f46c3fb3267dc2">00397</a> <span class="preprocessor">#define SVN_AUTH_SSL_OTHER 0x40000000</span>
<a name="l00398"></a>00398 <span class="preprocessor"></span><span class="comment">/** @} */</span>
<a name="l00399"></a>00399 <span class="comment"></span>
<a name="l00400"></a>00400 <span class="comment">/** Set @a *cred by prompting the user, allocating @a *cred in @a pool.</span>
<a name="l00401"></a>00401 <span class="comment"> * @a baton is an implementation-specific closure.</span>
<a name="l00402"></a>00402 <span class="comment"> *</span>
<a name="l00403"></a>00403 <span class="comment"> * @a cert_info is a structure describing the server cert that was</span>
<a name="l00404"></a>00404 <span class="comment"> * presented to the client, and @a failures is a bitmask that</span>
<a name="l00405"></a>00405 <span class="comment"> * describes exactly why the cert could not be automatically validated,</span>
<a name="l00406"></a>00406 <span class="comment"> * composed from the constants SVN_AUTH_SSL_* (@c SVN_AUTH_SSL_NOTYETVALID</span>
<a name="l00407"></a>00407 <span class="comment"> * etc.). @a realm is a string that can be used in the prompt string.</span>
<a name="l00408"></a>00408 <span class="comment"> *</span>
<a name="l00409"></a>00409 <span class="comment"> * If @a may_save is FALSE, the auth system does not allow the credentials</span>
<a name="l00410"></a>00410 <span class="comment"> * to be saved (to disk). A prompt function shall not ask the user if the</span>
<a name="l00411"></a>00411 <span class="comment"> * credentials shall be saved if @a may_save is FALSE. For example, a GUI</span>
<a name="l00412"></a>00412 <span class="comment"> * client with a trust permanently checkbox would grey out the checkbox if</span>
<a name="l00413"></a>00413 <span class="comment"> * @a may_save is FALSE.</span>
<a name="l00414"></a>00414 <span class="comment"> */</span>
<a name="l00415"></a>00415 <span class="keyword">typedef</span> <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*svn_auth_ssl_server_trust_prompt_func_t)
<a name="l00416"></a><a class="code" href="group__auth__fns.html#gc5805f633a96271f97b919297e9908a3">00416</a> (<a class="code" href="structsvn__auth__cred__ssl__server__trust__t.html" title="SVN_AUTH_CRED_SSL_SERVER_TRUST credentials.">svn_auth_cred_ssl_server_trust_t</a> **cred,
<a name="l00417"></a>00417 <span class="keywordtype">void</span> *baton,
<a name="l00418"></a>00418 <span class="keyword">const</span> <span class="keywordtype">char</span> *realm,
<a name="l00419"></a>00419 apr_uint32_t failures,
<a name="l00420"></a>00420 <span class="keyword">const</span> <a class="code" href="structsvn__auth__ssl__server__cert__info__t.html" title="SSL server certificate information used by SVN_AUTH_CRED_SSL_SERVER_TRUST providers...">svn_auth_ssl_server_cert_info_t</a> *cert_info,
<a name="l00421"></a>00421 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> may_save,
<a name="l00422"></a>00422 apr_pool_t *pool);
<a name="l00423"></a>00423
<a name="l00424"></a>00424 <span class="comment"></span>
<a name="l00425"></a>00425 <span class="comment">/** Set @a *cred by prompting the user, allocating @a *cred in @a pool.</span>
<a name="l00426"></a>00426 <span class="comment"> * @a baton is an implementation-specific closure. @a realm is a string</span>
<a name="l00427"></a>00427 <span class="comment"> * that can be used in the prompt string.</span>
<a name="l00428"></a>00428 <span class="comment"> *</span>
<a name="l00429"></a>00429 <span class="comment"> * If @a may_save is FALSE, the auth system does not allow the credentials</span>
<a name="l00430"></a>00430 <span class="comment"> * to be saved (to disk). A prompt function shall not ask the user if the</span>
<a name="l00431"></a>00431 <span class="comment"> * credentials shall be saved if @a may_save is FALSE. For example, a GUI</span>
<a name="l00432"></a>00432 <span class="comment"> * client with a remember certificate checkbox would grey out the checkbox</span>
<a name="l00433"></a>00433 <span class="comment"> * if @a may_save is FALSE.</span>
<a name="l00434"></a>00434 <span class="comment"> */</span>
<a name="l00435"></a>00435 <span class="keyword">typedef</span> <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*svn_auth_ssl_client_cert_prompt_func_t)
<a name="l00436"></a><a class="code" href="group__auth__fns.html#g5afb52c44e95354a2ec52f6fe030c5d2">00436</a> (<a class="code" href="structsvn__auth__cred__ssl__client__cert__t.html" title="SVN_AUTH_CRED_SSL_CLIENT_CERT credentials.">svn_auth_cred_ssl_client_cert_t</a> **cred,
<a name="l00437"></a>00437 <span class="keywordtype">void</span> *baton,
<a name="l00438"></a>00438 <span class="keyword">const</span> <span class="keywordtype">char</span> *realm,
<a name="l00439"></a>00439 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> may_save,
<a name="l00440"></a>00440 apr_pool_t *pool);
<a name="l00441"></a>00441
<a name="l00442"></a>00442 <span class="comment"></span>
<a name="l00443"></a>00443 <span class="comment">/** Set @a *cred by prompting the user, allocating @a *cred in @a pool.</span>
<a name="l00444"></a>00444 <span class="comment"> * @a baton is an implementation-specific closure. @a realm is a string</span>
<a name="l00445"></a>00445 <span class="comment"> * identifying the certificate, and can be used in the prompt string.</span>
<a name="l00446"></a>00446 <span class="comment"> *</span>
<a name="l00447"></a>00447 <span class="comment"> * If @a may_save is FALSE, the auth system does not allow the credentials</span>
<a name="l00448"></a>00448 <span class="comment"> * to be saved (to disk). A prompt function shall not ask the user if the</span>
<a name="l00449"></a>00449 <span class="comment"> * credentials shall be saved if @a may_save is FALSE. For example, a GUI</span>
<a name="l00450"></a>00450 <span class="comment"> * client with a remember password checkbox would grey out the checkbox if</span>
<a name="l00451"></a>00451 <span class="comment"> * @a may_save is FALSE.</span>
<a name="l00452"></a>00452 <span class="comment"> */</span>
<a name="l00453"></a>00453 <span class="keyword">typedef</span> <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> *(*svn_auth_ssl_client_cert_pw_prompt_func_t)
<a name="l00454"></a><a class="code" href="group__auth__fns.html#gfeb529b5bafaed2e3f423e4186d60f06">00454</a> (<a class="code" href="structsvn__auth__cred__ssl__client__cert__pw__t.html" title="SVN_AUTH_CRED_SSL_CLIENT_CERT_PW credentials.">svn_auth_cred_ssl_client_cert_pw_t</a> **cred,
<a name="l00455"></a>00455 <span class="keywordtype">void</span> *baton,
<a name="l00456"></a>00456 <span class="keyword">const</span> <span class="keywordtype">char</span> *realm,
<a name="l00457"></a>00457 <a class="code" href="svn__types_8h.html#22b35baddc4213c688d1bb12feea1024" title="YABT: Yet Another Boolean Type.">svn_boolean_t</a> may_save,
<a name="l00458"></a>00458 apr_pool_t *pool);
<a name="l00459"></a>00459
<a name="l00460"></a>00460
<a name="l00461"></a>00461 <span class="comment"></span>
<a name="l00462"></a>00462 <span class="comment">/** Initialize an authentication system.</span>
<a name="l00463"></a>00463 <span class="comment"> *</span>
<a name="l00464"></a>00464 <span class="comment"> * Return an authentication object in @a *auth_baton (allocated in @a</span>
<a name="l00465"></a>00465 <span class="comment"> * pool) that represents a particular instance of the svn</span>
<a name="l00466"></a>00466 <span class="comment"> * authentication system. @a providers is an array of @c</span>
<a name="l00467"></a>00467 <span class="comment"> * svn_auth_provider_object_t pointers, already allocated in @a pool</span>
<a name="l00468"></a>00468 <span class="comment"> * and intentionally ordered. These pointers will be stored within @a</span>
<a name="l00469"></a>00469 <span class="comment"> * *auth_baton, grouped by credential type, and searched in this exact</span>
<a name="l00470"></a>00470 <span class="comment"> * order.</span>
<a name="l00471"></a>00471 <span class="comment"> */</span>
<a name="l00472"></a>00472 <span class="keywordtype">void</span> <a class="code" href="group__auth__fns.html#g1655da31ec67dd89d074ffa6a4ebf14b" title="Initialize an authentication system.">svn_auth_open</a>(<a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d" title="The type of a Subversion authentication object.">svn_auth_baton_t</a> **auth_baton,
<a name="l00473"></a>00473 apr_array_header_t *providers,
<a name="l00474"></a>00474 apr_pool_t *pool);
<a name="l00475"></a>00475 <span class="comment"></span>
<a name="l00476"></a>00476 <span class="comment">/** Set an authentication run-time parameter.</span>
<a name="l00477"></a>00477 <span class="comment"> *</span>
<a name="l00478"></a>00478 <span class="comment"> * Store @a name / @a value pair as a run-time parameter in @a</span>
<a name="l00479"></a>00479 <span class="comment"> * auth_baton, making the data accessible to all providers. @a name</span>
<a name="l00480"></a>00480 <span class="comment"> * and @a value will NOT be duplicated into the auth_baton's pool.</span>
<a name="l00481"></a>00481 <span class="comment"> * To delete a run-time parameter, pass NULL for @a value.</span>
<a name="l00482"></a>00482 <span class="comment"> */</span>
<a name="l00483"></a>00483 <span class="keywordtype">void</span> <a class="code" href="group__auth__fns.html#g44ffb6371ee22a42e8755b56394ca688" title="Set an authentication run-time parameter.">svn_auth_set_parameter</a>(<a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d" title="The type of a Subversion authentication object.">svn_auth_baton_t</a> *auth_baton,
<a name="l00484"></a>00484 <span class="keyword">const</span> <span class="keywordtype">char</span> *name,
<a name="l00485"></a>00485 <span class="keyword">const</span> <span class="keywordtype">void</span> *value);
<a name="l00486"></a>00486 <span class="comment"></span>
<a name="l00487"></a>00487 <span class="comment">/** Get an authentication run-time parameter.</span>
<a name="l00488"></a>00488 <span class="comment"> *</span>
<a name="l00489"></a>00489 <span class="comment"> * Return a value for run-time parameter @a name from @a auth_baton.</span>
<a name="l00490"></a>00490 <span class="comment"> * Return NULL if the parameter doesn't exist.</span>
<a name="l00491"></a>00491 <span class="comment"> */</span>
<a name="l00492"></a>00492 <span class="keyword">const</span> <span class="keywordtype">void</span> * <a class="code" href="group__auth__fns.html#g45fd5c7dd123c9c1d7d3733fb4b3f3fa" title="Get an authentication run-time parameter.">svn_auth_get_parameter</a>(<a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d" title="The type of a Subversion authentication object.">svn_auth_baton_t</a> *auth_baton,
<a name="l00493"></a>00493 <span class="keyword">const</span> <span class="keywordtype">char</span> *name);
<a name="l00494"></a>00494 <span class="comment"></span>
<a name="l00495"></a>00495 <span class="comment">/** Universal run-time parameters, made available to all providers.</span>
<a name="l00496"></a>00496 <span class="comment"></span>
<a name="l00497"></a>00497 <span class="comment"> If you are writing a new provider, then to be a "good citizen",</span>
<a name="l00498"></a>00498 <span class="comment"> you should notice these global parameters! Note that these</span>
<a name="l00499"></a>00499 <span class="comment"> run-time params should be treated as read-only by providers; the</span>
<a name="l00500"></a>00500 <span class="comment"> application is responsible for placing them into the auth_baton</span>
<a name="l00501"></a>00501 <span class="comment"> hash. */</span>
<a name="l00502"></a>00502 <span class="comment"></span>
<a name="l00503"></a>00503 <span class="comment">/** The auth-hash prefix indicating that the parameter is global. */</span>
<a name="l00504"></a><a class="code" href="group__auth__fns.html#g6d89f869ad547640121d4dd48beb1d1b">00504</a> <span class="preprocessor">#define SVN_AUTH_PARAM_PREFIX "svn:auth:"</span>
<a name="l00505"></a>00505 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00506"></a>00506 <span class="comment">/**</span>
<a name="l00507"></a>00507 <span class="comment"> * @name Default credentials defines</span>
<a name="l00508"></a>00508 <span class="comment"> * Any 'default' credentials that came in through the application itself,</span>
<a name="l00509"></a>00509 <span class="comment"> * (e.g. --username and --password options). Property values are</span>
<a name="l00510"></a>00510 <span class="comment"> * const char *.</span>
<a name="l00511"></a>00511 <span class="comment"> * @{ */</span>
<a name="l00512"></a>00512 <span class="preprocessor">#define SVN_AUTH_PARAM_DEFAULT_USERNAME SVN_AUTH_PARAM_PREFIX "username"</span>
<a name="l00513"></a>00513 <span class="preprocessor"></span><span class="preprocessor">#define SVN_AUTH_PARAM_DEFAULT_PASSWORD SVN_AUTH_PARAM_PREFIX "password"</span>
<a name="l00514"></a>00514 <span class="preprocessor"></span><span class="comment">/** @} */</span>
<a name="l00515"></a>00515 <span class="comment"></span>
<a name="l00516"></a>00516 <span class="comment">/** @brief The application doesn't want any providers to prompt</span>
<a name="l00517"></a>00517 <span class="comment"> * users. Property value is irrelevant; only property's existence</span>
<a name="l00518"></a>00518 <span class="comment"> * matters. */</span>
<a name="l00519"></a><a class="code" href="group__auth__fns.html#gc66c329d52a1a0ad4c65a0c8fd0f8324">00519</a> <span class="preprocessor">#define SVN_AUTH_PARAM_NON_INTERACTIVE SVN_AUTH_PARAM_PREFIX "non-interactive"</span>
<a name="l00520"></a>00520 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00521"></a>00521 <span class="comment">/** @brief The application doesn't want any providers to save passwords</span>
<a name="l00522"></a>00522 <span class="comment"> * to disk. Property value is irrelevant; only property's existence</span>
<a name="l00523"></a>00523 <span class="comment"> * matters. */</span>
<a name="l00524"></a><a class="code" href="group__auth__fns.html#gc88743299a96916291545a7ab08f62b1">00524</a> <span class="preprocessor">#define SVN_AUTH_PARAM_DONT_STORE_PASSWORDS SVN_AUTH_PARAM_PREFIX \</span>
<a name="l00525"></a>00525 <span class="preprocessor"> "dont-store-passwords"</span>
<a name="l00526"></a>00526 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00527"></a>00527 <span class="comment">/** @brief The application doesn't want any providers to save credentials</span>
<a name="l00528"></a>00528 <span class="comment"> * to disk. Property value is irrelevant; only property's existence</span>
<a name="l00529"></a>00529 <span class="comment"> * matters. */</span>
<a name="l00530"></a><a class="code" href="group__auth__fns.html#g96ffebffb3f20cc37f15f96ee08fa789">00530</a> <span class="preprocessor">#define SVN_AUTH_PARAM_NO_AUTH_CACHE SVN_AUTH_PARAM_PREFIX "no-auth-cache"</span>
<a name="l00531"></a>00531 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00532"></a>00532 <span class="comment">/** @brief The following property is for SSL server cert providers. This</span>
<a name="l00533"></a>00533 <span class="comment"> * provides a pointer to an @c apr_uint32_t containing the failures</span>
<a name="l00534"></a>00534 <span class="comment"> * detected by the certificate validator. */</span>
<a name="l00535"></a><a class="code" href="group__auth__fns.html#gaaaecf652e2ec7f5c947e22e69eb938c">00535</a> <span class="preprocessor">#define SVN_AUTH_PARAM_SSL_SERVER_FAILURES SVN_AUTH_PARAM_PREFIX \</span>
<a name="l00536"></a>00536 <span class="preprocessor"> "ssl:failures"</span>
<a name="l00537"></a>00537 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00538"></a>00538 <span class="comment">/** @brief The following property is for SSL server cert providers. This</span>
<a name="l00539"></a>00539 <span class="comment"> * provides the cert info (svn_auth_ssl_server_cert_info_t). */</span>
<a name="l00540"></a><a class="code" href="group__auth__fns.html#g95fc50b793dbb019a9026f783ddcf05b">00540</a> <span class="preprocessor">#define SVN_AUTH_PARAM_SSL_SERVER_CERT_INFO SVN_AUTH_PARAM_PREFIX \</span>
<a name="l00541"></a>00541 <span class="preprocessor"> "ssl:cert-info"</span>
<a name="l00542"></a>00542 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00543"></a>00543 <span class="comment">/** Some providers need access to the @c svn_config_t configuration. */</span>
<a name="l00544"></a><a class="code" href="group__auth__fns.html#g1c41c986707991899ab975ec63538491">00544</a> <span class="preprocessor">#define SVN_AUTH_PARAM_CONFIG SVN_AUTH_PARAM_PREFIX "config"</span>
<a name="l00545"></a>00545 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00546"></a>00546 <span class="comment">/** The current server group. */</span>
<a name="l00547"></a><a class="code" href="group__auth__fns.html#g1c4d18b6b88ea56cb450be5e0c8745a1">00547</a> <span class="preprocessor">#define SVN_AUTH_PARAM_SERVER_GROUP SVN_AUTH_PARAM_PREFIX "server-group"</span>
<a name="l00548"></a>00548 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00549"></a>00549 <span class="comment">/** @brief A configuration directory that overrides the default</span>
<a name="l00550"></a>00550 <span class="comment"> * ~/.subversion. */</span>
<a name="l00551"></a><a class="code" href="group__auth__fns.html#g58e759823cfe5c9d5fb7d6fc1e20446e">00551</a> <span class="preprocessor">#define SVN_AUTH_PARAM_CONFIG_DIR SVN_AUTH_PARAM_PREFIX "config-dir"</span>
<a name="l00552"></a>00552 <span class="preprocessor"></span>
<a name="l00553"></a>00553 <span class="comment"></span>
<a name="l00554"></a>00554 <span class="comment">/** Get an initial set of credentials.</span>
<a name="l00555"></a>00555 <span class="comment"> *</span>
<a name="l00556"></a>00556 <span class="comment"> * Ask @a auth_baton to set @a *credentials to a set of credentials</span>
<a name="l00557"></a>00557 <span class="comment"> * defined by @a cred_kind and valid within @a realmstring, or NULL if</span>
<a name="l00558"></a>00558 <span class="comment"> * no credentials are available. Otherwise, return an iteration state</span>
<a name="l00559"></a>00559 <span class="comment"> * in @a *state, so that the caller can call</span>
<a name="l00560"></a>00560 <span class="comment"> * svn_auth_next_credentials(), in case the first set of credentials</span>
<a name="l00561"></a>00561 <span class="comment"> * fails to authenticate.</span>
<a name="l00562"></a>00562 <span class="comment"> *</span>
<a name="l00563"></a>00563 <span class="comment"> * Use @a pool to allocate @a *state, and for temporary allocation.</span>
<a name="l00564"></a>00564 <span class="comment"> * Note that @a *credentials will be allocated in @a auth_baton's pool.</span>
<a name="l00565"></a>00565 <span class="comment"> */</span>
<a name="l00566"></a>00566 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> * <a class="code" href="group__auth__fns.html#ge830b04d8a93c8b60f802d6809425665" title="Get an initial set of credentials.">svn_auth_first_credentials</a>(<span class="keywordtype">void</span> **credentials,
<a name="l00567"></a>00567 <a class="code" href="group__auth__fns.html#g1ac4eb8d42d56257c6ba607f976b2979" title="The type of a Subversion authentication-iteration object.">svn_auth_iterstate_t</a> **state,
<a name="l00568"></a>00568 <span class="keyword">const</span> <span class="keywordtype">char</span> *cred_kind,
<a name="l00569"></a>00569 <span class="keyword">const</span> <span class="keywordtype">char</span> *realmstring,
<a name="l00570"></a>00570 <a class="code" href="group__auth__fns.html#ga77a422f326606f52366fb2fb0a43f8d" title="The type of a Subversion authentication object.">svn_auth_baton_t</a> *auth_baton,
<a name="l00571"></a>00571 apr_pool_t *pool);
<a name="l00572"></a>00572 <span class="comment"></span>
<a name="l00573"></a>00573 <span class="comment">/** Get another set of credentials, assuming previous ones failed to</span>
<a name="l00574"></a>00574 <span class="comment"> * authenticate.</span>
<a name="l00575"></a>00575 <span class="comment"> *</span>
<a name="l00576"></a>00576 <span class="comment"> * Use @a state to fetch a different set of @a *credentials, as a</span>
<a name="l00577"></a>00577 <span class="comment"> * follow-up to svn_auth_first_credentials() or</span>
<a name="l00578"></a>00578 <span class="comment"> * svn_auth_next_credentials(). If no more credentials are available,</span>
<a name="l00579"></a>00579 <span class="comment"> * set @a *credentials to NULL.</span>
<a name="l00580"></a>00580 <span class="comment"> *</span>
<a name="l00581"></a>00581 <span class="comment"> * Note that @a *credentials will be allocated in @c auth_baton's pool.</span>
<a name="l00582"></a>00582 <span class="comment"> */</span>
<a name="l00583"></a>00583 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> * <a class="code" href="group__auth__fns.html#gb18c2431ea55881ef52b647815600cd3" title="Get another set of credentials, assuming previous ones failed to authenticate.">svn_auth_next_credentials</a>(<span class="keywordtype">void</span> **credentials,
<a name="l00584"></a>00584 <a class="code" href="group__auth__fns.html#g1ac4eb8d42d56257c6ba607f976b2979" title="The type of a Subversion authentication-iteration object.">svn_auth_iterstate_t</a> *state,
<a name="l00585"></a>00585 apr_pool_t *pool);
<a name="l00586"></a>00586 <span class="comment"></span>
<a name="l00587"></a>00587 <span class="comment">/** Save a set of credentials.</span>
<a name="l00588"></a>00588 <span class="comment"> *</span>
<a name="l00589"></a>00589 <span class="comment"> * Ask @a state to store the most recently returned credentials,</span>
<a name="l00590"></a>00590 <span class="comment"> * presumably because they successfully authenticated. Use @a pool</span>
<a name="l00591"></a>00591 <span class="comment"> * for temporary allocation. If no credentials were ever returned, do</span>
<a name="l00592"></a>00592 <span class="comment"> * nothing.</span>
<a name="l00593"></a>00593 <span class="comment"> */</span>
<a name="l00594"></a>00594 <a class="code" href="structsvn__error__t.html" title="Subversion error object.">svn_error_t</a> * <a class="code" href="group__auth__fns.html#ge4a43aa4ab0d4a9baf603bf7f96ec919" title="Save a set of credentials.">svn_auth_save_credentials</a>(<a class="code" href="group__auth__fns.html#g1ac4eb8d42d56257c6ba607f976b2979" title="The type of a Subversion authentication-iteration object.">svn_auth_iterstate_t</a> *state,
<a name="l00595"></a>00595 apr_pool_t *pool);
<a name="l00596"></a>00596 <span class="comment"></span>
<a name="l00597"></a>00597 <span class="comment">/** @} */</span>
<a name="l00598"></a>00598 <span class="comment"></span>
<a name="l00599"></a>00599 <span class="comment">/** Create and return @a *provider, an authentication provider of type</span>
<a name="l00600"></a>00600 <span class="comment"> * svn_auth_cred_simple_t that gets information by prompting the user</span>
<a name="l00601"></a>00601 <span class="comment"> * with @a prompt_func and @a prompt_baton. Allocate @a *provider in</span>
<a name="l00602"></a>00602 <span class="comment"> * @a pool.</span>
<a name="l00603"></a>00603 <span class="comment"> *</span>
<a name="l00604"></a>00604 <span class="comment"> * If both @c SVN_AUTH_PARAM_DEFAULT_USERNAME and</span>
<a name="l00605"></a>00605 <span class="comment"> * @c SVN_AUTH_PARAM_DEFAULT_PASSWORD are defined as runtime</span>
<a name="l00606"></a>00606 <span class="comment"> * parameters in the @c auth_baton, then @a *provider will return the</span>
<a name="l00607"></a>00607 <span class="comment"> * default arguments when svn_auth_first_credentials() is called. If</span>
<a name="l00608"></a>00608 <span class="comment"> * svn_auth_first_credentials() fails, then @a *provider will</span>
<a name="l00609"></a>00609 <span class="comment"> * re-prompt @a retry_limit times (via svn_auth_next_credentials()).</span>
<a name="l00610"></a>00610 <span class="comment"> *</span>
<a name="l00611"></a>00611 <span class="comment"> * @since New in 1.4.</span>
<a name="l00612"></a>00612 <span class="comment"> */</span>
<a name="l00613"></a>00613 <span class="keywordtype">void</span>
<a name="l00614"></a>00614 <a class="code" href="svn__auth_8h.html#0d1cf74b8f9e2f55a92f1be7a942adb3" title="Create and return *provider, an authentication provider of type svn_auth_cred_simple_t...">svn_auth_get_simple_prompt_provider</a>(<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00615"></a>00615 <a class="code" href="group__auth__fns.html#gb3e889e27559677e7e1a13a9142a381d" title="Credential-constructing prompt functions.">svn_auth_simple_prompt_func_t</a> prompt_func,
<a name="l00616"></a>00616 <span class="keywordtype">void</span> *prompt_baton,
<a name="l00617"></a>00617 <span class="keywordtype">int</span> retry_limit,
<a name="l00618"></a>00618 apr_pool_t *pool);
<a name="l00619"></a>00619
<a name="l00620"></a>00620 <span class="comment"></span>
<a name="l00621"></a>00621 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00622"></a>00622 <span class="comment"> * svn_auth_cred_username_t that gets information by prompting the</span>
<a name="l00623"></a>00623 <span class="comment"> * user with @a prompt_func and @a prompt_baton. Allocate @a *provider</span>
<a name="l00624"></a>00624 <span class="comment"> * in @a pool.</span>
<a name="l00625"></a>00625 <span class="comment"> *</span>
<a name="l00626"></a>00626 <span class="comment"> * If @c SVN_AUTH_PARAM_DEFAULT_USERNAME is defined as a runtime</span>
<a name="l00627"></a>00627 <span class="comment"> * parameter in the @c auth_baton, then @a *provider will return the</span>
<a name="l00628"></a>00628 <span class="comment"> * default argument when svn_auth_first_credentials() is called. If</span>
<a name="l00629"></a>00629 <span class="comment"> * svn_auth_first_credentials() fails, then @a *provider will</span>
<a name="l00630"></a>00630 <span class="comment"> * re-prompt @a retry_limit times (via svn_auth_next_credentials()).</span>
<a name="l00631"></a>00631 <span class="comment"> *</span>
<a name="l00632"></a>00632 <span class="comment"> * @since New in 1.4.</span>
<a name="l00633"></a>00633 <span class="comment"> */</span>
<a name="l00634"></a>00634 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#99da7f5d7e4b64aadaed2b94d958aebb" title="Create and return *provider, an authentication provider of type svn_auth_cred_username_t...">svn_auth_get_username_prompt_provider</a>
<a name="l00635"></a>00635 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00636"></a>00636 <a class="code" href="group__auth__fns.html#gf05167cb101739421c2e9542e27d5a88" title="Set *cred by prompting the user, allocating *cred in pool.">svn_auth_username_prompt_func_t</a> prompt_func,
<a name="l00637"></a>00637 <span class="keywordtype">void</span> *prompt_baton,
<a name="l00638"></a>00638 <span class="keywordtype">int</span> retry_limit,
<a name="l00639"></a>00639 apr_pool_t *pool);
<a name="l00640"></a>00640
<a name="l00641"></a>00641 <span class="comment"></span>
<a name="l00642"></a>00642 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00643"></a>00643 <span class="comment"> * svn_auth_cred_simple_t that gets/sets information from the user's</span>
<a name="l00644"></a>00644 <span class="comment"> * ~/.subversion configuration directory. Allocate @a *provider in</span>
<a name="l00645"></a>00645 <span class="comment"> * @a pool.</span>
<a name="l00646"></a>00646 <span class="comment"> *</span>
<a name="l00647"></a>00647 <span class="comment"> * If a default username or password is available, @a *provider will</span>
<a name="l00648"></a>00648 <span class="comment"> * honor them as well, and return them when</span>
<a name="l00649"></a>00649 <span class="comment"> * svn_auth_first_credentials() is called. (see @c</span>
<a name="l00650"></a>00650 <span class="comment"> * SVN_AUTH_PARAM_DEFAULT_USERNAME and @c</span>
<a name="l00651"></a>00651 <span class="comment"> * SVN_AUTH_PARAM_DEFAULT_PASSWORD).</span>
<a name="l00652"></a>00652 <span class="comment"> *</span>
<a name="l00653"></a>00653 <span class="comment"> * @since New in 1.4.</span>
<a name="l00654"></a>00654 <span class="comment"> */</span>
<a name="l00655"></a>00655 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#7046599e07079f36f7a2845eeb537ca5" title="Create and return *provider, an authentication provider of type svn_auth_cred_simple_t...">svn_auth_get_simple_provider</a>(<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00656"></a>00656 apr_pool_t *pool);
<a name="l00657"></a>00657
<a name="l00658"></a>00658
<a name="l00659"></a>00659 <span class="preprocessor">#if (defined(WIN32) &amp;&amp; !defined(__MINGW32__)) || defined(DOXYGEN)</span>
<a name="l00660"></a>00660 <span class="preprocessor"></span><span class="comment">/**</span>
<a name="l00661"></a>00661 <span class="comment"> * Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00662"></a>00662 <span class="comment"> * svn_auth_cred_simple_t that gets/sets information from the user's</span>
<a name="l00663"></a>00663 <span class="comment"> * ~/.subversion configuration directory. Allocate @a *provider in</span>
<a name="l00664"></a>00664 <span class="comment"> * @a pool.</span>
<a name="l00665"></a>00665 <span class="comment"> *</span>
<a name="l00666"></a>00666 <span class="comment"> * This is like svn_client_get_simple_provider(), except that, when</span>
<a name="l00667"></a>00667 <span class="comment"> * running on Window 2000 or newer (or any other Windows version that</span>
<a name="l00668"></a>00668 <span class="comment"> * includes the CryptoAPI), the provider encrypts the password before</span>
<a name="l00669"></a>00669 <span class="comment"> * storing it to disk. On earlier versions of Windows, the provider</span>
<a name="l00670"></a>00670 <span class="comment"> * does nothing.</span>
<a name="l00671"></a>00671 <span class="comment"> *</span>
<a name="l00672"></a>00672 <span class="comment"> * @since New in 1.4.</span>
<a name="l00673"></a>00673 <span class="comment"> * @note This function is only available on Windows.</span>
<a name="l00674"></a>00674 <span class="comment"> *</span>
<a name="l00675"></a>00675 <span class="comment"> * @note An administrative password reset may invalidate the account's</span>
<a name="l00676"></a>00676 <span class="comment"> * secret key. This function will detect that situation and behave as</span>
<a name="l00677"></a>00677 <span class="comment"> * if the password were not cached at all.</span>
<a name="l00678"></a>00678 <span class="comment"> */</span>
<a name="l00679"></a>00679 <span class="keywordtype">void</span>
<a name="l00680"></a>00680 <a class="code" href="svn__auth_8h.html#150ee5110b383bcdb2ce9b341dc26798" title="Create and return *provider, an authentication provider of type svn_auth_cred_simple_t...">svn_auth_get_windows_simple_provider</a>(<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00681"></a>00681 apr_pool_t *pool);
<a name="l00682"></a>00682 <span class="preprocessor">#endif </span><span class="comment">/* WIN32 || DOXYGEN */</span>
<a name="l00683"></a>00683
<a name="l00684"></a>00684 <span class="preprocessor">#if defined(DARWIN) || defined(DOXYGEN)</span>
<a name="l00685"></a>00685 <span class="preprocessor"></span><span class="comment"></span>
<a name="l00686"></a>00686 <span class="comment">/**</span>
<a name="l00687"></a>00687 <span class="comment"> * Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00688"></a>00688 <span class="comment"> * svn_auth_cred_simple_t that gets/sets information from the user's</span>
<a name="l00689"></a>00689 <span class="comment"> * ~/.subversion configuration directory. Allocate @a *provider in</span>
<a name="l00690"></a>00690 <span class="comment"> * @a pool.</span>
<a name="l00691"></a>00691 <span class="comment"> *</span>
<a name="l00692"></a>00692 <span class="comment"> * This is like svn_client_get_simple_provider(), except that the</span>
<a name="l00693"></a>00693 <span class="comment"> * password is stored in the Mac OS KeyChain.</span>
<a name="l00694"></a>00694 <span class="comment"> *</span>
<a name="l00695"></a>00695 <span class="comment"> * @since New in 1.4</span>
<a name="l00696"></a>00696 <span class="comment"> * @note This function is only available on Mac OS 10.2 and higher.</span>
<a name="l00697"></a>00697 <span class="comment"> */</span>
<a name="l00698"></a>00698 <span class="keywordtype">void</span>
<a name="l00699"></a>00699 <a class="code" href="svn__auth_8h.html#412a3c955d7aadd3bd41f54fccf2adcd" title="Create and return *provider, an authentication provider of type svn_auth_cred_simple_t...">svn_auth_get_keychain_simple_provider</a>(<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00700"></a>00700 apr_pool_t *pool);
<a name="l00701"></a>00701
<a name="l00702"></a>00702 <span class="preprocessor">#endif </span><span class="comment">/* DARWIN || DOXYGEN */</span>
<a name="l00703"></a>00703 <span class="comment"></span>
<a name="l00704"></a>00704 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00705"></a>00705 <span class="comment"> * svn_auth_cred_username_t that gets/sets information from a user's</span>
<a name="l00706"></a>00706 <span class="comment"> * ~/.subversion configuration directory. Allocate @a *provider in</span>
<a name="l00707"></a>00707 <span class="comment"> * @a pool.</span>
<a name="l00708"></a>00708 <span class="comment"> *</span>
<a name="l00709"></a>00709 <span class="comment"> * If a default username is available, @a *provider will honor it,</span>
<a name="l00710"></a>00710 <span class="comment"> * and return it when svn_auth_first_credentials() is called. (See</span>
<a name="l00711"></a>00711 <span class="comment"> * @c SVN_AUTH_PARAM_DEFAULT_USERNAME.)</span>
<a name="l00712"></a>00712 <span class="comment"> *</span>
<a name="l00713"></a>00713 <span class="comment"> * @since New in 1.4.</span>
<a name="l00714"></a>00714 <span class="comment"> */</span>
<a name="l00715"></a>00715 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#c107e10d2325dbe7d4805a64aa6bd6c4" title="Create and return *provider, an authentication provider of type svn_auth_cred_username_t...">svn_auth_get_username_provider</a>(<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00716"></a>00716 apr_pool_t *pool);
<a name="l00717"></a>00717
<a name="l00718"></a>00718 <span class="comment"></span>
<a name="l00719"></a>00719 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00720"></a>00720 <span class="comment"> * svn_auth_cred_ssl_server_trust_t, allocated in @a pool.</span>
<a name="l00721"></a>00721 <span class="comment"> *</span>
<a name="l00722"></a>00722 <span class="comment"> * @a *provider retrieves its credentials from the configuration</span>
<a name="l00723"></a>00723 <span class="comment"> * mechanism. The returned credential is used to override SSL</span>
<a name="l00724"></a>00724 <span class="comment"> * security on an error.</span>
<a name="l00725"></a>00725 <span class="comment"> *</span>
<a name="l00726"></a>00726 <span class="comment"> * @since New in 1.4.</span>
<a name="l00727"></a>00727 <span class="comment"> */</span>
<a name="l00728"></a>00728 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#aa8fe3918d02a179811ab9a03ddaec99" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_server_trust_t...">svn_auth_get_ssl_server_trust_file_provider</a>
<a name="l00729"></a>00729 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00730"></a>00730 apr_pool_t *pool);
<a name="l00731"></a>00731
<a name="l00732"></a>00732
<a name="l00733"></a>00733 <span class="preprocessor">#if (defined(WIN32) &amp;&amp; !defined(__MINGW32__)) || defined(DOXYGEN)</span>
<a name="l00734"></a>00734 <span class="preprocessor"></span><span class="comment">/**</span>
<a name="l00735"></a>00735 <span class="comment"> * Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00736"></a>00736 <span class="comment"> * svn_auth_cred_ssl_server_trust_t, allocated in @a pool.</span>
<a name="l00737"></a>00737 <span class="comment"> *</span>
<a name="l00738"></a>00738 <span class="comment"> * This provider automatically validates ssl server certificates with</span>
<a name="l00739"></a>00739 <span class="comment"> * the CryptoApi, like Internet Explorer and the Windows network API do.</span>
<a name="l00740"></a>00740 <span class="comment"> * This allows the rollout of root certificates via Windows Domain</span>
<a name="l00741"></a>00741 <span class="comment"> * policies, instead of Subversion specific configuration.</span>
<a name="l00742"></a>00742 <span class="comment"> *</span>
<a name="l00743"></a>00743 <span class="comment"> * @since New in 1.5.</span>
<a name="l00744"></a>00744 <span class="comment"> * @note This function is only available on Windows.</span>
<a name="l00745"></a>00745 <span class="comment"> */</span>
<a name="l00746"></a>00746 <span class="keywordtype">void</span>
<a name="l00747"></a>00747 <a class="code" href="svn__auth_8h.html#ba0697d924aebb6d00a7a0fa40965161" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_server_trust_t...">svn_auth_get_windows_ssl_server_trust_provider</a>
<a name="l00748"></a>00748 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00749"></a>00749 apr_pool_t *pool);
<a name="l00750"></a>00750 <span class="preprocessor">#endif </span><span class="comment">/* WIN32 || DOXYGEN */</span>
<a name="l00751"></a>00751 <span class="comment"></span>
<a name="l00752"></a>00752 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00753"></a>00753 <span class="comment"> * svn_auth_cred_ssl_client_cert_t, allocated in @a pool.</span>
<a name="l00754"></a>00754 <span class="comment"> *</span>
<a name="l00755"></a>00755 <span class="comment"> * @a *provider retrieves its credentials from the configuration</span>
<a name="l00756"></a>00756 <span class="comment"> * mechanism. The returned credential is used to load the appropriate</span>
<a name="l00757"></a>00757 <span class="comment"> * client certificate for authentication when requested by a server.</span>
<a name="l00758"></a>00758 <span class="comment"> *</span>
<a name="l00759"></a>00759 <span class="comment"> * @since New in 1.4.</span>
<a name="l00760"></a>00760 <span class="comment"> */</span>
<a name="l00761"></a>00761 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#a2fa9ec4071016474d7a927cb4dbacf7" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_t...">svn_auth_get_ssl_client_cert_file_provider</a>
<a name="l00762"></a>00762 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00763"></a>00763 apr_pool_t *pool);
<a name="l00764"></a>00764
<a name="l00765"></a>00765 <span class="comment"></span>
<a name="l00766"></a>00766 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00767"></a>00767 <span class="comment"> * svn_auth_cred_ssl_client_cert_pw_t, allocated in @a pool.</span>
<a name="l00768"></a>00768 <span class="comment"> *</span>
<a name="l00769"></a>00769 <span class="comment"> * @a *provider retrieves its credentials from the configuration</span>
<a name="l00770"></a>00770 <span class="comment"> * mechanism. The returned credential is used when a loaded client</span>
<a name="l00771"></a>00771 <span class="comment"> * certificate is protected by a passphrase.</span>
<a name="l00772"></a>00772 <span class="comment"> *</span>
<a name="l00773"></a>00773 <span class="comment"> * @since New in 1.4.</span>
<a name="l00774"></a>00774 <span class="comment"> */</span>
<a name="l00775"></a>00775 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#031474a8fae4e3d2b191cee3e8e8a165" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_pw_t...">svn_auth_get_ssl_client_cert_pw_file_provider</a>
<a name="l00776"></a>00776 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00777"></a>00777 apr_pool_t *pool);
<a name="l00778"></a>00778
<a name="l00779"></a>00779 <span class="comment"></span>
<a name="l00780"></a>00780 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00781"></a>00781 <span class="comment"> * svn_auth_cred_ssl_server_trust_t, allocated in @a pool.</span>
<a name="l00782"></a>00782 <span class="comment"> *</span>
<a name="l00783"></a>00783 <span class="comment"> * @a *provider retrieves its credentials by using the @a prompt_func</span>
<a name="l00784"></a>00784 <span class="comment"> * and @a prompt_baton. The returned credential is used to override</span>
<a name="l00785"></a>00785 <span class="comment"> * SSL security on an error.</span>
<a name="l00786"></a>00786 <span class="comment"> *</span>
<a name="l00787"></a>00787 <span class="comment"> * @since New in 1.4.</span>
<a name="l00788"></a>00788 <span class="comment"> */</span>
<a name="l00789"></a>00789 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#204388c3be43bff3c51e4490d7f40f43" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_server_trust_t...">svn_auth_get_ssl_server_trust_prompt_provider</a>
<a name="l00790"></a>00790 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00791"></a>00791 <a class="code" href="group__auth__fns.html#gc5805f633a96271f97b919297e9908a3" title="Set *cred by prompting the user, allocating *cred in pool.">svn_auth_ssl_server_trust_prompt_func_t</a> prompt_func,
<a name="l00792"></a>00792 <span class="keywordtype">void</span> *prompt_baton,
<a name="l00793"></a>00793 apr_pool_t *pool);
<a name="l00794"></a>00794
<a name="l00795"></a>00795 <span class="comment"></span>
<a name="l00796"></a>00796 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00797"></a>00797 <span class="comment"> * svn_auth_cred_ssl_client_cert_t, allocated in @a pool.</span>
<a name="l00798"></a>00798 <span class="comment"> *</span>
<a name="l00799"></a>00799 <span class="comment"> * @a *provider retrieves its credentials by using the @a prompt_func</span>
<a name="l00800"></a>00800 <span class="comment"> * and @a prompt_baton. The returned credential is used to load the</span>
<a name="l00801"></a>00801 <span class="comment"> * appropriate client certificate for authentication when requested by</span>
<a name="l00802"></a>00802 <span class="comment"> * a server. The prompt will be retried @a retry_limit times.</span>
<a name="l00803"></a>00803 <span class="comment"> *</span>
<a name="l00804"></a>00804 <span class="comment"> * @since New in 1.4.</span>
<a name="l00805"></a>00805 <span class="comment"> */</span>
<a name="l00806"></a>00806 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#091023baac1bdc7846dbb9c3a1b0fdfc" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_t...">svn_auth_get_ssl_client_cert_prompt_provider</a>
<a name="l00807"></a>00807 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00808"></a>00808 <a class="code" href="group__auth__fns.html#g5afb52c44e95354a2ec52f6fe030c5d2" title="Set *cred by prompting the user, allocating *cred in pool.">svn_auth_ssl_client_cert_prompt_func_t</a> prompt_func,
<a name="l00809"></a>00809 <span class="keywordtype">void</span> *prompt_baton,
<a name="l00810"></a>00810 <span class="keywordtype">int</span> retry_limit,
<a name="l00811"></a>00811 apr_pool_t *pool);
<a name="l00812"></a>00812
<a name="l00813"></a>00813 <span class="comment"></span>
<a name="l00814"></a>00814 <span class="comment">/** Create and return @a *provider, an authentication provider of type @c</span>
<a name="l00815"></a>00815 <span class="comment"> * svn_auth_cred_ssl_client_cert_pw_t, allocated in @a pool.</span>
<a name="l00816"></a>00816 <span class="comment"> *</span>
<a name="l00817"></a>00817 <span class="comment"> * @a *provider retrieves its credentials by using the @a prompt_func</span>
<a name="l00818"></a>00818 <span class="comment"> * and @a prompt_baton. The returned credential is used when a loaded</span>
<a name="l00819"></a>00819 <span class="comment"> * client certificate is protected by a passphrase. The prompt will</span>
<a name="l00820"></a>00820 <span class="comment"> * be retried @a retry_limit times.</span>
<a name="l00821"></a>00821 <span class="comment"> *</span>
<a name="l00822"></a>00822 <span class="comment"> * @since New in 1.4.</span>
<a name="l00823"></a>00823 <span class="comment"> */</span>
<a name="l00824"></a>00824 <span class="keywordtype">void</span> <a class="code" href="svn__auth_8h.html#fe35741fb55873c3c4227d237e19bc14" title="Create and return *provider, an authentication provider of type svn_auth_cred_ssl_client_cert_pw_t...">svn_auth_get_ssl_client_cert_pw_prompt_provider</a>
<a name="l00825"></a>00825 (<a class="code" href="structsvn__auth__provider__object__t.html" title="A provider object, ready to be put into an array and given to svn_auth_open().">svn_auth_provider_object_t</a> **provider,
<a name="l00826"></a>00826 <a class="code" href="group__auth__fns.html#gfeb529b5bafaed2e3f423e4186d60f06" title="Set *cred by prompting the user, allocating *cred in pool.">svn_auth_ssl_client_cert_pw_prompt_func_t</a> prompt_func,
<a name="l00827"></a>00827 <span class="keywordtype">void</span> *prompt_baton,
<a name="l00828"></a>00828 <span class="keywordtype">int</span> retry_limit,
<a name="l00829"></a>00829 apr_pool_t *pool);
<a name="l00830"></a>00830
<a name="l00831"></a>00831 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00832"></a>00832 <span class="preprocessor"></span>}
<a name="l00833"></a>00833 <span class="preprocessor">#endif </span><span class="comment">/* __cplusplus */</span>
<a name="l00834"></a>00834
<a name="l00835"></a>00835 <span class="preprocessor">#endif </span><span class="comment">/* SVN_AUTH_H */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Fri Oct 24 16:18:24 2008 for Subversion by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>