1 /* 2 * Copyright (C) 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.adservices.data.encryptionkey; 18 19 import java.util.List; 20 21 /** Container class for KeyCommitment table definitions and constants. */ 22 public final class EncryptionKeyTables { 23 public static final String[] ENCRYPTION_KEY_TABLES = { 24 EncryptionKeyContract.TABLE, 25 }; 26 27 /** Contract for Adtech encryption key data. */ 28 public interface EncryptionKeyContract { 29 String TABLE = "encryption_key_data"; 30 String ID = "_id"; 31 String KEY_TYPE = "key_type"; 32 String ENROLLMENT_ID = "enrollment_id"; 33 String REPORTING_ORIGIN = "reporting_origin"; 34 String ENCRYPTION_KEY_URL = "encryption_key_url"; 35 String PROTOCOL_TYPE = "protocol_type"; 36 String KEY_COMMITMENT_ID = "key_commitment_id"; 37 String BODY = "body"; 38 String EXPIRATION = "expiration"; 39 String LAST_FETCH_TIME = "last_fetch_time"; 40 } 41 42 public static final String CREATE_TABLE_ENCRYPTION_KEY_DATA_V2 = 43 "CREATE TABLE " 44 + EncryptionKeyContract.TABLE 45 + " (" 46 + EncryptionKeyContract.ID 47 + " TEXT PRIMARY KEY NOT NULL, " 48 + EncryptionKeyContract.KEY_TYPE 49 + " TEXT, " 50 + EncryptionKeyContract.ENROLLMENT_ID 51 + " TEXT, " 52 + EncryptionKeyContract.REPORTING_ORIGIN 53 + " TEXT, " 54 + EncryptionKeyContract.ENCRYPTION_KEY_URL 55 + " TEXT, " 56 + EncryptionKeyContract.PROTOCOL_TYPE 57 + " TEXT, " 58 + EncryptionKeyContract.KEY_COMMITMENT_ID 59 + " TEXT, " 60 + EncryptionKeyContract.BODY 61 + " TEXT, " 62 + EncryptionKeyContract.EXPIRATION 63 + " TEXT " 64 + ")"; 65 public static final String CREATE_TABLE_ENCRYPTION_KEY_DATA_V3 = 66 "CREATE TABLE " 67 + EncryptionKeyContract.TABLE 68 + " (" 69 + EncryptionKeyContract.ID 70 + " TEXT PRIMARY KEY NOT NULL, " 71 + EncryptionKeyContract.KEY_TYPE 72 + " TEXT, " 73 + EncryptionKeyContract.ENROLLMENT_ID 74 + " TEXT, " 75 + EncryptionKeyContract.REPORTING_ORIGIN 76 + " TEXT, " 77 + EncryptionKeyContract.ENCRYPTION_KEY_URL 78 + " TEXT, " 79 + EncryptionKeyContract.PROTOCOL_TYPE 80 + " TEXT, " 81 + EncryptionKeyContract.KEY_COMMITMENT_ID 82 + " TEXT, " 83 + EncryptionKeyContract.BODY 84 + " TEXT, " 85 + EncryptionKeyContract.EXPIRATION 86 + " TEXT, " 87 + EncryptionKeyContract.LAST_FETCH_TIME 88 + " INTEGER " 89 + ")"; 90 91 // Consolidated list of create statements for all tables in v3. 92 public static final List<String> CREATE_STATEMENTS_V3 = 93 List.of(CREATE_TABLE_ENCRYPTION_KEY_DATA_V3); 94 95 // Consolidated list of create statements for all tables in v2. 96 public static final List<String> CREATE_STATEMENTS_V2 = 97 List.of(CREATE_TABLE_ENCRYPTION_KEY_DATA_V2); 98 99 // Private constructor to prevent instantiation. EncryptionKeyTables()100 private EncryptionKeyTables() {} 101 } 102