merge revision(s) 1ad2224773: [Backport #17625]

[ruby/openssl] Fixed the results of
	 OpenSSL::Timestamp::Response#failure_info

	Made stored values `Symbol`s instead of `ID`s.

	Fixes https://bugs.ruby-lang.org/issues/17625

	Co-Authored-By: xtkoba (Tee KOBAYASHI) <xtkoba+ruby@gmail.com>

	f2d004679a
	---
	 ext/openssl/ossl_ts.c   | 22 +++++++++++-----------
	 test/openssl/test_ts.rb |  5 +++++
	 2 files changed, 16 insertions(+), 11 deletions(-)
This commit is contained in:
nagachika 2021-05-23 14:40:20 +09:00
parent f9196de1de
commit fc73fc79cb
3 changed files with 17 additions and 12 deletions

View file

@ -68,9 +68,9 @@ static VALUE cTimestampRequest;
static VALUE cTimestampResponse; static VALUE cTimestampResponse;
static VALUE cTimestampTokenInfo; static VALUE cTimestampTokenInfo;
static VALUE cTimestampFactory; static VALUE cTimestampFactory;
static ID sBAD_ALG, sBAD_REQUEST, sBAD_DATA_FORMAT, sTIME_NOT_AVAILABLE; static VALUE sBAD_ALG, sBAD_REQUEST, sBAD_DATA_FORMAT, sTIME_NOT_AVAILABLE;
static ID sUNACCEPTED_POLICY, sUNACCEPTED_EXTENSION, sADD_INFO_NOT_AVAILABLE; static VALUE sUNACCEPTED_POLICY, sUNACCEPTED_EXTENSION, sADD_INFO_NOT_AVAILABLE;
static ID sSYSTEM_FAILURE; static VALUE sSYSTEM_FAILURE;
static void static void
ossl_ts_req_free(void *ptr) ossl_ts_req_free(void *ptr)
@ -1247,24 +1247,24 @@ Init_ossl_ts(void)
* timestamp server rejects the message imprint algorithm used in the * timestamp server rejects the message imprint algorithm used in the
* +Request+ * +Request+
*/ */
sBAD_ALG = rb_intern_const("BAD_ALG"); sBAD_ALG = ID2SYM(rb_intern_const("BAD_ALG"));
/* /*
* Possible return value for +Response#failure_info+. Indicates that the * Possible return value for +Response#failure_info+. Indicates that the
* timestamp server was not able to process the +Request+ properly. * timestamp server was not able to process the +Request+ properly.
*/ */
sBAD_REQUEST = rb_intern_const("BAD_REQUEST"); sBAD_REQUEST = ID2SYM(rb_intern_const("BAD_REQUEST"));
/* /*
* Possible return value for +Response#failure_info+. Indicates that the * Possible return value for +Response#failure_info+. Indicates that the
* timestamp server was not able to parse certain data in the +Request+. * timestamp server was not able to parse certain data in the +Request+.
*/ */
sBAD_DATA_FORMAT = rb_intern_const("BAD_DATA_FORMAT"); sBAD_DATA_FORMAT = ID2SYM(rb_intern_const("BAD_DATA_FORMAT"));
sTIME_NOT_AVAILABLE = rb_intern_const("TIME_NOT_AVAILABLE"); sTIME_NOT_AVAILABLE = ID2SYM(rb_intern_const("TIME_NOT_AVAILABLE"));
sUNACCEPTED_POLICY = rb_intern_const("UNACCEPTED_POLICY"); sUNACCEPTED_POLICY = ID2SYM(rb_intern_const("UNACCEPTED_POLICY"));
sUNACCEPTED_EXTENSION = rb_intern_const("UNACCEPTED_EXTENSION"); sUNACCEPTED_EXTENSION = ID2SYM(rb_intern_const("UNACCEPTED_EXTENSION"));
sADD_INFO_NOT_AVAILABLE = rb_intern_const("ADD_INFO_NOT_AVAILABLE"); sADD_INFO_NOT_AVAILABLE = ID2SYM(rb_intern_const("ADD_INFO_NOT_AVAILABLE"));
sSYSTEM_FAILURE = rb_intern_const("SYSTEM_FAILURE"); sSYSTEM_FAILURE = ID2SYM(rb_intern_const("SYSTEM_FAILURE"));
/* Document-class: OpenSSL::Timestamp /* Document-class: OpenSSL::Timestamp
* Provides classes and methods to request, create and validate * Provides classes and methods to request, create and validate

View file

@ -222,6 +222,11 @@ _end_of_pem_
assert_equal(token.to_der, resp.token.to_der) assert_equal(token.to_der, resp.token.to_der)
end end
def test_response_failure_info
resp = OpenSSL::Timestamp::Response.new("0\"0 \x02\x01\x020\x17\f\x15Invalid TimeStampReq.\x03\x02\x06\x80")
assert_equal(:BAD_ALG, resp.failure_info)
end
def test_response_mandatory_fields def test_response_mandatory_fields
fac = OpenSSL::Timestamp::Factory.new fac = OpenSSL::Timestamp::Factory.new
req = OpenSSL::Timestamp::Request.new req = OpenSSL::Timestamp::Request.new

View file

@ -12,7 +12,7 @@
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
#define RUBY_VERSION_TEENY 2 #define RUBY_VERSION_TEENY 2
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
#define RUBY_PATCHLEVEL 83 #define RUBY_PATCHLEVEL 84
#define RUBY_RELEASE_YEAR 2021 #define RUBY_RELEASE_YEAR 2021
#define RUBY_RELEASE_MONTH 5 #define RUBY_RELEASE_MONTH 5