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); }
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); }
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); }
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); }
/// <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); }
static HxCard() { Defaults = new CardSettings(); }
/// <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); }
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 }); }