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
- WebPartDescriptionCollection.cs
- StoreAnnotationsMap.cs
- ButtonFlatAdapter.cs
- Rotation3DKeyFrameCollection.cs
- ModuleElement.cs
- BitmapMetadata.cs
- EnumerableValidator.cs
- EntityCommandExecutionException.cs
- LocalTransaction.cs
- CommentAction.cs
- ChtmlMobileTextWriter.cs
- _LocalDataStore.cs
- MachineKeySection.cs
- XmlSchemaSimpleTypeRestriction.cs
- ObjectReaderCompiler.cs
- ExpandCollapseProviderWrapper.cs
- ToolBarTray.cs
- CodeDirectiveCollection.cs
- DeflateStream.cs
- UnsafeNativeMethods.cs
- StylusPlugInCollection.cs
- lengthconverter.cs
- ConfigXmlSignificantWhitespace.cs
- CodeDOMUtility.cs
- HttpRequest.cs
- RulePatternOps.cs
- MetabaseServerConfig.cs
- Color.cs
- MembershipUser.cs
- RuleConditionDialog.Designer.cs
- SortDescriptionCollection.cs
- DesignerValidatorAdapter.cs
- EditorBrowsableAttribute.cs
- _AuthenticationState.cs
- ObjectDataSourceSelectingEventArgs.cs
- XamlSerializationHelper.cs
- DetailsViewUpdateEventArgs.cs
- TdsParserStateObject.cs
- SplashScreenNativeMethods.cs
- ScriptingRoleServiceSection.cs
- ResumeStoryboard.cs
- EasingKeyFrames.cs
- COSERVERINFO.cs
- PathSegmentCollection.cs
- IERequestCache.cs
- WebServiceHost.cs
- WindowsBrush.cs
- ApplicationManager.cs
- ReachSerializationUtils.cs
- ArraySortHelper.cs
- MessageSecurityOverTcp.cs
- Listbox.cs
- SrgsGrammarCompiler.cs
- MethodAccessException.cs
- _KerberosClient.cs
- NamespaceInfo.cs
- DBAsyncResult.cs
- ParenthesizePropertyNameAttribute.cs
- DbExpressionVisitor_TResultType.cs
- FrameworkRichTextComposition.cs
- PackageProperties.cs
- ButtonFlatAdapter.cs
- ExpressionVisitor.cs
- TreeView.cs
- FindCriteriaApril2005.cs
- WebPartDescription.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- RoutingExtensionElement.cs
- CodeVariableReferenceExpression.cs
- FileDataSourceCache.cs
- RelationshipSet.cs
- SqlUtil.cs
- XmlNodeReader.cs
- Transactions.cs
- Win32Native.cs
- StylusEditingBehavior.cs
- WorkflowExecutor.cs
- M3DUtil.cs
- SqlUtils.cs
- ProfileGroupSettings.cs
- ObjectViewFactory.cs
- TdsParserStateObject.cs
- Triangle.cs
- regiisutil.cs
- DurableInstanceContextProvider.cs
- MarginCollapsingState.cs
- DataGridViewComboBoxColumnDesigner.cs
- BitmapEffectGeneralTransform.cs
- httpstaticobjectscollection.cs
- XmlDataContract.cs
- EventTrigger.cs
- ArrayHelper.cs
- ArglessEventHandlerProxy.cs
- DisplayNameAttribute.cs
- LogicalTreeHelper.cs
- SmiRequestExecutor.cs
- QueryContinueDragEventArgs.cs
- GridViewEditEventArgs.cs
- _HelperAsyncResults.cs
- DomainLiteralReader.cs