コード例 #1
0
        public SignerOutput Sign(QrData qrData)
        {
            var input        = new ATrustSignerInput(Credentials.Password, qrData);
            var responseBody = HttpClient.PostJson(
                operation: "Sign/JWS",
                requestBody: JsonConvert.SerializeObject(input)
                );
            var response = JsonConvert.DeserializeObject <ATrustSignerResponse>(responseBody);

            return(new SignerOutput(new JwsRepresentation(response.JwsRepresentation), input.QrData));
        }
コード例 #2
0
        public SignerOutput Sign(QrData qrData)
        {
            //// This is a manual JWS implementation as RKSV does not use standard signature format. Do not migrate to jose-jwt
            var jwsHeaderBase64Url  = Base64UrlEncoder.Encode("{\"alg\":\"ES256\"}"); // Fixed value for RKSV
            var jwsPayloadBase64Url = Base64UrlEncoder.Encode(qrData.Value);
            var jwsDataToBeSigned   = jwsHeaderBase64Url + "." + jwsPayloadBase64Url;

            var bytes = Certificate.GetECDsaPrivateKey().SignData(Encoding.UTF8.GetBytes(jwsDataToBeSigned), HashAlgorithmName.SHA256);
            var jwsSignatureBase64Url = Base64UrlEncoder.Encode(bytes);

            var jwsRepresentation = $"{jwsHeaderBase64Url}.{jwsPayloadBase64Url}.{jwsSignatureBase64Url}";

            return(new SignerOutput(new JwsRepresentation(jwsRepresentation), qrData));
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var normalData = new QrData
            {
                Header  = new QrHeader(),
                CdtrInf = new QrCdtrInf
                {
                    IBAN = "CH8300700114000048160",
                    Cdtr = new QrCdtr
                    {
                        Name   = "Pascal Lüscher",
                        StrtNm = "Bernstrasse",
                        BldgNb = "159",
                        PstCd  = "4852",
                        TwnNm  = "Rothrist",
                        City   = "CH"
                    }
                },
                CcyAmtDate = new QrCcyAmtDate
                {
                    Amt         = 123456789.12654655m,
                    Ccy         = QrCcyAmtDate.CurrencySelection.CHF,
                    ReqdExctnDt = DateTime.Today.AddDays(30)
                },
                RmtInf = new QrRmtInf
                {
                    Tp    = QrRmtInf.TpSelection.NON,
                    Ref   = "",
                    Ustrd = ""
                }
            };



            QrCodeGenerator.Generate(normalData, "E:\\temp\\outputNormal.png");
            normalData.RmtInf.Tp    = QrRmtInf.TpSelection.QRR;
            normalData.RmtInf.Ref   = "210000000003139471430009017";
            normalData.RmtInf.Ustrd = "uftrag vom15.09.2019##S5.09.2019##S1/01/20170309/11/10201409/20/14000000/22/36958/30/CH106017086/40/1020/41/3010";
            QrCodeGenerator.Generate(normalData, "E:\\temp\\outputRef.png");
        }
コード例 #4
0
 public ATrustSignerInput(string password, QrData qrData)
     : this(password, qrData.ToString())
 {
     QrData = qrData;
 }
コード例 #5
0
        /// <summary>
        /// Draws a qr code with swisscross based on qr data to output path, format: png
        /// </summary>
        /// <param name="data">the iso 20022 data</param>
        /// <param name="outputPath">the location for the file</param>
        public static void Generate(QrData data, string outputPath)
        {
            var codeSizeInch  = (codeSizeMm / 10) / cmInchFactor;
            var codeSizePixel = (int)(dpi * codeSizeInch);

            var encoder = new QrEncoder(ErrorCorrectionLevel.M);

            encoder.TryEncode(data.ToString(), out QrCode qrCode);

            #region fiddle for svg

            //var dark = new MyGColor(Color.Black);
            //var light = new MyGColor(Color.White);
            //SVGRenderer svgRenderer = new SVGRenderer(
            //    new FixedModuleSize(50, QuietZoneModules.Zero),
            //    dark, light);

            //var filePath = "E:\\temp\\output.svg";
            //File.WriteAllText(filePath, svgRenderer.WriteToString(qrCode.Matrix, false));

            //var svgDocument = SvgDocument.Open(filePath);

            //var bmp = svgDocument.Draw((int)(dpi * codeSizeInch), (int)(dpi * codeSizeInch));
            //bmp.SetResolution(dpi, dpi);
            //bmp.Save("E:\\temp\\output_fromSVG.png", ImageFormat.Png);

            //var bytes = Encoding.UTF8.GetBytes(svgRenderer.WriteToString(qrCode.Matrix));
            //using (var stream = new MemoryStream(bytes))
            //{
            //    var svgDocument = SvgDocument.Open<SvgDocument>(stream);
            //    var codeSizeInch = codeSizeMm / cmInchFactor;
            //    var bmp = svgDocument.Draw();// (int)(dpi * codeSizeInch), (int)(dpi * codeSizeInch));
            //    bmp.SetResolution(dpi, dpi);
            //    bmp.Save("E:\\temp\\output_fromSVG.png", ImageFormat.Png);
            //}



            //var bmp = svgDoc.Draw((int)(dpi * codeSizeInch), (int)(dpi * codeSizeInch));


            //var width = bmp.Width;
            //bmp.Save("E:\\temp\\output_FromSvg.png", ImageFormat.Png);
            #endregion

            GraphicsRenderer gRenderer = new GraphicsRenderer(
                new FixedModuleSize(100, QuietZoneModules.Zero),
                Brushes.Black, Brushes.White);

            MemoryStream ms = new MemoryStream();
            gRenderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms);
            var bmpCode = new Bitmap(ms);

            Bitmap finalImage = new Bitmap(codeSizePixel, codeSizePixel);
            finalImage.SetResolution(dpi, dpi);
            using (var g = Graphics.FromImage(finalImage))
            {
                g.DrawImage(bmpCode, new Rectangle(0, 0, codeSizePixel, codeSizePixel));
                var crossLocationCM   = ((codeSizeMm - crossSizeMm) / 10) / 2;
                var crossLocationInch = crossLocationCM / cmInchFactor;
                var crossLocationPx   = (int)(crossLocationInch * dpi);

                var crossWidthInch  = (crossSizeMm / 10) / cmInchFactor;
                var crossWidthPixel = (int)(crossWidthInch * dpi);
                g.DrawImage(Properties.Resources.CH_Kreuz_7mm,
                            new Rectangle(
                                new Point(crossLocationPx, crossLocationPx),
                                new Size(crossWidthPixel, crossWidthPixel)
                                ));
            }
            finalImage.Save(outputPath, ImageFormat.Png);
        }