mirror of
https://github.com/TanelOrumaa/Estonian-ID-card-mobile-authenticator-POC.git
synced 2025-08-30 15:20:58 +03:00
Compare commits
1 Commits
compatibil
...
iteration4
Author | SHA1 | Date | |
---|---|---|---|
|
b565f6846d |
@@ -20,14 +20,11 @@ import androidx.fragment.app.Fragment
|
|||||||
import androidx.fragment.app.activityViewModels
|
import androidx.fragment.app.activityViewModels
|
||||||
import androidx.navigation.fragment.findNavController
|
import androidx.navigation.fragment.findNavController
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.koushikdutta.ion.Ion
|
|
||||||
import com.tarkvaraprojekt.mobileauthapp.NFC.Comms
|
import com.tarkvaraprojekt.mobileauthapp.NFC.Comms
|
||||||
import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentHomeBinding
|
import com.tarkvaraprojekt.mobileauthapp.databinding.FragmentHomeBinding
|
||||||
import com.tarkvaraprojekt.mobileauthapp.model.ParametersViewModel
|
import com.tarkvaraprojekt.mobileauthapp.model.ParametersViewModel
|
||||||
import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel
|
import com.tarkvaraprojekt.mobileauthapp.model.SmartCardViewModel
|
||||||
import java.lang.Exception
|
import java.lang.Exception
|
||||||
import java.lang.RuntimeException
|
|
||||||
import java.net.URL
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* HomeFragment is only shown to the user when then the user launches the application. When the application
|
* HomeFragment is only shown to the user when then the user launches the application. When the application
|
||||||
@@ -107,42 +104,15 @@ class HomeFragment : Fragment() {
|
|||||||
intentParams.setChallenge(requireActivity().intent.getStringExtra("challenge")!!)
|
intentParams.setChallenge(requireActivity().intent.getStringExtra("challenge")!!)
|
||||||
intentParams.setAuthUrl(requireActivity().intent.getStringExtra("authUrl")!!)
|
intentParams.setAuthUrl(requireActivity().intent.getStringExtra("authUrl")!!)
|
||||||
intentParams.setOrigin(requireActivity().intent.getStringExtra("originUrl")!!)
|
intentParams.setOrigin(requireActivity().intent.getStringExtra("originUrl")!!)
|
||||||
goToTheNextFragment(mobile)
|
|
||||||
} else { //Website
|
} else { //Website
|
||||||
/*
|
|
||||||
var challenge = requireActivity().intent.data!!.getQueryParameter("challenge")!!
|
var challenge = requireActivity().intent.data!!.getQueryParameter("challenge")!!
|
||||||
// TODO: Since due to encoding plus gets converted to space, temporary solution is to replace it back.
|
// TODO: Since due to encoding plus gets converted to space, temporary solution is to replace it back.
|
||||||
challenge = challenge.replace(" ", "+")
|
challenge = challenge.replace(" ", "+")
|
||||||
intentParams.setChallenge(challenge)
|
intentParams.setChallenge(challenge)
|
||||||
intentParams.setAuthUrl(requireActivity().intent.data!!.getQueryParameter("authUrl")!!)
|
intentParams.setAuthUrl(requireActivity().intent.data!!.getQueryParameter("authUrl")!!)
|
||||||
intentParams.setOrigin(requireActivity().intent.data!!.getQueryParameter("originUrl")!!)
|
intentParams.setOrigin(requireActivity().intent.data!!.getQueryParameter("originUrl")!!)
|
||||||
*/
|
}
|
||||||
var getAuthChallengeUrl = requireActivity().intent.data!!.getQueryParameter("getAuthChallengeUrl")!!
|
|
||||||
getAuthChallengeUrl = getAuthChallengeUrl.substring(1, getAuthChallengeUrl.length - 1)
|
|
||||||
var postAuthTokenUrl = requireActivity().intent.data!!.getQueryParameter("postAuthTokenUrl")!!
|
|
||||||
postAuthTokenUrl = postAuthTokenUrl.substring(1, postAuthTokenUrl.length - 1)
|
|
||||||
val headers = requireActivity().intent.data!!.getQueryParameter("headers")!!
|
|
||||||
intentParams.setAuthUrl(postAuthTokenUrl)
|
|
||||||
val address = "https://" + URL(getAuthChallengeUrl).host
|
|
||||||
intentParams.setOrigin(address)
|
|
||||||
intentParams.setHeaders(headers)
|
|
||||||
Ion.getDefault(activity).conscryptMiddleware.enable(false)
|
|
||||||
Ion.with(activity)
|
|
||||||
.load(getAuthChallengeUrl)
|
|
||||||
.asJsonObject()
|
|
||||||
.setCallback { _, result ->
|
|
||||||
try {
|
|
||||||
// Get data from the result and call launchAuth method
|
|
||||||
val challenge = result.asJsonObject["nonce"].toString().replace("\"", "")
|
|
||||||
intentParams.setChallenge(challenge)
|
|
||||||
goToTheNextFragment(mobile)
|
goToTheNextFragment(mobile)
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.i("GETrequest", "was unsuccessful")
|
|
||||||
throw RuntimeException()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
// There was a problem with parameters, which means that authentication is not possible.
|
// There was a problem with parameters, which means that authentication is not possible.
|
||||||
// In that case we will cancel the authentication immediately as it would be waste of the user's time to carry on
|
// In that case we will cancel the authentication immediately as it would be waste of the user's time to carry on
|
||||||
|
@@ -16,9 +16,6 @@ class ParametersViewModel: ViewModel() {
|
|||||||
private var _origin: String = ""
|
private var _origin: String = ""
|
||||||
val origin get() = _origin
|
val origin get() = _origin
|
||||||
|
|
||||||
private var _headers: String = ""
|
|
||||||
val headers get() =_headers
|
|
||||||
|
|
||||||
fun setChallenge(newChallenge: String) {
|
fun setChallenge(newChallenge: String) {
|
||||||
_challenge = newChallenge
|
_challenge = newChallenge
|
||||||
}
|
}
|
||||||
@@ -34,8 +31,4 @@ class ParametersViewModel: ViewModel() {
|
|||||||
fun setOrigin(newOrigin: String) {
|
fun setOrigin(newOrigin: String) {
|
||||||
_origin = newOrigin
|
_origin = newOrigin
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setHeaders(newHeaders: String) {
|
|
||||||
_headers = newHeaders
|
|
||||||
}
|
|
||||||
}
|
}
|
@@ -11,7 +11,6 @@ import androidx.activity.result.contract.ActivityResultContracts
|
|||||||
import com.example.testmobileapp.databinding.ActivityMainBinding
|
import com.example.testmobileapp.databinding.ActivityMainBinding
|
||||||
import com.koushikdutta.ion.Ion
|
import com.koushikdutta.ion.Ion
|
||||||
import org.json.JSONObject
|
import org.json.JSONObject
|
||||||
import java.net.URL
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Base url where the requests should be made. Add yours here. It must use https.
|
* Base url where the requests should be made. Add yours here. It must use https.
|
||||||
@@ -32,7 +31,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
Log.i("myLoggingStuff", URL("https://www.google.ee/?hl=et").host.toString())
|
|
||||||
authLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { response ->
|
authLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { response ->
|
||||||
if (response.resultCode == Activity.RESULT_OK) {
|
if (response.resultCode == Activity.RESULT_OK) {
|
||||||
binding.loginTextView.text = getString(R.string.auth_success)
|
binding.loginTextView.text = getString(R.string.auth_success)
|
||||||
|
1
demoBackend/src/demo-website/dist/css/app.eb039c1f.css
vendored
Normal file
1
demoBackend/src/demo-website/dist/css/app.eb039c1f.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}#nav{padding:30px}#nav a{font-weight:700;color:#2c3e50}#nav a.router-link-exact-active{color:#42b983}.container>div[data-v-2dcb24ca]{margin-top:2vh}.loginButton[data-v-2dcb24ca]{height:4vh;width:20vh;line-height:3vh}.loginButton>p[data-v-2dcb24ca]{font-size:3vh;text-align:center}#canvas[data-v-2dcb24ca]{height:30vh;width:30vh}nav[data-v-21165a6a]{height:5vh}div[data-v-cd8fea1a]{margin-top:2vh}
|
7
demoBackend/src/demo-website/dist/css/chunk-vendors.a251e031.css
vendored
Normal file
7
demoBackend/src/demo-website/dist/css/chunk-vendors.a251e031.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
demoBackend/src/demo-website/dist/favicon.ico
vendored
Normal file
BIN
demoBackend/src/demo-website/dist/favicon.ico
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
1
demoBackend/src/demo-website/dist/index.html
vendored
Normal file
1
demoBackend/src/demo-website/dist/index.html
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>demo-website</title><link href="/css/app.eb039c1f.css" rel="preload" as="style"><link href="/css/chunk-vendors.a251e031.css" rel="preload" as="style"><link href="/js/app.c2a68e49.js" rel="preload" as="script"><link href="/js/chunk-vendors.22b03028.js" rel="preload" as="script"><link href="/css/chunk-vendors.a251e031.css" rel="stylesheet"><link href="/css/app.eb039c1f.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but demo-website doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.22b03028.js"></script><script src="/js/app.c2a68e49.js"></script></body></html>
|
4
demoBackend/src/demo-website/dist/js/app.c2a68e49.js
vendored
Normal file
4
demoBackend/src/demo-website/dist/js/app.c2a68e49.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
demoBackend/src/demo-website/dist/js/app.c2a68e49.js.map
vendored
Normal file
1
demoBackend/src/demo-website/dist/js/app.c2a68e49.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
27
demoBackend/src/demo-website/dist/js/chunk-vendors.22b03028.js
vendored
Normal file
27
demoBackend/src/demo-website/dist/js/chunk-vendors.22b03028.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
demoBackend/src/demo-website/dist/js/chunk-vendors.22b03028.js.map
vendored
Normal file
1
demoBackend/src/demo-website/dist/js/chunk-vendors.22b03028.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user