diff options
Diffstat (limited to 'libjava/classpath/gnu/javax/crypto/key/srp6/SRP6User.java')
-rw-r--r-- | libjava/classpath/gnu/javax/crypto/key/srp6/SRP6User.java | 72 |
1 files changed, 16 insertions, 56 deletions
diff --git a/libjava/classpath/gnu/javax/crypto/key/srp6/SRP6User.java b/libjava/classpath/gnu/javax/crypto/key/srp6/SRP6User.java index d300d6f7664..7c97e76976e 100644 --- a/libjava/classpath/gnu/javax/crypto/key/srp6/SRP6User.java +++ b/libjava/classpath/gnu/javax/crypto/key/srp6/SRP6User.java @@ -52,73 +52,45 @@ import java.util.HashMap; import java.util.Map; /** - * <p>The implementation of the User in the SRP-6 protocol.</p> - * - * <p>Reference:</p> + * The implementation of the User in the SRP-6 protocol. + * <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 SRP6User extends SRP6KeyAgreement +public class SRP6User + extends SRP6KeyAgreement { - - // Constants and variables - // ------------------------------------------------------------------------- - /** The user's identity. */ private String I; - /** The user's cleartext password. */ private byte[] p; - /** The user's ephemeral key pair. */ private KeyPair userKeyPair; - // Constructor(s) - // ------------------------------------------------------------------------- - // default 0-arguments constructor - // Class methods - // ------------------------------------------------------------------------- - - // Instance methods - // ------------------------------------------------------------------------- - - // implementation of abstract methods in base class ------------------------ - protected void engineInit(final Map attributes) throws KeyAgreementException { rnd = (SecureRandom) attributes.get(SOURCE_OF_RANDOMNESS); N = (BigInteger) attributes.get(SHARED_MODULUS); if (N == null) - { - throw new KeyAgreementException("missing shared modulus"); - } + throw new KeyAgreementException("missing shared modulus"); g = (BigInteger) attributes.get(GENERATOR); if (g == null) - { - throw new KeyAgreementException("missing generator"); - } - + throw new KeyAgreementException("missing generator"); final String md = (String) attributes.get(HASH_FUNCTION); - if (md == null || "".equals(md.trim())) - { - throw new KeyAgreementException("missing hash function"); - } + if (md == null || md.trim().length() == 0) + throw new KeyAgreementException("missing hash function"); srp = SRP.instance(md); - I = (String) attributes.get(USER_IDENTITY); if (I == null) - { - throw new KeyAgreementException("missing user identity"); - } + throw new KeyAgreementException("missing user identity"); p = (byte[]) attributes.get(USER_PASSWORD); if (p == null) - { - throw new KeyAgreementException("missing user password"); - } + throw new KeyAgreementException("missing user password"); } protected OutgoingMessage engineProcessMessage(final IncomingMessage in) @@ -143,8 +115,6 @@ public class SRP6User extends SRP6KeyAgreement super.engineReset(); } - // own methods ------------------------------------------------------------- - private OutgoingMessage sendIdentity(final IncomingMessage in) throws KeyAgreementException { @@ -152,18 +122,14 @@ public class SRP6User extends SRP6KeyAgreement final SRPKeyPairGenerator kpg = new SRPKeyPairGenerator(); final Map attributes = new HashMap(); if (rnd != null) - { - attributes.put(SRPKeyPairGenerator.SOURCE_OF_RANDOMNESS, rnd); - } + attributes.put(SRPKeyPairGenerator.SOURCE_OF_RANDOMNESS, rnd); attributes.put(SRPKeyPairGenerator.SHARED_MODULUS, N); attributes.put(SRPKeyPairGenerator.GENERATOR, g); kpg.setup(attributes); userKeyPair = kpg.generate(); - final OutgoingMessage result = new OutgoingMessage(); result.writeString(I); result.writeMPI(((SRPPublicKey) userKeyPair.getPublic()).getY()); - return result; } @@ -172,10 +138,8 @@ public class SRP6User extends SRP6KeyAgreement { final BigInteger s = in.readMPI(); final BigInteger B = in.readMPI(); - final BigInteger A = ((SRPPublicKey) userKeyPair.getPublic()).getY(); final BigInteger u = uValue(A, B); // u = H(A | B) - final BigInteger x; try { @@ -185,18 +149,14 @@ public class SRP6User extends SRP6KeyAgreement { throw new KeyAgreementException("computeSharedSecret()", e); } - // compute S = (B - 3g^x) ^ (a + ux) final BigInteger a = ((SRPPrivateKey) userKeyPair.getPrivate()).getX(); - final BigInteger S = B.subtract(THREE.multiply(g.modPow(x, N))).modPow( - a.add(u.multiply(x)), - N); - + final BigInteger S = B.subtract(THREE.multiply(g.modPow(x, N))) + .modPow(a.add(u.multiply(x)), N); final byte[] sBytes = Util.trim(S); final IMessageDigest hash = srp.newDigest(); hash.update(sBytes, 0, sBytes.length); K = new BigInteger(1, hash.digest()); - complete = true; return null; } |