accessing
The iterator version of the tsort
method. obj.tsort_each
is similar to obj.tsort.each
, but modification of obj during the iteration may lead to unexpected results.
tsort_each
returns nil
. If there is a cycle, TSort::Cyclic
is raised.
class G include TSort def initialize(g) @g = g end def tsort_each_child(n, &b) @g[n].each(&b) end def tsort_each_node(&b) @g.each_key(&b) end end graph = G.new({1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]}) graph.tsort_each {|n| p n } #=> 4 # 2 # 3 # 1
The iterator version of the TSort.tsort
method.
The graph is represented by each_node and each_child. each_node should have call
method which yields for each node in the graph. each_child should have call
method which takes a node argument and yields for each child node.
g = {1=>[2, 3], 2=>[4], 3=>[2, 4], 4=>[]} each_node = lambda {|&b| g.each_key(&b) } each_child = lambda {|n, &b| g[n].each(&b) } TSort.tsort_each(each_node, each_child) {|n| p n } #=> 4 # 2 # 3 # 1
@visibility private
Sends “close notify” to the peer and tries to shut down the SSL
connection gracefully.
If sync_close is set to true
, the underlying IO
is also closed.
Reads length
bytes from the SSL
connection. If a pre-allocated buffer
is provided the data will be written into it.
Writes string
to the SSL
connection.
Calls block once for each element in self
, passing that element as parameter asn1
. If no block is given, an enumerator is returned instead.
asn1_ary.each do |asn1| puts asn1 end
Returns the challenge string associated with this SPKI
.
str
- the challenge string to be set for this instance
Sets the challenge to be associated with the SPKI
. May be used by the server, e.g. to prevent replay.
Computes and returns the DSA
signature of string
, where string
is expected to be an already-computed message digest of the original input data. The signature is issued using the private key of this DSA
instance.
string
is a message digest of the original input data to be signed
dsa = OpenSSL::PKey::DSA.new(2048) doc = "Sign me" digest = OpenSSL::Digest::SHA1.digest(doc) sig = dsa.syssign(digest)
Verifies whether the signature is valid given the message digest input. It does so by validating sig
using the public key of this DSA
instance.
digest
is a message digest of the original input data to be signed
sig
is a DSA
signature value
dsa = OpenSSL::PKey::DSA.new(2048) doc = "Sign me" digest = OpenSSL::Digest::SHA1.digest(doc) sig = dsa.syssign(digest) puts dsa.sysverify(digest, sig) # => true