Package com.iizix.license.v2
package com.iizix.license.v2
- ClassDescriptionEd25519 for the licence formats of
LICENSE-V2-DESIGN.md(sections 2.3 and 2.4, ruling LV-2): the JDK'sSignature.getInstance("Ed25519")ofjava.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.mdsections 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, HUBREGISTER).A signing-key certificate (LICENSE-V2-DESIGN.mdsection 2.4, ruling LV-3): theIIZI-KEYCERT/1envelope a pinned root signs over a payload ofv,kid(the certified key's ID),key(its Ed25519 public half),notBeforeandnotAfter(epoch milliseconds UTC, inclusive).A verified licence document (LICENSE-V2-DESIGN.mdsection 2.2): the parsed payload with typed accessors, constructed only byLicenseVerifier.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 theLicenseVerifierrefuses: the step ofLICENSE-V2-DESIGN.mdsection 2.5 that failed and the reason.The steps of 2.5 that refuse.The issuing half ofLICENSE-V2-DESIGN.mdsections 2.2 and 2.4: the canonical payload bytes, the envelope and the Ed25519 signature.Thestateof a licence document (LICENSE-V2-DESIGN.mdsections 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 ofLICENSE-V2-DESIGN.mdsection 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;certverifies under a pinned root and the clock is inside itsnotBefore-notAfter.sigverifies over the payload bytes under the certified key, andkidequals the certificate's. The payload parses under the rules of 2.2 andvis 2.licis this installation's licence UUID andikeyits public key.The pinned root keys of the licence system (LICENSE-V2-DESIGN.mdsection 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 incom.iizix.corewhere all three reach it.A pinned root key (LICENSE-V2-DESIGN.mdsection 2.4, ruling LV-3): the key ID a key certificate'skidline names, and the public half of the offline root that signs certificates.