summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nuget/DotNetOpenAuth.Ultimate.nuspec3
-rw-r--r--nuget/DotNetOpenAuth.nuspec3
-rw-r--r--src/.gitignore1
-rw-r--r--src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs11
-rw-r--r--src/DotNetOpenAuth.Core/Messaging/OutgoingWebResponse.cs2
-rw-r--r--src/DotNetOpenAuth.Core/Messaging/StandardWebRequestHandler.cs2
-rw-r--r--src/DotNetOpenAuth.OAuth2.Client/OAuth2/BearerTokenHttpMessageHandler.cs2
-rw-r--r--src/DotNetOpenAuth.OAuth2.Client/OAuth2/WebServerClient.cs2
-rw-r--r--src/DotNetOpenAuth.OpenId/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs13
-rw-r--r--src/version.txt3
10 files changed, 27 insertions, 15 deletions
diff --git a/nuget/DotNetOpenAuth.Ultimate.nuspec b/nuget/DotNetOpenAuth.Ultimate.nuspec
index 9ce6996..6432868 100644
--- a/nuget/DotNetOpenAuth.Ultimate.nuspec
+++ b/nuget/DotNetOpenAuth.Ultimate.nuspec
@@ -13,8 +13,7 @@
<summary>OpenID, OAuth, &amp; InfoCard library for web and desktop applications.</summary>
<description>
A single assembly that adds OpenID 1.1/2.0, OAuth 1.0(a)/2.0, &amp; InfoCard authentication and authorization functionality for client and server applications.
- This allows your (web) application to issue identities or accept issued identites from other web applications, and even access your users'
- data on other services.
+ This allows your (web) application to issue identities or accept issued identites from other web applications, and even access your users' data on other services.
</description>
<language>en-US</language>
</metadata>
diff --git a/nuget/DotNetOpenAuth.nuspec b/nuget/DotNetOpenAuth.nuspec
index c8a19ab..2895b00 100644
--- a/nuget/DotNetOpenAuth.nuspec
+++ b/nuget/DotNetOpenAuth.nuspec
@@ -13,8 +13,7 @@
<summary>OpenID, OAuth, &amp; InfoCard library for web and desktop applications.</summary>
<description>
Add OpenID 1.1/2.0, OAuth 1.0(a), &amp; InfoCard authentication and authorization functionality for client and server applications.
- This allows your (web) application to issue identities or accept issued identites from other web applications, and even access your users'
- data on other services.
+ This allows your (web) application to issue identities or accept issued identites from other web applications, and even access your users' data on other services.
</description>
<language>en-US</language>
<dependencies>
diff --git a/src/.gitignore b/src/.gitignore
index 420748a..a5031e1 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -9,3 +9,4 @@ _ReSharper.*
bin
obj
Bin
+packages \ No newline at end of file
diff --git a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
index eff035a..ab4aadf 100644
--- a/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
+++ b/src/DotNetOpenAuth.Core/Messaging/MessagingUtilities.cs
@@ -696,11 +696,14 @@ namespace DotNetOpenAuth.Messaging {
/// Gets a NON-cryptographically strong random string of base64 characters.
/// </summary>
/// <param name="binaryLength">The length of the byte sequence to generate.</param>
- /// <returns>A base64 encoding of the generated random data,
- /// whose length in characters will likely be greater than <paramref name="binaryLength"/>.</returns>
- internal static string GetNonCryptoRandomDataAsBase64(int binaryLength) {
+ /// <param name="useWeb64">A value indicating whether web64 encoding is used to avoid the need to escape characters.</param>
+ /// <returns>
+ /// A base64 encoding of the generated random data,
+ /// whose length in characters will likely be greater than <paramref name="binaryLength" />.
+ /// </returns>
+ internal static string GetNonCryptoRandomDataAsBase64(int binaryLength, bool useWeb64 = false) {
byte[] uniq_bytes = GetNonCryptoRandomData(binaryLength);
- string uniq = Convert.ToBase64String(uniq_bytes);
+ string uniq = useWeb64 ? ConvertToBase64WebSafeString(uniq_bytes) : Convert.ToBase64String(uniq_bytes);
return uniq;
}
diff --git a/src/DotNetOpenAuth.Core/Messaging/OutgoingWebResponse.cs b/src/DotNetOpenAuth.Core/Messaging/OutgoingWebResponse.cs
index e1e9d53..3b9ab41 100644
--- a/src/DotNetOpenAuth.Core/Messaging/OutgoingWebResponse.cs
+++ b/src/DotNetOpenAuth.Core/Messaging/OutgoingWebResponse.cs
@@ -9,6 +9,7 @@ namespace DotNetOpenAuth.Messaging {
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Diagnostics.Contracts;
+ using System.Globalization;
using System.IO;
using System.Net;
using System.Net.Mime;
@@ -318,6 +319,7 @@ namespace DotNetOpenAuth.Messaging {
writer.Write(body);
writer.Flush();
this.ResponseStream.Seek(0, SeekOrigin.Begin);
+ this.Headers[HttpResponseHeader.ContentLength] = this.ResponseStream.Length.ToString(CultureInfo.InvariantCulture);
}
/// <summary>
diff --git a/src/DotNetOpenAuth.Core/Messaging/StandardWebRequestHandler.cs b/src/DotNetOpenAuth.Core/Messaging/StandardWebRequestHandler.cs
index adca925..65d4827 100644
--- a/src/DotNetOpenAuth.Core/Messaging/StandardWebRequestHandler.cs
+++ b/src/DotNetOpenAuth.Core/Messaging/StandardWebRequestHandler.cs
@@ -167,7 +167,7 @@ namespace DotNetOpenAuth.Messaging {
}
} else {
Logger.Http.ErrorFormat(
- "{0} connecting to {0}",
+ "{0} connecting to {1}",
ex.Status,
request.RequestUri);
}
diff --git a/src/DotNetOpenAuth.OAuth2.Client/OAuth2/BearerTokenHttpMessageHandler.cs b/src/DotNetOpenAuth.OAuth2.Client/OAuth2/BearerTokenHttpMessageHandler.cs
index 6b2e937..2208700 100644
--- a/src/DotNetOpenAuth.OAuth2.Client/OAuth2/BearerTokenHttpMessageHandler.cs
+++ b/src/DotNetOpenAuth.OAuth2.Client/OAuth2/BearerTokenHttpMessageHandler.cs
@@ -75,7 +75,7 @@ namespace DotNetOpenAuth.OAuth2 {
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) {
string bearerToken = this.BearerToken;
if (bearerToken == null) {
- ErrorUtilities.VerifyProtocol(!this.Authorization.AccessTokenExpirationUtc.HasValue || this.Authorization.AccessTokenExpirationUtc < DateTime.UtcNow || this.Authorization.RefreshToken != null, ClientStrings.AuthorizationExpired);
+ ErrorUtilities.VerifyProtocol(!this.Authorization.AccessTokenExpirationUtc.HasValue || this.Authorization.AccessTokenExpirationUtc >= DateTime.UtcNow || this.Authorization.RefreshToken != null, ClientStrings.AuthorizationExpired);
if (this.Authorization.AccessTokenExpirationUtc.HasValue && this.Authorization.AccessTokenExpirationUtc.Value < DateTime.UtcNow) {
ErrorUtilities.VerifyProtocol(this.Authorization.RefreshToken != null, ClientStrings.AccessTokenRefreshFailed);
diff --git a/src/DotNetOpenAuth.OAuth2.Client/OAuth2/WebServerClient.cs b/src/DotNetOpenAuth.OAuth2.Client/OAuth2/WebServerClient.cs
index 879e4e3..277bed4 100644
--- a/src/DotNetOpenAuth.OAuth2.Client/OAuth2/WebServerClient.cs
+++ b/src/DotNetOpenAuth.OAuth2.Client/OAuth2/WebServerClient.cs
@@ -113,7 +113,7 @@ namespace DotNetOpenAuth.OAuth2 {
if (this.AuthorizationTracker == null) {
var context = this.Channel.GetHttpContext();
- string xsrfKey = MessagingUtilities.GetNonCryptoRandomDataAsBase64(16);
+ string xsrfKey = MessagingUtilities.GetNonCryptoRandomDataAsBase64(16, useWeb64: true);
cookie = new HttpCookie(XsrfCookieName, xsrfKey) {
HttpOnly = true,
Secure = FormsAuthentication.RequireSSL,
diff --git a/src/DotNetOpenAuth.OpenId/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs b/src/DotNetOpenAuth.OpenId/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs
index af60596..a313519 100644
--- a/src/DotNetOpenAuth.OpenId/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs
+++ b/src/DotNetOpenAuth.OpenId/OpenId/Extensions/SimpleRegistration/ClaimsResponse.cs
@@ -192,7 +192,7 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration {
}
/// <summary>
- /// Gets or sets a combination o the language and country of the user.
+ /// Gets or sets a combination of the language and country of the user.
/// </summary>
[XmlIgnore]
public CultureInfo Culture {
@@ -203,7 +203,16 @@ namespace DotNetOpenAuth.OpenId.Extensions.SimpleRegistration {
if (!string.IsNullOrEmpty(this.Country)) {
cultureString += "-" + this.Country;
}
- this.culture = CultureInfo.GetCultureInfo(cultureString);
+
+ // language-country may not always form a recongized valid culture.
+ // For instance, a Google OpenID Provider can return a random combination
+ // of language and country based on user settings.
+ try {
+ this.culture = CultureInfo.GetCultureInfo(cultureString);
+ } catch (ArgumentException) { // CultureNotFoundException derives from this, and .NET 3.5 throws the base type
+ // Fallback to just reporting a culture based on language.
+ this.culture = CultureInfo.GetCultureInfo(this.Language);
+ }
}
return this.culture;
diff --git a/src/version.txt b/src/version.txt
index 626c1f6..f77856a 100644
--- a/src/version.txt
+++ b/src/version.txt
@@ -1,2 +1 @@
-4.3.0
--ctp1
+4.3.1