Пример #1
0
 public static bool EncryptFiles(string inpath, string outpath, string pubkey, string appkey)
 {
     try
     {
         foreach (string file in Directory.EnumerateFiles(inpath, "*", SearchOption.AllDirectories))
         {
             string relpath = file.Substring(inpath.Length + 1);
             string outfile = Path.Combine(outpath, relpath);
             if (!Directory.Exists(Path.GetDirectoryName(outfile)))
             {
                 Directory.CreateDirectory(Path.GetDirectoryName(outfile));
             }
             if (NeedsEncryption(file))
             {
                 Edata.Run(file, outfile, "/" + relpath.Replace('\\', '/'), EdataType.ReadonlyIcvAndCrypto, pubkey, appkey);
             }
             else
             {
                 File.Copy(file, outfile);
             }
         }
         return(true);
     }
     catch (IOException ex)
     {
         Console.Error.WriteLine(ex.Message);
         return(false);
     }
 }
Пример #2
0
        static void Main(string[] args)
        {
            if (args.Length < 4)
            {
                Console.Error.WriteLine("usage: PsmSigner.exe appkey pubkey input output");
                Console.Error.WriteLine("   appkey  .khapp key for project name (in app.xml)");
                Console.Error.WriteLine("   pubkey  kdev.p12 publisher key");
                Console.Error.WriteLine("   input   directory containing unsigned files");
                Console.Error.WriteLine("   output  .psdp PSM package output");
                return;
            }

            string appkey  = args[0];
            string pubkey  = args[1];
            string indir   = args[2];
            string outpath = args[3];

            if (!File.Exists(appkey))
            {
                Console.Error.WriteLine("Cannot find appkey");
                return;
            }
            if (!File.Exists(pubkey))
            {
                Console.Error.WriteLine("Cannot find appkey");
                return;
            }
            if (!Directory.Exists(indir))
            {
                Console.Error.WriteLine("input invalid");
                return;
            }

            // create temporary directory
            string tmp = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

            // encrypt files
            if (!EncryptFiles(indir, tmp, pubkey, appkey))
            {
                Console.Error.WriteLine("Failed to encrypt files.");
                return;
            }

            // first create edata.list
            if (!CreateEdataList(Path.Combine(indir, "Application"), Path.Combine(tmp, "Application\\edata.list")))
            {
                Console.Error.WriteLine("Cannot create edata.list");
                return;
            }

            // next encrypt edata.list to psse.list
            Edata.Run(Path.Combine(tmp, "Application\\edata.list"), Path.Combine(tmp, "Application\\psse.list"), "/Application/psse.list", EdataType.ReadonlyIcvAndCrypto, pubkey, appkey);

            // next create the package
            PsmDevice.CreatePackage(outpath, tmp);
        }