Написать класс С# с нужным функционалом

Андрей18 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
05.04.2018

Нужно написать класс DownloadManager для С# c методом update(), который реализовует безопасный апдейт программы.

Пошаговый алгоритм работы метода update()

1. Загружает урл https://somewebsite.com/some/file.json, с примерно таким содержимым

{

var1: value,

var2: value,

var3: value,

groupVar: base64_json,

groupVarRSAHashHEX: HEX_hash,

groupVar2: base64_json,

groupVarRSAHashHEX2: HEX_hash,

}

2. Переменные var1, var2, var3 заносит во внутренний масив, чтоб их можно было использовать в других классах, как-то типа DownloadManager.config.var1 или типа того в других классах

3. В groupVar и groupVar находяться строки, для которых нужно сгенерировать RSA подпись и проверить, чтоб она совпадала с groupVarRSAHashHEX/groupVarRSAHashHEX2. Если не совпадает - выбросить exception.

4. Если совпадает - нужно сделать base64_decode для groupVar и groupVar2, в результате получиться json вида

{

groupId: 123

group1Var1: value,

group1Var2: value,

group1Var3: value,

xorKey: someString,

group1Files: [

[

name: 'filename',

content: 'base64_encoded_content'

],

[

name: 'filename2',

url: 'http://domain.com/files/123/123123',

"emd5": "752a10022cf379ddeff7e1044eb1fd19",

"dmd5": "96ae5abe22369d13e76ad7c760d080ed"

],

]

}

5. Переменные group1Var1, group1Var2, group1Var3 нужно также сохранить во внутреннем массиве, чтоб их можно было использовать в других классах, как-то типа DownloadManager.config.var1 или типа того в других классах

6. Дальне нужно проверить, существует ли папка bin/{groupId}/ Если существует - вызывается приватный метод check, если не существует - download

7. download сохраняет файлы в папку bin/{groupId}/

Файлы бывают двух типов - текстовые и бинарные. Текстовые содержат 2 поля name - имя файла и content - base64_content.

В content также нужно заменять подстроки вида {var1} и {group1Var1} на значения из внутреннего масива

Бинарные файлы нужно вначале скачать с url, проверить md5 скачанного файла (поле emd5), проксорить файл используя xorKey, проверить md5 полученного "дешифрованного файла" - dmd5, сохранить его в bin/{groupId}/{name}

8. Check проверяет текстовые файлы (генерирует content и проверяет с содержимым на диске) и бинарные (по полю dmd5)

код для RSA шифрования можно легко нагуглить, например https://stackoverflow.com/questions/37531044/how-do-i-decode-a-base64-pcks-8-representation-of-a-private-key-in-net

Заявки фрилансеров