Como definir a chave de criptografia Base64 como variável de ambiente (sistema) no Windows 10

0

Eu tenho um aplicativo que se conecta ao BigQuery usando vários credenciais do arquivo .json. Sendo que este aplicativo irá eventualmente residir no Pivotal Cloud Foundry e precisará ser configurado como User Provided Environment Variable, usei a criptografia base64 para codificar o conteúdo do arquivo .json em uma chave base64.

A ideia é usar a chave como o valor da variável de ambiente para poder incluir todas as informações de conexão da API do BigQuery do arquivo .json em uma variável de ambiente - usando a chave base64, em vez de ter muitos pares chave = valor variáveis para conseguir isso.

Nota: A chave base64 possui 3.165 caracteres - incluindo novos caracteres de linha.

Para referência, um pequeno trecho da chave base64 é:

nROdXlnWnVmb1k0UnVqTFJlcjgrckZJRlpZdVxuYUFsMklsWk9MUjd3cmRzL0RDZytYdGJGYUp4MzlRaWZHaEp6b2hyblNvbUpyY3ExL2d4aVFYYlplUUtCZ0hja1xua0hqL1M0Wkk0d0dWTzJreEN4QzduYnB1STVQRTRWczRHMjE0RkpldnhPR1hDQ3phOFB5bGJPbm5KUFdZZUJoT1xuV3IwMzduazd5eXpja0p6cE\
p0R0hlNkZLNFJNcHFIRHBmU0pMOE80T2YwWi9UYUZ3ZTM4bE9XbWc1Q2NLUC9XUVxuUjhYdlgzS25UZXRQUWxVeXJwK1BNVHNNdG4yVnBad1hMZDNJTExKYkFvR0JBS1FaODdVbEE1S0kwV3JqVnRic1xuaXJ6UkdDaGhVWE90SXVDT09zWlQyOXNpeFVoQmZka1JzTFpCcnB6VkVWektXeGhBY05lRERRbTJkVzBta09\
1elxuTkNVUlBpbGZYT0pLRkdNQ2lOdkIyZW5OMDVBK2ExdVdOWFFkclQzRG10OG5MS3FFYnp6VTNheXIweWVsc0tKeVxuNE9BVExMK3M5M29oRFV6WEhRZlVtbnNMXG4tLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tXG4iLAogICJjbGllbnRfZW1haWwiOiAidG1wLWFkLWxvY2tvdXRAaW8xLWRhdGFsYWtlLXZpZXdz\

Eu sei que isso pode ser definido no macOS como variável de sistema (eu já vi e aplicativo faz conexões e funciona corretamente), mas eu não sou capaz de fazer isso no Windows 10.

Estou ciente da restrição de tamanho máximo para variáveis de sistema no Windows, mas não encontrei uma solução para definir isso usando "GOOGLE_JSON_B64" como nome de variável de ambiente e depois a chave 3,165 como o valor da variável de ambiente.

Alguém tem uma solução alternativa? Devo ler a chave de um arquivo? Se sim, como isso seria feito no Windows 10? Então, preciso definir o Path de alguma forma?

Qualquer ideia seria muito apreciada.

    
por user3216506 10.09.2018 / 20:33

1 resposta

0

A documentação da Microsoft diz que uma variável de ambiente no Windows é limitada apenas a 32.767 caracteres ( link ). Não diz como criar uma variável muito longa.

O problema aqui é que as ferramentas que o Windows fornece, todas têm limites:

definir comando e a comando setx truncar valores para 1023 caracteres.

Pode-se definir variáveis de ambiente diretamente no registro em %código%, mas usando regedit para que irá falhar porque entrou seqüências através do teclado estão limitados a 2047 caracteres.

Tanto quanto eu posso ver, a única opção restante é escrever um pequeno programa que atualiza diretamente o registro. A função da API do Windows a ser usada é SetEnvironmentVariable , cuja documentação diz:

The maximum size of a user-defined environment variable is 32,767 characters.

Espera-se que isso, pelo menos, esteja correto. Você pode correr aqui até o comprimento de linha máximo que é aceito pelo compilador, mas em um programa você é capaz de construir uma cadeia tão longa em etapas.

    
por 10.09.2018 / 21:31