02 enero 2007

Ensamblados con nombre seguro. Firmas

Hoy que me estoy pegando un día de vacaciones porque estoy con fiebre (creo que tengo gripe) me he puesto a mirar los artículos que tenía sobre versiones de ensamblados, que ya son bastantes, a ver si por fin saco algo en claro. Tengo muchos temas, así que voy contando paso a paso. Empiezo por la firma de ensamblados.
Para firmar un ensamblado, se usa una arquitectura de clave pública. Sirve para varias cosas, y además es obligatorio si tu ensamblado es un componente compartido (como sucede con Nibi.Negocio) ya que es requerido al incluir un ensamblado en la GAC (caché global de ensamblados). Tiene otras ventajas, como que asegura que nadie ha cambiado tu ensamblado (tampering) desde que lo compilaste, para lo que usa una suma de comprobación protegida por la clave privada. Leí que había que generar la clave con una utilidad sn.exe, y después incluirla en un atributo de AssemblyInfo.cs, pero en 2005 no sólo no es necesario sino que recibes un warning del compilador por usar un atributo obsoleto. Sólo hay que buscar en la ayuda del VS2005 para saber cómo hacerlo ahora: Han incluido una pestaña Firma en Propiedades del proyecto para simplificar esto, y desde ahí podemos crear y asignar el archivo de firma. El archivo .snk sólo puede crearse en la raíz del proyecto, pero después de generado puede moverse a la carpeta Properties (me gusta más) y la asignación se actualiza sola.