summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenAuth.OpenId.Provider/OpenId
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenAuth.OpenId.Provider/OpenId')
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Behaviors/GsaIcamProviderProfile.cs4
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/OpenIdProviderChannel.cs13
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/ProviderSigningBindingElement.cs50
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Extensions/ExtensionsInteropProviderHelper.cs2
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/HmacShaAssociationProvider.cs7
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateDiffieHellmanProviderResponse.cs2
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateRequestProvider.cs5
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProvider.cs3
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProviderContract.cs24
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateUnencryptedResponseProvider.cs3
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/CheckAuthenticationResponseProvider.cs6
-rw-r--r--src/DotNetOpenAuth.OpenId.Provider/OpenId/OpenIdProviderUtilities.cs10
12 files changed, 101 insertions, 28 deletions
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Behaviors/GsaIcamProviderProfile.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Behaviors/GsaIcamProviderProfile.cs
index 020de09..5f4d23c 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Behaviors/GsaIcamProviderProfile.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Behaviors/GsaIcamProviderProfile.cs
@@ -1,5 +1,5 @@
//-----------------------------------------------------------------------
-// <copyright file="GsaIcamProfile.cs" company="Andrew Arnott">
+// <copyright file="GsaIcamProviderProfile.cs" company="Andrew Arnott">
// Copyright (c) Andrew Arnott. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
@@ -35,7 +35,7 @@ namespace DotNetOpenAuth.OpenId.Behaviors {
private static readonly TimeSpan MaximumAssociationLifetime = TimeSpan.FromSeconds(86400);
/// <summary>
- /// Initializes a new instance of the <see cref="GsaIcamProfile"/> class.
+ /// Initializes a new instance of the <see cref="GsaIcamProviderProfile"/> class.
/// </summary>
public GsaIcamProviderProfile() {
if (DisableSslRequirement) {
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/OpenIdProviderChannel.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/OpenIdProviderChannel.cs
index 88df1a7..2b88913 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/OpenIdProviderChannel.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/OpenIdProviderChannel.cs
@@ -7,14 +7,17 @@
namespace DotNetOpenAuth.OpenId.ChannelElements {
using System;
using System.Collections.Generic;
+ using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
- using DotNetOpenAuth.OpenId.Provider;
- using DotNetOpenAuth.Messaging.Bindings;
- using System.Diagnostics.Contracts;
using DotNetOpenAuth.Messaging;
+ using DotNetOpenAuth.Messaging.Bindings;
using DotNetOpenAuth.OpenId.Extensions;
+ using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// The messaging channel for OpenID Providers.
+ /// </summary>
internal class OpenIdProviderChannel : OpenIdChannel {
/// <summary>
/// Initializes a new instance of the <see cref="OpenIdProviderChannel"/> class.
@@ -27,7 +30,7 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
Contract.Requires<ArgumentNullException>(cryptoKeyStore != null);
Contract.Requires<ArgumentNullException>(securitySettings != null);
}
-
+
/// <summary>
/// Initializes a new instance of the <see cref="OpenIdProviderChannel"/> class.
/// </summary>
@@ -37,7 +40,7 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
/// <param name="securitySettings">The security settings.</param>
private OpenIdProviderChannel(IProviderAssociationStore cryptoKeyStore, INonceStore nonceStore, IMessageFactory messageTypeProvider, ProviderSecuritySettings securitySettings)
: base(messageTypeProvider, InitializeBindingElements(cryptoKeyStore, nonceStore, securitySettings)) {
- Contract.Requires<ArgumentNullException>(cryptoKeyStore != null);
+ Contract.Requires<ArgumentNullException>(cryptoKeyStore != null);
Contract.Requires<ArgumentNullException>(messageTypeProvider != null);
Contract.Requires<ArgumentNullException>(securitySettings != null);
}
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/ProviderSigningBindingElement.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/ProviderSigningBindingElement.cs
index 7975253..da9a64c 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/ProviderSigningBindingElement.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/ChannelElements/ProviderSigningBindingElement.cs
@@ -7,16 +7,19 @@
namespace DotNetOpenAuth.OpenId.ChannelElements {
using System;
using System.Collections.Generic;
+ using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
- using DotNetOpenAuth.OpenId.Provider;
- using System.Diagnostics.Contracts;
- using DotNetOpenAuth.OpenId.Messages;
+ using System.Web;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.Messaging.Bindings;
- using System.Web;
using DotNetOpenAuth.Messaging.Reflection;
+ using DotNetOpenAuth.OpenId.Messages;
+ using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// The signing binding element for OpenID Providers.
+ /// </summary>
internal class ProviderSigningBindingElement : SigningBindingElement {
/// <summary>
/// The association store used by Providers to look up the secrets needed for signing.
@@ -30,7 +33,7 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
private readonly ProviderSecuritySettings opSecuritySettings;
/// <summary>
- /// Initializes a new instance of the SigningBindingElement class for use by a Provider.
+ /// Initializes a new instance of the <see cref="ProviderSigningBindingElement"/> class.
/// </summary>
/// <param name="associationStore">The association store used to look up the secrets needed for signing.</param>
/// <param name="securitySettings">The security settings.</param>
@@ -49,6 +52,14 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
get { return true; }
}
+ /// <summary>
+ /// Prepares a message for sending based on the rules of this channel binding element.
+ /// </summary>
+ /// <param name="message">The message to prepare for sending.</param>
+ /// <returns>
+ /// The protections (if any) that this binding element applied to the message.
+ /// Null if this binding element did not even apply to this binding element.
+ /// </returns>
public override MessageProtections? ProcessOutgoingMessage(IProtocolMessage message) {
var result = base.ProcessOutgoingMessage(message);
if (result != null) {
@@ -68,6 +79,13 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
return null;
}
+ /// <summary>
+ /// Gets the association to use to sign or verify a message.
+ /// </summary>
+ /// <param name="signedMessage">The message to sign or verify.</param>
+ /// <returns>
+ /// The association to use to sign or verify the message.
+ /// </returns>
protected override Association GetAssociation(ITamperResistantOpenIdMessage signedMessage) {
Contract.Requires<ArgumentNullException>(signedMessage != null);
@@ -95,6 +113,13 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
}
}
+ /// <summary>
+ /// Gets a specific association referenced in a given message's association handle.
+ /// </summary>
+ /// <param name="signedMessage">The signed message whose association handle should be used to lookup the association to return.</param>
+ /// <returns>
+ /// The referenced association; or <c>null</c> if such an association cannot be found.
+ /// </returns>
protected override Association GetSpecificAssociation(ITamperResistantOpenIdMessage signedMessage) {
Association association = null;
@@ -129,6 +154,15 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
return association;
}
+ /// <summary>
+ /// Verifies the signature by unrecognized handle.
+ /// </summary>
+ /// <param name="message">The message.</param>
+ /// <param name="signedMessage">The signed message.</param>
+ /// <param name="protectionsApplied">The protections applied.</param>
+ /// <returns>
+ /// The applied protections.
+ /// </returns>
protected override MessageProtections VerifySignatureByUnrecognizedHandle(IProtocolMessage message, ITamperResistantOpenIdMessage signedMessage, MessageProtections protectionsApplied) {
// If we're on the Provider, then the RP sent us a check_auth with a signature
// we don't have an association for. (It may have expired, or it may be a faulty RP).
@@ -192,9 +226,9 @@ namespace DotNetOpenAuth.OpenId.ChannelElements {
MessageDescription description = this.Channel.MessageDescriptions.Get(signedMessage);
var signedParts = from part in description.Mapping.Values
- where (part.RequiredProtection & System.Net.Security.ProtectionLevel.Sign) != 0
- && part.GetValue(signedMessage) != null
- select part.Name;
+ where (part.RequiredProtection & System.Net.Security.ProtectionLevel.Sign) != 0
+ && part.GetValue(signedMessage) != null
+ select part.Name;
string prefix = Protocol.V20.openid.Prefix;
ErrorUtilities.VerifyInternal(signedParts.All(name => name.StartsWith(prefix, StringComparison.Ordinal)), "All signed message parts must start with 'openid.'.");
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Extensions/ExtensionsInteropProviderHelper.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Extensions/ExtensionsInteropProviderHelper.cs
index 2f8ac2f..c70bdd4 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Extensions/ExtensionsInteropProviderHelper.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Extensions/ExtensionsInteropProviderHelper.cs
@@ -116,7 +116,7 @@ namespace DotNetOpenAuth.OpenId.Extensions {
AddAXAttributeValue(axResponse, WellKnownAttributes.Preferences.TimeZone, format, sregResponse.TimeZone);
AddAXAttributeValue(axResponse, WellKnownAttributes.Preferences.Language, format, sregResponse.Language);
if (sregResponse.Gender.HasValue) {
- AddAXAttributeValue(axResponse, WellKnownAttributes.Person.Gender, format, ExtensionsInteropHelper.genderEncoder.Encode(sregResponse.Gender));
+ AddAXAttributeValue(axResponse, WellKnownAttributes.Person.Gender, format, ExtensionsInteropHelper.GenderEncoder.Encode(sregResponse.Gender));
}
}
}
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/HmacShaAssociationProvider.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/HmacShaAssociationProvider.cs
index 48b3840..7aff483 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/HmacShaAssociationProvider.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/HmacShaAssociationProvider.cs
@@ -1,5 +1,5 @@
//-----------------------------------------------------------------------
-// <copyright file="HmacShaAsssociationProvider.cs" company="Andrew Arnott">
+// <copyright file="HmacShaAssociationProvider.cs" company="Andrew Arnott">
// Copyright (c) Andrew Arnott. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
@@ -7,12 +7,15 @@
namespace DotNetOpenAuth.OpenId {
using System;
using System.Collections.Generic;
+ using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
- using System.Diagnostics.Contracts;
using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// OpenID Provider utility methods for HMAC-SHA* associations.
+ /// </summary>
internal static class HmacShaAssociationProvider {
/// <summary>
/// The default lifetime of a shared association when no lifetime is given
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateDiffieHellmanProviderResponse.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateDiffieHellmanProviderResponse.cs
index cdb5166..2e0a4e1 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateDiffieHellmanProviderResponse.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateDiffieHellmanProviderResponse.cs
@@ -1,5 +1,5 @@
//-----------------------------------------------------------------------
-// <copyright file="AssociateDiffieHellmanResponse.cs" company="Andrew Arnott">
+// <copyright file="AssociateDiffieHellmanProviderResponse.cs" company="Andrew Arnott">
// Copyright (c) Andrew Arnott. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateRequestProvider.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateRequestProvider.cs
index 958bb9b..6abae34 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateRequestProvider.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateRequestProvider.cs
@@ -7,12 +7,15 @@
namespace DotNetOpenAuth.OpenId.Messages {
using System;
using System.Collections.Generic;
+ using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
using DotNetOpenAuth.Messaging;
- using System.Diagnostics.Contracts;
using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// The openid.mode=associate message as it is received at the OpenID Provider.
+ /// </summary>
internal abstract class AssociateRequestProvider : AssociateRequest {
/// <summary>
/// Initializes a new instance of the <see cref="AssociateRequestProvider"/> class.
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProvider.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProvider.cs
index c9ad135..fa0091d 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProvider.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProvider.cs
@@ -12,6 +12,9 @@ namespace DotNetOpenAuth.OpenId.Messages {
using System.Text;
using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// An outgoing successful association response from the OpenID Provider.
+ /// </summary>
[ContractClass(typeof(AssociateSuccessfulResponseProviderContract))]
internal abstract class AssociateSuccessfulResponseProvider : AssociateSuccessfulResponse {
/// <summary>
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProviderContract.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProviderContract.cs
index 9403980..a6d067e 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProviderContract.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateSuccessfulResponseProviderContract.cs
@@ -1,15 +1,24 @@
-namespace DotNetOpenAuth.OpenId.Messages {
+//-----------------------------------------------------------------------
+// <copyright file="AssociateSuccessfulResponseProviderContract.cs" company="Andrew Arnott">
+// Copyright (c) Andrew Arnott. All rights reserved.
+// </copyright>
+//-----------------------------------------------------------------------
+
+namespace DotNetOpenAuth.OpenId.Messages {
using System;
using System.Collections.Generic;
+ using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
- using System.Diagnostics.Contracts;
using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// Code contract for the <see cref="AssociateSuccessfulResponseProvider"/> class.
+ /// </summary>
[ContractClassFor(typeof(AssociateSuccessfulResponseProvider))]
internal abstract class AssociateSuccessfulResponseProviderContract : AssociateSuccessfulResponseProvider {
/// <summary>
- /// Prevents a default instance of the <see cref="AssociateSuccessfulResponseProviderContract"/> class from being created.
+ /// Initializes a new instance of the <see cref="AssociateSuccessfulResponseProviderContract"/> class.
/// </summary>
/// <param name="version">The version.</param>
/// <param name="request">The request.</param>
@@ -17,6 +26,15 @@
: base(version, request) {
}
+ /// <summary>
+ /// Called to create the Association based on a request previously given by the Relying Party.
+ /// </summary>
+ /// <param name="request">The prior request for an association.</param>
+ /// <param name="associationStore">The Provider's association store.</param>
+ /// <param name="securitySettings">The security settings of the Provider.</param>
+ /// <returns>
+ /// The created association.
+ /// </returns>
protected internal override Association CreateAssociationAtProvider(AssociateRequest request, IProviderAssociationStore associationStore, ProviderSecuritySettings securitySettings) {
Contract.Requires<ArgumentNullException>(request != null);
Contract.Requires<ArgumentNullException>(associationStore != null);
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateUnencryptedResponseProvider.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateUnencryptedResponseProvider.cs
index ad7c3ae..120d2c4 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateUnencryptedResponseProvider.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/AssociateUnencryptedResponseProvider.cs
@@ -11,6 +11,9 @@ namespace DotNetOpenAuth.OpenId.Messages {
using System.Text;
using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// An unencrypted association response as it is sent by the Provider.
+ /// </summary>
internal class AssociateUnencryptedResponseProvider : AssociateUnencryptedResponse {
/// <summary>
/// Initializes a new instance of the <see cref="AssociateUnencryptedResponseProvider"/> class.
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/CheckAuthenticationResponseProvider.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/CheckAuthenticationResponseProvider.cs
index 62434bf..8f9a240 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/CheckAuthenticationResponseProvider.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/Messages/CheckAuthenticationResponseProvider.cs
@@ -13,10 +13,12 @@ namespace DotNetOpenAuth.OpenId.Messages {
using DotNetOpenAuth.OpenId.ChannelElements;
using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// The check_auth response message, as it is seen by the OpenID Provider.
+ /// </summary>
internal class CheckAuthenticationResponseProvider : CheckAuthenticationResponse {
/// <summary>
- /// Initializes a new instance of the <see cref="CheckAuthenticationResponse"/> class
- /// for use by the Provider.
+ /// Initializes a new instance of the <see cref="CheckAuthenticationResponseProvider"/> class.
/// </summary>
/// <param name="request">The request that this message is responding to.</param>
/// <param name="provider">The OpenID Provider that is preparing to send this response.</param>
diff --git a/src/DotNetOpenAuth.OpenId.Provider/OpenId/OpenIdProviderUtilities.cs b/src/DotNetOpenAuth.OpenId.Provider/OpenId/OpenIdProviderUtilities.cs
index 247f734..73e404c 100644
--- a/src/DotNetOpenAuth.OpenId.Provider/OpenId/OpenIdProviderUtilities.cs
+++ b/src/DotNetOpenAuth.OpenId.Provider/OpenId/OpenIdProviderUtilities.cs
@@ -7,18 +7,22 @@
namespace DotNetOpenAuth.OpenId {
using System;
using System.Collections.Generic;
+ using System.Diagnostics.Contracts;
using System.Linq;
using System.Text;
- using DotNetOpenAuth.OpenId.Provider;
using DotNetOpenAuth.Messaging;
- using System.Diagnostics.Contracts;
using DotNetOpenAuth.OpenId.Messages;
+ using DotNetOpenAuth.OpenId.Provider;
+ /// <summary>
+ /// Utility methods for OpenID Providers.
+ /// </summary>
internal static class OpenIdProviderUtilities {
/// <summary>
/// Called to create the Association based on a request previously given by the Relying Party.
/// </summary>
/// <param name="request">The prior request for an association.</param>
+ /// <param name="response">The response.</param>
/// <param name="associationStore">The Provider's association store.</param>
/// <param name="securitySettings">The security settings for the Provider. Should be <c>null</c> for Relying Parties.</param>
/// <returns>
@@ -33,7 +37,7 @@ namespace DotNetOpenAuth.OpenId {
Contract.Requires<ArgumentNullException>(request != null);
Contract.Requires<ArgumentNullException>(response != null, "response");
Contract.Requires<ArgumentNullException>(securitySettings != null, "securitySettings");
-
+
// We need to initialize some common properties based on the created association.
var association = response.CreateAssociationAtProvider(request, associationStore, securitySettings);
response.ExpiresIn = association.SecondsTillExpiration;