First, I think the best thing to do is to work on getting your code into
Sage itself soon. Even if it isn't optimal speedwise, that's not a show
stopper -- correct code that adds new functionality is something we
definitely want. We release new versions of Sage every 2 weeks or
less, so once in Sage your code would rapidly get distributed.
Regarding pairings, we specifically don't have *anything* in Sage for
computing any pairings.
Regarding your above question, probably the best thing for you to do
is a make a tar-ball or zip archive that contains all the sage files,
and instructions
about how to use them (e.g., attach "foo.sage" and type "blah" to test that
this works). Then put that code on a web page. Installing an
spkg has the drawback that it requires modifying the
Sage install (e.g., something that requires write permissions on a Sage
install), so wouldn't work for "end users" who didn't install Sage themselves
(e.g., on a multi-user system).
William
William
Is anyone working on this?
Cheers,
Martin
--
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinr...@jabber.ccc.de
Sure, that could be a problem but can be dealt with on a case to case basis.
> Couldn't a lot of similar functions "water down" the whole quality of
> SAGE?
As long as we have one really good implementation, I don't see an issue.
> Is there a defined group of people to join on getting the pbc library
> into SAGE?
I am not aware of anybody working on this. Do you want to start such a
project?
Also, note that these days new packages have to be voted in to be included
with Sage. See also:
http://www.sagemath.org/doc/prog/node41.html
Cheers,
Martin
--
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinr...@jabber.ccc.de
>
> I would really like to start such a project.
>
> But I wouldn't know the first thing on how to do so..
>
> - Think I'll start by reading up on Sage dev. guide.
>
> Do you usually keep track of projects here in the sage-devel group?
You can get a trac account, and create an entry in trac about your
project.
http://wiki.sagemath.org/TracGuidelines
As a first step in writing such a wrapper, you should create an spkg
that installs the library in the sage environment. (i.e., with
prefix=SAGE_LOCAL)
Look in the directories under sage/interfaces/ for examples of how to go
about calling c/c++ libraries, you will also need to write some python
code to make these functions easily available to the user. I suppose
this would be in sage/crypto/.
Cheers,
Burcin
Great!
> But I wouldn't know the first thing on how to do so..
I suppose the first thing to do, is to look through the list of requirements
and check the PBC library if it qualifies. It can still be an optional
package if it doesn't qualify for inclusion in the standard library.
Then you could build an SPKG for PBC and later a Cython binding to PBC. When
you have a prototype it is time to call for a vote on PBC on [sage-devel].
> - Think I'll start by reading up on Sage dev. guide.
Please let us know about any issues you encounter, e.g. stuff that is not
documented, unclear etc.
> Do you usually keep track of projects here in the sage-devel group?
I am not quite sure what you're asking. But if people are working on a project
for Sage they usually discuss stuff here.
Cheers,
Martin
--
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinr...@jabber.ccc.de
Did you mean sage/libs? sage/interfaces is for pexpect interfaces while
sage/libs has some of the gory details for C/C++ integration.
> you will also need to write some python
> code to make these functions easily available to the user. I suppose
> this would be in sage/crypto/.
Or in the schemes/elliptic_curve subdirectory?
Cheers,
Martin
--
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinr...@jabber.ccc.de
He is right, I just checked. COPYING is GPLv3 and there are no copyright
statements in the source files, so COPYING definitely applies. I suppose it
is worth a shot to try to convince the authors to consider relicensing?
Yes, definitely. Alternatively, we can fork their last GPLv2 version.
(Just kidding! -- I've never even looked at the project.)
William
>
> On Friday 14 November 2008, Burcin Erocal wrote:
> > On Fri, 14 Nov 2008 05:38:03 -0800 (PST)
> >
> > David Møller Hansen <da...@mollerhansen.com> wrote:
> > > I would really like to start such a project.
> > >
> > > But I wouldn't know the first thing on how to do so..
> > >
> > > - Think I'll start by reading up on Sage dev. guide.
> > >
> > > Do you usually keep track of projects here in the sage-devel
> > > group?
> >
> > You can get a trac account, and create an entry in trac about your
> > project.
> >
> > http://wiki.sagemath.org/TracGuidelines
> >
> > As a first step in writing such a wrapper, you should create an spkg
> > that installs the library in the sage environment. (i.e., with
> > prefix=SAGE_LOCAL)
> >
> > Look in the directories under sage/interfaces/ for examples of how
> > to go about calling c/c++ libraries,
>
> Did you mean sage/libs? sage/interfaces is for pexpect interfaces
> while sage/libs has some of the gory details for C/C++ integration.
Yes, I meant libs, and managed to write interfaces. Thanks for
the correction.
> > you will also need to write some python
> > code to make these functions easily available to the user. I suppose
> > this would be in sage/crypto/.
>
> Or in the schemes/elliptic_curve subdirectory?
I don't have any clue how a user interface to pairing should be. I just
wanted to point out that the real code is not in the libs directory.
I guess I should check my sleep deprivation levels before hitting the
send button next time. :)
Cheers,
Burcin
WWMD (What Would Magma Do) ;-)
http://magma.maths.usyd.edu.au/magma/htmlhelp/text1285.htm
so how about:
sage: E = EllipticCurve(...)
sage: P = E.random_element()
sage: Q = E.random_element()
sage: _ = P.tate_pairing(Q,n)
I don't work with these objects, so this might be the least desirable
solution.
Cheers,
Martin
--
name: Martin Albrecht
_pgp: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x8EF0DC99
_www: http://www.informatik.uni-bremen.de/~malb
_jab: martinr...@jabber.ccc.de