public void LoadCliCertFromCerStore(string certStore, string subjectName, bool isMachineStore) { try { CAPICOM.Store store = new CAPICOM.Store(); // store.Open(isMachineStore?CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_LOCAL_MACHINE_STORE:CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, // certStore, CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY); store.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, certStore, CAPICOM.CAPICOM_STORE_OPEN_MODE.CAPICOM_STORE_OPEN_READ_ONLY); foreach (CAPICOM.Certificate cert in store.Certificates) { if (cert.SubjectName.IndexOf(subjectName) > 0) { ClientCert = cert; return; } } } catch (COMException e) { throw e; } }
public string Sign(string thumbprint, string base64data) { CAdESCOM.CPStore store = new CAdESCOM.CPStore(); store.Open(); try { CAPICOM.Certificate cert = GetCertByThumbprint(store, thumbprint); CAdESCOM.CPSigner signer = new CAdESCOM.CPSigner(); signer.Certificate = cert; signer.TSAAddress = "http://cryptopro.ru/tsp/"; CAdESCOM.CadesSignedData signedData = new CAdESCOM.CadesSignedData(); signedData.ContentEncoding = CAdESCOM.CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY; signedData.Content = base64data; try { return(signedData.SignCades(signer, CAdESCOM.CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true)); } catch (Exception e) { throw new Exception("Sign error", e); } } finally { store.Close(); } }
public ExCert(CAPICOM.Certificate cert) { Thumbprint = cert.Thumbprint; Name = cert.GetInfo(CAPICOM.CAPICOM_CERT_INFO_TYPE.CAPICOM_CERT_INFO_SUBJECT_DNS_NAME); SubjectName = cert.SubjectName; ValidFromDate = cert.ValidFromDate; ValidToDate = cert.ValidToDate; IsValid = cert.IsValid().Result; }
public bool VerifyAttachedSignature(string signedContent, Encoding encodingType) { try { this._signedContent = signedContent; CAPICOM.Utilities u = new CAPICOM.Utilities(); CAPICOM.SignedData signedData = new CAPICOM.SignedData(); signedData.Verify(_signedContent, false, CAPICOM.CAPICOM_SIGNED_DATA_VERIFY_FLAG.CAPICOM_VERIFY_SIGNATURE_ONLY); SignerCert = null; CAPICOM.Signer s = (CAPICOM.Signer)signedData.Signers[1]; SignerCert = (CAPICOM.Certificate)s.Certificate; this._clearText = encodingType.GetString((byte[])u.BinaryStringToByteArray(signedData.Content)); return(true); } catch (COMException e) { return(false); } }
public bool VerifyDetachedSignature(string plaintextMessage, string signedContent, Encoding encodingType) { try { this._clearText = plaintextMessage; this._signedContent = signedContent; CAPICOM.SignedData signedData = new CAPICOM.SignedDataClass(); CAPICOM.Utilities u = new CAPICOM.UtilitiesClass(); signedData.Content = (u.ByteArrayToBinaryString(encodingType.GetBytes(plaintextMessage))); signedData.Verify(_signedContent, true, CAPICOM.CAPICOM_SIGNED_DATA_VERIFY_FLAG.CAPICOM_VERIFY_SIGNATURE_ONLY); SignerCert = null; CAPICOM.Signer s = (CAPICOM.Signer)signedData.Signers[1]; SignerCert = (CAPICOM.Certificate)s.Certificate; return(true); } catch (COMException e) { return(false); } }