wss4r 0.5
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.
- data/README +300 -0
- data/lib/wss4r/aws/utils.rb +37 -0
- data/lib/wss4r/config/config.rb +105 -0
- data/lib/wss4r/rpc/proxy.rb +26 -0
- data/lib/wss4r/rpc/router.rb +46 -0
- data/lib/wss4r/rpc/wssdriver.rb +19 -0
- data/lib/wss4r/security/crypto/certificate.rb +21 -0
- data/lib/wss4r/security/crypto/cipher.rb +161 -0
- data/lib/wss4r/security/crypto/hash.rb +35 -0
- data/lib/wss4r/security/exceptions/exceptions.rb +62 -0
- data/lib/wss4r/security/resolver.rb +23 -0
- data/lib/wss4r/security/security.rb +148 -0
- data/lib/wss4r/security/util/hash_util.rb +39 -0
- data/lib/wss4r/security/util/names.rb +38 -0
- data/lib/wss4r/security/util/namespaces.rb +21 -0
- data/lib/wss4r/security/util/reference_elements.rb +15 -0
- data/lib/wss4r/security/util/soap_parser.rb +73 -0
- data/lib/wss4r/security/util/transformer_factory.rb +29 -0
- data/lib/wss4r/security/util/types.rb +25 -0
- data/lib/wss4r/security/util/xmlcanonicalizer.rb +427 -0
- data/lib/wss4r/security/util/xmlutils.rb +58 -0
- data/lib/wss4r/security/xml/encrypted_data.rb +110 -0
- data/lib/wss4r/security/xml/encrypted_key.rb +74 -0
- data/lib/wss4r/security/xml/key_info.rb +52 -0
- data/lib/wss4r/security/xml/reference.rb +53 -0
- data/lib/wss4r/security/xml/reference_list.rb +24 -0
- data/lib/wss4r/security/xml/security.rb +92 -0
- data/lib/wss4r/security/xml/signature.rb +69 -0
- data/lib/wss4r/security/xml/signature_value.rb +26 -0
- data/lib/wss4r/security/xml/signed_info.rb +83 -0
- data/lib/wss4r/security/xml/timestamp.rb +47 -0
- data/lib/wss4r/security/xml/tokentypes.rb +180 -0
- data/lib/wss4r/server/wssstandaloneserver.rb +27 -0
- data/lib/wss4r/soap/processor.rb +92 -0
- data/lib/wss4r/tokenresolver/authenticateuserresolver.rb +34 -0
- data/lib/wss4r/tokenresolver/certificateresolver.rb +62 -0
- data/lib/wss4r/tokenresolver/databaseresolver.rb +56 -0
- data/lib/wss4r/tokenresolver/resolver.rb +13 -0
- metadata +95 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
module WSS4R
|
2
|
+
|
3
|
+
module Tokenresolver
|
4
|
+
class AuthenticateUserResolver < Resolver
|
5
|
+
|
6
|
+
def authenticate_user(usernametoken)
|
7
|
+
puts (usernametoken)
|
8
|
+
if usernametoken.type() == UsernameToken::HASHED
|
9
|
+
stamp = Base64.decode64(usernametoken.nonce())+usernametoken.created()
|
10
|
+
stamp = stamp + authenticate_token(usernametoken)
|
11
|
+
hash = CryptHash.new().digest_b64(stamp)
|
12
|
+
return hash.to_s() == usernametoken.hash().to_s()
|
13
|
+
else
|
14
|
+
return authenticate_token_plain(usernametoken.username(), usernametoken.password())
|
15
|
+
end
|
16
|
+
false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def authenticate_token(usernametoken)
|
21
|
+
usernametoken.username().reverse()
|
22
|
+
end
|
23
|
+
|
24
|
+
def authenticate_token_plain(username, password)
|
25
|
+
@username = username
|
26
|
+
@password = password
|
27
|
+
return (username.reverse() == password)
|
28
|
+
end
|
29
|
+
|
30
|
+
end #Tokenresolver
|
31
|
+
end #WSS4R
|
32
|
+
|
33
|
+
|
34
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require "wss4r/tokenresolver/resolver.rb"
|
2
|
+
require "wss4r/security/crypto/certificate"
|
3
|
+
|
4
|
+
module WSS4R
|
5
|
+
module Tokenresolver
|
6
|
+
class CertificateDirectoryResolver < Resolver
|
7
|
+
|
8
|
+
def initialize(directory)
|
9
|
+
File.stat(directory).directory?
|
10
|
+
@directory = directory
|
11
|
+
end
|
12
|
+
|
13
|
+
def certificate_by_key_identifier(key_identifier)
|
14
|
+
files = Dir[@directory + "/*.cer"]
|
15
|
+
files.each{|f|
|
16
|
+
certificate = Certificate.new(File.read(f))
|
17
|
+
if (key_identifier == certificate.key_identifier())
|
18
|
+
certificate.filename=(f)
|
19
|
+
return certificate
|
20
|
+
end
|
21
|
+
}
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
|
25
|
+
def private_key(certificate, passphrase=nil)
|
26
|
+
if (certificate.filename() != nil)
|
27
|
+
if passphrase
|
28
|
+
return (RSA.new(File.read(certificate.filename()), passphrase))
|
29
|
+
else
|
30
|
+
return (RSA.new(File.read(certificate.filename() + ".key")))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
files = Dir[@directory + "/*.key"]
|
34
|
+
files.each{|f|
|
35
|
+
pkey = RSA.new(File.read(f))
|
36
|
+
if (certificate.check_private_key(pkey))
|
37
|
+
return pkey
|
38
|
+
end
|
39
|
+
}
|
40
|
+
return nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def certificate_by_subject(subject)
|
44
|
+
files = Dir[@directory + "/*.cer"]
|
45
|
+
files.each{|f|
|
46
|
+
certificate = Certificate.new(File.read(f))
|
47
|
+
if (certificate.subject().to_s() == subject)
|
48
|
+
certificate.filename=(f)
|
49
|
+
return certificate
|
50
|
+
end
|
51
|
+
}
|
52
|
+
nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
#c = WSS4R::Tokenresolver::CertificateDirectoryResolver.new("./certs")
|
60
|
+
#cert = c.get_certificate_by_key_identifier("tUYo1KhZtRDiUf1LVNDUopTczmo=")
|
61
|
+
#key = c.get_private_key(cert)
|
62
|
+
#puts(key.to_s())
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require "sqlite3"
|
2
|
+
require "openssl"
|
3
|
+
|
4
|
+
require "base64"
|
5
|
+
|
6
|
+
require "wss4r/tokenresolver/resolver.rb"
|
7
|
+
require "wss4r/security/crypto/certificate"
|
8
|
+
|
9
|
+
include OpenSSL::PKey
|
10
|
+
include OpenSSL::X509
|
11
|
+
|
12
|
+
module WSS4R
|
13
|
+
module Tokenresolver
|
14
|
+
class DatabaseResolver < Resolver
|
15
|
+
def initialize(database_file)
|
16
|
+
@db = SQLite3::Database.new(database_file)
|
17
|
+
end
|
18
|
+
|
19
|
+
def private_key(certificate)
|
20
|
+
cert_data = Base64.encode64(certificate.to_der())
|
21
|
+
select = "select * from certificates where cert_data = '#{cert_data}'"
|
22
|
+
rows = @db.execute(select)
|
23
|
+
return nil if (rows == nil || rows.size() == 0)
|
24
|
+
private_key_data = rows[0][3]
|
25
|
+
private_key_data = Base64.decode64(private_key_data)
|
26
|
+
private_key = RSA.new(private_key_data)
|
27
|
+
return private_key if private_key
|
28
|
+
return nil
|
29
|
+
end
|
30
|
+
|
31
|
+
def certificate_by_subject(subject)
|
32
|
+
select = "select * from certificates where subject = '#{subject}'"
|
33
|
+
rows = @db.execute(select)
|
34
|
+
return nil if (rows == nil || rows.size() == 0)
|
35
|
+
cert_data = rows[0][2]
|
36
|
+
cert_data = Base64.decode64(cert_data)
|
37
|
+
cert = Certificate.new(cert_data)
|
38
|
+
return cert if cert
|
39
|
+
return nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
if __FILE__ == $0
|
46
|
+
resolver = WSS4R::Tokenresolver::DatabaseResolver.new(ARGV[0])
|
47
|
+
cert = resolver.certificate_by_subject("/C=DE/ST=Rheinland-Pfalz/L=Trier/O=FF/OU=Developement/CN=Client/emailAddress=client@web.de")
|
48
|
+
key = resolver.private_key(cert)
|
49
|
+
puts("Certificate:----" + cert.to_s())
|
50
|
+
puts("Private key:----" + key.to_s())
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
#cert = c.get_certificate_by_key_identifier("tUYo1KhZtRDiUf1LVNDUopTczmo=")
|
55
|
+
#key = c.get_private_key(cert)
|
56
|
+
#puts(key.to_s())
|
metadata
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.4
|
3
|
+
specification_version: 1
|
4
|
+
name: wss4r
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: "0.5"
|
7
|
+
date: 2007-10-16 00:00:00 +02:00
|
8
|
+
summary: Some description
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: roland.schmitt@web.de
|
12
|
+
homepage: http://rubyforge.org/projects/wss4r
|
13
|
+
rubyforge_project:
|
14
|
+
description:
|
15
|
+
autorequire: wss4r
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Roland Schmitt
|
31
|
+
files:
|
32
|
+
- lib/wss4r
|
33
|
+
- lib/wss4r/config
|
34
|
+
- lib/wss4r/config/config.rb
|
35
|
+
- lib/wss4r/soap
|
36
|
+
- lib/wss4r/soap/processor.rb
|
37
|
+
- lib/wss4r/rpc
|
38
|
+
- lib/wss4r/rpc/router.rb
|
39
|
+
- lib/wss4r/rpc/proxy.rb
|
40
|
+
- lib/wss4r/rpc/wssdriver.rb
|
41
|
+
- lib/wss4r/tokenresolver
|
42
|
+
- lib/wss4r/tokenresolver/authenticateuserresolver.rb
|
43
|
+
- lib/wss4r/tokenresolver/certificateresolver.rb
|
44
|
+
- lib/wss4r/tokenresolver/databaseresolver.rb
|
45
|
+
- lib/wss4r/tokenresolver/resolver.rb
|
46
|
+
- lib/wss4r/server
|
47
|
+
- lib/wss4r/server/wssstandaloneserver.rb
|
48
|
+
- lib/wss4r/security
|
49
|
+
- lib/wss4r/security/xml
|
50
|
+
- lib/wss4r/security/xml/encrypted_data.rb
|
51
|
+
- lib/wss4r/security/xml/signature.rb
|
52
|
+
- lib/wss4r/security/xml/tokentypes.rb
|
53
|
+
- lib/wss4r/security/xml/key_info.rb
|
54
|
+
- lib/wss4r/security/xml/reference_list.rb
|
55
|
+
- lib/wss4r/security/xml/reference.rb
|
56
|
+
- lib/wss4r/security/xml/timestamp.rb
|
57
|
+
- lib/wss4r/security/xml/security.rb
|
58
|
+
- lib/wss4r/security/xml/encrypted_key.rb
|
59
|
+
- lib/wss4r/security/xml/signature_value.rb
|
60
|
+
- lib/wss4r/security/xml/signed_info.rb
|
61
|
+
- lib/wss4r/security/crypto
|
62
|
+
- lib/wss4r/security/crypto/cipher.rb
|
63
|
+
- lib/wss4r/security/crypto/certificate.rb
|
64
|
+
- lib/wss4r/security/crypto/hash.rb
|
65
|
+
- lib/wss4r/security/exceptions
|
66
|
+
- lib/wss4r/security/exceptions/exceptions.rb
|
67
|
+
- lib/wss4r/security/util
|
68
|
+
- lib/wss4r/security/util/names.rb
|
69
|
+
- lib/wss4r/security/util/namespaces.rb
|
70
|
+
- lib/wss4r/security/util/soap_parser.rb
|
71
|
+
- lib/wss4r/security/util/xmlutils.rb
|
72
|
+
- lib/wss4r/security/util/hash_util.rb
|
73
|
+
- lib/wss4r/security/util/transformer_factory.rb
|
74
|
+
- lib/wss4r/security/util/xmlcanonicalizer.rb
|
75
|
+
- lib/wss4r/security/util/types.rb
|
76
|
+
- lib/wss4r/security/util/reference_elements.rb
|
77
|
+
- lib/wss4r/security/security.rb
|
78
|
+
- lib/wss4r/security/resolver.rb
|
79
|
+
- lib/wss4r/aws
|
80
|
+
- lib/wss4r/aws/utils.rb
|
81
|
+
- README
|
82
|
+
test_files: []
|
83
|
+
|
84
|
+
rdoc_options: []
|
85
|
+
|
86
|
+
extra_rdoc_files:
|
87
|
+
- README
|
88
|
+
executables: []
|
89
|
+
|
90
|
+
extensions: []
|
91
|
+
|
92
|
+
requirements: []
|
93
|
+
|
94
|
+
dependencies: []
|
95
|
+
|