Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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);
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TrackBarRenderer.cs
- ElementProxy.cs
- WindowsMenu.cs
- PeerNameRecordCollection.cs
- Point4DConverter.cs
- FramingDecoders.cs
- TreeView.cs
- TextDecoration.cs
- ObjectToken.cs
- SqlDataSourceParameterParser.cs
- DefaultValueMapping.cs
- HttpCacheVary.cs
- ContentIterators.cs
- RuleProcessor.cs
- SystemIPInterfaceProperties.cs
- DynamicActivityTypeDescriptor.cs
- Transform3D.cs
- XPathExpr.cs
- EntityConnection.cs
- HeaderUtility.cs
- DrawingGroup.cs
- TemplateKeyConverter.cs
- AlignmentXValidation.cs
- Annotation.cs
- SqlResolver.cs
- TriggerActionCollection.cs
- DataSourceProvider.cs
- WebPartChrome.cs
- Helpers.cs
- InputScopeAttribute.cs
- SuspendDesigner.cs
- AppDomainManager.cs
- CodeStatementCollection.cs
- ChildChangedEventArgs.cs
- SchemaCollectionPreprocessor.cs
- Stackframe.cs
- BitmapMetadataBlob.cs
- PartitionedStream.cs
- StaticExtensionConverter.cs
- DesignerTextBoxAdapter.cs
- WrappedKeySecurityToken.cs
- Matrix3D.cs
- FontWeightConverter.cs
- PublisherMembershipCondition.cs
- AudioFormatConverter.cs
- ToolStripItemEventArgs.cs
- MostlySingletonList.cs
- CharKeyFrameCollection.cs
- XmlKeywords.cs
- PtsHost.cs
- XmlSchemaSimpleType.cs
- KeyboardDevice.cs
- ObjectKeyFrameCollection.cs
- RepeaterItemEventArgs.cs
- OptimizerPatterns.cs
- NotifyIcon.cs
- CreateParams.cs
- CellLabel.cs
- WebMessageEncodingBindingElement.cs
- Quad.cs
- RowCache.cs
- SerializationInfo.cs
- BitStack.cs
- GenericEnumConverter.cs
- XmlILConstructAnalyzer.cs
- GeneralTransform3DTo2D.cs
- Object.cs
- Exceptions.cs
- NameValueCollection.cs
- HttpDictionary.cs
- SessionMode.cs
- CompilerState.cs
- GridViewRowPresenter.cs
- MultiSelectRootGridEntry.cs
- HttpCookieCollection.cs
- Subtree.cs
- StringReader.cs
- SystemIPAddressInformation.cs
- SystemWebSectionGroup.cs
- HtmlLiteralTextAdapter.cs
- IxmlLineInfo.cs
- BmpBitmapEncoder.cs
- PerspectiveCamera.cs
- SafeCoTaskMem.cs
- RegistryPermission.cs
- CodeDOMProvider.cs
- TraceHwndHost.cs
- CodeAttributeDeclarationCollection.cs
- Visual.cs
- SymbolPair.cs
- AsnEncodedData.cs
- DbConnectionStringBuilder.cs
- UnescapedXmlDiagnosticData.cs
- SecurityHeaderTokenResolver.cs
- TextServicesDisplayAttribute.cs
- PropertyFilterAttribute.cs
- FieldInfo.cs
- SchemaComplexType.cs
- HideDisabledControlAdapter.cs
- HostingEnvironment.cs