[#33640] [Ruby 1.9-Bug#4136][Open] Enumerable#reject should not inherit the receiver's instance variables — Hiro Asari <redmine@...>

Bug #4136: Enumerable#reject should not inherit the receiver's instance variables

10 messages 2010/12/08

[#33667] [Ruby 1.9-Bug#4149][Open] Documentation submission: syslog standard library — mathew murphy <redmine@...>

Bug #4149: Documentation submission: syslog standard library

11 messages 2010/12/10

[#33683] [feature:trunk] Enumerable#categorize — Tanaka Akira <akr@...>

Hi.

14 messages 2010/12/12
[#33684] Re: [feature:trunk] Enumerable#categorize — "Martin J. Dst" <duerst@...> 2010/12/12

[#33687] Towards a standardized AST for Ruby code — Magnus Holm <judofyr@...>

Hey folks,

23 messages 2010/12/12
[#33688] Re: Towards a standardized AST for Ruby code — Charles Oliver Nutter <headius@...> 2010/12/12

On Sun, Dec 12, 2010 at 9:55 AM, Magnus Holm <judofyr@gmail.com> wrote:

[#33689] Re: Towards a standardized AST for Ruby code — "Haase, Konstantin" <Konstantin.Haase@...> 2010/12/12

On Dec 12, 2010, at 17:46 , Charles Oliver Nutter wrote:

[#33763] [Ruby 1.9-Bug#4168][Open] WeakRef is unsafe to use in Ruby 1.9 — Brian Durand <redmine@...>

Bug #4168: WeakRef is unsafe to use in Ruby 1.9

43 messages 2010/12/17

[#33815] trunk warnflags build issue with curb 0.7.9? — Jon <jon.forums@...>

As this may turn out to be a 3rd party issue rather than a bug, I'd like some feedback.

11 messages 2010/12/22

[#33833] Ruby 1.9.2 is going to be released — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

15 messages 2010/12/23

[#33846] [Ruby 1.9-Feature#4197][Open] Improvement of the benchmark library — Benoit Daloze <redmine@...>

Feature #4197: Improvement of the benchmark library

15 messages 2010/12/23

[#33910] [Ruby 1.9-Feature#4211][Open] Converting the Ruby and C API documentation to YARD syntax — Loren Segal <redmine@...>

Feature #4211: Converting the Ruby and C API documentation to YARD syntax

10 messages 2010/12/26

[#33923] [Ruby 1.9-Bug#4214][Open] Fiddle::WINDOWS == false on Windows — Jon Forums <redmine@...>

Bug #4214: Fiddle::WINDOWS == false on Windows

15 messages 2010/12/27

[ruby-core:33906] [Ruby 1.9-Feature#4183] [ext/openssl] Timestamp support

From: Martin Bosslet <redmine@...>
Date: 2010-12-26 16:07:14 UTC
List: ruby-core #33906
Issue #4183 has been updated by Martin Bosslet.

File ts2.tar.gz added

Thanks for the input! I updated the code with regard to Aaron's and Nobuyoshi's comments. Concerning Nobuyoshi's questions:

>Just curious for my eyes,
>In ossl_ts_verify():
>1068     if (!(ctx->store = X509_STORE_new())) {
>1069         ossl_raise(eTimestampError, NULL);
>1070         goto end;
>1071     }

>Jump to clean-up after raise?

>1109 end:
>1110     TS_VERIFY_CTX_free(ctx);
>1111     return ret;

I corrected this, cleanup is now performed before the raise.


>In ossl_tsfac_create_ts():
>1231         if (!(inter_certs = sk_X509_new_null())) goto end;

>When inter_certs can't get created, all the rest are just skipped?

I forgot to set the error message there. Corrected this, now an error is raised when allocation fails.


>1232         if (tsa_cert)
>1233         if (rb_obj_is_kind_of(additional_certs, rb_cArray)) {
>1234             for (i = 0; i < RARRAY_LEN(additional_certs); i++) {
>1235                 cert = rb_ary_entry(additional_certs, i);
>1236                 sk_X509_push(inter_certs, GetX509CertPtr(cert));
>1237             }
>1238         }
>1239         else {
>1240             sk_X509_push(inter_certs, GetX509CertPtr(additional_certs));
>1241         }

>Just indentation of 1233..1241 is wrong, or 1232 is misplaced?

No, you're right, it was simply misplaced, I removed it.

Regarding your patch, I already applied it in the update.


There is still some functionality that is not supported and some features I dislike about the way OpenSSL handles timestamp verification. Concerning the missing functionality - I'm planning to add this in case the feature will be accepted, I first wanted to get your reactions before I indulge too deeply in something nobody would want anyway :) Missing features right now are:

- Extensions are neither supported for Request nor for the Response
- Accuracy and TSAName are not supported for the Response.
- I'd like to add some factory methods, that create Responses indicating errors easily. E.g. 

error_ts = OpenSSL::Timestamp::Response.create_fault_response(OpenSSL::Timestamp::Response::REJECTION,
                                                            :UNACCEPTED_POLICY,
                                                            "The policy you provided is not supported by this server")

This would simplify error creation for errors detected on the server side when manually analyzing the Request.


Things I would like different:
- I don't like the fact that for verification, you need to pass OpenSSL a BIO, even if you're still in possession of the TS_REQ*, as in our case (and I guess in most use cases). This forces encoding (and later decoding in OpenSSL) the TS_REQ*, which is unnecessary. I'll try to submit a patch to OpenSSL regarding this.
- The second thing I'm not really happy with is the fact that you cannot validate a timestamp solely based on the timestamp end entity certificate, verification always includes certificate validation of the entire chain. This is too tightly coupled in my opinion, certificate validation should only be an option (so that there is the possibility to perform it in a separate step). In addition, decoupling would also remove the necessity to provide intermediate certificates or root certificates. If the timestamp already contains the timestamp authority certificate(which it must if Request#cert_requested? is true), validation would be self-contained, no other external resources needed. I'll also try to submit a patch for this to OpenSSL.

@Hiroshi: thanks for the confidence, I'm happy to help :)

Regards,
Martin

----------------------------------------
http://redmine.ruby-lang.org/issues/show/4183

----------------------------------------
http://redmine.ruby-lang.org

Attachments (1)

ts2.tar.gz (15.3 KB, Archive)

In This Thread