Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Cryptography / RNGCryptoServiceProvider.cs / 1305376 / RNGCryptoServiceProvider.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // // // RNGCryptoServiceProvider.cs // namespace System.Security.Cryptography { using Microsoft.Win32; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Runtime.Versioning; using System.Diagnostics.Contracts; #if !FEATURE_CORECLR [System.Runtime.InteropServices.ComVisible(true)] #endif // !FEATURE_CORECLR public sealed class RNGCryptoServiceProvider : RandomNumberGenerator { #if !FEATURE_CORECLR [System.Security.SecurityCritical /*auto-generated*/] SafeProvHandle m_safeProvHandle; bool m_ownsHandle; #else // !FEATURE_CORECLR SafeCspHandle m_cspHandle; #endif // !FEATURE_CORECLR // // public constructors // #if !FEATURE_CORECLR #if !FEATURE_PAL [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider() : this((CspParameters) null) {} #else // !FEATURE_PAL public RNGCryptoServiceProvider() { } #endif // !FEATURE_PAL #if !FEATURE_PAL [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider(string str) : this((CspParameters) null) {} [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider(byte[] rgb) : this((CspParameters) null) {} [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider(CspParameters cspParams) { if (cspParams != null) { m_safeProvHandle = Utils.AcquireProvHandle(cspParams); m_ownsHandle = true; } else { m_safeProvHandle = Utils.StaticProvHandle; m_ownsHandle = false; } } [System.Security.SecuritySafeCritical] // auto-generated protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing && m_ownsHandle) { m_safeProvHandle.Dispose(); } } #endif // !FEATURE_PAL #else // !FEATURE_CORECLR public RNGCryptoServiceProvider() { m_cspHandle = CapiNative.AcquireCsp(null, CapiNative.ProviderNames.MicrosoftEnhanced, CapiNative.ProviderType.RsaFull, CapiNative.CryptAcquireContextFlags.VerifyContext); } #endif // !FEATURE_CORECLR // // public methods // #if !FEATURE_CORECLR [System.Security.SecuritySafeCritical] // auto-generated public override void GetBytes(byte[] data) { if (data == null) throw new ArgumentNullException("data"); Contract.EndContractBlock(); #if !FEATURE_PAL GetBytes(m_safeProvHandle, data, data.Length); #else if (!Win32Native.Random(true, data, data.Length)) throw new CryptographicException(Marshal.GetLastWin32Error()); #endif // !FEATURE_PAL } [System.Security.SecuritySafeCritical] // auto-generated public override void GetNonZeroBytes(byte[] data) { if (data == null) throw new ArgumentNullException("data"); Contract.EndContractBlock(); #if !FEATURE_PAL GetNonZeroBytes(m_safeProvHandle, data, data.Length); #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 // !FEATURE_PAL } #else // !FEATURE_CORECLR protected override void Dispose(bool disposing) { try { if (disposing) { if (m_cspHandle != null) { m_cspHandle.Dispose(); } } } finally { base.Dispose(disposing); } } public override void GetBytes(byte[] data) { if (data == null) { throw new ArgumentNullException("data"); } Contract.EndContractBlock(); if (data.Length > 0) { CapiNative.GenerateRandomBytes(m_cspHandle, data); } } #endif // !FEATURE_CORECLR #if !FEATURE_PAL [System.Security.SecurityCritical] // auto-generated [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity] [ResourceExposure(ResourceScope.None)] private static extern void GetBytes(SafeProvHandle hProv, byte[] randomBytes, int count); [System.Security.SecurityCritical] // auto-generated [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity] [ResourceExposure(ResourceScope.None)] private static extern void GetNonZeroBytes(SafeProvHandle hProv, byte[] randomBytes, int count); #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.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Runtime.Versioning; using System.Diagnostics.Contracts; #if !FEATURE_CORECLR [System.Runtime.InteropServices.ComVisible(true)] #endif // !FEATURE_CORECLR public sealed class RNGCryptoServiceProvider : RandomNumberGenerator { #if !FEATURE_CORECLR [System.Security.SecurityCritical /*auto-generated*/] SafeProvHandle m_safeProvHandle; bool m_ownsHandle; #else // !FEATURE_CORECLR SafeCspHandle m_cspHandle; #endif // !FEATURE_CORECLR // // public constructors // #if !FEATURE_CORECLR #if !FEATURE_PAL [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider() : this((CspParameters) null) {} #else // !FEATURE_PAL public RNGCryptoServiceProvider() { } #endif // !FEATURE_PAL #if !FEATURE_PAL [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider(string str) : this((CspParameters) null) {} [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider(byte[] rgb) : this((CspParameters) null) {} [System.Security.SecuritySafeCritical] // auto-generated public RNGCryptoServiceProvider(CspParameters cspParams) { if (cspParams != null) { m_safeProvHandle = Utils.AcquireProvHandle(cspParams); m_ownsHandle = true; } else { m_safeProvHandle = Utils.StaticProvHandle; m_ownsHandle = false; } } [System.Security.SecuritySafeCritical] // auto-generated protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing && m_ownsHandle) { m_safeProvHandle.Dispose(); } } #endif // !FEATURE_PAL #else // !FEATURE_CORECLR public RNGCryptoServiceProvider() { m_cspHandle = CapiNative.AcquireCsp(null, CapiNative.ProviderNames.MicrosoftEnhanced, CapiNative.ProviderType.RsaFull, CapiNative.CryptAcquireContextFlags.VerifyContext); } #endif // !FEATURE_CORECLR // // public methods // #if !FEATURE_CORECLR [System.Security.SecuritySafeCritical] // auto-generated public override void GetBytes(byte[] data) { if (data == null) throw new ArgumentNullException("data"); Contract.EndContractBlock(); #if !FEATURE_PAL GetBytes(m_safeProvHandle, data, data.Length); #else if (!Win32Native.Random(true, data, data.Length)) throw new CryptographicException(Marshal.GetLastWin32Error()); #endif // !FEATURE_PAL } [System.Security.SecuritySafeCritical] // auto-generated public override void GetNonZeroBytes(byte[] data) { if (data == null) throw new ArgumentNullException("data"); Contract.EndContractBlock(); #if !FEATURE_PAL GetNonZeroBytes(m_safeProvHandle, data, data.Length); #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 // !FEATURE_PAL } #else // !FEATURE_CORECLR protected override void Dispose(bool disposing) { try { if (disposing) { if (m_cspHandle != null) { m_cspHandle.Dispose(); } } } finally { base.Dispose(disposing); } } public override void GetBytes(byte[] data) { if (data == null) { throw new ArgumentNullException("data"); } Contract.EndContractBlock(); if (data.Length > 0) { CapiNative.GenerateRandomBytes(m_cspHandle, data); } } #endif // !FEATURE_CORECLR #if !FEATURE_PAL [System.Security.SecurityCritical] // auto-generated [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity] [ResourceExposure(ResourceScope.None)] private static extern void GetBytes(SafeProvHandle hProv, byte[] randomBytes, int count); [System.Security.SecurityCritical] // auto-generated [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity] [ResourceExposure(ResourceScope.None)] private static extern void GetNonZeroBytes(SafeProvHandle hProv, byte[] randomBytes, int count); #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
- QueryReaderSettings.cs
- KeyedCollection.cs
- Window.cs
- ExcludeFromCodeCoverageAttribute.cs
- HttpMethodConstraint.cs
- nulltextcontainer.cs
- PropertyValueUIItem.cs
- ReadOnlyHierarchicalDataSourceView.cs
- XmlSchemaSimpleTypeList.cs
- regiisutil.cs
- User.cs
- Registry.cs
- DelegateCompletionCallbackWrapper.cs
- ToolStripLabel.cs
- WebReferencesBuildProvider.cs
- smtpconnection.cs
- Collection.cs
- PersonalizationProvider.cs
- SoundPlayer.cs
- ApplicationException.cs
- SplashScreenNativeMethods.cs
- QueryMath.cs
- ScrollPattern.cs
- ErrorRuntimeConfig.cs
- HeaderedItemsControl.cs
- CellNormalizer.cs
- baseaxisquery.cs
- AuthenticationModuleElement.cs
- Visual.cs
- Win32Exception.cs
- ApplicationDirectory.cs
- FrameworkElement.cs
- CodeAttachEventStatement.cs
- _HeaderInfoTable.cs
- PropagatorResult.cs
- RegexReplacement.cs
- BinaryEditor.cs
- ListViewInsertionMark.cs
- ThemeInfoAttribute.cs
- MenuBase.cs
- DispatcherOperation.cs
- ServiceCredentials.cs
- ShapingWorkspace.cs
- EmbossBitmapEffect.cs
- EntityType.cs
- DataGridItemAutomationPeer.cs
- EdmScalarPropertyAttribute.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- BitmapEffectOutputConnector.cs
- ProgressBar.cs
- XmlSchemaSimpleContentRestriction.cs
- Clause.cs
- XhtmlStyleClass.cs
- CqlParser.cs
- Metafile.cs
- DbConnectionPool.cs
- FrameworkTemplate.cs
- ExtractCollection.cs
- PrinterResolution.cs
- Solver.cs
- LabelDesigner.cs
- ControlHelper.cs
- SafeRightsManagementQueryHandle.cs
- ChangeTracker.cs
- WindowsPrincipal.cs
- HttpConfigurationContext.cs
- WindowsIPAddress.cs
- CustomAssemblyResolver.cs
- SizeIndependentAnimationStorage.cs
- MgmtResManager.cs
- ButtonChrome.cs
- DatatypeImplementation.cs
- TypeConverterMarkupExtension.cs
- SqlClientFactory.cs
- MetadataArtifactLoaderCompositeResource.cs
- SecUtil.cs
- SinglePageViewer.cs
- AdapterUtil.cs
- LoginUtil.cs
- GeneralTransform3D.cs
- HMAC.cs
- TraceProvider.cs
- NumberFunctions.cs
- DateTimeOffset.cs
- WeakReference.cs
- Marshal.cs
- SqlInternalConnectionSmi.cs
- DataGridViewHeaderCell.cs
- KeyGesture.cs
- Listen.cs
- SequenceDesignerAccessibleObject.cs
- TiffBitmapDecoder.cs
- WorkflowMessageEventHandler.cs
- EpmContentSerializer.cs
- LinkedList.cs
- ProgressBarHighlightConverter.cs
- LayoutExceptionEventArgs.cs
- VirtualizingStackPanel.cs
- OleDbException.cs
- NameValueCollection.cs