Repository navigation
v0.3.0
Corrigido
-
O token passa a publicar a cadeia de autoridades, e o assinador do
Projudi (TJPR) deixa de enviar a assinatura sem ela (issue #22). O token
expunha só o certificado final, o SunPKCS11 devolvia uma cadeia de tamanho 1,
e o assinador do TJPR caía num caminho de completar a cadeia que está
quebrado do lado dele; o servidor recusava com "Trust anchor for
certification path not found". Agora o app baixa as ACs docaIssuersdo
próprio certificado (o.p7cda Certisign, que traz a cadeia até a raiz),
guarda nostate.jsone o módulo as publica comoCKO_CERTIFICATEde
autoridade, ao lado do certificado do titular, sem parear com a chave. O
download acontece no preparo e, para instalações que já existiam, na
primeira vez que o app abre depois da atualização; o módulo continua sem ir
à rede. Se o download falhar, o token segue como antes e o motivo vai ao
diag. Com a cadeia no token, ofindCertificatedo assinador do TJPR
continua vendo um certificado só e escolhendo sozinho. -
PIN recusado pelo servidor não volta mais preenchido, e a recusa aparece
para o titular (issue #21). O diálogo guardava o PIN no cache antes de o
tokensessaoaceitá-lo, então um PIN errado voltava preenchido (com o foco
já no OTP) em cada assinatura dos 5 minutos seguintes, e cada reenvio podia
contar para o bloqueio do certificado. Agora o PIN só entra no cache depois
de aceito, e uma recusa limpa o cache. Na recusa de PIN ou OTP, o diálogo
reabre dentro da mesma assinatura com a mensagem do servidor e o PIN vazio,
até 3 tentativas; esgotadas, o módulo respondeCKR_PIN_INCORRECTem vez de
CKR_FUNCTION_FAILED, que o PJeOffice mostrava como stack trace. A
mensagem "PIN ou e-Token incorreto" ganhou dica própria no diag: antes ela
caía na do "e-token", que afirmava, errado, que o PIN tinha sido aceito.
Segurança
- rustls 0.23.45, que corrige o RUSTSEC-2026-0285 (#20). A versão anterior
aceitava mensagens de handshake TLS 1.3 enviadas no nível de criptografia
errado, quando vinham no mesmo registro de uma mensagem que troca a chave. O
transcript continua autenticado, então não dá para alterar um handshake por
aí; o efeito é aceitar em texto claro mensagens que deveriam vir cifradas. O
rustls entra pelo ureq, no transporte até o servidor RemoteID.