/* Copyright 2013 Google Inc Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ using System.Collections.Generic; namespace Google.Apis.Auth { /// /// JSON Web Signature (JWS) implementation as specified in /// http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-11. /// public class JsonWebSignature { // TODO(peleyal): Implement some verify method: // http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-08#section-7 /// /// Header as specified in http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-11#section-4.1. /// public class Header : JsonWebToken.Header { /// /// Gets or set the algorithm header parameter that identifies the cryptographic algorithm used to secure /// the JWS or null. /// [Newtonsoft.Json.JsonPropertyAttribute("alg")] public string Algorithm { get; set; } /// /// Gets or sets the JSON Web Key URL header parameter that is an absolute URL that refers to a resource /// for a set of JSON-encoded public keys, one of which corresponds to the key that was used to digitally /// sign the JWS or null. /// [Newtonsoft.Json.JsonPropertyAttribute("jku")] public string JwkUrl { get; set; } /// /// Gets or sets JSON Web Key header parameter that is a public key that corresponds to the key used to /// digitally sign the JWS or null. /// [Newtonsoft.Json.JsonPropertyAttribute("jwk")] public string Jwk { get; set; } /// /// Gets or sets key ID header parameter that is a hint indicating which specific key owned by the signer /// should be used to validate the digital signature or null. /// [Newtonsoft.Json.JsonPropertyAttribute("kid")] public string KeyId { get; set; } /// /// Gets or sets X.509 URL header parameter that is an absolute URL that refers to a resource for the X.509 /// public key certificate or certificate chain corresponding to the key used to digitally sign the JWS or /// null. /// [Newtonsoft.Json.JsonPropertyAttribute("x5u")] public string X509Url { get; set; } /// /// Gets or sets X.509 certificate thumb print header parameter that provides a base64url encoded SHA-1 /// thumb-print (a.k.a. digest) of the DER encoding of an X.509 certificate that can be used to match the /// certificate or null. /// [Newtonsoft.Json.JsonPropertyAttribute("x5t")] public string X509Thumbprint { get; set; } /// /// Gets or sets X.509 certificate chain header parameter contains the X.509 public key certificate or /// certificate chain corresponding to the key used to digitally sign the JWS or null. /// [Newtonsoft.Json.JsonPropertyAttribute("x5c")] public string X509Certificate { get; set; } /// /// Gets or sets array listing the header parameter names that define extensions that are used in the JWS /// header that MUST be understood and processed or null. /// [Newtonsoft.Json.JsonPropertyAttribute("crit")] public IList critical { get; set; } } /// JWS Payload. public class Payload : JsonWebToken.Payload { } } }