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