Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- FilterEventArgs.cs
- WorkflowValidationFailedException.cs
- QuadraticBezierSegment.cs
- QilFactory.cs
- EntityContainerEmitter.cs
- DataControlFieldCell.cs
- ErrorFormatter.cs
- DataGridViewCheckBoxColumn.cs
- CustomAttributeSerializer.cs
- TabControlDesigner.cs
- SystemColors.cs
- PrintPageEvent.cs
- FixedSOMFixedBlock.cs
- PtsCache.cs
- AuthorizationSection.cs
- XmlNamespaceMapping.cs
- PropertyRecord.cs
- ComponentManagerBroker.cs
- OpCodes.cs
- IRCollection.cs
- Util.cs
- ConnectionStringEditor.cs
- FunctionNode.cs
- ParameterBuilder.cs
- ByteAnimationBase.cs
- RegionData.cs
- ObjectListFieldsPage.cs
- CodeThrowExceptionStatement.cs
- InstanceLockLostException.cs
- ConfigurationProperty.cs
- IImplicitResourceProvider.cs
- EventListenerClientSide.cs
- CssStyleCollection.cs
- WsdlImporterElementCollection.cs
- Int64Storage.cs
- RsaSecurityTokenAuthenticator.cs
- WorkItem.cs
- FaultDesigner.cs
- IdentityHolder.cs
- MemoryPressure.cs
- RealProxy.cs
- PingReply.cs
- SecurityTokenParametersEnumerable.cs
- Vector3DConverter.cs
- SchemaSetCompiler.cs
- InternalControlCollection.cs
- Grant.cs
- SafeTokenHandle.cs
- ExitEventArgs.cs
- HashUtility.cs
- Marshal.cs
- LocalizationComments.cs
- OleDbConnection.cs
- sqlcontext.cs
- WebDisplayNameAttribute.cs
- sqlinternaltransaction.cs
- MdbDataFileEditor.cs
- StatusBar.cs
- BuildResultCache.cs
- BinaryMethodMessage.cs
- NamedPipeProcessProtocolHandler.cs
- MemberRestriction.cs
- LookupNode.cs
- DiscoveryInnerClientManaged11.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- EditorPart.cs
- Decimal.cs
- RawStylusInput.cs
- XmlProcessingInstruction.cs
- EventBuilder.cs
- Block.cs
- DataSourceExpression.cs
- GlyphsSerializer.cs
- Mutex.cs
- CommandValueSerializer.cs
- ContextMenuStripGroupCollection.cs
- LinqDataSourceUpdateEventArgs.cs
- BrushValueSerializer.cs
- XmlDataSource.cs
- SelectedDatesCollection.cs
- EventLogPermissionEntry.cs
- ConfigurationSectionCollection.cs
- EdmItemCollection.OcAssemblyCache.cs
- InstallHelper.cs
- ArraySegment.cs
- DetailsViewCommandEventArgs.cs
- BadImageFormatException.cs
- QilBinary.cs
- Matrix3D.cs
- xml.cs
- ChameleonKey.cs
- SafeFileMapViewHandle.cs
- MeasureItemEvent.cs
- LabelAutomationPeer.cs
- FormatterServices.cs
- StringKeyFrameCollection.cs
- HtmlInputHidden.cs
- UrlMappingsSection.cs
- CommandDesigner.cs
- DescendantOverDescendantQuery.cs