diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a0bd360..3d268e0 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -14,7 +14,7 @@ jobs: env: Solution_Name: SecureElementReader.sln - Test_Project_Path: test\SecureElementReader.App.Test\SecureElementReader.App.Test.csproj + Test_Project_Path: test\SecureElementReader.Test\SecureElementReader.Test.csproj steps: diff --git a/.github/workflows/Publish.yml b/.github/workflows/Publish.yml index fa147cd..6c63c4e 100644 --- a/.github/workflows/Publish.yml +++ b/.github/workflows/Publish.yml @@ -5,8 +5,8 @@ on: branches: [ "main" ] env: - PROJECT_PATH: src/SecureElementReader.App/SecureElementReader.App.csproj - MACOS_PATH: src/SecureElementReader.App/bin/Release/net6.0/osx-x64/publish + PROJECT_PATH: src/SecureElementReader/SecureElementReader.csproj + MACOS_PATH: src/SecureElementReader/bin/Release/net6.0/osx-x64/publish jobs: build: @@ -20,11 +20,11 @@ jobs: os: [macos-latest, windows-latest, ubuntu-latest] include: - os: ubuntu-latest - zip_name: linux-x64 + os_name: linux-x64 - os: macos-latest - zip_name: osx-x64 + os_name: osx-x64 - os: windows-latest - zip_name: win-x64 + os_name: win-x64 steps: - uses: actions/checkout@v2 @@ -47,112 +47,110 @@ jobs: useConfigFile: true configFilePath: .github/workflows/GitVersion.yml - - name: Restore project - if: matrix.os != 'macos-latest' - run: dotnet restore ${{ env.PROJECT_PATH }} - - - name: Build project - if: matrix.os != 'macos-latest' - run: dotnet build ${{ env.PROJECT_PATH }} -c Release --no-restore - - - name: Publish project for ${{ matrix.os }} - if: matrix.os != 'macos-latest' - run: dotnet publish ${{ env.PROJECT_PATH }} -c Release -r ${{ matrix.zip_name }} -p:PublishSingleFile=true -p:AssemblyVersion=${{ steps.gitversion.outputs.semVer }} - - - name: Publish project for OSx - if: matrix.os == 'macos-latest' + - name: Linux + if: matrix.os == 'ubuntu-latest' run: | - cd src/SecureElementReader.App + dotnet restore ${{ env.PROJECT_PATH }} + dotnet build ${{ env.PROJECT_PATH }} -c Release --no-restore + dotnet publish ${{ env.PROJECT_PATH }} -c Release -r ${{ matrix.os_name }} --self-contained -p:PublishSingleFile=true -p:AssemblyVersion=${{ steps.gitversion.outputs.semVer }} + + - name: Windows + if: matrix.os == 'windows-latest' + run: | + dotnet restore ${{ env.PROJECT_PATH }} -r win-x64 + dotnet build ${{ env.PROJECT_PATH }} -c Release --no-restore -p:PublishSingleFile=true + dotnet publish ${{ env.PROJECT_PATH }} -c Release -r win-x64 --self-contained -p:PublishSingleFile=true --no-build -p:AssemblyVersion=${{ steps.gitversion.outputs.semVer }} + + - name: Publish project for mac + if: matrix.os == 'macos-latest' + run: | + cd src/SecureElementReader dotnet restore -r osx-x64 - dotnet msbuild -t:BundleApp -p:RuntimeIdentifier=osx-x64 -property:Configuration=Release -p:AssemblyVersion=${{ steps.gitversion.outputs.semVer }} -p:UseAppHost=true + dotnet msbuild -t:BundleApp -p:TargetFramework=net6.0 -p:RuntimeIdentifier=osx-x64 -property:Configuration=Release -p:AssemblyVersion=${{ steps.gitversion.outputs.semVer }} -p:UseAppHost=true + dotnet publish -c Release -p:TargetFramework=net6.0 -p:RuntimeIdentifier=osx-x64 -p:AssemblyVersion=${{ steps.gitversion.outputs.semVer }} --self-contained true mkdir Assets/logo.iconset cp Assets/taxcore.png Assets/logo.iconset/icon_512x512.png iconutil -c icns Assets/logo.iconset - cp Assets/logo.icns bin/Release/net6.0/osx-x64/publish/SecureElementReader.App.app/Contents/Resources/logo.icns + cp Assets/logo.icns bin/Release/net6.0/osx-x64/publish/SecureElementReader.app/Contents/Resources/logo.icns rm Assets/logo.icns rm -rf Assets/logo.iconset - - name: Codesign app bundle + - name: Setup Keychain if: matrix.os == 'macos-latest' - env: - MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }} - MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }} - MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }} - MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }} - run: | - echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12 + run: | - security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain + security create-keychain -p "${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}" build.keychain security default-keychain -s build.keychain - security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain - security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign - security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain + security unlock-keychain -p "${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}" build.keychain + echo "${{ secrets.PROD_MACOS_CERTIFICATE }}" | base64 --decode > certificate.p12 + security import certificate.p12 -k build.keychain -P "${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}" -T /usr/bin/codesign + security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}" build.keychain xcrun notarytool store-credentials "AC_PASSWORD" --apple-id "${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}" --team-id ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }} --password "${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}" - + - name: Codesign app - if: matrix.os == 'macos-latest' + if: matrix.os == 'macos-latest' run: | - find "${{ env.MACOS_PATH }}/SecureElementReader.App.app/Contents/MacOS"|while read fname; do + find "${{ env.MACOS_PATH }}/SecureElementReader.app/Contents/MacOS"|while read fname; do if [ -f "$fname" ] - then + then echo "[INFO] Signing $fname" - codesign --force --deep --timestamp --options=runtime --entitlements SEReader.entitlements --sign "${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}" "$fname" + codesign --force --deep --timestamp --options=runtime --entitlements SecureElementReader.entitlements --sign "${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}" "$fname" fi done - #codesign --force --timestamp --options=runtime --entitlements SEReader.entitlements --sign "${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}" "$RUNNER_TEMP/SEReader.app" - - - name: chmod - if: matrix.os == 'macos-latest' - run: | - cd ${{ env.MACOS_PATH }}/SecureElementReader.App.app/Contents/MacOS - chmod +x SecureElementReader.App - chmod 755 SecureElementReader.App + codesign --force --timestamp --options=runtime --entitlements SecureElementReader.entitlements --sign "${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}" "${{ env.MACOS_PATH }}/SecureElementReader.app" - name: Notarise app - if: matrix.os == 'macos-latest' + if: matrix.os == 'macos-latest' run: | - ditto -c -k --sequesterRsrc --keepParent "${{ env.MACOS_PATH }}/SecureElementReader.App.app" "SEReader.zip" - xcrun notarytool submit "SEReader.zip" --wait --keychain-profile "AC_PASSWORD" - xcrun stapler staple ${{ env.MACOS_PATH }}/SecureElementReader.App.app - + ditto -c -k --sequesterRsrc --keepParent "${{ env.MACOS_PATH }}/SecureElementReader.app" "${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip" + xcrun notarytool submit "${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip" --wait --keychain-profile "AC_PASSWORD" + xcrun stapler staple "${{ env.MACOS_PATH }}/SecureElementReader.app" + - name: Windows code signing if: matrix.os == 'windows-latest' uses: neoz-technologies/code-sign-action@v3 with: certificate: ${{ secrets.CERT_FOR_SIGN }} password: ${{ secrets.CERT_PW }} - folder: 'src\SecureElementReader.App\bin\Release\net6.0\win-x64\publish\' - recursive: true + folder: 'src\SecureElementReader\bin\Release\net6.0\win-x64\publish\' + recursive: true - - name: Zip ${{ matrix.zip_name }} releases - if: matrix.os != 'macos-latest' + - name: Zip Linux releases + if: matrix.os == 'ubuntu-latest' uses: vimtor/action-zip@v1 with: - files: src/SecureElementReader.App/bin/Release/net6.0/${{ matrix.zip_name }}/publish/ - dest: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.zip_name }}.zip - - - name: Upload ${{ matrix.zip_name }} artifacts - uses: actions/upload-artifact@v2 - if: matrix.os != 'macos-latest' - with: - name: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.zip_name }}.zip - path: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.zip_name }}.zip + files: src/SecureElementReader/bin/Release/net6.0/linux-x64/publish/ + dest: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip - - name: Zip OSx release - if: matrix.os == 'macos-latest' - run: | - cd ${{ env.MACOS_PATH }} - zip -r SecureElementReader.App.app.zip SecureElementReader.App.app - - - name: Upload OSx artifacts + - name: Zip Win releases + if: matrix.os == 'windows-latest' + uses: vimtor/action-zip@v1 + with: + files: src/SecureElementReader/bin/Release/net6.0/win-x64/publish/ + dest: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip + + - name: Upload macos artifacts uses: actions/upload-artifact@v2 if: matrix.os == 'macos-latest' with: - name: ${{ steps.gitversion.outputs.semVer }}.osx-x64.zip - path: ${{ env.MACOS_PATH }}/SecureElementReader.App.app.zip - + name: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip + path: /Users/runner/work/Secure-Element-Reader/Secure-Element-Reader/${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip + + - name: Upload ${{ matrix.name }} artifacts + uses: actions/upload-artifact@v2 + if: matrix.os == 'ubuntu-latest' + with: + name: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip + path: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip - publis: + - name: Upload ${{ matrix.name }} artifacts + uses: actions/upload-artifact@v2 + if: matrix.os == 'windows-latest' + with: + name: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip + path: ${{ steps.gitversion.outputs.semVer }}.${{ matrix.os_name }}.zip + + publish: name: Publish runs-on: ubuntu-latest needs: build @@ -169,10 +167,7 @@ jobs: - uses: actions/download-artifact@v2 with: - name: ${{ needs.build.outputs.semVer }}.linux-x64.zip - - - name: Rename file - run: mv SecureElementReader.App.app.zip ${{ needs.build.outputs.semVer }}.osx-x64.zip + name: ${{ needs.build.outputs.semVer }}.linux-x64.zip - name: Create Tag uses: Yanjingzhu/FirstJSAction@v1.3 @@ -203,4 +198,3 @@ jobs: - name: Delete Build Artifact uses: joutvhu/delete-artifact@v1.0.1 - diff --git a/SEReader.entitlements b/SEReader.entitlements deleted file mode 100644 index 384b033..0000000 --- a/SEReader.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - com.apple.security.cs.allow-jit - - com.apple.security.automation.apple-events - - - \ No newline at end of file diff --git a/SecureElementReader.entitlements b/SecureElementReader.entitlements new file mode 100644 index 0000000..50ff8ab --- /dev/null +++ b/SecureElementReader.entitlements @@ -0,0 +1,27 @@ + + + + com.apple.security.automation.apple-events + + com.apple.security.cs.allow-jit + + com.apple.security.cs.allow-dyld-environment-variables + + com.apple.security.cs.allow-unsigned-executable-memory + + com.apple.security.cs.disable-library-validation + + com.apple.security.files.bookmarks.document-scope + + com.apple.security.files.downloads.read-write + + com.apple.security.cs.disable-executable-page-protection + + com.apple.security.cs.debugger + + com.apple.security.get-task-allow + + com.apple.security.hypervisor + + + diff --git a/SecureElementReader.sln b/SecureElementReader.sln index eff87a8..1fc3d2f 100644 --- a/SecureElementReader.sln +++ b/SecureElementReader.sln @@ -7,9 +7,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{FC9C1549-F1A EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{4D690E19-6ACF-42CF-B2EF-61F5C03D96B4}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SecureElementReader.App", "src\SecureElementReader.App\SecureElementReader.App.csproj", "{F3BC73AD-F3C1-4285-9832-E6F34A3C8038}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SecureElementReader", "src\SecureElementReader\SecureElementReader.csproj", "{F3BC73AD-F3C1-4285-9832-E6F34A3C8038}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SecureElementReader.App.Test", "test\SecureElementReader.App.Test\SecureElementReader.App.Test.csproj", "{EF356EC5-3637-4673-9A4D-8B4F8170BBA8}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SecureElementReader.Test", "test\SecureElementReader.Test\SecureElementReader.Test.csproj", "{EF356EC5-3637-4673-9A4D-8B4F8170BBA8}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/SecureElementReader.App/SecureElementReader.App.csproj b/src/SecureElementReader.App/SecureElementReader.App.csproj deleted file mode 100644 index 4a990f9..0000000 --- a/src/SecureElementReader.App/SecureElementReader.App.csproj +++ /dev/null @@ -1,82 +0,0 @@ - - - WinExe - net6.0 - disable - - - - copyused - true - win-x64 - Assets\taxcore.ico - - - SecureElementReader.App - SecureElementReader.App - com.dti - 1.3.0 - 0.3.0 - AAPL - ???? - SecureElementReader.App - logo.icns - NSApplication - true - true - - - - - - - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - - - - - - - - - - - - - PreserveNewest - - - diff --git a/src/SecureElementReader.App/ViewModels/Interfaces/IMainWindowViewModel.cs b/src/SecureElementReader.App/ViewModels/Interfaces/IMainWindowViewModel.cs deleted file mode 100644 index dcf79e4..0000000 --- a/src/SecureElementReader.App/ViewModels/Interfaces/IMainWindowViewModel.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace SecureElementReader.App.ViewModels.Interfaces -{ - public interface IMainWindowViewModel - { - } -} diff --git a/src/SecureElementReader.App/ViewModels/LoadingViewModel.cs b/src/SecureElementReader.App/ViewModels/LoadingViewModel.cs deleted file mode 100644 index 75084f4..0000000 --- a/src/SecureElementReader.App/ViewModels/LoadingViewModel.cs +++ /dev/null @@ -1,8 +0,0 @@ -using SecureElementReader.App.ViewModels.Implementations.Dialogs; - -namespace SecureElementReader.App.ViewModels -{ - public class LoadingViewModel : DialogViewModelBase - { - } -} diff --git a/src/SecureElementReader.App/ViewModels/Services/DialogResultBase.cs b/src/SecureElementReader.App/ViewModels/Services/DialogResultBase.cs deleted file mode 100644 index d992ab5..0000000 --- a/src/SecureElementReader.App/ViewModels/Services/DialogResultBase.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace SecureElementReader.App.ViewModels.Services -{ - public class DialogResultBase - { - } -} diff --git a/src/SecureElementReader.App/.gitignore b/src/SecureElementReader/.gitignore similarity index 100% rename from src/SecureElementReader.App/.gitignore rename to src/SecureElementReader/.gitignore diff --git a/src/SecureElementReader.App/App.axaml b/src/SecureElementReader/App.axaml similarity index 78% rename from src/SecureElementReader.App/App.axaml rename to src/SecureElementReader/App.axaml index e776b41..9a3165d 100644 --- a/src/SecureElementReader.App/App.axaml +++ b/src/SecureElementReader/App.axaml @@ -1,8 +1,8 @@ + xmlns:local="using:SecureElementReader" + x:Class="SecureElementReader.App" + xmlns:viewModels="using:SecureElementReader.ViewModels"> diff --git a/src/SecureElementReader.App/App.axaml.cs b/src/SecureElementReader/App.axaml.cs similarity index 79% rename from src/SecureElementReader.App/App.axaml.cs rename to src/SecureElementReader/App.axaml.cs index 11f58b6..29e65cf 100644 --- a/src/SecureElementReader.App/App.axaml.cs +++ b/src/SecureElementReader/App.axaml.cs @@ -1,15 +1,15 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; -using SecureElementReader.App.DependencyInjection; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.ViewModels; -using SecureElementReader.App.ViewModels.Interfaces; -using SecureElementReader.App.Views; +using SecureElementReader.DependencyInjection; +using SecureElementReader.Interfaces; +using SecureElementReader.ViewModels; +using SecureElementReader.ViewModels.Interfaces; +using SecureElementReader.Views; using Splat; using System; -namespace SecureElementReader.App +namespace SecureElementReader { public class App : Application { diff --git a/src/SecureElementReader/AppSettingsManager.cs b/src/SecureElementReader/AppSettingsManager.cs new file mode 100644 index 0000000..fdb5eb5 --- /dev/null +++ b/src/SecureElementReader/AppSettingsManager.cs @@ -0,0 +1,36 @@ +using System; +using System.IO; + +namespace SecureElementReader +{ + public static class AppSettingsManager + { + public const string DefaultBaseDir = "SecureElementReader"; + public const string AppSettingsFileName = "appsettings.json"; + public static string BaseDirPath { get; private set; } + public static string AppSettingsFilePath { get; set; } + public static void Initialize() + { + string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + string UserProfilePath = Path.Combine(AppDataPath, DefaultBaseDir); + BaseDirPath = UserProfilePath; + BaseDirPath = Path.GetFullPath(BaseDirPath); + SetupBasePaths(); + CreateDefaultSettings(); + } + private static void SetupBasePaths() + { + Directory.CreateDirectory(BaseDirPath); + } + + private static void CreateDefaultSettings() + { + string SourceAppFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, AppSettingsFileName); + string DestinationAppFile = Path.Combine(BaseDirPath, AppSettingsFileName); + if (!File.Exists(DestinationAppFile)) + { + File.Copy(SourceAppFile, DestinationAppFile, true); + } + } + } +} \ No newline at end of file diff --git a/src/SecureElementReader.App/Assets/france.png b/src/SecureElementReader/Assets/france.png similarity index 100% rename from src/SecureElementReader.App/Assets/france.png rename to src/SecureElementReader/Assets/france.png diff --git a/src/SecureElementReader.App/Assets/serbia.png b/src/SecureElementReader/Assets/serbia.png similarity index 100% rename from src/SecureElementReader.App/Assets/serbia.png rename to src/SecureElementReader/Assets/serbia.png diff --git a/src/SecureElementReader.App/Assets/taxcore.ico b/src/SecureElementReader/Assets/taxcore.ico similarity index 100% rename from src/SecureElementReader.App/Assets/taxcore.ico rename to src/SecureElementReader/Assets/taxcore.ico diff --git a/src/SecureElementReader.App/Assets/taxcore.png b/src/SecureElementReader/Assets/taxcore.png similarity index 100% rename from src/SecureElementReader.App/Assets/taxcore.png rename to src/SecureElementReader/Assets/taxcore.png diff --git a/src/SecureElementReader.App/Assets/uk.png b/src/SecureElementReader/Assets/uk.png similarity index 100% rename from src/SecureElementReader.App/Assets/uk.png rename to src/SecureElementReader/Assets/uk.png diff --git a/src/SecureElementReader.App/DependencyInjection/Bootstrapper.cs b/src/SecureElementReader/DependencyInjection/Bootstrapper.cs similarity index 83% rename from src/SecureElementReader.App/DependencyInjection/Bootstrapper.cs rename to src/SecureElementReader/DependencyInjection/Bootstrapper.cs index 6b6ef50..39cef27 100644 --- a/src/SecureElementReader.App/DependencyInjection/Bootstrapper.cs +++ b/src/SecureElementReader/DependencyInjection/Bootstrapper.cs @@ -1,6 +1,6 @@ using Splat; -namespace SecureElementReader.App.DependencyInjection +namespace SecureElementReader.DependencyInjection { public static class Bootstrapper { diff --git a/src/SecureElementReader.App/DependencyInjection/ReadonlyDependencyResolverExtensions.cs b/src/SecureElementReader/DependencyInjection/ReadonlyDependencyResolverExtensions.cs similarity index 94% rename from src/SecureElementReader.App/DependencyInjection/ReadonlyDependencyResolverExtensions.cs rename to src/SecureElementReader/DependencyInjection/ReadonlyDependencyResolverExtensions.cs index 76bf318..2501750 100644 --- a/src/SecureElementReader.App/DependencyInjection/ReadonlyDependencyResolverExtensions.cs +++ b/src/SecureElementReader/DependencyInjection/ReadonlyDependencyResolverExtensions.cs @@ -1,7 +1,7 @@ using Splat; using System; -namespace SecureElementReader.App.DependencyInjection +namespace SecureElementReader.DependencyInjection { public static class ReadonlyDependencyResolverExtensions { diff --git a/src/SecureElementReader.App/DependencyInjection/ServicesBootstrapper.cs b/src/SecureElementReader/DependencyInjection/ServicesBootstrapper.cs similarity index 91% rename from src/SecureElementReader.App/DependencyInjection/ServicesBootstrapper.cs rename to src/SecureElementReader/DependencyInjection/ServicesBootstrapper.cs index 6b4665b..fe1bd5d 100644 --- a/src/SecureElementReader.App/DependencyInjection/ServicesBootstrapper.cs +++ b/src/SecureElementReader/DependencyInjection/ServicesBootstrapper.cs @@ -2,21 +2,22 @@ using PCSC; using PCSC.Iso7816; using PCSC.Monitoring; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models.Configurations; -using SecureElementReader.App.Proxies; -using SecureElementReader.App.Services; -using SecureElementReader.App.ViewModels; -using SecureElementReader.App.ViewModels.Interfaces; -using SecureElementReader.App.ViewModels.Services; +using SecureElementReader.Interfaces; +using SecureElementReader.Models.Configurations; +using SecureElementReader.Proxies; +using SecureElementReader.Services; +using SecureElementReader.ViewModels; +using SecureElementReader.ViewModels.Interfaces; +using SecureElementReader.ViewModels.Services; using Serilog; using Serilog.Extensions.Logging; using Splat; using Splat.Microsoft.Extensions.Logging; +using System; using System.IO; using ILogger = Microsoft.Extensions.Logging.ILogger; -namespace SecureElementReader.App.DependencyInjection +namespace SecureElementReader.DependencyInjection { public static class ServicesBootstrapper { @@ -30,7 +31,6 @@ public static void RegisterServices(IMutableDependencyResolver services, IReadon RegisterLoggingConfiguration(services, configuration); RegisterSelectedLanguagesConfiguration(services, configuration); - services.Register(() => new AboutDialogViewModel()); services.Register(() => new VerificationInfoDialogViewModel( resolver.GetRequiredService() @@ -84,7 +84,6 @@ public static void RegisterServices(IMutableDependencyResolver services, IReadon resolver.GetRequiredService() )); - services.RegisterLazySingleton(() => new LocalizationService( resolver.GetRequiredService() )); @@ -124,9 +123,10 @@ private static string GetLogFileName(LoggingConfiguration config) private static IConfiguration BuildConfiguration() { - return new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .Build(); + string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "SecureElementReader"); + string filePath = Path.Combine(path, "appsettings.json"); + + return new ConfigurationBuilder().AddJsonFile(filePath).Build(); } private static void RegisterLoggingConfiguration(IMutableDependencyResolver services, @@ -161,4 +161,4 @@ private static void RegisterSelectedLanguagesConfiguration(IMutableDependencyRes services.RegisterConstant(config); } } -} +} \ No newline at end of file diff --git a/src/SecureElementReader.App/Enpoints/EndpointUrls.cs b/src/SecureElementReader/Enpoints/EndpointUrls.cs similarity index 86% rename from src/SecureElementReader.App/Enpoints/EndpointUrls.cs rename to src/SecureElementReader/Enpoints/EndpointUrls.cs index dedf403..6acf614 100644 --- a/src/SecureElementReader.App/Enpoints/EndpointUrls.cs +++ b/src/SecureElementReader/Enpoints/EndpointUrls.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enpoints +namespace SecureElementReader.Enpoints { public class EndpointUrls { diff --git a/src/SecureElementReader.App/Enums/ApduClasses.cs b/src/SecureElementReader/Enums/ApduClasses.cs similarity index 85% rename from src/SecureElementReader.App/Enums/ApduClasses.cs rename to src/SecureElementReader/Enums/ApduClasses.cs index 3ba4d32..e7a41a1 100644 --- a/src/SecureElementReader.App/Enums/ApduClasses.cs +++ b/src/SecureElementReader/Enums/ApduClasses.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum ApduClasses : byte { diff --git a/src/SecureElementReader.App/Enums/ApduInstructions.cs b/src/SecureElementReader/Enums/ApduInstructions.cs similarity index 85% rename from src/SecureElementReader.App/Enums/ApduInstructions.cs rename to src/SecureElementReader/Enums/ApduInstructions.cs index bc7ec9d..0166fd4 100644 --- a/src/SecureElementReader.App/Enums/ApduInstructions.cs +++ b/src/SecureElementReader/Enums/ApduInstructions.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum ApduInstructions : byte { diff --git a/src/SecureElementReader.App/Enums/ApduP1.cs b/src/SecureElementReader/Enums/ApduP1.cs similarity index 88% rename from src/SecureElementReader.App/Enums/ApduP1.cs rename to src/SecureElementReader/Enums/ApduP1.cs index 64f36b8..19d5d63 100644 --- a/src/SecureElementReader.App/Enums/ApduP1.cs +++ b/src/SecureElementReader/Enums/ApduP1.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum ApduP1 { diff --git a/src/SecureElementReader.App/Enums/ApduP2.cs b/src/SecureElementReader/Enums/ApduP2.cs similarity index 67% rename from src/SecureElementReader.App/Enums/ApduP2.cs rename to src/SecureElementReader/Enums/ApduP2.cs index e57065f..905f548 100644 --- a/src/SecureElementReader.App/Enums/ApduP2.cs +++ b/src/SecureElementReader/Enums/ApduP2.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum ApduP2 { diff --git a/src/SecureElementReader.App/Enums/CommandsMessages.cs b/src/SecureElementReader/Enums/CommandsMessages.cs similarity index 87% rename from src/SecureElementReader.App/Enums/CommandsMessages.cs rename to src/SecureElementReader/Enums/CommandsMessages.cs index 69f2203..50e72c6 100644 --- a/src/SecureElementReader.App/Enums/CommandsMessages.cs +++ b/src/SecureElementReader/Enums/CommandsMessages.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum CommandsMessages { diff --git a/src/SecureElementReader.App/Enums/CommandsType.cs b/src/SecureElementReader/Enums/CommandsType.cs similarity index 73% rename from src/SecureElementReader.App/Enums/CommandsType.cs rename to src/SecureElementReader/Enums/CommandsType.cs index a1bcd5d..3af53a9 100644 --- a/src/SecureElementReader.App/Enums/CommandsType.cs +++ b/src/SecureElementReader/Enums/CommandsType.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum CommandsType { diff --git a/src/SecureElementReader.App/Enums/SubmitMessages.cs b/src/SecureElementReader/Enums/SubmitMessages.cs similarity index 73% rename from src/SecureElementReader.App/Enums/SubmitMessages.cs rename to src/SecureElementReader/Enums/SubmitMessages.cs index 8fbd042..9ca8497 100644 --- a/src/SecureElementReader.App/Enums/SubmitMessages.cs +++ b/src/SecureElementReader/Enums/SubmitMessages.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum SubmitMessages { diff --git a/src/SecureElementReader.App/Enums/Theme.cs b/src/SecureElementReader/Enums/Theme.cs similarity index 62% rename from src/SecureElementReader.App/Enums/Theme.cs rename to src/SecureElementReader/Enums/Theme.cs index 9b278b1..bfbbf98 100644 --- a/src/SecureElementReader.App/Enums/Theme.cs +++ b/src/SecureElementReader/Enums/Theme.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Enums +namespace SecureElementReader.Enums { public enum Theme : byte { diff --git a/src/SecureElementReader.App/Extensions/EventExtensions.cs b/src/SecureElementReader/Extensions/EventExtensions.cs similarity index 90% rename from src/SecureElementReader.App/Extensions/EventExtensions.cs rename to src/SecureElementReader/Extensions/EventExtensions.cs index d5fd99c..d48cfba 100644 --- a/src/SecureElementReader.App/Extensions/EventExtensions.cs +++ b/src/SecureElementReader/Extensions/EventExtensions.cs @@ -1,7 +1,7 @@ using System; using System.Threading; -namespace SecureElementReader.App.Extensions +namespace SecureElementReader.Extensions { public static class EventExtensions { diff --git a/src/SecureElementReader.App/Extensions/StringExtensions.cs b/src/SecureElementReader/Extensions/StringExtensions.cs similarity index 89% rename from src/SecureElementReader.App/Extensions/StringExtensions.cs rename to src/SecureElementReader/Extensions/StringExtensions.cs index 49f0147..9de34bb 100644 --- a/src/SecureElementReader.App/Extensions/StringExtensions.cs +++ b/src/SecureElementReader/Extensions/StringExtensions.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Extensions +namespace SecureElementReader.Extensions { public static class StringExtensions { diff --git a/src/SecureElementReader.App/FodyWeavers.xml b/src/SecureElementReader/FodyWeavers.xml similarity index 100% rename from src/SecureElementReader.App/FodyWeavers.xml rename to src/SecureElementReader/FodyWeavers.xml diff --git a/src/SecureElementReader.App/Interfaces/IApduCommandService.cs b/src/SecureElementReader/Interfaces/IApduCommandService.cs similarity index 91% rename from src/SecureElementReader.App/Interfaces/IApduCommandService.cs rename to src/SecureElementReader/Interfaces/IApduCommandService.cs index 3329b7c..c83fdf0 100644 --- a/src/SecureElementReader.App/Interfaces/IApduCommandService.cs +++ b/src/SecureElementReader/Interfaces/IApduCommandService.cs @@ -1,6 +1,6 @@ using PCSC.Iso7816; -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface IApduCommandService { diff --git a/src/SecureElementReader.App/Interfaces/IApplicationCloser.cs b/src/SecureElementReader/Interfaces/IApplicationCloser.cs similarity index 62% rename from src/SecureElementReader.App/Interfaces/IApplicationCloser.cs rename to src/SecureElementReader/Interfaces/IApplicationCloser.cs index cb76f77..5dcb482 100644 --- a/src/SecureElementReader.App/Interfaces/IApplicationCloser.cs +++ b/src/SecureElementReader/Interfaces/IApplicationCloser.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface IApplicationCloser { diff --git a/src/SecureElementReader.App/Interfaces/IApplicationDispatcher.cs b/src/SecureElementReader/Interfaces/IApplicationDispatcher.cs similarity index 81% rename from src/SecureElementReader.App/Interfaces/IApplicationDispatcher.cs rename to src/SecureElementReader/Interfaces/IApplicationDispatcher.cs index 5dae7e4..52223fe 100644 --- a/src/SecureElementReader.App/Interfaces/IApplicationDispatcher.cs +++ b/src/SecureElementReader/Interfaces/IApplicationDispatcher.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface IApplicationDispatcher { diff --git a/src/SecureElementReader.App/Interfaces/ICardReaderService.cs b/src/SecureElementReader/Interfaces/ICardReaderService.cs similarity index 82% rename from src/SecureElementReader.App/Interfaces/ICardReaderService.cs rename to src/SecureElementReader/Interfaces/ICardReaderService.cs index b8e4ad7..55d5b41 100644 --- a/src/SecureElementReader.App/Interfaces/ICardReaderService.cs +++ b/src/SecureElementReader/Interfaces/ICardReaderService.cs @@ -1,7 +1,7 @@ -using SecureElementReader.App.Models; +using SecureElementReader.Models; using System.Collections.Generic; -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface ICardReaderService { diff --git a/src/SecureElementReader.App/Interfaces/ILocalizationService.cs b/src/SecureElementReader/Interfaces/ILocalizationService.cs similarity index 76% rename from src/SecureElementReader.App/Interfaces/ILocalizationService.cs rename to src/SecureElementReader/Interfaces/ILocalizationService.cs index 20296ae..51a2f36 100644 --- a/src/SecureElementReader.App/Interfaces/ILocalizationService.cs +++ b/src/SecureElementReader/Interfaces/ILocalizationService.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface ILocalizationService { diff --git a/src/SecureElementReader.App/Interfaces/IMainWindowProvider.cs b/src/SecureElementReader/Interfaces/IMainWindowProvider.cs similarity index 72% rename from src/SecureElementReader.App/Interfaces/IMainWindowProvider.cs rename to src/SecureElementReader/Interfaces/IMainWindowProvider.cs index 1f70243..6273566 100644 --- a/src/SecureElementReader.App/Interfaces/IMainWindowProvider.cs +++ b/src/SecureElementReader/Interfaces/IMainWindowProvider.cs @@ -1,6 +1,6 @@ using Avalonia.Controls; -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface IMainWindowProvider { diff --git a/src/SecureElementReader.App/Interfaces/ITaxCoreApiProxy.cs b/src/SecureElementReader/Interfaces/ITaxCoreApiProxy.cs similarity index 83% rename from src/SecureElementReader.App/Interfaces/ITaxCoreApiProxy.cs rename to src/SecureElementReader/Interfaces/ITaxCoreApiProxy.cs index 69c5f34..52b1f31 100644 --- a/src/SecureElementReader.App/Interfaces/ITaxCoreApiProxy.cs +++ b/src/SecureElementReader/Interfaces/ITaxCoreApiProxy.cs @@ -1,8 +1,8 @@ -using SecureElementReader.App.Models; +using SecureElementReader.Models; using System.Collections.Generic; using System.Threading.Tasks; -namespace SecureElementReader.App.Interfaces +namespace SecureElementReader.Interfaces { public interface ITaxCoreApiProxy { diff --git a/src/SecureElementReader.App/Models/CertDetailsModel.cs b/src/SecureElementReader/Models/CertDetailsModel.cs similarity index 93% rename from src/SecureElementReader.App/Models/CertDetailsModel.cs rename to src/SecureElementReader/Models/CertDetailsModel.cs index 6e90c2b..a90a80e 100644 --- a/src/SecureElementReader.App/Models/CertDetailsModel.cs +++ b/src/SecureElementReader/Models/CertDetailsModel.cs @@ -3,7 +3,7 @@ using System.Security.Cryptography.X509Certificates; using TaxCore.Libraries.Certificates; -namespace SecureElementReader.App.Models +namespace SecureElementReader.Models { public class CertDetailsModel { @@ -19,7 +19,7 @@ public CertDetailsModel() public string OrganizationUnit { get; internal set; } public string StreetAddress { get; internal set; } public string RequestedBy { get; internal set; } - public CertificateTypes CertificateType { get; internal set; } + public string CertificateType { get; internal set; } public string GivenName { get; internal set; } public string SurName { get; internal set; } public string State { get; internal set; } diff --git a/src/SecureElementReader.App/Models/Command.cs b/src/SecureElementReader/Models/Command.cs similarity index 83% rename from src/SecureElementReader.App/Models/Command.cs rename to src/SecureElementReader/Models/Command.cs index 96519e0..d1125c2 100644 --- a/src/SecureElementReader.App/Models/Command.cs +++ b/src/SecureElementReader/Models/Command.cs @@ -1,8 +1,8 @@ using Newtonsoft.Json; -using SecureElementReader.App.Enums; +using SecureElementReader.Enums; using System; -namespace SecureElementReader.App.Models +namespace SecureElementReader.Models { public class Command { diff --git a/src/SecureElementReader.App/Models/CommandsStatusResult.cs b/src/SecureElementReader/Models/CommandsStatusResult.cs similarity index 89% rename from src/SecureElementReader.App/Models/CommandsStatusResult.cs rename to src/SecureElementReader/Models/CommandsStatusResult.cs index 61128ed..ef26e4e 100644 --- a/src/SecureElementReader.App/Models/CommandsStatusResult.cs +++ b/src/SecureElementReader/Models/CommandsStatusResult.cs @@ -1,7 +1,7 @@ using Newtonsoft.Json; using System; -namespace SecureElementReader.App.Models +namespace SecureElementReader.Models { public class CommandsStatusResult { diff --git a/src/SecureElementReader.App/Models/Configurations/DefaultThemeConfiguration.cs b/src/SecureElementReader/Models/Configurations/DefaultThemeConfiguration.cs similarity index 52% rename from src/SecureElementReader.App/Models/Configurations/DefaultThemeConfiguration.cs rename to src/SecureElementReader/Models/Configurations/DefaultThemeConfiguration.cs index 60ebadf..5578513 100644 --- a/src/SecureElementReader.App/Models/Configurations/DefaultThemeConfiguration.cs +++ b/src/SecureElementReader/Models/Configurations/DefaultThemeConfiguration.cs @@ -1,6 +1,6 @@ -using SecureElementReader.App.Enums; +using SecureElementReader.Enums; -namespace SecureElementReader.App.Models.Configurations +namespace SecureElementReader.Models.Configurations { public class DefaultThemeConfiguration { diff --git a/src/SecureElementReader.App/Models/Configurations/LoggingConfiguration.cs b/src/SecureElementReader/Models/Configurations/LoggingConfiguration.cs similarity index 84% rename from src/SecureElementReader.App/Models/Configurations/LoggingConfiguration.cs rename to src/SecureElementReader/Models/Configurations/LoggingConfiguration.cs index d83373d..7afdf23 100644 --- a/src/SecureElementReader.App/Models/Configurations/LoggingConfiguration.cs +++ b/src/SecureElementReader/Models/Configurations/LoggingConfiguration.cs @@ -1,6 +1,6 @@ using Serilog.Events; -namespace SecureElementReader.App.Models.Configurations +namespace SecureElementReader.Models.Configurations { public class LoggingConfiguration { diff --git a/src/SecureElementReader.App/Models/Configurations/SelectedLanguageConfiguration.cs b/src/SecureElementReader/Models/Configurations/SelectedLanguageConfiguration.cs similarity index 80% rename from src/SecureElementReader.App/Models/Configurations/SelectedLanguageConfiguration.cs rename to src/SecureElementReader/Models/Configurations/SelectedLanguageConfiguration.cs index 38ec080..c0b562a 100644 --- a/src/SecureElementReader.App/Models/Configurations/SelectedLanguageConfiguration.cs +++ b/src/SecureElementReader/Models/Configurations/SelectedLanguageConfiguration.cs @@ -4,7 +4,7 @@ using System.Text; using System.Threading.Tasks; -namespace SecureElementReader.App.Models.Configurations +namespace SecureElementReader.Models.Configurations { public class SelectedLanguageConfiguration { diff --git a/src/SecureElementReader.App/Models/Configurations/ThemesNamesConfiguration.cs b/src/SecureElementReader/Models/Configurations/ThemesNamesConfiguration.cs similarity index 64% rename from src/SecureElementReader.App/Models/Configurations/ThemesNamesConfiguration.cs rename to src/SecureElementReader/Models/Configurations/ThemesNamesConfiguration.cs index 86ac6f6..9d347ad 100644 --- a/src/SecureElementReader.App/Models/Configurations/ThemesNamesConfiguration.cs +++ b/src/SecureElementReader/Models/Configurations/ThemesNamesConfiguration.cs @@ -1,7 +1,7 @@ -using SecureElementReader.App.Enums; +using SecureElementReader.Enums; using System.Collections.Generic; -namespace SecureElementReader.App.Models.Configurations +namespace SecureElementReader.Models.Configurations { public class ThemesNamesConfiguration { diff --git a/src/SecureElementReader.App/Models/SecureElementAuditRequest.cs b/src/SecureElementReader/Models/SecureElementAuditRequest.cs similarity index 77% rename from src/SecureElementReader.App/Models/SecureElementAuditRequest.cs rename to src/SecureElementReader/Models/SecureElementAuditRequest.cs index a75a7a7..3693215 100644 --- a/src/SecureElementReader.App/Models/SecureElementAuditRequest.cs +++ b/src/SecureElementReader/Models/SecureElementAuditRequest.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.Models +namespace SecureElementReader.Models { public class SecureElementAuditRequest { diff --git a/src/SecureElementReader.App/Models/VerifyPinModel.cs b/src/SecureElementReader/Models/VerifyPinModel.cs similarity index 92% rename from src/SecureElementReader.App/Models/VerifyPinModel.cs rename to src/SecureElementReader/Models/VerifyPinModel.cs index da966f4..5e58df6 100644 --- a/src/SecureElementReader.App/Models/VerifyPinModel.cs +++ b/src/SecureElementReader/Models/VerifyPinModel.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace SecureElementReader.App.Models +namespace SecureElementReader.Models { public class VerifyPinModel { diff --git a/src/SecureElementReader.App/Program.cs b/src/SecureElementReader/Program.cs similarity index 79% rename from src/SecureElementReader.App/Program.cs rename to src/SecureElementReader/Program.cs index ff7bd77..0cb5188 100644 --- a/src/SecureElementReader.App/Program.cs +++ b/src/SecureElementReader/Program.cs @@ -2,14 +2,14 @@ using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.ReactiveUI; -using SecureElementReader.App.DependencyInjection; +using SecureElementReader.DependencyInjection; using Splat; using System; using System.Threading; using Microsoft.Extensions.Logging; using ILogger = Microsoft.Extensions.Logging.ILogger; -namespace SecureElementReader.App +namespace SecureElementReader { internal static class Program { @@ -19,8 +19,9 @@ internal static class Program // SynchronizationContext-reliant code before AppMain is called: things aren't initialized // yet and stuff might break. [STAThread] - public static void Main(string[] args) + public static void Main(string[] args) { + AppSettingsManager.Initialize(); var mutex = new Mutex(false, typeof(Program).FullName); try @@ -34,10 +35,9 @@ public static void Main(string[] args) RegisterDependencies(); LogStart(); - BuildAvaloniaApp() .StartWithClassicDesktopLifetime(args, ShutdownMode.OnMainWindowClose); - } + } finally { mutex.ReleaseMutex(); @@ -47,17 +47,17 @@ public static void Main(string[] args) private static void LogStart() { var logger = Locator.Current.GetRequiredService(); - logger.LogInformation("Application start"); + logger.LogInformation("Application start"); } private static void SubscribeToDomainUnhandledEvents() => AppDomain.CurrentDomain.UnhandledException += (sender, args) => - { - var logger = Locator.Current.GetRequiredService(); - var ex = (Exception)args.ExceptionObject; + { + var logger = Locator.Current.GetRequiredService(); + var ex = (Exception)args.ExceptionObject; - logger.LogCritical($"Unhandled application error: {ex}"); - }; + logger.LogCritical($"Unhandled application error: {ex}"); + }; private static void RegisterDependencies() => Bootstrapper.Register(Locator.CurrentMutable, Locator.Current); @@ -69,4 +69,4 @@ public static AppBuilder BuildAvaloniaApp() .LogToTrace() .UseReactiveUI(); } -} +} \ No newline at end of file diff --git a/src/SecureElementReader.App/Properties/AssemblyInfo.cs b/src/SecureElementReader/Properties/AssemblyInfo.cs similarity index 100% rename from src/SecureElementReader.App/Properties/AssemblyInfo.cs rename to src/SecureElementReader/Properties/AssemblyInfo.cs diff --git a/src/SecureElementReader.App/Properties/Translations.EN.axaml b/src/SecureElementReader/Properties/Translations.EN.axaml similarity index 100% rename from src/SecureElementReader.App/Properties/Translations.EN.axaml rename to src/SecureElementReader/Properties/Translations.EN.axaml diff --git a/src/SecureElementReader.App/Properties/Translations.FR.axaml b/src/SecureElementReader/Properties/Translations.FR.axaml similarity index 100% rename from src/SecureElementReader.App/Properties/Translations.FR.axaml rename to src/SecureElementReader/Properties/Translations.FR.axaml diff --git a/src/SecureElementReader.App/Properties/Translations.SR.axaml b/src/SecureElementReader/Properties/Translations.SR.axaml similarity index 100% rename from src/SecureElementReader.App/Properties/Translations.SR.axaml rename to src/SecureElementReader/Properties/Translations.SR.axaml diff --git a/src/SecureElementReader.App/Proxies/TaxCoreApiProxy.cs b/src/SecureElementReader/Proxies/TaxCoreApiProxy.cs similarity index 97% rename from src/SecureElementReader.App/Proxies/TaxCoreApiProxy.cs rename to src/SecureElementReader/Proxies/TaxCoreApiProxy.cs index 0c0ee6d..654139f 100644 --- a/src/SecureElementReader.App/Proxies/TaxCoreApiProxy.cs +++ b/src/SecureElementReader/Proxies/TaxCoreApiProxy.cs @@ -1,7 +1,7 @@ using Newtonsoft.Json; -using SecureElementReader.App.Enpoints; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models; +using SecureElementReader.Enpoints; +using SecureElementReader.Interfaces; +using SecureElementReader.Models; using System; using System.Collections.Generic; using System.Linq; @@ -11,7 +11,7 @@ using System.Text; using System.Threading.Tasks; -namespace SecureElementReader.App.Proxies +namespace SecureElementReader.Proxies { public class TaxCoreApiProxy : ITaxCoreApiProxy { diff --git a/src/SecureElementReader/SecureElementReader.csproj b/src/SecureElementReader/SecureElementReader.csproj new file mode 100644 index 0000000..279c754 --- /dev/null +++ b/src/SecureElementReader/SecureElementReader.csproj @@ -0,0 +1,80 @@ + + + true + true + win-x64 + WinExe + net6.0 + enable + + copyused + true + Assets\taxcore.ico + SecureElementReader + SecureElementReader + com.dti + 1.3.0 + 0.3.0 + AAPL + ???? + SecureElementReader + logo.icns + NSApplication + true + + + + + + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + diff --git a/src/SecureElementReader.App/Services/ApduCommandService.cs b/src/SecureElementReader/Services/ApduCommandService.cs similarity index 97% rename from src/SecureElementReader.App/Services/ApduCommandService.cs rename to src/SecureElementReader/Services/ApduCommandService.cs index b6e1bd9..8a15288 100644 --- a/src/SecureElementReader.App/Services/ApduCommandService.cs +++ b/src/SecureElementReader/Services/ApduCommandService.cs @@ -1,9 +1,9 @@ using PCSC; using PCSC.Iso7816; -using SecureElementReader.App.Enums; -using SecureElementReader.App.Interfaces; +using SecureElementReader.Enums; +using SecureElementReader.Interfaces; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class ApduCommandService : IApduCommandService { diff --git a/src/SecureElementReader.App/Services/ApplicationCloser.cs b/src/SecureElementReader/Services/ApplicationCloser.cs similarity index 79% rename from src/SecureElementReader.App/Services/ApplicationCloser.cs rename to src/SecureElementReader/Services/ApplicationCloser.cs index 4a16888..955da18 100644 --- a/src/SecureElementReader.App/Services/ApplicationCloser.cs +++ b/src/SecureElementReader/Services/ApplicationCloser.cs @@ -1,8 +1,8 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; -using SecureElementReader.App.Interfaces; +using SecureElementReader.Interfaces; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class ApplicationCloser : IApplicationCloser { diff --git a/src/SecureElementReader.App/Services/AvaloniaDispatcher.cs b/src/SecureElementReader/Services/AvaloniaDispatcher.cs similarity index 81% rename from src/SecureElementReader.App/Services/AvaloniaDispatcher.cs rename to src/SecureElementReader/Services/AvaloniaDispatcher.cs index 73ec180..78a9d24 100644 --- a/src/SecureElementReader.App/Services/AvaloniaDispatcher.cs +++ b/src/SecureElementReader/Services/AvaloniaDispatcher.cs @@ -1,9 +1,9 @@ using Avalonia.Threading; -using SecureElementReader.App.Interfaces; +using SecureElementReader.Interfaces; using System; using System.Threading.Tasks; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class AvaloniaDispatcher : IApplicationDispatcher { diff --git a/src/SecureElementReader.App/Services/CardReaderService.cs b/src/SecureElementReader/Services/CardReaderService.cs similarity index 97% rename from src/SecureElementReader.App/Services/CardReaderService.cs rename to src/SecureElementReader/Services/CardReaderService.cs index 3cf09d2..65c8583 100644 --- a/src/SecureElementReader.App/Services/CardReaderService.cs +++ b/src/SecureElementReader/Services/CardReaderService.cs @@ -4,8 +4,8 @@ using Microsoft.Extensions.Logging; using PCSC; using PCSC.Iso7816; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models; +using SecureElementReader.Interfaces; +using SecureElementReader.Models; using System; using System.Collections.Generic; using System.IO; @@ -13,7 +13,7 @@ using System.Security.Cryptography.X509Certificates; using TaxCore.Libraries.Certificates; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class CardReaderService : ICardReaderService { @@ -134,6 +134,10 @@ private CertDetailsModel GetSeDetails(IIsoReader reader, CertDetailsModel model) { PopulateModel(c, model); } + else + { + model.CertificateType += " " + c.CertificateType.ToString(); + } model.SeVerify = c.Verify(); VerifyChain(c, model, false); model.SeReadSuccess = true; @@ -229,7 +233,7 @@ private void PopulateModel(Certificate c, CertDetailsModel model) model.OrganizationUnit = c.OrganizationUnit; model.StreetAddress = c.StreetAddress; model.RequestedBy = c.RequestedBy; - model.CertificateType = c.CertificateType; + model.CertificateType = c.CertificateType.ToString(); model.GivenName = c.GivenName; model.SurName = c.SurName; model.State = c.State; diff --git a/src/SecureElementReader.App/Services/DialogService.cs b/src/SecureElementReader/Services/DialogService.cs similarity index 92% rename from src/SecureElementReader.App/Services/DialogService.cs rename to src/SecureElementReader/Services/DialogService.cs index 9e59af3..f016f6f 100644 --- a/src/SecureElementReader.App/Services/DialogService.cs +++ b/src/SecureElementReader/Services/DialogService.cs @@ -1,18 +1,18 @@ using Avalonia; -using SecureElementReader.App.DependencyInjection; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.ViewModels; -using SecureElementReader.App.ViewModels.Implementations.Dialogs; -using SecureElementReader.App.ViewModels.Services; -using SecureElementReader.App.Views; -using SecureElementReader.App.Views.Dialogs; +using SecureElementReader.DependencyInjection; +using SecureElementReader.Interfaces; +using SecureElementReader.ViewModels; +using SecureElementReader.ViewModels.Implementations.Dialogs; +using SecureElementReader.ViewModels.Services; +using SecureElementReader.Views; +using SecureElementReader.Views.Dialogs; using Splat; using System; using System.Linq; using System.Reflection; using System.Threading.Tasks; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class DialogService : IDialogService { diff --git a/src/SecureElementReader.App/Services/LocalizationService.cs b/src/SecureElementReader/Services/LocalizationService.cs similarity index 72% rename from src/SecureElementReader.App/Services/LocalizationService.cs rename to src/SecureElementReader/Services/LocalizationService.cs index 9efb390..91d883a 100644 --- a/src/SecureElementReader.App/Services/LocalizationService.cs +++ b/src/SecureElementReader/Services/LocalizationService.cs @@ -1,8 +1,9 @@ -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models.Configurations; +using SecureElementReader.Interfaces; +using SecureElementReader.Models.Configurations; +using System; using System.IO; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class LocalizationService : ILocalizationService { @@ -17,7 +18,8 @@ public void SetAppSettingValue(string key, string value, string appSettingsJsonF { if (appSettingsJsonFilePath == null) { - appSettingsJsonFilePath = Path.Combine(System.AppContext.BaseDirectory, "appsettings.json"); + string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "SecureElementReader"); + appSettingsJsonFilePath = Path.Combine(path, "appsettings.json"); } var json = File.ReadAllText(appSettingsJsonFilePath); @@ -29,7 +31,5 @@ public void SetAppSettingValue(string key, string value, string appSettingsJsonF File.WriteAllText(appSettingsJsonFilePath, output); } - - } } diff --git a/src/SecureElementReader.App/Services/MainWindowProvider.cs b/src/SecureElementReader/Services/MainWindowProvider.cs similarity index 81% rename from src/SecureElementReader.App/Services/MainWindowProvider.cs rename to src/SecureElementReader/Services/MainWindowProvider.cs index d153f5d..47c781d 100644 --- a/src/SecureElementReader.App/Services/MainWindowProvider.cs +++ b/src/SecureElementReader/Services/MainWindowProvider.cs @@ -1,9 +1,9 @@ using Avalonia; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; -using SecureElementReader.App.Interfaces; +using SecureElementReader.Interfaces; -namespace SecureElementReader.App.Services +namespace SecureElementReader.Services { public class MainWindowProvider : IMainWindowProvider { diff --git a/src/SecureElementReader.App/ViewLocator.cs b/src/SecureElementReader/ViewLocator.cs similarity index 91% rename from src/SecureElementReader.App/ViewLocator.cs rename to src/SecureElementReader/ViewLocator.cs index 42fa002..3f08b4a 100644 --- a/src/SecureElementReader.App/ViewLocator.cs +++ b/src/SecureElementReader/ViewLocator.cs @@ -1,9 +1,9 @@ using Avalonia.Controls; using Avalonia.Controls.Templates; -using SecureElementReader.App.ViewModels; +using SecureElementReader.ViewModels; using System; -namespace SecureElementReader.App +namespace SecureElementReader { public class ViewLocator : IDataTemplate { diff --git a/src/SecureElementReader.App/ViewModels/AboutDialogViewModel.cs b/src/SecureElementReader/ViewModels/AboutDialogViewModel.cs similarity index 89% rename from src/SecureElementReader.App/ViewModels/AboutDialogViewModel.cs rename to src/SecureElementReader/ViewModels/AboutDialogViewModel.cs index f453d54..4688e78 100644 --- a/src/SecureElementReader.App/ViewModels/AboutDialogViewModel.cs +++ b/src/SecureElementReader/ViewModels/AboutDialogViewModel.cs @@ -1,10 +1,10 @@ using Microsoft.Extensions.PlatformAbstractions; using ReactiveUI; -using SecureElementReader.App.ViewModels.Implementations.Dialogs; +using SecureElementReader.ViewModels.Implementations.Dialogs; using System.Diagnostics; using System.Windows.Input; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class AboutDialogViewModel : DialogViewModelBase { diff --git a/src/SecureElementReader.App/ViewModels/CertDetailsViewModel.cs b/src/SecureElementReader/ViewModels/CertDetailsViewModel.cs similarity index 93% rename from src/SecureElementReader.App/ViewModels/CertDetailsViewModel.cs rename to src/SecureElementReader/ViewModels/CertDetailsViewModel.cs index e36e1a8..c5332f4 100644 --- a/src/SecureElementReader.App/ViewModels/CertDetailsViewModel.cs +++ b/src/SecureElementReader/ViewModels/CertDetailsViewModel.cs @@ -1,12 +1,12 @@ using ReactiveUI; using ReactiveUI.Fody.Helpers; -using SecureElementReader.App.Models; -using SecureElementReader.App.ViewModels.Interfaces; -using SecureElementReader.App.ViewModels.Services; +using SecureElementReader.Models; +using SecureElementReader.ViewModels.Interfaces; +using SecureElementReader.ViewModels.Services; using System.Threading.Tasks; using System.Windows.Input; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class CertDetailsViewModel : ViewModelBase, ICertDetailsViewModel { diff --git a/src/SecureElementReader.App/ViewModels/Implementations/Dialogs/DialogResultEventArgs.cs b/src/SecureElementReader/ViewModels/Implementations/Dialogs/DialogResultEventArgs.cs similarity index 77% rename from src/SecureElementReader.App/ViewModels/Implementations/Dialogs/DialogResultEventArgs.cs rename to src/SecureElementReader/ViewModels/Implementations/Dialogs/DialogResultEventArgs.cs index e3e75c0..8054491 100644 --- a/src/SecureElementReader.App/ViewModels/Implementations/Dialogs/DialogResultEventArgs.cs +++ b/src/SecureElementReader/ViewModels/Implementations/Dialogs/DialogResultEventArgs.cs @@ -1,6 +1,6 @@ using System; -namespace SecureElementReader.App.ViewModels.Implementations.Dialogs +namespace SecureElementReader.ViewModels.Implementations.Dialogs { public class DialogResultEventArgs : EventArgs { diff --git a/src/SecureElementReader.App/ViewModels/Implementations/Dialogs/DialogViewModelBase.cs b/src/SecureElementReader/ViewModels/Implementations/Dialogs/DialogViewModelBase.cs similarity index 82% rename from src/SecureElementReader.App/ViewModels/Implementations/Dialogs/DialogViewModelBase.cs rename to src/SecureElementReader/ViewModels/Implementations/Dialogs/DialogViewModelBase.cs index 37e35c4..ed72581 100644 --- a/src/SecureElementReader.App/ViewModels/Implementations/Dialogs/DialogViewModelBase.cs +++ b/src/SecureElementReader/ViewModels/Implementations/Dialogs/DialogViewModelBase.cs @@ -1,10 +1,10 @@ using ReactiveUI; -using SecureElementReader.App.Extensions; -using SecureElementReader.App.ViewModels.Services; +using SecureElementReader.Extensions; +using SecureElementReader.ViewModels.Services; using System; using System.Windows.Input; -namespace SecureElementReader.App.ViewModels.Implementations.Dialogs +namespace SecureElementReader.ViewModels.Implementations.Dialogs { public class DialogViewModelBase : ViewModelBase where TResult : DialogResultBase diff --git a/src/SecureElementReader.App/ViewModels/Implementations/Dialogs/ParameterizedDialogViewModelBase.cs b/src/SecureElementReader/ViewModels/Implementations/Dialogs/ParameterizedDialogViewModelBase.cs similarity index 87% rename from src/SecureElementReader.App/ViewModels/Implementations/Dialogs/ParameterizedDialogViewModelBase.cs rename to src/SecureElementReader/ViewModels/Implementations/Dialogs/ParameterizedDialogViewModelBase.cs index f866f27..f0015a9 100644 --- a/src/SecureElementReader.App/ViewModels/Implementations/Dialogs/ParameterizedDialogViewModelBase.cs +++ b/src/SecureElementReader/ViewModels/Implementations/Dialogs/ParameterizedDialogViewModelBase.cs @@ -1,8 +1,8 @@ -using SecureElementReader.App.ViewModels.Services; +using SecureElementReader.ViewModels.Services; using System.Threading; using System.Threading.Tasks; -namespace SecureElementReader.App.ViewModels.Implementations.Dialogs +namespace SecureElementReader.ViewModels.Implementations.Dialogs { public abstract class ParameterizedDialogViewModelBase : DialogViewModelBase where TResult : DialogResultBase diff --git a/src/SecureElementReader.App/ViewModels/Interfaces/ICertDetailsViewModel.cs b/src/SecureElementReader/ViewModels/Interfaces/ICertDetailsViewModel.cs similarity index 77% rename from src/SecureElementReader.App/ViewModels/Interfaces/ICertDetailsViewModel.cs rename to src/SecureElementReader/ViewModels/Interfaces/ICertDetailsViewModel.cs index 932f2ac..55e4879 100644 --- a/src/SecureElementReader.App/ViewModels/Interfaces/ICertDetailsViewModel.cs +++ b/src/SecureElementReader/ViewModels/Interfaces/ICertDetailsViewModel.cs @@ -1,7 +1,7 @@ -using SecureElementReader.App.Models; +using SecureElementReader.Models; using System.Windows.Input; -namespace SecureElementReader.App.ViewModels.Interfaces +namespace SecureElementReader.ViewModels.Interfaces { public interface ICertDetailsViewModel { diff --git a/src/SecureElementReader/ViewModels/Interfaces/IMainWindowViewModel.cs b/src/SecureElementReader/ViewModels/Interfaces/IMainWindowViewModel.cs new file mode 100644 index 0000000..1faae2f --- /dev/null +++ b/src/SecureElementReader/ViewModels/Interfaces/IMainWindowViewModel.cs @@ -0,0 +1,6 @@ +namespace SecureElementReader.ViewModels.Interfaces +{ + public interface IMainWindowViewModel + { + } +} diff --git a/src/SecureElementReader.App/ViewModels/Interfaces/IMenuViewModel.cs b/src/SecureElementReader/ViewModels/Interfaces/IMenuViewModel.cs similarity index 71% rename from src/SecureElementReader.App/ViewModels/Interfaces/IMenuViewModel.cs rename to src/SecureElementReader/ViewModels/Interfaces/IMenuViewModel.cs index 6e7301a..0766b53 100644 --- a/src/SecureElementReader.App/ViewModels/Interfaces/IMenuViewModel.cs +++ b/src/SecureElementReader/ViewModels/Interfaces/IMenuViewModel.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.ViewModels.Interfaces +namespace SecureElementReader.ViewModels.Interfaces { public interface IMenuViewModel { diff --git a/src/SecureElementReader.App/ViewModels/Interfaces/IVerificationInfoDialog.cs b/src/SecureElementReader/ViewModels/Interfaces/IVerificationInfoDialog.cs similarity index 80% rename from src/SecureElementReader.App/ViewModels/Interfaces/IVerificationInfoDialog.cs rename to src/SecureElementReader/ViewModels/Interfaces/IVerificationInfoDialog.cs index df93ec4..2730a24 100644 --- a/src/SecureElementReader.App/ViewModels/Interfaces/IVerificationInfoDialog.cs +++ b/src/SecureElementReader/ViewModels/Interfaces/IVerificationInfoDialog.cs @@ -1,6 +1,6 @@ using System.Windows.Input; -namespace SecureElementReader.App.ViewModels.Interfaces +namespace SecureElementReader.ViewModels.Interfaces { public interface IVerificationInfoDialog { diff --git a/src/SecureElementReader/ViewModels/LoadingViewModel.cs b/src/SecureElementReader/ViewModels/LoadingViewModel.cs new file mode 100644 index 0000000..3d1fb66 --- /dev/null +++ b/src/SecureElementReader/ViewModels/LoadingViewModel.cs @@ -0,0 +1,8 @@ +using SecureElementReader.ViewModels.Implementations.Dialogs; + +namespace SecureElementReader.ViewModels +{ + public class LoadingViewModel : DialogViewModelBase + { + } +} diff --git a/src/SecureElementReader.App/ViewModels/MainWindowViewModel.cs b/src/SecureElementReader/ViewModels/MainWindowViewModel.cs similarity index 97% rename from src/SecureElementReader.App/ViewModels/MainWindowViewModel.cs rename to src/SecureElementReader/ViewModels/MainWindowViewModel.cs index 679cc50..e1a4f8b 100644 --- a/src/SecureElementReader.App/ViewModels/MainWindowViewModel.cs +++ b/src/SecureElementReader/ViewModels/MainWindowViewModel.cs @@ -7,12 +7,12 @@ using Reactive.Bindings.Extensions; using ReactiveUI; using ReactiveUI.Fody.Helpers; -using SecureElementReader.App.Enums; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models; -using SecureElementReader.App.ViewModels.Interfaces; -using SecureElementReader.App.ViewModels.Services; -using SecureElementReader.App.Views; +using SecureElementReader.Enums; +using SecureElementReader.Interfaces; +using SecureElementReader.Models; +using SecureElementReader.ViewModels.Interfaces; +using SecureElementReader.ViewModels.Services; +using SecureElementReader.Views; using System; using System.Collections.Generic; using System.Linq; @@ -23,7 +23,7 @@ using System.Windows.Input; using MessageBoxAvaloniaEnums = MessageBox.Avalonia.Enums; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class MainWindowViewModel : ViewModelBase, IMainWindowViewModel { diff --git a/src/SecureElementReader.App/ViewModels/MenuViewModel.cs b/src/SecureElementReader/ViewModels/MenuViewModel.cs similarity index 87% rename from src/SecureElementReader.App/ViewModels/MenuViewModel.cs rename to src/SecureElementReader/ViewModels/MenuViewModel.cs index fde534c..525ca22 100644 --- a/src/SecureElementReader.App/ViewModels/MenuViewModel.cs +++ b/src/SecureElementReader/ViewModels/MenuViewModel.cs @@ -1,15 +1,15 @@ using Avalonia.Markup.Xaml.MarkupExtensions; using ReactiveUI; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models.Configurations; -using SecureElementReader.App.ViewModels.Interfaces; -using SecureElementReader.App.ViewModels.Services; +using SecureElementReader.Interfaces; +using SecureElementReader.Models.Configurations; +using SecureElementReader.ViewModels.Interfaces; +using SecureElementReader.ViewModels.Services; using System; using System.Linq; using System.Threading.Tasks; using System.Windows.Input; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class MenuViewModel : ViewModelBase, IMenuViewModel { @@ -54,7 +54,7 @@ public void Translate(string targetLanguage) App.Current.Resources.MergedDictionaries.Add( new ResourceInclude() { - Source = new Uri($"avares://SecureElementReader.App/Properties/Translations.{targetLanguage}.axaml") + Source = new Uri($"avares://SecureElementReader/Properties/Translations.{targetLanguage}.axaml") }); _localizationService.SetAppSettingValue(nameof(_configuration.Language), targetLanguage); diff --git a/src/SecureElementReader/ViewModels/Services/DialogResultBase.cs b/src/SecureElementReader/ViewModels/Services/DialogResultBase.cs new file mode 100644 index 0000000..a6a43ce --- /dev/null +++ b/src/SecureElementReader/ViewModels/Services/DialogResultBase.cs @@ -0,0 +1,6 @@ +namespace SecureElementReader.ViewModels.Services +{ + public class DialogResultBase + { + } +} diff --git a/src/SecureElementReader.App/ViewModels/Services/IDialogService.cs b/src/SecureElementReader/ViewModels/Services/IDialogService.cs similarity index 91% rename from src/SecureElementReader.App/ViewModels/Services/IDialogService.cs rename to src/SecureElementReader/ViewModels/Services/IDialogService.cs index 9609ddc..e3d2503 100644 --- a/src/SecureElementReader.App/ViewModels/Services/IDialogService.cs +++ b/src/SecureElementReader/ViewModels/Services/IDialogService.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace SecureElementReader.App.ViewModels.Services +namespace SecureElementReader.ViewModels.Services { public interface IDialogService { diff --git a/src/SecureElementReader.App/ViewModels/Services/NavigationParameterBase.cs b/src/SecureElementReader/ViewModels/Services/NavigationParameterBase.cs similarity index 50% rename from src/SecureElementReader.App/ViewModels/Services/NavigationParameterBase.cs rename to src/SecureElementReader/ViewModels/Services/NavigationParameterBase.cs index 2312036..55214e7 100644 --- a/src/SecureElementReader.App/ViewModels/Services/NavigationParameterBase.cs +++ b/src/SecureElementReader/ViewModels/Services/NavigationParameterBase.cs @@ -1,4 +1,4 @@ -namespace SecureElementReader.App.ViewModels.Services +namespace SecureElementReader.ViewModels.Services { public class NavigationParameterBase { diff --git a/src/SecureElementReader.App/ViewModels/VerificationInfoDialogViewModel.cs b/src/SecureElementReader/ViewModels/VerificationInfoDialogViewModel.cs similarity index 90% rename from src/SecureElementReader.App/ViewModels/VerificationInfoDialogViewModel.cs rename to src/SecureElementReader/ViewModels/VerificationInfoDialogViewModel.cs index 57f4c0a..efb47c3 100644 --- a/src/SecureElementReader.App/ViewModels/VerificationInfoDialogViewModel.cs +++ b/src/SecureElementReader/ViewModels/VerificationInfoDialogViewModel.cs @@ -1,10 +1,10 @@ using ReactiveUI; -using SecureElementReader.App.ViewModels.Implementations.Dialogs; -using SecureElementReader.App.ViewModels.Interfaces; +using SecureElementReader.ViewModels.Implementations.Dialogs; +using SecureElementReader.ViewModels.Interfaces; using System.Diagnostics; using System.Windows.Input; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class VerificationInfoDialogViewModel : DialogViewModelBase, IVerificationInfoDialog { diff --git a/src/SecureElementReader.App/ViewModels/VerifyPinDialogViewModel.cs b/src/SecureElementReader/ViewModels/VerifyPinDialogViewModel.cs similarity index 97% rename from src/SecureElementReader.App/ViewModels/VerifyPinDialogViewModel.cs rename to src/SecureElementReader/ViewModels/VerifyPinDialogViewModel.cs index d7f42d8..fab2a51 100644 --- a/src/SecureElementReader.App/ViewModels/VerifyPinDialogViewModel.cs +++ b/src/SecureElementReader/ViewModels/VerifyPinDialogViewModel.cs @@ -3,16 +3,16 @@ using MessageBox.Avalonia.DTO; using ReactiveUI; using ReactiveUI.Fody.Helpers; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models; -using SecureElementReader.App.ViewModels.Implementations.Dialogs; +using SecureElementReader.Interfaces; +using SecureElementReader.Models; +using SecureElementReader.ViewModels.Implementations.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Input; using MessageBoxAvaloniaEnums = MessageBox.Avalonia.Enums; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class VerifyPinDialogViewModel : DialogViewModelBase { diff --git a/src/SecureElementReader.App/ViewModels/ViewModelBase.cs b/src/SecureElementReader/ViewModels/ViewModelBase.cs similarity index 64% rename from src/SecureElementReader.App/ViewModels/ViewModelBase.cs rename to src/SecureElementReader/ViewModels/ViewModelBase.cs index 236cf33..f1dc0c5 100644 --- a/src/SecureElementReader.App/ViewModels/ViewModelBase.cs +++ b/src/SecureElementReader/ViewModels/ViewModelBase.cs @@ -1,6 +1,6 @@ using ReactiveUI; -namespace SecureElementReader.App.ViewModels +namespace SecureElementReader.ViewModels { public class ViewModelBase : ReactiveObject { diff --git a/src/SecureElementReader.App/Views/CertDetailsView.axaml b/src/SecureElementReader/Views/CertDetailsView.axaml similarity index 98% rename from src/SecureElementReader.App/Views/CertDetailsView.axaml rename to src/SecureElementReader/Views/CertDetailsView.axaml index 77410e6..c234890 100644 --- a/src/SecureElementReader.App/Views/CertDetailsView.axaml +++ b/src/SecureElementReader/Views/CertDetailsView.axaml @@ -2,8 +2,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:vm="clr-namespace:SecureElementReader.App.ViewModels" - x:Class="SecureElementReader.App.Views.CertDetailsView" + xmlns:vm="clr-namespace:SecureElementReader.ViewModels" + x:Class="SecureElementReader.Views.CertDetailsView" FontFamily="Highway Sans Pro"> diff --git a/src/SecureElementReader.App/Views/CertDetailsView.axaml.cs b/src/SecureElementReader/Views/CertDetailsView.axaml.cs similarity index 97% rename from src/SecureElementReader.App/Views/CertDetailsView.axaml.cs rename to src/SecureElementReader/Views/CertDetailsView.axaml.cs index 60946f3..8704088 100644 --- a/src/SecureElementReader.App/Views/CertDetailsView.axaml.cs +++ b/src/SecureElementReader/Views/CertDetailsView.axaml.cs @@ -2,12 +2,12 @@ using Avalonia.Controls; using Avalonia.Markup.Xaml; using Avalonia.Threading; -using SecureElementReader.App.Enums; -using SecureElementReader.App.ViewModels; +using SecureElementReader.Enums; +using SecureElementReader.ViewModels; using System; using System.Threading.Tasks; -namespace SecureElementReader.App.Views +namespace SecureElementReader.Views { public partial class CertDetailsView : UserControl { diff --git a/src/SecureElementReader.App/Views/Dialogs/AboutDialog.axaml b/src/SecureElementReader/Views/Dialogs/AboutDialog.axaml similarity index 94% rename from src/SecureElementReader.App/Views/Dialogs/AboutDialog.axaml rename to src/SecureElementReader/Views/Dialogs/AboutDialog.axaml index c81b72d..847df90 100644 --- a/src/SecureElementReader.App/Views/Dialogs/AboutDialog.axaml +++ b/src/SecureElementReader/Views/Dialogs/AboutDialog.axaml @@ -1,7 +1,7 @@ : Window where TResult : DialogResultBase diff --git a/src/SecureElementReader.App/Views/Dialogs/Loading.axaml b/src/SecureElementReader/Views/Dialogs/Loading.axaml similarity index 86% rename from src/SecureElementReader.App/Views/Dialogs/Loading.axaml rename to src/SecureElementReader/Views/Dialogs/Loading.axaml index 2c60566..c8ebc3d 100644 --- a/src/SecureElementReader.App/Views/Dialogs/Loading.axaml +++ b/src/SecureElementReader/Views/Dialogs/Loading.axaml @@ -3,7 +3,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="300" d:DesignHeight="200" - x:Class="SecureElementReader.App.Views.Dialogs.Loading" + x:Class="SecureElementReader.Views.Dialogs.Loading" Width="450" Height="200" Opacity="0.5" FontFamily="Highway Sans Pro"> diff --git a/src/SecureElementReader.App/Views/Dialogs/Loading.axaml.cs b/src/SecureElementReader/Views/Dialogs/Loading.axaml.cs similarity index 87% rename from src/SecureElementReader.App/Views/Dialogs/Loading.axaml.cs rename to src/SecureElementReader/Views/Dialogs/Loading.axaml.cs index b17a1c6..550bf1f 100644 --- a/src/SecureElementReader.App/Views/Dialogs/Loading.axaml.cs +++ b/src/SecureElementReader/Views/Dialogs/Loading.axaml.cs @@ -2,7 +2,7 @@ using Avalonia.Controls; using Avalonia.Markup.Xaml; -namespace SecureElementReader.App.Views.Dialogs +namespace SecureElementReader.Views.Dialogs { public partial class Loading : DialogWindowBase { diff --git a/src/SecureElementReader.App/Views/Dialogs/VerificationInfoDialog.axaml b/src/SecureElementReader/Views/Dialogs/VerificationInfoDialog.axaml similarity index 90% rename from src/SecureElementReader.App/Views/Dialogs/VerificationInfoDialog.axaml rename to src/SecureElementReader/Views/Dialogs/VerificationInfoDialog.axaml index 4fe1ff6..b9f8b06 100644 --- a/src/SecureElementReader.App/Views/Dialogs/VerificationInfoDialog.axaml +++ b/src/SecureElementReader/Views/Dialogs/VerificationInfoDialog.axaml @@ -3,8 +3,8 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" - xmlns:dialogs="clr-namespace:SecureElementReader.App.ViewModels" - x:Class="SecureElementReader.App.Views.Dialogs.VerificationInfoDialog" + xmlns:dialogs="clr-namespace:SecureElementReader.ViewModels" + x:Class="SecureElementReader.Views.Dialogs.VerificationInfoDialog" Width="500" Height="400" Background="#e8e8e8" ExtendClientAreaToDecorationsHint="True" diff --git a/src/SecureElementReader.App/Views/Dialogs/VerificationInfoDialog.axaml.cs b/src/SecureElementReader/Views/Dialogs/VerificationInfoDialog.axaml.cs similarity index 96% rename from src/SecureElementReader.App/Views/Dialogs/VerificationInfoDialog.axaml.cs rename to src/SecureElementReader/Views/Dialogs/VerificationInfoDialog.axaml.cs index 03702fa..1835225 100644 --- a/src/SecureElementReader.App/Views/Dialogs/VerificationInfoDialog.axaml.cs +++ b/src/SecureElementReader/Views/Dialogs/VerificationInfoDialog.axaml.cs @@ -2,9 +2,9 @@ using Avalonia.Controls; using Avalonia.Markup.Xaml; using Avalonia.Media; -using SecureElementReader.App.ViewModels.Interfaces; +using SecureElementReader.ViewModels.Interfaces; -namespace SecureElementReader.App.Views.Dialogs +namespace SecureElementReader.Views.Dialogs { public partial class VerificationInfoDialog : DialogWindowBase { diff --git a/src/SecureElementReader.App/Views/Dialogs/VerifyPinDialog.axaml b/src/SecureElementReader/Views/Dialogs/VerifyPinDialog.axaml similarity index 96% rename from src/SecureElementReader.App/Views/Dialogs/VerifyPinDialog.axaml rename to src/SecureElementReader/Views/Dialogs/VerifyPinDialog.axaml index 6882496..f72a31e 100644 --- a/src/SecureElementReader.App/Views/Dialogs/VerifyPinDialog.axaml +++ b/src/SecureElementReader/Views/Dialogs/VerifyPinDialog.axaml @@ -1,7 +1,7 @@ + Background="#e8e8e8" + FontFamily="Highway Sans Pro"> - + StrokeThickness="2" + Width="10" + Height="6"> - + - + - + diff --git a/src/SecureElementReader.App/Views/Titlebars/MacosTitleBar.axaml.cs b/src/SecureElementReader/Views/Titlebars/MacosTitleBar.axaml.cs similarity index 98% rename from src/SecureElementReader.App/Views/Titlebars/MacosTitleBar.axaml.cs rename to src/SecureElementReader/Views/Titlebars/MacosTitleBar.axaml.cs index dd1dcf9..7c6f916 100644 --- a/src/SecureElementReader.App/Views/Titlebars/MacosTitleBar.axaml.cs +++ b/src/SecureElementReader/Views/Titlebars/MacosTitleBar.axaml.cs @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; using System.Threading.Tasks; -namespace SecureElementReader.App.Views.Titlebars +namespace SecureElementReader.Views.Titlebars { public partial class MacosTitleBar : UserControl { diff --git a/src/SecureElementReader.App/Views/Titlebars/WindowsTitleBar.axaml b/src/SecureElementReader/Views/Titlebars/WindowsTitleBar.axaml similarity index 95% rename from src/SecureElementReader.App/Views/Titlebars/WindowsTitleBar.axaml rename to src/SecureElementReader/Views/Titlebars/WindowsTitleBar.axaml index 2406d82..446a2ff 100644 --- a/src/SecureElementReader.App/Views/Titlebars/WindowsTitleBar.axaml +++ b/src/SecureElementReader/Views/Titlebars/WindowsTitleBar.axaml @@ -2,8 +2,8 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - x:Class="SecureElementReader.App.Views.Titlebars.WindowsTitleBar" - xmlns:main="clr-namespace:SecureElementReader.App.Views" + x:Class="SecureElementReader.Views.Titlebars.WindowsTitleBar" + xmlns:main="clr-namespace:SecureElementReader.Views" DockPanel.Dock="Top"> diff --git a/src/SecureElementReader.App/Views/Titlebars/WindowsTitleBar.axaml.cs b/src/SecureElementReader/Views/Titlebars/WindowsTitleBar.axaml.cs similarity index 98% rename from src/SecureElementReader.App/Views/Titlebars/WindowsTitleBar.axaml.cs rename to src/SecureElementReader/Views/Titlebars/WindowsTitleBar.axaml.cs index 1525c6a..1bd4288 100644 --- a/src/SecureElementReader.App/Views/Titlebars/WindowsTitleBar.axaml.cs +++ b/src/SecureElementReader/Views/Titlebars/WindowsTitleBar.axaml.cs @@ -5,7 +5,7 @@ using System.Runtime.InteropServices; using System.Threading.Tasks; -namespace SecureElementReader.App.Views.Titlebars +namespace SecureElementReader.Views.Titlebars { public partial class WindowsTitleBar : UserControl { diff --git a/src/SecureElementReader.App/appsettings.json b/src/SecureElementReader/appsettings.json similarity index 100% rename from src/SecureElementReader.App/appsettings.json rename to src/SecureElementReader/appsettings.json diff --git a/test/SecureElementReader.App.Test/SecureElementReader.App.Test.csproj b/test/SecureElementReader.Test/SecureElementReader.Test.csproj similarity index 94% rename from test/SecureElementReader.App.Test/SecureElementReader.App.Test.csproj rename to test/SecureElementReader.Test/SecureElementReader.Test.csproj index 1c02804..9ee2282 100644 --- a/test/SecureElementReader.App.Test/SecureElementReader.App.Test.csproj +++ b/test/SecureElementReader.Test/SecureElementReader.Test.csproj @@ -36,7 +36,7 @@ - + diff --git a/test/SecureElementReader.App.Test/Services/CardReaderServiceTest.cs b/test/SecureElementReader.Test/Services/CardReaderServiceTest.cs similarity index 92% rename from test/SecureElementReader.App.Test/Services/CardReaderServiceTest.cs rename to test/SecureElementReader.Test/Services/CardReaderServiceTest.cs index 3189816..5a56a01 100644 --- a/test/SecureElementReader.App.Test/Services/CardReaderServiceTest.cs +++ b/test/SecureElementReader.Test/Services/CardReaderServiceTest.cs @@ -2,9 +2,9 @@ using Moq.AutoMock; using PCSC; using PCSC.Iso7816; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.Models; -using SecureElementReader.App.Services; +using SecureElementReader.Interfaces; +using SecureElementReader.Models; +using SecureElementReader.Services; using System; using System.Collections.Generic; using System.Linq; @@ -12,7 +12,7 @@ using System.Threading.Tasks; using Xunit; -namespace SecureElementReader.App.Test.Services +namespace SecureElementReader.Test.Services { public class CardReaderServiceTest { diff --git a/test/SecureElementReader.App.Test/Usings.cs b/test/SecureElementReader.Test/Usings.cs similarity index 100% rename from test/SecureElementReader.App.Test/Usings.cs rename to test/SecureElementReader.Test/Usings.cs diff --git a/test/SecureElementReader.App.Test/ViewModels/AboutDialogViewModelTests.cs b/test/SecureElementReader.Test/ViewModels/AboutDialogViewModelTests.cs similarity index 70% rename from test/SecureElementReader.App.Test/ViewModels/AboutDialogViewModelTests.cs rename to test/SecureElementReader.Test/ViewModels/AboutDialogViewModelTests.cs index ab4aaf2..73733e7 100644 --- a/test/SecureElementReader.App.Test/ViewModels/AboutDialogViewModelTests.cs +++ b/test/SecureElementReader.Test/ViewModels/AboutDialogViewModelTests.cs @@ -1,13 +1,8 @@ using Moq.AutoMock; -using SecureElementReader.App.ViewModels; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using SecureElementReader.ViewModels; using Xunit; -namespace SecureElementReader.App.Test.ViewModels +namespace SecureElementReader.Test.ViewModels { public class AboutDialogViewModelTests { diff --git a/test/SecureElementReader.App.Test/ViewModels/MenuViewModelTests.cs b/test/SecureElementReader.Test/ViewModels/MenuViewModelTests.cs similarity index 63% rename from test/SecureElementReader.App.Test/ViewModels/MenuViewModelTests.cs rename to test/SecureElementReader.Test/ViewModels/MenuViewModelTests.cs index 777e9d3..73bb6de 100644 --- a/test/SecureElementReader.App.Test/ViewModels/MenuViewModelTests.cs +++ b/test/SecureElementReader.Test/ViewModels/MenuViewModelTests.cs @@ -1,15 +1,11 @@ using Moq; -using SecureElementReader.App.Interfaces; -using SecureElementReader.App.ViewModels; -using SecureElementReader.App.ViewModels.Services; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using SecureElementReader.Interfaces; +using SecureElementReader.Models.Configurations; +using SecureElementReader.ViewModels; +using SecureElementReader.ViewModels.Services; using Xunit; -namespace SecureElementReader.App.Test.ViewModels +namespace SecureElementReader.Test.ViewModels { public class MenuViewModelTests { @@ -17,11 +13,14 @@ public class MenuViewModelTests public void TestAppClosing() { var applicationCloserMock = new Mock(); + var localizationServiceMock = new Mock(); + var configurationMock = new Mock(); + applicationCloserMock .Setup(m => m.CloseApp()) .Verifiable(); var dialogServiceMock = new Mock(); - var menuViewModel = new MenuViewModel(applicationCloserMock.Object, dialogServiceMock.Object); + var menuViewModel = new MenuViewModel(applicationCloserMock.Object, dialogServiceMock.Object, localizationServiceMock.Object, configurationMock.Object); Assert.True(menuViewModel.ExitCommand.CanExecute(null)); menuViewModel.ExitCommand.Execute(null); @@ -34,15 +33,17 @@ public void TestAboutDialogOpening() { var applicationCloserMock = new Mock(); var dialogServiceMock = new Mock(); + var localizationServiceMock = new Mock(); + var configurationMock = new Mock(); dialogServiceMock .Setup(m => m.ShowDialogAsync(nameof(AboutDialogViewModel))) .Verifiable(); - var menuViewModel = new MenuViewModel(applicationCloserMock.Object, dialogServiceMock.Object); + var menuViewModel = new MenuViewModel(applicationCloserMock.Object, dialogServiceMock.Object, localizationServiceMock.Object, configurationMock.Object); Assert.True(menuViewModel.AboutCommand.CanExecute(null)); menuViewModel.AboutCommand.Execute(null); dialogServiceMock.Verify(m => m.ShowDialogAsync(nameof(AboutDialogViewModel)), Times.Once()); - } + } } -} +} \ No newline at end of file