CERTIFICADO DIGITAL

DUHHH 17/05/2010 09:51:24
#341926
Bom dia... Eu tenho a seguinte função

   Public Function SelecionarCertificado(ByVal CerSerie As String) As X509Certificate2
Dim certificate As New X509Certificate2
Try
Dim certificatesSel As X509Certificate2Collection
Dim store As New X509Store([Ô]MY[Ô], StoreLocation.CurrentUser)
store.Open(OpenFlags.OpenExistingOnly)
Dim certificates As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindByTimeValid, DateTime.Now, True).Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, True)
If (CerSerie = [Ô][Ô]) Then
certificatesSel = X509Certificate2UI.SelectFromCollection(certificates, [Ô]Certificados Digitais[Ô], [Ô]Selecione o Certificado Digital para uso no aplicativo[Ô], X509SelectionFlag.SingleSelection)
If (certificatesSel.Count = 0) Then
certificate.Reset()
Throw New Exception([Ô]Nenhum certificado digital foi selecionado ou o certificado selecionado está com problemas.[Ô])
Else
certificate = certificatesSel.Item(0)
End If
Else
certificatesSel = certificates.Find(X509FindType.FindBySubjectDistinguishedName, CerSerie, True)
If (certificatesSel.Count = 0) Then
certificate.Reset()
Throw New Exception([Ô]Certificado digital não encontrado[Ô])
Else
certificate = certificatesSel.Item(0)
End If
End If
store.Close()
Return certificate
Catch exception As Exception
Throw New Exception(exception.Message)
Return certificate
End Try
End Function


Tento pegar esse certificado pelo nome e quando eu vou em ferramamentas -> opções da internet -> conteudo -> cerificados -> Aba: Pessoal. Pego o nome dele. E não da certo nem a pau.
MALA 18/05/2010 15:10:24
#342094
Resposta escolhida
Public Function BuscaCertificadoNome(ByVal NomeCert As String) As X509Certificate2
Dim oX509Cert As New X509Certificate2
Dim store As New X509Store([Ô]My[Ô], StoreLocation.CurrentUser)
Dim collection As New X509Certificate2Collection
Dim collection1 As New X509Certificate2Collection
Dim collection2 As New X509Certificate2Collection
Dim scollection As New X509Certificate2Collection

oX509Cert = New X509Certificate2()
store = New X509Store([Ô]MY[Ô], StoreLocation.CurrentUser)
store.Open(OpenFlags.ReadOnly Or OpenFlags.OpenExistingOnly)
collection = store.Certificates
collection1 = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, False)
collection2 = collection.Find(X509FindType.FindByKeyUsage, X509KeyUsageFlags.DigitalSignature, False)

[ô]Encontra o certificado digital pelo nome do mesmo, se precisar pergunta por isso
[ô]Resolvido em 13/05/2009 às 15:05h
scollection = collection.Find(X509FindType.FindBySubjectDistinguishedName, NomeCert, False)

If (scollection.Count = 0) Then
Return Nothing
Else
oX509Cert = scollection.Item(0) [ô]Para selecionar o item em Vb.NET
Return oX509Cert
End If
End Function

Esta e funcao que estou usando e esta dando certo.
DUHHH 20/05/2010 08:36:30
#342258
scollection = collection.Find(X509FindType.FindBySubjectName, NomeCert, False)

Fiz isso e deu certo.
Tópico encerrado , respostas não são mais permitidas