Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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 } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ContextDataSourceView.cs
- SizeF.cs
- FileClassifier.cs
- SymbolTable.cs
- ParseChildrenAsPropertiesAttribute.cs
- SimpleBitVector32.cs
- PageVisual.cs
- DefaultParameterValueAttribute.cs
- MediaCommands.cs
- DataGridViewSelectedRowCollection.cs
- ColorAnimation.cs
- PageTheme.cs
- DataControlCommands.cs
- MenuCommandsChangedEventArgs.cs
- BamlLocalizableResourceKey.cs
- TextSelectionHelper.cs
- SqlInfoMessageEvent.cs
- GridViewSortEventArgs.cs
- WinEventWrap.cs
- DataControlLinkButton.cs
- IisTraceListener.cs
- IdnElement.cs
- ElementNotAvailableException.cs
- SoapInteropTypes.cs
- SelectedGridItemChangedEvent.cs
- _ShellExpression.cs
- ToggleButtonAutomationPeer.cs
- Win32MouseDevice.cs
- ProfileGroupSettingsCollection.cs
- AnimatedTypeHelpers.cs
- Line.cs
- CalendarTable.cs
- RemoteWebConfigurationHostStream.cs
- QuaternionAnimation.cs
- SHA256.cs
- HttpHeaderCollection.cs
- StandardBindingCollectionElement.cs
- X509Utils.cs
- HttpRawResponse.cs
- NamedObject.cs
- XmlIterators.cs
- StickyNoteContentControl.cs
- ActivityCodeDomSerializationManager.cs
- InvalidDataException.cs
- ToolStripRendererSwitcher.cs
- SqlBulkCopy.cs
- XmlSchemaSearchPattern.cs
- MenuItemStyleCollection.cs
- WinFormsComponentEditor.cs
- DPAPIProtectedConfigurationProvider.cs
- SelectedCellsChangedEventArgs.cs
- SoapExtensionTypeElement.cs
- RemotingServices.cs
- XmlEncodedRawTextWriter.cs
- DispatcherSynchronizationContext.cs
- TextCompositionManager.cs
- Margins.cs
- ListViewHitTestInfo.cs
- HandleExceptionArgs.cs
- ComboBoxItem.cs
- StackBuilderSink.cs
- PropertyTabAttribute.cs
- DriveInfo.cs
- GeneralTransform3D.cs
- ACE.cs
- DataGridView.cs
- CheckStoreFileValidityRequest.cs
- ProcessHostServerConfig.cs
- EventArgs.cs
- FlowDocumentReader.cs
- ZipIOExtraFieldPaddingElement.cs
- ComponentManagerBroker.cs
- BindingContext.cs
- SafeEventLogWriteHandle.cs
- SchemaImporter.cs
- QilStrConcat.cs
- SystemWebSectionGroup.cs
- RequestedSignatureDialog.cs
- UriExt.cs
- PeerNameResolver.cs
- DateTimeConstantAttribute.cs
- NullableDoubleMinMaxAggregationOperator.cs
- EventMap.cs
- PagerSettings.cs
- MediaCommands.cs
- BitmapData.cs
- Form.cs
- DuplicateWaitObjectException.cs
- QuestionEventArgs.cs
- PropertyPanel.cs
- PolicyStatement.cs
- ToolStripTemplateNode.cs
- ScrollChrome.cs
- ContainerCodeDomSerializer.cs
- DataServiceHostWrapper.cs
- URLString.cs
- _Events.cs
- MissingSatelliteAssemblyException.cs
- Stack.cs
- FragmentQueryProcessor.cs