Skip to content

Commit 93213b2

Browse files
committed
digest, hmac, ts, x509: use IO.binread in examples where appropriate
IO.read may mangle line separator, which will corrupt binary data including DER-encoded X.509 certificates and such. Fixes: #243
1 parent d669d71 commit 93213b2

File tree

4 files changed

+18
-18
lines changed

4 files changed

+18
-18
lines changed

ext/openssl/ossl_digest.c

+6-6
Original file line numberDiff line numberDiff line change
@@ -372,15 +372,15 @@ Init_ossl_digest(void)
372372
*
373373
* === Hashing a file
374374
*
375-
* data = File.read('document')
375+
* data = File.binread('document')
376376
* sha256 = OpenSSL::Digest.new('SHA256')
377377
* digest = sha256.digest(data)
378378
*
379379
* === Hashing several pieces of data at once
380380
*
381-
* data1 = File.read('file1')
382-
* data2 = File.read('file2')
383-
* data3 = File.read('file3')
381+
* data1 = File.binread('file1')
382+
* data2 = File.binread('file2')
383+
* data3 = File.binread('file3')
384384
* sha256 = OpenSSL::Digest.new('SHA256')
385385
* sha256 << data1
386386
* sha256 << data2
@@ -389,11 +389,11 @@ Init_ossl_digest(void)
389389
*
390390
* === Reuse a Digest instance
391391
*
392-
* data1 = File.read('file1')
392+
* data1 = File.binread('file1')
393393
* sha256 = OpenSSL::Digest.new('SHA256')
394394
* digest1 = sha256.digest(data1)
395395
*
396-
* data2 = File.read('file2')
396+
* data2 = File.binread('file2')
397397
* sha256.reset
398398
* digest2 = sha256.digest(data2)
399399
*

ext/openssl/ossl_hmac.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -350,8 +350,8 @@ Init_ossl_hmac(void)
350350
*
351351
* === HMAC-SHA256 using incremental interface
352352
*
353-
* data1 = File.read("file1")
354-
* data2 = File.read("file2")
353+
* data1 = File.binread("file1")
354+
* data2 = File.binread("file2")
355355
* key = "key"
356356
* digest = OpenSSL::Digest.new('SHA256')
357357
* hmac = OpenSSL::HMAC.new(key, digest)

ext/openssl/ossl_ts.c

+9-9
Original file line numberDiff line numberDiff line change
@@ -1280,7 +1280,7 @@ Init_ossl_ts(void)
12801280
* ===Create a Response:
12811281
* #Assumes ts.p12 is a PKCS#12-compatible file with a private key
12821282
* #and a certificate that has an extended key usage of 'timeStamping'
1283-
* p12 = OpenSSL::PKCS12.new(File.open('ts.p12', 'rb'), 'pwd')
1283+
* p12 = OpenSSL::PKCS12.new(File.binread('ts.p12'), 'pwd')
12841284
* md = OpenSSL::Digest.new('SHA1')
12851285
* hash = md.digest(data) #some binary data to be timestamped
12861286
* req = OpenSSL::Timestamp::Request.new
@@ -1295,16 +1295,16 @@ Init_ossl_ts(void)
12951295
*
12961296
* ===Verify a timestamp response:
12971297
* #Assume we have a timestamp token in a file called ts.der
1298-
* ts = OpenSSL::Timestamp::Response.new(File.open('ts.der', 'rb')
1298+
* ts = OpenSSL::Timestamp::Response.new(File.binread('ts.der'))
12991299
* #Assume we have the Request for this token in a file called req.der
1300-
* req = OpenSSL::Timestamp::Request.new(File.open('req.der', 'rb')
1300+
* req = OpenSSL::Timestamp::Request.new(File.binread('req.der'))
13011301
* # Assume the associated root CA certificate is contained in a
13021302
* # DER-encoded file named root.cer
1303-
* root = OpenSSL::X509::Certificate.new(File.open('root.cer', 'rb')
1303+
* root = OpenSSL::X509::Certificate.new(File.binread('root.cer'))
13041304
* # get the necessary intermediate certificates, available in
13051305
* # DER-encoded form in inter1.cer and inter2.cer
1306-
* inter1 = OpenSSL::X509::Certificate.new(File.open('inter1.cer', 'rb')
1307-
* inter2 = OpenSSL::X509::Certificate.new(File.open('inter2.cer', 'rb')
1306+
* inter1 = OpenSSL::X509::Certificate.new(File.binread('inter1.cer'))
1307+
* inter2 = OpenSSL::X509::Certificate.new(File.binread('inter2.cer'))
13081308
* ts.verify(req, root, inter1, inter2) -> ts or raises an exception if validation fails
13091309
*
13101310
*/
@@ -1437,9 +1437,9 @@ Init_ossl_ts(void)
14371437
* timestamping certificate.
14381438
*
14391439
* req = OpenSSL::Timestamp::Request.new(raw_bytes)
1440-
* p12 = OpenSSL::PKCS12.new(File.open('ts.p12', 'rb'), 'pwd')
1441-
* inter1 = OpenSSL::X509::Certificate.new(File.open('inter1.cer', 'rb')
1442-
* inter2 = OpenSSL::X509::Certificate.new(File.open('inter2.cer', 'rb')
1440+
* p12 = OpenSSL::PKCS12.new(File.binread('ts.p12'), 'pwd')
1441+
* inter1 = OpenSSL::X509::Certificate.new(File.binread('inter1.cer'))
1442+
* inter2 = OpenSSL::X509::Certificate.new(File.binread('inter2.cer'))
14431443
* fac = OpenSSL::Timestamp::Factory.new
14441444
* fac.gen_time = Time.now
14451445
* fac.serial_number = 1

ext/openssl/ossl_x509cert.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ Init_ossl_x509cert(void)
730730
* Certificate is capable of handling DER-encoded certificates and
731731
* certificates encoded in OpenSSL's PEM format.
732732
*
733-
* raw = File.read "cert.cer" # DER- or PEM-encoded
733+
* raw = File.binread "cert.cer" # DER- or PEM-encoded
734734
* certificate = OpenSSL::X509::Certificate.new raw
735735
*
736736
* === Saving a certificate to a file

0 commit comments

Comments
 (0)