type=class
superclass=OpenSSL=PKey=PKey
included=
extended=
library=openssl

Diffie-Hellman Ź楯饹

Diffie-Hellman ŹϽ̾Ǥʤᡢ
[[m:OpenSSL::PKey::PKey#sign]]  [[m:OpenSSL::PKey::PKey#verify]] 
Ƥӽ̾̾θڤԤȤ㳰
[[c:OpenSSL::PKey::PKeyError]] ȯޤ

Diffie-Hellman ϤΥ饤֥ǤϴŪˤϸդˤѤǤޤ


=== 

դ㡣
  # ѥ᡼
  dh = OpenSSL::PKey::DH.generate(1024, 5)
  # ѥ᡼Υå
  raise "bad DH parameter" unless dh.params_ok?
  # ʲdh1  dh2 ̿ξüǤȤ
  #  dh1  dh2 ϸѥ᡼ p  g ͭʤФʤʤ
  #  ΤᤳǤϡñ2ʣ뤳ȤˤƤ
    
  # dh1  dh 򤽤Τޤ޻Ȥ
  dh1 = dh
  # ѥ᡼ʣ dh2 Ϥ
  dh2 = OpenSSL::PKey::DH.new(dh)
  
  # ξüѥ᡼鸰Ф
  dh1.generate_key!
  dh2.generate_key!
  # ̿ξüǸ򴹤
  #  θ򴹤̩ǹԤɬפϤʤ줬Τ
  #  θǤ뤳ȤǧʤФФʤʤ
  #  (ʤֹּʤɤˤä̩ϴˤ줵)
  #  ΤἫʬθ DSA ʤɤǽ̾Ƥ򴹤ɬפ
  #  Ǥñˤ뤿ᡢΤ褦ʽ֤ϤƤʤ
  # dh1 ̩ dh2 θͭ줿ѥ᡼
  # Ѥ dh1 ¦ǸȤʤʸ
  key1 = dh1.compute_key(dh2.pub_key)
  # dh2 ̩ dh1 θͭ줿ѥ᡼
  # Ѥ dh2 ¦ǸȤʤʸ
  key2 = dh1.compute_key(dh1.pub_key)
  # key1  key2 ƱʸȤʤꡢ⤳̩ʤǤ
  # ʤᡢ̩(ʸʸ)
  # ǤȤȤʤ
  p(key1 == key2)
