/// <summary> /// Формування ЕЦП файлу. /// </summary> /// <param name="fileName">Ім'я файлу з даними.</param> /// <param name="fileNameWithSign">Ім'я файлу, в який необхідно записати підписані дані.</param> public static void SignFile(string fileName, string fileNameWithSign) { if (!IEUSignCP.IsInitialized()) { throw new Exception(ERROR_NOT_INITIALIZED); } if (!IEUSignCP.IsPrivateKeyReaded()) { throw new Exception(ERROR_BAD_PRIVATE_KEY); } using (FileStream fsIn = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { byte[] data = DFSPackHelper.fs2bytes(fsIn); byte[] signData; int error = IEUSignCP.SignDataInternal(true, data, out signData); if (error != IEUSignCP.EU_ERROR_NONE) { throw new Exception(IEUSignCP.GetErrorDesc(error)); } using (FileStream fsOut = new FileStream(fileNameWithSign, FileMode.Create, FileAccess.Write)) { byte[] tag = Encoding.ASCII.GetBytes("UA1_SIGN"); fsOut.Write(tag, 0, tag.Length); fsOut.WriteByte(0); fsOut.Write(BitConverter.GetBytes(signData.Length), 0, 4); fsOut.Write(signData, 0, signData.Length); } } }