Code:
/ DotNET / DotNET / 8.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
- XsltLoader.cs
- PaintValueEventArgs.cs
- WebPartChrome.cs
- FixedNode.cs
- DataServiceHost.cs
- RowParagraph.cs
- FormatControl.cs
- FormsAuthenticationTicket.cs
- Accessible.cs
- WebServiceData.cs
- StateItem.cs
- XmlException.cs
- SqlProviderManifest.cs
- XmlnsDefinitionAttribute.cs
- OptionalRstParameters.cs
- EditorPartCollection.cs
- XPathBinder.cs
- SourceLocationProvider.cs
- StructuredProperty.cs
- DataGridViewCheckBoxCell.cs
- ExtensionWindow.cs
- DefinitionUpdate.cs
- FontNamesConverter.cs
- TransactionChannel.cs
- CollectionViewGroup.cs
- XmlSchemaNotation.cs
- CacheSection.cs
- UrlPath.cs
- TagPrefixInfo.cs
- DropTarget.cs
- PageEventArgs.cs
- FixedHyperLink.cs
- SctClaimDictionary.cs
- RotateTransform3D.cs
- Avt.cs
- GeneralTransform2DTo3DTo2D.cs
- Interlocked.cs
- MultiBindingExpression.cs
- XhtmlBasicControlAdapter.cs
- GeneratedContractType.cs
- BaseHashHelper.cs
- ThreadInterruptedException.cs
- SocketElement.cs
- CustomValidator.cs
- WebReferencesBuildProvider.cs
- IndependentlyAnimatedPropertyMetadata.cs
- XmlWriterSettings.cs
- AnnotationStore.cs
- PopupControlService.cs
- ExpanderAutomationPeer.cs
- WsdlBuildProvider.cs
- StructureChangedEventArgs.cs
- FrameworkElement.cs
- Bidi.cs
- ProxyManager.cs
- PasswordRecovery.cs
- TdsParser.cs
- ListViewDeletedEventArgs.cs
- XsdBuilder.cs
- EventLogPermissionAttribute.cs
- IisTraceWebEventProvider.cs
- IndexedWhereQueryOperator.cs
- CanonicalizationDriver.cs
- SQLBytes.cs
- FileUtil.cs
- ScriptRegistrationManager.cs
- SafeNativeMethods.cs
- RepeatInfo.cs
- CompatibleIComparer.cs
- SelectionListDesigner.cs
- Transform.cs
- GlyphInfoList.cs
- MenuAutomationPeer.cs
- DBNull.cs
- XmlException.cs
- NavigationExpr.cs
- MaskedTextBoxTextEditor.cs
- FocusManager.cs
- SerializableAuthorizationContext.cs
- Oid.cs
- IncomingWebResponseContext.cs
- GenericsNotImplementedException.cs
- ResizeBehavior.cs
- MergeLocalizationDirectives.cs
- CompressedStack.cs
- PropertyEntry.cs
- BlobPersonalizationState.cs
- Byte.cs
- HttpListenerRequestTraceRecord.cs
- HyperLinkField.cs
- InternalResources.cs
- XamlDesignerSerializationManager.cs
- ThreadAbortException.cs
- HttpCapabilitiesEvaluator.cs
- UserPreferenceChangingEventArgs.cs
- TypeExtensions.cs
- HostProtectionPermission.cs
- FormsAuthenticationEventArgs.cs
- CodeComment.cs
- PtsContext.cs