15a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker/*
25a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * Copyright (C) 2015 The Android Open Source Project
35a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker *
45a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * Licensed under the Apache License, Version 2.0 (the "License");
55a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * you may not use this file except in compliance with the License.
65a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * You may obtain a copy of the License at
75a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker *
85a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker *      http://www.apache.org/licenses/LICENSE-2.0
95a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker *
105a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * Unless required by applicable law or agreed to in writing, software
115a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * distributed under the License is distributed on an "AS IS" BASIS,
125a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
135a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * See the License for the specific language governing permissions and
145a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * limitations under the License.
155a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker */
165a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
175a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubakerpackage android.security.net.config;
185a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
195a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubakerimport android.util.Pair;
205a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubakerimport java.security.KeyStore;
215a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubakerimport java.security.KeyStoreException;
225a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubakerimport java.util.Set;
235a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
245a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker/**
255a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * {@link ConfigSource} with a single default config based on a {@link KeyStore} and no per domain
265a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker * configs.
275a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker */
285a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubakerclass KeyStoreConfigSource implements ConfigSource {
295a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    private final NetworkSecurityConfig mConfig;
305a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
315a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    public KeyStoreConfigSource(KeyStore ks) {
325a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker        mConfig = new NetworkSecurityConfig.Builder()
335a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker                .addCertificatesEntryRef(
345a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker                        // Use the KeyStore and do not override pins (of which there are none).
355a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker                        new CertificatesEntryRef(new KeyStoreCertificateSource(ks), false))
365a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker                .build();
375a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    }
385a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
395a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    @Override
405a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    public Set<Pair<Domain, NetworkSecurityConfig>> getPerDomainConfigs() {
415a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker        return null;
425a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    }
435a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
445a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    @Override
455a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    public NetworkSecurityConfig getDefaultConfig() {
465a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker        return mConfig;
475a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker    }
485a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker}
495a1078f40dd511901c33ccf78be6e2d5081d6637Chad Brubaker
50