... and rename the method fromBase64NoPadding() to fromBase64()
This commit is contained in:
parent
8299487f6d
commit
1ead2778c2
|
@ -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) {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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),
|
||||||
|
|
Loading…
Reference in New Issue