示例#1
0
        async public Task <bool> CreateLockerAsync(SecretsLocker secretsLocker, CancellationToken cancellationToken)
        {
            if (String.IsNullOrWhiteSpace(secretsLocker?.Name))
            {
                throw new StatusMessageException("Invalid locker name");
            }

            var di = new DirectoryInfo($"{ _rootPath }/{ secretsLocker.Name }");

            if (di.Exists)
            {
                throw new StatusMessageException($"Locker { secretsLocker.Name } already exists");
            }

            di.Create();

            byte[] buffer = Encoding.UTF8.GetBytes(
                _cryptoService.EncryptText(_blobSerializer.SerializeObject(secretsLocker)));

            using (var fs = new FileStream($"{ di.FullName }/_item.meta", FileMode.OpenOrCreate,
                                           FileAccess.Write, FileShare.None, buffer.Length, true))
            {
                await fs.WriteAsync(buffer, 0, buffer.Length);
            }

            return(true);
        }
示例#2
0
        async public Task <bool> UpadteLockerAsync(SecretsLocker secretsLocker, CancellationToken cancellationToken)
        {
            var fi = new FileInfo($"{ _rootPath }/{ secretsLocker.Name }/_item.meta");

            if (!fi.Exists)
            {
                throw new StatusMessageException($"Locker { secretsLocker.Name } not exists");
            }
            ;

            byte[] buffer = Encoding.UTF8.GetBytes(
                _cryptoService.EncryptText(_blobSerializer.SerializeObject(secretsLocker)));

            fi.Delete();

            using (var fs = new FileStream($"{ fi.FullName }", FileMode.OpenOrCreate,
                                           FileAccess.Write, FileShare.None, buffer.Length, true))
            {
                await fs.WriteAsync(buffer, 0, buffer.Length);
            }

            return(true);
        }
        async public Task <IActionResult> OnPostAsync()
        {
            string lockerName = String.Empty;

            return(await SecureHandlerAsync(async() =>
            {
                if (!ModelState.IsValid)
                {
                    throw new StatusMessageException($"Type a valid locker name.");
                }

                var locker = new SecretsLocker()
                {
                    Name = CreateLockerInput.Name,
                    Description = CreateLockerInput.Description
                };
                await _secretsVaultDb.CreateLockerAsync(locker, CancellationToken.None);

                lockerName = locker.Name;
            },
                                            onFinally : () => RedirectToPage("EditLocker/Index", new { id = lockerName }),
                                            successMessage : "",
                                            onException : (ex) => Page()));
        }