E-Mail signieren mit .net Framework 4.7

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von steel75.

    E-Mail signieren mit .net Framework 4.7

    Hallo zusammen,
    ich versuche einen Mail Body zu signieren leider bis jetzt ohne Erfolg mit .net Framework 4.7 (habs aber auch mit 4.8 probiert)
    Das laden des Zertifikats X.509 über Filesystem pfx /cer und über den LocalStore Zertifikatsspeicher funktioniert.

    Der Mail Versand als solches funktioniert ohne Probleme und

    die folgende Methode sollte eigntlich einen übergebenen Body einer Html Mail as String signieren und als Byte() zurückgeben.

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography.xml
    2. Imports System.Security.Cryptography.Pkcs
    3. Imports System.Security.Cryptography.X509Certificates
    4. Private _cert As X509Certificate2
    5. Private _certificate2Collection As X509Certificate2Collection
    6. Friend Function SignMailBody(ByVal sBody As String) As Byte()
    7. Try
    8. 'erstelle ContentInfo (was wird signiert?)
    9. Dim data As Byte() = Encoding.UTF8.GetBytes(sBody)
    10. Dim content As ContentInfo = New ContentInfo(data)
    11. 'erstelle ein SignedCms Object welches die signierte Nachricht repräsentiert
    12. Dim signedMessage As SignedCms = New SignedCms(content)
    13. 'erstelle ein CmsSigner Object mit dem Zertifikat, welches den Signierer repräsentiert
    14. Dim signer As CmsSigner = New CmsSigner(_cert)
    15. signer.DigestAlgorithm = New Oid("SHA256") 'der Algorythmus
    16. signer.IncludeOption = X509IncludeOption.WholeChain 'Zertifikatskette x.509 komplett
    17. 'signiere die Nachricht
    18. signedMessage.ComputeSignature(signer, False)
    19. Dim cmsMessage As Byte() = signedMessage.Encode() 'signieren
    20. Return cmsMessage
    21. Catch ex As CryptographicException
    22. Return Nothing
    23. End Try
    24. End Function


    Aber...
    • contentInfo
    • SignedCms
    • CmsSigner
    sind unbekannt auch mit dem Imports. Auch wenn ich in den Projekt Einstellungen ist ein Verweis setze bleiben die drei Methoden unbekannt.
    Nach mehreren Anleitungen im Netz sollte es aber so gehen.

    Hat einer eine Idee?
    Was übersehe ich hier? Wie kann ich die drei Methoden einbinden?

    Danke euch schon mal!
    VG steel
    Du musst einen Verweis hinzufügen.

    Ab in den ProjektmappenExplorer, rechtsclick auf Verweise, "Verweis hinzufügen".

    "Assemblys" aufklappen, "Framework" wählen, in dieser Liste bei System.Security ein häkchen rein und dann klappt das auch mit den Importen.
    danke Takafusa

    werde ich probieren, tatsächlich den Import auf diese Weise noch nicht probiert, sondern nur in der ersten Ansicht unter Verweise >> unten den Haken drin bei

    System.Security.Cryptography
    System.Security.Cryptography.X509Certificates

    ich sag Bescheid ob das geholfen hat.




    Hallo Takafusa,
    ja das wars jetzt läufts. Manchmal sieht man den Wald vor lauter Bäumen nicht.

    Besten Dank!

    Beiträge zusammengefügt ~VaporiZed
    VG steel

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()