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
- WeakReferenceList.cs
- _ShellExpression.cs
- TheQuery.cs
- TextEndOfLine.cs
- ToolStripMenuItemCodeDomSerializer.cs
- XmlHierarchicalDataSourceView.cs
- ChannelSinkStacks.cs
- ControlPropertyNameConverter.cs
- CharacterString.cs
- DirectoryObjectSecurity.cs
- BrowserCapabilitiesFactoryBase.cs
- JsonServiceDocumentSerializer.cs
- MatrixValueSerializer.cs
- ExceptionUtility.cs
- ReflectionHelper.cs
- XpsFontSubsetter.cs
- QueueProcessor.cs
- WebPartCatalogAddVerb.cs
- MetadataCache.cs
- ListDictionaryInternal.cs
- XsltException.cs
- NegatedConstant.cs
- TypeSystemHelpers.cs
- LocalizableResourceBuilder.cs
- MeshGeometry3D.cs
- SqlTypesSchemaImporter.cs
- OdbcEnvironmentHandle.cs
- ConfigurationSectionCollection.cs
- WebRequest.cs
- recordstatefactory.cs
- xmlsaver.cs
- ContainerParaClient.cs
- AssemblyBuilderData.cs
- ThicknessConverter.cs
- DirectoryObjectSecurity.cs
- WizardForm.cs
- RestHandlerFactory.cs
- EasingKeyFrames.cs
- DataGridViewRowEventArgs.cs
- DriveNotFoundException.cs
- ApplicationActivator.cs
- AddIn.cs
- SQLInt32Storage.cs
- ExpressionList.cs
- XPathParser.cs
- ValueCollectionParameterReader.cs
- UnitySerializationHolder.cs
- AppSettingsExpressionBuilder.cs
- MetaTableHelper.cs
- LinkedList.cs
- RootCodeDomSerializer.cs
- QueryContext.cs
- XmlMemberMapping.cs
- JsonQNameDataContract.cs
- TextParaLineResult.cs
- ControlAdapter.cs
- MasterPageCodeDomTreeGenerator.cs
- TabItem.cs
- BitmapDecoder.cs
- ServiceMemoryGates.cs
- RenameRuleObjectDialog.cs
- FormsAuthentication.cs
- ModelUIElement3D.cs
- WebPartDisplayModeCancelEventArgs.cs
- DesignerHelpers.cs
- Errors.cs
- WebBrowserPermission.cs
- Stackframe.cs
- DataGridViewCheckBoxCell.cs
- ColumnMapProcessor.cs
- QilScopedVisitor.cs
- ActivityAction.cs
- SerializationAttributes.cs
- Rights.cs
- WebEncodingValidator.cs
- Table.cs
- CopyCodeAction.cs
- DBPropSet.cs
- CodeDesigner.cs
- StorageMappingItemCollection.cs
- HttpTransportManager.cs
- NonVisualControlAttribute.cs
- NotSupportedException.cs
- PerSessionInstanceContextProvider.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- DelegateSerializationHolder.cs
- SecureUICommand.cs
- QuotedPrintableStream.cs
- Roles.cs
- SingleStorage.cs
- RequestTimeoutManager.cs
- RegisteredExpandoAttribute.cs
- Label.cs
- MaskedTextBoxDesignerActionList.cs
- DeclaredTypeElement.cs
- WorkflowServiceHostFactory.cs
- OleDbConnection.cs
- DeflateStream.cs
- SecurityUniqueId.cs
- TreeNodeClickEventArgs.cs