smimeasym 3.3.0

A wrapper around openssl's S/MIME asymmetrical encryption, that is compatible with the openssl cli

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

smimeasym S/MIME asymmetrical encryption


So the problem to solve is that I needed a function that encrypts an array of ubytes with multiple public keys. The resulting, encrypted, array of bytes, when saved to a file, should be decrypted-able by any private key matching any of the used public key. This should be possible with the openssl cli.


Key pair suitable

openssl req -x509 -newkey rsa:4096 -days 3650 -nodes -subj "/C=US/ST=*/L=*/O=*/OU=*/CN=Frank/" -keyout frank.key -out

There are two main functions

ubyte[] smimeEncryption(ubyte[] buf, string[] publicKeyFilenames);

ubyte[] smimeDecryption(ubyte[] buf, string privateKeyFilename);

X509* loadCert(string filename);
X509* loadCertFromString(string theCert);
void freeCert(X509* certToFree);

ubyte[] smimeEncryptionWithCerts(ubyte[] buf, X509*[] certs);
EVP_PKEY* loadKeyFromString(string data, string password = "");
ubyte[] smimeDecryptionWithKey(ubyte[] buf, EVP_PKEY* key);

The opencli should be able to decrypt created files from the data from smimeEncryption with the following shell command

openssl smime -decrypt -in secrets.txt.enc -inform PEM -inkey bob.key


The password for the private key frankwithpass.key is foobar.

  • Robert Schadek
3.3.0 2022-Feb-04
3.2.0 2021-May-21
3.1.0 2021-May-21
3.0.0 2021-May-18
2.0.4 2021-May-13
Show all 13 versions
Download Stats:
  • 2 downloads today

  • 27 downloads this week

  • 104 downloads this month

  • 5669 downloads total

Short URL: