2362N/A * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 2362N/A * or visit www.oracle.com if you need additional information or have any 0N/A * Key implementation for RSA private keys, CRT form. For non-CRT private 0N/A * keys, see RSAPrivateKeyImpl. We need separate classes to ensure 0N/A * correct behavior in instanceof checks, etc. 0N/A * Note: RSA keys must be at least 512 bits long 0N/A * @see RSAPrivateKeyImpl 0N/A * @see RSAKeyFactory 0N/A * @author Andreas Sterbenz 0N/A // algorithmId used to identify RSA keys 0N/A * Generate a new key from its encoding. Returns a CRT key if possible 0N/A * and a non-CRT key otherwise. Used by RSAKeyFactory. 0N/A // public exponent is missing, return a non-CRT key 0N/A * Construct a key from its encoding. Called from newKey above. 0N/A * Construct a key from its components. Used by the 0N/A * RSAKeyFactory and the RSAKeyPairGenerator. 0N/A // generate the encoding 0N/A // should never occur 0N/A * Parse the key. Called by PKCS8Key. 0N/A * Read a BigInteger from the DerInputStream. 0N/A * Some implementations do not correctly encode ASN.1 INTEGER values 0N/A * in 2's complement format, resulting in a negative integer when 0N/A * decoded. Correct the error by converting it to a positive integer. 0N/A // return a string representation of this key for debugging