예제 #1
0
        /// <summary>
        /// Отримання інформації про сертифікат відправника для зашифрування.
        /// </summary>
        /// <param name="certInfoEx">Інформація про сертифікат (розширена).</param>
        public static byte[] GetOwnCertificateForEnvelop()
        {
            byte[] bCert = new byte[0];

            IEUSignCP.EU_CERT_INFO_EX cert;
            int index = 0;

            for (; ;)
            {
                int error = IEUSignCP.EnumOwnCertificates(index, out cert);
                if (error == IEUSignCP.EU_WARNING_END_OF_ENUM)
                {
                    break;
                }
                if (error != IEUSignCP.EU_ERROR_NONE)
                {
                    throw new Exception(IEUSignCP.GetErrorDesc(error));
                }

                if (cert.keyUsageBits == 16)
                {
                    error = IEUSignCP.GetCertificate(cert.issuer, cert.serial, out bCert);
                    if (error != IEUSignCP.EU_ERROR_NONE)
                    {
                        throw new Exception(IEUSignCP.GetErrorDesc(error));
                    }
                    break;
                }
                index += 1;
            }

            if (bCert.Length == 0)
            {
                throw new Exception("Відсутній сертифікат відправника для зашифрування.");
            }

            return(bCert);
        }