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
- RsaKeyGen.cs
- NetworkInterface.cs
- TemplateBindingExpressionConverter.cs
- Property.cs
- SqlRecordBuffer.cs
- Point3D.cs
- BooleanProjectedSlot.cs
- ComponentRenameEvent.cs
- bidPrivateBase.cs
- FileLevelControlBuilderAttribute.cs
- XPathDescendantIterator.cs
- StringSource.cs
- SmtpFailedRecipientsException.cs
- RegistryPermission.cs
- StorageModelBuildProvider.cs
- MasterPageParser.cs
- ModelPropertyDescriptor.cs
- Membership.cs
- DataTrigger.cs
- Composition.cs
- GatewayIPAddressInformationCollection.cs
- DeleteBookmarkScope.cs
- ClientScriptManager.cs
- XmlWhitespace.cs
- AudioFileOut.cs
- HttpHandlerActionCollection.cs
- DataGridViewCellParsingEventArgs.cs
- VirtualPathUtility.cs
- DataGrid.cs
- ClientData.cs
- ScriptResourceInfo.cs
- ThicknessAnimation.cs
- SqlDeflator.cs
- DemultiplexingDispatchMessageFormatter.cs
- XmlNullResolver.cs
- GridSplitterAutomationPeer.cs
- DbModificationCommandTree.cs
- FormViewPagerRow.cs
- SqlDuplicator.cs
- XPathScanner.cs
- TextBoxAutoCompleteSourceConverter.cs
- SortFieldComparer.cs
- HttpApplicationStateBase.cs
- EntityTypeEmitter.cs
- XmlNavigatorFilter.cs
- XmlText.cs
- MemberHolder.cs
- ClickablePoint.cs
- TraceContext.cs
- DataStreamFromComStream.cs
- querybuilder.cs
- SoapReflectionImporter.cs
- FileIOPermission.cs
- UnsafeNativeMethods.cs
- CodeGeneratorOptions.cs
- DataGridViewCellCancelEventArgs.cs
- _ShellExpression.cs
- UInt64Converter.cs
- DoubleLinkList.cs
- ErrorEventArgs.cs
- EditorZoneBase.cs
- DictationGrammar.cs
- CssClassPropertyAttribute.cs
- ForceCopyBuildProvider.cs
- FontDialog.cs
- QuaternionConverter.cs
- ServiceContractListItem.cs
- cookiecollection.cs
- ReadOnlyHierarchicalDataSource.cs
- SettingsPropertyCollection.cs
- ListControl.cs
- Operators.cs
- WebPartDescription.cs
- RijndaelManaged.cs
- bindurihelper.cs
- EventArgs.cs
- Task.cs
- ListItemCollection.cs
- GridViewCommandEventArgs.cs
- QueryUtil.cs
- TaskCanceledException.cs
- Schedule.cs
- XmlDocumentFieldSchema.cs
- BuildProviderCollection.cs
- SafeHandles.cs
- SqlNodeAnnotations.cs
- RtfControlWordInfo.cs
- ToolBarPanel.cs
- SafeNativeMethods.cs
- AnnotationAdorner.cs
- TemplateControlBuildProvider.cs
- TextEditorSelection.cs
- GeneratedCodeAttribute.cs
- RSAOAEPKeyExchangeFormatter.cs
- SelectionGlyph.cs
- DefaultClaimSet.cs
- CloudCollection.cs
- CodeThrowExceptionStatement.cs
- WindowsRichEditRange.cs
- wgx_render.cs