You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@royale.apache.org by Harbs <ha...@gmail.com> on 2017/11/27 11:54:46 UTC

Re: [royale-asjs] branch develop updated: Added failing test for MD5

It turns out that MD5 is completely broken.

My theory was that it should migrate from the Flash version and BinaryData should have been a drop-in replacement or ByteArray.

Well, the theory didn’t work out and I spent a long time trying to figure out why it’s broken. It seems to be broken in both Flash and JS runtimes. For kicks, I tried the MD5Stream version as well and that didn’t work either.

I tried various combinations with endians and that did not seem to be like it. I’m pretty stumped.

I did manage to successfully incorporate a JS implementation of MD5 in a Royale class[1] in my project, so I’m personally not stuck on this issue.

Anyone interested in looking at this?

Harbs

[1]https://github.com/blueimp/JavaScript-MD5 <https://github.com/blueimp/JavaScript-MD5>
> On Nov 27, 2017, at 1:18 PM, harbs@apache.org wrote:
> 
> This is an automated email from the ASF dual-hosted git repository.
> 
> harbs pushed a commit to branch develop
> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
> 
> 
> The following commit(s) were added to refs/heads/develop by this push:
>     new ae6da3c  Added failing test for MD5
> ae6da3c is described below
> 
> commit ae6da3c1bb3f663c641153b7b3b60f6d8a90b54b
> Author: Harbs <ha...@in-tools.com>
> AuthorDate: Mon Nov 27 13:18:38 2017 +0200
> 
>    Added failing test for MD5
> ---
> .../src/main/royale/flexUnitTests/CoreTester.as    |  3 +-
> .../{CoreTester.as => core/MD5Test.as}             | 50 ++++++++++++++--------
> 2 files changed, 33 insertions(+), 20 deletions(-)
> 
> diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> index 9af36e3..5ce4e9a 100644
> --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> @@ -27,7 +27,7 @@ package flexUnitTests
>         public function CoreTester()
>         {
>             // for JS, force-link these classes in the output
> -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
> +            var arr:Array = [StrandTesterTest, BinaryDataTesterTest,MD5Test];
>         }
> 
>         // in JS, using a class as a type won't include the class in
> @@ -39,5 +39,6 @@ package flexUnitTests
>         // better and allow you to define order.
>         public var strandTesterTest:StrandTesterTest;
> 		public var binaryDataTesterTest:BinaryDataTesterTest;
> +		public var md5Test:MD5Test;
>     }
> }
> diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as b/manualtests/UnitTests/src/main/royale/flexUnitTests/core/MD5Test.as
> similarity index 52%
> copy from manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> copy to manualtests/UnitTests/src/main/royale/flexUnitTests/core/MD5Test.as
> index 9af36e3..20dc46f 100644
> --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/core/MD5Test.as
> @@ -16,28 +16,40 @@
> //  limitations under the License.
> //
> ////////////////////////////////////////////////////////////////////////////////
> -package flexUnitTests
> +package flexUnitTests.core
> {
> -	import flexUnitTests.core.*
> -
> -    [Suite]
> -    [RunWith("org.flexunit.runners.Suite")]
> -    public class CoreTester
> -    {
> -        public function CoreTester()
> +    import flexunit.framework.Assert;
> +    
> +    import org.apache.royale.utils.MD5;
> +    
> +    public class MD5Test
> +    {		
> +        [Before]
> +        public function setUp():void
>         {
> -            // for JS, force-link these classes in the output
> -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
>         }
> 
> -        // in JS, using a class as a type won't include the class in
> -        // the output since types are not chcked in JS.  It is when
> -        // the actual class is referenced that it will be included
> -        // in the output.
> -        // Is there a reason to use reflection to gather the set
> -        // of tests?  I would think an array of tests would wokr
> -        // better and allow you to define order.
> -        public var strandTesterTest:StrandTesterTest;
> -		public var binaryDataTesterTest:BinaryDataTesterTest;
> +        [After]
> +        public function tearDown():void
> +        {
> +        }
> +        
> +        [BeforeClass]
> +        public static function setUpBeforeClass():void
> +        {
> +        }
> +        
> +        [AfterClass]
> +        public static function tearDownAfterClass():void
> +        {
> +        }
> +        
> +        [Test]
> +        public function testHash():void
> +        {
> +            Assert.assertEquals("Error testing foobaz", "80338e79d2ca9b9c090ebaaa2ef293c7",MD5.hash("foobaz"));
> +            Assert.assertEquals("Error testing bazfoo", "b6a013d5e2c00f894584ad577249dbc7",MD5.hash("bazfoo"));
> +            Assert.assertEquals("Error testing password1234", "bdc87b9c894da5168059e00ebffb9077",MD5.hash("password1234"));
> +        }        
>     }
> }
> 
> -- 
> To stop receiving notification emails like this one, please contact
> ['"commits@royale.apache.org" <co...@royale.apache.org>'].


Re: [royale-asjs] branch develop updated: Added failing test for MD5

Posted by Harbs <ha...@gmail.com>.
I locally converted MD5Stream to use BinaryData (so it could run in a JS environment) instead of ByteArray and I got the wrong results for the MD5 hash.

> On Nov 27, 2017, at 2:01 PM, Piotr Zarzycki <pi...@gmail.com> wrote:
> 
> Hi Harbs,
> 
> What do you mean that is doesn't work ? We are using MD5Stream in the
> MD5CompareUtil [1] of the installer and it seems to be working pretty well.
> Do you get some strange results ?
> 
> [1]
> https://github.com/apache/flex-utilities/blob/develop/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as <https://github.com/apache/flex-utilities/blob/develop/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as>
> 
> Thanks, Piotr
> 
> 
> 2017-11-27 12:54 GMT+01:00 Harbs <harbs.lists@gmail.com <ma...@gmail.com>>:
> 
>> It turns out that MD5 is completely broken.
>> 
>> My theory was that it should migrate from the Flash version and BinaryData
>> should have been a drop-in replacement or ByteArray.
>> 
>> Well, the theory didn’t work out and I spent a long time trying to figure
>> out why it’s broken. It seems to be broken in both Flash and JS runtimes.
>> For kicks, I tried the MD5Stream version as well and that didn’t work
>> either.
>> 
>> I tried various combinations with endians and that did not seem to be like
>> it. I’m pretty stumped.
>> 
>> I did manage to successfully incorporate a JS implementation of MD5 in a
>> Royale class[1] in my project, so I’m personally not stuck on this issue.
>> 
>> Anyone interested in looking at this?
>> 
>> Harbs
>> 
>> [1]https://github.com/blueimp/JavaScript-MD5 <https://github.com/blueimp/JavaScript-MD5> <https://github.com/blueimp/ <https://github.com/blueimp/>
>> JavaScript-MD5>
>>> On Nov 27, 2017, at 1:18 PM, harbs@apache.org <ma...@apache.org> wrote:
>>> 
>>> This is an automated email from the ASF dual-hosted git repository.
>>> 
>>> harbs pushed a commit to branch develop
>>> in repository https://gitbox.apache.org/repos/asf/royale-asjs.git <https://gitbox.apache.org/repos/asf/royale-asjs.git>
>>> 
>>> 
>>> The following commit(s) were added to refs/heads/develop by this push:
>>>    new ae6da3c  Added failing test for MD5
>>> ae6da3c is described below
>>> 
>>> commit ae6da3c1bb3f663c641153b7b3b60f6d8a90b54b
>>> Author: Harbs <harbs@in-tools.com <ma...@in-tools.com>>
>>> AuthorDate: Mon Nov 27 13:18:38 2017 +0200
>>> 
>>>   Added failing test for MD5
>>> ---
>>> .../src/main/royale/flexUnitTests/CoreTester.as    |  3 +-
>>> .../{CoreTester.as => core/MD5Test.as}             | 50
>> ++++++++++++++--------
>>> 2 files changed, 33 insertions(+), 20 deletions(-)
>>> 
>>> diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>> b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> index 9af36e3..5ce4e9a 100644
>>> --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> @@ -27,7 +27,7 @@ package flexUnitTests
>>>        public function CoreTester()
>>>        {
>>>            // for JS, force-link these classes in the output
>>> -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
>>> +            var arr:Array = [StrandTesterTest,
>> BinaryDataTesterTest,MD5Test];
>>>        }
>>> 
>>>        // in JS, using a class as a type won't include the class in
>>> @@ -39,5 +39,6 @@ package flexUnitTests
>>>        // better and allow you to define order.
>>>        public var strandTesterTest:StrandTesterTest;
>>>              public var binaryDataTesterTest:BinaryDataTesterTest;
>>> +             public var md5Test:MD5Test;
>>>    }
>>> }
>>> diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>> b/manualtests/UnitTests/src/main/royale/flexUnitTests/core/MD5Test.as
>>> similarity index 52%
>>> copy from manualtests/UnitTests/src/main/royale/flexUnitTests/
>> CoreTester.as
>>> copy to manualtests/UnitTests/src/main/royale/flexUnitTests/
>> core/MD5Test.as
>>> index 9af36e3..20dc46f 100644
>>> --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
>>> +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/
>> core/MD5Test.as
>>> @@ -16,28 +16,40 @@
>>> //  limitations under the License.
>>> //
>>> ////////////////////////////////////////////////////////////
>> ////////////////////
>>> -package flexUnitTests
>>> +package flexUnitTests.core
>>> {
>>> -     import flexUnitTests.core.*
>>> -
>>> -    [Suite]
>>> -    [RunWith("org.flexunit.runners.Suite")]
>>> -    public class CoreTester
>>> -    {
>>> -        public function CoreTester()
>>> +    import flexunit.framework.Assert;
>>> +
>>> +    import org.apache.royale.utils.MD5;
>>> +
>>> +    public class MD5Test
>>> +    {
>>> +        [Before]
>>> +        public function setUp():void
>>>        {
>>> -            // for JS, force-link these classes in the output
>>> -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
>>>        }
>>> 
>>> -        // in JS, using a class as a type won't include the class in
>>> -        // the output since types are not chcked in JS.  It is when
>>> -        // the actual class is referenced that it will be included
>>> -        // in the output.
>>> -        // Is there a reason to use reflection to gather the set
>>> -        // of tests?  I would think an array of tests would wokr
>>> -        // better and allow you to define order.
>>> -        public var strandTesterTest:StrandTesterTest;
>>> -             public var binaryDataTesterTest:BinaryDataTesterTest;
>>> +        [After]
>>> +        public function tearDown():void
>>> +        {
>>> +        }
>>> +
>>> +        [BeforeClass]
>>> +        public static function setUpBeforeClass():void
>>> +        {
>>> +        }
>>> +
>>> +        [AfterClass]
>>> +        public static function tearDownAfterClass():void
>>> +        {
>>> +        }
>>> +
>>> +        [Test]
>>> +        public function testHash():void
>>> +        {
>>> +            Assert.assertEquals("Error testing foobaz", "
>> 80338e79d2ca9b9c090ebaaa2ef293c7",MD5.hash("foobaz"));
>>> +            Assert.assertEquals("Error testing bazfoo", "
>> b6a013d5e2c00f894584ad577249dbc7",MD5.hash("bazfoo"));
>>> +            Assert.assertEquals("Error testing password1234", "
>> bdc87b9c894da5168059e00ebffb9077",MD5.hash("password1234"));
>>> +        }
>>>    }
>>> }
>>> 
>>> --
>>> To stop receiving notification emails like this one, please contact
>>> ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>> 
>> 
> 
> 
> -- 
> 
> Piotr Zarzycki
> 
> Patreon: *https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>
> <https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>>*


Re: [royale-asjs] branch develop updated: Added failing test for MD5

Posted by Piotr Zarzycki <pi...@gmail.com>.
Hi Harbs,

What do you mean that is doesn't work ? We are using MD5Stream in the
MD5CompareUtil [1] of the installer and it seems to be working pretty well.
Do you get some strange results ?

[1]
https://github.com/apache/flex-utilities/blob/develop/flex-installer/installer/src/org/apache/flex/packageflexsdk/util/MD5CompareUtil.as

Thanks, Piotr


2017-11-27 12:54 GMT+01:00 Harbs <ha...@gmail.com>:

> It turns out that MD5 is completely broken.
>
> My theory was that it should migrate from the Flash version and BinaryData
> should have been a drop-in replacement or ByteArray.
>
> Well, the theory didn’t work out and I spent a long time trying to figure
> out why it’s broken. It seems to be broken in both Flash and JS runtimes.
> For kicks, I tried the MD5Stream version as well and that didn’t work
> either.
>
> I tried various combinations with endians and that did not seem to be like
> it. I’m pretty stumped.
>
> I did manage to successfully incorporate a JS implementation of MD5 in a
> Royale class[1] in my project, so I’m personally not stuck on this issue.
>
> Anyone interested in looking at this?
>
> Harbs
>
> [1]https://github.com/blueimp/JavaScript-MD5 <https://github.com/blueimp/
> JavaScript-MD5>
> > On Nov 27, 2017, at 1:18 PM, harbs@apache.org wrote:
> >
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > harbs pushed a commit to branch develop
> > in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
> >
> >
> > The following commit(s) were added to refs/heads/develop by this push:
> >     new ae6da3c  Added failing test for MD5
> > ae6da3c is described below
> >
> > commit ae6da3c1bb3f663c641153b7b3b60f6d8a90b54b
> > Author: Harbs <ha...@in-tools.com>
> > AuthorDate: Mon Nov 27 13:18:38 2017 +0200
> >
> >    Added failing test for MD5
> > ---
> > .../src/main/royale/flexUnitTests/CoreTester.as    |  3 +-
> > .../{CoreTester.as => core/MD5Test.as}             | 50
> ++++++++++++++--------
> > 2 files changed, 33 insertions(+), 20 deletions(-)
> >
> > diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> > index 9af36e3..5ce4e9a 100644
> > --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> > +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> > @@ -27,7 +27,7 @@ package flexUnitTests
> >         public function CoreTester()
> >         {
> >             // for JS, force-link these classes in the output
> > -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
> > +            var arr:Array = [StrandTesterTest,
> BinaryDataTesterTest,MD5Test];
> >         }
> >
> >         // in JS, using a class as a type won't include the class in
> > @@ -39,5 +39,6 @@ package flexUnitTests
> >         // better and allow you to define order.
> >         public var strandTesterTest:StrandTesterTest;
> >               public var binaryDataTesterTest:BinaryDataTesterTest;
> > +             public var md5Test:MD5Test;
> >     }
> > }
> > diff --git a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> b/manualtests/UnitTests/src/main/royale/flexUnitTests/core/MD5Test.as
> > similarity index 52%
> > copy from manualtests/UnitTests/src/main/royale/flexUnitTests/
> CoreTester.as
> > copy to manualtests/UnitTests/src/main/royale/flexUnitTests/
> core/MD5Test.as
> > index 9af36e3..20dc46f 100644
> > --- a/manualtests/UnitTests/src/main/royale/flexUnitTests/CoreTester.as
> > +++ b/manualtests/UnitTests/src/main/royale/flexUnitTests/
> core/MD5Test.as
> > @@ -16,28 +16,40 @@
> > //  limitations under the License.
> > //
> > ////////////////////////////////////////////////////////////
> ////////////////////
> > -package flexUnitTests
> > +package flexUnitTests.core
> > {
> > -     import flexUnitTests.core.*
> > -
> > -    [Suite]
> > -    [RunWith("org.flexunit.runners.Suite")]
> > -    public class CoreTester
> > -    {
> > -        public function CoreTester()
> > +    import flexunit.framework.Assert;
> > +
> > +    import org.apache.royale.utils.MD5;
> > +
> > +    public class MD5Test
> > +    {
> > +        [Before]
> > +        public function setUp():void
> >         {
> > -            // for JS, force-link these classes in the output
> > -            var arr:Array = [StrandTesterTest, BinaryDataTesterTest];
> >         }
> >
> > -        // in JS, using a class as a type won't include the class in
> > -        // the output since types are not chcked in JS.  It is when
> > -        // the actual class is referenced that it will be included
> > -        // in the output.
> > -        // Is there a reason to use reflection to gather the set
> > -        // of tests?  I would think an array of tests would wokr
> > -        // better and allow you to define order.
> > -        public var strandTesterTest:StrandTesterTest;
> > -             public var binaryDataTesterTest:BinaryDataTesterTest;
> > +        [After]
> > +        public function tearDown():void
> > +        {
> > +        }
> > +
> > +        [BeforeClass]
> > +        public static function setUpBeforeClass():void
> > +        {
> > +        }
> > +
> > +        [AfterClass]
> > +        public static function tearDownAfterClass():void
> > +        {
> > +        }
> > +
> > +        [Test]
> > +        public function testHash():void
> > +        {
> > +            Assert.assertEquals("Error testing foobaz", "
> 80338e79d2ca9b9c090ebaaa2ef293c7",MD5.hash("foobaz"));
> > +            Assert.assertEquals("Error testing bazfoo", "
> b6a013d5e2c00f894584ad577249dbc7",MD5.hash("bazfoo"));
> > +            Assert.assertEquals("Error testing password1234", "
> bdc87b9c894da5168059e00ebffb9077",MD5.hash("password1234"));
> > +        }
> >     }
> > }
> >
> > --
> > To stop receiving notification emails like this one, please contact
> > ['"commits@royale.apache.org" <co...@royale.apache.org>'].
>
>


-- 

Piotr Zarzycki

Patreon: *https://www.patreon.com/piotrzarzycki
<https://www.patreon.com/piotrzarzycki>*