From d81a878d8f470e6d423fbc1cc0e4b460c7e54a44 Mon Sep 17 00:00:00 2001 From: BuddahLD Date: Thu, 23 Jan 2020 16:45:52 +0200 Subject: [PATCH 1/6] Fixed a `group.add` bug, added the STE_86 test --- .../android/common/worker/GroupTests.kt | 13 +++++++++++++ .../android/common/manager/GroupManager.kt | 6 ++++-- .../virgilsecurity/android/common/model/Group.kt | 9 ++++----- .../common/storage/local/FileGroupStorage.kt | 11 +++++++++++ 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/ethree-common/src/androidTest/java/com/virgilsecurity/android/common/worker/GroupTests.kt b/ethree-common/src/androidTest/java/com/virgilsecurity/android/common/worker/GroupTests.kt index e88647f6..0ee81867 100644 --- a/ethree-common/src/androidTest/java/com/virgilsecurity/android/common/worker/GroupTests.kt +++ b/ethree-common/src/androidTest/java/com/virgilsecurity/android/common/worker/GroupTests.kt @@ -713,6 +713,19 @@ class GroupTests { ethree.deleteGroup(fakeId).execute() } + // test021 STE_86 + @Test fun add_participants() { + val ethree2 = createEThree() + + val identifier = UUID.randomUUID().toString() + val group = this.ethree.createGroup(identifier).get() + val card2 = ethree.findUser(ethree2.identity).get() + group.add(card2).execute() + val cachedGroup = this.ethree.getGroup(identifier)!! + + assertEquals(cachedGroup.participants.toSet(), setOf(ethree.identity, ethree2.identity)) + } + private fun createEThree(): EThree { val identity = UUID.randomUUID().toString() val tokenCallback = object : OnGetTokenCallback { diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/manager/GroupManager.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/manager/GroupManager.kt index 726e404d..a8e822f7 100644 --- a/ethree-common/src/main/java/com/virgilsecurity/android/common/manager/GroupManager.kt +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/manager/GroupManager.kt @@ -97,8 +97,10 @@ internal class GroupManager internal constructor( ?: throw GroupException(GroupException.Description.INCONSISTENT_STATE) } - internal fun addAccess(cards: List, sessionId: Data) = - cloudTicketStorage.addRecipients(cards, sessionId) + internal fun addAccess(cards: List, newSet: Set, sessionId: Data) { + cloudTicketStorage.addRecipients(cards, sessionId) + localGroupStorage.setParticipants(newSet, sessionId) + } internal fun reAddAccess(card: Card, sessionId: Data) = cloudTicketStorage.reAddRecipient(card, sessionId) diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt index c6f1eef4..e1d5df61 100644 --- a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt @@ -92,11 +92,10 @@ class Group internal constructor( return session } - private fun shareTickets(cards: List) { + private fun shareTickets(cards: List, newSet: Set) { val sessionId = this.session.sessionId.toData() - groupManager.addAccess(cards, sessionId) - val newParticipants = cards.map { it.identity } - this.participants.addAll(newParticipants.toSet()) + groupManager.addAccess(cards, newSet, sessionId) + this.participants = newSet.toMutableSet() } private fun addNewTicket(participants: FindUsersResult) { @@ -276,7 +275,7 @@ class Group internal constructor( addedCards.add(card) } - this@Group.shareTickets(addedCards) + this@Group.shareTickets(addedCards, newSet) } } diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/storage/local/FileGroupStorage.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/storage/local/FileGroupStorage.kt index 38e00976..c60a25a0 100644 --- a/ethree-common/src/main/java/com/virgilsecurity/android/common/storage/local/FileGroupStorage.kt +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/storage/local/FileGroupStorage.kt @@ -34,6 +34,7 @@ package com.virgilsecurity.android.common.storage.local import com.virgilsecurity.android.common.exception.FileGroupStorageException +import com.virgilsecurity.android.common.exception.GroupException import com.virgilsecurity.android.common.exception.RawGroupException import com.virgilsecurity.android.common.model.GroupInfo import com.virgilsecurity.android.common.model.RawGroup @@ -111,6 +112,16 @@ internal class FileGroupStorage internal constructor( fileSystemEncrypted.write(data, GROUP_INFO_NAME, subdir) } + internal fun setParticipants(newParticipants: Set, sessionId: Data) { + val tickets = retrieveLastTickets(1, sessionId) + val lastTicket = tickets.firstOrNull() + ?: throw GroupException(GroupException.Description.INVALID_GROUP) + val newTicket = Ticket(lastTicket.groupMessage, newParticipants) + val subdir = sessionId.toHexString() + + store(newTicket, subdir) + } + internal fun retrieve(sessionId: Data, count: Int): RawGroup { val tickets = retrieveLastTickets(count, sessionId) val groupInfo = retrieveGroupInfo(sessionId) From 8f55fdfb5c28a99ae7c564b1784410ed6987322e Mon Sep 17 00:00:00 2001 From: BuddahLD Date: Wed, 22 Jan 2020 18:25:31 +0200 Subject: [PATCH 2/6] GH pages fix --- .ci/push-javadoc-to-gh-pages.sh | 51 +++++++++++++++++---------------- .travis.yml | 6 ++++ 2 files changed, 32 insertions(+), 25 deletions(-) diff --git a/.ci/push-javadoc-to-gh-pages.sh b/.ci/push-javadoc-to-gh-pages.sh index 6937efc0..b406d7b9 100755 --- a/.ci/push-javadoc-to-gh-pages.sh +++ b/.ci/push-javadoc-to-gh-pages.sh @@ -43,9 +43,9 @@ get_version () { while read line; do - firstWord="$(cut -d' ' -f1 <<< "$line")" + firstWord="$(cut -d'=' -f1 <<< "$line")" - if [[ "$firstWord" = "version" ]]; + if [[ "$firstWord" = "final String SDK_VERSION " ]]; then version="$(cut -d"'" -f2 <<< "$line")" fi @@ -77,17 +77,17 @@ generate_index_page() {

