File: carrier_lock.proto

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (234 lines) | stat: -rw-r--r-- 7,903 bytes parent folder | download | duplicates (7)
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;
}