Example #1
0
    UserDataTest loadedData = null; // stores the user data, this is just an example

    // Use this for initialization
    void Start()
    {
        // Set the file location to the Application.persistentDataPath, so we should write here:
        fileToEncrypt = Application.persistentDataPath + fileToEncrypt;
        encryptedFile = Application.persistentDataPath + encryptedFile;
        decryptedFile = Application.persistentDataPath + decryptedFile;

        //Create the secure store object:
        // dont forget the set the password insede the SecureStore.cs
        SecureStore store = new SecureStore();

        //or alternativly use the other constructor
        //SecureStore store = new SecureStore( "YourSecretPassword" );

        // Testing the string encrypter:
        Debug.Log("plainText string: " + plainTextString);
        encryptedTextString = store.encryptString(plainTextString);
        Debug.Log("encrypted string: " + encryptedTextString);
        decryptedTextString = store.decryptString(encryptedTextString);
        Debug.Log("decrypted string: " + decryptedTextString);

        // Testing the file encrypter:
        // Create a file to write to.
        using (StreamWriter sw = File.CreateText(fileToEncrypt))
        {
            sw.WriteLine("Hello!");
            sw.WriteLine("This is a plain text file.");
            sw.WriteLine("Encrypt me!");
        }
        Debug.Log("Text file can be found here: " + fileToEncrypt);

        // Now encrypt it:
        store.encryptFile(fileToEncrypt, encryptedFile);
        Debug.Log("Encryped file can be found here: " + encryptedFile);

        // And also decrypt it:
        store.decryptFile(encryptedFile, decryptedFile);
        Debug.Log("Decryped file can be found here: " + decryptedFile);


        // Testing the stream encrypter by serializing an Object:
        UserDataTest data = new UserDataTest("test-user-7854", "this is test user", 100);

        // Test the saving:
        saveUserData(store, data);

        // Test the loading:
        loadedData = loadUserData(store);
        Debug.Log("Userdata.userGuid: " + loadedData.userGuid);
        Debug.Log("Userdata.userDescription: " + loadedData.userDescription);
        Debug.Log("Userdata.userPoints: " + loadedData.userPoints);
    }
Example #2
0
    // This method is for testing the encrypted serialization:
    public void saveUserData(SecureStore store, UserDataTest data)
    {
        string filename = Application.persistentDataPath + userDataFile;

        Debug.Log("Saving user data to: " + filename);

        BinaryFormatter bformatter = new BinaryFormatter();

        bformatter.Binder = new VersionDeserializationBinder();

        FileStream fsCrypt = new FileStream(filename, FileMode.Create);

        // Creating crypto stream via the store:
        CryptoStream cs = store.encryptStream(fsCrypt);

        bformatter.Serialize(cs, data);

        cs.Close();
        fsCrypt.Close();
    }
Example #3
0
    // This method is for testing the decrypted deserialization:
    public UserDataTest loadUserData(SecureStore store)
    {
        string filename = Application.persistentDataPath + userDataFile;

        Debug.Log("Loading user data from: " + filename);

        BinaryFormatter bformatter = new BinaryFormatter();

        bformatter.Binder = new VersionDeserializationBinder();

        FileStream fsCrypt = new FileStream(filename, FileMode.Open);

        // Creating crypto stream via the store:
        CryptoStream cs   = store.decryptStream(fsCrypt);
        UserDataTest data = (UserDataTest)bformatter.Deserialize(cs);

        cs.Close();
        fsCrypt.Close();

        return(data);
    }
Example #4
0
File: Melua.cs Project: xyfc/Melua
        public void userdata()
        {
            var L = Melua.luaL_newstate();

            Melua.melua_opensafelibs(L);

            var n1 = 0;

            // Ctor
            Melua.luaL_register(L, "Test", new[]
            {
                new MeluaLib.Melua.LuaLib("new", NL =>
                {
                    var test = new UserDataTest()
                    {
                        N1 = 1234
                    };
                    var size = Marshal.SizeOf(test);

                    var ptr = Melua.lua_newuserdata(L, size);
                    Melua.luaL_getmetatable(L, "Melua.Test");
                    Melua.lua_setmetatable(L, -2);

                    Marshal.StructureToPtr(test, ptr, true);

                    return(1);
                })
            });

            // Meta table for test userdata type
            Melua.luaL_newmetatable(L, "Melua.Test");
            Melua.lua_pushstring(L, "__index");
            Melua.lua_pushvalue(L, -2);
            Melua.lua_settable(L, -3);

            Melua.luaL_register(L, null, new[]
            {
                new MeluaLib.Melua.LuaLib("setN1", _ =>
                {
                    var ptr = Melua.luaL_checkudata(L, 1, "Melua.Test");
                    var val = Melua.luaL_checkinteger(L, 2);

                    // Either marshal back and forth or use unsafe
                    var test = (UserDataTest)Marshal.PtrToStructure(ptr, typeof(UserDataTest));
                    test.N1  = val;
                    Marshal.StructureToPtr(test, ptr, true);

                    //unsafe
                    //{
                    //	var test = (UserDataTest*)ptr;
                    //	test->N1 = val;
                    //}

                    return(0);
                }),
                new MeluaLib.Melua.LuaLib("getN1", _ =>
                {
                    var ptr  = Melua.luaL_checkudata(L, 1, "Melua.Test");
                    var test = (UserDataTest)Marshal.PtrToStructure(ptr, typeof(UserDataTest));

                    Melua.lua_pushinteger(L, test.N1);

                    return(1);
                })
            });

            // Test method
            Melua.melua_register(L, "testgetn1", _ =>
            {
                n1 = Melua.lua_tointeger(L, -1);

                return(0);
            });

            var result = Melua.luaL_dostring(L, @"
local t = Test.new()
t:setN1(5678)
testgetn1(t:getN1())
");

            if (result != 0)
            {
                throw new Exception(Melua.lua_tostring(L, -1));
            }

            Assert.Equal(n1, 5678);
        }