1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-13 09:08:17 -05:00

new encryption types for rsa with hmac

This commit is contained in:
Kyle Spearrin 2017-06-19 09:46:59 -04:00
parent 8112825556
commit 5a67df60de
2 changed files with 47 additions and 17 deletions

@ -6,6 +6,8 @@
AesCbc128_HmacSha256_B64 = 1, AesCbc128_HmacSha256_B64 = 1,
AesCbc256_HmacSha256_B64 = 2, AesCbc256_HmacSha256_B64 = 2,
Rsa2048_OaepSha256_B64 = 3, Rsa2048_OaepSha256_B64 = 3,
Rsa2048_OaepSha1_B64 = 4 Rsa2048_OaepSha1_B64 = 4,
Rsa2048_OaepSha256_HmacSha256_B64 = 5,
Rsa2048_OaepSha1_HmacSha256_B64 = 6
} }
} }

@ -55,6 +55,8 @@ namespace Bit.Core.Utilities
switch(encType) switch(encType)
{ {
case Enums.EncryptionType.AesCbc256_B64: case Enums.EncryptionType.AesCbc256_B64:
case Enums.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:
case Enums.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:
if(encStringPieces.Length != 2) if(encStringPieces.Length != 2)
{ {
return false; return false;
@ -78,26 +80,52 @@ namespace Bit.Core.Utilities
return false; return false;
} }
if(encType != Enums.EncryptionType.Rsa2048_OaepSha1_B64 && switch(encType)
encType != Enums.EncryptionType.Rsa2048_OaepSha256_B64)
{ {
var iv = Convert.FromBase64String(encStringPieces[0]); case Enums.EncryptionType.AesCbc256_B64:
var ct = Convert.FromBase64String(encStringPieces[1]); case Enums.EncryptionType.AesCbc128_HmacSha256_B64:
case Enums.EncryptionType.AesCbc256_HmacSha256_B64:
var iv = Convert.FromBase64String(encStringPieces[0]);
var ct = Convert.FromBase64String(encStringPieces[1]);
if(iv.Length < 1 || ct.Length < 1)
{
return false;
}
if(iv.Length < 1 || ct.Length < 1) if(encType == Enums.EncryptionType.AesCbc128_HmacSha256_B64 ||
{ encType == Enums.EncryptionType.AesCbc256_HmacSha256_B64)
return false; {
} var mac = Convert.FromBase64String(encStringPieces[2]);
} if(mac.Length < 1)
{
return false;
}
}
if(encType == Enums.EncryptionType.AesCbc128_HmacSha256_B64 || break;
encType == Enums.EncryptionType.AesCbc256_HmacSha256_B64) case Enums.EncryptionType.Rsa2048_OaepSha256_B64:
{ case Enums.EncryptionType.Rsa2048_OaepSha1_B64:
var mac = Convert.FromBase64String(encStringPieces[2]); case Enums.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:
if(mac.Length < 1) case Enums.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:
{ var rsaCt = Convert.FromBase64String(encStringPieces[0]);
if(rsaCt.Length < 1)
{
return false;
}
if(encType == Enums.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64 ||
encType == Enums.EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64)
{
var mac = Convert.FromBase64String(encStringPieces[1]);
if(mac.Length < 1)
{
return false;
}
}
break;
default:
return false; return false;
}
} }
} }
catch catch