Rename the CTLogger APIs to reflect the atom name change

The atom no longer just represents log list update failures, and will
instead be representing the entire log list update result regardless of
success or failure.

Flag: com.android.net.ct.flags.certificate_transparency_service
Bug: 378626065
Test: atest NetworkSecurityUnitTests
Change-Id: Ide254542aeb9c9657e79a154e53f651478bb1a54
This commit is contained in:
Bessie Jiang 2025-01-24 13:33:41 +00:00
commit c9cefdbe1c
4 changed files with 36 additions and 30 deletions

View file

@ -237,11 +237,13 @@ class CertificateTransparencyDownloader extends BroadcastReceiver {
success = mSignatureVerifier.verify(contentUri, metadataUri);
} catch (MissingPublicKeyException e) {
updateFailureCount();
failureReason = CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_PUBLIC_KEY_NOT_FOUND;
failureReason =
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_PUBLIC_KEY_NOT_FOUND;
Log.e(TAG, "No public key found for log list verification", e);
} catch (InvalidKeyException e) {
updateFailureCount();
failureReason = CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION;
failureReason =
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION;
Log.e(TAG, "Signature invalid for log list verification", e);
} catch (IOException | GeneralSecurityException e) {
Log.e(TAG, "Could not verify new log list", e);
@ -253,11 +255,12 @@ class CertificateTransparencyDownloader extends BroadcastReceiver {
// Avoid logging failure twice
if (failureReason == -1) {
updateFailureCount();
failureReason = CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION;
failureReason =
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION;
}
if (failureReason != -1) {
mLogger.logCTLogListUpdateFailedEvent(
mLogger.logCTLogListUpdateStateChangedEvent(
failureReason,
mDataStore.getPropertyInt(
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0));
@ -278,7 +281,7 @@ class CertificateTransparencyDownloader extends BroadcastReceiver {
mDataStore.store();
} else {
updateFailureCount();
mLogger.logCTLogListUpdateFailedEvent(
mLogger.logCTLogListUpdateStateChangedEvent(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_VERSION_ALREADY_EXISTS,
mDataStore.getPropertyInt(
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0));
@ -294,13 +297,13 @@ class CertificateTransparencyDownloader extends BroadcastReceiver {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0);
if (status.isHttpError()) {
mLogger.logCTLogListUpdateFailedEvent(
mLogger.logCTLogListUpdateStateChangedEvent(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_HTTP_ERROR,
failureCount,
status.reason());
} else {
// TODO(b/384935059): handle blocked domain logging
mLogger.logCTLogListUpdateFailedEventWithDownloadStatus(
mLogger.logCTLogListUpdateStateChangedEventWithDownloadStatus(
status.reason(), failureCount);
}
}

View file

@ -20,29 +20,30 @@ package com.android.server.net.ct;
public interface CertificateTransparencyLogger {
/**
* Logs a CTLogListUpdateFailed event to statsd, when failure is provided by DownloadManager.
* Logs a CTLogListUpdateStateChanged event to statsd, when failure is from DownloadManager.
*
* @param downloadStatus DownloadManager failure status why the log list wasn't updated
* @param failureCount number of consecutive log list update failures
*/
void logCTLogListUpdateFailedEventWithDownloadStatus(int downloadStatus, int failureCount);
void logCTLogListUpdateStateChangedEventWithDownloadStatus(
int downloadStatus, int failureCount);
/**
* Logs a CTLogListUpdateFailed event to statsd, when no HTTP error status code is present.
* Logs a CTLogListUpdateStateChanged event to statsd without a HTTP error status code.
*
* @param failureReason reason why the log list wasn't updated
* @param failureCount number of consecutive log list update failures
*/
void logCTLogListUpdateFailedEvent(int failureReason, int failureCount);
void logCTLogListUpdateStateChangedEvent(int failureReason, int failureCount);
/**
* Logs a CTLogListUpdateFailed event to statsd, when an HTTP error status code is provided.
* Logs a CTLogListUpdateStateChanged event to statsd with an HTTP error status code.
*
* @param failureReason reason why the log list wasn't updated (e.g. DownloadManager failures)
* @param failureCount number of consecutive log list update failures
* @param httpErrorStatusCode if relevant, the HTTP error status code from DownloadManager
*/
void logCTLogListUpdateFailedEvent(
void logCTLogListUpdateStateChangedEvent(
int failureReason, int failureCount, int httpErrorStatusCode);
}

View file

@ -31,18 +31,20 @@ import android.app.DownloadManager;
class CertificateTransparencyLoggerImpl implements CertificateTransparencyLogger {
@Override
public void logCTLogListUpdateFailedEventWithDownloadStatus(
public void logCTLogListUpdateStateChangedEventWithDownloadStatus(
int downloadStatus, int failureCount) {
logCTLogListUpdateFailedEvent(downloadStatusToFailureReason(downloadStatus), failureCount);
logCTLogListUpdateStateChangedEvent(
downloadStatusToFailureReason(downloadStatus), failureCount);
}
@Override
public void logCTLogListUpdateFailedEvent(int failureReason, int failureCount) {
logCTLogListUpdateFailedEvent(failureReason, failureCount, /* httpErrorStatusCode= */ 0);
public void logCTLogListUpdateStateChangedEvent(int failureReason, int failureCount) {
logCTLogListUpdateStateChangedEvent(
failureReason, failureCount, /* httpErrorStatusCode= */ 0);
}
@Override
public void logCTLogListUpdateFailedEvent(
public void logCTLogListUpdateStateChangedEvent(
int failureReason, int failureCount, int httpErrorStatusCode) {
CertificateTransparencyStatsLog.write(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED,

View file

@ -212,7 +212,7 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, times(1))
.logCTLogListUpdateFailedEventWithDownloadStatus(
.logCTLogListUpdateStateChangedEventWithDownloadStatus(
DownloadManager.ERROR_INSUFFICIENT_SPACE,
/* failureCount= */ 1);
}
@ -261,7 +261,7 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, times(1))
.logCTLogListUpdateFailedEventWithDownloadStatus(
.logCTLogListUpdateStateChangedEventWithDownloadStatus(
DownloadManager.ERROR_INSUFFICIENT_SPACE,
/* failureCount= */ 1);
}
@ -314,7 +314,7 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, times(1))
.logCTLogListUpdateFailedEventWithDownloadStatus(
.logCTLogListUpdateStateChangedEventWithDownloadStatus(
DownloadManager.ERROR_INSUFFICIENT_SPACE,
/* failureCount= */ 1);
}
@ -357,16 +357,16 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, times(1))
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_PUBLIC_KEY_NOT_FOUND,
/* failureCount= */ 1);
verify(mLogger, never())
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
eq(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_NOT_FOUND),
anyInt());
verify(mLogger, never())
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
eq(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION),
anyInt());
@ -397,12 +397,12 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, never())
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
eq(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_NOT_FOUND),
anyInt());
verify(mLogger, times(1))
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION,
/* failureCount= */ 1);
}
@ -432,17 +432,17 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, never())
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
eq(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_NOT_FOUND),
anyInt());
verify(mLogger, never())
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
eq(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_PUBLIC_KEY_NOT_FOUND),
anyInt());
verify(mLogger, times(1))
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_SIGNATURE_VERIFICATION,
/* failureCount= */ 1);
}
@ -466,7 +466,7 @@ public class CertificateTransparencyDownloaderTest {
Config.LOG_LIST_UPDATE_FAILURE_COUNT, /* defaultValue= */ 0))
.isEqualTo(1);
verify(mLogger, times(1))
.logCTLogListUpdateFailedEvent(
.logCTLogListUpdateStateChangedEvent(
CERTIFICATE_TRANSPARENCY_LOG_LIST_UPDATE_STATE_CHANGED__UPDATE_STATUS__FAILURE_VERSION_ALREADY_EXISTS,
/* failureCount= */ 1);
}