• Как получить Public Key сертификата идентичный с выводу openssl?

    @llexus Автор вопроса
    Алексей Немиро , спасибо за подсказку! Примерно то и получилось. Может кому пригодится:
    public static IEnumerable<string> GetPublicKeysList(IReadOnlyList<Certificate> serverCertificates)
            {
                for (var i = 0; i < serverCertificates.Count; i++)
                {
                    string publicKey = null;
                    try
                    {
                        var certificate = new X509Certificate2(serverCertificates[0].GetCertificateBlob().ToArray());
                        var ms = new MemoryStream(certificate.RawData);
                        using (var reader = new BerReader(ms))
                        {
                            var asnCert = reader.ReadToEnd(true);
                            var pkNode = asnCert.ChildNodes[0].ChildNodes[0].ChildNodes[6]; // тут лежит сам ключ
                            byte[] pkBuffer = new byte[pkNode.Length + (pkNode.DataOffsetToStream - pkNode.StartPosition)];
                            ms.Seek(pkNode.StartPosition, SeekOrigin.Begin);
                            ms.Read(pkBuffer, 0, pkNode.Length + (int)(pkNode.DataOffsetToStream - pkNode.StartPosition)); // чтобы не потерять последние 4 байта
                            publicKey = Convert.ToBase64String(pkBuffer);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw new SecurityException($"Cant get public key {ex.Message}");
                    }
                    yield return publicKey;
                }
            }
    Ответ написан
    Комментировать
  • Можно ли в Asp.Net Core сделать редирект до роутинга?

    @llexus Автор вопроса
    Петр Да, то что надо! Запилил базовый класс и от него наследовал остальные.

    public class BaseController : Controller
        {
            public override void OnActionExecuting(ActionExecutingContext context)
            {
                base.OnActionExecuting(context);
    
                if (redirect)
                    context.Result = new RedirectResult(Url.Action("Action", "Controller"));
            }
        }
    Ответ написан
    Комментировать
  • Почему падает приложение при втором вызове DownloadStringTaskAsync?

    @llexus Автор вопроса
    Очень странно, но сейчас код из моего стартового поста заработал.. вчера я пофиксил его заменой строчки
    List locs = await Locator.GetCitiesAsync(search);
    на
    foreach (Location loc in await Locator.GetCitiesAsync(search))
    ...
    и все заработало. Видимо вся суть была к привязке Taskа к какой-либо локальной переменной. try/catch'ами оборачивал все и вся, но ничего не ловилось, а просто падало.. Эмулятор перезапускать не пробовал, может дело где то в глубинах системы было..
    Ответ написан
    Комментировать
  • Как получить куки при входе на сайт с использованием PCL's HttpWebRequest, если страница редиректит?

    @llexus Автор вопроса
    Подсказали решение на форуме msdn
    На всякий случай выложу кусок кода побольше, вдруг кому пригодится, но сначала надо установить портабл версию HttpClientа

    Install-Package Microsoft.Net.Http

    HttpClientHandler hch = new HttpClientHandler();
    hch.AllowAutoRedirect = false;
    HttpClient hc = new HttpClient(hch);
    
    StringContent queryString = new StringContent(string.Format("login={0}&password={1}", Uri.EscapeUriString(username), Uri.EscapeUriString(password));
    queryString.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");
    
    HttpResponseMessage msg = await hc.PostAsync("http://www....", queryString);
    string responseBody = await msg.Content.ReadAsStringAsync();
    ...
    Ответ написан
    Комментировать