diff --git a/Makefile b/Makefile index 8d4b939..54e546d 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,8 @@ RUBY_VERSION = $(RUBY_MAJOR_VERSION).3 RUBY_NAME = ruby-$(RUBY_VERSION) RUBY_DIR = build/$(RUBY_NAME) RUBY_OPENSSL_EXT_DIR = $(RUBY_DIR)/ext/openssl -RUBY_LIB_DIR = $(RBENV_ROOT)/versions/$(RUBY_VERSION)-cryptcheck/lib/ruby/$(RUBY_MAJOR_VERSION).0 +RBENV_DIR = $(RBENV_ROOT)/versions/$(RUBY_VERSION)-cryptcheck +RUBY_LIB_DIR = $(RBENV_DIR)/lib/ruby/$(RUBY_MAJOR_VERSION).0 RBENV_ROOT ?= ~/.rbenv export LIBRARY_PATH = $(PWD)/lib export C_INCLUDE_PATH = $(PWD)/$(OPENSSL_DIR)/include @@ -101,7 +102,7 @@ lib/openssl.so: $(RUBY_OPENSSL_EXT_DIR)/openssl.so ext: lib/openssl.so spec/faketime/libfaketime.so: spec/faketime/faketime.c spec/faketime/faketime.h - $(CC) -shared -fPIC $^ -o $@ -ldl -std=c99 -Werror -Wall + $(CC) $^ -o $@ -shared -fPIC -ldl -std=c99 -Werror -Wall lib/libfaketime.so: spec/faketime/libfaketime.so ln -fs ../$< $@ faketime: lib/libfaketime.so diff --git a/spec/cryptcheck/cert_spec.rb b/spec/cryptcheck/tls/cert_spec.rb similarity index 91% rename from spec/cryptcheck/cert_spec.rb rename to spec/cryptcheck/tls/cert_spec.rb index 6d35bbe..ab95e6d 100644 --- a/spec/cryptcheck/cert_spec.rb +++ b/spec/cryptcheck/tls/cert_spec.rb @@ -7,7 +7,7 @@ describe CryptCheck::Tls::Cert do describe '::trusted?' do it 'must accept valid certificate' do - FakeTime.freeze_during Time.utc(2000, 1, 1) do + FakeTime.freeze Time.utc(2000, 1, 1) do cert, *chain, ca = load_chain %w(ecdsa-prime256v1 intermediate ca) trust = ::CryptCheck::Tls::Cert.trusted? cert, chain, roots: ca expect(trust).to eq :trusted @@ -34,7 +34,7 @@ describe CryptCheck::Tls::Cert do end it 'must reject expired certificate' do - FakeTime.freeze_during Time.utc(2002, 1, 1) do + FakeTime.freeze Time.utc(2002, 1, 1) do cert, *chain, ca = load_chain %w(ecdsa-prime256v1 intermediate ca) trust = ::CryptCheck::Tls::Cert.trusted? cert, chain, roots: ca expect(trust).to eq 'certificate has expired' @@ -42,7 +42,7 @@ describe CryptCheck::Tls::Cert do end it 'must reject not yet valid certificate' do - FakeTime.freeze_during Time.utc(1999, 1, 1) do + FakeTime.freeze Time.utc(1999, 1, 1) do cert, *chain, ca = load_chain %w(ecdsa-prime256v1 intermediate ca) trust = ::CryptCheck::Tls::Cert.trusted? cert, chain, roots: ca expect(trust).to eq 'certificate is not yet valid' diff --git a/spec/cryptcheck/tls/server_spec.rb b/spec/cryptcheck/tls/server_spec.rb index 706193c..3562d0d 100644 --- a/spec/cryptcheck/tls/server_spec.rb +++ b/spec/cryptcheck/tls/server_spec.rb @@ -2,7 +2,7 @@ require 'faketime' describe CryptCheck::Tls::Server do before :all do - FakeTime.freeze Time.utc(2000, 1, 1).to_i + FakeTime.freeze Time.utc(2000, 1, 1) end after :all do diff --git a/spec/faketime.rb b/spec/faketime.rb index 6aea428..51e2a11 100644 --- a/spec/faketime.rb +++ b/spec/faketime.rb @@ -4,22 +4,24 @@ module FakeTime extend FFI::Library ffi_lib 'faketime' - def self.freeze(_) + def self._freeze(_) #This is a stub, used for indexing end def self.unfreeze #This is a stub, used for indexing end - attach_function :freeze, [:ulong], :void + attach_function :_freeze, [:ulong], :void attach_function :unfreeze, [], :void - def self.freeze_during(time, &block) - self.freeze time.to_i - begin - return block.call - ensure - self.unfreeze + def self.freeze(time) + self._freeze time.to_i + if block_given? + begin + return yield + ensure + self.unfreeze + end end end end diff --git a/spec/faketime/faketime.c b/spec/faketime/faketime.c index cc07088..86812fa 100644 --- a/spec/faketime/faketime.c +++ b/spec/faketime/faketime.c @@ -9,7 +9,7 @@ time_t frozen_time = 0; typedef time_t (*orig_time_f_type)(time_t*); orig_time_f_type orig_time = NULL; -void freeze(unsigned long time) { +void _freeze(unsigned long time) { frozen_time = (time_t)time; frozen = 1; } diff --git a/spec/faketime/faketime.h b/spec/faketime/faketime.h index 3ec6771..b9af8d8 100644 --- a/spec/faketime/faketime.h +++ b/spec/faketime/faketime.h @@ -1,2 +1,2 @@ -void freeze(unsigned long time); +void _freeze(unsigned long time); void unfreeze(); diff --git a/spec/faketime/libfaketime.so b/spec/faketime/libfaketime.so index f7b672c..5c3f3e5 100755 Binary files a/spec/faketime/libfaketime.so and b/spec/faketime/libfaketime.so differ