mirror of
https://github.com/bitwarden/mobile
synced 2025-12-05 23:53:33 +00:00
[PM-2713] consolidate attachment key creation
- also fix ios files missed during symbol rename
This commit is contained in:
@@ -556,20 +556,9 @@ namespace Bit.Core.Services
|
|||||||
|
|
||||||
public async Task<Cipher> SaveAttachmentRawWithServerAsync(Cipher cipher, string filename, byte[] data)
|
public async Task<Cipher> SaveAttachmentRawWithServerAsync(Cipher cipher, string filename, byte[] data)
|
||||||
{
|
{
|
||||||
SymmetricCryptoKey attachmentKey;
|
var (attachmentKey, protectedAttachmentKey, encKey) = await MakeAttachmentKeyAsync(cipher.OrganizationId);
|
||||||
EncString protectedAttachmentKey;
|
|
||||||
var orgKey = await _cryptoService.GetOrgKeyAsync(cipher.OrganizationId);
|
|
||||||
if (orgKey != null)
|
|
||||||
{
|
|
||||||
(attachmentKey, protectedAttachmentKey) = await _cryptoService.MakeDataEncKeyAsync(orgKey);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var userKey = await _cryptoService.GetUserKeyWithLegacySupportAsync();
|
|
||||||
(attachmentKey, protectedAttachmentKey) = await _cryptoService.MakeDataEncKeyAsync(userKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
var encFileName = await _cryptoService.EncryptAsync(filename, orgKey);
|
var encFileName = await _cryptoService.EncryptAsync(filename, encKey);
|
||||||
var encFileData = await _cryptoService.EncryptToBytesAsync(data, attachmentKey);
|
var encFileData = await _cryptoService.EncryptToBytesAsync(data, attachmentKey);
|
||||||
|
|
||||||
CipherResponse response;
|
CipherResponse response;
|
||||||
@@ -806,6 +795,21 @@ namespace Bit.Core.Services
|
|||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
|
|
||||||
|
private async Task<Tuple<SymmetricCryptoKey, EncString, SymmetricCryptoKey>> MakeAttachmentKeyAsync(string organizationId)
|
||||||
|
{
|
||||||
|
SymmetricCryptoKey attachmentKey;
|
||||||
|
EncString protectedAttachmentKey;
|
||||||
|
var orgKey = await _cryptoService.GetOrgKeyAsync(organizationId);
|
||||||
|
if (orgKey != null)
|
||||||
|
{
|
||||||
|
(attachmentKey, protectedAttachmentKey) = await _cryptoService.MakeDataEncKeyAsync(orgKey);
|
||||||
|
return new Tuple<SymmetricCryptoKey, EncString, SymmetricCryptoKey>(attachmentKey, protectedAttachmentKey, orgKey);
|
||||||
|
}
|
||||||
|
var userKey = await _cryptoService.GetUserKeyWithLegacySupportAsync();
|
||||||
|
(attachmentKey, protectedAttachmentKey) = await _cryptoService.MakeDataEncKeyAsync(userKey);
|
||||||
|
return new Tuple<SymmetricCryptoKey, EncString, SymmetricCryptoKey>(attachmentKey, protectedAttachmentKey, userKey);
|
||||||
|
}
|
||||||
|
|
||||||
private async Task ShareAttachmentWithServerAsync(AttachmentView attachmentView, string cipherId,
|
private async Task ShareAttachmentWithServerAsync(AttachmentView attachmentView, string cipherId,
|
||||||
string organizationId)
|
string organizationId)
|
||||||
{
|
{
|
||||||
@@ -818,20 +822,9 @@ namespace Bit.Core.Services
|
|||||||
var bytes = await attachmentResponse.Content.ReadAsByteArrayAsync();
|
var bytes = await attachmentResponse.Content.ReadAsByteArrayAsync();
|
||||||
var decBytes = await _cryptoService.DecryptFromBytesAsync(bytes, null);
|
var decBytes = await _cryptoService.DecryptFromBytesAsync(bytes, null);
|
||||||
|
|
||||||
SymmetricCryptoKey attachmentKey;
|
var (attachmentKey, protectedAttachmentKey, encKey) = await MakeAttachmentKeyAsync(organizationId);
|
||||||
EncString protectedAttachmentKey;
|
|
||||||
var orgKey = await _cryptoService.GetOrgKeyAsync(organizationId);
|
|
||||||
if (orgKey != null)
|
|
||||||
{
|
|
||||||
(attachmentKey, protectedAttachmentKey) = await _cryptoService.MakeDataEncKeyAsync(orgKey);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var userKey = await _cryptoService.GetUserKeyWithLegacySupportAsync();
|
|
||||||
(attachmentKey, protectedAttachmentKey) = await _cryptoService.MakeDataEncKeyAsync(userKey);
|
|
||||||
}
|
|
||||||
|
|
||||||
var encFileName = await _cryptoService.EncryptAsync(attachmentView.FileName, orgKey);
|
var encFileName = await _cryptoService.EncryptAsync(attachmentView.FileName, encKey);
|
||||||
var encFileData = await _cryptoService.EncryptToBytesAsync(decBytes, attachmentKey);
|
var encFileData = await _cryptoService.EncryptToBytesAsync(decBytes, attachmentKey);
|
||||||
|
|
||||||
var boundary = string.Concat("--BWMobileFormBoundary", DateTime.UtcNow.Ticks);
|
var boundary = string.Concat("--BWMobileFormBoundary", DateTime.UtcNow.Ticks);
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ namespace Bit.iOS.Core.Controllers
|
|||||||
{
|
{
|
||||||
_pinStatus = await _vaultTimeoutService.GetPinLockTypeAsync();
|
_pinStatus = await _vaultTimeoutService.GetPinLockTypeAsync();
|
||||||
|
|
||||||
var ephemeralPinSet = await _stateService.GetUserKeyPinEphemeralAsync()
|
var ephemeralPinSet = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync()
|
||||||
?? await _stateService.GetPinProtectedKeyAsync();
|
?? await _stateService.GetPinProtectedKeyAsync();
|
||||||
_pinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
_pinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
||||||
_pinStatus == PinLockType.Persistent;
|
_pinStatus == PinLockType.Persistent;
|
||||||
@@ -259,13 +259,13 @@ namespace Bit.iOS.Core.Controllers
|
|||||||
EncString oldPinProtected = null;
|
EncString oldPinProtected = null;
|
||||||
if (_pinStatus == PinLockType.Persistent)
|
if (_pinStatus == PinLockType.Persistent)
|
||||||
{
|
{
|
||||||
userKeyPin = await _stateService.GetUserKeyPinAsync();
|
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyAsync();
|
||||||
var oldEncryptedKey = await _stateService.GetPinProtectedAsync();
|
var oldEncryptedKey = await _stateService.GetPinProtectedAsync();
|
||||||
oldPinProtected = oldEncryptedKey != null ? new EncString(oldEncryptedKey) : null;
|
oldPinProtected = oldEncryptedKey != null ? new EncString(oldEncryptedKey) : null;
|
||||||
}
|
}
|
||||||
else if (_pinStatus == PinLockType.Transient)
|
else if (_pinStatus == PinLockType.Transient)
|
||||||
{
|
{
|
||||||
userKeyPin = await _stateService.GetUserKeyPinEphemeralAsync();
|
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync();
|
||||||
oldPinProtected = await _stateService.GetPinProtectedKeyAsync();
|
oldPinProtected = await _stateService.GetPinProtectedKeyAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ namespace Bit.iOS.Core.Controllers
|
|||||||
{
|
{
|
||||||
_pinStatus = await _vaultTimeoutService.GetPinLockTypeAsync();
|
_pinStatus = await _vaultTimeoutService.GetPinLockTypeAsync();
|
||||||
|
|
||||||
var ephemeralPinSet = await _stateService.GetUserKeyPinEphemeralAsync()
|
var ephemeralPinSet = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync()
|
||||||
?? await _stateService.GetPinProtectedKeyAsync();
|
?? await _stateService.GetPinProtectedKeyAsync();
|
||||||
_pinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
_pinEnabled = (_pinStatus == PinLockType.Transient && ephemeralPinSet != null) ||
|
||||||
_pinStatus == PinLockType.Persistent;
|
_pinStatus == PinLockType.Persistent;
|
||||||
@@ -226,13 +226,13 @@ namespace Bit.iOS.Core.Controllers
|
|||||||
EncString oldPinProtected = null;
|
EncString oldPinProtected = null;
|
||||||
if (_pinStatus == PinLockType.Persistent)
|
if (_pinStatus == PinLockType.Persistent)
|
||||||
{
|
{
|
||||||
userKeyPin = await _stateService.GetUserKeyPinAsync();
|
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyAsync();
|
||||||
var oldEncryptedKey = await _stateService.GetPinProtectedAsync();
|
var oldEncryptedKey = await _stateService.GetPinProtectedAsync();
|
||||||
oldPinProtected = oldEncryptedKey != null ? new EncString(oldEncryptedKey) : null;
|
oldPinProtected = oldEncryptedKey != null ? new EncString(oldEncryptedKey) : null;
|
||||||
}
|
}
|
||||||
else if (_pinStatus == PinLockType.Transient)
|
else if (_pinStatus == PinLockType.Transient)
|
||||||
{
|
{
|
||||||
userKeyPin = await _stateService.GetUserKeyPinEphemeralAsync();
|
userKeyPin = await _stateService.GetPinKeyEncryptedUserKeyEphemeralAsync();
|
||||||
oldPinProtected = await _stateService.GetPinProtectedKeyAsync();
|
oldPinProtected = await _stateService.GetPinProtectedKeyAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user