Skip to content

Commit 30c2487

Browse files
svenzikmrts
authored andcommitted
Allow id-card authentication when Extended Key Usage is not present in certificate
WE2-1027 Signed-off-by: Sven Mitt <[email protected]>
1 parent bbd6281 commit 30c2487

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

src/WebEid.Security/Validator/CertValidators/SubjectCertificatePurposeValidator.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,21 @@ public Task Validate(X509Certificate2 subjectCertificate)
5353
{
5454
try
5555
{
56+
var keyUsage = subjectCertificate.Extensions.OfType<X509KeyUsageExtension>().FirstOrDefault();
57+
if (keyUsage == null)
58+
{
59+
throw new UserCertificateMissingPurposeException();
60+
}
61+
if ((keyUsage.KeyUsages & X509KeyUsageFlags.DigitalSignature) != X509KeyUsageFlags.DigitalSignature)
62+
{
63+
throw new UserCertificateWrongPurposeException();
64+
}
5665
var usages = subjectCertificate.Extensions.OfType<X509EnhancedKeyUsageExtension>().ToArray();
5766
if (!usages.Any())
5867
{
59-
throw new UserCertificateMissingPurposeException();
68+
// Digital Signature extension present, but Extended Key Usage extension not present,
69+
// assume it is an authentication certificate (e.g. Luxembourg eID).
70+
return Task.CompletedTask;
6071
}
6172

6273
if (usages.SelectMany(oid => oid.EnhancedKeyUsages.OfType<Oid>())

0 commit comments

Comments
 (0)