1.0.0!
This commit is contained in:
parent
637618dc17
commit
6c77fd7b61
5 changed files with 136 additions and 40 deletions
99
README.md
99
README.md
|
@ -89,7 +89,7 @@ The exceptions follow this inheritance pattern.
|
|||
|
||||
I've made all of the names very clear to what they are, even if they are long. This is to also help you understand which ones can come up in the functions you execute intuitively, in lieu of functioning helpers, as, on paper every function can raise any one of these.
|
||||
|
||||
For additional clarity, the docs specify what functions raise which exception.
|
||||
For additional clarity, the docs specify what functions raise which exception.
|
||||
|
||||
# Security Concerns
|
||||
|
||||
|
@ -149,6 +149,26 @@ sudo curl https://publiccdn.albassort.com/nimPGP/releases/latest/nimPGP.h > /usr
|
|||
nimble install nimPGP
|
||||
```
|
||||
---
|
||||
# Versioning
|
||||
Versions are split into 3 numbers separated by `.`, for example, 1.0.0.
|
||||
|
||||
The leftmost number represents the current feature-set, and increments when new functionality is added.
|
||||
|
||||
The middle number represents bug-fixes and patches on the libnimPGP side, or major bugfixes/changes on the Nim side, usually resulting in incompatibility with the previous libnimPGP version.
|
||||
|
||||
The rightmost increments when minor changes/bugfixes, or updates to documentation are added in Nim, but not in libnimPGP. This is for compatibility, and to help prevent needless manual dependency updating.
|
||||
|
||||
1.0.1 is compatible with 1.0.0
|
||||
1.0.29 is compatible with 1.0.0 through 1.0.28, etc
|
||||
1.1.0 is not compatible with 1.0.1
|
||||
2.0.0 is not compatible with 1.1.0
|
||||
---
|
||||
|
||||
# Future
|
||||
Currently, nothing is explicitly planned, save for expanding the API to cover more of Sequoia.
|
||||
|
||||
Perhaps, if demand exists, I will make repositories to fix the manual dependency issue.
|
||||
|
||||
# Credits
|
||||
All code and documentation, and charts by Caroline Marceano as of initial release
|
||||
|
||||
|
@ -156,8 +176,85 @@ Code Review, Consulting, and Inspiration: Leorize (Check out their stuff: https:
|
|||
|
||||
Code Review: Luyten Orion (Chronos) (Check out their stuff: https://github.com/Luyten-Orion)
|
||||
|
||||
The beautiful people in the Sequoia IRC, who helped me when I needed it most.
|
||||
|
||||
Code Review by my personal friends and family.
|
||||
|
||||
# My PGP-KEy
|
||||
Use this to verify the signatures of pre-build binaries you download. The distribution folders have a file in it named signed-sum.asc, which contains a sha-512 of the binary provided. Verify its signature, to prevent MTM attacks.
|
||||
|
||||
```
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Comment: albassort <CarolineMarceano@albassort.com>
|
||||
|
||||
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
|
||||
=g3W9
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
```
|
||||
|
||||
---
|
||||
We stand on the shoulders of giants
|
||||
巨人の肩の上に立つ
|
||||
Nani gigantum humeris
|
||||
|
||||
Thank you for reading.
|
||||
|
||||
---
|
||||
|
|
2
ReleaseNotes.md
Normal file
2
ReleaseNotes.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
# 1.0.0
|
||||
- Initial Release. See 1.0.0 README.md
|
|
@ -1,21 +1,22 @@
|
|||
import rustBindings/binding
|
||||
import sets
|
||||
import sugar
|
||||
import tables
|
||||
import strutils
|
||||
import sequtils
|
||||
import std/sets
|
||||
import std/sugar
|
||||
import std/tables
|
||||
import std/strutils
|
||||
import std/sequtils
|
||||
import std/enumerate
|
||||
import bitops
|
||||
import times
|
||||
import strformat
|
||||
import terminal
|
||||
import std/bitops
|
||||
import std/times
|
||||
import std/strformat
|
||||
import std/terminal
|
||||
import std/httpclient
|
||||
#These types need to be declared in the bindings for rust, and so we just export them here.
|
||||
export KeyTypes
|
||||
export ReasonForRevocation
|
||||
export CryptSuites
|
||||
export RevocationStatus
|
||||
|
||||
const version* = "0.0.0"
|
||||
const version* = "1.0.0"
|
||||
|
||||
type
|
||||
PublicKey* = string
|
||||
|
@ -835,11 +836,11 @@ proc get_version() : string =
|
|||
free_rust version
|
||||
|
||||
|
||||
import httpclient
|
||||
#This is a version check to make sure that you aren't using the wrong version for the given release
|
||||
when not defined(nimPGPDev) and version != "DEV":
|
||||
let libVersion = getVersion()
|
||||
if libVersion != version:
|
||||
let libVersion = getVersion().split(".")[0 .. 1]
|
||||
let versionSplit = version.split(".")[0 .. 1]
|
||||
if libVersion != versionSplit:
|
||||
when not defined(installCorrectVersion):
|
||||
stdout.styledWriteLine(styleBright, fgRed, " ---BEGIN ERROR MSG---\n")
|
||||
echo " It seems that your libnimPGP version does NOT Match your nimPGP version.\n"
|
||||
|
|
|
@ -125,19 +125,17 @@ fn ffi_string_array_from_string_array(strings: Vec<String>) -> (*const *mut c_ch
|
|||
return (result as *const *mut c_char, size);
|
||||
}
|
||||
|
||||
fn cipher_hashmap() -> HashMap<u8, CipherSuite> {
|
||||
let mut result: HashMap<u8, CipherSuite> = HashMap::new();
|
||||
result.insert(0, Cv25519);
|
||||
|
||||
result.insert(1, RSA2k);
|
||||
result.insert(2, RSA3k);
|
||||
result.insert(3, RSA4k);
|
||||
|
||||
result.insert(4, P256);
|
||||
result.insert(5, P384);
|
||||
result.insert(6, P521);
|
||||
|
||||
return result;
|
||||
fn u8_to_cipher(a: u8) -> CipherSuite {
|
||||
return match a {
|
||||
0 => Cv25519,
|
||||
1 => RSA2k,
|
||||
2 => RSA3k,
|
||||
3 => RSA4k,
|
||||
4 => P256,
|
||||
5 => P384,
|
||||
6 => P521,
|
||||
_ => panic!("Invalid Cipher!")
|
||||
};
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
|
@ -435,8 +433,7 @@ extern "C" fn create_new_pgp(
|
|||
};
|
||||
|
||||
let mut cert_builder = CertBuilder::new();
|
||||
let ciphers = cipher_hashmap();
|
||||
let primary_key_cipher = ciphers[&primary_cipher];
|
||||
let primary_key_cipher = u8_to_cipher(primary_cipher);
|
||||
cert_builder = cert_builder.set_cipher_suite(primary_key_cipher);
|
||||
|
||||
unsafe {
|
||||
|
@ -444,7 +441,7 @@ extern "C" fn create_new_pgp(
|
|||
let key_ptr = keys.offset(i.into());
|
||||
let value: GenerateKey = *key_ptr;
|
||||
let new_key_flags = KeyFlags::new(&[value.key_flags_bitfield]);
|
||||
let cipher = ciphers[&value.cipher];
|
||||
let cipher = u8_to_cipher(value.cipher);
|
||||
if value.expires {
|
||||
let duration = Duration::seconds(value.expire_length_seconds);
|
||||
cert_builder = cert_builder.add_subkey(new_key_flags, duration, cipher);
|
||||
|
@ -739,7 +736,7 @@ extern "C" fn verify_signature(
|
|||
result.error_code = OutwardCommExceptions::CertIsInvalid;
|
||||
return result;
|
||||
};
|
||||
|
||||
|
||||
let is_revoked = receiving_cert.revocation_status(p, None);
|
||||
match is_revoked {
|
||||
RevocationStatus::Revoked(_) => {
|
||||
|
@ -855,7 +852,6 @@ extern "C" fn decrypt_message(
|
|||
}
|
||||
let receiving_cert = receiving_cert.unwrap();
|
||||
|
||||
|
||||
if receiving_cert.clone().with_policy(p, None).is_err() {
|
||||
result.error_code = OutwardCommExceptions::CertIsInvalid;
|
||||
return result;
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
#This doubles as a memory-leak test.
|
||||
import unittest
|
||||
import sequtils
|
||||
import sugar
|
||||
import random
|
||||
import math
|
||||
import strutils
|
||||
import tables
|
||||
import ../nimPGP
|
||||
import json
|
||||
import std/unittest
|
||||
import std/sequtils
|
||||
import std/sugar
|
||||
import std/random
|
||||
import std/math
|
||||
import std/strutils
|
||||
import std/tables
|
||||
import std/json
|
||||
import std/jsonutils
|
||||
|
||||
type jsonArchive = object
|
||||
|
|
Loading…
Reference in a new issue