├── android-projects ├── Virtual_Keycard │ ├── settings.gradle │ ├── .directory │ ├── app │ │ ├── ic_launcher-web.png │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── drawable-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── drawable-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values │ │ │ │ │ │ ├── dimens.xml │ │ │ │ │ │ ├── styles.xml │ │ │ │ │ │ └── strings.xml │ │ │ │ │ ├── values-v11 │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── xml │ │ │ │ │ │ └── apduservice.xml │ │ │ │ │ ├── menu │ │ │ │ │ │ ├── ask_for_ok.xml │ │ │ │ │ │ ├── main.xml │ │ │ │ │ │ ├── create_pin_persistent.xml │ │ │ │ │ │ └── last_login_try_with_gui.xml │ │ │ │ │ ├── values-w820dp │ │ │ │ │ │ └── dimens.xml │ │ │ │ │ ├── values-v14 │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── layout │ │ │ │ │ │ ├── activity_last_login_try_with_gui.xml │ │ │ │ │ │ ├── activity_main.xml │ │ │ │ │ │ └── activity_create_pin_persistent.xml │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── de │ │ │ │ │ └── nellessen │ │ │ │ │ └── virtual_keycard │ │ │ │ │ ├── LastLoginTryWithGUIActivity.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ └── CreatePinPersistent.java │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── de │ │ │ │ └── nellessen │ │ │ │ └── virtual_keycard │ │ │ │ └── MainActivityTest.java │ │ └── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── .classpath │ ├── build.gradle │ ├── .project │ ├── gradlew.bat │ └── gradlew ├── Muscle_Card_on_Android │ ├── settings.gradle │ ├── .directory │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── app │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── drawable-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── drawable-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ ├── values │ │ │ │ │ │ ├── dimens.xml │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── values-v11 │ │ │ │ │ │ └── styles.xml │ │ │ │ │ ├── xml │ │ │ │ │ │ └── apduservice.xml │ │ │ │ │ ├── menu │ │ │ │ │ │ └── ask_for_ok.xml │ │ │ │ │ ├── values-w820dp │ │ │ │ │ │ └── dimens.xml │ │ │ │ │ └── values-v14 │ │ │ │ │ │ └── styles.xml │ │ │ │ ├── java │ │ │ │ │ ├── de │ │ │ │ │ │ └── nellessen │ │ │ │ │ │ │ ├── muscle_card_on_android │ │ │ │ │ │ │ ├── AskForOk.java │ │ │ │ │ │ │ ├── LastLoginTryWithGUI.java │ │ │ │ │ │ │ └── processCommandApduWrapper.java │ │ │ │ │ │ │ └── pace_on_android │ │ │ │ │ │ │ └── Pace.java │ │ │ │ │ ├── javax │ │ │ │ │ │ └── smartcardio │ │ │ │ │ │ │ ├── ResponseAPDU.java │ │ │ │ │ │ │ └── CommandAPDU.java │ │ │ │ │ └── com │ │ │ │ │ │ └── musclecard │ │ │ │ │ │ └── CardEdge │ │ │ │ │ │ ├── ObjectManager.src │ │ │ │ │ │ ├── MemoryManager.src │ │ │ │ │ │ ├── MemoryManager.java │ │ │ │ │ │ └── ObjectManager.java │ │ │ │ └── AndroidManifest.xml │ │ │ └── test │ │ │ │ └── java │ │ │ │ └── de │ │ │ │ └── nellessen │ │ │ │ └── muscle_card_on_android │ │ │ │ └── MSCHostApduServiceTest.java │ │ └── build.gradle │ ├── .classpath │ ├── build.gradle │ ├── .project │ ├── gradlew.bat │ └── gradlew ├── .directory └── jacoco.gradle ├── overview.dia ├── overview.png ├── .gitmodules ├── .gitignore ├── opensc-files ├── opensc.conf.patch ├── virtualkeycard.profile └── pkcs15-virtualkeycard.c ├── README.md ├── Makefile └── .gitlab-ci.yml /android-projects/Virtual_Keycard/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /android-projects/.directory: -------------------------------------------------------------------------------- 1 | [Dolphin] 2 | Timestamp=2015,4,15,19,29,45 3 | Version=3 4 | -------------------------------------------------------------------------------- /overview.dia: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/overview.dia -------------------------------------------------------------------------------- /overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/overview.png -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/.directory: -------------------------------------------------------------------------------- 1 | [Dolphin] 2 | Timestamp=2015,4,15,19,51,53 3 | Version=3 4 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/.directory: -------------------------------------------------------------------------------- 1 | [Dolphin] 2 | Timestamp=2015,4,15,19,28,50 3 | Version=3 4 | 5 | [Settings] 6 | HiddenFilesShown=true 7 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Virtual_Keycard/app/ic_launcher-web.png -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Virtual_Keycard/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Muscle_Card_on_Android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Virtual_Keycard/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Virtual_Keycard/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Virtual_Keycard/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/drawable-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Virtual_Keycard/app/src/main/res/drawable-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Muscle_Card_on_Android/app/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Muscle_Card_on_Android/app/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/java/de/nellessen/muscle_card_on_android/AskForOk.java: -------------------------------------------------------------------------------- 1 | package de.nellessen.muscle_card_on_android; 2 | 3 | public interface AskForOk { 4 | public boolean askForOk(String data); 5 | } 6 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/eriknellessen/Virtual-Keycard/HEAD/android-projects/Muscle_Card_on_Android/app/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/java/de/nellessen/muscle_card_on_android/LastLoginTryWithGUI.java: -------------------------------------------------------------------------------- 1 | package de.nellessen.muscle_card_on_android; 2 | 3 | public interface LastLoginTryWithGUI { 4 | public void lastLoginTryWithGUI(int loginTriesLeft, int unblockTriesLeft); 5 | } 6 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.0.2-bin.zip 6 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 16dp 6 | 7 | 8 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jan 21 14:35:21 CET 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.0.2-bin.zip 7 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "android-projects/npa-emulator"] 2 | path = android-projects/npa-emulator 3 | url = https://github.com/eriknellessen/npa-emulator.git 4 | [submodule "openpace"] 5 | path = openpace 6 | url = https://github.com/frankmorgner/openpace.git 7 | [submodule "vsmartcard"] 8 | path = vsmartcard 9 | url = https://github.com/frankmorgner/vsmartcard.git 10 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/values-v11/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/xml/apduservice.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/xml/apduservice.xml: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/menu/ask_for_ok.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 64dp 9 | 10 | 11 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/menu/ask_for_ok.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 64dp 9 | 10 | 11 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/menu/create_pin_persistent.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/menu/last_login_try_with_gui.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/values-v14/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Muscle_Card_on_Android 5 | Is supposed to handle the APDUs coming in and sending responses 6 | Should be the proper AID for my usecase. 7 | AskForOk 8 | Hello world! 9 | Settings 10 | 11 | 12 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | 38 | # Keystore files 39 | *.jks 40 | 41 | # Build artifacts from building the C part 42 | include/ 43 | lib/ 44 | share/ 45 | ssl/ 46 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/java/de/nellessen/muscle_card_on_android/processCommandApduWrapper.java: -------------------------------------------------------------------------------- 1 | package de.nellessen.muscle_card_on_android; 2 | 3 | import android.nfc.cardemulation.HostApduService; 4 | import android.os.Bundle; 5 | 6 | public class processCommandApduWrapper extends HostApduService { 7 | MSCHostApduService MyHostApduService; 8 | 9 | public processCommandApduWrapper(){ 10 | this.MyHostApduService = MSCHostApduService.getInstance(); 11 | } 12 | 13 | @Override 14 | public byte[] processCommandApdu(byte[] apdu, Bundle extras) { 15 | return MyHostApduService.processCommandApdu(apdu, null); 16 | } 17 | 18 | @Override 19 | public void onDeactivated(int reason) { 20 | 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | task wrapper(type: Wrapper) { 4 | gradleVersion = '4.0.2' 5 | } 6 | 7 | buildscript { 8 | repositories { 9 | mavenCentral() 10 | } 11 | dependencies { 12 | classpath 'com.android.tools.build:gradle:2.3.0' 13 | 14 | // NOTE: Do not place your application dependencies here; they belong 15 | // in the individual module build.gradle files 16 | } 17 | } 18 | 19 | allprojects { 20 | repositories { 21 | mavenCentral() 22 | google() 23 | } 24 | } 25 | 26 | task clean(type: Delete) { 27 | delete rootProject.buildDir 28 | } 29 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | task wrapper(type: Wrapper) { 4 | gradleVersion = '4.0.2' 5 | } 6 | 7 | buildscript { 8 | repositories { 9 | mavenCentral() 10 | } 11 | dependencies { 12 | classpath 'com.android.tools.build:gradle:2.3.0' 13 | 14 | // NOTE: Do not place your application dependencies here; they belong 15 | // in the individual module build.gradle files 16 | } 17 | } 18 | 19 | allprojects { 20 | repositories { 21 | mavenCentral() 22 | google() 23 | } 24 | } 25 | 26 | task clean(type: Delete) { 27 | delete rootProject.buildDir 28 | } 29 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 14 | 15 | 16 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Virtual_Keycard 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /android-projects/Muscle_Card_on_Android/.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Muscle_Card_on_Android 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Virtual Keycard 5 | Settings 6 | Status of Virtual Keycard 7 | Refresh! 8 | Create Pin Persistent 9 | Create new PIN 10 | New PIN: 11 | New PIN again: 12 | Unblock PIN: 13 | Unblock PIN again: 14 | Max attempts: 15 | Set PIN! 16 | Login / Unblock 17 | Login / Unblock 18 | 19 | -------------------------------------------------------------------------------- /android-projects/Virtual_Keycard/app/src/main/res/layout/activity_last_login_try_with_gui.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 14 | 15 | 21 | 22 | 23 | 24 |