openssl_pkcs7_encrypt

Descripción

Sintaxis de llamada

bool openssl_pkcs7_encrypt(string $ArchEntrada, string $ArchSalida, mixed $CertsDest, array $Cabeceras[, int $Indicadores[, int $IdCifrado]])

Parámetros de entrada

  • ArchEntrada: Camino y nombre del archivo que contiene el mensaje a cifrar.
  • ArchSalida: Camino y nombre del archivo en el que se almacenará el resultado.
  • CertsDest: Un certificado o un array de certificados X509 pertenecientes a los destinatarios para los que se va a cifrar el mensaje.
  • Cabeceras: Vector asociativo con los encabezados a incluir en el mensaje. Como mínimo deberá existir la clave To facilitando las direcciones de los destinatarios. Éstas pueden ser recuperadas de los certificados.
  • Indicadores: Este parámetro puede ser una combinación de indicadores (véase la tabla siguiente) que modificarán el algoritmo de cifrado.
  • IdCifrado: Opcionalmente puede indicarse el algoritmo de cifrado a emplear. Por defecto será OPENSSL_CIPHER_RC2_40. Las constantes permitidas son las indicadas en la segunda de las tablas que aparecen a continuación de este texto.
Indicadores que modifican el proceso de cifrado/descifrado
Constante Significado
PKCS7_BINARY Si la información a cifrar es binaria, no texto, debe activarse este indicador para evitar que se incluyan los saltos de carro habituales en los mensajes S/MIME
PKCS7_DETACHED Por defecto este indicador está activo, de forma que si el mensaje se cifra y además se firma, la firma es incluida como un texto separado y sin cifrar según el estándar MIME multipart/signed. Desactivándolo se consigue que la firma sea cifrada y unida al mensaje, lo cual es más seguro, pero no todos los clientes de correo podrán leerlo ya que no todos contemplan el uso de S/MIME
PKCS7_NOATTR Al firmar un mensaje normalmente se incluyen en la firma datos como la fecha y hora de la firma o los algoritmos que se contemplan. Activando este indicador no se incluirá dicha información
PKCS7_NOCERTS Cuando se firma un mensaje S/MIME se suele incluir en el mensaje cifrado el certificado del remitente, a fin de que el destinatario pueda verificarlo. Si se activa este indicador no se incluirá el certificado, por lo que el destinatario deberá obtenerlo por otros medios
PKCS7_NOCHAIN No encadenar la verificación de los certificados con los que se va a firmar
PKCS7_NOINTERN Cuando se descifra un mensaje S/MIME que viene firmado, normalmente se busca en el propio mensaje el certificado correspondiente para verificarlo a menos que se active este indicador
PKCS7_NOSIGS No intentar verificar las firmas incluidas en el mensaje a descifrar
PKCS7_NOVERIFY No verificar los certificados correspondientes a las firmas del mensaje a descifrar
PKCS7_TEXT Agrega al mensaje cifrado cabeceras en formato de texto simple o, en el caso de descifrar el mensaje, las elimina
Indicadores que seleccionan el algoritmo de cifrado/descifrado
Constante Algoritmo de cifrado
OPENSSL_CIPHER_RC2_40 RC2 con clave de 40 bits
OPENSSL_CIPHER_RC2_64 RC2 con clave de 64 bits
OPENSSL_CIPHER_RC2_128 RC2 con clave de 128 bits
OPENSSL_CIPHER_DES DES
OPENSSL_CIPHER_3DES Triple DES

Valor de retorno

  • bool: Devuelve TRUE si se ha completado el cifrado sin problemas o FALSE en caso contrario.

Finalidad de la función

Esta función está pensada para cifrar el contenido de archivos de texto empleando certificados X509, en los cuales se aloja la clave pública del destinatario. El archivo generado incluye las cabeceras del mensaje y el texto ya cifrado, dispuesto para ser enviado por un cliente de correo electrónico. De existir varios destinatarios habrá que facilitar los certificados en un array, consiguiendo así que el mismo mensaje se cifre para cada uno con su correspondiente clave.

El destinatario podrá descifrar el mensaje sirviéndose de la función openssl_pkcs7_decrypt, su certificado y la clave privada asociada.

Véase también

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License