IMO, all these engineXXX methods are from it's super class MessageDigestSpi.
And there is a paragraph on spec:

<cite>
Note that this class is abstract and extends from MessageDigestSpi for
historical reasons. Application developers should only take notice of the
methods defined in this MessageDigest class; all the methods in the
superclass are intended for cryptographic service providers who wish to
supply their own implementations of message digest algorithms.
</cite>

So, this exception thrown senario is implementation dependent. I'd prefer to
regards it as non bug difference.

Best regards
2007/1/23, Ruth Cao <[EMAIL PROTECTED]>:

Hello all,

I've found that MessageDigest_Impl1Test in security module, the following
test case[1] passes on Harmony but fails on *RI*. RI throws
NullPointerException here.

Is it a non-bug difference or a bug? Would any security expert give some
suggestions?

Thanks in advance.

[1] public class MyMessageDigest1 extends MessageDigest {

   public boolean runEngineReset = false;
   public boolean runEngineDigest = false;
   public boolean runEngineUpdate1 = false;
   public boolean runEngineUpdate2 = false;

   public MyMessageDigest1() {
       super(null);
   }

   public MyMessageDigest1(String algorithm) {
       super(algorithm);
   }

   public void engineReset() {
       runEngineReset = true;
   }

   public byte[] engineDigest() {
       runEngineDigest = true;
       return null;
   }

   public void engineUpdate(byte arg0) {
       runEngineUpdate1 = true;
   }

   public void engineUpdate(byte[] arg0, int arg1, int arg2) {
       runEngineUpdate2 = true;
   }
}

public void testDigestbyteArrayintint() throws Exception {
       MyMessageDigest1 md = new MyMessageDigest1("ABC");
       byte[] b = {1, 2, 3, 4, 5};
       assertEquals("incorrect result", 0, md.digest(b, 2, 3));
//$NON-NLS-1$
}

--
Best regards,

Ruth Cao
China Software Development Lab, IBM




--
Spark Shen
China Software Development Lab, IBM

Reply via email to