예제 #1
0
    public static int Main(string[] args)
    {
        gdcm.Global global = gdcm.Global.GetInstance();
        if (!global.LoadResourcesFiles())
        {
            System.Console.WriteLine("Could not LoadResourcesFiles");
            return(1);
        }

        string file1  = args[0];
        string file2  = args[1];
        Reader reader = new Reader();

        reader.SetFileName(file1);
        bool ret = reader.Read();

        if (!ret)
        {
            return(1);
        }

        string certpath = gdcm.Filename.Join(gdcm.Testing.GetSourceDirectory(), "/Testing/Source/Data/certificate.pem");

        gdcm.CryptoFactory fact             = gdcm.CryptoFactory.GetFactoryInstance();
        gdcm.CryptographicMessageSyntax cms = fact.CreateCMSProvider();
        if (!cms.ParseCertificateFile(certpath))
        {
            return(1);
        }

        //Anonymizer ano = new Anonymizer();
        SmartPtrAno sano = Anonymizer.New();
        Anonymizer  ano  = sano.__ref__();

        //SimpleSubjectWatcher watcher = new SimpleSubjectWatcher(ano, "Anonymizer");
        MyWatcher watcher = new MyWatcher(ano);

        ano.SetFile(reader.GetFile());
        ano.SetCryptographicMessageSyntax(cms);
        if (!ano.BasicApplicationLevelConfidentialityProfile())
        {
            return(1);
        }

        Writer writer = new Writer();

        writer.SetFileName(file2);
        writer.SetFile(ano.GetFile());
        ret = writer.Write();
        if (!ret)
        {
            return(1);
        }

        return(0);
    }
예제 #2
0
    public static int Main(string[] args)
    {
        gdcm.FileMetaInformation.SetSourceApplicationEntityTitle("My ClinicalTrial App");

        // http://www.oid-info.com/get/1.3.6.1.4.17434
        string THERALYS_ORG_ROOT = "1.3.6.1.4.17434";

        gdcm.UIDGenerator.SetRoot(THERALYS_ORG_ROOT);
        System.Console.WriteLine("Root dir is now: " + gdcm.UIDGenerator.GetRoot());

        gdcm.Global global = gdcm.Global.GetInstance();
        if (!global.LoadResourcesFiles())
        {
            System.Console.WriteLine("Could not LoadResourcesFiles");
            return(1);
        }

        if (args.Length != 2)
        {
            System.Console.WriteLine("Usage:");
            System.Console.WriteLine("ClinicalTrialIdentificationWorkflow input_dir output_dir");
            return(1);
        }
        string dir1 = args[0];
        string dir2 = args[1];

        // Check input is valid:
        if (!gdcm.PosixEmulation.FileIsDirectory(dir1))
        {
            System.Console.WriteLine("Input directory: " + dir1 + " does not exist. Sorry");
            return(1);
        }
        if (!gdcm.PosixEmulation.FileIsDirectory(dir2))
        {
            System.Console.WriteLine("Output directory: " + dir2 + " does not exist. Sorry");
            return(1);
        }

        // Recursively search all file within this toplevel directory:
        Directory d      = new Directory();
        uint      nfiles = d.Load(dir1, true);

        if (nfiles == 0)
        {
            return(1);
        }

        // Let's use the pre-shipped certificate of GDCM.
        string certpath = gdcm.Filename.Join(gdcm.Testing.GetSourceDirectory(), "/Testing/Source/Data/certificate.pem");

        gdcm.CryptoFactory fact             = gdcm.CryptoFactory.GetFactoryInstance();
        gdcm.CryptographicMessageSyntax cms = fact.CreateCMSProvider();
        if (!cms.ParseCertificateFile(certpath))
        {
            System.Console.WriteLine("PEM Certificate : " + certpath + " could not be read. Sorry");
            return(1);
        }

        //Anonymizer ano = new Anonymizer();
        // A reference to an actual C++ instance is required here:
        SmartPtrAno sano = Anonymizer.New();
        Anonymizer  ano  = sano.__ref__();

        //SimpleSubjectWatcher watcher = new SimpleSubjectWatcher(ano, "Anonymizer");
        MyWatcher watcher = new MyWatcher(ano);

        // Explicitely specify the Cryptographic Message Syntax to use:
        ano.SetCryptographicMessageSyntax(cms);

        // Process all filenames:
        FilenamesType filenames = d.GetFilenames();

        for (uint i = 0; i < nfiles; ++i)
        {
            string filename    = filenames[(int)i];
            string outfilename = filename.Replace(dir1, dir2);
            System.Console.WriteLine("Filename: " + filename);
            System.Console.WriteLine("Out Filename: " + outfilename);
            if (!ProcessOneFile(ano, filename, outfilename))
            {
                System.Console.WriteLine("Could not process filename: " + filename);
                return(1);
            }
        }

        return(0);
    }