/// <summary>
 /// Creates a new SasQueryParameters instance.
 /// </summary>
 protected SasQueryParameters(
     string version,
     AccountSasServices?services,
     AccountSasResourceTypes?resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startsOn,
     DateTimeOffset expiresOn,
     SasIPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string cacheControl       = default,
     string contentDisposition = default,
     string contentEncoding    = default,
     string contentLanguage    = default,
     string contentType        = default)
 {
     _version            = version;
     _services           = services;
     _resourceTypes      = resourceTypes;
     _protocol           = protocol;
     _startTime          = startsOn;
     _expiryTime         = expiresOn;
     _ipRange            = ipRange;
     _identifier         = identifier;
     _resource           = resource;
     _permissions        = permissions;
     _signature          = signature;
     _cacheControl       = cacheControl;
     _contentDisposition = contentDisposition;
     _contentEncoding    = contentEncoding;
     _contentLanguage    = contentLanguage;
     _contentType        = contentType;
 }
 /// <summary>
 /// Creates a new SasQueryParameters instance.
 /// </summary>
 protected static SasQueryParameters Create(
     string version,
     AccountSasServices?services,
     AccountSasResourceTypes?resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startsOn,
     DateTimeOffset expiresOn,
     SasIPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string cacheControl       = default,
     string contentDisposition = default,
     string contentEncoding    = default,
     string contentLanguage    = default,
     string contentType        = default) =>
 new SasQueryParameters(
     version,
     services,
     resourceTypes,
     protocol,
     startsOn,
     expiresOn,
     ipRange,
     identifier,
     resource,
     permissions,
     signature,
     cacheControl,
     contentDisposition,
     contentEncoding,
     contentLanguage,
     contentType);
 /// <summary>
 /// Creates a new BlobSasQueryParameters instance.
 /// </summary>
 internal BlobSasQueryParameters(
     string version,
     AccountSasServices?services,
     AccountSasResourceTypes?resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startsOn,
     DateTimeOffset expiresOn,
     SasIPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string keyOid                  = default,
     string keyTid                  = default,
     DateTimeOffset keyStart        = default,
     DateTimeOffset keyExpiry       = default,
     string keyService              = default,
     string keyVersion              = default,
     string cacheControl            = default,
     string contentDisposition      = default,
     string contentEncoding         = default,
     string contentLanguage         = default,
     string contentType             = default,
     string authorizedAadObjectId   = default,
     string unauthorizedAadObjectId = default,
     string correlationId           = default,
     string encryptionScope         = default)
     : base(
         version,
         services,
         resourceTypes,
         protocol,
         startsOn,
         expiresOn,
         ipRange,
         identifier,
         resource,
         permissions,
         signature,
         cacheControl,
         contentDisposition,
         contentEncoding,
         contentLanguage,
         contentType,
         authorizedAadObjectId,
         unauthorizedAadObjectId,
         correlationId,
         directoryDepth: null,
         encryptionScope)
 {
     KeyProperties = new UserDelegationKeyProperties
     {
         ObjectId  = keyOid,
         TenantId  = keyTid,
         StartsOn  = keyStart,
         ExpiresOn = keyExpiry,
         Service   = keyService,
         Version   = keyVersion
     };
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Gets a string representation of the protocol.
        /// </summary>
        /// <returns>A string representation of the protocol.</returns>
        internal static string ToProtocolString(this SasProtocol protocol)
        {
            switch (protocol)
            {
            case SasProtocol.Https:
                return(HttpsName);

            case SasProtocol.HttpsAndHttp:
                return(HttpsAndHttpName);

            case SasProtocol.None:
            default:
                return(null);
            }
        }
 /// <summary>
 /// Creates a new instance of the <see cref="SasQueryParameters"/> type.
 ///
 /// Expects decoded values.
 /// </summary>
 internal SasQueryParameters(
     string version,
     AccountSasServices?services,
     AccountSasResourceTypes?resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startsOn,
     DateTimeOffset expiresOn,
     SasIPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string keyOid             = default,
     string keyTid             = default,
     DateTimeOffset keyStart   = default,
     DateTimeOffset keyExpiry  = default,
     string keyService         = default,
     string keyVersion         = default,
     string cacheControl       = default,
     string contentDisposition = default,
     string contentEncoding    = default,
     string contentLanguage    = default,
     string contentType        = default)
 {
     // Assume URL-decoded
     _version            = version ?? DefaultSasVersion;
     _services           = services;
     _resourceTypes      = resourceTypes;
     _protocol           = protocol;
     _startTime          = startsOn;
     _expiryTime         = expiresOn;
     _ipRange            = ipRange;
     _identifier         = identifier ?? string.Empty;
     _resource           = resource ?? string.Empty;
     _permissions        = permissions ?? string.Empty;
     _signature          = signature ?? string.Empty; // Should never be null
     _keyObjectId        = keyOid;
     _keyTenantId        = keyTid;
     _keyStart           = keyStart;
     _keyExpiry          = keyExpiry;
     _keyService         = keyService;
     _keyVersion         = keyVersion;
     _cacheControl       = cacheControl;
     _contentDisposition = contentDisposition;
     _contentEncoding    = contentEncoding;
     _contentLanguage    = contentLanguage;
     _contentType        = contentType;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Creates a new instance of the <see cref="BlobSasQueryParameters"/>
 /// type.
 ///
 /// Expects decoded values.
 /// </summary>
 internal BlobSasQueryParameters(
     string version,
     string services,
     string resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startTime,
     DateTimeOffset expiryTime,
     IPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string keyOid             = default,
     string keyTid             = default,
     DateTimeOffset keyStart   = default,
     DateTimeOffset keyExpiry  = default,
     string keyService         = default,
     string keyVersion         = default,
     string cacheControl       = default,
     string contentDisposition = default,
     string contentEncoding    = default,
     string contentLanguage    = default,
     string contentType        = default)
     : base(
         version,
         services,
         resourceTypes,
         protocol,
         startTime,
         expiryTime,
         ipRange,
         identifier,
         resource,
         permissions,
         signature,
         keyOid,
         keyTid,
         keyStart,
         keyExpiry,
         keyService,
         keyVersion,
         cacheControl,
         contentDisposition,
         contentEncoding,
         contentLanguage,
         contentType)
 {
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Creates a new SasQueryParameters instance.
 /// </summary>
 protected SasQueryParameters(
     string version,
     AccountSasServices?services,
     AccountSasResourceTypes?resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startsOn,
     DateTimeOffset expiresOn,
     SasIPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string cacheControl            = default,
     string contentDisposition      = default,
     string contentEncoding         = default,
     string contentLanguage         = default,
     string contentType             = default,
     string authorizedAadObjectId   = default,
     string unauthorizedAadObjectId = default,
     string correlationId           = default,
     int?directoryDepth             = default)
 {
     _version                    = version;
     _services                   = services;
     _resourceTypes              = resourceTypes;
     _protocol                   = protocol;
     _startTime                  = startsOn;
     _startTimeString            = startsOn.ToString(Constants.SasTimeFormatSeconds, CultureInfo.InvariantCulture);
     _expiryTime                 = expiresOn;
     _expiryTimeString           = expiresOn.ToString(Constants.SasTimeFormatSeconds, CultureInfo.InvariantCulture);
     _ipRange                    = ipRange;
     _identifier                 = identifier;
     _resource                   = resource;
     _permissions                = permissions;
     _signature                  = signature;
     _cacheControl               = cacheControl;
     _contentDisposition         = contentDisposition;
     _contentEncoding            = contentEncoding;
     _contentLanguage            = contentLanguage;
     _contentType                = contentType;
     _preauthorizedAgentObjectId = authorizedAadObjectId;
     _agentObjectId              = unauthorizedAadObjectId;
     _correlationId              = correlationId;
     _directoryDepth             = directoryDepth;
 }
Ejemplo n.º 8
0
 internal static new SasQueryParameters Create(
     string version,
     AccountSasServices?services,
     AccountSasResourceTypes?resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startsOn,
     DateTimeOffset expiresOn,
     SasIPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string cacheControl            = default,
     string contentDisposition      = default,
     string contentEncoding         = default,
     string contentLanguage         = default,
     string contentType             = default,
     string authorizedAadObjectId   = default,
     string unauthorizedAadObjectId = default,
     string correlationId           = default,
     int?directoryDepth             = default,
     string encryptionScope         = default) =>
 SasQueryParameters.Create(
     version: version,
     services: services,
     resourceTypes: resourceTypes,
     protocol: protocol,
     startsOn: startsOn,
     expiresOn: expiresOn,
     ipRange: ipRange,
     identifier: identifier,
     resource: resource,
     permissions: permissions,
     signature: signature,
     cacheControl: cacheControl,
     contentDisposition: contentDisposition,
     contentEncoding: contentEncoding,
     contentLanguage: contentLanguage,
     contentType: contentType,
     authorizedAadObjectId: authorizedAadObjectId,
     unauthorizedAadObjectId: unauthorizedAadObjectId,
     correlationId: correlationId,
     directoryDepth: directoryDepth,
     encryptionScope: encryptionScope);
Ejemplo n.º 9
0
 /// <summary>
 /// Creates a new instance of the <see cref="SasQueryParameters"/> type.
 ///
 /// Expects decoded values.
 /// </summary>
 internal SasQueryParameters(
     string version,
     string services,
     string resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startTime,
     DateTimeOffset expiryTime,
     IPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string keyOid            = default,
     string keyTid            = default,
     DateTimeOffset keyStart  = default,
     DateTimeOffset keyExpiry = default,
     string keyService        = default,
     string keyVersion        = default)
 {
     // Assume URL-decoded
     this.version       = version ?? DefaultSasVersion;
     this.services      = services ?? String.Empty;
     this.resourceTypes = resourceTypes ?? String.Empty;
     this.protocol      = protocol;
     this.startTime     = startTime;
     this.expiryTime    = expiryTime;
     this.ipRange       = ipRange;
     this.identifier    = identifier ?? String.Empty;
     this.resource      = resource ?? String.Empty;
     this.permissions   = permissions ?? String.Empty;
     this.signature     = signature ?? String.Empty; // Should never be null
     this.keyObjectId   = keyOid;
     this.keyTenantId   = keyTid;
     this.keyStart      = keyStart;
     this.keyExpiry     = keyExpiry;
     this.keyService    = keyService;
     this.keyVersion    = keyVersion;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Creates a new instance of the <see cref="BlobSasQueryParameters"/>
 /// type.
 ///
 /// Expects decoded values.
 /// </summary>
 internal BlobSasQueryParameters(
     string version,
     string services,
     string resourceTypes,
     SasProtocol protocol,
     DateTimeOffset startTime,
     DateTimeOffset expiryTime,
     IPRange ipRange,
     string identifier,
     string resource,
     string permissions,
     string signature,
     string keyOid            = default,
     string keyTid            = default,
     DateTimeOffset keyStart  = default,
     DateTimeOffset keyExpiry = default,
     string keyService        = default,
     string keyVersion        = default)
     : base(
         version,
         services,
         resourceTypes,
         protocol,
         startTime,
         expiryTime,
         ipRange,
         identifier,
         resource,
         permissions,
         signature,
         keyOid,
         keyTid,
         keyStart,
         keyExpiry,
         keyService,
         keyVersion)
 {
 }
        /// <summary>
        /// Creates a new instance of the <see cref="SasQueryParameters"/> type
        /// based on the supplied query parameters <paramref name="values"/>.
        /// All SAS-related query parameters will be removed from
        /// <paramref name="values"/>.
        /// </summary>
        /// <param name="values">URI query parameters</param>
        /// <param name="includeBlobParameters">
        /// Optional flag indicating whether to process blob-specific query
        /// parameters.  The default value is false.
        /// </param>
        internal SasQueryParameters(
            UriQueryParamsCollection values,
            bool includeBlobParameters = false)
        {
            // make copy, otherwise we'll get an exception when we remove
            IEnumerable <KeyValuePair <string, string> > kvps = values.ToArray();

            foreach (KeyValuePair <string, string> kv in kvps)
            {
                // these are already decoded
                var isSasKey = true;
                switch (kv.Key.ToUpperInvariant())
                {
                case Constants.Sas.Parameters.VersionUpper:
                    _version = kv.Value;
                    break;

                case Constants.Sas.Parameters.ServicesUpper:
                    _services = SasExtensions.ParseAccountServices(kv.Value);
                    break;

                case Constants.Sas.Parameters.ResourceTypesUpper:
                    _resourceTypes = SasExtensions.ParseResourceTypes(kv.Value);
                    break;

                case Constants.Sas.Parameters.ProtocolUpper:
                    _protocol = SasExtensions.ParseProtocol(kv.Value);
                    break;

                case Constants.Sas.Parameters.StartTimeUpper:
                    _startTime = DateTimeOffset.ParseExact(kv.Value, Constants.SasTimeFormat, CultureInfo.InvariantCulture);
                    break;

                case Constants.Sas.Parameters.ExpiryTimeUpper:
                    _expiryTime = DateTimeOffset.ParseExact(kv.Value, Constants.SasTimeFormat, CultureInfo.InvariantCulture);
                    break;

                case Constants.Sas.Parameters.IPRangeUpper:
                    _ipRange = SasIPRange.Parse(kv.Value);
                    break;

                case Constants.Sas.Parameters.IdentifierUpper:
                    _identifier = kv.Value;
                    break;

                case Constants.Sas.Parameters.ResourceUpper:
                    _resource = kv.Value;
                    break;

                case Constants.Sas.Parameters.PermissionsUpper:
                    _permissions = kv.Value;
                    break;

                case Constants.Sas.Parameters.SignatureUpper:
                    _signature = kv.Value;
                    break;

                case Constants.Sas.Parameters.CacheControlUpper:
                    _cacheControl = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentDispositionUpper:
                    _contentDisposition = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentEncodingUpper:
                    _contentEncoding = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentLanguageUpper:
                    _contentLanguage = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentTypeUpper:
                    _contentType = kv.Value;
                    break;

                // Optionally include Blob parameters
                case Constants.Sas.Parameters.KeyObjectIdUpper:
                    if (includeBlobParameters)
                    {
                        _keyObjectId = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyTenantIdUpper:
                    if (includeBlobParameters)
                    {
                        _keyTenantId = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyStartUpper:
                    if (includeBlobParameters)
                    {
                        _keyStart = DateTimeOffset.ParseExact(kv.Value, Constants.SasTimeFormat, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyExpiryUpper:
                    if (includeBlobParameters)
                    {
                        _keyExpiry = DateTimeOffset.ParseExact(kv.Value, Constants.SasTimeFormat, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyServiceUpper:
                    if (includeBlobParameters)
                    {
                        _keyService = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyVersionUpper:
                    if (includeBlobParameters)
                    {
                        _keyVersion = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                // We didn't recognize the query parameter
                default:
                    isSasKey = false;
                    break;
                }

                // Remove the query parameter if it's part of the SAS
                if (isSasKey)
                {
                    values.Remove(kv.Key);
                }
            }
        }
        /// <summary>
        /// Creates a new instance of the <see cref="SasQueryParameters"/> type
        /// based on the supplied query parameters <paramref name="values"/>.
        /// All SAS-related query parameters will be removed from
        /// <paramref name="values"/>.
        /// </summary>
        /// <param name="values">URI query parameters</param>
        protected SasQueryParameters(IDictionary <string, string> values)
        {
            // make copy, otherwise we'll get an exception when we remove
            IEnumerable <KeyValuePair <string, string> > kvps = values.ToArray();

            foreach (KeyValuePair <string, string> kv in kvps)
            {
                // these are already decoded
                var isSasKey = true;
                switch (kv.Key.ToUpperInvariant())
                {
                case Constants.Sas.Parameters.VersionUpper:
                    _version = kv.Value;
                    break;

                case Constants.Sas.Parameters.ServicesUpper:
                    _services = SasExtensions.ParseAccountServices(kv.Value);
                    break;

                case Constants.Sas.Parameters.ResourceTypesUpper:
                    _resourceTypes = SasExtensions.ParseResourceTypes(kv.Value);
                    break;

                case Constants.Sas.Parameters.ProtocolUpper:
                    _protocol = SasExtensions.ParseProtocol(kv.Value);
                    break;

                case Constants.Sas.Parameters.StartTimeUpper:
                    _startTime = DateTimeOffset.ParseExact(kv.Value, Constants.SasTimeFormat, CultureInfo.InvariantCulture);
                    break;

                case Constants.Sas.Parameters.ExpiryTimeUpper:
                    _expiryTime = DateTimeOffset.ParseExact(kv.Value, Constants.SasTimeFormat, CultureInfo.InvariantCulture);
                    break;

                case Constants.Sas.Parameters.IPRangeUpper:
                    _ipRange = SasIPRange.Parse(kv.Value);
                    break;

                case Constants.Sas.Parameters.IdentifierUpper:
                    _identifier = kv.Value;
                    break;

                case Constants.Sas.Parameters.ResourceUpper:
                    _resource = kv.Value;
                    break;

                case Constants.Sas.Parameters.PermissionsUpper:
                    _permissions = kv.Value;
                    break;

                case Constants.Sas.Parameters.SignatureUpper:
                    _signature = kv.Value;
                    break;

                case Constants.Sas.Parameters.CacheControlUpper:
                    _cacheControl = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentDispositionUpper:
                    _contentDisposition = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentEncodingUpper:
                    _contentEncoding = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentLanguageUpper:
                    _contentLanguage = kv.Value;
                    break;

                case Constants.Sas.Parameters.ContentTypeUpper:
                    _contentType = kv.Value;
                    break;

                case Constants.Sas.Parameters.PreauthorizedAgentObjectIdUpper:
                    _preauthorizedAgentObjectId = kv.Value;
                    break;

                case Constants.Sas.Parameters.AgentObjectIdUpper:
                    _agentObjectId = kv.Value;
                    break;

                case Constants.Sas.Parameters.CorrelationIdUpper:
                    _correlationId = kv.Value;
                    break;

                case Constants.Sas.Parameters.DirectoryDepthUpper:
                    _directoryDepth = Convert.ToInt32(kv.Value, Constants.Base16);
                    break;

                // We didn't recognize the query parameter
                default:
                    isSasKey = false;
                    break;
                }

                // Remove the query parameter if it's part of the SAS
                if (isSasKey)
                {
                    values.Remove(kv.Key);
                }
            }
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Creates a new instance of the <see cref="SasQueryParameters"/> type
        /// based on the supplied query parameters <paramref name="values"/>.
        /// All SAS-related query parameters will be removed from
        /// <paramref name="values"/>.
        /// </summary>
        /// <param name="values">URI query parameters</param>
        /// <param name="includeBlobParameters">
        /// Optional flag indicating whether to process blob-specific query
        /// parameters.  The default value is false.
        /// </param>
        internal SasQueryParameters(
            UriQueryParamsCollection values,
            bool includeBlobParameters = false)
        {
            // make copy, otherwise we'll get an exception when we remove
            IEnumerable <KeyValuePair <string, string> > kvps = values.ToArray();;

            foreach (var kv in kvps)
            {
                // these are already decoded
                var isSasKey = true;
                switch (kv.Key.ToUpperInvariant())
                {
                case Constants.Sas.Parameters.VersionUpper: this.version = kv.Value; break;

                case Constants.Sas.Parameters.ServicesUpper: this.services = kv.Value; break;

                case Constants.Sas.Parameters.ResourceTypesUpper: this.resourceTypes = kv.Value; break;

                case Constants.Sas.Parameters.ProtocolUpper: this.protocol = SasProtocol.Parse(kv.Value); break;

                case Constants.Sas.Parameters.StartTimeUpper: this.startTime = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture); break;

                case Constants.Sas.Parameters.ExpiryTimeUpper: this.expiryTime = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture); break;

                case Constants.Sas.Parameters.IPRangeUpper: this.ipRange = IPRange.Parse(kv.Value); break;

                case Constants.Sas.Parameters.IdentifierUpper: this.identifier = kv.Value; break;

                case Constants.Sas.Parameters.ResourceUpper: this.resource = kv.Value; break;

                case Constants.Sas.Parameters.PermissionsUpper: this.permissions = kv.Value; break;

                case Constants.Sas.Parameters.SignatureUpper: this.signature = kv.Value; break;

                // Optionally include Blob parameters
                case Constants.Sas.Parameters.KeyOidUpper:
                    if (includeBlobParameters)
                    {
                        this.keyObjectId = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyTidUpper:
                    if (includeBlobParameters)
                    {
                        this.keyTenantId = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyStartUpper:
                    if (includeBlobParameters)
                    {
                        this.keyStart = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyExpiryUpper:
                    if (includeBlobParameters)
                    {
                        this.keyExpiry = DateTimeOffset.ParseExact(kv.Value, TimeFormat, CultureInfo.InvariantCulture);
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyServiceUpper:
                    if (includeBlobParameters)
                    {
                        this.keyService = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                case Constants.Sas.Parameters.KeyVersionUpper:
                    if (includeBlobParameters)
                    {
                        this.keyVersion = kv.Value;
                    }
                    else
                    {
                        isSasKey = false;
                    }
                    break;

                // We didn't recognize the query parameter
                default: isSasKey = false; break;
                }

                // Remove the query parameter if it's part of the SAS
                if (isSasKey)
                {
                    values.Remove(kv.Key);
                }
            }
        }