Ejemplo n.º 1
0
        private static CertificateCtModel GetCtModel(X509Certificate2 certificate)
        {
            var model     = new CertificateCtModel();
            var extension = certificate.Extensions[KnownOids.X509Extensions.CertificateTimeStampListCT];

            if (extension != null)
            {
                var scts = SctDecoder.DecodeData(extension);
                foreach (var sct in scts)
                {
                    var log = CtLogs.FindByLogId(sct.LogId);
                    model.Signatures.Add(
                        new SctSignatureModel
                    {
                        HashAlgorithm      = sct.HashAlgorithm,
                        SignatureAlgorithm = sct.SignatureAlgorithm,
                        LogIdHex           = BitConverter.ToString(sct.LogId).Replace("-", ""),
                        Timestamp          = sct.Timestamp,
                        LogName            = log?.Name ?? "Unknown",
                        LogUrl             = log?.Url ?? "Unknown",
                        Index               = sct.Index,
                        SignatureHex        = BitConverter.ToString(sct.Signature).Replace("-", ""),
                        RevocationEffective = CtLogs.RevokedCtLogs.FirstOrDefault(l => l.LogId.MemoryCompare(sct.LogId))?.RevocationEffective
                    }
                        );
                }
            }
            return(model);
        }