... and rename the method fromBase64NoPadding() to fromBase64()

This commit is contained in:
Benoit Marty 2020-02-27 18:15:39 +01:00
parent 8299487f6d
commit 1ead2778c2
5 changed files with 19 additions and 19 deletions

View File

@ -80,7 +80,7 @@ internal class DefaultCrossSigningService @Inject constructor(
cryptoStore.getCrossSigningPrivateKeys()?.let { privateKeysInfo -> cryptoStore.getCrossSigningPrivateKeys()?.let { privateKeysInfo ->
privateKeysInfo.master privateKeysInfo.master
?.fromBase64NoPadding() ?.fromBase64()
?.let { privateKeySeed -> ?.let { privateKeySeed ->
val pkSigning = OlmPkSigning() val pkSigning = OlmPkSigning()
if (pkSigning.initWithSeed(privateKeySeed) == mxCrossSigningInfo.masterKey()?.unpaddedBase64PublicKey) { if (pkSigning.initWithSeed(privateKeySeed) == mxCrossSigningInfo.masterKey()?.unpaddedBase64PublicKey) {
@ -93,7 +93,7 @@ internal class DefaultCrossSigningService @Inject constructor(
} }
} }
privateKeysInfo.user privateKeysInfo.user
?.fromBase64NoPadding() ?.fromBase64()
?.let { privateKeySeed -> ?.let { privateKeySeed ->
val pkSigning = OlmPkSigning() val pkSigning = OlmPkSigning()
if (pkSigning.initWithSeed(privateKeySeed) == mxCrossSigningInfo.userKey()?.unpaddedBase64PublicKey) { if (pkSigning.initWithSeed(privateKeySeed) == mxCrossSigningInfo.userKey()?.unpaddedBase64PublicKey) {
@ -106,7 +106,7 @@ internal class DefaultCrossSigningService @Inject constructor(
} }
} }
privateKeysInfo.selfSigned privateKeysInfo.selfSigned
?.fromBase64NoPadding() ?.fromBase64()
?.let { privateKeySeed -> ?.let { privateKeySeed ->
val pkSigning = OlmPkSigning() val pkSigning = OlmPkSigning()
if (pkSigning.initWithSeed(privateKeySeed) == mxCrossSigningInfo.selfSigningKey()?.unpaddedBase64PublicKey) { if (pkSigning.initWithSeed(privateKeySeed) == mxCrossSigningInfo.selfSigningKey()?.unpaddedBase64PublicKey) {
@ -307,7 +307,7 @@ internal class DefaultCrossSigningService @Inject constructor(
var userKeyIsTrusted = false var userKeyIsTrusted = false
var selfSignedKeyIsTrusted = false var selfSignedKeyIsTrusted = false
masterKeyPrivateKey?.fromBase64NoPadding() masterKeyPrivateKey?.fromBase64()
?.let { privateKeySeed -> ?.let { privateKeySeed ->
val pkSigning = OlmPkSigning() val pkSigning = OlmPkSigning()
try { try {
@ -324,7 +324,7 @@ internal class DefaultCrossSigningService @Inject constructor(
} }
} }
uskKeyPrivateKey?.fromBase64NoPadding() uskKeyPrivateKey?.fromBase64()
?.let { privateKeySeed -> ?.let { privateKeySeed ->
val pkSigning = OlmPkSigning() val pkSigning = OlmPkSigning()
try { try {
@ -341,7 +341,7 @@ internal class DefaultCrossSigningService @Inject constructor(
} }
} }
sskPrivateKey?.fromBase64NoPadding() sskPrivateKey?.fromBase64()
?.let { privateKeySeed -> ?.let { privateKeySeed ->
val pkSigning = OlmPkSigning() val pkSigning = OlmPkSigning()
try { try {
@ -450,7 +450,7 @@ internal class DefaultCrossSigningService @Inject constructor(
// 1) check if I know the private key // 1) check if I know the private key
val masterPrivateKey = cryptoStore.getCrossSigningPrivateKeys() val masterPrivateKey = cryptoStore.getCrossSigningPrivateKeys()
?.master ?.master
?.fromBase64NoPadding() ?.fromBase64()
var isMaterKeyTrusted = false var isMaterKeyTrusted = false
if (myMasterKey.trustLevel?.locallyVerified == true) { if (myMasterKey.trustLevel?.locallyVerified == true) {

View File

@ -32,6 +32,6 @@ fun ByteArray.toBase64NoPadding(): String {
return Base64.encodeToString(this, Base64.NO_PADDING or Base64.NO_WRAP) return Base64.encodeToString(this, Base64.NO_PADDING or Base64.NO_WRAP)
} }
fun String.fromBase64NoPadding(): ByteArray { fun String.fromBase64(): ByteArray {
return Base64.decode(this, Base64.DEFAULT) return Base64.decode(this, Base64.DEFAULT)
} }

View File

@ -35,7 +35,7 @@ import im.vector.matrix.android.api.session.securestorage.SsssKeySpec
import im.vector.matrix.android.api.session.securestorage.SsssPassphrase import im.vector.matrix.android.api.session.securestorage.SsssPassphrase
import im.vector.matrix.android.internal.crypto.SSSS_ALGORITHM_AES_HMAC_SHA2 import im.vector.matrix.android.internal.crypto.SSSS_ALGORITHM_AES_HMAC_SHA2
import im.vector.matrix.android.internal.crypto.SSSS_ALGORITHM_CURVE25519_AES_SHA2 import im.vector.matrix.android.internal.crypto.SSSS_ALGORITHM_CURVE25519_AES_SHA2
import im.vector.matrix.android.internal.crypto.crosssigning.fromBase64NoPadding import im.vector.matrix.android.internal.crypto.crosssigning.fromBase64
import im.vector.matrix.android.internal.crypto.crosssigning.toBase64NoPadding import im.vector.matrix.android.internal.crypto.crosssigning.toBase64NoPadding
import im.vector.matrix.android.internal.crypto.keysbackup.generatePrivateKeyWithPassword import im.vector.matrix.android.internal.crypto.keysbackup.generatePrivateKeyWithPassword
import im.vector.matrix.android.internal.crypto.keysbackup.util.computeRecoveryKey import im.vector.matrix.android.internal.crypto.keysbackup.util.computeRecoveryKey
@ -268,7 +268,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
val ivParameterSpec = IvParameterSpec(iv) val ivParameterSpec = IvParameterSpec(iv)
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec) cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec)
// secret are not that big, just do Final // secret are not that big, just do Final
val cipherBytes = cipher.doFinal(clearDataBase64.fromBase64NoPadding()) val cipherBytes = cipher.doFinal(clearDataBase64.fromBase64())
require(cipherBytes.isNotEmpty()) require(cipherBytes.isNotEmpty())
val macKeySpec = SecretKeySpec(macKey, "HmacSHA256") val macKeySpec = SecretKeySpec(macKey, "HmacSHA256")
@ -295,9 +295,9 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
val aesKey = pseudoRandomKey.copyOfRange(0, 32) val aesKey = pseudoRandomKey.copyOfRange(0, 32)
val macKey = pseudoRandomKey.copyOfRange(32, 64) val macKey = pseudoRandomKey.copyOfRange(32, 64)
val iv = cipherContent.initializationVector?.fromBase64NoPadding() ?: ByteArray(16) val iv = cipherContent.initializationVector?.fromBase64() ?: ByteArray(16)
val cipherRawBytes = cipherContent.ciphertext!!.fromBase64NoPadding() val cipherRawBytes = cipherContent.ciphertext!!.fromBase64()
val cipher = Cipher.getInstance("AES/CTR/NoPadding") val cipher = Cipher.getInstance("AES/CTR/NoPadding")
@ -314,7 +314,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
val mac = Mac.getInstance("HmacSHA256").apply { init(macKeySpec) } val mac = Mac.getInstance("HmacSHA256").apply { init(macKeySpec) }
val digest = mac.doFinal(cipherRawBytes) val digest = mac.doFinal(cipherRawBytes)
if (!cipherContent.mac?.fromBase64NoPadding()?.contentEquals(digest).orFalse()) { if (!cipherContent.mac?.fromBase64()?.contentEquals(digest).orFalse()) {
throw SharedSecretStorageError.BadMac throw SharedSecretStorageError.BadMac
} else { } else {
// we are good // we are good

View File

@ -16,7 +16,7 @@
package im.vector.matrix.android.internal.crypto.verification.qrcode package im.vector.matrix.android.internal.crypto.verification.qrcode
import im.vector.matrix.android.internal.crypto.crosssigning.fromBase64NoPadding import im.vector.matrix.android.internal.crypto.crosssigning.fromBase64
import im.vector.matrix.android.internal.crypto.crosssigning.toBase64NoPadding import im.vector.matrix.android.internal.crypto.crosssigning.toBase64NoPadding
import im.vector.matrix.android.internal.extensions.toUnsignedInt import im.vector.matrix.android.internal.extensions.toUnsignedInt
@ -52,15 +52,15 @@ fun QrCodeData.toEncodedString(): String {
} }
// Keys // Keys
firstKey.fromBase64NoPadding().forEach { firstKey.fromBase64().forEach {
result += it result += it
} }
secondKey.fromBase64NoPadding().forEach { secondKey.fromBase64().forEach {
result += it result += it
} }
// Secret // Secret
sharedSecret.fromBase64NoPadding().forEach { sharedSecret.fromBase64().forEach {
result += it result += it
} }

View File

@ -42,7 +42,7 @@ import im.vector.matrix.android.api.session.events.model.LocalEcho
import im.vector.matrix.android.api.session.room.model.create.CreateRoomParams import im.vector.matrix.android.api.session.room.model.create.CreateRoomParams
import im.vector.matrix.android.api.util.MatrixItem import im.vector.matrix.android.api.util.MatrixItem
import im.vector.matrix.android.api.util.toMatrixItem import im.vector.matrix.android.api.util.toMatrixItem
import im.vector.matrix.android.internal.crypto.crosssigning.fromBase64NoPadding import im.vector.matrix.android.internal.crypto.crosssigning.fromBase64
import im.vector.matrix.android.internal.crypto.crosssigning.isVerified import im.vector.matrix.android.internal.crypto.crosssigning.isVerified
import im.vector.matrix.android.internal.crypto.verification.PendingVerificationRequest import im.vector.matrix.android.internal.crypto.verification.PendingVerificationRequest
import im.vector.riotx.core.extensions.exhaustive import im.vector.riotx.core.extensions.exhaustive
@ -265,7 +265,7 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini
} }
is VerificationAction.GotResultFromSsss -> { is VerificationAction.GotResultFromSsss -> {
try { try {
action.cypherData.fromBase64NoPadding().inputStream().use { ins -> action.cypherData.fromBase64().inputStream().use { ins ->
val res = session.loadSecureSecret<Map<String, String>>(ins, action.alias) val res = session.loadSecureSecret<Map<String, String>>(ins, action.alias)
val trustResult = session.cryptoService().crossSigningService().checkTrustFromPrivateKeys( val trustResult = session.cryptoService().crossSigningService().checkTrustFromPrivateKeys(
res?.get(MASTER_KEY_SSSS_NAME), res?.get(MASTER_KEY_SSSS_NAME),