none
Authenticode RRS feed

  • Pergunta

  • 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

    terça-feira, 27 de julho de 2010 13:15

Respostas

  • 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

    http://msdn.microsoft.com/en-us/library/system.reflection.module.getsignercertificate.aspx

     

    http://msdn.microsoft.com/en-us/library/system.reflection.module_methods.aspx


    Just Be Humble Malange!
    quarta-feira, 28 de julho de 2010 19:29
    Moderador