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