xmlsig 0.0.1
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.rdoc +0 -0
- data/ext/xmlsig/BioWrap.h +98 -0
- data/ext/xmlsig/DSig.cpp +109 -0
- data/ext/xmlsig/DSig.h +81 -0
- data/ext/xmlsig/DSigCtx.h +72 -0
- data/ext/xmlsig/Exceptions.cpp +151 -0
- data/ext/xmlsig/Exceptions.h +214 -0
- data/ext/xmlsig/Key.cpp +582 -0
- data/ext/xmlsig/Key.h +338 -0
- data/ext/xmlsig/KeyInfoCtx.h +67 -0
- data/ext/xmlsig/KeyStore.cpp +180 -0
- data/ext/xmlsig/KeyStore.h +157 -0
- data/ext/xmlsig/KeysMngrWrap.h +62 -0
- data/ext/xmlsig/NodeSet.h +60 -0
- data/ext/xmlsig/Signer.cpp +691 -0
- data/ext/xmlsig/Signer.h +373 -0
- data/ext/xmlsig/TrustVerifier.cpp +145 -0
- data/ext/xmlsig/TrustVerifier.h +174 -0
- data/ext/xmlsig/Verifier.cpp +677 -0
- data/ext/xmlsig/Verifier.h +313 -0
- data/ext/xmlsig/X509Certificate.cpp +362 -0
- data/ext/xmlsig/X509Certificate.h +146 -0
- data/ext/xmlsig/XPath.cpp +173 -0
- data/ext/xmlsig/XPath.h +156 -0
- data/ext/xmlsig/XPathCtx.h +68 -0
- data/ext/xmlsig/XmlCharBuf.h +60 -0
- data/ext/xmlsig/XmlDoc.cpp +278 -0
- data/ext/xmlsig/XmlDoc.h +157 -0
- data/ext/xmlsig/XmlElement.cpp +151 -0
- data/ext/xmlsig/XmlElement.h +134 -0
- data/ext/xmlsig/countptr.h +260 -0
- data/ext/xmlsig/extconf.rb +58 -0
- data/ext/xmlsig/runtests.rb +23 -0
- data/ext/xmlsig/swig/countptr.i +27 -0
- data/ext/xmlsig/swig/exceptions.i +79 -0
- data/ext/xmlsig/swig/ruby.i +17 -0
- data/ext/xmlsig/swig/xmlsig.i +405 -0
- data/ext/xmlsig/t/tc_cert.rb +34 -0
- data/ext/xmlsig/t/tc_interface.rb +158 -0
- data/ext/xmlsig/t/tc_signer.rb +501 -0
- data/ext/xmlsig/t/tc_tsik.rb +490 -0
- data/ext/xmlsig/t/tc_verifier.rb +151 -0
- data/ext/xmlsig/t/tsik_interop/sign.rb +48 -0
- data/ext/xmlsig/t/tsik_interop/verify.rb +31 -0
- data/ext/xmlsig/t/tsik_interop/verify_own.rb +46 -0
- data/ext/xmlsig/xmlsig.cpp +13363 -0
- data/lib/xmlsig.rb +1 -0
- metadata +113 -0
@@ -0,0 +1,157 @@
|
|
1
|
+
/*
|
2
|
+
* (C) Copyright 2006 VeriSign, Inc.
|
3
|
+
* Developed by Sxip Identity
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*/
|
17
|
+
#ifndef _KEYSTORE_H
|
18
|
+
#define _KEYSTORE_H
|
19
|
+
#include <string>
|
20
|
+
#include <xmlsec/keysmngr.h>
|
21
|
+
#include "Exceptions.h"
|
22
|
+
#include "X509Certificate.h"
|
23
|
+
using namespace std;
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Storage of keys and certificates.
|
27
|
+
* Keys and certificates in objects of this class may be used by the
|
28
|
+
* Signer and Verifier to create and validate signatures.
|
29
|
+
*/
|
30
|
+
class KeyStore
|
31
|
+
{
|
32
|
+
public:
|
33
|
+
/**
|
34
|
+
* Create an empty KeyStore.
|
35
|
+
* @throws MemoryError if a null key manager is created
|
36
|
+
* @throws KeyError if the key manager can't be initialized
|
37
|
+
*/
|
38
|
+
KeyStore ();
|
39
|
+
/**
|
40
|
+
* Destroy the key manager.
|
41
|
+
*/
|
42
|
+
~KeyStore ();
|
43
|
+
/**
|
44
|
+
* Add a trusted certificate.
|
45
|
+
* @param cert A trusted X509Certificate
|
46
|
+
* @return 0 on success, -1 on error
|
47
|
+
* @throws LibError if the certificate can't be adopted or the key store is bad
|
48
|
+
*/
|
49
|
+
int addTrustedCert (X509CertificatePtr cert);
|
50
|
+
/**
|
51
|
+
* Add an untrusted certificate.
|
52
|
+
* @param cert An untrusted X509Certificate
|
53
|
+
* @return 0 on success, -1 on error
|
54
|
+
* @throws LibError if the certificate can't be adopted or the key store is bad
|
55
|
+
*/
|
56
|
+
int addUntrustedCert (X509CertificatePtr cert);
|
57
|
+
/**
|
58
|
+
* Add a trusted certificate from a file.
|
59
|
+
* @param fileName The file name
|
60
|
+
* @param format Key data format string (see Key::loadFromFile() for format list)
|
61
|
+
* @return 0 on success, -1 on error
|
62
|
+
* @throws IOError if the file can't be read
|
63
|
+
*/
|
64
|
+
int addTrustedCertFromFile (string fileName, string format);
|
65
|
+
/**
|
66
|
+
* Add an untrusted certificate from a file.
|
67
|
+
* @param fileName The file name
|
68
|
+
* @param format Key data format string (see Key::loadFromFile() for format list)
|
69
|
+
* @return 0 on success, -1 on error
|
70
|
+
* @throws IOError if the file can't be read
|
71
|
+
*/
|
72
|
+
int addUntrustedCertFromFile (string fileName, string format);
|
73
|
+
/**
|
74
|
+
* Add a key to the store.
|
75
|
+
* @param key The key to add
|
76
|
+
* @return 0 on success, -1 on error
|
77
|
+
* @throws LibError on key manager adoption error
|
78
|
+
*/
|
79
|
+
int addKey (KeyPtr key);
|
80
|
+
/**
|
81
|
+
* Add a key from a file.
|
82
|
+
* @param fileName The file name
|
83
|
+
* @param format Key data format string (see Key::loadFromFile() for format list)
|
84
|
+
* @param name Name of key
|
85
|
+
* @return 0 on success, -1 on error
|
86
|
+
* @throws IOError if the file can't be read
|
87
|
+
* @throws LibError on key manager adoption error
|
88
|
+
*/
|
89
|
+
int addKeyFromFile (string fileName, string format, string name);
|
90
|
+
/**
|
91
|
+
* @overload
|
92
|
+
* @param fileName The file name
|
93
|
+
* @param format Key data format string (see Key::loadFromFile() for format list)
|
94
|
+
* @param name Name of key
|
95
|
+
* @param password Password for key, empty string if unnecessary
|
96
|
+
*/
|
97
|
+
int addKeyFromFile (string fileName, string format, string name, string password);
|
98
|
+
/**
|
99
|
+
* Save keys/certs to an XML file.
|
100
|
+
* @param fileName The file name
|
101
|
+
* @return 0 on success, -1 on error
|
102
|
+
* @throws IOError if the file can't be written
|
103
|
+
*/
|
104
|
+
int saveToFile (string fileName);
|
105
|
+
/**
|
106
|
+
* Add keys/certs from an XML file.
|
107
|
+
* @param fileName The file name
|
108
|
+
* @return 0 on success, -1 on error
|
109
|
+
* @throws IOError if the file can't be read
|
110
|
+
*/
|
111
|
+
int loadFromFile (string fileName);
|
112
|
+
|
113
|
+
/// @cond NO_INTERFACE
|
114
|
+
/**
|
115
|
+
* Get the internal representation of the KeyStore.
|
116
|
+
* @return A pointer to the KeyStore.
|
117
|
+
*/
|
118
|
+
xmlSecKeysMngrPtr getKeyStore ();
|
119
|
+
xmlSecKeysMngrPtr operator-> ()
|
120
|
+
{
|
121
|
+
return getKeyStore();
|
122
|
+
}
|
123
|
+
operator xmlSecKeysMngrPtr ()
|
124
|
+
{
|
125
|
+
return getKeyStore();
|
126
|
+
}
|
127
|
+
|
128
|
+
protected:
|
129
|
+
/**
|
130
|
+
* Internal representation of the KeyStore.
|
131
|
+
*/
|
132
|
+
xmlSecKeysMngrPtr mMngr;
|
133
|
+
|
134
|
+
/**
|
135
|
+
* General certificate addition.
|
136
|
+
* @param fileName The file name
|
137
|
+
* @param format Key format
|
138
|
+
* @param isTrusted Flag, true if the key is trusted
|
139
|
+
* @return 0 on success, -1 on error
|
140
|
+
*/
|
141
|
+
int addCertFromFile (string fileName, string format, int isTrusted);
|
142
|
+
/**
|
143
|
+
* General certificate addition.
|
144
|
+
* @param cert The X509Certificate
|
145
|
+
* @param isTrusted Flag, true if the key is trusted
|
146
|
+
* @return 0 on success, -1 on error
|
147
|
+
*/
|
148
|
+
int addCert (X509CertificatePtr cert, int isTrusted);
|
149
|
+
|
150
|
+
/// @endcond
|
151
|
+
};
|
152
|
+
|
153
|
+
#include "countptr.h"
|
154
|
+
typedef CountPtrTo<KeyStore> KeyStorePtr;
|
155
|
+
|
156
|
+
#endif
|
157
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/*
|
2
|
+
* (C) Copyright 2006 VeriSign, Inc.
|
3
|
+
* Developed by Sxip Identity
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*/
|
17
|
+
#ifndef _KEYSMNGRWRAP_H
|
18
|
+
#define _KEYSMNGRWRAP_H
|
19
|
+
|
20
|
+
#include <xmlsec/keysmngr.h>
|
21
|
+
#include <assert.h>
|
22
|
+
|
23
|
+
class KeysMngr
|
24
|
+
{
|
25
|
+
public:
|
26
|
+
KeysMngr ()
|
27
|
+
: keysMngr (0)
|
28
|
+
{
|
29
|
+
keysMngr = xmlSecKeysMngrCreate();
|
30
|
+
}
|
31
|
+
|
32
|
+
~KeysMngr ()
|
33
|
+
{
|
34
|
+
if (keysMngr)
|
35
|
+
{
|
36
|
+
xmlSecKeysMngrDestroy(keysMngr);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
operator int ()
|
41
|
+
{
|
42
|
+
return keysMngr != NULL;
|
43
|
+
}
|
44
|
+
int operator! ()
|
45
|
+
{
|
46
|
+
return keysMngr == NULL;
|
47
|
+
}
|
48
|
+
xmlSecKeysMngrPtr operator-> ()
|
49
|
+
{
|
50
|
+
assert(keysMngr);
|
51
|
+
return keysMngr;
|
52
|
+
}
|
53
|
+
operator xmlSecKeysMngrPtr ()
|
54
|
+
{
|
55
|
+
return keysMngr;
|
56
|
+
}
|
57
|
+
|
58
|
+
protected:
|
59
|
+
xmlSecKeysMngrPtr keysMngr;
|
60
|
+
};
|
61
|
+
|
62
|
+
#endif
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/*
|
2
|
+
* (C) Copyright 2006 VeriSign, Inc.
|
3
|
+
* Developed by Sxip Identity
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*/
|
17
|
+
#ifndef _NODESETCTX_H
|
18
|
+
#define _NODESETCTX_H
|
19
|
+
|
20
|
+
#include <xmlsec/nodeset.h>
|
21
|
+
#include <assert.h>
|
22
|
+
|
23
|
+
class NodeSet
|
24
|
+
{
|
25
|
+
public:
|
26
|
+
NodeSet (xmlSecNodeSetPtr nodeSet)
|
27
|
+
: nodes (nodeSet)
|
28
|
+
{}
|
29
|
+
|
30
|
+
~NodeSet ()
|
31
|
+
{
|
32
|
+
if (nodes)
|
33
|
+
{
|
34
|
+
xmlSecNodeSetDestroy(nodes);
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
operator int ()
|
39
|
+
{
|
40
|
+
return nodes != NULL;
|
41
|
+
}
|
42
|
+
int operator! ()
|
43
|
+
{
|
44
|
+
return nodes == NULL;
|
45
|
+
}
|
46
|
+
xmlSecNodeSetPtr operator-> ()
|
47
|
+
{
|
48
|
+
assert(nodes);
|
49
|
+
return nodes;
|
50
|
+
}
|
51
|
+
operator xmlSecNodeSetPtr ()
|
52
|
+
{
|
53
|
+
return nodes;
|
54
|
+
}
|
55
|
+
|
56
|
+
protected:
|
57
|
+
xmlSecNodeSetPtr nodes;
|
58
|
+
};
|
59
|
+
|
60
|
+
#endif
|