Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / IdentityModel / System / IdentityModel / CanonicalFormWriter.cs / 1305376 / CanonicalFormWriter.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.IdentityModel
{
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
abstract class CanonicalFormWriter
{
internal static readonly UTF8Encoding Utf8WithoutPreamble = new UTF8Encoding(false);
protected static void Base64EncodeAndWrite(Stream stream, byte[] workBuffer, char[] base64WorkBuffer, byte[] data)
{
if ((data.Length / 3) * 4 + 4 > base64WorkBuffer.Length)
{
EncodeAndWrite(stream, Convert.ToBase64String(data));
return;
}
int encodedLength = Convert.ToBase64CharArray(data, 0, data.Length, base64WorkBuffer, 0, Base64FormattingOptions.None);
EncodeAndWrite(stream, workBuffer, base64WorkBuffer, encodedLength);
}
protected static void EncodeAndWrite(Stream stream, byte[] workBuffer, string s)
{
if (s.Length > workBuffer.Length)
{
EncodeAndWrite(stream, s);
return;
}
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
if (c < 127)
{
workBuffer[i] = (byte) c;
}
else
{
EncodeAndWrite(stream, s);
return;
}
}
stream.Write(workBuffer, 0, s.Length);
}
protected static void EncodeAndWrite(Stream stream, byte[] workBuffer, char[] chars)
{
EncodeAndWrite(stream, workBuffer, chars, chars.Length);
}
protected static void EncodeAndWrite(Stream stream, byte[] workBuffer, char[] chars, int count)
{
if (count > workBuffer.Length)
{
EncodeAndWrite(stream, chars, count);
return;
}
for (int i = 0; i < count; i++)
{
char c = chars[i];
if (c < 127)
{
workBuffer[i] = (byte) c;
}
else
{
EncodeAndWrite(stream, chars, count);
return;
}
}
stream.Write(workBuffer, 0, count);
}
static void EncodeAndWrite(Stream stream, string s)
{
byte[] buffer = CanonicalFormWriter.Utf8WithoutPreamble.GetBytes(s);
stream.Write(buffer, 0, buffer.Length);
}
static void EncodeAndWrite(Stream stream, char[] chars, int count)
{
byte[] buffer = CanonicalFormWriter.Utf8WithoutPreamble.GetBytes(chars, 0, count);
stream.Write(buffer, 0, buffer.Length);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.IdentityModel
{
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Xml;
abstract class CanonicalFormWriter
{
internal static readonly UTF8Encoding Utf8WithoutPreamble = new UTF8Encoding(false);
protected static void Base64EncodeAndWrite(Stream stream, byte[] workBuffer, char[] base64WorkBuffer, byte[] data)
{
if ((data.Length / 3) * 4 + 4 > base64WorkBuffer.Length)
{
EncodeAndWrite(stream, Convert.ToBase64String(data));
return;
}
int encodedLength = Convert.ToBase64CharArray(data, 0, data.Length, base64WorkBuffer, 0, Base64FormattingOptions.None);
EncodeAndWrite(stream, workBuffer, base64WorkBuffer, encodedLength);
}
protected static void EncodeAndWrite(Stream stream, byte[] workBuffer, string s)
{
if (s.Length > workBuffer.Length)
{
EncodeAndWrite(stream, s);
return;
}
for (int i = 0; i < s.Length; i++)
{
char c = s[i];
if (c < 127)
{
workBuffer[i] = (byte) c;
}
else
{
EncodeAndWrite(stream, s);
return;
}
}
stream.Write(workBuffer, 0, s.Length);
}
protected static void EncodeAndWrite(Stream stream, byte[] workBuffer, char[] chars)
{
EncodeAndWrite(stream, workBuffer, chars, chars.Length);
}
protected static void EncodeAndWrite(Stream stream, byte[] workBuffer, char[] chars, int count)
{
if (count > workBuffer.Length)
{
EncodeAndWrite(stream, chars, count);
return;
}
for (int i = 0; i < count; i++)
{
char c = chars[i];
if (c < 127)
{
workBuffer[i] = (byte) c;
}
else
{
EncodeAndWrite(stream, chars, count);
return;
}
}
stream.Write(workBuffer, 0, count);
}
static void EncodeAndWrite(Stream stream, string s)
{
byte[] buffer = CanonicalFormWriter.Utf8WithoutPreamble.GetBytes(s);
stream.Write(buffer, 0, buffer.Length);
}
static void EncodeAndWrite(Stream stream, char[] chars, int count)
{
byte[] buffer = CanonicalFormWriter.Utf8WithoutPreamble.GetBytes(chars, 0, count);
stream.Write(buffer, 0, buffer.Length);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ZipIOExtraFieldPaddingElement.cs
- D3DImage.cs
- DataGridViewImageCell.cs
- Int32KeyFrameCollection.cs
- FullTrustAssemblyCollection.cs
- UrlUtility.cs
- RelationshipConstraintValidator.cs
- TrackingStringDictionary.cs
- XmlQueryType.cs
- StackSpiller.Bindings.cs
- AsyncResult.cs
- EntityModelBuildProvider.cs
- ColorMatrix.cs
- NestPullup.cs
- ConstructorExpr.cs
- ValueType.cs
- RandomDelayQueuedSendsAsyncResult.cs
- ConsumerConnectionPointCollection.cs
- IOException.cs
- TokenFactoryBase.cs
- PackageProperties.cs
- ConfigXmlWhitespace.cs
- SafeWaitHandle.cs
- DataGrid.cs
- XNodeSchemaApplier.cs
- HtmlTableCellCollection.cs
- unsafeIndexingFilterStream.cs
- FunctionQuery.cs
- SR.cs
- ConnectionManagementElementCollection.cs
- XsdDateTime.cs
- Mapping.cs
- DataServiceQueryProvider.cs
- TraceListener.cs
- RowTypePropertyElement.cs
- CodeLinePragma.cs
- SafeMemoryMappedFileHandle.cs
- XamlTreeBuilderBamlRecordWriter.cs
- AccessedThroughPropertyAttribute.cs
- WebScriptMetadataMessageEncoderFactory.cs
- GradientBrush.cs
- ObjectKeyFrameCollection.cs
- NodeFunctions.cs
- AttachedPropertyBrowsableAttribute.cs
- PerSessionInstanceContextProvider.cs
- GridView.cs
- SyndicationLink.cs
- UserMapPath.cs
- webeventbuffer.cs
- Shape.cs
- activationcontext.cs
- Canvas.cs
- QilGeneratorEnv.cs
- RoutedEvent.cs
- IsolatedStorageFile.cs
- AppearanceEditorPart.cs
- UnknownBitmapEncoder.cs
- KeyInfo.cs
- CodeComment.cs
- DataGridSortCommandEventArgs.cs
- SpellCheck.cs
- WpfWebRequestHelper.cs
- DiffuseMaterial.cs
- TranslateTransform.cs
- RequestQueryParser.cs
- WebPartConnectionCollection.cs
- XmlAutoDetectWriter.cs
- RowVisual.cs
- InfoCardPolicy.cs
- BuildProviderCollection.cs
- TextContainerChangedEventArgs.cs
- ControlAdapter.cs
- PropertyGeneratedEventArgs.cs
- XComponentModel.cs
- PointCollectionValueSerializer.cs
- PagerStyle.cs
- SafeProcessHandle.cs
- DataViewListener.cs
- TextureBrush.cs
- ADConnectionHelper.cs
- UrlAuthorizationModule.cs
- XamlReaderHelper.cs
- FacetDescription.cs
- OletxDependentTransaction.cs
- ComplexType.cs
- CodeDefaultValueExpression.cs
- DispatcherSynchronizationContext.cs
- AccessText.cs
- MetadataFile.cs
- Matrix.cs
- EndPoint.cs
- httpserverutility.cs
- XmlNamespaceMapping.cs
- Vector3DAnimationBase.cs
- InputScopeNameConverter.cs
- EdmTypeAttribute.cs
- AuthenticationSection.cs
- SQLDouble.cs
- ConfigXmlCDataSection.cs
- ValuePattern.cs