ex_openssl v0.1.3 ExOpenssl.Crypto.PKCS7
PKCS7 Handling. See ExOpenssl.Crypto.PKCS7
for IO.
Link to this section Summary
Functions
Decrypt pkcs7 pkcs7
using the recipients pkey
and cert
Encrypt binary input
for the recipients certs
Sign binary input
Verify Signature
Link to this section Types
Link to this type
flag()
flag()
flag() ::
:text
| :nocerts
| :nosigs
| :nochain
| :nointern
| :noverify
| :detached
| :binary
| :noattr
| :nosmimecap
| :nooldmimetype
| :crlfeol
| :stream
| :nocrl
| :partial
| :reuse_digest
| :no_dual_content
flag() :: :text | :nocerts | :nosigs | :nochain | :nointern | :noverify | :detached | :binary | :noattr | :nosmimecap | :nooldmimetype | :crlfeol | :stream | :nocrl | :partial | :reuse_digest | :no_dual_content
Link to this type
flags()
flags()
flags() :: [flag()]
flags() :: [flag()]
Link to this opaque
pkcs7()
(opaque)
pkcs7()
(opaque)
pkcs7()
pkcs7()
Link to this section Functions
Link to this function
decrypt(pkcs7, pkey, cert)
decrypt(pkcs7, pkey, cert)
decrypt(
pkcs7 :: pkcs7(),
pkey :: ExOpenssl.PKey.key(),
cert :: ExOpenssl.Crypto.X509.certificate()
) :: {:ok, binary()} | {:error, [ExOpenssl.Errors.Error.t()]}
decrypt( pkcs7 :: pkcs7(), pkey :: ExOpenssl.PKey.key(), cert :: ExOpenssl.Crypto.X509.certificate() ) :: {:ok, binary()} | {:error, [ExOpenssl.Errors.Error.t()]}
Decrypt pkcs7 pkcs7
using the recipients pkey
and cert
.
Examples
iex> [recipient] = ExOpenssl.Crypto.X509.from_pem!(File.read!("priv/test/cert.pem"))
iex> pkey = ExOpenssl.PKey.from_pem!(File.read!("priv/test/key.pem"))
iex> message = File.read!("priv/test/message_enc_foo.p7")
iex> {pkcs7, _} = ExOpenssl.Crypto.PKCS7.SMIME.read!(message)
iex> PKCS7.decrypt!(pkcs7, pkey, recipient)
"Foo"
Link to this function
decrypt!(pkcs7, pkey, cert)
decrypt!(pkcs7, pkey, cert)
decrypt!(
pkcs7 :: pkcs7(),
pkey :: ExOpenssl.PKey.key(),
cert :: ExOpenssl.Crypto.X509.certificate()
) :: binary() | no_return()
decrypt!( pkcs7 :: pkcs7(), pkey :: ExOpenssl.PKey.key(), cert :: ExOpenssl.Crypto.X509.certificate() ) :: binary() | no_return()
See decrypt/3
Link to this function
encrypt(certs, input, cipher, flags \\ [:stream])
encrypt(certs, input, cipher, flags \\ [:stream])
encrypt(
certs :: [ExOpenssl.Crypto.X509.certificate()],
input :: binary(),
cipher :: ExOpenssl.Symm.Cipher.cipher(),
flags :: flags()
) :: {:ok, pkcs7()} | {:error, [ExOpenssl.Errors.Error.t()]}
encrypt( certs :: [ExOpenssl.Crypto.X509.certificate()], input :: binary(), cipher :: ExOpenssl.Symm.Cipher.cipher(), flags :: flags() ) :: {:ok, pkcs7()} | {:error, [ExOpenssl.Errors.Error.t()]}
Encrypt binary input
for the recipients certs
.
Examples
iex> recipients = ExOpenssl.Crypto.X509.from_pem!(File.read!("priv/test/cert.pem"))
iex> cleartext = "Foo"
iex> {:ok, pkcs7} = PKCS7.encrypt(recipients, cleartext, :des_ede3_cbc)
iex> ExOpenssl.Crypto.PKCS7.SMIME.write!(pkcs7, cleartext)
"MIME-Version: 1.0...."
Link to this function
encrypt!(certs, input, cipher, flags \\ [:stream])
encrypt!(certs, input, cipher, flags \\ [:stream])
encrypt!(
certs :: [ExOpenssl.Crypto.X509.certificate()],
input :: binary(),
cipher :: ExOpenssl.Symm.Cipher.cipher(),
flags :: flags()
) :: pkcs7() | no_return()
encrypt!( certs :: [ExOpenssl.Crypto.X509.certificate()], input :: binary(), cipher :: ExOpenssl.Symm.Cipher.cipher(), flags :: flags() ) :: pkcs7() | no_return()
See encrypt/4
Link to this function
sign(signcert, pkey, certs \\ [], input, flags \\ [:stream])
sign(signcert, pkey, certs \\ [], input, flags \\ [:stream])
sign(
signcert :: ExOpenssl.Crypto.X509.certificate(),
pkey :: ExOpenssl.PKey.key(),
certs :: [ExOpenssl.Crypto.X509.certificate()],
input :: binary(),
flags :: flags()
) :: {:ok, pkcs7()} | {:error, [ExOpenssl.Errors.Error.t()]}
sign( signcert :: ExOpenssl.Crypto.X509.certificate(), pkey :: ExOpenssl.PKey.key(), certs :: [ExOpenssl.Crypto.X509.certificate()], input :: binary(), flags :: flags() ) :: {:ok, pkcs7()} | {:error, [ExOpenssl.Errors.Error.t()]}
Sign binary input
.
Examples
iex> [signcert] = ExOpenssl.Crypto.X509.from_pem!(File.read!("priv/test/cert.pem"))
iex> cleartext = "Foo"
iex> pkey = ExOpenssl.PKey.from_pem!(File.read!("priv/test/key.pem"))
iex> {:ok, pkcs7} = PKCS7.sign(signcert, pkey, cleartext)
iex> ExOpenssl.Crypto.PKCS7.SMIME.write!(pkcs7, cleartext)
"MIME-Version: 1.0...."
Link to this function
sign!(signcert, pkey, certs \\ [], input, flags \\ [:stream])
sign!(signcert, pkey, certs \\ [], input, flags \\ [:stream])
sign!(
signcert :: ExOpenssl.Crypto.X509.certificate(),
pkey :: ExOpenssl.PKey.key(),
certs :: [ExOpenssl.Crypto.X509.certificate()],
input :: binary(),
flags :: flags()
) :: pkcs7() | no_return()
sign!( signcert :: ExOpenssl.Crypto.X509.certificate(), pkey :: ExOpenssl.PKey.key(), certs :: [ExOpenssl.Crypto.X509.certificate()], input :: binary(), flags :: flags() ) :: pkcs7() | no_return()
See sign/5
Link to this function
verify(pkcs7, certs, store, indata \\ nil, flags \\ [:stream])
verify(pkcs7, certs, store, indata \\ nil, flags \\ [:stream])
verify(
pkcs7 :: pkcs7(),
certs :: [ExOpenssl.Crypto.X509.certificate()],
store :: [ExOpenssl.Crypto.X509.certificate()],
indata :: nil | binary(),
flags :: flags()
) :: {:ok, {true, binary()}} | {:error, [ExOpenssl.Errors.Error.t()]}
verify( pkcs7 :: pkcs7(), certs :: [ExOpenssl.Crypto.X509.certificate()], store :: [ExOpenssl.Crypto.X509.certificate()], indata :: nil | binary(), flags :: flags() ) :: {:ok, {true, binary()}} | {:error, [ExOpenssl.Errors.Error.t()]}
Verify Signature
Examples
iex> certs = ExOpenssl.Crypto.X509.from_pem!(File.read!("priv/test/cert.pem"))
iex> store = ExOpenssl.Crypto.X509.from_pem!(File.read!("priv/test/root-ca.pem"))
iex> message = File.read!("priv/test/message_sig_clear.p7")
iex> {pkcs7, bcount} = ExOpenssl.Crypto.PKCS7.SMIME.read!(message)
iex> PKCS7.verify(pkcs7, certs, store, bcount)
{:ok, {true, "Foo"}}
Link to this function
verify!(pkcs7, certs, store, indata \\ nil, flags \\ [:stream])
verify!(pkcs7, certs, store, indata \\ nil, flags \\ [:stream])
verify!(
pkcs7 :: pkcs7(),
certs :: [ExOpenssl.Crypto.X509.certificate()],
store :: [ExOpenssl.Crypto.X509.certificate()],
indata :: nil | binary(),
flags :: flags()
) :: {true, binary()} | no_return()
verify!( pkcs7 :: pkcs7(), certs :: [ExOpenssl.Crypto.X509.certificate()], store :: [ExOpenssl.Crypto.X509.certificate()], indata :: nil | binary(), flags :: flags() ) :: {true, binary()} | no_return()
See verify/5