aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService/Security/RefreshTokenEncoder.cs
blob: 896788ffc0ce91bc30641891a5273e9a9475b017 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Tango.Core.Cryptography;

namespace Tango.MachineService.Security
{
    public class RefreshTokenEncoder<T>
    {
        public String Encode(T obj)
        {
            String json = JsonConvert.SerializeObject(obj);
            Rfc2898Cryptographer crypt = new Rfc2898Cryptographer();
            return crypt.Encrypt(json);
        }

        public T Decode(String token)
        {
            Rfc2898Cryptographer crypt = new Rfc2898Cryptographer();
            String json = crypt.Decrypt(token);
            return JsonConvert.DeserializeObject<T>(json);
        }
    }
}
an> eRetcode = _LMDFUInit(); if (eRetcode != DFU_OK) { switch (eRetcode) { case DFU_ERR_NOT_FOUND: throw gcnew InvalidOperationException(DFU_ERR_NOT_FOUND_ERROR); break; case DFU_ERR_INVALID_ADDR: throw gcnew InvalidOperationException(DFU_ERR_INVALID_ADDR_ERROR); break; default: throw gcnew InvalidOperationException(DFU_ERR_UNKNOWN_ERROR); break; } } } List<DFUDevice^>^ FirmwareUpdateManager::GetAvailableDevices(bool fetchTwineExtras) { int iDevIndex = 0; tLMDFUDeviceInfo devInfo; tLMDFUHandle hHandle; tLMDFUErr eRetcode; unsigned short usStringLen; char pcStringBuf[256]; bool g_bReset = false; List<DFUDevice^>^ devices = gcnew List<DFUDevice^>(); do { eRetcode = _LMDFUDeviceOpen(iDevIndex, &devInfo, &hHandle); if (eRetcode == DFU_OK) { tLMDFUDeviceInfo *psDevInfo = &devInfo; DFUDevice^ device = gcnew DFUDevice(psDevInfo, hHandle); device->VID = String::Format("0x{0}", psDevInfo->usVID); device->PID = String::Format("0x{0}", psDevInfo->usPID); //Device Name. usStringLen = sizeof(pcStringBuf); eRetcode = _LMDFUDeviceASCIIStringGet(hHandle, psDevInfo->ucProductString, pcStringBuf, &usStringLen); device->DeviceName = eRetcode == DFU_OK ? gcnew String(pcStringBuf) : "Unknown"; //Manufacturer. usStringLen = sizeof(pcStringBuf); eRetcode = _LMDFUDeviceASCIIStringGet(hHandle, psDevInfo->ucManufacturerString, pcStringBuf, &usStringLen); device->Manufacturer = eRetcode == DFU_OK ? gcnew String(pcStringBuf) : "Unknown"; //DFU Interface. usStringLen = sizeof(pcStringBuf); eRetcode = _LMDFUDeviceASCIIStringGet(hHandle, psDevInfo->ucDFUInterfaceString, pcStringBuf, &usStringLen); device->DFUInterface = eRetcode == DFU_OK ? gcnew String(pcStringBuf) : "Unknown"; //Serial Number. usStringLen = sizeof(pcStringBuf); eRetcode = _LMDFUDeviceASCIIStringGet(hHandle, psDevInfo->ucSerialString, pcStringBuf, &usStringLen); device->SerialNumber = eRetcode == DFU_OK ? gcnew String(pcStringBuf) : "Unknown"; //Max bytes transfer. device->MaxTransfer = psDevInfo->usTransferSize; //Current device mode. device->Mode = psDevInfo->bDFUMode ? DFUMode::DFU : DFUMode::RunTime; //Supports Tiva extensions. (Good for updates) device->SupportsTivaExtensions = psDevInfo->bSupportsTivaExtensions; //Attributes. device->WillDetach = psDevInfo->ucDFUAttributes & DFU_ATTR_WILL_DETACH; device->ManifestTolerant = psDevInfo->ucDFUAttributes & DFU_ATTR_MANIFEST_TOLERANT; device->UploadCable = psDevInfo->ucDFUAttributes & DFU_ATTR_CAN_UPLOAD; device->DownloadCable = psDevInfo->ucDFUAttributes & DFU_ATTR_CAN_DOWNLOAD; //Read device flash parameters. tLMDFUParams sDFU; if (device->SupportsTivaExtensions) { eRetcode = _LMDFUParamsGet(hHandle, &sDFU); if (eRetcode == DFU_OK) { device->AppStartAddress = sDFU.ulAppStartAddr; device->FlashTopAddress = sDFU.ulFlashTop; device->FlashBlockSize = sDFU.usFlashBlockSize; device->NumFlashBlocks = sDFU.usNumFlashBlocks; device->ImageLength = device->FlashTopAddress - device->AppStartAddress; device->FlashSize = device->FlashBlockSize * device->NumFlashBlocks; if (fetchTwineExtras) { device->FetchTwineExtras(); } } } devices->Add(device); } iDevIndex++; } while (eRetcode == DFU_OK); return devices; } } }