Crear un par de claves
Para firmar un ensamblado con un nombre seguro, es necesario tener un par de claves publica y privada. Este par de claves criptográficas pública y privada se usa al realizar la compilación para crear un ensamblado con nombre seguro. Se puede generar un par de claves utilizando la herramienta Nombre seguro (Sn.exe). Normalmente, los archivos de par de claves tienen la extensión .snk.
Para crear un par de claves
En el símbolo del sistema, escriba el siguiente comando:
sn –k <nombre de archivo>
En este comando, nombre de archivo es el nombre del archivo de salida que contiene el par de claves.
En el siguiente ejemplo se crea un par de claves denominado sgKey.snk
.
sn -k sgKey.snk
Si se piensa retrasar la firma de un ensamblado y se controla todo el par de claves (lo que es improbable aparte de los escenarios de pruebas), se pueden usar los comandos siguientes para generar un par de claves y, después, extraer de él la clave pública y ponerla en otro archivo. Primero, cree el par de claves:
sn -k keypair.snk
Después, extraiga la clave pública del par de claves y cópiela en otro archivo:
sn -p keypair.snk public.snk
Una vez que haya creado el par de claves, debe ubicar el archivo donde las herramientas de firma de nombre seguro lo puedan encontrar. Al firmar un ensamblado con un nombre seguro, la herramienta Assembly Linker (Al.exe) busca el archivo de clave en relación con el directorio actual y el directorio de salida. Si se usan compiladores de la línea de comandos, no hay más que copiar la clave en el directorio actual que contenga los módulos de código.
Si se usa un IDE, como Visual Studio .NET, para firmar un ensamblado con un nombre seguro, se debe saber dónde busca el IDE el archivo de clave. Por ejemplo, Visual Basic .NET busca el archivo de clave en el directorio que contiene la solución de Visual Studio, mientras que el compilador de C# busca el archivo de clave en el directorio que contiene el binario. Ponga el archivo de clave en el directorio del proyecto apropiado y establezca los atributos de archivo como se indica a continuación:
<Assembly: AssemblyKeyFileAttribute("key.snk")>
[C#]
[assembly: AssemblyKeyFileAttribute(@"..\..\key.snk")]