<!--
 Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

 This code is free software; you can redistribute it and/or modify it
 under the terms of the GNU General Public License version 2 only, as
 published by the Free Software Foundation.  Oracle designates this
 particular file as subject to the "Classpath" exception as provided
 by Oracle in the LICENSE file that accompanied this code.

 This code 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
 version 2 for more details (a copy is included in the LICENSE file that
 accompanied this code).

 You should have received a copy of the GNU General Public License version
 2 along with this work; if not, write to the Free Software Foundation,
 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

 Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 or visit www.oracle.com if you need additional information or have any
 questions.
-->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<body bgcolor="white">

Provides interfaces for generating RSA (Rivest, Shamir and
Adleman AsymmetricCipher algorithm)
keys as defined in the RSA Laboratory Technical Note
PKCS#1, and DSA (Digital Signature
Algorithm) keys as defined in NIST's FIPS-186.
<P>
Note that these interfaces are intended only for key
implementations whose key material is accessible and 
available. These interfaces are not intended for key 
implementations whose key material resides in 
inaccessible, protected storage (such as in a 
hardware device). 
<P>
For more developer information on how to use these 
interfaces, including information on how to design 
<code>Key</code> classes for hardware devices, please refer
to these cryptographic provider developer guides:
<ul>
  <li><a href=
    "{@docRoot}/../technotes/guides/security/crypto/HowToImplAProvider.html">
    <b>How to Implement a Provider for the
    Java<FONT SIZE=-2><SUP>TM</SUP></FONT> Cryptography Architecture
    </b></a></li>
</ul>

<h2>Package Specification</h2>

<ul>
  <li>PKCS #1: RSA Encryption Standard, Version 1.5, November 1993 </li>
  <li>Federal Information Processing Standards Publication (FIPS PUB) 186:
    Digital Signature Standard (DSS) </li>
</ul>

<h2>Related Documentation</h2>

For further documentation, please see:
<ul>
  <li>
    <a href=
      "{@docRoot}/../technotes/guides/security/crypto/CryptoSpec.html">
      <b>Java<FONT SIZE=-2><SUP>TM</SUP></FONT>
      Cryptography Architecture API Specification and Reference
      </b></a></li>
</ul>

@since JDK1.1
</body>
</html>
