Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Security / Cryptography / RSAPKCS1SignatureDeformatter.cs / 1 / RSAPKCS1SignatureDeformatter.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // RSAPKCS1SignatureDeformatter.cs // namespace System.Security.Cryptography { [System.Runtime.InteropServices.ComVisible(true)] public class RSAPKCS1SignatureDeformatter : AsymmetricSignatureDeformatter { // // This class provides the PKCS#1 v1.5 signature format processing during // the verification process (i.e. decrypting the object). The class has // some special code for dealing with the CSP based RSA keys as the // formatting and verification is done within the CSP rather than in // managed code. // private RSA _rsaKey; // RSA Key value to do decrypt operation private String _strOID; // OID value for the HASH algorithm // // public constructors // public RSAPKCS1SignatureDeformatter() {} public RSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key) { if (key == null) throw new ArgumentNullException("key"); _rsaKey = (RSA) key; } // // public methods // public override void SetKey(AsymmetricAlgorithm key) { if (key == null) throw new ArgumentNullException("key"); _rsaKey = (RSA) key; } public override void SetHashAlgorithm(String strName) { _strOID = CryptoConfig.MapNameToOID(strName); } public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) { if (_strOID == null) throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingOID")); if (_rsaKey == null) throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingKey")); if (rgbHash == null) throw new ArgumentNullException("rgbHash"); if (rgbSignature == null) throw new ArgumentNullException("rgbSignature"); // Two cases here -- if we are talking to the CSP version or if we are talking to some other RSA provider. if (_rsaKey is RSACryptoServiceProvider) { return ((RSACryptoServiceProvider) _rsaKey).VerifyHash(rgbHash, _strOID, rgbSignature); } else { byte[] pad = Utils.RsaPkcs1Padding(_rsaKey, CryptoConfig.EncodeOID(_strOID), rgbHash); // Apply the public key to the signature data to get back the padded buffer actually signed. // Compare the two buffers to see if they match; ignoring any leading zeros return Utils.CompareBigIntArrays(_rsaKey.EncryptValue(rgbSignature), pad); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== // // RSAPKCS1SignatureDeformatter.cs // namespace System.Security.Cryptography { [System.Runtime.InteropServices.ComVisible(true)] public class RSAPKCS1SignatureDeformatter : AsymmetricSignatureDeformatter { // // This class provides the PKCS#1 v1.5 signature format processing during // the verification process (i.e. decrypting the object). The class has // some special code for dealing with the CSP based RSA keys as the // formatting and verification is done within the CSP rather than in // managed code. // private RSA _rsaKey; // RSA Key value to do decrypt operation private String _strOID; // OID value for the HASH algorithm // // public constructors // public RSAPKCS1SignatureDeformatter() {} public RSAPKCS1SignatureDeformatter(AsymmetricAlgorithm key) { if (key == null) throw new ArgumentNullException("key"); _rsaKey = (RSA) key; } // // public methods // public override void SetKey(AsymmetricAlgorithm key) { if (key == null) throw new ArgumentNullException("key"); _rsaKey = (RSA) key; } public override void SetHashAlgorithm(String strName) { _strOID = CryptoConfig.MapNameToOID(strName); } public override bool VerifySignature(byte[] rgbHash, byte[] rgbSignature) { if (_strOID == null) throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingOID")); if (_rsaKey == null) throw new CryptographicUnexpectedOperationException(Environment.GetResourceString("Cryptography_MissingKey")); if (rgbHash == null) throw new ArgumentNullException("rgbHash"); if (rgbSignature == null) throw new ArgumentNullException("rgbSignature"); // Two cases here -- if we are talking to the CSP version or if we are talking to some other RSA provider. if (_rsaKey is RSACryptoServiceProvider) { return ((RSACryptoServiceProvider) _rsaKey).VerifyHash(rgbHash, _strOID, rgbSignature); } else { byte[] pad = Utils.RsaPkcs1Padding(_rsaKey, CryptoConfig.EncodeOID(_strOID), rgbHash); // Apply the public key to the signature data to get back the padded buffer actually signed. // Compare the two buffers to see if they match; ignoring any leading zeros return Utils.CompareBigIntArrays(_rsaKey.EncryptValue(rgbSignature), pad); } } } } // 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
- X509Chain.cs
- Math.cs
- MimeFormReflector.cs
- ProbeMatchesMessageCD1.cs
- IdentitySection.cs
- DataGridViewHeaderCell.cs
- AttributeInfo.cs
- ItemList.cs
- ClientScriptManager.cs
- RowVisual.cs
- NamespaceEmitter.cs
- XmlWrappingReader.cs
- XPathParser.cs
- SimpleWorkerRequest.cs
- AssemblySettingAttributes.cs
- AnimatedTypeHelpers.cs
- RecordConverter.cs
- InstrumentationTracker.cs
- BoundField.cs
- TextDecorationLocationValidation.cs
- MatrixAnimationUsingKeyFrames.cs
- PropertyCollection.cs
- SecurityAlgorithmSuiteConverter.cs
- DataKeyCollection.cs
- SmtpClient.cs
- Shape.cs
- XmlElementAttributes.cs
- SamlEvidence.cs
- SoapInteropTypes.cs
- ProfileSettingsCollection.cs
- DBPropSet.cs
- ServerValidateEventArgs.cs
- KeyMatchBuilder.cs
- ManipulationDelta.cs
- listitem.cs
- WpfPayload.cs
- ColumnMapVisitor.cs
- CacheDependency.cs
- PriorityQueue.cs
- ProviderConnectionPointCollection.cs
- WmlImageAdapter.cs
- JpegBitmapDecoder.cs
- OneOf.cs
- EditableRegion.cs
- GatewayDefinition.cs
- NavigatingCancelEventArgs.cs
- TypeDescriptionProviderAttribute.cs
- AnnotationResourceCollection.cs
- IdentityModelStringsVersion1.cs
- base64Transforms.cs
- UnaryNode.cs
- DbMetaDataCollectionNames.cs
- KeyboardNavigation.cs
- ProgressChangedEventArgs.cs
- ControlDesignerState.cs
- X509Logo.cs
- CompilationPass2Task.cs
- DataGridTable.cs
- securitycriticaldata.cs
- BrowserCapabilitiesFactoryBase.cs
- ErrorWrapper.cs
- LogRestartAreaEnumerator.cs
- PassportAuthenticationEventArgs.cs
- MobileResource.cs
- OciEnlistContext.cs
- EasingQuaternionKeyFrame.cs
- SecurityRuntime.cs
- LockedBorderGlyph.cs
- basecomparevalidator.cs
- ProcessHostConfigUtils.cs
- ListControl.cs
- KeyInfo.cs
- StringHandle.cs
- ListControl.cs
- MutexSecurity.cs
- TableCellCollection.cs
- wmiprovider.cs
- SchemaImporter.cs
- Highlights.cs
- MultiView.cs
- Type.cs
- SelectionWordBreaker.cs
- CompositeDataBoundControl.cs
- BmpBitmapEncoder.cs
- DrawingContext.cs
- ObjectDataSourceView.cs
- ToolboxItemFilterAttribute.cs
- DrawingContextWalker.cs
- XXXOnTypeBuilderInstantiation.cs
- RuntimeConfigLKG.cs
- SourceInterpreter.cs
- ThreadWorkerController.cs
- BinHexDecoder.cs
- InputEventArgs.cs
- HelpEvent.cs
- PreProcessor.cs
- TreeViewItemAutomationPeer.cs
- ReflectionHelper.cs
- BindingList.cs
- RowTypeElement.cs