Skip to content

Commit 48a1311

Browse files
changed to get end entity
1 parent c742f57 commit 48a1311

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

SslStoreCaProxy/SslStoreCaProxy.cs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
using Microsoft.Extensions.Logging;
1515
using Newtonsoft.Json;
1616
using System.Linq;
17+
using Keyfactor.PKI.X509;
18+
1719

1820
namespace Keyfactor.AnyGateway.SslStore
1921
{
@@ -323,15 +325,30 @@ public async Task<AnyCAPluginCertificate> GetSingleRecord(string caRequestId)
323325
var orderStatusRequest = _requestManager.GetOrderStatusRequest(caRequestId);
324326
_logger.LogTrace($"orderStatusRequest JSON {JsonConvert.SerializeObject(orderStatusRequest)}");
325327

326-
var certResponse = await client.SubmitOrderStatusRequestAsync(orderStatusRequest);
327-
_logger.LogTrace($"certResponse JSON {JsonConvert.SerializeObject(certResponse)}");
328+
var orderStatusResponse = await client.SubmitOrderStatusRequestAsync(orderStatusRequest);
329+
_logger.LogTrace($"orderStatusResponse JSON {JsonConvert.SerializeObject(orderStatusResponse)}");
330+
331+
var certStatus = _requestManager.MapReturnStatus(orderStatusResponse?.OrderStatus.MajorStatus);
332+
var certificate = string.Empty;
333+
334+
if (certStatus == (int)EndEntityStatus.GENERATED)
335+
{
336+
var downloadCertificateRequest = _requestManager.GetCertificateRequest(caRequestId);
337+
var certResponse = await client.SubmitDownloadCertificateAsync(downloadCertificateRequest);
338+
if (!certResponse.AuthResponse.IsError)
339+
{
340+
var fullChain = string.Join("\n", certResponse.Certificates.Select(c => c.FileContent));
341+
var endEntityCert = X509Utilities.ExtractEndEntityCertificateContents(fullChain, null);
342+
certificate = Convert.ToBase64String(endEntityCert.RawData);
343+
}
344+
}
328345

329346
_logger.MethodExit();
330347
return new AnyCAPluginCertificate
331348
{
332349
CARequestID = caRequestId,
333-
Certificate = string.Empty,
334-
Status = _requestManager.MapReturnStatus(certResponse?.OrderStatus.MajorStatus)
350+
Certificate = certificate,
351+
Status = certStatus
335352
};
336353
}
337354

@@ -378,10 +395,12 @@ public async Task Synchronize(BlockingCollection<AnyCAPluginCertificate> blockin
378395
var certResponse = await client.SubmitDownloadCertificateAsync(downloadCertificateRequest);
379396
if (!certResponse.AuthResponse.IsError)
380397
{
381-
fileContent = _requestManager.GetCertificateContent(certResponse.Certificates, orderStatusResponse.CommonName);
398+
var fullChain = string.Join("\n", certResponse.Certificates.Select(c => c.FileContent));
399+
var endEntityCert = X509Utilities.ExtractEndEntityCertificateContents(fullChain, null);
400+
fileContent = Convert.ToBase64String(endEntityCert.RawData);
382401
}
383402
}
384-
403+
385404
if ((certStatus == (int)EndEntityStatus.GENERATED && fileContent.Length > 0) ||
386405
certStatus == (int)EndEntityStatus.REVOKED)
387406
{

0 commit comments

Comments
 (0)