diff options
Diffstat (limited to 'libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java')
| -rw-r--r-- | libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java | 292 |
1 files changed, 123 insertions, 169 deletions
diff --git a/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java b/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java index 39234b6271f..555dc23cf1a 100644 --- a/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java +++ b/libjava/classpath/gnu/javax/crypto/key/srp6/SRPKeyPairRawCodec.java @@ -47,116 +47,93 @@ import java.security.PrivateKey; import java.security.PublicKey; /** - * <p>An object that implements the {@link IKeyPairCodec} operations for the - * <i>Raw</i> format to use with SRP keypairs.</p> - * - * <p>Reference:</p> + * An object that implements the {@link IKeyPairCodec} operations for the + * <i>Raw</i> format to use with SRP keypairs. + * <p> + * Reference: * <ol> - * <li><a href="http://srp.stanford.edu/design.html">SRP Protocol Design</a><br> - * Thomas J. Wu.</li> + * <li><a href="http://srp.stanford.edu/design.html">SRP Protocol Design</a><br> + * Thomas J. Wu.</li> * </ol> */ -public class SRPKeyPairRawCodec implements IKeyPairCodec +public class SRPKeyPairRawCodec + implements IKeyPairCodec { - - // Constants and variables - // ------------------------------------------------------------------------- - - // Constructor(s) - // ------------------------------------------------------------------------- - // implicit 0-arguments constructor - // Class methods - // ------------------------------------------------------------------------- - - // Instance methods - // ------------------------------------------------------------------------- - - // gnu.crypto.keys.IKeyPairCodec interface implementation ------------------ - public int getFormatID() { return RAW_FORMAT; } /** - * <p>Returns the encoded form of the designated SRP public key according to - * the <i>Raw</i> format supported by this library.</p> - * - * <p>The <i>Raw</i> format for an SRP public key, in this implementation, is - * a byte sequence consisting of the following:</p> + * Returns the encoded form of the designated SRP public key according to the + * <i>Raw</i> format supported by this library. + * <p> + * The <i>Raw</i> format for an SRP public key, in this implementation, is a + * byte sequence consisting of the following: * <ol> - * <li>4-byte magic consisting of the value of the literal - * {@link Registry#MAGIC_RAW_SRP_PUBLIC_KEY},<li> - * <li>1-byte version consisting of the constant: 0x01,</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>N</code> in internet order,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>N</code>,</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>g</code>,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>g</code>,</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>y</code>,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>y</code>,</li> + * <li>4-byte magic consisting of the value of the literal + * {@link Registry#MAGIC_RAW_SRP_PUBLIC_KEY},</li> + * <li>1-byte version consisting of the constant: 0x01,</li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>N</code> in internet order,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>N</code>, + * </li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>g</code>,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>g</code>, + * </li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>y</code>,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>y</code>, + * </li> * </ol> - * + * * @param key the key to encode. * @return the <i>Raw</i> format encoding of the designated key. * @throws IllegalArgumentException if the designated key is not an SRP one. */ public byte[] encodePublicKey(PublicKey key) { - if (!(key instanceof SRPPublicKey)) - { - throw new IllegalArgumentException("key"); - } - + if (! (key instanceof SRPPublicKey)) + throw new IllegalArgumentException("key"); SRPPublicKey srpKey = (SRPPublicKey) key; ByteArrayOutputStream baos = new ByteArrayOutputStream(); - // magic baos.write(Registry.MAGIC_RAW_SRP_PUBLIC_KEY[0]); baos.write(Registry.MAGIC_RAW_SRP_PUBLIC_KEY[1]); baos.write(Registry.MAGIC_RAW_SRP_PUBLIC_KEY[2]); baos.write(Registry.MAGIC_RAW_SRP_PUBLIC_KEY[3]); - // version baos.write(0x01); - // N byte[] buffer = srpKey.getN().toByteArray(); int length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); - // g buffer = srpKey.getG().toByteArray(); length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); - // y buffer = srpKey.getY().toByteArray(); length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); - return baos.toByteArray(); } @@ -167,150 +144,133 @@ public class SRPKeyPairRawCodec implements IKeyPairCodec || k[1] != Registry.MAGIC_RAW_SRP_PUBLIC_KEY[1] || k[2] != Registry.MAGIC_RAW_SRP_PUBLIC_KEY[2] || k[3] != Registry.MAGIC_RAW_SRP_PUBLIC_KEY[3]) - { - throw new IllegalArgumentException("magic"); - } - + throw new IllegalArgumentException("magic"); // version if (k[4] != 0x01) - { - throw new IllegalArgumentException("version"); - } + throw new IllegalArgumentException("version"); int i = 5; - int l; byte[] buffer; - // N - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger N = new BigInteger(1, buffer); - // g - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger g = new BigInteger(1, buffer); - // y - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger y = new BigInteger(1, buffer); - return new SRPPublicKey(N, g, y); } /** - * <p>Returns the encoded form of the designated SRP private key according to - * the <i>Raw</i> format supported by this library.</p> - * - * <p>The <i>Raw</i> format for an SRP private key, in this implementation, - * is a byte sequence consisting of the following:</p> + * Returns the encoded form of the designated SRP private key according to the + * <i>Raw</i> format supported by this library. + * <p> + * The <i>Raw</i> format for an SRP private key, in this implementation, is a + * byte sequence consisting of the following: * <ol> - * <li>4-byte magic consisting of the value of the literal - * {@link Registry#MAGIC_RAW_SRP_PRIVATE_KEY},<li> - * <li>1-byte version consisting of the constant: 0x01,</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>N</code> in internet order,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>N</code>,</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>g</code>,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>g</code>,</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>x</code>,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>x</code>,</li> - * <li>one byte which indicates whether the SRP parameter <code>v</code> - * is included in this encoding (value <code>0x01</code>) or not - * (value <code>0x00</code>).</li> - * <li>4-byte count of following bytes representing the SRP parameter - * <code>v</code>,</li> - * <li>n-bytes representation of a {@link BigInteger} obtained by invoking - * the <code>toByteArray()</code> method on the SRP parameter - * <code>v</code>,</li> + * <li>4-byte magic consisting of the value of the literal + * {@link Registry#MAGIC_RAW_SRP_PRIVATE_KEY},</li> + * <li>1-byte version consisting of the constant: 0x01,</li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>N</code> in internet order,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>N</code>, + * </li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>g</code>,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>g</code>, + * </li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>x</code>,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>x</code>, + * </li> + * <li>one byte which indicates whether the SRP parameter <code>v</code> is + * included in this encoding (value <code>0x01</code>) or not (value + * <code>0x00</code>).</li> + * <li>4-byte count of following bytes representing the SRP parameter + * <code>v</code>,</li> + * <li>n-bytes representation of a {@link BigInteger} obtained by invoking + * the <code>toByteArray()</code> method on the SRP parameter <code>v</code>, + * </li> * </ol> - * + * * @param key the key to encode. * @return the <i>Raw</i> format encoding of the designated key. * @throws IllegalArgumentException if the designated key is not an SRP one. */ public byte[] encodePrivateKey(PrivateKey key) { - if (!(key instanceof SRPPrivateKey)) - { - throw new IllegalArgumentException("key"); - } - + if (! (key instanceof SRPPrivateKey)) + throw new IllegalArgumentException("key"); SRPPrivateKey srpKey = (SRPPrivateKey) key; ByteArrayOutputStream baos = new ByteArrayOutputStream(); - // magic baos.write(Registry.MAGIC_RAW_SRP_PRIVATE_KEY[0]); baos.write(Registry.MAGIC_RAW_SRP_PRIVATE_KEY[1]); baos.write(Registry.MAGIC_RAW_SRP_PRIVATE_KEY[2]); baos.write(Registry.MAGIC_RAW_SRP_PRIVATE_KEY[3]); - // version baos.write(0x01); - // N byte[] buffer = srpKey.getN().toByteArray(); int length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); - // g buffer = srpKey.getG().toByteArray(); length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); - // x buffer = srpKey.getX().toByteArray(); length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); - // v if (srpKey.getV() != null) { baos.write(0x01); - buffer = srpKey.getV().toByteArray(); length = buffer.length; - baos.write(length >>> 24); + baos.write( length >>> 24); baos.write((length >>> 16) & 0xFF); - baos.write((length >>> 8) & 0xFF); - baos.write(length & 0xFF); + baos.write((length >>> 8) & 0xFF); + baos.write( length & 0xFF); baos.write(buffer, 0, length); } else - { - baos.write(0x00); - } - + baos.write(0x00); return baos.toByteArray(); } @@ -321,60 +281,54 @@ public class SRPKeyPairRawCodec implements IKeyPairCodec || k[1] != Registry.MAGIC_RAW_SRP_PRIVATE_KEY[1] || k[2] != Registry.MAGIC_RAW_SRP_PRIVATE_KEY[2] || k[3] != Registry.MAGIC_RAW_SRP_PRIVATE_KEY[3]) - { - throw new IllegalArgumentException("magic"); - } - + throw new IllegalArgumentException("magic"); // version if (k[4] != 0x01) - { - throw new IllegalArgumentException("version"); - } + throw new IllegalArgumentException("version"); int i = 5; - int l; byte[] buffer; - // N - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger N = new BigInteger(1, buffer); - // g - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger g = new BigInteger(1, buffer); - // x - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger x = new BigInteger(1, buffer); - // v l = k[i++]; if (l == 0x01) { - l = k[i++] << 24 | (k[i++] & 0xFF) << 16 | (k[i++] & 0xFF) << 8 - | (k[i++] & 0xFF); + l = k[i++] << 24 + | (k[i++] & 0xFF) << 16 + | (k[i++] & 0xFF) << 8 + | (k[i++] & 0xFF); buffer = new byte[l]; System.arraycopy(k, i, buffer, 0, l); i += l; BigInteger v = new BigInteger(1, buffer); - return new SRPPrivateKey(N, g, x, v); } - else - { - return new SRPPrivateKey(N, g, x); - } + return new SRPPrivateKey(N, g, x); } } |
