Errores de seguridad y de firma
De un vistazo
Sección titulada «De un vistazo»Esta página documenta las excepciones del dominio de seguridad del árbol del
espacio de nombres NextPDF\Security. Cada entrada nombra la clase, indica cuándo
se lanza, lista los campos que devuelve su getContext() y ofrece un paso de
recuperación.
La mayoría de estas clases extienden SecurityException, que extiende
NextPdfException e implementa ContextAwareExceptionInterface. Eso significa que
getContext(): array devuelve diagnósticos estructurados y sin secretos que se
pueden encaminar a canalizaciones de registro o de supervisión del rendimiento de
aplicaciones (APM). Capturar SecurityException para atrapar en un único bloque
todo fallo del dominio de seguridad; capturar una subclase específica cuando se
necesita su carga útil tipada.
Unas pocas clases de este árbol extienden directamente RuntimeException en lugar
de SecurityException. Están señaladas abajo; no exponen getContext() y la
mayoría están documentadas como señales internas de control de flujo que no
conviene esperar capturar en código de aplicación.
Convención de campos de contexto
Sección titulada «Convención de campos de contexto»| Aspecto | Comportamiento |
|---|---|
| Contrato base | NextPdfException::getContext() devuelve []; las subclases lo redefinen. |
| Higiene de secretos | Los mensajes y el contexto omiten material de clave en bruto, texto en claro, PIN y bytes del vector de inicialización (IV). Las claves se afloran solo como un prefijo de huella digital. |
SecurityException | Base abstracta; no transporta campos propios. Las subclases definen la carga útil. |
Tipo base
Sección titulada «Tipo base»SecurityException
Sección titulada «SecurityException»- Cuándo se lanza. Nunca se lanza directamente; es la base abstracta del
dominio de seguridad. Existe para que un único bloque
catch (SecurityException $e)pueda atrapar fallos de integridad de cifrado autenticado, defensas de reutilización de nonce, el vínculo entre PDF/A y cifrado, fallos de gestión de claves y fallos de PKI. - Campos de contexto. Ninguno propio. Hereda el valor predeterminado vacío de
NextPdfException; las subclases rellenan la carga útil. - Recuperación. Capturar la subclase concreta para un manejo accionable, o
SecurityExceptionpara un encaminamiento grueso de incidentes de seguridad.
Errores de cifrado y de cifrado autenticado
Sección titulada «Errores de cifrado y de cifrado autenticado»Los lanza el cifrador AES-GCM (Modo Galois/Contador) y la protección de PDF/A. Para orientación basada primero en el síntoma, véase Cifrado y permisos.
DecryptionFailedException
Sección titulada «DecryptionFailedException»- Cuándo se lanza. Un descifrado de cifrado autenticado con datos asociados (AEAD) falla por un motivo ajeno a la manipulación: texto cifrado truncado, un IV ausente o una clave incorrecta suministrada en el límite de la API, donde no había suficiente material para que la comprobación de integridad llegara a ejecutarse. Es un error de configuración o de transporte, no un incidente de seguridad.
- Campos de contexto.
algorithm(por ejemploAES-256-GCM),reason(por ejemplociphertext shorter than IV+tag). - Recuperación. Verificar que el texto cifrado, el IV y la clave estén
completos y correctamente enmarcados; no tratar esto como manipulación.
Contrástese con
TamperedDataException.
TamperedDataException
Sección titulada «TamperedDataException»- Cuándo se lanza. La etiqueta de autenticación AEAD no supera la
verificación. La etiqueta cubre el texto cifrado más los datos autenticados
asociados (AAD); si cualquiera de los dos se modificó tras el cifrado, la
llamada subyacente
openssl_decrypt()devuelvefalse. Este subtipo distinto permite aflorar una alerta de grado incidente de seguridad en lugar de un error de enmarcado. - Campos de contexto.
algorithm,ciphertext_length(longitud del texto cifrado rechazado, excluidos el IV y la etiqueta). - Recuperación. Tratar como manipulación o como una clave/IV incorrectos. No reintentar a ciegas; investigar el origen del texto cifrado. Conforme a ISO/TS 32003:2023 §5.2 y NIST SP 800-38D §6.5, una comprobación de etiqueta fallida significa que los datos no son auténticos.
NonceReuseException
Sección titulada «NonceReuseException»- Cuándo se lanza. Se le pide a AES-GCM cifrar dos veces con el mismo par de clave e IV. El cifrador se defiende con un contador monótono por instancia y, como defensa en profundidad, un conjunto de hash en tiempo de ejecución de cada par (huella de clave, IV) emitido. Como el contador descarta las colisiones por construcción, esta activación es un indicador de defecto de prioridad crítica que nunca debe ocurrir en producción. Reutilizar un par de clave/IV compromete todo el flujo de claves (ISO/TS 32003:2023 §5.2 NOTE 2; NIST SP 800-38D §8.3).
- Campos de contexto.
key_fingerprint_prefix(los primeros 8 caracteres hex de SHA-256(key)),iv_length(siempre 12 para ISO/TS 32003),reason(hashset-collisionocounter-rollover, que distingue un error de refactor que derrota el contador del disparador de 2^63 del contador) eiv_fixed_field_hex(el campo fijo del IV, presente solo cuando se suministra, reportado bajo su propia clave y nunca mal etiquetado como la huella de clave). - Recuperación. Abortar de inmediato y rotar la clave. Presentar un informe de defectos; esto indica un error en el cifrador, no una entrada incorrecta del llamador.
GcmInvocationLimitExceededException
Sección titulada «GcmInvocationLimitExceededException»- Cuándo se lanza. Se alcanza un recuento de invocaciones opcional de
seguridad de uso de NIST SP 800-38D §8.3 para una clave AES-GCM dada. Es un
gancho de telemetría de defensa en profundidad para los llamadores que quieren
hacer cumplir el límite recomendado por la especificación (alrededor de 2^32
invocaciones por clave) antes que los límites arquitectónicos dentro del
cifrador. No se activa por defecto; solo el auxiliar
assertWithinSafetyBound()la lanza. - Campos de contexto.
key_fingerprint_prefix,invocation_count(el recuento actual deencrypt(), igual o superior al límite),invocation_limit(el límite opcional). - Recuperación. Rotar la clave del documento (construir un cifrador nuevo con material de clave nuevo) antes de que la probabilidad acumulada de colisión y de falsificación deje de ser insignificante, o ampliar la política del llamador para negar la continuidad del servicio.
IncompatiblePdfAModeException
Sección titulada «IncompatiblePdfAModeException»- Cuándo se lanza. Se intenta una operación de cifrado sobre un documento
etiquetado como PDF/A. La familia PDF/A (PDF/A-2, PDF/A-3, PDF/A-4) prohíbe el
cifrado de manera uniforme: conforme a ISO 19005 §6.1.3 la clave
Encryptno debe estar presente en el tráiler, e ISO 19005-4:2020 Anexos A y B heredan esto sin modificación. No existe combinación permitida de PDF/A y cifrado. - Campos de contexto.
pdfa_mode(por ejemplopdfa4,pdfa3),encryption_operation(la llamada rechazada, por ejemplouseAesGcm). - Recuperación. Para producir un documento cifrado, omitir la llamada
enablePdfA(); para producir un documento de archivo, omitir la llamada de cifrado. Véase Validación de PDF/A y PDF/UA.
Aplicación de la política criptográfica
Sección titulada «Aplicación de la política criptográfica»CryptoPolicyViolationException
Sección titulada «CryptoPolicyViolationException»- Cuándo se lanza. Una política criptográfica configurada rechaza un
algoritmo, una fortaleza de clave o un cifrado seleccionados por una operación de
firma, cifrado o hashing del núcleo. Es el límite de fallo cerrado para la
aplicación de la conformidad (por ejemplo FIPS 140-2/3, eIDAS o una política
empresarial personalizada) y la lanza
CryptoPolicyEnforcerantes de producir cualquier firma o texto cifrado, de modo que una operación que viola la política nunca puede emitir un artefacto no aprobado. Distinta de un fallo acotado de una operación de OpenSSL y de un fallo de la primitiva de firma: es un rechazo de política de una solicitud por lo demás válida. Alineada con NIST SP 800-131A Rev. 2 e ISO/IEC 19790:2025 §7. - Campos de contexto.
policy(nombre de la política, por ejemploFIPS 140-3 Strict),category(hash,signature,encryptionokey-strength),item(el elemento rechazado, por ejemplo un identificador de objeto (OID), un nombre de cifrado orsa/1024),reason. - Recuperación. Seleccionar un algoritmo, una longitud de clave o un cifrado que la política nombrada apruebe, o ajustar la política si se es su propietario. Encaminar el contexto estructurado al manual de conformidad documentado.
Gestión de claves
Sección titulada «Gestión de claves»Existen dos clases con el mismo nombre. Comparten la raíz SecurityException, de
modo que un único bloque catch (SecurityException $e) atrapa ambas, pero
transportan cargas útiles distintas. Importar por el nombre totalmente cualificado
cuando se necesita una forma específica.
KeyManagementException (ciclo de vida: NextPDF\Security\Exception)
Sección titulada «KeyManagementException (ciclo de vida: NextPDF\Security\Exception)»- Cuándo se lanza. Una operación de gestión de claves falla antes de que la clave la consuma una primitiva de firma o cifrado: fallos de análisis de claves de Correo con Privacidad Mejorada (PEM), PKCS#12 o PKCS#11; fallos de derivación de claves (HKDF, PBKDF2, scrypt); rechazo de Envoltura de Claves AES (RFC 3394) ante una clave de cifrado de claves incorrecta; un módulo de seguridad de hardware (HSM) que devuelve Reglas de Codificación Distinguida (DER) malformadas; o un desajuste de longitud de semilla Ed25519.
- Campos de contexto.
operation(por ejemploload_pem,kek_derive,key_wrap),key_type(por ejemploRSA,EC-P256,Ed25519,AES-256),reason. Nunca se incluye material de clave en bruto. - Recuperación. Inspeccionar la operación y el tipo de clave nombrados, corregir el material de clave de origen o la entrada de derivación, y reintentar.
KeyManagementException (vía de firma: NextPDF\Security\Signature\Exception)
Sección titulada «KeyManagementException (vía de firma: NextPDF\Security\Signature\Exception)»- Cuándo se lanza. Un proveedor de firmante topa con un fallo de gestión de
claves: la versión de clave solicitada es desconocida, está deshabilitada, está
programada para su destrucción, carece de permiso de firma o es inutilizable por
otra causa. Esto es lo que lanzan
RsaPssSigneryLocalKeySignerProviderante fallos de claves en vivo. Constructores con nombre:unknownKeyVersion()ykeyVersionDisabled(). - Campos de contexto.
providerId,keyVersion,reason. Captadores:providerId(),keyVersion(),reason(). - Recuperación. Rotar o reasignar permisos a la clave, o seleccionar una
versión de clave utilizable, y reintentar. Distinta de
SignatureFailedException, que señala que la propia primitiva de firma falló.
Para orientación basada primero en el síntoma sobre niveles inalcanzables y capacidades ausentes, véase Fallos de firma y marca de tiempo.
SignatureFailedException (R4-13: NextPDF\Security\Exception)
Sección titulada «SignatureFailedException (R4-13: NextPDF\Security\Exception)»- Cuándo se lanza. Una operación criptográfica de firma falla: una primitiva
de firma RSA, ECDSA o Ed25519 devuelve
falseo una salida de longitud incorrecta; un HSM o un token PKCS#11 responde con un estado de no éxito; el ensamblaje deSignedDatade la Sintaxis de Mensajes Criptográficos (CMS) falla ante un certificado o una cadena malformados; o una autoverificación de ida y vuelta Ed25519 falla. El código nuevo debería preferir este subtipo R4-13 a la excepción de firma heredada acoplada a PAdES. - Campos de contexto.
operation(por ejemplosign,verify,build_cms),algorithm(por ejemplorsa-pkcs1v15-sha256,ed25519),reason. Captadores:getOperation(),getAlgorithm(),getReason(). - Recuperación. Leer la operación y el algoritmo, corregir la entrada (clave, cadena de certificados o disponibilidad de la dorsal) y reintentar. Alineada con la postura de manejo de claves de fallo cerrado de ETSI EN 319 142-1.
SignatureFailedException (SPI: NextPDF\Security\Signature\Exception)
Sección titulada «SignatureFailedException (SPI: NextPDF\Security\Signature\Exception)»- Cuándo se lanza. Una implementación de
SignerProviderInterfaceno puede completar una operación de firma por cualquier motivo no categorizado como gestión de claves: error del controlador de la dorsal, material de clave malformado o E/S de HSM irrecuperable. Es el comodín del contrato de firma de fallo cerrado, donde cada primitiva lanza ante un fallo en lugar de devolvernull,falseo una cadena vacía. Constructor con nombre:forProvider(). - Campos de contexto.
providerId,reason. Captadores:providerId(),reason(). - Recuperación. Inspeccionar el id del proveedor y el motivo, corregir la
dorsal del proveedor o el material de clave, y reintentar. Ramificar entre
KeyManagementExceptiony este tipo para separar «la clave es incorrecta» de «la primitiva falló».
SignatureLevelUnreachableException
Sección titulada «SignatureLevelUnreachableException»- Cuándo se lanza. El nivel de conformidad PAdES solicitado no puede honrarse
bajo la infraestructura actual de tiempo de ejecución (lo más frecuente, una
autoridad de marca de tiempo ausente para B-T y superiores) y el llamador no ha
concedido permiso para degradar. El valor predeterminado es de fallo cerrado: el
motor se niega en lugar de producir de forma silenciosa un nivel inferior mientras
anuncia el superior, lo que sería una regresión de grado eIDAS. Alineada con
ETSI EN 319 142-1 §6. Nótese que esta clase extiende directamente
NextPdfException(noSecurityException). - Campos de contexto.
requestedLevel,highestAchievableLevel,reason. Captadores:requestedLevel(),highestAchievableLevel(),reason(). - Recuperación. Leer
reasonpara identificar la infraestructura ausente y aportarla (por ejemplo, configurar una autoridad de marca de tiempo), o pasarallowDegradation: trueaPadesOrchestratorpara aceptar a propósito el nivel más alto alcanzable.
SignerProviderNotFoundException
Sección titulada «SignerProviderNotFoundException»- Cuándo se lanza. Se le pide a
SignerProviderRegistry::get()un id de proveedor que no está registrado. ImplementaNotFoundExceptionInterfacede PSR-11, de modo que el registro cumple el contrato de contenedor de PSR-11. Constructor con nombre:forId(). Esta clase extiendeRuntimeExceptiony no exponegetContext(). - Campos de contexto. Ninguno. El id no registrado aparece en el mensaje.
- Recuperación. Registrar el proveedor bajo el id esperado antes de solicitarlo, o corregir el id que se pasa al registro.
Hashing (SHAKE256)
Sección titulada «Hashing (SHAKE256)»Estas extienden RuntimeException y no exponen getContext(). SHAKE256 es la
función de salida extensible SHA-3 que requieren algunas vías de ISO/TS 32001.
Shake256NotAvailableException
Sección titulada «Shake256NotAvailableException»- Cuándo se lanza. En el momento del resumen, cuando el proveedor seleccionado
no puede satisfacer la solicitud. Constructores con nombre:
noBackend()(ningún backend SHAKE256 funcional en este anfitrión, en todos los niveles intentados) yffiCallFailed()(una llamada EVP de OpenSSL enlazada por FFI devolvió un estado de no éxito, por ejemplo desde una compilación libcrypto reducida). - Campos de contexto. Ninguno. El mensaje nombra los niveles intentados o el símbolo fallido.
- Recuperación. Instalar
ext-fficon OpenSSL 3.x presente, o actualizar a una compilación de PHP que expongashake256enhash_algos(). De forma deliberada no se distribuye un repliegue Keccak en espacio de usuario.
Shake256ProviderNotAvailableException
Sección titulada «Shake256ProviderNotAvailableException»- Cuándo se lanza. Desde el constructor de un proveedor SHAKE256 cuando la
sonda de capacidad falla, de modo que el proveedor no puede instanciarse. Es una
señal de control de flujo: el registro de proveedores la captura, anota la
etiqueta del nivel e intenta el siguiente nivel. Nunca debería escapar al código
de aplicación. Constructor con nombre:
forTier(). - Campos de contexto. Ninguno. El mensaje nombra el nivel y el motivo.
- Recuperación. No accionable directamente por el llamador; si toda la cadena
de niveles se agota, el registro aflora en su lugar
Shake256NotAvailableException::noBackend(), que transporta la corrección de cara al operador.
Integridad MAC del documento (ISO/TS 32004)
Sección titulada «Integridad MAC del documento (ISO/TS 32004)»Estas cubren el código de autenticación de mensajes (MAC) a nivel de documento de
ISO/TS 32004, almacenado bajo /AuthCode. Ambas extienden NextPdfException y
redefinen getContext().
DocumentMacTokenException
Sección titulada «DocumentMacTokenException»- Cuándo se lanza. De forma cerrada, por el lector de tokens MAC, cuando un
token MAC de
AuthenticatedDatade CMS está estructuralmente malformado o declara un algoritmo fuera del conjunto acordado de ISO/TS 32004. Constructores con nombre:malformed()yalgorithmMismatch(). Marcada@internal. - Campos de contexto.
status(el valor deDocumentMacVerificationStatus, bienMalformedTokenbienAlgorithmMismatch). Propiedad pública de solo lectura:$status. - Recuperación. Tratar el documento como no verificado. Un token malformado o un algoritmo fuera del conjunto acordado significa que el MAC no puede establecer confianza; no proceder como si el contenido estuviera protegido.
DocumentMacVerificationException
Sección titulada «DocumentMacVerificationException»- Cuándo se lanza. De forma cerrada, cuando una verificación MAC a nivel de
documento no puede alcanzar un estado de confianza: un
/AuthCodeausente o malformado, un algoritmo fuera del conjunto acordado, un fallo de desenvoltura o un desajuste de MAC (manipulación). Elverify()del verificador devuelve un resultado explícito para ramificar; esta es la contraparte de flujo de excepción lanzada porassertVerified(), de modo que el código que «confía en el contenido» nunca pueda proceder más allá de un documento no verificado. Constructor con nombre:fromResult(). - Campos de contexto.
status(el valor deDocumentMacVerificationStatus). Propiedad pública de solo lectura:$status. - Recuperación. No confiar en el contenido del documento. Inspeccionar
statuspara distinguir una manipulación (desajuste de MAC) de un problema de configuración (/AuthCodeausente o malformado, desajuste de algoritmo).
Validación de rutas PKI (RFC 5280)
Sección titulada «Validación de rutas PKI (RFC 5280)»Estas cubren la validación de rutas de certificación de RFC 5280. El tipo base y sus subclases son de fallo cerrado.
PkiPathValidationException
Sección titulada «PkiPathValidationException»- Cuándo se lanza. Un fallo en modo estricto del validador de rutas de
RFC 5280. Es la base no final de subclases más estrechas
(
ChainLengthExceededException,UnsupportedExtensionException), de modo que los manejadores que capturan este tipo también capturan aquellas por sustitución de Liskov. ExtiendeSecurityException. - Campos de contexto. No redefine
getContext()(hereda el valor predeterminado vacío). Transporta los motivos estructurados en la propiedad pública de solo lectura congelada$reasons(una lista no vacía de cadenas con el nombre de la regla más la descripción). - Recuperación. Leer
$reasonspara identificar la regla que falla, corregir la cadena de certificados y volver a validar. Capturar este tipo para manejar de manera uniforme cualquier fallo de validación de ruta.
ChainLengthExceededException
Sección titulada «ChainLengthExceededException»- Cuándo se lanza. Se le pide al validador de rutas recorrer una cadena cuya
longitud supera el techo configurado. El tope se aplica antes de que empiece
cualquier análisis, de modo que un proveedor malicioso no puede llevar al
validador a un trabajo cuadrático ni agotar recursos con una cadena arbitrariamente
profunda. El techo predeterminado de 10 sigue el perfil PKIX-CMP (RFC 4210
§5.3.18); las cadenas del mundo real caben en 5 o 6 entradas. Subclase de
PkiPathValidationException. - Campos de contexto. Hereda el
getContext()vacío; la cadena de motivochain_length_exceeded: supplied=<n> cap=<n>se reenvía a$reasonsdel padre. Propiedades públicas de solo lectura:$supplied,$cap. - Recuperación. Aportar una cadena dentro del techo, o elevar el tope configurado si se espera legítimamente una cadena más larga.
UnsupportedExtensionException
Sección titulada «UnsupportedExtensionException»- Cuándo se lanza. El validador de rutas encuentra una extensión crítica X.509
cuya aplicación aún no está implementada. Conforme a RFC 5280 §4.2, una extensión
crítica no reconocida debe fallar de forma cerrada; aquí tanto el modo estricto
como el indulgente fallan de forma cerrada, ya que omitir de forma silenciosa una
extensión crítica sería una regresión de seguridad. El validador cubre la
construcción de la cadena, la coincidencia AKI/SKI, el uso de clave, el uso de
clave extendido, las restricciones básicas, la caducidad y la verificación de
firma; cualquier otra cosa crítica aflora aquí. Subclase de
PkiPathValidationException. - Campos de contexto. Hereda el
getContext()vacío; los motivos estructurados se reenvían a$reasonsdel padre. Propiedades públicas de solo lectura:$extensionOid(OID con puntos, por ejemplo2.5.29.30para restricciones de nombre),$extensionName,$clauseRef(puntero a la cláusula de RFC 5280 y a la entrada del registro de elementos diferidos). - Recuperación. En modo indulgente, capturar esta subclase específica para
recurrir a una política más gruesa sin tragar fallos reales de validación de
ruta. Auditar
$extensionOidy$clauseRefcontra los dispositivos de prueba de la PKI para ver qué extensión está bloqueando la validación.
RevocationCheckFailedException
Sección titulada «RevocationCheckFailedException»- Cuándo se lanza. Tanto los extremos OCSP como los de la lista de revocación
de certificados (CRL) se agotan sin un veredicto definitivo: fallo de transporte
OCSP o respuesta malformada, y fallo de transporte CRL o CRL malformada, con
ambos disyuntores abiertos o ambas cachés ausentes. El modo estricto trata esto
como fallo cerrado; el modo indulgente lo captura y emite una advertencia PSR-3
con
revocation = null. ExtiendeSecurityException. - Campos de contexto. No redefine
getContext()(hereda el valor predeterminado vacío). Transporta el estado en las propiedades públicas de solo lectura$ocspStatey$crlState(cada una con valor predeterminadounknown). - Recuperación. Restaurar la accesibilidad a una fuente de revocación, esperar a que los disyuntores se cierren, o precalentar la caché, y luego reintentar. No suprimir esto para obtener un artefacto de validación a largo plazo; la aserción de revocación forma parte de ese nivel.
Verificación de firma OCSP (RFC 6960)
Sección titulada «Verificación de firma OCSP (RFC 6960)»OcspSignatureInvalidException
Sección titulada «OcspSignatureInvalidException»- Cuándo se lanza. La firma de un
BasicOCSPResponsede RFC 6960 §4.2.2.2 no supera la verificación criptográfica contra el certificado del respondedor. El analizador decodificasignatureAlgorithm(RSA-PSS, ECDSA o RSA-PKCS1v15) y verificasignaturesobretbsResponseData; cualquier fallo lanza esta excepción tipada para que los llamadores distingan una respuesta estructuralmente válida pero criptográficamente manipulada de una respuesta con DER malformado. No final, de modo que los paquetes aguas abajo pueden publicar subclases más específicas. ExtiendeSecurityException. - Campos de contexto. No redefine
getContext()(hereda el valor predeterminado vacío). Transporta la etiqueta del fallo en la propiedad pública de solo lectura$reason(por ejemplosignature_mismatch,responder_cert_not_in_bundle,unsupported_signature_algorithm); eldetailde texto libre se pliega en el mensaje. - Recuperación. Inspeccionar
$reason. Pararesponder_cert_not_in_bundle, aportar el paquete de anclas de confianza correcto y el certificado del respondedor. Parasignature_mismatch, tratar la respuesta como no fiable. Véase Fallos de firma y marca de tiempo.
Marca de tiempo (RFC 3161)
Sección titulada «Marca de tiempo (RFC 3161)»TsaException
Sección titulada «TsaException»- Cuándo se lanza. Un fallo en la comunicación con la autoridad de marca de
tiempo (TSA) de RFC 3161 o en el análisis de la respuesta: la TSA devuelve un
estado de error, la solicitud HTTP falla, o la respuesta ASN.1 no puede
analizarse. Es la base de la jerarquía de fallos de TSA y es no final, de modo
que los fallos de verificación pueden extenderla. Extiende
NextPdfException. - Campos de contexto. No redefine
getContext()(hereda el valor predeterminado vacío). - Recuperación. Capturar
TsaExceptionpara cualquier vía de fallo de TSA. Verificar la accesibilidad de la TSA y que el extremo devuelve una respuesta de RFC 3161 bien formada.
TsaTokenVerificationException
Sección titulada «TsaTokenVerificationException»- Cuándo se lanza. La verificación CMS de un
TimeStampTokende RFC 3161 falla en cualquiera de los pasos de verificación obligatorios: el vínculo ESSCertIDv2 de RFC 5816 §3, la integridad de los atributos firmados de RFC 5652 §11, la frescura deproducedAtde RFC 3161 §2.4.2, o la firma deSignerInfode RFC 5652 §5.4. De fallo cerrado, con un discriminador de paso tipado para que las canalizaciones de auditoría puedan distinguir una repetición de un desfase de reloj y de un desajuste de certificado sin escarbar en los mensajes. Subclase deTsaException, de modo que los manejadores heredadoscatch (TsaException)siguen activándose. - Campos de contexto.
step(el valorStepdel paso que falla) ymessage. Captador:getStep(). - Recuperación. Accionable por un desarrollador (certificado de TSA o
tolerancia de desfase mal configurados) o por seguridad (sospecha de MITM o
repetición). Leer
steppara localizar la etapa que falla y corregir la entrada o la configuración de confianza correspondiente.
MalformedDerException
Sección titulada «MalformedDerException»- Cuándo se lanza. Señal interna de que un recorrido DER topó con un límite
malformado o truncado, generada por los recorredores de bajo nivel dentro del
verificador de tokens de TSA. Siempre se captura en el límite público de verify y
se reenvuelve en una
TsaTokenVerificationExceptionque transporta el discriminador de paso adecuado; nunca se filtra al código del llamador. ExtiendeRuntimeException; marcada@internal. - Campos de contexto. Ninguno.
- Recuperación. No de cara al llamador. Manejar en su lugar la
TsaTokenVerificationExceptionenvolvente.
Decodificación de extensiones de certificado
Sección titulada «Decodificación de extensiones de certificado»Estas extienden RuntimeException y no exponen getContext(). Ambos son
decodificadores de fallo cerrado.
NameConstraintsDecodeException
Sección titulada «NameConstraintsDecodeException»- Cuándo se lanza. El decodificador de restricciones de nombre encuentra un
elemento
GeneralSubtreeaplicable que no puede decodificar fielmente. RFC 5280 §4.2.1.10 exige que una parte que confía procese una restricción de nombre aplicable o rechace el certificado; convertir el descarte silencioso anterior en este fallo tipado evita un fallo abierto que habría ampliado de forma silenciosa el conjunto de nombres aceptados. El alcance se limita a las formas de nombre aplicables (directoryName, dNSName, iPAddress, rfc822Name, uniformResourceIdentifier); las formas no aplicables siguen siendo ignorables y nunca la generan. Constructor con nombre:undecodableEnforceableBase(). Marcada@internal. - Campos de contexto. Ninguno. En el mensaje se transporta una cadena de detalle segura para el registro.
- Recuperación. El aplicador aflora un motivo
name_constraints:de fallo cerrado y la cadena se rechaza. Investigar la codificación de restricciones de nombre del certificado; no relajar la aplicación.
QcStatementsDecodeException
Sección titulada «QcStatementsDecodeException»- Cuándo se lanza. La extensión
qcStatementsestá estructuralmente malformada: DER truncado, una etiqueta incorrecta o un desbordamiento de longitud. El decodificador es de fallo cerrado y la genera en lugar de devolver un resultado parcial o heurístico cuando no puede determinar con certeza lo que dice la extensión. Marcada@api. - Campos de contexto. Ninguno.
- Recuperación. Capturarla explícitamente solo si se pretende tolerar una codificación malformada; de lo contrario, tratar las declaraciones de certificado cualificado del certificado como indeterminables y rechazar o reemitir el certificado.
Sesiones PKCS#11
Sección titulada «Sesiones PKCS#11»Pkcs11SessionException
Sección titulada «Pkcs11SessionException»- Cuándo se lanza. Un defecto de gestión de sesiones de PKCS#11 v3.1. Cada
constructor con nombre se asigna a una clase de defecto específica y a un valor de
retorno
CKR_*de PKCS#11, expuesto a través del discriminador tipado$kindpara que los llamadores ramifiquen según una cadena de enumeración estable en lugar de una frágil coincidencia de mensajes. Los constructores incluyen:cryptokiNotInitialized(),userNotLoggedIn(),userAlreadyLoggedIn(),operationNotInitialized(),operationActive(),mechanismNotAllowed(),tokenDisconnected(),concurrentSessionLimitExceeded(),sessionAlreadyClosed(),stateTransitionInvalid(),osLockingRequired(),loginTtlExpired()ysignOperationTtlExpired(). ExtiendeSecurityException. - Campos de contexto. No redefine
getContext()(hereda el valor predeterminado vacío). Transporta el tipo tipado en la propiedad pública de solo lectura$kind, una de las constantesKIND_*(por ejemploKIND_USER_NOT_LOGGED_IN,KIND_TOKEN_DISCONNECTED,KIND_LOGIN_TTL_EXPIRED). Los identificadores de ranura y de sesión, el mecanismo y los valores de TTL aparecen en el mensaje. Los PIN y los bytes de certificado nunca se incluyen. - Recuperación. Conmutar según
$kind. Parauser_not_logged_in, iniciar sesión con el PIN de usuario antes de inicializar una operación de firma. Paratoken_disconnected, tratar todas las sesiones de la ranura como huérfanas. Para los tipos de TTL, volver a autenticar o reinicializar la operación. Paramechanism_not_allowed, ampliar la lista de mecanismos permitidos configurada o elegir un mecanismo permitido.