module OpenSSL::Timestamp
Bietet Klassen und Methoden zum Anfordern, Erstellen und Validieren von RFC3161-konformen Zeitstempeln. Request kann verwendet werden, um entweder Anfragen von Grund auf neu zu erstellen oder bestehende Anfragen zu parsen, die wiederum verwendet werden können, um Zeitstempel von einem Zeitstempelserver anzufordern, z.B. über net/http. Die resultierende Zeitstempelantwort kann mit Response geparst werden.
Bitte beachten Sie, dass Response schreibgeschützt und unveränderlich ist. Um eine Response zu erstellen, werden eine Instanz von Factory sowie eine gültige Request benötigt.
Eine Antwort erstellen
#Assumes ts.p12 is a PKCS#12-compatible file with a private key #and a certificate that has an extended key usage of 'timeStamping' p12 = OpenSSL::PKCS12.new(File.binread('ts.p12'), 'pwd') md = OpenSSL::Digest.new('SHA1') hash = md.digest(data) #some binary data to be timestamped req = OpenSSL::Timestamp::Request.new req.algorithm = 'SHA1' req.message_imprint = hash req.policy_id = "1.2.3.4.5" req.nonce = 42 fac = OpenSSL::Timestamp::Factory.new fac.gen_time = Time.now fac.serial_number = 1 timestamp = fac.create_timestamp(p12.key, p12.certificate, req)
Eine Zeitstempelantwort verifizieren
#Assume we have a timestamp token in a file called ts.der
ts = OpenSSL::Timestamp::Response.new(File.binread('ts.der'))
#Assume we have the Request for this token in a file called req.der
req = OpenSSL::Timestamp::Request.new(File.binread('req.der'))
# Assume the associated root CA certificate is contained in a
# DER-encoded file named root.cer
root = OpenSSL::X509::Certificate.new(File.binread('root.cer'))
# get the necessary intermediate certificates, available in
# DER-encoded form in inter1.cer and inter2.cer
inter1 = OpenSSL::X509::Certificate.new(File.binread('inter1.cer'))
inter2 = OpenSSL::X509::Certificate.new(File.binread('inter2.cer'))
ts.verify(req, root, inter1, inter2) -> ts or raises an exception if validation fails