gnu.java.security.sig.rsa

Class RSA


public class RSA
extends Object

Utility methods related to the RSA algorithm.

References:

  1. RSA-PSS Signature Scheme with Appendix, part B.
    Primitive specification and supporting documentation.
    Jakob Jonsson and Burt Kaliski.
  2. Public-Key Cryptography Standards (PKCS) #1:
    RSA Cryptography Specifications Version 2.1.
    Jakob Jonsson and Burt Kaliski.
  3. Remote timing attacks are practical
    D. Boneh and D. Brumley.

Method Summary

static byte[]
I2OSP(BigInteger s, int k)
Converts a multi-precision integer (MPI) s into an octet sequence of length k.
static BigInteger
decrypt(PrivateKey K, BigInteger c)
An implementation of the RSADP algorithm.
static BigInteger
encrypt(PublicKey K, BigInteger m)
An implementation of the RSAEP algorithm.
static BigInteger
sign(PrivateKey K, BigInteger m)
An implementation of the RSASP method: Assuming that the designated RSA private key is a valid one, this method computes a signature representative for a designated message representative signed by the holder of the designated RSA private key.
static BigInteger
verify(PublicKey K, BigInteger s)
An implementation of the RSAVP method: Assuming that the designated RSA public key is a valid one, this method computes a message representative for the designated signature representative generated by an RSA private key, for a message intended for the holder of the designated RSA public key.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Details

I2OSP

public static final byte[] I2OSP(BigInteger s,
                                 int k)
Converts a multi-precision integer (MPI) s into an octet sequence of length k.
Parameters:
s - the multi-precision integer to convert.
k - the length of the output.
Returns:
the result of the transform.
Throws:
IllegalArgumentException - if the length in octets of meaningful bytes of s is greater than k.

decrypt

public static final BigInteger decrypt(PrivateKey K,
                                       BigInteger c)
An implementation of the RSADP algorithm.
Parameters:
K - the recipient's RSA private key.
c - the ciphertext representative as an MPI.
Returns:
the message representative, an MPI between 0 and n - 1 (n being the shared public modulus).
Throws:
ClassCastException - if K is not an RSA one.
IllegalArgumentException - if c, the ciphertext representative is not between 0 and n - 1 (n being the shared public modulus).

encrypt

public static final BigInteger encrypt(PublicKey K,
                                       BigInteger m)
An implementation of the RSAEP algorithm.
Parameters:
K - the recipient's RSA public key.
m - the message representative as an MPI.
Returns:
the resulting MPI --an MPI between 0 and n - 1 (n being the public shared modulus)-- that will eventually be padded with an appropriate framing/padding scheme.
Throws:
ClassCastException - if K is not an RSA one.
IllegalArgumentException - if m, the message representative is not between 0 and n - 1 (n being the public shared modulus).

sign

public static final BigInteger sign(PrivateKey K,
                                    BigInteger m)
An implementation of the RSASP method: Assuming that the designated RSA private key is a valid one, this method computes a signature representative for a designated message representative signed by the holder of the designated RSA private key.
Parameters:
K - the RSA private key.
m - the message representative: an integer between 0 and n - 1, where n is the RSA modulus.
Returns:
the signature representative, an integer between 0 and n - 1, where n is the RSA modulus.
Throws:
ClassCastException - if K is not an RSA one.
IllegalArgumentException - if m (the message representative) is out of range.

verify

public static final BigInteger verify(PublicKey K,
                                      BigInteger s)
An implementation of the RSAVP method: Assuming that the designated RSA public key is a valid one, this method computes a message representative for the designated signature representative generated by an RSA private key, for a message intended for the holder of the designated RSA public key.
Parameters:
K - the RSA public key.
s - the signature representative, an integer between 0 and n - 1, where n is the RSA modulus.
Returns:
a message representative: an integer between 0 and n - 1, where n is the RSA modulus.
Throws:
ClassCastException - if K is not an RSA one.
IllegalArgumentException - if s (the signature representative) is out of range.

RSA.java -- Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc. This file is a part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.