Skip to content

licensing: emissor de licença de dev (issue_dev_license_jwt.py) não emite ML-DSA — quebra o Maestro quando o híbrido for obrigatório #2043

Open

Description

@FabioLeitao

Contexto

Canon: licença híbrida Ed25519 + ML-DSA-65 obrigatória em todo o roster (ver issue irmã sobre âncora e guard.py). Quando o verificador passar a exigir dbmldsa_sig, todo token emitido sem ele deixa de valer.

O que existe hoje

scripts/issue_dev_license_jwt.py emite licença de dev de vida curta para o modo enforced e não referencia mldsa, dbmldsa_sig nem ml-dsa (verificado via gh api em DataBoar/data-boar@main, 2026-10-05). O Maestro depende dele: handlers/Handle-LicensingMatrix.ps1 (repo DataBoar/maestro) chama esse script.

Hoje isso funciona porque o híbrido é opcional no verify. Com o híbrido obrigatório, o Maestro e qualquer fluxo que use esse emissor passam a receber licença recusada.

Esperado

  • O emissor de dev gera dbmldsa_sig válido sob o payload canônico, assinado com uma chave ML-DSA de dev, nunca a golden. Isso exige uma âncora de teste equivalente, que só pode existir em build de teste (como o -tags licensetest do kp-license-check).
  • A chave privada de dev não entra no repositório.
  • Teste que prova que o token de dev passa no caminho híbrido obrigatório e que o mesmo token sem a claim é recusado.

Critérios de aceite

  • Token de dev verifica pelo mesmo caminho híbrido de produção, com âncora de teste isolada.
  • Nenhuma chave privada, nem de dev, commitada.
  • A matriz de licenciamento do Maestro continua verde com o híbrido obrigatório.

Relacionado

Issue irmã #2042 (âncora ML-DSA + híbrido obrigatório no guard.py); épico #1462.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions