Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using rupicola for elliptic curves #10

Open
RasmusHoldsbjergCSAU opened this issue Nov 2, 2020 · 7 comments
Open

Using rupicola for elliptic curves #10

RasmusHoldsbjergCSAU opened this issue Nov 2, 2020 · 7 comments

Comments

@RasmusHoldsbjergCSAU
Copy link

I understand from #9 that it is possible to generate C code using Rupicola, but am unsure how

How was the C programs in e.g.
https://github.com/mit-plv/rupicola/blob/master/src/Rupicola/Examples/CapitalizeThird/CapitalizeThird.c
and
https://github.com/mit-plv/rupicola/blob/master/src/Rupicola/Examples/Assoc/Assoc.c
generated? I am assuming that they were not written by hand; and I think it would be helpful to try to recreate the steps in generating them.

I am trying make verified implementations of elliptic curve operations and have thus far used Fiat Crypto, but understand that one of the goals of Rupicola is to make compilation that supports functions calls, which could be very helpful.

It is unclear to me what is possible at the current state of Rupicola, as the documentation I have been able to find is sparse; if you could point me to some documentation that would be helpful as well.

@cpitclaudel
Copy link
Collaborator

Hi there,

Rupicola is still in exploratory stages at the moment; it's the spiritual successor to https://link.springer.com/chapter/10.1007%2F978-3-030-51054-1_7 , which used Facade and Bedrock 1 and was stuck on an old Coq version.

We don't have end-to-end examples yet for Rupicola; we've generated Bedrock 2 code but not extracted it to C yet. The .c files in the repo are all handwritten as guides of what we want to produce. And indeed the documentation is completely nonexistent, which we'll remediate as we make progress.

I'm currently mentoring an undergrad with the eventual goal of getting slightly-higher level primitives for crypto written in Rupicola, and I think @DIJamner was pondering working on crypto primitives in Rupicola. The best might be to set up a video call to discuss, if you're interested in more details?

@RasmusHoldsbjergCSAU
Copy link
Author

Thank you for the reply
A video call would be great; I would love to learn about the project; when would you have time for this?

So the Bedrock code in e.g.
https://github.com/mit-plv/rupicola/blob/master/src/Rupicola/Examples/Assoc/Assoc.v
was generated using Rupicola?

@DIJamner
Copy link
Contributor

DIJamner commented Nov 2, 2020

Thanks for the mention, I would definitely like to be on that call. I have minimal hard time constraints at the moment, so I'll leave it to @cpitclaudel to suggest a convenient time.

@cpitclaudel
Copy link
Collaborator

A video call would be great; I would love to learn about the project; when would you have time for this?

Super. Next week would be best for me. Can you send me an email with Justin in CC?

@jadephilipoom
Copy link
Collaborator

There's already some fiat-crypto/rupicola integration in the fiat-crypto repo, see https://github.com/mit-plv/fiat-crypto/tree/master/src/Bedrock/Group

Still very much a work in progress. It's using rupicola to create higher-level functions in bedrock2 and calling fiat-crypto-generated field arithmetic. Not everything quite lines up yet, but might be worth a look!

@RasmusHoldsbjergCSAU
Copy link
Author

RasmusHoldsbjergCSAU commented Nov 17, 2020 via email

@cpitclaudel
Copy link
Collaborator

You spoke of a Mattermost channel that we could use to discuss rupicola related questions; would it be possible to add Benjamin, Bas and myself to this?

Bas actually pointed out that Zulip would work, and that sounds a lot more convenient than having you all install a new chat client, so I've subscribed to #fiat-crypto there :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants