jdk/src/share/classes/com/sun/crypto/provider/HmacMD5.java
changeset 12685 8a448b5b9006
parent 5506 202f599c92aa
--- a/jdk/src/share/classes/com/sun/crypto/provider/HmacMD5.java	Tue May 08 11:16:36 2012 -0700
+++ b/jdk/src/share/classes/com/sun/crypto/provider/HmacMD5.java	Tue May 08 17:57:48 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, 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
@@ -37,97 +37,11 @@
  *
  * @author Jan Luehe
  */
-public final class HmacMD5 extends MacSpi implements Cloneable {
-
-    private HmacCore hmac;
-    private static final int MD5_BLOCK_LENGTH = 64;
-
+public final class HmacMD5 extends HmacCore {
     /**
      * Standard constructor, creates a new HmacMD5 instance.
      */
     public HmacMD5() throws NoSuchAlgorithmException {
-        hmac = new HmacCore(MessageDigest.getInstance("MD5"),
-                            MD5_BLOCK_LENGTH);
-    }
-
-    /**
-     * Returns the length of the HMAC in bytes.
-     *
-     * @return the HMAC length in bytes.
-     */
-    protected int engineGetMacLength() {
-        return hmac.getDigestLength();
-    }
-
-    /**
-     * Initializes the HMAC with the given secret key and algorithm parameters.
-     *
-     * @param key the secret key.
-     * @param params the algorithm parameters.
-     *
-     * @exception InvalidKeyException if the given key is inappropriate for
-     * initializing this MAC.
-     * @exception InvalidAlgorithmParameterException if the given algorithm
-     * parameters are inappropriate for this MAC.
-     */
-    protected void engineInit(Key key, AlgorithmParameterSpec params)
-        throws InvalidKeyException, InvalidAlgorithmParameterException {
-        hmac.init(key, params);
-    }
-
-    /**
-     * Processes the given byte.
-     *
-     * @param input the input byte to be processed.
-     */
-    protected void engineUpdate(byte input) {
-        hmac.update(input);
-    }
-
-    /**
-     * Processes the first <code>len</code> bytes in <code>input</code>,
-     * starting at <code>offset</code>.
-     *
-     * @param input the input buffer.
-     * @param offset the offset in <code>input</code> where the input starts.
-     * @param len the number of bytes to process.
-     */
-    protected void engineUpdate(byte input[], int offset, int len) {
-        hmac.update(input, offset, len);
-    }
-
-    protected void engineUpdate(ByteBuffer input) {
-        hmac.update(input);
-    }
-
-    /**
-     * Completes the HMAC computation and resets the HMAC for further use,
-     * maintaining the secret key that the HMAC was initialized with.
-     *
-     * @return the HMAC result.
-     */
-    protected byte[] engineDoFinal() {
-        return hmac.doFinal();
-    }
-
-    /**
-     * Resets the HMAC for further use, maintaining the secret key that the
-     * HMAC was initialized with.
-     */
-    protected void engineReset() {
-        hmac.reset();
-    }
-
-    /*
-     * Clones this object.
-     */
-    public Object clone() {
-        HmacMD5 that = null;
-        try {
-            that = (HmacMD5) super.clone();
-            that.hmac = (HmacCore) this.hmac.clone();
-        } catch (CloneNotSupportedException e) {
-        }
-        return that;
+        super("MD5", 64);
     }
 }