capbac 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Cargo.toml +1 -0
- data/lib/capbac/version.rb +1 -1
- data/lib/capbac_ruby.so +0 -0
- data/src/lib.rs +36 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9aea3202cf722c59f88ff0cc3ac473c5d70d05727bf2887a9665ff554552fa02
|
4
|
+
data.tar.gz: e0a1ea74ed0b853ccb8e3619015bd599f4f20ea30f8c9eb4caadf331dbfc979f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea6fb01de7bd48e299b32602b2ee276bbed2581c2e75fb724deba69f776386edb05b61e6492867152d97bb02989b894145dee0a8bf6d94bdd301d60ee181f55
|
7
|
+
data.tar.gz: f1a7f43fbfb3df31dc1272edd15f74b27c3b29fcf83c4b765290f976a5eec5e07f3c1cdfb63772f1e6fe4813f1df3eea0fb224b6bda2ae80697f60e22732b4c2
|
data/Cargo.toml
CHANGED
data/lib/capbac/version.rb
CHANGED
data/lib/capbac_ruby.so
CHANGED
Binary file
|
data/src/lib.rs
CHANGED
@@ -10,6 +10,11 @@ use openssl::ec::EcKey;
|
|
10
10
|
use protobuf::{Message};
|
11
11
|
use std::fmt;
|
12
12
|
|
13
|
+
use ring::{
|
14
|
+
rand,
|
15
|
+
signature::{self, KeyPair, EcdsaKeyPair},
|
16
|
+
};
|
17
|
+
|
13
18
|
class!(URI);
|
14
19
|
|
15
20
|
impl VerifiedObject for URI {
|
@@ -411,6 +416,33 @@ methods!(
|
|
411
416
|
}
|
412
417
|
);
|
413
418
|
|
419
|
+
class!(KeyGen);
|
420
|
+
|
421
|
+
methods!(
|
422
|
+
KeyGen,
|
423
|
+
itself,
|
424
|
+
|
425
|
+
fn ruby_generate_keypair() -> Hash {
|
426
|
+
let rng = rand::SystemRandom::new();
|
427
|
+
let key_pair = EcdsaKeyPair::generate_pkcs8(&signature::ECDSA_P256_SHA256_FIXED_SIGNING, &rng).unwrap();
|
428
|
+
let mut sk = Array::new();
|
429
|
+
for item in key_pair.as_ref().iter() {
|
430
|
+
sk.push(Fixnum::new(i64::from(*item)));
|
431
|
+
};
|
432
|
+
|
433
|
+
let key_pair = EcdsaKeyPair::from_pkcs8(&signature::ECDSA_P256_SHA256_FIXED_SIGNING, &key_pair.as_ref()).unwrap();
|
434
|
+
let mut pk = Array::new();
|
435
|
+
for item in key_pair.public_key().as_ref().iter() {
|
436
|
+
pk.push(Fixnum::new(i64::from(*item)));
|
437
|
+
};
|
438
|
+
|
439
|
+
let mut res = Hash::new();
|
440
|
+
res.store(Symbol::new("sk"), sk);
|
441
|
+
res.store(Symbol::new("pk"), pk);
|
442
|
+
res
|
443
|
+
}
|
444
|
+
);
|
445
|
+
|
414
446
|
#[allow(non_snake_case)]
|
415
447
|
#[no_mangle]
|
416
448
|
pub extern "C" fn Init_capbac() {
|
@@ -427,5 +459,9 @@ pub extern "C" fn Init_capbac() {
|
|
427
459
|
itself.def("validate_cert", ruby_validator_validate_cert);
|
428
460
|
itself.def("validate_invocation", ruby_validator_validate_invocation);
|
429
461
|
});
|
462
|
+
|
463
|
+
itself.define_nested_class("KeyPair", None).define(|itself| {
|
464
|
+
itself.def("generate!", ruby_generate_keypair);
|
465
|
+
});
|
430
466
|
});
|
431
467
|
}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capbac
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kirill Chernyshov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thermite
|