1
0
mirror of https://github.com/bitwarden/server.git synced 2025-04-15 01:58:14 -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

View File

@ -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
} }
} }

View File

@ -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,17 +80,17 @@ namespace Bit.Core.Utilities
return false; return false;
} }
if(encType != Enums.EncryptionType.Rsa2048_OaepSha1_B64 && switch(encType)
encType != Enums.EncryptionType.Rsa2048_OaepSha256_B64)
{ {
case Enums.EncryptionType.AesCbc256_B64:
case Enums.EncryptionType.AesCbc128_HmacSha256_B64:
case Enums.EncryptionType.AesCbc256_HmacSha256_B64:
var iv = Convert.FromBase64String(encStringPieces[0]); var iv = Convert.FromBase64String(encStringPieces[0]);
var ct = Convert.FromBase64String(encStringPieces[1]); var ct = Convert.FromBase64String(encStringPieces[1]);
if(iv.Length < 1 || ct.Length < 1) if(iv.Length < 1 || ct.Length < 1)
{ {
return false; return false;
} }
}
if(encType == Enums.EncryptionType.AesCbc128_HmacSha256_B64 || if(encType == Enums.EncryptionType.AesCbc128_HmacSha256_B64 ||
encType == Enums.EncryptionType.AesCbc256_HmacSha256_B64) encType == Enums.EncryptionType.AesCbc256_HmacSha256_B64)
@ -99,6 +101,32 @@ namespace Bit.Core.Utilities
return false; return false;
} }
} }
break;
case Enums.EncryptionType.Rsa2048_OaepSha256_B64:
case Enums.EncryptionType.Rsa2048_OaepSha1_B64:
case Enums.EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:
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;
}
} }
catch catch
{ {