Las "extensiones" de nombre de archivo son irrelevantes. No hay un estándar real para estas pocas letras, solo tradiciones poco mantenidas. El estándar PKCS # 7 (ahora denominado CMS ) describe cómo codificar y decodificar firmado y / o cifrado y / o autenticado " mensajes "en secuencias de bytes. Cómo estas secuencias de bytes se almacenan o intercambian está completamente fuera de alcance; en particular, CMS no tiene ningún concepto de "archivo", y mucho menos "nombre de archivo".
Estas extensiones de nombre son importantes solo para la interacción del usuario; a saber, lo que sucede cuando haces doble clic en el archivo. Los sistemas operativos derivados de MS-Dos (por ejemplo, Windows) intentarán inferir un comportamiento razonable mirando el final del nombre del archivo; Pero ese es el final de esto. En cualquier caso, un objeto CMS tiene la siguiente estructura general:
ContentInfo ::= SEQUENCE {
contentType ContentType,
content [0] EXPLICIT ANY DEFINED BY contentType }
ContentType ::= OBJECT IDENTIFIER
lo que significa que el archivo contenidos comienza con un encabezado explícito que identifica inequívocamente el tipo de datos (por ejemplo, 1.2.840.113549.1.7.2
, que significa "datos firmados, siguiendo la sintaxis SignedData
de CMS sección 5.1 ).
Dado que los contenidos no son ambiguos, todo lo que debe hacer es usar como nombre de archivo lo que active el comportamiento correcto de la interfaz para lo que quiere usar el archivo CMS. Hay varios usos. Por ejemplo, como CMS SignedData
tiene un campo para incrustar certificados, a menudo se ha utilizado (ab) como una especie de formato de archivo para certificados "con una cadena" (pero sin una clave privada). He visto la extensión de archivo ".p7b" utilizada para este rol.