Atraso na Assinatura de um Assembly
Uma organização pode ter par de chaves bem protegido que os desenvolvedores não têm acesso diário.A chave pública geralmente está disponível, mas o acesso a chave privada é restrito a apenas alguns indivíduos.Ao desenvolver conjuntos de módulos com nomes de alta segurança, cada conjunto que referencia destinos de conjuntos com nome de alta segurança contém o símbolo do chave pública usado para fornecer um nome de alta segurança ao assembly em questão.Isso requer que a chave pública esteja disponível durante o processo de desenvolvimento.
Você pode usar a autenticação atrasada ou parcial no tempo de compilação para reservar espaço no arquivo executável portátil (PE) para a assinatura de nome com alta segurança, mas adiar a autenticação real até algum estágio posterior (normalmente antes de entregar o assembly).
As seguintes etapas descrevem o processo de autenticar com atraso um conjunto de módulos (assembly):
Obtenha a parte da chave pública do pat de chaves que a organização que fará a eventual assinatura.Normalmente essa chave está no formato de um arquivo .snk, que pode ser criado usando a ferramenta Strong Name (Sn.exe) fornecida pelo Windows Software Development Kit (SDK).
Anote o código-fonte para o assembly com dois atributos personalizados de System.Reflection:
AssemblyKeyFileAttribute, que passa o nome do arquivo que contém a chave pública como um parâmetro para seu construtor.
AssemblyDelaySignAttribute, que indica que o atraso na assinatura está sendo usado por passar TRUE como um parâmetro para o construtor.Por exemplo:
<Assembly:AssemblyKeyFileAttribute("myKey.snk")> <Assembly:AssemblyDelaySignAttribute(true)>
[assembly:AssemblyKeyFileAttribute("myKey.snk")] [assembly:AssemblyDelaySignAttribute(true)]
O compilador insere a chave pública no manifesto do assembly e reserva espaço no arquivo PE para a assinatura completa com nome de alta segurança.A chave pública real deve ser armazenada enquanto o assembly é compilado para que outros conjuntos que fazem referência a este conjunto de módulos (assembly) possam obter a chave para armazenar em sua própria referência de assembly.
Porque o assembly não tem uma assinatura válida com nome de alta segurança, a verificação dessa assinatura deve ser desativada.Você pode fazer isso usando a opção –VR com a ferramenta Strong Name.
O exemplo a seguir desativa a verificação para um conjunto de módulos (assembly) denominado myAssembly.dll.
sn –Vr myAssembly.dll
Cuidado: Use o -VR opção durante o desenvolvimento.Adicionar um conjunto de módulos à lista de ignorar verificação cria uma vulnerabilidade na segurança.Um assembly mal-intencionado poderia usar o nome de assembly totalmente especificado (nome de assembly, versão, cultura e símbolo de chave pública) do conjunto adicionado à lista de ignorar verificação para forjar sua identidade.Isso permitiria que o conjunto mal-intencionado também ignorasse a verificação.
Posteriormente, normalmente apenas antes da remessa, envie o conjunto de módulos (assembly) para a autoridade de autenticação de sua organização para a assinatura de nome com alta segurança usando a opção – R com a ferramenta Strong Name.
O exemplo a seguir assina um conjunto de módulos (assembly) denominado myAssembly.dll com um nome de alta segurança usando o par de chaves sgKey.snk.
sn -R myAssembly.dll sgKey.snk
Consulte também
Tarefas
Como: Criar um público / emparelhar de chaves emparelharticular
Conceitos
Referência
Ferramenta Strong Name (Sn.exe)