summaryrefslogtreecommitdiff
path: root/alpine/xoauth2info.c
diff options
context:
space:
mode:
authorEduardo Chappa <chappa@washington.edu>2021-11-21 02:19:32 -0700
committerEduardo Chappa <chappa@washington.edu>2021-11-21 02:19:32 -0700
commit7d652142f4960b679cb5399fc0485470af2cc878 (patch)
tree7afa6235429b5fdb835586bf671fa532b37281c3 /alpine/xoauth2info.c
parent626eccdd8d0a325842d736596348e9d1d81ca105 (diff)
downloadalpine-7d652142f4960b679cb5399fc0485470af2cc878.tar.xz
* Support for code_verifier and code_challenge when generating a
refresh token and access token in Gmail using the S256 method and plain method.
Diffstat (limited to 'alpine/xoauth2info.c')
-rw-r--r--alpine/xoauth2info.c84
1 files changed, 54 insertions, 30 deletions
diff --git a/alpine/xoauth2info.c b/alpine/xoauth2info.c
index 8a518f47..79d43e6e 100644
--- a/alpine/xoauth2info.c
+++ b/alpine/xoauth2info.c
@@ -40,15 +40,19 @@ OAUTH2_S alpine_oauth2_list[] = {
{"grant_type", "refresh_token"},
{"response_type", "code"},
{"state", NULL},
- {"device_code", NULL} /* not used */
+ {"device_code", NULL}, /* not used */
+ {"code_verifier", NULL}, /* OA2_Extra1: code_verifier, generated by c-client */
+ {"code_challenge", NULL}, /* OA2_Extra2: code_challenge, genrated by c-client */
+ {"code_challenge_method", "S256"}, /* OA2_Extra3: code_challenge_method, given by Alpine */
+ {"login_hint", NULL} /* OA2_Extra4: username, provided by Alpine, filled up by c-client */
},
{{"GET", (unsigned char *) "https://accounts.google.com/o/oauth2/auth", /* authorization address, get access code */
- {OA2_Id, OA2_Scope, OA2_Redirect, OA2_Response, OA2_End, OA2_End, OA2_End}},
- {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* Device Info information, not used */
+ {OA2_Id, OA2_Scope, OA2_Redirect, OA2_Response, OA2_Extra2, OA2_Extra3, OA2_Extra4, OA2_End}},
+ {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* Device Info information, not used */
{"POST", (unsigned char *) "https://accounts.google.com/o/oauth2/token", /* Address to get refresh token from access code */
- {OA2_Id, OA2_Secret, OA2_Redirect, OA2_GrantTypeforAccessToken, OA2_Code, OA2_End, OA2_End}},
+ {OA2_Id, OA2_Secret, OA2_Redirect, OA2_GrantTypeforAccessToken, OA2_Code, OA2_Extra1, OA2_End, OA2_End}},
{"POST", (unsigned char *) "https://accounts.google.com/o/oauth2/token", /* access token from refresh token */
- {OA2_Id, OA2_Secret, OA2_RefreshToken, OA2_GrantTypefromRefreshToken, OA2_End, OA2_End, OA2_End}}
+ {OA2_Id, OA2_Secret, OA2_RefreshToken, OA2_GrantTypefromRefreshToken, OA2_End, OA2_End, OA2_End, OA2_End}}
},
{NULL, NULL, NULL, 0, 0, NULL}, /* device_code information */
NULL, /* access token */
@@ -73,15 +77,19 @@ OAUTH2_S alpine_oauth2_list[] = {
{"grant_type", "refresh_token"},
{"response_type", "code"}, /* not used */
{"state", NULL}, /* not used */
- {"device_code", NULL} /* only used for frst time set up */
+ {"device_code", NULL}, /* only used for frst time set up */
+ {"response_mode", "query"}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL} /* Extra parameter for this server */
},
- {{NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* Get Access Code, Not used */
+ {{NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* Get Access Code, Not used */
{"POST", (unsigned char *) "https://login.microsoftonline.com/\001/oauth2/v2.0/devicecode", /* first time use and get device code information */
- {OA2_Id, OA2_Scope, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}},
+ {OA2_Id, OA2_Scope, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}},
{"POST", (unsigned char *) "https://login.microsoftonline.com/\001/oauth2/v2.0/token", /* Get first Refresh Token and Access token */
- {OA2_Id, OA2_Redirect, OA2_DeviceCode, OA2_End, OA2_End, OA2_End, OA2_End}},
+ {OA2_Id, OA2_Redirect, OA2_DeviceCode, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}},
{"POST", (unsigned char *) "https://login.microsoftonline.com/\001/oauth2/v2.0/token", /* Get access token from refresh token */
- {OA2_Id, OA2_RefreshToken, OA2_Scope, OA2_GrantTypefromRefreshToken, OA2_End, OA2_End, OA2_End}}
+ {OA2_Id, OA2_RefreshToken, OA2_Scope, OA2_GrantTypefromRefreshToken, OA2_End, OA2_End, OA2_End, OA2_End}}
},
{NULL, NULL, NULL, 0, 0, NULL}, /* device_code information */
NULL, /* access token */
@@ -106,15 +114,19 @@ OAUTH2_S alpine_oauth2_list[] = {
{"grant_type", "refresh_token"},
{"response_type", "code"},
{"state", NULL}, /* not used */
- {"device_code", NULL} /* not used */
+ {"device_code", NULL}, /* not used */
+ {"response_mode", "query"}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL} /* Extra parameter for this server */
},
{{"GET", (unsigned char *) "https://login.microsoftonline.com/\001/oauth2/v2.0/authorize", /* Get Access Code */
- {OA2_Id, OA2_Scope, OA2_Redirect, OA2_Response, OA2_End, OA2_End, OA2_End}},
- {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* device code, not used */
+ {OA2_Id, OA2_Scope, OA2_Redirect, OA2_Response, OA2_Extra1, OA2_End, OA2_End, OA2_End}},
+ {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* device code, not used */
{"POST", (unsigned char *) "https://login.microsoftonline.com/\001/oauth2/v2.0/token", /* Get first Refresh Token and Access token */
- {OA2_Id, OA2_Redirect, OA2_Scope, OA2_GrantTypeforAccessToken, OA2_Secret, OA2_Code, OA2_End}},
+ {OA2_Id, OA2_Redirect, OA2_Scope, OA2_GrantTypeforAccessToken, OA2_Secret, OA2_Code, OA2_End, OA2_End}},
{"POST", (unsigned char *) "https://login.microsoftonline.com/\001/oauth2/v2.0/token", /* Get access token from refresh token */
- {OA2_Id, OA2_RefreshToken, OA2_Scope, OA2_GrantTypefromRefreshToken, OA2_Secret, OA2_End, OA2_End}}
+ {OA2_Id, OA2_RefreshToken, OA2_Scope, OA2_GrantTypefromRefreshToken, OA2_Secret, OA2_End, OA2_End, OA2_End}}
},
{NULL, NULL, NULL, 0, 0, NULL}, /* device_code information, not used */
NULL, /* access token */
@@ -139,15 +151,19 @@ OAUTH2_S alpine_oauth2_list[] = {
{"grant_type", "refresh_token"},
{"response_type", "code"},
{"state", NULL}, /* used */
- {"device_code", NULL} /* not used */
+ {"device_code", NULL}, /* not used */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL} /* Extra parameter for this server */
},
{{"GET", (unsigned char *) "https://api.login.yahoo.com/oauth2/request_auth", /* Get Access Code */
- {OA2_Id, OA2_Redirect, OA2_Response, OA2_State, OA2_End, OA2_End, OA2_End}},
- {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* device code, not used */
+ {OA2_Id, OA2_Redirect, OA2_Response, OA2_State, OA2_End, OA2_End, OA2_End, OA2_End}},
+ {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* device code, not used */
{"POST", (unsigned char *) "https://api.login.yahoo.com/oauth2/get_token", /* Get first Refresh Token and Access token */
- {OA2_Id, OA2_Secret, OA2_Redirect, OA2_Code, OA2_GrantTypeforAccessToken, OA2_End, OA2_End}},
+ {OA2_Id, OA2_Secret, OA2_Redirect, OA2_Code, OA2_GrantTypeforAccessToken, OA2_End, OA2_End, OA2_End}},
{"POST", (unsigned char *) "https://api.login.yahoo.com/oauth2/get_token", /* Get access token from refresh token */
- {OA2_Id, OA2_Secret, OA2_Redirect, OA2_RefreshToken, OA2_GrantTypefromRefreshToken, OA2_End, OA2_End}}
+ {OA2_Id, OA2_Secret, OA2_Redirect, OA2_RefreshToken, OA2_GrantTypefromRefreshToken, OA2_End, OA2_End, OA2_End}}
},
{NULL, NULL, NULL, 0, 0, NULL}, /* device_code information, not used */
NULL, /* access token */
@@ -172,15 +188,19 @@ OAUTH2_S alpine_oauth2_list[] = {
{"grant_type", "refresh_token"},
{"response_type", "code"},
{"state", NULL}, /* not used */
- {"device_code", NULL} /* not used */
+ {"device_code", NULL}, /* not used */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL} /* Extra parameter for this server */
},
{{"GET", (unsigned char *) "https://oauth.yandex.com/authorize", /* Get Access Code */
- {OA2_Id, OA2_Redirect, OA2_Response, OA2_End, OA2_End, OA2_End, OA2_End}},
- {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* device code, not used */
+ {OA2_Id, OA2_Redirect, OA2_Response, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}},
+ {NULL, NULL, {OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End, OA2_End}}, /* device code, not used */
{"POST", (unsigned char *) "https://oauth.yandex.com/token", /* Get first Refresh Token and Access token */
- {OA2_Id, OA2_Redirect, OA2_GrantTypeforAccessToken, OA2_Secret, OA2_Code, OA2_End, OA2_End}},
+ {OA2_Id, OA2_Redirect, OA2_GrantTypeforAccessToken, OA2_Secret, OA2_Code, OA2_End, OA2_End, OA2_End}},
{"POST", (unsigned char *) "https://oauth.yandex.com/token", /* Get access token from refresh token */
- {OA2_Id, OA2_RefreshToken, OA2_GrantTypefromRefreshToken, OA2_Secret, OA2_End, OA2_End, OA2_End}}
+ {OA2_Id, OA2_RefreshToken, OA2_GrantTypefromRefreshToken, OA2_Secret, OA2_End, OA2_End, OA2_End, OA2_End}}
},
{NULL, NULL, NULL, 0, 0, NULL}, /* device_code information, not used */
NULL, /* access token */
@@ -205,12 +225,16 @@ OAUTH2_S alpine_oauth2_list[] = {
{NULL, NULL}, /* grant type from refresh token */
{NULL, NULL}, /* response */
{NULL, NULL}, /* state */
- {NULL, NULL} /* device code */
+ {NULL, NULL}, /* device code */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL}, /* Extra parameter for this server */
+ {NULL, NULL} /* Extra parameter for this server */
},
- {{NULL, NULL, {0, 0, 0, 0, 0, 0, 0}}, /* method, server, parameters for authorize */
- {NULL, NULL, {0, 0, 0, 0, 0, 0, 0}}, /* method, server, parameters for device login */
- {NULL, NULL, {0, 0, 0, 0, 0, 0, 0}}, /* method, server, parameters for getting refresh token */
- {NULL, NULL, {0, 0, 0, 0, 0, 0, 0}} /* method, server, parameters for refreshing access token */
+ {{NULL, NULL, {0, 0, 0, 0, 0, 0, 0, 0}}, /* method, server, parameters for authorize */
+ {NULL, NULL, {0, 0, 0, 0, 0, 0, 0, 0}}, /* method, server, parameters for device login */
+ {NULL, NULL, {0, 0, 0, 0, 0, 0, 0, 0}}, /* method, server, parameters for getting refresh token */
+ {NULL, NULL, {0, 0, 0, 0, 0, 0, 0, 0}} /* method, server, parameters for refreshing access token */
},
{NULL, NULL, NULL, 0, 0, NULL}, /* device_code information */
NULL, /* access token */