capbac 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/capbac/version.rb +1 -1
- data/lib/capbac_ruby.so +0 -0
- data/src/lib.rs +47 -9
- 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: 1bd36669dadaa15cc19abc91afa54f986bce85fe171ed7b9851c8a4bfcdb323d
|
4
|
+
data.tar.gz: a9630ec9063f4effef544f22b522b0ecf0da91ba5c3d01f8412d156f6a69911f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e60cd11841ba5ea225a4f1e7e7bf6d2ec37ef2ef6fa8ef0ac031431c917c67fc71d09902727b06f041e9c886620e2f85bf285d2e6867aac2e287d9c3a04a621
|
7
|
+
data.tar.gz: 3bf141c3eaf5b569a609081061e7b0e72fd8b16f4b1c3cb8f5ac29952524ca54f9f756278174b03cd95ec6d1875c345bbec8ddc92ff42decf9cea8173bc21904
|
data/lib/capbac/version.rb
CHANGED
data/lib/capbac_ruby.so
CHANGED
Binary file
|
data/src/lib.rs
CHANGED
@@ -15,11 +15,51 @@ use ring::{
|
|
15
15
|
};
|
16
16
|
use rutie::{
|
17
17
|
AnyObject, Boolean, Class, Encoding, Fixnum, Hash, Module, Object, RString, Symbol,
|
18
|
-
VerifiedObject, GC, VM,
|
18
|
+
VerifiedObject, GC, VM, Array,
|
19
19
|
};
|
20
20
|
use std::{fmt, str};
|
21
21
|
use url::Url;
|
22
22
|
|
23
|
+
class!(ASCIIRString);
|
24
|
+
|
25
|
+
impl VerifiedObject for ASCIIRString {
|
26
|
+
fn is_correct_type<T: Object>(object: &T) -> bool {
|
27
|
+
object
|
28
|
+
.class()
|
29
|
+
.ancestors()
|
30
|
+
.iter()
|
31
|
+
.any(|class| *class == Class::from_existing("String"))
|
32
|
+
}
|
33
|
+
|
34
|
+
fn error_message() -> &'static str {
|
35
|
+
"Error converting to ASCII String"
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
impl From<ASCIIRString> for RString {
|
40
|
+
fn from(rstring: ASCIIRString) -> Self {
|
41
|
+
let bytes = rstring
|
42
|
+
.protect_send("bytes", &[])
|
43
|
+
.map_err(VM::raise_ex)
|
44
|
+
.unwrap()
|
45
|
+
.try_convert_to::<Array>()
|
46
|
+
.map_err(VM::raise_ex)
|
47
|
+
.unwrap();
|
48
|
+
|
49
|
+
let mut res = Vec::new();
|
50
|
+
|
51
|
+
for n in bytes.into_iter() {
|
52
|
+
let n = n.try_convert_to::<Fixnum>()
|
53
|
+
.map_err(|e| VM::raise_ex(e))
|
54
|
+
.unwrap();
|
55
|
+
|
56
|
+
res.push(n.to_i64() as u8);
|
57
|
+
}
|
58
|
+
|
59
|
+
RString::from_bytes(&res, &Encoding::us_ascii())
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
23
63
|
class!(URI);
|
24
64
|
|
25
65
|
impl VerifiedObject for URI {
|
@@ -109,14 +149,12 @@ fn options_to_cert_blueprint(options: Hash) -> CertificateBlueprint {
|
|
109
149
|
fn options_to_invoke_blueprint(options: Hash) -> InvokeBlueprint {
|
110
150
|
let cert_content = options
|
111
151
|
.at(&Symbol::new("cert"))
|
112
|
-
.try_convert_to::<
|
152
|
+
.try_convert_to::<ASCIIRString>()
|
113
153
|
.map_err(VM::raise_ex)
|
114
|
-
.unwrap()
|
115
|
-
.to_string()
|
116
|
-
.into_bytes();
|
154
|
+
.unwrap();
|
117
155
|
|
118
156
|
let mut cert = capbac::proto::Certificate::new();
|
119
|
-
cert.merge_from_bytes(&cert_content).unwrap();
|
157
|
+
cert.merge_from_bytes(&RString::from(cert_content).to_vec_u8_unchecked()).unwrap();
|
120
158
|
|
121
159
|
let action = options
|
122
160
|
.at(&Symbol::new("action"))
|
@@ -187,15 +225,15 @@ methods!(
|
|
187
225
|
RString::from_bytes(&cert.write_to_bytes().unwrap(), &Encoding::us_ascii())
|
188
226
|
}
|
189
227
|
|
190
|
-
fn ruby_holder_delegate(cert:
|
228
|
+
fn ruby_holder_delegate(cert: ASCIIRString, options: Hash) -> RString {
|
191
229
|
let ruby_options = options.map_err(VM::raise_ex).unwrap();
|
192
230
|
let options = options_to_cert_blueprint(ruby_options);
|
193
231
|
let holder = itself.get_data(&*HOLDER_WRAPPER);
|
194
232
|
|
195
|
-
let cert_content = cert.unwrap().
|
233
|
+
let cert_content = RString::from(cert.map_err(VM::raise_ex).unwrap()).to_vec_u8_unchecked();
|
196
234
|
|
197
235
|
let mut cert = capbac::proto::Certificate::new();
|
198
|
-
cert.merge_from_bytes(&cert_content
|
236
|
+
cert.merge_from_bytes(&cert_content).unwrap();
|
199
237
|
|
200
238
|
let cert = holder.delegate(cert, options).unwrap();
|
201
239
|
|
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.
|
4
|
+
version: 0.4.1
|
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-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thermite
|