Click or drag to resize
GDSecureMimeEncoder Class
Encoder class used to generate a SMIME message.
Inheritance Hierarchy
SystemObject
  GDGDSecureMimeEncoder

Namespace:  GD
Assembly:  GD (in GD.dll) Version: 255.255.255.255
Syntax
public sealed class GDSecureMimeEncoder

The GDSecureMimeEncoder type exposes the following members.

Constructors
  NameDescription
Public methodGDSecureMimeEncoder
Initializes new GDSecureMimeEncoder object based on binary data of message passed as argument.
Top
Methods
  NameDescription
Public methodEncrypt
Encrypts the stream using the recipient's public key.
Public methodEquals (Inherited from Object.)
Public methodFlushAsync
Flushes all previously invoked operations in an asynchronous operation. If one of operations fail, method throws exception.
Public methodGetHashCode (Inherited from Object.)
Public methodGetType (Inherited from Object.)
Public methodSign(GDSecureMimeCertificate, GDSMIMEDigest, GDSMIMESignFormat)
Signs a message.
Public methodSign(GDSecureMimeCertificate, IListGDSecureMimeCertificate, GDSMIMEDigest, GDSMIMESignFormat)
Signs a message.
Public methodToString (Inherited from Object.)
Top
Examples

The following example show how to sign and encrypt message using GDSecureMimeEncoder class. We assume that needed certificates are already in local secure store.

1. First of all you have to add proper using statements at the top of your code file.

using Windows.Security.Cryptography;
using System.Collections.Generic;
using Windows.Storage.Streams;
using System.Diagnostics;
using System;
using GD;

...

2. Next you can build code for sign and encrypt message using GDSecureMimeEncoder like that.

...

string message = "From:foo.bar@blackberry.com\r\nTo:john.doe@blackberry.com\r\n\r\nhello."
IBuffer messageBuffer = CryptographicBuffer.ConvertStringToBinary(message, BinaryStringEncoding.Utf8);

string email = "john.doe@blackberry.com";

IList<GDSecureMimeCertificate> recipientCerts = GDSecureMimeCertificate.GetCertificates(email);
IList<GDSecureMimeCertificate> signingCerts = GDSecureMimeCertificate.GetSigningCertificates();

GDSecureMimeEncoder encoder = new GDSecureMimeEncoder(messageBuffer);

encoder.Sign(signingCerts[0], GDSMIMEDigest.RSA_SHA1, GDSMIMESignFormat.OpaqueSigned);
encoder.Encrypt(recipientCerts, GDSMIMECipher.AES_256_CBC);

IBuffer smimeMessageBuffer;

try
{
    smimeMessageBuffer = await encoder.FlushAsync();
}
catch(InvalidArgumentException e)
{
    Debug.WriteLine("InvalidArgumentException thrown when encoding for SMIME. Message: {0}", e.Message);
    return;
}
catch(Exception e)
{
    Debug.WriteLine("Exception thrown when encoding for SMIME. Message: {0}", e.Message);
    return;
}

...
See Also

Reference