You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/08/12 19:51:06 UTC
svn commit: r984876 - in
/subversion/trunk/subversion/bindings/javahl/native: Prompter.cpp
Prompter.h SVNClient.cpp
Author: hwright
Date: Thu Aug 12 17:51:06 2010
New Revision: 984876
URL: http://svn.apache.org/viewvc?rev=984876&view=rev
Log:
JavaHL: Prompt the user before attempting to store a password in plaintext,
if the JavaHL consumer has provided a prompter to do so.
* subversion/bindings/javahl/native/SVNClient.cpp
(getContext): Get the appropriate Prompter functions to use in the
plaintext auth providers.
* subversion/bindings/javahl/native/Prompter.h
* subversion/bindings/javahl/native/Prompter.cpp
(plaintext_prompt, plaintext_passphrase_prompt): New.
Modified:
subversion/trunk/subversion/bindings/javahl/native/Prompter.cpp
subversion/trunk/subversion/bindings/javahl/native/Prompter.h
subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
Modified: subversion/trunk/subversion/bindings/javahl/native/Prompter.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Prompter.cpp?rev=984876&r1=984875&r2=984876&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Prompter.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Prompter.cpp Thu Aug 12 17:51:06 2010
@@ -588,3 +588,37 @@ Prompter::ssl_client_cert_pw_prompt(svn_
*cred_p = ret;
return SVN_NO_ERROR;
}
+
+svn_error_t *
+Prompter::plaintext_prompt(svn_boolean_t *may_save_plaintext,
+ const char *realmstring,
+ void *baton,
+ apr_pool_t *pool)
+{
+ Prompter *that = (Prompter *) baton;
+
+ bool result = that->askYesNo(realmstring,
+ _("Store password unencrypted?"),
+ false);
+
+ *may_save_plaintext = (result ? TRUE : FALSE);
+
+ return SVN_NO_ERROR;
+}
+
+svn_error_t *
+Prompter::plaintext_passphrase_prompt(svn_boolean_t *may_save_plaintext,
+ const char *realmstring,
+ void *baton,
+ apr_pool_t *pool)
+{
+ Prompter *that = (Prompter *) baton;
+
+ bool result = that->askYesNo(realmstring,
+ _("Store passphrase unencrypted?"),
+ false);
+
+ *may_save_plaintext = (result ? TRUE : FALSE);
+
+ return SVN_NO_ERROR;
+}
Modified: subversion/trunk/subversion/bindings/javahl/native/Prompter.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Prompter.h?rev=984876&r1=984875&r2=984876&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Prompter.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Prompter.h Thu Aug 12 17:51:06 2010
@@ -103,6 +103,16 @@ class Prompter
svn_auth_provider_object_t *getProviderServerSSLTrust();
svn_auth_provider_object_t *getProviderClientSSL();
svn_auth_provider_object_t *getProviderClientSSLPassword();
+
+ static svn_error_t *plaintext_prompt(svn_boolean_t *may_save_plaintext,
+ const char *realmstring,
+ void *baton,
+ apr_pool_t *pool);
+ static svn_error_t *plaintext_passphrase_prompt(
+ svn_boolean_t *may_save_plaintext,
+ const char *realmstring,
+ void *baton,
+ apr_pool_t *pool);
};
#endif // PROMPTER_H
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp?rev=984876&r1=984875&r2=984876&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp Thu Aug 12 17:51:06 2010
@@ -1202,12 +1202,29 @@ svn_client_ctx_t *SVNClient::getContext(
pool),
NULL);
+ /* Use the prompter (if available) to prompt for password and cert
+ * caching. */
+ svn_auth_plaintext_prompt_func_t plaintext_prompt_func = NULL;
+ void *plaintext_prompt_baton = NULL;
+ svn_auth_plaintext_passphrase_prompt_func_t plaintext_passphrase_prompt_func;
+ void *plaintext_passphrase_prompt_baton = NULL;
+
+ if (m_prompter != NULL)
+ {
+ plaintext_prompt_func = Prompter::plaintext_prompt;
+ plaintext_prompt_baton = m_prompter;
+ plaintext_passphrase_prompt_func = Prompter::plaintext_passphrase_prompt;
+ plaintext_passphrase_prompt_baton = m_prompter;
+ }
+
/* The main disk-caching auth providers, for both
* 'username/password' creds and 'username' creds. */
svn_auth_provider_object_t *provider;
- svn_auth_get_simple_provider(&provider, pool);
+ svn_auth_get_simple_provider2(&provider, plaintext_prompt_func,
+ plaintext_prompt_baton, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
+
svn_auth_get_username_provider(&provider, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
@@ -1225,7 +1242,9 @@ svn_client_ctx_t *SVNClient::getContext(
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
svn_auth_get_ssl_client_cert_file_provider(&provider, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
- svn_auth_get_ssl_client_cert_pw_file_provider(&provider, pool);
+ svn_auth_get_ssl_client_cert_pw_file_provider2(&provider,
+ plaintext_passphrase_prompt_func,
+ plaintext_passphrase_prompt_baton, pool);
APR_ARRAY_PUSH(providers, svn_auth_provider_object_t *) = provider;
if (m_prompter != NULL)