Я пытаюсь перенести код Java на C #, и мой успех пока отстает от веб-сертификатов ...
Я могу успешно получить те же результаты, передавая параметры без сравнения, но я чувствую, что это необходимо реализовать ...
Это основной метод, который я использую для входа на сервер и отправки данных: Как использовать HttpWebRequest для входа на сайт?
... после этого я извлекаю данные из потока ответов. Все работает, но мне интересно, нужно ли мне даже сравнивать.
[Java] ~ что изначально сделано
// connection is an HttpsURLConnection object
Certificate[] certs = connection.getServerCertificates();
byte[] bytes = getKey(); // gets the file.key byte array
Certificate c = certs[0];
PublicKey pk = c.getPublicKey();
byte[] data = pk.getEncoded();
for (int i = 0; i < data.length; i++) {
if (data[i] == bytes[i]) continue;
throw new RuntimeException("Public key mismatch");
}
[C #] ~ что я сейчас пытаюсь сделать
byte[] bytes = Properties.Resources.Key;
// connection is a HttpWebRequest object
X509CertificateCollection collection = connection.ClientCertificates;
X509Certificate c = collection[0];
// I'm practically guessing on the parameters because I'm new to the
// web handling in C#...
PublicKey pk = new PublicKey(
new Oid(),
new AsnEncodedData(Encoding.UTF8.GetBytes(urlParameters)),
new AsnEncodedData(c.GetPublicKey()));
byte[] data = pk.EncodedKeyValue.RawData;
for (int i = 0; i < data.Length; i++)
if (data[i] == bytes[i]) continue;
else throw new Exception("Public key mismatch");