Skip to content

Commit 302c4d6

Browse files
Handle for null and 0 length
1 parent 95f38ca commit 302c4d6

3 files changed

Lines changed: 24 additions & 2 deletions

File tree

src/KeyVault/KeyVault.Test/UnitTests/JwkHelperKeySizeTests.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,17 @@ public void ComputeKeySize_RsaFamilyWithoutModulus_ReturnsNull(string kty)
7373
Assert.Null(JwkHelper.ComputeKeySize(jwk));
7474
}
7575

76+
[Theory]
77+
[Trait(Category.AcceptanceType, Category.CheckIn)]
78+
[InlineData(JsonWebKeyType.Rsa)]
79+
[InlineData(JsonWebKeyType.RsaHsm)]
80+
public void ComputeKeySize_RsaFamilyWithEmptyModulus_ReturnsNull(string kty)
81+
{
82+
// Empty material is "size unknown", not a 0-bit key.
83+
var jwk = new JsonWebKey { Kty = kty, N = new byte[0] };
84+
Assert.Null(JwkHelper.ComputeKeySize(jwk));
85+
}
86+
7687
// ---- ComputeKeySize: oct / oct-HSM ----
7788

7889
[Theory]
@@ -99,6 +110,17 @@ public void ComputeKeySize_OctFamilyWithoutMaterial_ReturnsNull(string kty)
99110
Assert.Null(JwkHelper.ComputeKeySize(jwk));
100111
}
101112

113+
[Theory]
114+
[Trait(Category.AcceptanceType, Category.CheckIn)]
115+
[InlineData(JsonWebKeyType.Octet)]
116+
[InlineData(OctHsm)]
117+
public void ComputeKeySize_OctFamilyWithEmptyMaterial_ReturnsNull(string kty)
118+
{
119+
// Empty material is "size unknown", not a 0-bit key.
120+
var jwk = new JsonWebKey { Kty = kty, K = new byte[0] };
121+
Assert.Null(JwkHelper.ComputeKeySize(jwk));
122+
}
123+
102124
// ---- ComputeKeySize: EC / EC-HSM ----
103125

104126
[Theory]

src/KeyVault/KeyVault/Helpers/JwkHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ internal static bool IsEC(string keyType)
7474

7575
private static int? BitsFromByteArray(byte[] material)
7676
{
77-
return material == null ? (int?)null : material.Length * 8;
77+
return (material == null || material.Length == 0) ? (int?)null : material.Length * 8;
7878
}
7979

8080
private static int? BitsFromCurveName(string curveName)

src/KeyVault/KeyVault/Models/Key/PSKeyVaultKeyIdentityItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ internal PSKeyVaultKeyIdentityItem(Track2Sdk.KeyProperties keyProperties, VaultU
103103
Created = keyProperties.CreatedOn?.UtcDateTime;
104104
Updated = keyProperties.UpdatedOn?.UtcDateTime;
105105
RecoveryLevel = keyProperties.RecoveryLevel;
106-
Tags = keyProperties.Tags.ConvertToHashtable();
106+
Tags = keyProperties.Tags?.ConvertToHashtable();
107107
KeySize = keyProperties.KeySize;
108108

109109
IsHsm = isHsm;

0 commit comments

Comments
 (0)