Skip to content

Commit 6bad8cc

Browse files
committed
docs: specify new versioning scheme in documentation
BREAKING CHANGE: Versioning no longer follows `liboqs` versioning. See #192
1 parent ac1e50a commit 6bad8cc

File tree

2 files changed

+38
-31
lines changed

2 files changed

+38
-31
lines changed

CONTRIBUTING.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Contributing
2+
3+
## Conventional commits
4+
5+
Please use the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) style when creating PRs.
6+
7+
## Adding new algorithms
8+
9+
### KEMs
10+
11+
1. Update the Git submodule
12+
2. `oqs-sys` will now update when you build again
13+
3. Add it to the `implement_kems!` macro call in `oqs/src/kem.rs`:
14+
15+
- The structure is a name for the algorithm in CamelCase, and the name of the constant of the algorithm (`OQS_KEM_alg_...`)
16+
17+
4. Add the necessary features to `Cargo.toml` and `oqs-sys/build.rs`.
18+
19+
### Signature schemes:
20+
21+
1. Update the Git submodule
22+
2. `oqs-sys` is now up-to-date when you build again
23+
3. Add it to `implement_sigs!` macro call in `oqs/src/sig.rs`.
24+
25+
- The structure is a name for the algorithm in CamelCase, and the name of the constant of the algorithm (`OQS_SIG_alg_...`)
26+
27+
4. Add the necessary features to `Cargo.toml` and `oqs-sys/build.rs`.

README.md

+11-31
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,22 @@
1414

1515
## Versioning
1616

17-
The version numbers follow the upstream `liboqs` versions, but with a twist.
18-
The `liboqs` version `0.7.2` gets released as the `oqs` and `oqs-sys` version `0.7.2xx` series.
19-
This allows us to release patch versions of the Rust bindings as `0.7.201`, `0.7.202`, and so on.
17+
Releases up to and including release `0.9.0` of `oqs` and `oqs-sys` followed the `liboqs` versioning 1-on-1.
18+
**Starting from release `0.9.0`, this is no longer guaranteed.**
19+
These crates will now receive version bumps as necessary.
20+
We will include the version number of `liboqs` that is distributed by `liboqs-sys` in the version number of `liboqs-sys`
21+
as `0.9.0+liboqs-0.9.0`.
2022

2123
## Pre-requisites
2224

2325
`oqs-sys` depends on the [liboqs](https://github.com/open-quantum-safe/liboqs) C library.
24-
It will build `liboqs` automatically.
26+
It will build `liboqs` automatically with the default-enabled `vendored` feature.
27+
See below for more information.
2528

2629
## Contents
2730

2831
This crate provides unsafe `ffi` bindings in the `oqs-sys` crate, and safe wrappers are offered via the `oqs` crate.
29-
The rendered rustdoc documentation can be [found here](https://open-quantum-safe.github.io/liboqs-rust/oqs/)
32+
The rendered Rustdoc documentation can be [found here](https://open-quantum-safe.github.io/liboqs-rust/oqs/)
3033

3134
## Usage
3235

@@ -60,7 +63,7 @@ You can enable `serde` serialization support by enabling the `serde` feature on
6063
## `std` support
6164

6265
The `oqs-sys` crate does not use `std` at all.
63-
Note that the default features do enable building liboqs with `openssl`, so use `default-features = false`.
66+
Note that the default features do enable building `liboqs` with `openssl`, so use `default-features = false`.
6467

6568
To make `oqs` a `#![no_std]` crate make sure the `std` feature is disabled.
6669
Make sure to also disable the `oqs-sys/openssl` feature by specifying `default-features = false`.
@@ -97,15 +100,14 @@ This for example affects tests.
97100
- `frodokem`
98101
- `hqc`
99102
- `kyber`
100-
- `ntru`
101103
- `ntruprime`
102104
- `saber`
103105
- `sigs` (default): Compile with all signature schemes enabled
104106
- `dilithium`
105107
- `falcon`
106108
- `picnic`
107109
- `rainbow`
108-
- `sphincs`: SPHINCS+
110+
- `sphincs`: SPHINCS<sup>+</sup>
109111

110112
## Running
111113

@@ -143,28 +145,6 @@ fn main() -> Result<()> {
143145
}
144146
```
145147

146-
## Adding new algorithms
147-
148-
### KEMs
149-
150-
1. Update the Git submodule
151-
2. `oqs-sys` will now update when you build again
152-
3. Add it to the `implement_kems!` macro call in `oqs/src/kem.rs`:
153-
154-
- The structure is a name for the algorithm in CamelCase, and the name of the constant of the algorithm (`OQS_KEM_alg_...`)
155-
156-
4. Add the necessary features to `Cargo.toml` and `oqs-sys/build.rs`.
157-
158-
### Signature schemes:
159-
160-
1. Update the Git submodule
161-
2. `oqs-sys` is now up-to-date when you build again
162-
3. Add it to `implement_sigs!` macro call in `oqs/src/sig.rs`.
163-
164-
- The structure is a name for the algorithm in CamelCase, and the name of the constant of the algorithm (`OQS_SIG_alg_...`)
165-
166-
4. Add the necessary features to `Cargo.toml` and `oqs-sys/build.rs`.
167-
168148
## Limitations and security
169149

170150
liboqs is designed for prototyping and evaluating quantum-resistant cryptography. Security of proposed quantum-resistant algorithms may rapidly change as research advances, and may ultimately be completely insecure against either classical or quantum computers.
@@ -195,4 +175,4 @@ We'd like to make a special acknowledgement to the companies who have dedicated
195175

196176
Research projects which developed specific components of OQS have been supported by various research grants, including funding from the Natural Sciences and Engineering Research Council of Canada (NSERC); see the source papers for funding acknowledgments.
197177

198-
Thom Wiggers was supported by the European Research Council through Starting Grant No. 805031 (EPOQUE).
178+
Thom Wiggers' contributions before May 2023 were supported by the European Research Council through Starting Grant No. 805031 (EPOQUE).

0 commit comments

Comments
 (0)