import "41.neocities.org/playReady"
func (c *CertFeatures) Append(data []byte) []byte
func (c *CertFeatures) New(Type uint32)
type CertSignature struct { SignatureType uint16 SignatureLength uint16 // The actual signature bytes Signature []byte IssuerLength uint32 // The public key of the issuer that signed this certificate IssuerKey []byte }
func (c *CertSignature) New(signature, modelKey []byte) error
type Certificate struct { Magic [4]byte // 0:4 Version uint32 // 4:8 Length uint32 // 8:12 LengthToSignature uint32 // 12:16 Info *CertificateInfo // 0x1 Security *Ftlv // 0x11 Features *Ftlv // 0x5 KeyInfo *KeyInfo // 0x6 Manufacturer *Ftlv // 0x7 Signature *CertSignature // 0x8 }
func (c *Certificate) Append(data []byte) []byte
type CertificateInfo struct { CertificateId [16]byte SecurityLevel uint32 Flags uint32 InfoType uint32 Digest [32]byte Expiry uint32 ClientId [16]byte // Client ID (can be used for license binding) }
func (c *CertificateInfo) New(securityLevel uint32, digest []byte)
type Chain struct { Magic [4]byte Version uint32 Length uint32 Flags uint32 CertCount uint32 Certificates []Certificate }
Decode decodes a byte slice into the Chain structure.
they downgrade certs from the cert digest (hash of the signing key)
type ContentKey struct { KeyId [16]byte KeyType uint16 CipherType uint16 Length uint16 Value []byte }
type KeyData struct { KeyType uint16 Length uint16 Flags uint32 PublicKey [64]byte // ECDSA P256 public key (X and Y coordinates) Usage CertFeatures }
type License struct { Magic [4]byte // 0 Offset uint16 // 1 Version uint16 // 2 RightsId [16]byte // 3 ContentKey *ContentKey // 4.9.10 EccKey *EccKey // 4.9.42 AuxKeys *AuxKeys // 4.9.81 Signature *LicenseSignature // 4.11 }
certificate.go chain.go playReady.go
Path | Synopsis |
---|---|
internal/2025-05 | |
internal/2025-06 | |
internal/2025-07-02 | |
internal/2025-07-03 | |
internal/playReady | |
xml |
https://github.com/3052/playReady
git clone
https://github.com/3052/playReady.git git@github.com:3052/playReady.git