// Copyright © 2024 Apple, Inc. All rights reserved. // // TLS presentation language definitions for AT-specific data // All timestamps with an "Ms" suffix are specified in milliseconds elapsed // since 00:00:00 UTC on January 1, 1970 // hashes are calculated using SHA256 opaque HashValue<1..255>; enum { // Release type enum contains a single ReleaseType enum value // extensionData content is a uint16 with value = 1 for the length of the enum value, and one byte for the enum value. RELEASE_TYPE(1); // extensionData content is a unit16 with value = 8 for the length of the timestamp, and a uint64 timestamp. INSERTION_TIME_MS(2); (255) } ExtensionType; // in extensions vectors, there may only be one Extension of any ExtensionType, Extensions are ordered by ExtensionType struct { ExtensionType extensionType; opaque extensionData<0..65535>; } Extension; // Corresponds to the ATReleaseType proto enum enum { PRODUCTION(0); // the default. For this value do not add the extension. SEED(1); (255) } ReleaseType; struct { SerializationVersion version; ATLeafType type; opaque description<0..255>; HashValue dataHash; uint64 expiryMs; // For ATLeafType RELEASE, may contain a RELEASE_TYPE extension // May contain an INSERTION_TIME_MS extension Extension extensions<0..65535>; } ATLeafData enum { V1(1); (255) } SerializationVersion; // Matches the ATLogDataType proto enum enum { RELEASE(1); KEYBUNDLE_TGT(3); KEYBUNDLE_OTT(4); KEYBUNDLE_OHTTP(5); TEST_MARKER(100); (255) } ATLeafType;