14a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin/*
24a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * Copyright (C) 2015 The Android Open Source Project
34a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin *
44a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * Licensed under the Apache License, Version 2.0 (the "License");
54a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * you may not use this file except in compliance with the License.
64a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * You may obtain a copy of the License at
74a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin *
84a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin *      http://www.apache.org/licenses/LICENSE-2.0
94a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin *
104a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * Unless required by applicable law or agreed to in writing, software
114a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * distributed under the License is distributed on an "AS IS" BASIS,
124a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * See the License for the specific language governing permissions and
144a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * limitations under the License.
154a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin */
164a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin
174a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubinpackage android.security.keystore;
184a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin
194a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubinimport java.math.BigInteger;
204a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubinimport java.security.PrivateKey;
214a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubinimport java.security.interfaces.RSAKey;
224a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin
234a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin/**
244a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * RSA private key (instance of {@link PrivateKey} and {@link RSAKey}) backed by keystore.
254a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin *
264a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin * @hide
274a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin */
284a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubinpublic class AndroidKeyStoreRSAPrivateKey extends AndroidKeyStorePrivateKey implements RSAKey {
294a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin
304a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin    private final BigInteger mModulus;
314a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin
323876b1be27e3aefde9a72eb2e4f856e94fc5f946Alex Klyubin    public AndroidKeyStoreRSAPrivateKey(String alias, int uid, BigInteger modulus) {
333876b1be27e3aefde9a72eb2e4f856e94fc5f946Alex Klyubin        super(alias, uid, KeyProperties.KEY_ALGORITHM_RSA);
344a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin        mModulus = modulus;
354a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin    }
364a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin
374a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin    @Override
384a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin    public BigInteger getModulus() {
394a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin        return mModulus;
404a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin    }
414a0ff7ca984d29bd34b02e54441957cad65e8b53Alex Klyubin}
42