예제 #1
0
        public async Task <IActionResult> Get()
        {
            try
            {
                var clientCert = Request.HttpContext.Connection.ClientCertificate;

                // Validate signature
                var(msgErrorSign, certOut, type) = await ValidateSignatureAsync(Request);

                if (!string.IsNullOrEmpty(msgErrorSign))
                {
                    return(CreateErrorResponse(msgErrorSign, clientCert == null ? "Client cert emtpy." : ""));
                }

                // Return client cert information
                if (clientCert != null)
                {
                    var sans = CertValidator.ParseOneRecordIDs(clientCert);
                    return(CreateResultResponse(clientCert, sans));
                }

                // Return signed cert in config, maybe this cert must get from URA
                return(CreateResultResponse(certOut));
            }
            catch (Exception ex)
            {
                return(CreateExceptionResponse(ex));
            }
        }
예제 #2
0
 /// <summary>
 /// The function base process the return data to client
 /// </summary>
 /// <param name="cert">X509Certificate2 data</param>
 /// <returns></returns>
 private JsonResult ProcessRequest(X509Certificate2 cert)
 {
     return(new JsonResult(new OneRecordDummyResponse
     {
         subcriberID = new OneRecordTLSID
         {
             desc = Constants.TYPE_USER_CERTIFICATE,
             subjectDN = cert?.Subject,
             validFrom = "" + cert?.NotBefore,
             validTo = "" + cert?.NotAfter,
             issuerDN = cert?.Issuer,
             lastAuthenticatedAt = "" + DateTime.UtcNow,
             oneRecordIDList = CertValidator.ParseOneRecordIDs(cert)
         },
         result = new OneRecordDummyData(),
         timestamp = DateTime.UtcNow.Ticks,
         message = Constants.VERIFY_OK,
     }));
 }