User modules


E3Kit

- + -

E3Kit Coroutines

- +

E3Kit Enclave

+

 

Internal modules


E3Kit Common

- +

 

@@ -106,25 +106,26 @@ if [[ "$TRAVIS_REPO_SLUG" == "VirgilSecurity/virgil-e3kit-kotlin" ]] && [[ "$TRA # Generate docs ./gradlew :ethree-common:javadocJar ./gradlew :ethree-kotlin:javadocJar - ./gradlew :ethree-kotlin-coroutines:javadocJar + ./gradlew :ethree-enclave:javadocJar - versionCommon="-1" - versionEthree="-1" - versionEthreeCoroutines="-1" + version="-1" # Get each module version - get_version "ethree-common/build.gradle" versionCommon - get_version "ethree-kotlin/build.gradle" versionEthree - get_version "ethree-kotlin-coroutines/build.gradle" versionEthreeCoroutines + get_version "build.gradle" version + + # Folder names with module name and version + commonFolder="common_v${version}" + kotlinFolder="kotlin_v${version}" + enclaveFolder="enclave_v${version}" # Create each module docs temporary folder mkdir $HOME/javadoc-latest/ - mkdir $HOME/javadoc-latest/${versionCommon}/ - mkdir $HOME/javadoc-latest/${versionEthree}/ - mkdir $HOME/javadoc-latest/${versionEthreeCoroutines}/ - cp -R ethree-common/build/javadoc/. $HOME/javadoc-latest/${versionCommon}/ - cp -R ethree-kotlin/build/javadoc/. $HOME/javadoc-latest/${versionEthree}/ - cp -R ethree-kotlin-coroutines/build/javadoc/. $HOME/javadoc-latest/${versionEthreeCoroutines}/ + mkdir $HOME/javadoc-latest/${commonFolder}/ + mkdir $HOME/javadoc-latest/${kotlinFolder}/ + mkdir $HOME/javadoc-latest/${enclaveFolder}/ + cp -R ethree-common/build/javadoc/. $HOME/javadoc-latest/${commonFolder}/ + cp -R ethree-kotlin/build/javadoc/. $HOME/javadoc-latest/${kotlinFolder}/ + cp -R ethree-enclave/build/javadoc/. $HOME/javadoc-latest/${enclaveFolder}/ # Get last gh-pages docs cd $HOME @@ -138,17 +139,17 @@ if [[ "$TRAVIS_REPO_SLUG" == "VirgilSecurity/virgil-e3kit-kotlin" ]] && [[ "$TRA git rm -rf content # Create main index page for all modules - versions=(${versionCommon} ${versionEthree} ${versionEthreeCoroutines}) - generate_index_page ${versions[*]} + args=(${commonFolder} ${kotlinFolder} ${enclaveFolder} ${version}) + generate_index_page ${args[*]} # Move each module docs to actual folder mkdir content mkdir content/ethree-common/ mkdir content/ethree-kotlin/ - mkdir content/ethree-kotlin-coroutines/ - mv $HOME/javadoc-latest/${versionCommon} content/ethree-common/ - mv $HOME/javadoc-latest/${versionEthree} content/ethree-kotlin/ - mv $HOME/javadoc-latest/${versionEthreeCoroutines} content/ethree-kotlin-coroutines/ + mkdir content/ethree-enclave/ + mv $HOME/javadoc-latest/${commonFolder} content/ethree-common/ + mv $HOME/javadoc-latest/${kotlinFolder} content/ethree-kotlin/ + mv $HOME/javadoc-latest/${enclaveFolder} content/ethree-enclave/ # Add new docs to index and commit git add -f . diff --git a/.travis.yml b/.travis.yml index 9be54f9f..fc855837 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,12 @@ language: android sudo: required jdk: oraclejdk8 +# Build all branches including gh-pages. Without this gh-pages will not be built. +branches: + only: + - gh-pages + - /.*/ + before_cache: - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ From 8b8e2926cb5869d6c2e0efdc52b53e9cd3703578 Mon Sep 17 00:00:00 2001 From: BuddahLD Date: Mon, 27 Jan 2020 17:40:14 +0200 Subject: [PATCH 3/6] Updated version to 0.8.1 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 3b08cf38..41fed800 100644 --- a/build.gradle +++ b/build.gradle @@ -139,7 +139,7 @@ def getGradleOrSystemProperty(String name, Project project) { final String BASE_VIRGIL_PACKAGE = 'com.virgilsecurity' // Packages versions -final String SDK_VERSION = '0.8.0' +final String SDK_VERSION = '0.8.1' subprojects { group BASE_VIRGIL_PACKAGE From d46616a8927c60f77661097e997e8b3f6ceecd29 Mon Sep 17 00:00:00 2001 From: BuddahLD Date: Fri, 14 Feb 2020 13:54:09 +0200 Subject: [PATCH 4/6] Added java- and kotlin-specific EThreeParams. Added forgotten @JvmOverloads --- .../android/common/EThreeCore.kt | 25 +++--- .../android/common/model/EThreeParams.kt | 4 +- .../android/common/model/Group.kt | 4 +- .../android/common/model/java/EThreeParams.kt | 68 ++++++++++++++++ .../ethreeenclave/interaction/EThree.kt | 35 ++++++--- .../interaction/model/EThreeParams.kt | 78 +++++++++++++++++++ .../EThreeParams.kt} | 4 +- .../android/ethree/interaction/EThree.kt | 25 ++++-- 8 files changed, 204 insertions(+), 39 deletions(-) create mode 100644 ethree-common/src/main/java/com/virgilsecurity/android/common/model/java/EThreeParams.kt create mode 100644 ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParams.kt rename ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/{EThreeParamsEnclave.kt => java/EThreeParams.kt} (98%) diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/EThreeCore.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/EThreeCore.kt index 2780a721..580546b2 100644 --- a/ethree-common/src/main/java/com/virgilsecurity/android/common/EThreeCore.kt +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/EThreeCore.kt @@ -42,7 +42,10 @@ import com.virgilsecurity.android.common.exception.* import com.virgilsecurity.android.common.manager.GroupManager import com.virgilsecurity.android.common.manager.LookupManager import com.virgilsecurity.android.common.manager.TempChannelManager -import com.virgilsecurity.android.common.model.* +import com.virgilsecurity.android.common.model.DerivedPasswords +import com.virgilsecurity.android.common.model.FindUsersResult +import com.virgilsecurity.android.common.model.Group +import com.virgilsecurity.android.common.model.LookupResult import com.virgilsecurity.android.common.model.ratchet.RatchetChannel import com.virgilsecurity.android.common.model.temporary.TemporaryChannel import com.virgilsecurity.android.common.storage.cloud.CloudKeyManager @@ -124,14 +127,6 @@ abstract class EThreeCore { val cardManager: CardManager val identity: String - protected constructor(params: EThreeParams) : this(params.identity, - params.tokenCallback, - params.keyChangedCallback, - params.keyPairType, - params.enableRatchet, - params.keyRotationInterval, - params.context) - protected constructor(identity: String, getTokenCallback: OnGetTokenCallback, keyChangedCallback: OnKeyChangedCallback?, @@ -325,9 +320,9 @@ abstract class EThreeCore { * @throws FindUsersException(FindUsersException.Description.CARD_WAS_NOT_FOUND) If card * duplicates was found or at least one card was not found. */ - fun findUsers(identities: List, - forceReload: Boolean = false, - checkResult: Boolean = true): Result = + @JvmOverloads fun findUsers(identities: List, + forceReload: Boolean = false, + checkResult: Boolean = true): Result = searchWorker.findUsers(identities, forceReload, checkResult) /** @@ -343,7 +338,7 @@ abstract class EThreeCore { * @throws FindUsersException(FindUsersException.Description.CARD_WAS_NOT_FOUND) If card * duplicates was found or at least one card was not found. */ - fun findUser(identity: String, forceReload: Boolean = false): Result = + @JvmOverloads fun findUser(identity: String, forceReload: Boolean = false): Result = searchWorker.findUser(identity, forceReload) /** @@ -486,7 +481,7 @@ abstract class EThreeCore { * @throws GroupException.Description.INVALID_PARTICIPANTS_COUNT If participants count is out * of [Group.VALID_PARTICIPANTS_COUNT_RANGE] range. */ - fun createGroup(identifier: Data, users: FindUsersResult? = null): Result = + @JvmOverloads fun createGroup(identifier: Data, users: FindUsersResult? = null): Result = groupWorker.createGroup(identifier, users) /** @@ -532,6 +527,7 @@ abstract class EThreeCore { * * @return New [Group]. */ + @JvmOverloads fun createGroup(identifier: String, users: FindUsersResult? = null): Result = groupWorker.createGroup(identifier, users) @@ -976,6 +972,7 @@ abstract class EThreeCore { * @throws EThreeException(EThreeException.Description.VERIFICATION_FAILED) * @throws rethrows [VirgilCrypto.authDecrypt] */ + @JvmOverloads fun authDecrypt(inputStream: InputStream, outputStream: OutputStream, user: Card? = null) = streamsEncryptWorker.authDecrypt(inputStream, outputStream, user) diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/EThreeParams.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/EThreeParams.kt index 52017ba6..4659be90 100644 --- a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/EThreeParams.kt +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/EThreeParams.kt @@ -49,7 +49,9 @@ class EThreeParams( val identity: String, // Callback to get Virgil access token. - val tokenCallback: OnGetTokenCallback, + // This method should return valid Json Web Token [String] representation with identity + // (in it) of the user which will use this class. + val tokenCallback: () -> String, // Context val context: Context) { diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt index e1d5df61..183996a5 100644 --- a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/Group.kt @@ -161,7 +161,7 @@ class Group internal constructor( * * @return decrypted byte array. */ - fun decrypt(data: ByteArray, senderCard: Card, date: Date? = null): ByteArray { + @JvmOverloads fun decrypt(data: ByteArray, senderCard: Card, date: Date? = null): ByteArray { require(data.isNotEmpty()) { "\'data\' should not be empty" } val encrypted = GroupSessionMessage.deserialize(data) @@ -216,7 +216,7 @@ class Group internal constructor( * * @return decrypted String. */ - fun decrypt(text: String, senderCard: Card, date: Date? = null): String { + @JvmOverloads fun decrypt(text: String, senderCard: Card, date: Date? = null): String { require(text.isNotEmpty()) { "\'text\' should not be empty" } val data: Data diff --git a/ethree-common/src/main/java/com/virgilsecurity/android/common/model/java/EThreeParams.kt b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/java/EThreeParams.kt new file mode 100644 index 00000000..1d54a8f4 --- /dev/null +++ b/ethree-common/src/main/java/com/virgilsecurity/android/common/model/java/EThreeParams.kt @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2015-2020, Virgil Security, Inc. + * + * Lead Maintainer: Virgil Security Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * (1) Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * (2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * (3) Neither the name of virgil nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.virgilsecurity.android.common.model.java + +import android.content.Context +import com.virgilsecurity.android.common.callback.OnGetTokenCallback +import com.virgilsecurity.android.common.callback.OnKeyChangedCallback +import com.virgilsecurity.android.common.util.Defaults +import com.virgilsecurity.sdk.client.CardClient +import com.virgilsecurity.sdk.common.TimeSpan +import com.virgilsecurity.sdk.crypto.KeyPairType + +/** + * EThreeParams + */ +class EThreeParams( + // Identity of user. + val identity: String, + + // Callback to get Virgil access token. + val tokenCallback: OnGetTokenCallback, + + // Context + val context: Context) { + + // Callback to notify the change of User's keys. + var keyChangedCallback: OnKeyChangedCallback? = null + + // Enables ratchet operations. + var enableRatchet: Boolean = Defaults.enableRatchet + + // TimeSpan of automatic rotate keys for double ratchet. + var keyRotationInterval: TimeSpan = Defaults.keyRotationInterval + + // Default key pair type + var keyPairType: KeyPairType = Defaults.keyPairType +} diff --git a/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/EThree.kt b/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/EThree.kt index 4c572438..24adf64c 100644 --- a/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/EThree.kt +++ b/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/EThree.kt @@ -37,10 +37,8 @@ import android.content.Context import com.virgilsecurity.android.common.EThreeCore import com.virgilsecurity.android.common.callback.OnGetTokenCallback import com.virgilsecurity.android.common.callback.OnKeyChangedCallback -import com.virgilsecurity.android.common.model.DerivedPasswords import com.virgilsecurity.android.common.util.Const.NO_CONTEXT import com.virgilsecurity.android.common.util.Defaults -import com.virgilsecurity.android.ethreeenclave.interaction.model.EThreeParamsEnclave import com.virgilsecurity.common.model.Result import com.virgilsecurity.sdk.androidutils.storage.AndroidKeyEntry import com.virgilsecurity.sdk.androidutils.storage.AndroidKeyStorage @@ -115,16 +113,29 @@ class EThree initializeCore() } - constructor(params: EThreeParamsEnclave) : this(params.identity, - params.tokenCallback, - params.context, - params.alias, - params.isAuthenticationRequired, - params.keyValidityDuration, - params.keyChangedCallback, - params.keyPairType, - params.enableRatchet, - params.keyRotationInterval) + constructor(params: com.virgilsecurity.android.ethreeenclave.interaction.model.EThreeParams) : this( + params.identity, + params.tokenCallback, + params.context, + params.alias, + params.isAuthenticationRequired, + params.keyValidityDuration, + params.keyChangedCallback, + params.keyPairType, + params.enableRatchet, + params.keyRotationInterval) + + constructor(params: com.virgilsecurity.android.ethreeenclave.interaction.model.java.EThreeParams) : this( + params.identity, + params.tokenCallback, + params.context, + params.alias, + params.isAuthenticationRequired, + params.keyValidityDuration, + params.keyChangedCallback, + params.keyPairType, + params.enableRatchet, + params.keyRotationInterval) @JvmOverloads constructor( identity: String, diff --git a/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParams.kt b/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParams.kt new file mode 100644 index 00000000..89bc49fa --- /dev/null +++ b/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParams.kt @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2015-2020, Virgil Security, Inc. + * + * Lead Maintainer: Virgil Security Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * (1) Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * (2) Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * (3) Neither the name of virgil nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package com.virgilsecurity.android.ethreeenclave.interaction.model + +import android.content.Context +import com.virgilsecurity.android.common.callback.OnGetTokenCallback +import com.virgilsecurity.android.common.callback.OnKeyChangedCallback +import com.virgilsecurity.android.common.util.Defaults +import com.virgilsecurity.sdk.common.TimeSpan +import com.virgilsecurity.sdk.crypto.KeyPairType + +/** + * EThreeParamsEnclave + */ +data class EThreeParams( + // Identity of user. + val identity: String, + + // Callback to get Virgil access token. + // This method should return valid Json Web Token [String] representation with identity + // (in it) of the user which will use this class. + val tokenCallback: () -> String, + + // Context + val context: Context) { + + // Alias for Android Key Storage + var alias: String = "VirgilAndroidKeyStorage" + + // Whether authentication is required + var isAuthenticationRequired: Boolean = true + + // Key validity duration + var keyValidityDuration: Int = 60 * 5 + + // Callback to notify the change of User's keys. + var keyChangedCallback: OnKeyChangedCallback? = null + + // Enables ratchet operations. + var enableRatchet: Boolean = Defaults.enableRatchet + + // TimeSpan of automatic rotate keys for double ratchet. + var keyRotationInterval: TimeSpan = Defaults.keyRotationInterval + + // Default key pair type + var keyPairType: KeyPairType = Defaults.keyPairType +} diff --git a/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParamsEnclave.kt b/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/java/EThreeParams.kt similarity index 98% rename from ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParamsEnclave.kt rename to ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/java/EThreeParams.kt index 9252a75b..54395b18 100644 --- a/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/EThreeParamsEnclave.kt +++ b/ethree-enclave/src/main/java/com/virgilsecurity/android/ethreeenclave/interaction/model/java/EThreeParams.kt @@ -31,7 +31,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.virgilsecurity.android.ethreeenclave.interaction.model +package com.virgilsecurity.android.ethreeenclave.interaction.model.java import android.content.Context import com.virgilsecurity.android.common.callback.OnGetTokenCallback @@ -43,7 +43,7 @@ import com.virgilsecurity.sdk.crypto.KeyPairType /** * EThreeParamsEnclave */ -data class EThreeParamsEnclave( +data class EThreeParams( // Identity of user. val identity: String, diff --git a/ethree-kotlin/src/main/java/com/virgilsecurity/android/ethree/interaction/EThree.kt b/ethree-kotlin/src/main/java/com/virgilsecurity/android/ethree/interaction/EThree.kt index d93666e3..bca01cc2 100644 --- a/ethree-kotlin/src/main/java/com/virgilsecurity/android/ethree/interaction/EThree.kt +++ b/ethree-kotlin/src/main/java/com/virgilsecurity/android/ethree/interaction/EThree.kt @@ -37,7 +37,6 @@ import android.content.Context import com.virgilsecurity.android.common.EThreeCore import com.virgilsecurity.android.common.callback.OnGetTokenCallback import com.virgilsecurity.android.common.callback.OnKeyChangedCallback -import com.virgilsecurity.android.common.model.EThreeParams import com.virgilsecurity.android.common.util.Const.NO_CONTEXT import com.virgilsecurity.android.common.util.Defaults import com.virgilsecurity.common.model.Result @@ -77,13 +76,23 @@ class EThree initializeCore() } - constructor(params: EThreeParams) : this(params.identity, - params.tokenCallback, - params.context, - params.keyChangedCallback, - params.keyPairType, - params.enableRatchet, - params.keyRotationInterval) + constructor(params: com.virgilsecurity.android.common.model.EThreeParams) : this( + params.identity, + params.tokenCallback, + params.context, + params.keyChangedCallback, + params.keyPairType, + params.enableRatchet, + params.keyRotationInterval) + + constructor(params: com.virgilsecurity.android.common.model.java.EThreeParams) : this( + params.identity, + params.tokenCallback, + params.context, + params.keyChangedCallback, + params.keyPairType, + params.enableRatchet, + params.keyRotationInterval) @JvmOverloads constructor( identity: String, From c0b0de414dd022315eb179166d4b2c36a844a31d Mon Sep 17 00:00:00 2001 From: BuddahLD Date: Fri, 14 Feb 2020 13:54:36 +0200 Subject: [PATCH 5/6] Updated version to 0.8.2 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 41fed800..8b6a7f2e 100644 --- a/build.gradle +++ b/build.gradle @@ -139,7 +139,7 @@ def getGradleOrSystemProperty(String name, Project project) { final String BASE_VIRGIL_PACKAGE = 'com.virgilsecurity' // Packages versions -final String SDK_VERSION = '0.8.1' +final String SDK_VERSION = '0.8.2' subprojects { group BASE_VIRGIL_PACKAGE From 0a6a031fde4f2ba7e8ff2ba25b58d7839fb7bf71 Mon Sep 17 00:00:00 2001 From: BuddahLD Date: Fri, 14 Feb 2020 17:30:59 +0200 Subject: [PATCH 6/6] Updated version to 2.0.0 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8b6a7f2e..36ca34b8 100644 --- a/build.gradle +++ b/build.gradle @@ -139,7 +139,7 @@ def getGradleOrSystemProperty(String name, Project project) { final String BASE_VIRGIL_PACKAGE = 'com.virgilsecurity' // Packages versions -final String SDK_VERSION = '0.8.2' +final String SDK_VERSION = '2.0.0' subprojects { group BASE_VIRGIL_PACKAGE