Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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. // // ==--== // // 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XXXInfos.cs
- AudioBase.cs
- indexingfiltermarshaler.cs
- CompilerGlobalScopeAttribute.cs
- ProfessionalColors.cs
- StylusPlugin.cs
- MdiWindowListItemConverter.cs
- SizeConverter.cs
- WebErrorHandler.cs
- XmlEntity.cs
- ColumnResizeAdorner.cs
- XmlArrayAttribute.cs
- Clause.cs
- XPathNode.cs
- TimeoutValidationAttribute.cs
- AssemblyCollection.cs
- OutputCacheProfile.cs
- QilUnary.cs
- BaseWebProxyFinder.cs
- PropertySet.cs
- SpeechRecognitionEngine.cs
- XmlTextEncoder.cs
- ArgumentValidation.cs
- SQLResource.cs
- InputScopeAttribute.cs
- TypeBinaryExpression.cs
- XmlTextReader.cs
- SqlGatherConsumedAliases.cs
- WindowsContainer.cs
- WasEndpointConfigContainer.cs
- IdentitySection.cs
- RequestResponse.cs
- XmlSignatureProperties.cs
- BypassElementCollection.cs
- WorkflowOperationInvoker.cs
- SupportingTokenAuthenticatorSpecification.cs
- CompositionAdorner.cs
- CodeRegionDirective.cs
- KnownBoxes.cs
- StatusBar.cs
- CustomSignedXml.cs
- GacUtil.cs
- LiteralTextContainerControlBuilder.cs
- HttpModuleCollection.cs
- MenuCommand.cs
- XmlComplianceUtil.cs
- sqlinternaltransaction.cs
- OutputWindow.cs
- XPathDocument.cs
- CompilationLock.cs
- MissingMethodException.cs
- Exceptions.cs
- Grammar.cs
- TraceUtility.cs
- sqlinternaltransaction.cs
- SmiContext.cs
- TextParagraphView.cs
- OdbcConnectionOpen.cs
- PrivacyNoticeBindingElement.cs
- TraceContext.cs
- RSAPKCS1SignatureDeformatter.cs
- PopupRootAutomationPeer.cs
- ReplyAdapterChannelListener.cs
- XmlRawWriter.cs
- WebPartHeaderCloseVerb.cs
- ToolStrip.cs
- ChangePassword.cs
- DocumentsTrace.cs
- ThicknessAnimationBase.cs
- RC2CryptoServiceProvider.cs
- FontUnit.cs
- ColorTypeConverter.cs
- ResourceWriter.cs
- RuntimeHelpers.cs
- CellParagraph.cs
- Hash.cs
- SqlVisitor.cs
- EditorZone.cs
- SecurityPermission.cs
- CompositeCollectionView.cs
- FastEncoder.cs
- embossbitmapeffect.cs
- CmsInterop.cs
- Int64Converter.cs
- GridViewUpdatedEventArgs.cs
- CopyAction.cs
- HtmlInputControl.cs
- WebPartEventArgs.cs
- MemberHolder.cs
- CategoryNameCollection.cs
- ItemAutomationPeer.cs
- ShaderEffect.cs
- Byte.cs
- HitTestResult.cs
- WebPartConnectionCollection.cs
- ColumnPropertiesGroup.cs
- COM2EnumConverter.cs
- XmlSchemaAttributeGroup.cs
- WindowsAuthenticationEventArgs.cs
- ResXFileRef.cs