// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
module chromeos.connectivity.mojom;
// PasspointSubscription describes a set of credentials installed in Shill.
struct PasspointSubscription {
// Subscription unique identifier. This is a Shill identifier that can be
// used to match with the passpointID service property.
string id;
// List of the domains compatible with the service provider. Domains are Fully
// Qualified Domain Name (like "passpoint.myprovider.com").
array<string> domains;
// Human readable name of the service provider.
string friendly_name;
// Source of the credentials: an application package name when provisioned
// through an ARC application, or a string that describes the provisioning
// method otherwise.
string provisioning_source;
// Certificate authority trusted to validate server identity in PEM format. It
// is an ascii string that contains the PEM header, the certificate content in
// base64 string and the PEM footer.
string? trusted_ca;
// Time before the expiration of the set of credentials, in milliseconds since
// January 1, 1970, 00:00:00 GMT. The min value of int64_t means the field is
// unset.
int64 expiration_epoch_ms;
};
// Listener to the changes in Passpoint credentials set and list.
interface PasspointEventsListener {
// Called when a new set of Passpoint credentials has been added.
// `subscription` is the subscription added.
OnPasspointSubscriptionAdded(PasspointSubscription subscription);
// Called when the subscription represented by `subscription` has been
// removed.
OnPasspointSubscriptionRemoved(PasspointSubscription subscription);
};
// Interface used by any service that wants to access Passpoint subscriptions
// and follow their changes. The expected client is the network settings UI.
interface PasspointService {
// Obtain the details of a Passpoint subscription designated by its unique
// identifier `id`.
GetPasspointSubscription(string id) => (PasspointSubscription? result);
// Obtain all the Passpoint subscriptions registered for the current Shill
// user profile.
ListPasspointSubscriptions() => (array<PasspointSubscription> result);
// Delete the Passpoint subscription designed by id.
DeletePasspointSubscription(string id) => (bool success);
// Register a listener to be notified of any changes on Passpoint credentials
// for the current Shill user profile. It must be registered before calling
// ListPasspointSubscriptions to avoid missing updates.
RegisterPasspointListener(pending_remote<PasspointEventsListener> listener);
};