public override void ParseAccessPolicyFields(bool isDoubleSigned) { try { string item = base.QueryParams["sr"]; base.ValidateMandatoryField(item, "sr"); this.SignedResource = SASUtilities.ParseSasAccessLevel(item); if (isDoubleSigned) { string str = base.ExtractSignedAuthorization(base.RequestContext); base.ValidateMandatoryField(str, "SignedKey"); base.ValidateSignedAuthorizationFormat(str); } else { string item1 = base.QueryParams["sig"]; base.ValidateMandatoryField(item1, "sig"); base.ValidateSignatureFormat(item1); base.Signature = item1; } string str1 = base.QueryParams["si"]; base.ValidateOptionalField(str1, "si"); base.SignedIdentifier = str1; this.ValidateAndSetSASVersionToUse(base.QueryParams["sv"]); base.ParseAccessPolicyFields(isDoubleSigned); string item2 = base.QueryParams["sp"]; if (!base.IsRevocableAccess) { base.ValidateMandatoryField(item2, "sp"); } else { base.ValidateOptionalField(item2, "sp"); } if (item2 != null) { if (!VersioningHelper.IsPreApril15OrInvalidVersion(base.SignedVersion)) { SASUtilities.ValidatePermissionOrdering(item2, SASPermission.BlobWithAddAndCreate); } else { SASUtilities.ValidatePermissionOrdering(item2, SASPermission.Blob); } base.SignedPermission = new SASPermission?(SASUtilities.ParseSASPermission(item2)); } if (this.IsAtLeastFeb2012SasVersion) { string str2 = AuthenticationManagerHelper.ExtractKeyNameFromParamsWithConversion(base.QueryParams); base.ValidateOptionalField(str2, "sk"); if (str2 != null) { base.KeyName = str2.Trim(); Logger <IRestProtocolHeadLogger> .Instance.Verbose.Log("Using secret key with KeyName '{0}' to authenticate SAS request.", new object[] { base.KeyName }); } } } catch (FormatException formatException) { throw new AuthenticationFailureException("Signature fields not well formed.", formatException); } }
public static byte[] ComputeUrlDecodedUtf8EncodedStringToSign(NameValueCollection queryParams, NephosUriComponents uriComponents) { string item = queryParams["st"]; string str = queryParams["se"]; string item1 = queryParams["sp"]; string str1 = queryParams["sr"]; string item2 = queryParams["si"]; string str2 = queryParams["sip"]; string item3 = queryParams["spr"]; string str3 = queryParams["sv"]; StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(item1 ?? string.Empty); stringBuilder.Append("\n"); stringBuilder.Append(item ?? string.Empty); stringBuilder.Append("\n"); stringBuilder.Append(str ?? string.Empty); stringBuilder.Append("\n"); stringBuilder.Append(BlobSignedAccessHelper.GetCanonicalizedResource(uriComponents, SASUtilities.ParseSasAccessLevel(str1), str3)); stringBuilder.Append("\n"); stringBuilder.Append(item2 ?? string.Empty); if (str3 != null) { if (VersioningHelper.CompareVersions(str3, "2015-04-05") >= 0) { stringBuilder.Append("\n"); stringBuilder.Append(str2 ?? string.Empty); stringBuilder.Append("\n"); stringBuilder.Append(item3 ?? string.Empty); } stringBuilder.Append("\n"); stringBuilder.Append(queryParams["sv"]); if (VersioningHelper.CompareVersions(str3, "2014-02-14") >= 0) { stringBuilder.Append("\n"); if (queryParams["rscc"] != null) { stringBuilder.Append(queryParams["rscc"]); } stringBuilder.Append("\n"); if (queryParams["rscd"] != null) { stringBuilder.Append(queryParams["rscd"]); } stringBuilder.Append("\n"); if (queryParams["rsce"] != null) { stringBuilder.Append(queryParams["rsce"]); } stringBuilder.Append("\n"); if (queryParams["rscl"] != null) { stringBuilder.Append(queryParams["rscl"]); } stringBuilder.Append("\n"); if (queryParams["rsct"] != null) { stringBuilder.Append(queryParams["rsct"]); } } } if (queryParams["sep"] != null) { stringBuilder.Append("\n"); stringBuilder.Append(queryParams["sep"]); } return((new UTF8Encoding()).GetBytes(stringBuilder.ToString())); }