Para un proyecto de compañía, desarrollar una aplicación de escritorio que requiere claves de API de diferentes servicios web.
He estado yendo a través de y la preparación de esta aplicación para ser de código abierto y correr a través de el problema de qué hacer con esas claves.
El problema es este: Mi entendimiento es que estas claves de API no debe ser visible para cualquier persona que utilice la aplicación o ver/modificar el código fuente. Desde el webservice del final, estas claves de API se utilizan para identificar las aplicaciones que tienen acceso a su API, y permitir/bloquear el uso, según corresponda. En la mayoría de las condiciones de servicio para la recepción de estas claves es en realidad explícitamente que las claves no deben ser compartidas con el mundo.
En la actualidad todos mis llaves codificadas de forma rígida, pero estoy en un callejón sin salida en cuanto a cómo manejar la situación de las claves privadas de la abrir-fuente de la aplicación:
-Si las claves siguen siendo codificado, que van a ser visible al público tan pronto como mi código fuente.
-Realmente no puedo omitir el archivo de origen con las claves de la distribución de código, desde luego no va a compilar. Esta técnica se soluciona el problema, sino que introduce una nueva, inaceptable uno.
-Si presiono las teclas de un .ini u otro archivo de configuración, y simplemente no incluir ese archivo en mi público repositorio de código, todavía tendría que ser distribuido con el binario de mi aplicación para que la aplicación funcione, así que mis llaves sería visible en la distribución de la aplicación en lugar de la distribución de código fuente. No es una mejora. Cualquier cifrado de gimnasia he intentado utilizar en este archivo INI sería la adición de la complejidad para cualquiera que intente modificar mi código.
Así, con respecto a mi codebase (actualmente bajo Mercurial para el control de versiones), ¿cuál es la mejor manera de gestionar todo para que el código pueda ser pública, pero mis llaves estancia privada?