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.
Aber...
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!
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
- Imports System.Security.Cryptography.xml
- Imports System.Security.Cryptography.Pkcs
- Imports System.Security.Cryptography.X509Certificates
- Private _cert As X509Certificate2
- Private _certificate2Collection As X509Certificate2Collection
- Friend Function SignMailBody(ByVal sBody As String) As Byte()
- Try
- 'erstelle ContentInfo (was wird signiert?)
- Dim data As Byte() = Encoding.UTF8.GetBytes(sBody)
- Dim content As ContentInfo = New ContentInfo(data)
- 'erstelle ein SignedCms Object welches die signierte Nachricht repräsentiert
- Dim signedMessage As SignedCms = New SignedCms(content)
- 'erstelle ein CmsSigner Object mit dem Zertifikat, welches den Signierer repräsentiert
- Dim signer As CmsSigner = New CmsSigner(_cert)
- signer.DigestAlgorithm = New Oid("SHA256") 'der Algorythmus
- signer.IncludeOption = X509IncludeOption.WholeChain 'Zertifikatskette x.509 komplett
- 'signiere die Nachricht
- signedMessage.ComputeSignature(signer, False)
- Dim cmsMessage As Byte() = signedMessage.Encode() 'signieren
- Return cmsMessage
- Catch ex As CryptographicException
- Return Nothing
- End Try
- End Function
Aber...
- contentInfo
- SignedCms
- CmsSigner
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