Class: Cul::Handles::DH
- Inherits:
-
Object
- Object
- Cul::Handles::DH
- Includes:
- Hdl
- Defined in:
- lib/cul/handles/session_request.rb
Constant Summary
Constants included from Hdl
Hdl::ENV_FLAG_COMPRESSED, Hdl::ENV_FLAG_ENCRYPTED, Hdl::ENV_FLAG_TRUNCATED, Hdl::INDEX_ADMIN_HANDLE, Hdl::INDEX_AUTH, Hdl::INDEX_MAINTAINER_HANDLE, Hdl::MSG_FLAG_AUTH, Hdl::MSG_FLAG_AUTH_INDEX, Hdl::MSG_FLAG_CACR, Hdl::MSG_FLAG_CACR_INDEX, Hdl::MSG_FLAG_CERT, Hdl::MSG_FLAG_CERT_INDEX, Hdl::MSG_FLAG_CONT, Hdl::MSG_FLAG_CONT_INDEX, Hdl::MSG_FLAG_ENCR, Hdl::MSG_FLAG_ENCR_INDEX, Hdl::MSG_FLAG_KPAL, Hdl::MSG_FLAG_KPAL_INDEX, Hdl::MSG_FLAG_PUBL, Hdl::MSG_FLAG_PUBL_INDEX, Hdl::MSG_FLAG_RECU, Hdl::MSG_FLAG_RECU_INDEX, Hdl::MSG_FLAG_RRDG, Hdl::MSG_FLAG_RRDG_INDEX, Hdl::OC_ADD_VALUE, Hdl::OC_CHALLENGE_RESPONSE, Hdl::OC_CREATE_HANDLE, Hdl::OC_DELETE_HANDLE, Hdl::OC_GET_SITEINFO, Hdl::OC_LIST_HANDLE, Hdl::OC_LIST_NA, Hdl::OC_MODIFY_VALUE, Hdl::OC_REMOVE_VALUE, Hdl::OC_RESERVED, Hdl::OC_RESOLUTION, Hdl::OC_SESSION_EXCHANGEKEY, Hdl::OC_SESSION_SETUP, Hdl::OC_SESSION_TERMINATE, Hdl::OC_VERIFY_RESPONSE, Hdl::PERM_ADD_ADMIN, Hdl::PERM_ADD_HANDLE, Hdl::PERM_ADD_NA, Hdl::PERM_ADD_VALUE, Hdl::PERM_ALL, Hdl::PERM_DELETE_HANDLE, Hdl::PERM_DELETE_NA, Hdl::PERM_LIST_HDLS, Hdl::PERM_MODIFY_ADMIN, Hdl::PERM_MODIFY_VALUE, Hdl::PERM_READ_VALUE, Hdl::PERM_REMOVE_ADMIN, Hdl::PERM_REMOVE_VALUE, Hdl::RC_ACCESS_DENIED, Hdl::RC_AUTHEN_FAILED, Hdl::RC_AUTHEN_NEEDED, Hdl::RC_AUTHEN_TIMEOUT, Hdl::RC_ERROR, Hdl::RC_EXPIRED_SITE_INFO, Hdl::RC_FORWARDED, Hdl::RC_HANDLE_ALREADY_EXIST, Hdl::RC_HANDLE_NOT_FOUND, Hdl::RC_INVALID_CREDENTIAL, Hdl::RC_INVALID_HANDLE, Hdl::RC_NA_DELEGATE, Hdl::RC_NOT_AUTHORIZED, Hdl::RC_NO_SESSION_KEY, Hdl::RC_OPERATION_DENIED, Hdl::RC_PROTOCOL_ERROR, Hdl::RC_QUEUED, Hdl::RC_RECUR_LIMIT_EXCEEDED, Hdl::RC_RESERVED, Hdl::RC_SERVER_BUSY, Hdl::RC_SERVER_NOT_RESP, Hdl::RC_SERVICE_REFERRAL, Hdl::RC_SESSION_FAILED, Hdl::RC_SESSION_KEY_INVALID, Hdl::RC_SESSION_NO_SUPPORT, Hdl::RC_SESSION_TIMEOUT, Hdl::RC_SUCCESS, Hdl::RC_TRYING, Hdl::RC_UNABLE_TO_AUTHEN, Hdl::RC_VALUE_ALREADY_EXIST, Hdl::RC_VALUE_INVALID, Hdl::RC_VALUE_NOT_FOUND
Instance Attribute Summary collapse
-
#generator ⇒ Object
readonly
Returns the value of attribute generator.
-
#maxrand ⇒ Object
readonly
Returns the value of attribute maxrand.
-
#prime ⇒ Object
readonly
Returns the value of attribute prime.
-
#publickey ⇒ Object
readonly
Returns the value of attribute publickey.
Class Method Summary collapse
-
.mod_exp(start, e, m) ⇒ Object
def DH.miller_rabin(a, n) end def DH.prime end.
Instance Method Summary collapse
- #encodeKeyParms ⇒ Object
-
#generate(tries = 16) ⇒ Object
shared key.
-
#initialize(prime, generator, maxrand) ⇒ DH
constructor
A new instance of DH.
-
#secret(f) ⇒ Object
private key.
- #valid?(_e = self.publickey) ⇒ Boolean
Methods included from Hdl
#asBytes, #calculateValueLen, #convert16t8, #decodeAdminData, #encodeAdminData, #fromBytes, #readByteArray, #readIntArray, #readProtocolString, #toProtocolString
Constructor Details
#initialize(prime, generator, maxrand) ⇒ DH
Returns a new instance of DH.
89 90 91 92 93 94 95 96 |
# File 'lib/cul/handles/session_request.rb', line 89 def initialize(prime, generator, maxrand) @prime = prime @generator = generator @maxrand = maxrand @publickey = 0 #public key @key = 0 #shared secret @private = 0 #private key end |
Instance Attribute Details
#generator ⇒ Object (readonly)
Returns the value of attribute generator.
72 73 74 |
# File 'lib/cul/handles/session_request.rb', line 72 def generator @generator end |
#maxrand ⇒ Object (readonly)
Returns the value of attribute maxrand.
72 73 74 |
# File 'lib/cul/handles/session_request.rb', line 72 def maxrand @maxrand end |
#prime ⇒ Object (readonly)
Returns the value of attribute prime.
72 73 74 |
# File 'lib/cul/handles/session_request.rb', line 72 def prime @prime end |
#publickey ⇒ Object (readonly)
Returns the value of attribute publickey.
72 73 74 |
# File 'lib/cul/handles/session_request.rb', line 72 def publickey @publickey end |
Class Method Details
.mod_exp(start, e, m) ⇒ Object
def DH.miller_rabin(a, n)
end
def DH.prime
end
79 80 81 82 83 84 85 86 87 88 |
# File 'lib/cul/handles/session_request.rb', line 79 def DH.mod_exp start, e, m result = 1 b = start while e > 0 result = (result * b) % m if e[0] == 1 e = e >> 1 b = (b*b) %m end return result end |
Instance Method Details
#encodeKeyParms ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/cul/handles/session_request.rb', line 111 def encodeKeyParms result = [] publicBytes = asBytes(@publickey) result.concat(asBytes(publicBytes.length)) result.concat(publicBytes) primeBytes = asBytes(@prime) result.concat(asBytes(primeBytes.length)) result.concat(primeBytes) genBytes = asBytes(@generator) result.concat(asBytes(genBytes.length)) result.concat(genBytes) result end |
#generate(tries = 16) ⇒ Object
shared key
97 98 99 100 101 102 103 |
# File 'lib/cul/handles/session_request.rb', line 97 def generate tries=16 # shared key tries.times do @private = rand(@maxrand) @publickey = DH.mod_exp(@generator, @private, @prime) return @publickey if self.valid? end end |
#secret(f) ⇒ Object
private key
104 105 106 107 |
# File 'lib/cul/handles/session_request.rb', line 104 def secret f # private key @key = DH.mod_exp(f,@private,@prime) @key end |
#valid?(_e = self.publickey) ⇒ Boolean
108 109 110 |
# File 'lib/cul/handles/session_request.rb', line 108 def valid? _e = self.publickey _e and _e.between?(2,self.prime-2) and _e != 0 end |