diff options
Diffstat (limited to 'pg/src/main/java/org/spongycastle/bcpg/RSAPublicBCPGKey.java')
-rw-r--r-- | pg/src/main/java/org/spongycastle/bcpg/RSAPublicBCPGKey.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/pg/src/main/java/org/spongycastle/bcpg/RSAPublicBCPGKey.java b/pg/src/main/java/org/spongycastle/bcpg/RSAPublicBCPGKey.java new file mode 100644 index 00000000..e6eed70f --- /dev/null +++ b/pg/src/main/java/org/spongycastle/bcpg/RSAPublicBCPGKey.java @@ -0,0 +1,91 @@ +package org.spongycastle.bcpg; + +import java.math.BigInteger; +import java.io.*; + +/** + * base class for an RSA Public Key. + */ +public class RSAPublicBCPGKey + extends BCPGObject implements BCPGKey +{ + MPInteger n; + MPInteger e; + + /** + * Construct an RSA public key from the passed in stream. + * + * @param in + * @throws IOException + */ + public RSAPublicBCPGKey( + BCPGInputStream in) + throws IOException + { + this.n = new MPInteger(in); + this.e = new MPInteger(in); + } + + /** + * + * @param n the modulus + * @param e the public exponent + */ + public RSAPublicBCPGKey( + BigInteger n, + BigInteger e) + { + this.n = new MPInteger(n); + this.e = new MPInteger(e); + } + + public BigInteger getPublicExponent() + { + return e.getValue(); + } + + public BigInteger getModulus() + { + return n.getValue(); + } + + /** + * return "PGP" + * + * @see org.spongycastle.bcpg.BCPGKey#getFormat() + */ + public String getFormat() + { + return "PGP"; + } + + /** + * return the standard PGP encoding of the key. + * + * @see org.spongycastle.bcpg.BCPGKey#getEncoded() + */ + public byte[] getEncoded() + { + try + { + ByteArrayOutputStream bOut = new ByteArrayOutputStream(); + BCPGOutputStream pgpOut = new BCPGOutputStream(bOut); + + pgpOut.writeObject(this); + + return bOut.toByteArray(); + } + catch (IOException e) + { + return null; + } + } + + public void encode( + BCPGOutputStream out) + throws IOException + { + out.writeObject(n); + out.writeObject(e); + } +} |