← Back to team overview

dolfin team mailing list archive

Re: Dependence on OpenSSL

 

On Tue, Oct 06, 2009 at 09:31:27PM +0100, Garth N. Wells wrote:
>
>
> Johan Hake wrote:
> > On Tuesday 06 October 2009 22:18:04 Anders Logg wrote:
> >> On Tue, Oct 06, 2009 at 09:13:45PM +0100, Garth N. Wells wrote:
> >>> Anders Logg wrote:
> >>>> On Tue, Oct 06, 2009 at 10:05:24PM +0200, Johan Hake wrote:
> >>>>> On Tuesday 06 October 2009 21:58:29 Andy Ray Terrel wrote:
> >>>>>> On Tue, Oct 6, 2009 at 2:43 PM, Anders Logg <logg@xxxxxxxxx> wrote:
> >>>>>>> On Tue, Oct 06, 2009 at 02:28:40PM -0500, Andy Ray Terrel wrote:
> >>>>>>>> Sorry for being dense but computing the SHA1 hash for what
> >>>>>>>> essentially is a string compare seems a bit overkill.
> >>>>>>> I want to avoid a call to strcmp in a piece of code that needs to be
> >>>>>>> fast. What I do (it seems to work now) is to compute the 20 byte
> >>>>>>> SHA-1 hash from the ~40 byte finite element signature which is
> >>>>>>> typically something like
> >>>>>>>
> >>>>>>>  FiniteElement('Lagrange', 'triangle', 1)
> >>>>>>>
> >>>>>>> I then cast the SHA-1 hash to an 8 byte void* and use that for
> >>>>>>> comparison. This may not be very safe but this is not exactly
> >>>>>>> cryptography. The number of possible hashes is the same as the
> >>>>>>> address space so it should be fine.
> >>>>>> Yes I guess if you have a large number of comparisons it might be
> >>>>>> faster.  I forget there are a lot of signature checks for the
> >>>>>> function space stuff.
> >>>>>>
> >>>>>> Computing the hash is O(n) just like strcmp, it really depends on the
> >>>>>> constants.  I would just do the timing before I said anything.
> >>>>> Would it be an idea to extend ufc::finite_element with a
> >>>>> hash_signature()? Then you can compute the hash using hashlib in
> >>>>> python during code creation.
> >>>>>
> >>>>> Johan
> >>>> Sounds like a good idea. Only it requires changes to DOLFIN, UFC, FFC
> >>>> and SyFi...
> >>>>
> >>>> Are there any objections to this?
> >>> I'm not sure that this is a good idea. It complicates UFC.
> >
> > Complicates? One function returning a string?
>
> How would I write it by hand? It's common for new methods that the
> UFC-compliant code is hand generated.

You can just put in any number you want and pick something you think
is unique enough for your element. This would work:

  return 1247237129123;

It doesn't have to be a hash of the signature, just something "unique".

--
Anders


> Garth
>
> But I agree with Anders that it
> > requires a lot to change and that it therefore is a good thing to think about
> > it.
> >
> >> It's either that or using boost. I'm looking at both options.
> >>
> >> Calling boost is simpler since it requires the smallest change. If we
> >> decide to go with that option now, we can keep this in mind for the
> >> next update of UFC.
> >
> > Sounds good.
> >
> > Johan
> >
> >>
> >>> Garth
> >>>
> >>>>>> I looked there are a lot of libraries out there for this but OpenSSL
> >>>>>> is by far the most pervasive.
> >>>>>>
> >>>>>> -- Andy
> >>>>>>
> >>>>>>>> On Tue, Oct 6, 2009 at 2:18 PM, Anders Logg <logg@xxxxxxxxx> wrote:
> >>>>>>>>> I'm contemplating adding a dependency to OpenSSL for computing
> >>>>>>>>> hashes of things like element signatures.
> >>>>>>>>>
> >>>>>>>>> This is what breaks Kristian's code. Comparing element pointers
> >>>>>>>>> does not work since the UFC class creates its own elements which
> >>>>>>>>> are different from the ones existing in FunctionSpace classes.
> >>>>>>>>>
> >>>>>>>>> Would there be any difficulties with depending on OpenSSL? Are
> >>>>>>>>> there simpler alternatives for a function that takes a string a
> >>>>>>>>> returns a message digest like the SHA1 function in OpenSSL?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> -----BEGIN PGP SIGNATURE-----
> >>>>>>>>> Version: GnuPG v1.4.9 (GNU/Linux)
> >>>>>>>>>
> >>>>>>>>> iEYEARECAAYFAkrLmCAACgkQTuwUCDsYZdEk3ACgl7+tHjclHzLesh+g/1vOzIo9
> >>>>>>>>> tJsAn1fHGu+dzyA/ndNpy88/RFWNTbEB
> >>>>>>>>> =24AA
> >>>>>>>>> -----END PGP SIGNATURE-----
> >>>>>>>>>
> >>>>>>>>> _______________________________________________
> >>>>>>>>> DOLFIN-dev mailing list
> >>>>>>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>>>>>> _______________________________________________
> >>>>>>>> DOLFIN-dev mailing list
> >>>>>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>>>>> -----BEGIN PGP SIGNATURE-----
> >>>>>>> Version: GnuPG v1.4.9 (GNU/Linux)
> >>>>>>>
> >>>>>>> iEYEARECAAYFAkrLndAACgkQTuwUCDsYZdFlWACePT0FglJU+NTPnOBXi/h7WcHC
> >>>>>>> E5EAn2vinxerlg6jTNuA4T+0Kp+CFuhz
> >>>>>>> =68Dm
> >>>>>>> -----END PGP SIGNATURE-----
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> DOLFIN-dev mailing list
> >>>>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>>>> _______________________________________________
> >>>>>> DOLFIN-dev mailing list
> >>>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>>> _______________________________________________
> >>>>> DOLFIN-dev mailing list
> >>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>>>>
> >>>>> ----------------------------------------------------------------------
> >>>>> --
> >>>>>
> >>>>> _______________________________________________
> >>>>> DOLFIN-dev mailing list
> >>>>> DOLFIN-dev@xxxxxxxxxx
> >>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> >>> _______________________________________________
> >>> DOLFIN-dev mailing list
> >>> DOLFIN-dev@xxxxxxxxxx
> >>> http://www.fenics.org/mailman/listinfo/dolfin-dev
> > _______________________________________________
> > DOLFIN-dev mailing list
> > DOLFIN-dev@xxxxxxxxxx
> > http://www.fenics.org/mailman/listinfo/dolfin-dev
>
>
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev

Attachment: signature.asc
Description: Digital signature


References