コード例 #1
0
        public static CardSettings GetRandomSettings()
        {
            byte[] privateKey  = GetRandomBytes(32);
            byte[] aesPassword = GetRandomPassword();
            var    pubKey      = GetSecp256k1PublicKey(privateKey);

            byte[] hash160      = Hash160(pubKey.Item1, pubKey.Item2);
            string address      = CreateBitcoinAddress(hash160);
            int    pin          = GetRandomSmallInt(10000);
            int    puk          = GetRandomSmallInt(100000);
            int    vignereTable = GetRandomSmallInt(10);
            string displayKey   = GetRandomNumberString(6);

            CardSettings result = new CardSettings
            {
                PrivateKey             = privateKey,
                aesPassword            = GetPasswordString(aesPassword),
                AESEncryptedPrivateKey = ByteArrayToHexString(AESEncryption(aesPassword, privateKey)),
                PublicKeyX             = pubKey.Item1,
                PublicKeyY             = pubKey.Item2,
                PublicKeyHash160       = hash160,
                AddressString          = address,
                OrderNumber            = CreateOrderNumber(),
                PinValue                  = pin,
                PukValue                  = puk,
                VignereTable              = CreateVignereTable(vignereTable),
                displayKeyString          = displayKey,
                DisplayKeyAndVignereTable = displayKey + vignereTable
            };

            return(result);
        }
コード例 #2
0
ファイル: FillImages.cs プロジェクト: licar/SET-GAME
    ArrayList GetChoosedCards(ArrayList prefabs)
    {
        ArrayList choosedCards = new ArrayList();

        foreach (GameObject prefab in prefabs)
        {
            CardSettings cardSettings = prefab.GetComponent <CardSettings>();
            Debug.Log("Gets" + choosedCards.Count);
            if (cardSettings.isChoose)
            {
                choosedCards.Add(cardSettings);
            }
        }
        Debug.Log("Get" + choosedCards.Count);
        return(choosedCards);
    }
コード例 #3
0
ファイル: FillImages.cs プロジェクト: licar/SET-GAME
    bool IsDifferent(ArrayList choosedCards)
    {
        CardSettings card1 = (CardSettings)choosedCards[0];
        CardSettings card2 = (CardSettings)choosedCards[1];
        CardSettings card3 = (CardSettings)choosedCards[2];

        Debug.Log(card1.color);

        if ((card1.color != card2.color && card1.color != card3.color) &&
            (card1.number != card2.number && card1.number != card3.number) &&
            (card1.shape != card2.shape && card1.shape != card3.shape) &&
            (card1.image != card2.image && card1.image != card3.image))
        {
            Debug.Log("Dif");
            return(true);
        }
        Debug.Log("Same");
        return(false);
    }
コード例 #4
0
        public UserCard Create(
            CardAccount cardAccount,
            CardVendor cardVendor,
            User cardOwner,
            string cardholderFirstName,
            string cardholderLastName,
            DateTime expirationDateUtc)
        {
            Argument.NotNull(cardAccount, "cardAccount");
            Argument.NotNull(cardVendor, "cardVendor");
            Argument.NotNull(cardOwner, "cardOwner");

            var card = _cardFactory.Create(
                cardVendor,
                cardholderFirstName,
                cardholderLastName,
                expirationDateUtc);
            var settings = new CardSettings(card.Id, _cardLimitsFactory.CreateDefault(cardAccount.Currency));
            var userCard = new UserCard(cardAccount, card, cardOwner, settings);

            return(userCard);
        }
コード例 #5
0
        /// <summary>
        /// Returns null at success otherwise errormessage.
        /// </summary>
        public static string ModifyHtmlFile(CardSettings settings, Order2 waitingPaidOrder)
        {
            byte[] file       = System.IO.File.ReadAllBytes(originalPath);
            string fileString = Encoding.UTF8.GetString(file);

            string errorMsg = InsertString(out fileString, fileString, settings.AddressString, "address");

            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            errorMsg = UpdateQRImage(settings.AddressString);
            if (errorMsg != null)
            {
                return(errorMsg);
            }

            errorMsg = InsertString(out fileString, fileString, settings.AESEncryptedPrivateKey, "privatekey");
            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            errorMsg = InsertString(out fileString, fileString, settings.displayKeyString, "vignerekey");
            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            errorMsg = InsertString(out fileString, fileString,
                                    waitingPaidOrder != null ? waitingPaidOrder.OrderNumber : settings.OrderNumber,
                                    "ordernumber");
            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            errorMsg = InsertString(out fileString, fileString, settings.PinValue.ToString(), "pin");
            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            errorMsg = InsertString(out fileString, fileString, settings.PukValue.ToString(), "puk");
            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            errorMsg = InsertString(out fileString, fileString, DateTime.Now.ToString("dd-MM-yyyy"), "date");
            if (errorMsg != null || fileString == null)
            {
                return(errorMsg ?? "No insert result error.");
            }

            for (int y = 0; y < settings.VignereTable.Length; y++)
            {
                for (int x = 0; x < settings.VignereTable[y].Length; x++)
                {
                    errorMsg = InsertString(out fileString, fileString, settings.VignereTable[y][x].ToString(), "x" + x + "y" + y);
                    if (errorMsg != null || fileString == null)
                    {
                        return(errorMsg ?? "No insert result error.");
                    }
                }
            }

            string testString = null;

            while (testString == null || testString.Contains(">>"))
            {
                FileStream fs = new FileStream(outputPath, FileMode.OpenOrCreate);
                file = Encoding.UTF8.GetBytes(fileString);
                fs.Write(file, 0, file.Length);
                fs.SetLength(file.Length);
                fs.Flush(true);
                fs.Close();
                file       = File.ReadAllBytes(outputPath);
                testString = Encoding.UTF8.GetString(file);
            }

            return(null);
        }
