Example #1
0
        /// <summary>
        /// ritorna il numero di firme contenute nel documento
        /// </summary>
        /// <param name="signedFile"></param>
        /// <returns></returns>
        /// <remarks>supporta PAdES</remarks>
        public int GetSignatureCount(byte[] signedFile)
        {
            int nHandle = 0, nCountSignature = 0;

            //Controlla in primis se il documento รจ PADES.
            try
            {
                oDigest.PADES_OpenFromBuf(signedFile, out nHandle);
                if (nHandle != 0)
                {
                    nCountSignature = oDigest.PADES_GetSignatureCount(nHandle);
                    oDigest.PADES_Free(nHandle);
                }
            }
            catch { }
            finally
            {
                try
                {
                    if (nHandle != 0)
                    {
                        oDigest.PADES_Free(nHandle);
                    }
                }
                catch { }
            }

            // Controlla le firme CADES
            try
            {
                oDigest.P7kLoadFromBuf(signedFile, 1, out nHandle);
                if (nHandle != 0)
                {
                    int nCount;
                    oDigest.P7kGetSignatureCount(nHandle, out nCount);
                    nCountSignature += nCount;
                }
            }
            catch { }
            finally
            {
                try
                {
                    oDigest.P7kFree(nHandle);
                }
                catch { }
            }

            return(nCountSignature);
        }
Example #2
0
        public void GetFileInfo(bool isP7M, byte[] blob, out string Metadata)
        {
            int    p7H;
            string cName = "", descr = "";

            if (isP7M)
            {
                oDigest.P7kLoadFromBuf((object)blob, 1, out p7H);
                oDigest.P7kGetDescription(p7H, out cName, out descr);
                //        object digestData;
                //        oDigest.DigestGetValue(p7H,out digestData);
                oDigest.P7kFree(p7H);
            }
            else
            {
                oDigest.P7xLoadFromBuf((object)blob, out p7H);
                oDigest.P7kGetDescription(p7H, out cName, out descr);
                oDigest.P7xFree(p7H);
            }

            CCypher.enumErrorClass errC;
            int    ErrI;
            string ErrS;

            oDigest.GetLastError(out errC, out ErrI, out ErrS);

            Metadata = "<?xml version=\"1.0\" ?><file name=\"" + cName + "\" description=\"" + descr + "\"";
        }