Package com.iizix.license.v2


package com.iizix.license.v2
  • Class
    Description
    Ed25519 for the licence formats of LICENSE-V2-DESIGN.md (sections 2.3 and 2.4, ruling LV-2): the JDK's Signature.getInstance("Ed25519") of java.base (RFC 8032, in the JDK since 15), so the mangled licence client, the MLS and the hub need no library.
    The byte strings the identity proofs sign (LICENSE-V2-DESIGN.md sections 5.1, 5.2 and 5.4), one method each, so that no caller concatenates them itself and both ends of a wire build the same bytes: Hello.mlsHello(byte[], byte[], UUID): "iizi-mls-hello/2" 0x00 cn sn lic - the MLS signing key's proof to a client (5.1 step 2). Hello.installProve(byte[], byte[], UUID): "iizi-install-prove/2" 0x00 sn cn lic - the installation key's proof to the MLS (5.2 step 4). Hello.hubRegister(byte[], String, String): "iizi-hub-register/1" 0x00 pn member run - the installation key's proof to the hub principal (5.4, HUB REGISTER).
    A signing-key certificate (LICENSE-V2-DESIGN.md section 2.4, ruling LV-3): the IIZI-KEYCERT/1 envelope a pinned root signs over a payload of v, kid (the certified key's ID), key (its Ed25519 public half), notBefore and notAfter (epoch milliseconds UTC, inclusive).
    A verified licence document (LICENSE-V2-DESIGN.md section 2.2): the parsed payload with typed accessors, constructed only by LicenseVerifier.verify(byte[], UUID, PublicKey) after steps 1 and 2 of 2.5 accepted the bytes, so an instance is always a document signed by a key a pinned root certified.
    A licence document or key certificate the LicenseVerifier refuses: the step of LICENSE-V2-DESIGN.md section 2.5 that failed and the reason.
    The steps of 2.5 that refuse.
    The issuing half of LICENSE-V2-DESIGN.md sections 2.2 and 2.4: the canonical payload bytes, the envelope and the Ed25519 signature.
    The state of a licence document (LICENSE-V2-DESIGN.md sections 2.2 and 7): what the MLS says about the installation at the time of issue.
    The verifier of licence documents and key certificates: the five steps of LICENSE-V2-DESIGN.md section 2.5, in this order and no other, for the licence client, the MLS and the hub principal alike (design 13, 14): The envelope is well-formed; cert verifies under a pinned root and the clock is inside its notBefore - notAfter. sig verifies over the payload bytes under the certified key, and kid equals the certificate's. The payload parses under the rules of 2.2 and v is 2. lic is this installation's licence UUID and ikey its public key.
    The pinned root keys of the licence system (LICENSE-V2-DESIGN.md section 2.4, rulings LV-3 and RB-7 (a)): the one set the licence client, the MLS and the hub principal verify key certificates under, here in com.iizix.core where all three reach it.
    A pinned root key (LICENSE-V2-DESIGN.md section 2.4, ruling LV-3): the key ID a key certificate's kid line names, and the public half of the offline root that signs certificates.