Exemplo n.º 1
0
        public async Task <string> GenerateTokenAsync(TokenInfo info)
        {
            var secret = await service
                         .GetSecretAsync(info.Owner)
                         .ConfigureAwait(false);

            if (secret == null || secret.Value == null)
            {
                secret = Secret.Generate(info.Owner, 9);
                await service.AddSecretAsync(secret);
            }

            var content = JsonSerializer.Serialize(
                info.Content,
                typeof(IEnumerable <string>),
                new JsonSerializerOptions()
            {
                IgnoreNullValues = true
            });

            var owner = Encoding.UTF8.GetBytes(info.Owner);

            this.cipher.Encrypt(
                Encoding.UTF8.GetBytes(secret.Value),
                Encoding.UTF8.GetBytes(content),
                owner,
                out var checksum,
                out var data);

            return(Token.Create(data, owner, checksum).ToString());
        }