]> diplodocus.org Git - nmh/blobdiff - h/oauth.h
test/inc/test-eom-align: Fix tests; they've never worked.
[nmh] / h / oauth.h
index 274ca9de4d06675966ab2231a9d210cc594eb609..42c9ce7c3777130b8546b45332ae5aaf0a6d316c 100644 (file)
--- a/h/oauth.h
+++ b/h/oauth.h
@@ -1,13 +1,12 @@
-/*
- * Implementation of OAuth 2.0 [1] for XOAUTH2 in SMTP [2] and POP3 [3].
+/* oauth.h -- OAuth 2.0 implementation for XOAUTH2 in SMTP and POP3.
  *
  * Google defined XOAUTH2 for SMTP, and that's what we use here.  If other
  * providers implement XOAUTH2 or some similar OAuth-based SMTP authentication
  * protocol, it should be simple to extend this.
  *
- * [1] https://tools.ietf.org/html/rfc6749
- * [2] https://developers.google.com/gmail/xoauth2_protocol
- * [3] http://googleappsdeveloper.blogspot.com/2014/10/updates-on-authentication-for-gmail.html
+ * OAuth  https://tools.ietf.org/html/rfc6749
+ * SMTP   https://developers.google.com/gmail/xoauth2_protocol
+ * POP3   http://googleappsdeveloper.blogspot.com/2014/10/updates-on-authentication-for-gmail.html
  *
  * Presumably [2] should document POP3 and that is an over-sight.  As it stands,
  * that blog post is the closest we have to documentation.
@@ -20,7 +19,7 @@
  * 1. User runs mhlogin which prints a URL the user must visit, and prompts for
  *    a code retrieved from that page.
  *
- * 2. User vists this URL in browser, signs in with some Google account, and
+ * 2. User visits this URL in browser, signs in with some Google account, and
  *    copies and pastes the resulting code back to mhlogin.
  *
  * 3. mhlogin does HTTP POST to Google to exchange the user-provided code for a
@@ -105,14 +104,18 @@ struct mh_oauth_service_info {
  * Do the complete dance for XOAUTH2 as used by POP3 and SMTP.
  *
  * Load tokens for svc from disk, refresh if necessary, and return the
- * base64-encoded client response.
+ * client response in client_response and client_response_len.
  *
  * If refreshing, writes freshened tokens to disk.
  *
  * Exits via adios on any error.
+ *
+ * Always returns OK for now, but in the future could return NOTOK on error.
  */
-char *
-mh_oauth_do_xoauth(const char *user, const char *svc, FILE *log);
+
+int
+mh_oauth_do_xoauth(const char *user, const char *svc, unsigned char **oauth_res,
+                  size_t *oauth_res_len, FILE *log);
 
 /*
  * Allocate and initialize a new OAuth context.
@@ -254,9 +257,6 @@ mh_oauth_sasl_client_response(size_t *res_len,
  * Retrieve the various entries for the OAuth mechanism
  */
 
-boolean 
+boolean
 mh_oauth_get_service_info(const char *svc_name, mh_oauth_service_info *svcinfo,
                          char *errbuf, size_t errbuflen);
-
-char *mh_oauth_get_svc_name(mh_oauth_ctx *ctx);
-void mh_oauth_set_cred_fn(mh_oauth_ctx *ctx, char *filename);