From b63f881ac3ae74082b3a1f1f56cef5c733bc4b09 Mon Sep 17 00:00:00 2001 From: Tristan Boland Date: Wed, 13 Apr 2022 16:05:22 +0200 Subject: [PATCH 1/3] Add .NET6.0 workaround It seems the QRCode Class is no longer available in QRCoder for .NET6. I needed this library in one of my projects. So i decided to publish my workaround to here. Hopefully it is of use to some --- .../.idea.Google.Authenticator/.idea/misc.xml | 6 +++++ .../Google.Authenticator.Tests.csproj | 2 +- .../Google.Authenticator.csproj | 5 +++- .../TwoFactorAuthenticator.cs | 26 ++++++++++++------- 4 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 .idea/.idea.Google.Authenticator/.idea/misc.xml diff --git a/.idea/.idea.Google.Authenticator/.idea/misc.xml b/.idea/.idea.Google.Authenticator/.idea/misc.xml new file mode 100644 index 0000000..1d8c84d --- /dev/null +++ b/.idea/.idea.Google.Authenticator/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/Google.Authenticator.Tests/Google.Authenticator.Tests.csproj b/Google.Authenticator.Tests/Google.Authenticator.Tests.csproj index 5379148..de669f8 100644 --- a/Google.Authenticator.Tests/Google.Authenticator.Tests.csproj +++ b/Google.Authenticator.Tests/Google.Authenticator.Tests.csproj @@ -1,7 +1,7 @@  - netcoreapp3.1;net452;net5.0 + netcoreapp3.1;net452;net5.0;net6.0 false diff --git a/Google.Authenticator/Google.Authenticator.csproj b/Google.Authenticator/Google.Authenticator.csproj index 9a77ed8..f3c90e7 100644 --- a/Google.Authenticator/Google.Authenticator.csproj +++ b/Google.Authenticator/Google.Authenticator.csproj @@ -1,7 +1,7 @@  - netstandard2.0;net45;net5.0 + netstandard2.0;net45;net5.0;net6.0 Google Authenticator Two-Factor Google Authenticator Two-Factor Authentication Library Google Authenticator Two-Factor Authentication Library (Not officially affiliated with Google.) @@ -35,6 +35,9 @@ NET5_0;NETCOREAPP + + NET6_0; + diff --git a/Google.Authenticator/TwoFactorAuthenticator.cs b/Google.Authenticator/TwoFactorAuthenticator.cs index 019e5d3..3f5eaf9 100644 --- a/Google.Authenticator/TwoFactorAuthenticator.cs +++ b/Google.Authenticator/TwoFactorAuthenticator.cs @@ -81,15 +81,23 @@ private static string GenerateQrCodeUrl(int qrPixelsPerModule, string provisionU var qrCodeUrl = ""; try { - using (var qrGenerator = new QRCodeGenerator()) - using (var qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q)) - using (var qrCode = new QRCode(qrCodeData)) - using (var qrCodeImage = qrCode.GetGraphic(qrPixelsPerModule)) - using (var ms = new MemoryStream()) - { - qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png); - qrCodeUrl = $"data:image/png;base64,{Convert.ToBase64String(ms.ToArray())}"; - } + #if NET6_0 + var qrGenerator = new QRCodeGenerator(); + var qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q); + var qrCode = new PngByteQRCode(qrCodeData); + var qrCodeImage = qrCode.GetGraphic(qrPixelsPerModule); + qrCodeUrl = $"data:image/png;base64,{Convert.ToBase64String(qrCodeImage)}"; + #else + using (var qrGenerator = new QRCodeGenerator()) + using (var qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q)) + using (var qrCode = new QRCode(qrCodeData)) + using (var qrCodeImage = qrCode.GetGraphic(qrPixelsPerModule)) + using (var ms = new MemoryStream()) + { + qrCodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png); + qrCodeUrl = $"data:image/png;base64,{Convert.ToBase64String(ms.ToArray())}"; + } + #endif } catch (TypeInitializationException e) { From 07a89ac43e6b5ad22740f6a09a578b7f82d16cd4 Mon Sep 17 00:00:00 2001 From: Tristan Boland Date: Wed, 13 Apr 2022 16:06:15 +0200 Subject: [PATCH 2/3] Delete misc.xml --- .idea/.idea.Google.Authenticator/.idea/misc.xml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .idea/.idea.Google.Authenticator/.idea/misc.xml diff --git a/.idea/.idea.Google.Authenticator/.idea/misc.xml b/.idea/.idea.Google.Authenticator/.idea/misc.xml deleted file mode 100644 index 1d8c84d..0000000 --- a/.idea/.idea.Google.Authenticator/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file From 690f244c6c4fb68c8042e5b50b69246ca73f4d28 Mon Sep 17 00:00:00 2001 From: Tristan Boland <49944460+TristanBoland@users.noreply.github.com> Date: Wed, 13 Apr 2022 18:20:52 +0200 Subject: [PATCH 3/3] Update Google.Authenticator/TwoFactorAuthenticator.cs Co-authored-by: Frans Lytzen --- Google.Authenticator/TwoFactorAuthenticator.cs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/Google.Authenticator/TwoFactorAuthenticator.cs b/Google.Authenticator/TwoFactorAuthenticator.cs index 3f5eaf9..365e172 100644 --- a/Google.Authenticator/TwoFactorAuthenticator.cs +++ b/Google.Authenticator/TwoFactorAuthenticator.cs @@ -81,15 +81,15 @@ private static string GenerateQrCodeUrl(int qrPixelsPerModule, string provisionU var qrCodeUrl = ""; try { + using (var qrGenerator = new QRCodeGenerator()) + using (var qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q)) #if NET6_0 - var qrGenerator = new QRCodeGenerator(); - var qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q); - var qrCode = new PngByteQRCode(qrCodeData); - var qrCodeImage = qrCode.GetGraphic(qrPixelsPerModule); - qrCodeUrl = $"data:image/png;base64,{Convert.ToBase64String(qrCodeImage)}"; + using (var qrCode = new PngByteQRCode(qrCodeData)) + { + var qrCodeImage = qrCode.GetGraphic(qrPixelsPerModule); + qrCodeUrl = $"data:image/png;base64,{Convert.ToBase64String(qrCodeImage)}"; + } #else - using (var qrGenerator = new QRCodeGenerator()) - using (var qrCodeData = qrGenerator.CreateQrCode(provisionUrl, QRCodeGenerator.ECCLevel.Q)) using (var qrCode = new QRCode(qrCodeData)) using (var qrCodeImage = qrCode.GetGraphic(qrPixelsPerModule)) using (var ms = new MemoryStream()) @@ -98,6 +98,7 @@ private static string GenerateQrCodeUrl(int qrPixelsPerModule, string provisionU qrCodeUrl = $"data:image/png;base64,{Convert.ToBase64String(ms.ToArray())}"; } #endif + } catch (TypeInitializationException e) {