Pessoal,
Estou gerando uma DLL que eu gostaria que não fosse chamada por outra aplicação senão a minha... eu não sei se tem alguma forma melhor de fazer isso... mas o que eu pensei em fazer foi pegar, no construtor da classe, o
certificado que assinou o Assembly que chamou ela... com
Assembly
.GetCallingAssembly().ManifestModule.GetSignerCertificate()
e verificar se esse certificado é o meu... nao sei se é a melhor maneira, ou se o framework tem algum recurso já integrado
pra fazer isso que eu quero... mas funciona...
bom... a questão é que, na documentaçao do GetSignerCertificate() diz:
"Returns an X509Certificate object
corresponding to the certificate included in the Authenticode signature of the assembly which this module belongs to. If the assembly has not been Authenticode signed, null is returned."
A assinatura com StrongName, segundo a documentação:
"O objetivo final do strong-name é garantir integridade
da aplicação e não a identificação do publisher"
entao StrongName nao me serve... eu teria que assinar o
assembly com Authenticode... mas dai, talvez por ignorancia minha, eu não consigo assinar com Authenticode de dentro do Visual Studio e debugar o codigo... só com linha de comando, mas dai quando eu vou pro visual studio, obviamente, ele
sobreescreve o .exe e perde o authenticode...
bom.. depois de todo o lero-lero, as minhas questões
são:
1 - Tem alguma maneira melhor de garantir que a DLL não
seja usada por outro programa ?
2 - Li na documentação que Authenticode serve
mais para instaladores, algo impede que eu assine o meu EXE ?
3 - Tem como colocar o Authenticode dentro do Visual Studio
e debugar o codigo ?
Obrigado
Luiz