Skip to content

Commit

Permalink
IVXV Android Verification Application RC 0.9
Browse files Browse the repository at this point in the history
  • Loading branch information
svenheiberg committed Sep 5, 2017
1 parent 219af1b commit 20e64ed
Show file tree
Hide file tree
Showing 102 changed files with 6,892 additions and 7,688 deletions.
683 changes: 9 additions & 674 deletions LICENSE

Large diffs are not rendered by default.

15 changes: 1 addition & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,4 @@ Android based vote verification application for Estonian i-voting system

The intention behind this repository is to make source code of the official i-vote verification application for Estonian internet-voting system available for public review.

The repository is not used for active development, but will be kept up to date, so the code that can be found here is the code that is used for election. As the voting system used for legally binding elections must strictly follow the legislation, the actual development of Estonian i-voting system and i-vote verification application is supervised by National Electoral Committee (NEC) and Internet Voting Committee (www.vvk.ee). The software vendor of i-vote verification application is AS Finestmedia (www.finestmedia.ee).

Additional information on the source code can be found on the NEC website: http://www.vvk.ee/valijale/e-haaletamine/

Those, who are not familiar with Estonian language may refer to the following website, which contains subset of the information in English: http://www.vvk.ee/voting-methods-in-estonia/

Notes for testers and developers:

The verification application downloads its configuration in JSON format from configuration server. The URL of the config server is stored as a single line in config.txt file in res/raw/config.txt

config.txt:
https:// config-server URL /config.json

The verification application uses HTTPS protocol and verifies the server certificate. All certificates required to verify server certificate have to be stored in BouncyCastle format keystore in res/raw/mytruststore.bks
The repository is not used for active development, but will be kept up to date, so the code that can be found here is the code that is used for election. As the voting system used for legally binding elections must strictly follow the legislation, the actual development of Estonian i-voting system and i-vote verification application is supervised by Estonian State Electoral Office (ESEO, www.valimised.ee). Please refer to www.valimised.ee for further information.
32 changes: 32 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
useLibrary 'org.apache.http.legacy'

defaultConfig {
applicationId "ee.ivxv.ivotingverification"
minSdkVersion 16
targetSdkVersion 26
versionCode 16
versionName "3.1.3"
}

buildTypes {
release {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile files('libs/zxing_core-3.1.0.jar')
compile files('libs/xom-1.2.10.jar')
compile 'com.android.support:appcompat-v7:26.0.1'
compile 'com.madgag.spongycastle:core:1.56.0.0'
compile 'com.madgag.spongycastle:prov:1.56.0.0'
compile 'com.madgag.spongycastle:pkix:1.54.0.0'
}
22 changes: 22 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/marek/Downloads/android-sdk-linux/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-keep class org.spongycastle.** {*;}
-dontwarn javax.naming.**
-dontwarn com.sun.org.apache.xerces.**
-dontwarn org.apache.xerces.**
-dontwarn nu.xom.JDK15XML1_0Parser
170 changes: 76 additions & 94 deletions AndroidManifest.xml → app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,94 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2013 Eesti Vabariigi Valimiskomisjon
(Estonian National Electoral Committee), www.vvk.ee
Written in 2013 by AS Finestmedia, www.finestmedia.ee
Vote-verification application for Estonian Internet voting system
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ee.vvk.ivotingverification"
android:versionCode="8"
android:versionName="2.0.2" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />


<uses-feature android:name="android.hardware.camera" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />

<application
android:icon="@drawable/icon"
android:allowBackup="false"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".QRScannerActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:stateNotNeeded="true"
android:windowSoftInputMode="adjustPan" >
</activity>
<activity
android:name=".VoteDownloadActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".VoteActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ErrorActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".BruteForceActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".HelpActivity"
android:screenOrientation="portrait" >
</activity>
</application>

</manifest>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ee.vvk.ivotingverification" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />


<uses-feature android:name="android.hardware.camera" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />

<application
android:icon="@drawable/icon"
android:allowBackup="false"
android:label="@string/app_name" >
<activity
android:name=".PermissionActivity"
android:configChanges="orientation|keyboardHidden"
android:excludeFromRecents="true"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".QRScannerActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:stateNotNeeded="true"
android:windowSoftInputMode="adjustPan" >
</activity>
<activity
android:name=".VoteDownloadActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".VoteActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:noHistory="true" >
</activity>
<activity
android:name=".ErrorActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".BruteForceActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="portrait"
android:noHistory="true" >
</activity>
<activity
android:name=".HelpActivity"
android:theme="@style/HelpTheme"
android:screenOrientation="portrait" >
</activity>
</application>

</manifest>
Loading

0 comments on commit 20e64ed

Please sign in to comment.