Skip to content

urbit/urcrypt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7ccaf4b · Dec 13, 2024

History

33 Commits
Sep 27, 2023
Sep 25, 2023
Aug 2, 2024
Sep 25, 2023
Sep 25, 2023
Sep 25, 2023
May 21, 2024
Sep 25, 2023
Dec 11, 2024
Sep 25, 2023
Sep 25, 2023
Apr 15, 2024
Nov 15, 2023
Sep 25, 2023
Jan 25, 2024
Sep 25, 2023

Repository files navigation

What is urcrypt?

urcrypt is a library of cryptography routines used by urbit jets.

Why is urcrypt?

Urbit's C runtime (long the only urbit runtime) has accumulated a collection of cryptography dependencies, some with custom additions or patches. These libraries have different conventions and have been managed by u3 in an ad-hoc manner. Reproducing that arrangement in other runtimes is tricky and error-prone. The (sometimes inconsistent) logic must be reproduced and suitable cryptography primitives must be found (or worse, written) for the new environment.

To ease these burdens, urcrypt isolates the quirks behind a consistent calling convention. Everything is a little-endian byte array, and each jetted operation has a corresponding function in the library. Jets simply unpack their nouns, call urcrypt, and pack the results.

What is a cryptography routine?

This is more of a subjective question than it might appear. Any of the following conditions are sufficient, but not necessary, for a function to be included in urcrypt:

  • The routine is sensitive to side-channel attacks (encryption, etc)
  • Some property of the routine is cryptographically useful (SHA, RIPE, etc)
  • The routine typically lives in a crypto library, for whatever reason.

A word on OpenSSL

Urcrypt depends on OpenSSL's libcrypto, which has global state. In order to avoid dealing with this state, urcrypt refuses to build with an internal libcrypto. Either build statically (pass --disable-shared to ./configure) or provide a shared libcrypto for urcrypt to link against. It is the library user's responsibility to initialize openssl, set custom memory functions, etc.

Installation

Note that, in addition to standard autotools packages, urcrypt requires autoconf-archive in order to use a macro it provides.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published