quaff 0.7.2 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/auth.rb +16 -5
  3. metadata +16 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 193de3492377eb5632711a50d13544aed7d6cdee
4
- data.tar.gz: f4248258e480b0205f3724ae7da0c0b725868414
3
+ metadata.gz: dd835927c3eee7a4ba02cd376b8967d0cea3c5e8
4
+ data.tar.gz: bad0aed037d35fbbae1996f95e7145dab1d43543
5
5
  SHA512:
6
- metadata.gz: 2bbf17a26f376dfe1808efc86de556bf4ee539df9d120d7b721c2b5912d5fb3acdbc609d1662a48adcd3b67e61aec4c513bb971f478e01931084fa080c03a9fd
7
- data.tar.gz: dd93aa1e370a11157ee17179922c46b42c73cb7f9109a2158f4fa35f13a402e04c0808adb5a6e39d85294b065b8ed4bb5669a0e56f664d544cd9182abbe2bcbc
6
+ metadata.gz: 9e6aeafc9f296e0718b366ea52eb17943d79ccb207515d5ee85f9e128ef3fe7eaca03f3ca63a450beb46edf30ca04fdfe0505153e1c3cb23bfcd9ae2e7d3d0a9
7
+ data.tar.gz: e8ecea0abae1644e6494dcd9a3aadd1d647cbb479b7e2be29fbb2f1a27b235515ec4bfa37971e0335abaad245cac53be96d243d3447faf964d0a4f98c394455b
@@ -2,14 +2,18 @@ require 'base64'
2
2
 
3
3
  module Quaff
4
4
  module Auth #:nodoc:
5
- def Auth.gen_nonce auth_pairs, username, passwd, method, sip_uri, ha1=""
5
+ def Auth.gen_nonce auth_pairs, username, passwd, method, sip_uri, ha1="", qop="", nc=1, cnonce=""
6
6
  if ha1.empty?
7
7
  a1 = username + ":" + auth_pairs["realm"] + ":" + passwd
8
8
  ha1 = Digest::MD5::hexdigest(a1)
9
9
  end
10
10
  a2 = method + ":" + sip_uri
11
11
  ha2 = Digest::MD5::hexdigest(a2)
12
- digest = Digest::MD5.hexdigest(ha1 + ":" + auth_pairs["nonce"] + ":" + ha2)
12
+ if qop == "auth"
13
+ digest = Digest::MD5.hexdigest(ha1 + ":" + auth_pairs["nonce"] + ":" + nc.to_s(16).rjust(8, "0") + ":" + cnonce + ":" + qop + ":" + ha2)
14
+ else
15
+ digest = Digest::MD5.hexdigest(ha1 + ":" + auth_pairs["nonce"] + ":" + ha2)
16
+ end
13
17
  return digest
14
18
  end
15
19
 
@@ -31,15 +35,22 @@ module Quaff
31
35
  # the SIP URI
32
36
  end
33
37
 
34
- def Auth.gen_auth_header auth_line, username, passwd, method, sip_uri, ha1=""
38
+ def Auth.gen_auth_header auth_line, username, passwd, method, sip_uri, ha1="", qop="", nc=1, cnonce=""
35
39
  # Split auth line on commas
36
40
  auth_pairs = {}
37
41
  auth_line.sub("Digest ", "").split(",") .each do |pair|
38
42
  key, value = pair.split "="
39
43
  auth_pairs[key.gsub(" ", "")] = value.gsub("\"", "").gsub(" ", "")
40
44
  end
41
- digest = gen_nonce auth_pairs, username, passwd, method, sip_uri, ha1
42
- return %Q!Digest username="#{username}",realm="#{auth_pairs['realm']}",nonce="#{auth_pairs['nonce']}",uri="#{sip_uri}",response="#{digest}",algorithm="#{auth_pairs['algorithm']}",opaque="#{auth_pairs['opaque']}"!
45
+ if !qop.empty? and cnonce.empty?
46
+ cnonce = (0...16).map { (rand(16)).to_s(16) }.join
47
+ end
48
+ digest = gen_nonce auth_pairs, username, passwd, method, sip_uri, ha1, qop, nc, cnonce
49
+ if !qop.empty?
50
+ return %Q!Digest username="#{username}",realm="#{auth_pairs['realm']}",nonce="#{auth_pairs['nonce']}",uri="#{sip_uri}",response="#{digest}",algorithm="#{auth_pairs['algorithm']}",opaque="#{auth_pairs['opaque']}",qop="#{qop}",nc="#{nc.to_s(16).rjust(8, "0")}",cnonce="#{cnonce}"!
51
+ else
52
+ return %Q!Digest username="#{username}",realm="#{auth_pairs['realm']}",nonce="#{auth_pairs['nonce']}",uri="#{sip_uri}",response="#{digest}",algorithm="#{auth_pairs['algorithm']}",opaque="#{auth_pairs['opaque']}"!
53
+ end
43
54
  # Return Authorization header with fields username, realm, nonce, uri, nc, cnonce, response, opaque
44
55
  end
45
56
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quaff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rob Day
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-12 00:00:00.000000000 Z
11
+ date: 2016-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: system-getifaddrs
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: milenage
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 0.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: abnf-parsing
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.2.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.2.0
55
55
  description: A Ruby library for writing SIP test scenarios
@@ -58,14 +58,14 @@ executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
- - lib/sources.rb
61
+ - lib/auth.rb
62
62
  - lib/call.rb
63
- - lib/utils.rb
64
- - lib/message.rb
65
63
  - lib/endpoint.rb
66
- - lib/sip_parser.rb
67
- - lib/auth.rb
64
+ - lib/message.rb
68
65
  - lib/quaff.rb
66
+ - lib/sip_parser.rb
67
+ - lib/sources.rb
68
+ - lib/utils.rb
69
69
  homepage: http://github.com/rkday/quaff
70
70
  licenses:
71
71
  - GPL3
@@ -77,17 +77,17 @@ require_paths:
77
77
  - lib
78
78
  required_ruby_version: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - '>='
85
+ - - ">="
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  requirements: []
89
89
  rubyforge_project:
90
- rubygems_version: 2.1.11
90
+ rubygems_version: 2.4.8
91
91
  signing_key:
92
92
  specification_version: 4
93
93
  summary: Quaff