Provisioning

Turning a group certificate and its private key into a usable device.

A bgroupcert.dat attests to a group, not to a device: its leaf is an ISSUER that is entitled to mint device certificates. Provisioning generates a fresh signing and encryption key pair, issues a DEVICE leaf for them signed by the group key, and prepends it to the chain.

This is library API rather than a CLI; ktvine ships no command-line tool and neither does ktprd.

Properties

Link copied to clipboard
const val NEVER_EXPIRES: Long = 4294967295

The expiry value meaning "never".

Functions

Link copied to clipboard
suspend fun createDevice(groupCertificate: CertificateChain, groupKey: EccKey, encryptionKey: EccKey? = null, signingKey: EccKey? = null): PlayreadyDevice

Provision a device from a group certificate and its private key.

Link copied to clipboard

Split a device back into the raw files it was built from.

Link copied to clipboard
suspend fun newLeafCertificate(parent: CertificateChain, groupKey: EccKey, signingKey: EccKey, encryptionKey: EccKey, certId: ByteArray = randomBytes(16), clientId: ByteArray = randomBytes(16), expiry: Long = NEVER_EXPIRES): Certificate

Issue a DEVICE certificate for signingKey and encryptionKey, signed by groupKey.

Link copied to clipboard
suspend fun reprovision(device: PlayreadyDevice, encryptionKey: EccKey? = null, signingKey: EccKey? = null): PlayreadyDevice

Re-issue a device's leaf certificate with fresh keys.

Link copied to clipboard

Unwrap a zgpriv_protected.dat into the group key it holds.