Beispiel #1
0
        public async Task <IActionResult> GetUserDeviceIds([FromRoute] string address)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (Client.WalletAddress.Decode58Check(address) == null)
            {
                return(NotFound());
            }

            var user = await _context.GetUserAsync(address, users => users.Include(u => u.DeviceIds));

            if (user == null || string.IsNullOrEmpty(user.PublicKey))
            {
                return(NotFound());
            }

            var publicKey = user.PublicKey.DecodeBase64();
            var encrypter = new ECKey();
            var deviceIds = user.DeviceIds.Select(deviceId => encrypter.Encrypt(deviceId.DeviceId.Select(c => (byte)c).ToArray(), publicKey).EncodeBase64());

            return(Content(JsonConvert.SerializeObject(deviceIds,
                                                       new JsonSerializerSettings()
            {
                NullValueHandling = NullValueHandling.Ignore,
                DateTimeZoneHandling = DateTimeZoneHandling.Utc
            })));
        }