IF ! AssinaLoadCertificado( cCertCN, @ocert, @oCapicomStore, cRetorno )
RETURN cRetorno
ENDIF
BEGIN SEQUENCE WITH __BreakBlock()
cRetorno := "Erro Assinatura: Não carregado MSXML2.MXDigitalSignature.5.0"
xmldsig := Win_OleCreateObject( "MSXML2.MXDigitalSignature.5.0" )
cRetorno := "Erro Assinatura: Template de assinatura não encontrado"
xmldsig:signature := oDOMDocument:selectSingleNode(".//ds:Signature")
cRetorno := "Erro assinatura: Certificado pra assinar XmlDSig:Store"
xmldsig:store := oCapicomStore
dsigKey := xmldsig:CreateKeyFromCSP( oCert:PrivateKey:ProviderType, oCert:PrivateKey:ProviderName, oCert:PrivateKey:ContainerName, 0 )
IF ( dsigKey = NIL )
cRetorno := "Erro assinatura: Ao criar a chave do CSP."
BREAK
ENDIF
Seguindo o fonte: a mensagem vai ser essa entre as duas linhas seguintes
XmlDSig:CreateKeyFromCSP() me parece que é criar uma cópia da chave de assinatura
E ela depende do conteúdo de oCapicomStore.
oCapicomStore é criada na chamada AssinaLoadCertificado( ... @oCapicomStore )
oCapicomStore := Win_OleCreateObject( "CAPICOM.Store" )
oCapicomStore:open( _CAPICOM_MEMORY_STORE, 'Memoria', _CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED )
oCapicomStore:Add( oCert )
Trata-se de pegar o certificado.
E _CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED, deve ser com o nÃvel mais alto de segurança disponÃvel.
Num nÃvel menor, até acessa o certificado, mas pode não conseguir assinar.
Pode ter a ver com a forma de instalar o certificado, ou algum requisito adicional pra instalação.
Coisa que começou a ficar mais frequente de uns tempos pra cá.
Trabalho com NFE desde 2008, quase 10 anos já.
Vi isso acontecer com 2 certificados.
Não sei se depende da "fabricante" do certificado.