/**
         * verify that the given certificate successfully handles and confirms
         * the signature associated with this signer and, if a signingTime
         * attribute is available, that the certificate was valid at the time the
         * signature was generated.
         */
        public bool Verify(
            X509Certificate cert)
        {
            Time signingTime = GetSigningTime();

            if (signingTime != null)
            {
                cert.CheckValidity(signingTime.Date);
            }

            return(DoVerify(cert.GetPublicKey()));
        }
        private Time GetSigningTime()
        {
            Asn1Object validSigningTime = GetSingleValuedSignedAttribute(
                CmsAttributes.SigningTime, "signing-time");

            if (validSigningTime == null)
            {
                return(null);
            }

            try
            {
                return(Time.GetInstance(validSigningTime));
            }
            catch (ArgumentException)
            {
                throw new CmsException("signing-time attribute value not a valid 'Time' structure");
            }
        }