コード例 #6
0
 static HxCard()
 {
     Defaults = new CardSettings();
 }
コード例 #7
0
        /// <summary>
        /// Returns error message or null at success.
        /// </summary>
        public static string ModifyCardFile(CardSettings settings, LoadSettings loadSettings)
        {
            if (loadSettings.TestSettings)
            {
                try
                {
                    File.Copy(settingsPathTest, outputPath, true);
                }
                catch (Exception ex)
                {
                    return("Failed to copy test settings for test load. Ex.: " + ex.Message + " " + ex.StackTrace);
                }
            }
            else
            {
                byte[] file       = File.ReadAllBytes(settingsPath);
                string fileString = Encoding.UTF8.GetString(file);

                string errorMsg = null;

                errorMsg = InsertString(out fileString, fileString, settings.DisplayKeyAndVignereTable, "DisplayKey");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, settings.PinValue, "Pin");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, settings.PrivateKey, "PrivateKey");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, settings.PublicKey, "PublicKey");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, settings.PublicKeyHash160, "PublicKeyHash160");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, settings.PukValue, "Puk");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, settings.AddressString, "Address");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, loadSettings.CardFee, "CardFee");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                errorMsg = InsertString(out fileString, fileString, loadSettings.ExpireFee ? "183" : "0",
                                        "ExpireUsageTimes");
                if (errorMsg != null)
                {
                    return(errorMsg);
                }

                file = Encoding.UTF8.GetBytes(fileString);
                FileStream fileStream = new FileStream(outputPath, FileMode.Create);
                fileStream.Write(file, 0, file.Length);
                fileStream.SetLength(file.Length);
                fileStream.Flush(true);
                fileStream.Close();
            }

            return(null);
        }
コード例 #8
0
        public static SimpleLoadResponse ExecuteLoad(LoadSettings loadSettings, Order2 waitingPaidOrder)
        {
            //1. Generate crypto values:
            CardSettings settings = CryptoHelper.GetRandomSettings();

            //2. Fill letter:
            string errorMessage = HtmlDocumentCreator.ModifyHtmlFile(settings, waitingPaidOrder);

            if (errorMessage != null)
            {
                lastLoaded = null;
                return(new SimpleLoadResponse {
                    ErrorMessage = errorMessage
                });
            }

            //3. Send to printer:
            //Happens automatically in main window on ExecuteLoad success.

            //4. Email requires pre-known address... type-able to begin with? Will consider... it IS a lot to insert bits and send an email.
            //TODO

            //5. Insert variables into card image file:
            errorMessage = CardFileCreator.ModifyCardFile(settings, loadSettings);
            if (errorMessage != null)
            {
                lastLoaded = null;
                return(new SimpleLoadResponse {
                    ErrorMessage = errorMessage
                });
            }


            //6. Load card:
            errorMessage = CardLoader.LoadCard(loadSettings);
            if (errorMessage != null)
            {
                lastLoaded = null;
                return(new SimpleLoadResponse {
                    ErrorMessage = errorMessage
                });
            }

            //7 Delete the generated card settings file containing the private key:
            errorMessage = CardLoader.DeleteCardFile(CardFileCreator.outputPath);
            if (errorMessage != null)
            {
                lastLoaded = null;
                return(new SimpleLoadResponse {
                    ErrorMessage = errorMessage
                });
            }

            //8. Save order to simple database.
            if (!loadSettings.TestSettings)
            {
                OrderDB db    = new OrderDB();
                Order2  order = new Order2
                {
                    OrderNumber = settings.OrderNumber,
                    Password    = settings.aesPassword,
                    Address     = settings.AddressString,
                    WebOrder    = false
                };
                db.SaveOrder(order);
                lastLoaded = order;
            }

            return(new SimpleLoadResponse
            {
                Success = true,
                ErrorMessage = null
            });
        }