Sample code for 30+ languages & platforms
Dart

Create PKCS7 (CMS) EnvelopedData

Encrypt some data to a recipient by creating a PKCS7 (CMS) EnvelopedData structure. The data will be encrypted using a symmetric content-encryption algorithm (e.g., AES), and the randomly generated symmetric key will be encrypted using the recipient’s RSA public key extracted from their X.509 certificate.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  var success = false;

  final crypt = CkCrypt2();

  // Specify the encryption to be used.
  // "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped-data) message.
  crypt.cryptAlgorithm = 'pki';
  crypt.pkcs7CryptAlg = 'aes';
  crypt.keyLength = 256;
  crypt.oaepHash = 'sha256';
  crypt.oaepPadding = true;

  final cert = CkCert();

  // Use a certificate found in the Windows certificate store.
  success = true;
  try {
    cert.loadByCommonName('My Certificate');
  } on ChilkatException {
    success = false;
  }
  if (!success) {
    print(cert.lastErrorText);
    return;
  }

  // Tell the crypt object to use the certificate.
  crypt.setEncryptCert(cert);

  final toBeEncrypted = 'This string is to be encrypted.';

  // Get the result in multi-line BASE64 MIME format.
  crypt.encodingMode = 'base64_mime';
  crypt.charset = 'utf-8';

  final result = crypt.encryptStringENC(toBeEncrypted);
  if (!success) {
    print(crypt.lastErrorText);
    return;
  }

  // -------------------------------------------------------------------------
  // See the following example to decrypt what was created in this example
  // Decrypt PKCS7 (CMS) EnvelopedData
  // -------------------------------------------------------------------------

  print(result);

  // Sample output:

  // MIICSgYJKoZIhvcNAQcDoIICOzCCAjcCAQAxggHiMIIB3gIBADCBljCBgTELMAkGA1UEBhMCSVQx
  // EDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFj
  // dGFsaXMgUy5wLkEuMSwwKgYDVQQDDCNBY3RhbGlzIENsaWVudCBBdXRoZW50aWNhdGlvbiBDQSBH
  // MwIQPCWvkSv8oQ7xRmEHJ6TzEDA8BgkqhkiG9w0BAQcwL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJ
  // KoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUABIIBAKqHAPQNSsQoX7B2NH7QyEOWQRsSVs8oCHXmy8f4
  // MVZD2er3bvYUCIomxpwbLEAl14qjUIMynahooYGgqip7+4FqL301G+BVjZVfEhHWj+VI1dAWnWuL
  // VHlvc/pbQNBWqV8rKVJsNIsuAZkdj4WSwLVKxYkYX43B8fh/g71XN2DTJu7Z/824v48KBmgpQBOT
  // 2q7IcDGxNPAFN2p6eavIVGn2LvhEbf/Fszyj+GR5tMcnQP1BOLJ3s3JzUBbvj8hcZrF1Vhl9HnTU
  // YQx8G/KdW1mR+Wlhl3BWoK0LYKRTbnTx2BXOs0CY1SXOAdhKr01ZYjA+xW4nGzY0lfXS9QZjh9gw
  // TAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBKgQQw0xTbfmnt0zjWHo5SaQIp4AgxTVY9E/Ncqy6t+RM
  // 8y4c3Av62/wB8IpPUEmtM2OeuZo=
}