1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
|
// Copyright 2023 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package carrier_lock;
message Timestamp {
// Represents seconds of UTC time since Unix epoch
// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
// 9999-12-31T23:59:59Z inclusive.
optional int64 seconds = 1;
// Non-negative fractions of a second at nanosecond resolution. Negative
// second values with fractions must still have non-negative nanos values
// that count forward in time. Must be from 0 to 999,999,999
// inclusive.
optional int32 nanos = 2;
}
// The SIM identifier.
message SimIdentifier {
// IMSI of the SIM card
optional string imsi = 1;
// SPN (Service Provider Name) on the SIM card
optional string spn = 2;
// Group Identifier Level 1. EF_GID1 file on the SIM card
optional string gid1 = 3;
}
// The device identifier.
// Next ID: 12
message DeviceIdentifier {
// The hardware identifier.
oneof hardware_id {
// The IMEI of the device.
string imei = 1;
// The MEID of the device.
string meid = 2;
}
// The 2nd hardware identifier, for dual-SIM devices.
oneof hardware_id2 {
// The IMEI of the device.
string imei2 = 10;
// The MEID of the device.
string meid2 = 11;
}
// The serial number of the device, i.e. android.os.Build.SERIAL.
optional string serial_number = 3;
// The brand identifier of the device, i.e. android.os.Build.BRAND.
optional string brand = 4;
// The product identifier of the device, i.e. android.os.Build.PRODUCT.
optional string product = 5;
// The device identifier of the device, i.e. android.os.Build.DEVICE.
optional string device = 6;
// The manufacturer identifier of the device,
// i.e. android.os.Build.MANUFACTURER.
optional string manufacturer = 7;
// The model identifier of the device, i.e. android.os.Build.MODEL.
optional string model = 8;
// The SIM card(s) currently present in the device. Only SIM cards that are
// in READY state are reported, so the number does not reflect the number of
// SIM slots in the device.
repeated SimIdentifier sim_cards = 9;
}
// The configuration for the client-side config fetcher app.
message FetcherConfig {
// Indicates whether the client device should fetch the device provisioning
// record on every boot.
optional bool fetch_on_boot = 1;
// If this DeviceProvisioningConfig causes a Sim-Unlock, OobConfig
// (the SimLock client app) usually shows a notification. Setting this to true
// suppress the notification (Q or later only)
optional bool should_suppress_sim_unlock_notification = 2;
}
// Identifies a GSM network.
message MobileNetwork {
// The 3 digit network country code. The character '?' is used as wildcard
// character to match any single digit, eg. 31? matches all mcc values from
// 310 to 319.
optional string mobile_country_code = 1;
// The 2 or 3 digit mobile network code. The character '?' is used as wildcard
// character to match any single digit, eg. mcc/mnc=310??? matches any network
// with mcc equal to 310 and 3-digit mnc.
optional string mobile_network_code = 2;
// Additional match data to identify a carrier.
// If not set, all carriers with above mcc/mnc are included.
// If set, mcc/mnc combined with the specified value can identify virtual
// carrier, eg. mcc/mnc=310120 and spn="Project Fi" will match only Project
// Fi, but not other Sprint(310120) carriers.
oneof carrier_match_data {
// SPN (Service Provider Name) on the sim card
string spn = 3;
// IMSI prefix for the IMSI range of the carrier
string imsi_prefix = 4;
// Group Identifier Level 1. EF_GID1 file on the sim card
string gid1 = 5;
// Group Identifier Level 2. EF_GID2 file on the sim card
string gid2 = 6;
}
}
// Contact information which is shown to the user.
message ContactInformation {
// Name of the contact.
optional string name = 1;
// URL of a website showing additional information from the contact.
optional string url = 2;
}
// SimLock v3 carrier restrictions type
// This determines the behaviour of SimLock in these 2 cases:
// - if the carrier is in both the allowed list and the disallowed list
// - if the carrier is in neither of these lists.
// This will be translated to CARRIER_RESTRICTION_DEFAULT_ALLOWED
// and CARRIER_RESTRICTION_DEFAULT_DISALLOWED in CarrierRestrictionRules in
// Android.
enum CarrierRestrictionsMode {
// Not listed carriers are disallowed. We use this as the default value
// because this is the behaviour before SimLock v3.
DEFAULT_DISALLOW = 0;
// Not listed carriers are allowed.
DEFAULT_ALLOW = 1;
}
// SimLock v3 multisim restriction policy type
// This determines the behaviour of SimLock for multisim devices:
// This will be translated to MULTISIM_POLICY_NONE and
// MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT in CarrierRestrictionRules in
// Android.
enum MultiSimRestrictionPolicy {
// The same configuration is applied to all SIM slots independently.
NONE = 0;
// Any SIM card can be used as far as one SIM card matching the configuration
// is present.
ONE_VALID_SIM_MUST_BE_PRESENT = 1;
}
// The SIM lock configuration sent to the device.
message SimLockConfig {
// Whitelist of allowed networks. If non-empty, the blacklist must be an
// empty list. If both the whitelist and the blacklist are empty, then all
// networks are allowed.
repeated MobileNetwork allowed_networks = 1;
// Blacklist of networks. If non-empty, the whitelist must be an empty list.
repeated MobileNetwork disallowed_networks = 4;
// GCM/FCM topic to subscribe to learn about updates for this SimLockConfig.
optional string gcm_topic = 2;
// Contact information to the owner of the profile.
optional ContactInformation contact_info = 3;
// The carrier restriction mode (used since SimLock v3).
optional CarrierRestrictionsMode carrier_restrictions_mode = 5;
// Restriction of multi SIM functionality
optional bool is_multisim_restricted = 6;
// MultiSim carrier restriction policy
optional MultiSimRestrictionPolicy multisim_restriction_policy = 7;
// Signed SIM lock configuration (see go/simlock-signature)
optional bytes signed_configuration = 8;
}
// This configuration section contains restrictions that constrain the use of
// the device.
message DeviceRestrictionsConfig {
// If set to true the device will not allow unlocking of its bootloader. If
// set to false the unlocking is not prohibited by this setting but may be
// unavailable due to other configuration settings, e.g. the presence of a
// SIM lock configuration.
optional bool disallow_oem_unlock = 1;
// GCM/FCM topic to subscribe to learn about updates for this
// DeviceRestrictionsConfig.
optional string gcm_topic = 2;
// Contact information to the owner of the profile.
optional ContactInformation contact_info = 3;
}
// The device provisioning record.
message DeviceProvisioningRecord {
// Serialized device provisioning config.
optional bytes device_provisioning_config = 1;
}
message DeviceProvisioningConfig {
// Next ID: 8
// The device identifier.
optional DeviceIdentifier device_identifier = 1;
// Server timestamp indicating when this config was fetched from the server.
optional Timestamp fetch_timestamp = 2;
// The configuration for the client-side config fetcher app.
optional FetcherConfig fetcher_config = 5;
// The SIM lock configuration for the device.
optional SimLockConfig sim_lock_config = 3;
// A configuration section setting device restrictions.
optional DeviceRestrictionsConfig device_restrictions_config = 6;
// Enable OEM unlock blob.
optional bytes enable_oem_unlock_blob = 7;
}
|