示例#1
0
        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();
     }
 }
示例#3
0
 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;
 }
示例#4
0
 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);
     }
 }
示例#5
0
 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);
     }
 }