From e2ddd0d146fe3680649686b1415932cbcb32604f Mon Sep 17 00:00:00 2001 From: Alice Maz Date: Sat, 28 Nov 2015 12:59:58 -0500 Subject: [PATCH 1/3] Add OAUTH_SIGNATURE EncodeSet This character set is defined in rfc5849 https://tools.ietf.org/html/rfc5849#section-3.6 and is used to encode the signature base string and and the "Authorization" header field --- make_encode_sets.py | 1 + src/encode_sets.rs | 36 ++++++++++++++++++++++++++++++++++++ src/percent_encoding.rs | 6 ++++++ 3 files changed, 43 insertions(+) diff --git a/make_encode_sets.py b/make_encode_sets.py index eb859050..dc292a74 100644 --- a/make_encode_sets.py +++ b/make_encode_sets.py @@ -30,6 +30,7 @@ ('USERNAME', r''' "#<>`?{}@\/:'''), ('FORM_URLENCODED', r''' !"#$%&\'()+,/:;<=>?@[\]^`{|}~'''), ('HTTP_VALUE', r''' "%'()*,/:;<->?[\]{}'''), + ('OAUTH_SIGNATURE', r''' !"#$%&\'*()+,/:;<=>?@[\]^`{|}'''), ]: print( "pub static %s: [&'static str; 256] = [\n%s\n];\n\n" diff --git a/src/encode_sets.rs b/src/encode_sets.rs index d7b5fb9d..62ad9d6b 100644 --- a/src/encode_sets.rs +++ b/src/encode_sets.rs @@ -296,3 +296,39 @@ pub static HTTP_VALUE: [&'static str; 256] = [ ]; +pub static OAUTH_SIGNATURE: [&'static str; 256] = [ + "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", + "%08", "%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F", + "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17", + "%18", "%19", "%1A", "%1B", "%1C", "%1D", "%1E", "%1F", + "%20", "%21", "%22", "%23", "%24", "%25", "%26", "%27", + "%28", "%29", "%2A", "%2B", "%2C", "-", ".", "%2F", + "0", "1", "2", "3", "4", "5", "6", "7", + "8", "9", "%3A", "%3B", "%3C", "%3D", "%3E", "%3F", + "%40", "A", "B", "C", "D", "E", "F", "G", + "H", "I", "J", "K", "L", "M", "N", "O", + "P", "Q", "R", "S", "T", "U", "V", "W", + "X", "Y", "Z", "%5B", "%5C", "%5D", "%5E", "_", + "%60", "a", "b", "c", "d", "e", "f", "g", + "h", "i", "j", "k", "l", "m", "n", "o", + "p", "q", "r", "s", "t", "u", "v", "w", + "x", "y", "z", "%7B", "%7C", "%7D", "~", "%7F", + "%80", "%81", "%82", "%83", "%84", "%85", "%86", "%87", + "%88", "%89", "%8A", "%8B", "%8C", "%8D", "%8E", "%8F", + "%90", "%91", "%92", "%93", "%94", "%95", "%96", "%97", + "%98", "%99", "%9A", "%9B", "%9C", "%9D", "%9E", "%9F", + "%A0", "%A1", "%A2", "%A3", "%A4", "%A5", "%A6", "%A7", + "%A8", "%A9", "%AA", "%AB", "%AC", "%AD", "%AE", "%AF", + "%B0", "%B1", "%B2", "%B3", "%B4", "%B5", "%B6", "%B7", + "%B8", "%B9", "%BA", "%BB", "%BC", "%BD", "%BE", "%BF", + "%C0", "%C1", "%C2", "%C3", "%C4", "%C5", "%C6", "%C7", + "%C8", "%C9", "%CA", "%CB", "%CC", "%CD", "%CE", "%CF", + "%D0", "%D1", "%D2", "%D3", "%D4", "%D5", "%D6", "%D7", + "%D8", "%D9", "%DA", "%DB", "%DC", "%DD", "%DE", "%DF", + "%E0", "%E1", "%E2", "%E3", "%E4", "%E5", "%E6", "%E7", + "%E8", "%E9", "%EA", "%EB", "%EC", "%ED", "%EE", "%EF", + "%F0", "%F1", "%F2", "%F3", "%F4", "%F5", "%F6", "%F7", + "%F8", "%F9", "%FA", "%FB", "%FC", "%FD", "%FE", "%FF", +]; + + diff --git a/src/percent_encoding.rs b/src/percent_encoding.rs index 146bede2..9b0f07b6 100644 --- a/src/percent_encoding.rs +++ b/src/percent_encoding.rs @@ -59,6 +59,12 @@ pub static FORM_URLENCODED_ENCODE_SET: EncodeSet = EncodeSet { /// https://tools.ietf.org/html/rfc5987#section-3.2 pub static HTTP_VALUE_ENCODE_SET: EncodeSet = EncodeSet { map: &encode_sets::HTTP_VALUE }; +/// This encode set is used for OAuth 1.0 base signatures and is defined at +/// https://tools.ietf.org/html/rfc5849#section-3.6 +pub static OAUTH_SIGNATURE_ENCODE_SET: EncodeSet = EncodeSet { + map: &encode_sets::OAUTH_SIGNATURE, +}; + /// Percent-encode the given bytes, and push the result to `output`. /// /// The pushed strings are within the ASCII range. From 7ec6d51e91a3b99a20bac152063e71552f4e8491 Mon Sep 17 00:00:00 2001 From: Alice Maz Date: Sat, 28 Nov 2015 17:19:10 -0500 Subject: [PATCH 2/3] Rename OAUTH_SIGNATURE to UNRESERVED Unreserved character set defined in rfc3986 https://tools.ietf.org/html/rfc3986#section-2.3 --- make_encode_sets.py | 2 +- src/encode_sets.rs | 2 +- src/percent_encoding.rs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/make_encode_sets.py b/make_encode_sets.py index dc292a74..9331b6bf 100644 --- a/make_encode_sets.py +++ b/make_encode_sets.py @@ -30,7 +30,7 @@ ('USERNAME', r''' "#<>`?{}@\/:'''), ('FORM_URLENCODED', r''' !"#$%&\'()+,/:;<=>?@[\]^`{|}~'''), ('HTTP_VALUE', r''' "%'()*,/:;<->?[\]{}'''), - ('OAUTH_SIGNATURE', r''' !"#$%&\'*()+,/:;<=>?@[\]^`{|}'''), + ('UNRESERVED', r''' !"#$%&\'*()+,/:;<=>?@[\]^`{|}'''), ]: print( "pub static %s: [&'static str; 256] = [\n%s\n];\n\n" diff --git a/src/encode_sets.rs b/src/encode_sets.rs index 62ad9d6b..f1cfb977 100644 --- a/src/encode_sets.rs +++ b/src/encode_sets.rs @@ -296,7 +296,7 @@ pub static HTTP_VALUE: [&'static str; 256] = [ ]; -pub static OAUTH_SIGNATURE: [&'static str; 256] = [ +pub static UNRESERVED: [&'static str; 256] = [ "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", "%0A", "%0B", "%0C", "%0D", "%0E", "%0F", "%10", "%11", "%12", "%13", "%14", "%15", "%16", "%17", diff --git a/src/percent_encoding.rs b/src/percent_encoding.rs index 9b0f07b6..8889e63d 100644 --- a/src/percent_encoding.rs +++ b/src/percent_encoding.rs @@ -60,9 +60,9 @@ pub static FORM_URLENCODED_ENCODE_SET: EncodeSet = EncodeSet { pub static HTTP_VALUE_ENCODE_SET: EncodeSet = EncodeSet { map: &encode_sets::HTTP_VALUE }; /// This encode set is used for OAuth 1.0 base signatures and is defined at -/// https://tools.ietf.org/html/rfc5849#section-3.6 -pub static OAUTH_SIGNATURE_ENCODE_SET: EncodeSet = EncodeSet { - map: &encode_sets::OAUTH_SIGNATURE, +/// https://tools.ietf.org/html/rfc3986#section-2.3 +pub static UNRESERVED_ENCODE_SET: EncodeSet = EncodeSet { + map: &encode_sets::UNRESERVED, }; /// Percent-encode the given bytes, and push the result to `output`. From 1ce0f676fab96373c56fdddaaeb128dd51720e47 Mon Sep 17 00:00:00 2001 From: Alice Maz Date: Sat, 28 Nov 2015 18:30:10 -0500 Subject: [PATCH 3/3] Update UNRESERVED description --- src/percent_encoding.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/percent_encoding.rs b/src/percent_encoding.rs index 8889e63d..903e0cac 100644 --- a/src/percent_encoding.rs +++ b/src/percent_encoding.rs @@ -59,8 +59,7 @@ pub static FORM_URLENCODED_ENCODE_SET: EncodeSet = EncodeSet { /// https://tools.ietf.org/html/rfc5987#section-3.2 pub static HTTP_VALUE_ENCODE_SET: EncodeSet = EncodeSet { map: &encode_sets::HTTP_VALUE }; -/// This encode set is used for OAuth 1.0 base signatures and is defined at -/// https://tools.ietf.org/html/rfc3986#section-2.3 +/// This encode set is used for URI normalization and to implement other RFCs which rely on `unreserved`. pub static UNRESERVED_ENCODE_SET: EncodeSet = EncodeSet { map: &encode_sets::UNRESERVED, };