Exemple #1
0
        public static string generatePaperWallet(string[] keys)
        {
            List <string> QRCodesImages = new List <string>();

            foreach (string key in keys)
            {
                var    generator = new PayloadGenerator.BitcoinAddress(key.ToString(), 0);
                string payload   = generator.ToString();

                QRCodeGenerator qrGenerator    = new QRCodeGenerator();
                QRCodeData      qrCodeData     = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.Q);
                QRCode          qrCode         = new QRCode(qrCodeData);
                var             qrCodeAsBitmap = qrCode.GetGraphic(8);
                qrCodeAsBitmap.Save(@"C:\PaperWalletImages\QRCode" + key + ".png");

                QRCodesImages.Add(@"C:\PaperWalletImages\QRCode" + key + ".png");
                QRCodesImages.Add(key.ToString());
            }

            Image    instanceImg = Bitmap.FromFile(@"C:\PaperWalletInstance.jpg");
            Image    privKey     = Bitmap.FromFile(QRCodesImages[0]);
            Image    pubKey      = Bitmap.FromFile(QRCodesImages[2]);
            Graphics i           = Graphics.FromImage(instanceImg);

            i.DrawImage(pubKey, 0, 370);
            i.DrawImage(privKey, 2300, 300);
            i.DrawString(QRCodesImages[1], new Font("Arial", (float)13.5),
                         new SolidBrush(Color.Black), 1730, 1450);
            i.DrawString(QRCodesImages[3], new Font("Arial", (float)15),
                         new SolidBrush(Color.Black), 0, 1450);

            instanceImg.Save(@"C:\PaperWalletImages\outer" + QRCodesImages[1] + ".jpg");

            return(@"C:\PaperWalletImages\outer" + QRCodesImages[1] + ".jpg");
        }
Exemple #2
0
        public void bitcoin_address_generator_should_round_to_satoshi()
        {
            var address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W";
            var amount  = .123456789;


            var generator = new PayloadGenerator.BitcoinAddress(address, amount);

            generator
            .ToString()
            .ShouldContain("amount=.12345679");
        }
Exemple #3
0
        public void bitcoin_address_generator_should_skip_missing_message()
        {
            var address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W";
            var amount  = .123;


            var generator = new PayloadGenerator.BitcoinAddress(address, amount);

            generator
            .ToString()
            .ShouldNotContain("message");
        }
Exemple #4
0
        public void bitcoin_address_generator_should_skip_missing_label()
        {
            var address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W";
            var amount  = .123;
            var message = "Some Message to Encode";


            var generator = new PayloadGenerator.BitcoinAddress(address, amount, null, message);

            generator
            .ToString()
            .ShouldNotContain("label");
        }
Exemple #5
0
        public void bitcoin_address_generator_can_generate_address()
        {
            var address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W";
            var amount  = .123;
            var label   = "Some Label to Encode";
            var message = "Some Message to Encode";

            var generator = new PayloadGenerator.BitcoinAddress(address, amount, label, message);

            generator
            .ToString()
            .ShouldBe("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?label=Some%20Label%20to%20Encode&message=Some%20Message%20to%20Encode&amount=.123");
        }
Exemple #6
0
        public void bitcoin_address_generator_disregards_current_culture()
        {
            var currentCulture = Thread.CurrentThread.CurrentCulture;

            Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");

            var address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W";
            var amount  = .123;


            var generator = new PayloadGenerator.BitcoinAddress(address, amount);

            generator
            .ToString()
            .ShouldBe("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=.123");

            Thread.CurrentThread.CurrentCulture = currentCulture;
        }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }
            if (targetType == null)
            {
                throw new ArgumentNullException(nameof(targetType));
            }
            if (targetType != typeof(ImageSource))
            {
                throw new ArgumentException("Invalid target type", nameof(targetType));
            }
            if (!value.GetType().IsAssignableFrom(typeof(Payment)))
            {
                throw new ArgumentException("Invalid value type", nameof(value));
            }

            var payment = (Payment)value;

            if (string.IsNullOrWhiteSpace(payment.Address) || payment.ValueBitcoin <= 0)
            {
                return(null);
            }

            var generator = new PayloadGenerator.BitcoinAddress(
                payment.Address
                , System.Convert.ToDouble(payment.ValueBitcoin)
                , label: $"Pagamento {App.Name}"
                );
            var payload = generator.ToString();

            var qrGenerator      = new QRCodeGenerator();
            var qrCodeData       = qrGenerator.CreateQrCode(payload, QRCodeGenerator.ECCLevel.H);
            var qrCode           = new PngByteQRCode(qrCodeData);
            var qrCodeAsPngArray = qrCode.GetGraphic(20);

            // this memory stream should not be disposed here
            var ms = new MemoryStream(qrCodeAsPngArray);

            return(ImageSource.FromStream(() => ms));
        }