Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Cryptography / RNGCryptoServiceProvider.cs / 1 / RNGCryptoServiceProvider.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // RNGCryptoServiceProvider.cs // namespace System.Security.Cryptography { using Microsoft.Win32; using System.Runtime.InteropServices; [System.Runtime.InteropServices.ComVisible(true)] public sealed class RNGCryptoServiceProvider : RandomNumberGenerator { #if !FEATURE_PAL SafeProvHandle m_safeProvHandle; #endif // // public constructors // #if !FEATURE_PAL public RNGCryptoServiceProvider() : this((CspParameters) null) {} #else public RNGCryptoServiceProvider() { } #endif #if !FEATURE_PAL public RNGCryptoServiceProvider(string str) : this((CspParameters) null) {} public RNGCryptoServiceProvider(byte[] rgb) : this((CspParameters) null) {} public RNGCryptoServiceProvider(CspParameters cspParams) { if (cspParams != null) m_safeProvHandle = Utils.AcquireProvHandle(cspParams); else m_safeProvHandle = Utils.StaticProvHandle; } #endif // // public methods // public override void GetBytes(byte[] data) { if (data == null) throw new ArgumentNullException("data"); #if !FEATURE_PAL Utils._GetBytes(m_safeProvHandle, data); #else if (!Win32Native.Random(true, data, data.Length)) throw new CryptographicException(Marshal.GetLastWin32Error()); #endif } public override void GetNonZeroBytes(byte[] data) { if (data == null) throw new ArgumentNullException("data"); #if !FEATURE_PAL Utils._GetNonZeroBytes(m_safeProvHandle, data); #else GetBytes(data); int indexOfFirst0Byte = data.Length; for (int i = 0; i < data.Length; i++) { if (data[i] == 0) { indexOfFirst0Byte = i; break; } } for (int i = indexOfFirst0Byte; i < data.Length; i++) { if (data[i] != 0) { data[indexOfFirst0Byte++] = data[i]; } } while (indexOfFirst0Byte < data.Length) { // this should be more than enough to fill the rest in one iteration byte[] tmp = new byte[2 * (data.Length - indexOfFirst0Byte)]; GetBytes(tmp); for (int i = 0; i < tmp.Length; i++) { if (tmp[i] != 0) { data[indexOfFirst0Byte++] = tmp[i]; if (indexOfFirst0Byte >= data.Length) break; } } } #endif } } }
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- namescope.cs
- SettingsProviderCollection.cs
- IdnMapping.cs
- CapabilitiesUse.cs
- NumericExpr.cs
- ResourceBinder.cs
- MessageEncodingBindingElement.cs
- RowUpdatingEventArgs.cs
- RelativeSource.cs
- FullTextBreakpoint.cs
- XmlSchemaAny.cs
- SimpleWebHandlerParser.cs
- AnonymousIdentificationModule.cs
- DrawingContext.cs
- ToolboxDataAttribute.cs
- ParallelTimeline.cs
- EventPrivateKey.cs
- CultureMapper.cs
- RegexCharClass.cs
- Interfaces.cs
- Mappings.cs
- UnsafeNativeMethods.cs
- ChangeProcessor.cs
- AutomationElement.cs
- EntityContainerEmitter.cs
- WindowsListBox.cs
- RotateTransform.cs
- CookieParameter.cs
- _LoggingObject.cs
- ColumnPropertiesGroup.cs
- LocatorManager.cs
- FileChangesMonitor.cs
- TransactionInterop.cs
- FixedHyperLink.cs
- WizardDesigner.cs
- AndCondition.cs
- ConnectionPoint.cs
- MatrixAnimationBase.cs
- RegexNode.cs
- SqlConnectionPoolGroupProviderInfo.cs
- formatstringdialog.cs
- JsonQueryStringConverter.cs
- XmlSchemaSimpleTypeUnion.cs
- InfoCardTrace.cs
- Constants.cs
- SqlNotificationEventArgs.cs
- Constants.cs
- DataSourceSelectArguments.cs
- ScriptingProfileServiceSection.cs
- EnumValAlphaComparer.cs
- WmlFormAdapter.cs
- CountAggregationOperator.cs
- IdentityReference.cs
- MatrixCamera.cs
- RadioButton.cs
- PostBackOptions.cs
- LogStream.cs
- QilList.cs
- KeyTime.cs
- SetState.cs
- DocumentReference.cs
- CompilerTypeWithParams.cs
- Operand.cs
- RichTextBoxConstants.cs
- RecognizeCompletedEventArgs.cs
- IChannel.cs
- MetroSerializationManager.cs
- XmlElementAttributes.cs
- FormViewCommandEventArgs.cs
- PenThreadPool.cs
- Column.cs
- UnmanagedBitmapWrapper.cs
- XmlEntity.cs
- AssemblyBuilderData.cs
- ISSmlParser.cs
- XmlSchemaAnnotation.cs
- LogConverter.cs
- Model3DGroup.cs
- UIElement.cs
- XmlRawWriterWrapper.cs
- DataListItem.cs
- XmlWellformedWriter.cs
- SmiEventSink_Default.cs
- Vector3D.cs
- IndexExpression.cs
- SqlConnectionString.cs
- GridView.cs
- UrlMappingsModule.cs
- SafeArrayRankMismatchException.cs
- DataControlImageButton.cs
- XmlNode.cs
- TerminateSequence.cs
- SolidBrush.cs
- SudsWriter.cs
- Bezier.cs
- ReadOnlyCollectionBase.cs
- WSHttpBindingCollectionElement.cs
- TokenizerHelper.cs
- DataGridViewBand.cs
- StateMachineDesignerPaint.cs