Skip to content

Commit a17e8da

Browse files
committed
add SHA2 support for xmlsec-nss
1 parent 5f6c7c4 commit a17e8da

File tree

7 files changed

+836
-63
lines changed

7 files changed

+836
-63
lines changed

ChangeLog

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
1+
2010-04-25 Aleksey Sanin <aleksey@aleksey.com>
2+
* Added support for SHA256/384/512 for digest, HMAC and RSA
3+
(requires nss 3.8 + nspr 4.3 or greater)
4+
5+
2010-04-24 Aleksey Sanin <aleksey@aleksey.com>
6+
* Fix PK_CONFIG problem (reported by Roumen)
7+
* Enable --crypto for transform checks
8+
* Fix DSA support in xmlsec-nss (https://bugzilla.mozilla.org/show_bug.cgi?id=561598)
9+
110
2010-04-23 Aleksey Sanin <aleksey@aleksey.com>
2-
Enable RSA/SHA2 support in xmlsec-mscrypto
3-
Misc. cleanups in xmlsec-mscrypto
4-
Fix PK_CONFIG problem (reported by Roumen)
11+
* Enable RSA/SHA2 support in xmlsec-mscrypto
12+
* Misc. cleanups in xmlsec-mscrypto
13+
* Fix PK_CONFIG problem (reported by Roumen)
14+
* Fix DSA support in xmlsec-nss (https://bugzilla.mozilla.org/show_bug.cgi?id=561598)
515

616
2010-04-23 Aleksey Sanin <aleksey@aleksey.com>
7-
Fix search for certificates with UTF-8 subject on Windows in xmlsec-mscrypto
8-
Remove spaces at the end of lines
17+
* Fix search for certificates with UTF-8 subject on Windows in xmlsec-mscrypto
18+
* Remove spaces at the end of lines
919

1020
2010-04-22 Aleksey Sanin <aleksey@aleksey.com>
11-
Fix search for certificates with Unicode subject on Windows in xmlsec-mscrypto
12-
Copy *.manifest files to installation for Windows builds
13-
Convert tabs to spaces
21+
* Fix search for certificates with Unicode subject on Windows in xmlsec-mscrypto
22+
* Copy *.manifest files to installation for Windows builds
23+
* Convert tabs to spaces
1424

1525
2010-04-21 Aleksey Sanin <aleksey@aleksey.com>
1626
* Fix key name conversion to unicode problem in xmlsec-mscrypto

configure.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,8 +546,8 @@ dnl ==========================================================================
546546

547547
XMLSEC_NO_NSS="1"
548548
MOZILLA_MIN_VERSION="1.4"
549-
NSS_MIN_VERSION="3.2"
550-
NSPR_MIN_VERSION="4.0"
549+
NSS_MIN_VERSION="3.8"
550+
NSPR_MIN_VERSION="4.3"
551551
NSS_CFLAGS=""
552552
NSS_LIBS=""
553553
NSS_LIBS_LIST="-lnss3 -lsmime3"

include/xmlsec/nss/crypto.h

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecNssKeyDataHmacGetKlass (void);
206206
XMLSEC_CRYPTO_EXPORT int xmlSecNssKeyDataHmacSet (xmlSecKeyDataPtr data,
207207
const xmlSecByte* buf,
208208
xmlSecSize bufSize);
209+
#ifndef XMLSEC_NO_MD5
209210
/**
210211
* xmlSecNssTransformHmacMd5Id:
211212
*
@@ -214,7 +215,9 @@ XMLSEC_CRYPTO_EXPORT int xmlSecNssKeyDataHmacSet (xmlSecK
214215
#define xmlSecNssTransformHmacMd5Id \
215216
xmlSecNssTransformHmacMd5GetKlass()
216217
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacMd5GetKlass(void);
218+
#endif /* XMLSEC_NO_MD5 */
217219

220+
#ifndef XMLSEC_NO_RIPEMD160
218221
/**
219222
* xmlSecNssTransformHmacRipemd160Id:
220223
*
@@ -223,7 +226,9 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacMd5GetKlass(void);
223226
#define xmlSecNssTransformHmacRipemd160Id \
224227
xmlSecNssTransformHmacRipemd160GetKlass()
225228
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacRipemd160GetKlass(void);
229+
#endif /* XMLSEC_NO_RIPEMD160 */
226230

231+
#ifndef XMLSEC_NO_SHA1
227232
/**
228233
* xmlSecNssTransformHmacSha1Id:
229234
*
@@ -232,6 +237,40 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacRipemd160GetKlass(v
232237
#define xmlSecNssTransformHmacSha1Id \
233238
xmlSecNssTransformHmacSha1GetKlass()
234239
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha1GetKlass(void);
240+
#endif /* XMLSEC_NO_SHA1 */
241+
242+
#ifndef XMLSEC_NO_SHA256
243+
/**
244+
* xmlSecNssTransformHmacSha256Id:
245+
*
246+
* The HMAC with SHA256 signature transform klass.
247+
*/
248+
#define xmlSecNssTransformHmacSha256Id \
249+
xmlSecNssTransformHmacSha256GetKlass()
250+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha256GetKlass(void);
251+
#endif /* XMLSEC_NO_SHA256 */
252+
253+
#ifndef XMLSEC_NO_SHA384
254+
/**
255+
* xmlSecNssTransformHmacSha384Id:
256+
*
257+
* The HMAC with SHA384 signature transform klass.
258+
*/
259+
#define xmlSecNssTransformHmacSha384Id \
260+
xmlSecNssTransformHmacSha384GetKlass()
261+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha384GetKlass(void);
262+
#endif /* XMLSEC_NO_SHA384 */
263+
264+
#ifndef XMLSEC_NO_SHA512
265+
/**
266+
* xmlSecNssTransformHmacSha512Id:
267+
*
268+
* The HMAC with SHA512 signature transform klass.
269+
*/
270+
#define xmlSecNssTransformHmacSha512Id \
271+
xmlSecNssTransformHmacSha512GetKlass()
272+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha512GetKlass(void);
273+
#endif /* XMLSEC_NO_SHA512 */
235274

236275

237276
#endif /* XMLSEC_NO_HMAC */
@@ -253,6 +292,7 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformHmacSha1GetKlass(void);
253292
xmlSecNssKeyDataRsaGetKlass()
254293
XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecNssKeyDataRsaGetKlass (void);
255294

295+
#ifndef XMLSEC_NO_SHA1
256296
/**
257297
* xmlSecNssTransformRsaSha1Id:
258298
*
@@ -261,6 +301,41 @@ XMLSEC_CRYPTO_EXPORT xmlSecKeyDataId xmlSecNssKeyDataRsaGetKlass (void);
261301
#define xmlSecNssTransformRsaSha1Id \
262302
xmlSecNssTransformRsaSha1GetKlass()
263303
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha1GetKlass(void);
304+
#endif /* XMLSEC_NO_SHA1 */
305+
306+
#ifndef XMLSEC_NO_SHA256
307+
/**
308+
* xmlSecNssTransformRsaSha256Id:
309+
*
310+
* The RSA-SHA256 signature transform klass.
311+
*/
312+
#define xmlSecNssTransformRsaSha256Id \
313+
xmlSecNssTransformRsaSha256GetKlass()
314+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha256GetKlass(void);
315+
#endif /* XMLSEC_NO_SHA256 */
316+
317+
#ifndef XMLSEC_NO_SHA384
318+
/**
319+
* xmlSecNssTransformRsaSha384Id:
320+
*
321+
* The RSA-SHA384 signature transform klass.
322+
*/
323+
#define xmlSecNssTransformRsaSha384Id \
324+
xmlSecNssTransformRsaSha384GetKlass()
325+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha384GetKlass(void);
326+
#endif /* XMLSEC_NO_SHA384 */
327+
328+
#ifndef XMLSEC_NO_SHA512
329+
/**
330+
* xmlSecNssTransformRsaSha512Id:
331+
*
332+
* The RSA-SHA512 signature transform klass.
333+
*/
334+
#define xmlSecNssTransformRsaSha512Id \
335+
xmlSecNssTransformRsaSha512GetKlass()
336+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaSha512GetKlass(void);
337+
#endif /* XMLSEC_NO_SHA512 */
338+
264339

265340
/**
266341
* xmlSecNssTransformRsaPkcs1Id:
@@ -304,6 +379,55 @@ XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformRsaOaepGetKlass(void);
304379
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformSha1GetKlass (void);
305380
#endif /* XMLSEC_NO_SHA1 */
306381

382+
/********************************************************************
383+
*
384+
* SHA256 transform
385+
*
386+
*******************************************************************/
387+
#ifndef XMLSEC_NO_SHA256
388+
/**
389+
* xmlSecNssTransformSha256Id:
390+
*
391+
* The SHA256 digest transform klass.
392+
*/
393+
#define xmlSecNssTransformSha256Id \
394+
xmlSecNssTransformSha256GetKlass()
395+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformSha256GetKlass(void);
396+
#endif /* XMLSEC_NO_SHA256 */
397+
398+
/********************************************************************
399+
*
400+
* SHA384 transform
401+
*
402+
*******************************************************************/
403+
#ifndef XMLSEC_NO_SHA384
404+
/**
405+
* xmlSecNssTransformSha384Id:
406+
*
407+
* The SHA384 digest transform klass.
408+
*/
409+
#define xmlSecNssTransformSha384Id \
410+
xmlSecNssTransformSha384GetKlass()
411+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformSha384GetKlass(void);
412+
#endif /* XMLSEC_NO_SHA384 */
413+
414+
/********************************************************************
415+
*
416+
* SHA512 transform
417+
*
418+
*******************************************************************/
419+
#ifndef XMLSEC_NO_SHA512
420+
/**
421+
* xmlSecNssTransformSha512Id:
422+
*
423+
* The SHA512 digest transform klass.
424+
*/
425+
#define xmlSecNssTransformSha512Id \
426+
xmlSecNssTransformSha512GetKlass()
427+
XMLSEC_CRYPTO_EXPORT xmlSecTransformId xmlSecNssTransformSha512GetKlass(void);
428+
#endif /* XMLSEC_NO_SHA512 */
429+
430+
307431
#ifdef __cplusplus
308432
}
309433
#endif /* __cplusplus */

src/nss/crypto.c

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@ xmlSecCryptoGetFunctions_nss(void) {
9494
/**
9595
* Crypto transforms ids
9696
*/
97+
98+
/******************************* AES ********************************/
9799
#ifndef XMLSEC_NO_AES
98100
gXmlSecNssFunctions->transformAes128CbcGetKlass = xmlSecNssTransformAes128CbcGetKlass;
99101
gXmlSecNssFunctions->transformAes192CbcGetKlass = xmlSecNssTransformAes192CbcGetKlass;
@@ -103,23 +105,65 @@ xmlSecCryptoGetFunctions_nss(void) {
103105
gXmlSecNssFunctions->transformKWAes256GetKlass = xmlSecNssTransformKWAes256GetKlass;
104106
#endif /* XMLSEC_NO_AES */
105107

108+
/******************************* DES ********************************/
106109
#ifndef XMLSEC_NO_DES
107110
gXmlSecNssFunctions->transformDes3CbcGetKlass = xmlSecNssTransformDes3CbcGetKlass;
108111
gXmlSecNssFunctions->transformKWDes3GetKlass = xmlSecNssTransformKWDes3GetKlass;
109112
#endif /* XMLSEC_NO_DES */
110113

114+
/******************************* DSA ********************************/
111115
#ifndef XMLSEC_NO_DSA
112116
gXmlSecNssFunctions->transformDsaSha1GetKlass = xmlSecNssTransformDsaSha1GetKlass;
113117
#endif /* XMLSEC_NO_DSA */
114118

119+
/******************************* HMAC ********************************/
115120
#ifndef XMLSEC_NO_HMAC
116-
gXmlSecNssFunctions->transformHmacSha1GetKlass = xmlSecNssTransformHmacSha1GetKlass;
117-
gXmlSecNssFunctions->transformHmacRipemd160GetKlass = xmlSecNssTransformHmacRipemd160GetKlass;
121+
122+
#ifndef XMLSEC_NO_MD5
118123
gXmlSecNssFunctions->transformHmacMd5GetKlass = xmlSecNssTransformHmacMd5GetKlass;
124+
#endif /* XMLSEC_NO_MD5 */
125+
126+
#ifndef XMLSEC_NO_RIPEMD160
127+
gXmlSecNssFunctions->transformHmacRipemd160GetKlass = xmlSecNssTransformHmacRipemd160GetKlass;
128+
#endif /* XMLSEC_NO_RIPEMD160 */
129+
130+
#ifndef XMLSEC_NO_SHA1
131+
gXmlSecNssFunctions->transformHmacSha1GetKlass = xmlSecNssTransformHmacSha1GetKlass;
132+
#endif /* XMLSEC_NO_SHA1 */
133+
134+
#ifndef XMLSEC_NO_SHA256
135+
gXmlSecNssFunctions->transformHmacSha256GetKlass = xmlSecNssTransformHmacSha256GetKlass;
136+
#endif /* XMLSEC_NO_SHA256 */
137+
138+
#ifndef XMLSEC_NO_SHA384
139+
gXmlSecNssFunctions->transformHmacSha384GetKlass = xmlSecNssTransformHmacSha384GetKlass;
140+
#endif /* XMLSEC_NO_SHA384 */
141+
142+
#ifndef XMLSEC_NO_SHA512
143+
gXmlSecNssFunctions->transformHmacSha512GetKlass = xmlSecNssTransformHmacSha512GetKlass;
144+
#endif /* XMLSEC_NO_SHA512 */
145+
119146
#endif /* XMLSEC_NO_HMAC */
120147

148+
/******************************* RSA ********************************/
121149
#ifndef XMLSEC_NO_RSA
150+
151+
#ifndef XMLSEC_NO_SHA1
122152
gXmlSecNssFunctions->transformRsaSha1GetKlass = xmlSecNssTransformRsaSha1GetKlass;
153+
#endif /* XMLSEC_NO_SHA1 */
154+
155+
#ifndef XMLSEC_NO_SHA256
156+
gXmlSecNssFunctions->transformRsaSha256GetKlass = xmlSecNssTransformRsaSha256GetKlass;
157+
#endif /* XMLSEC_NO_SHA256 */
158+
159+
#ifndef XMLSEC_NO_SHA384
160+
gXmlSecNssFunctions->transformRsaSha384GetKlass = xmlSecNssTransformRsaSha384GetKlass;
161+
#endif /* XMLSEC_NO_SHA384 */
162+
163+
#ifndef XMLSEC_NO_SHA512
164+
gXmlSecNssFunctions->transformRsaSha512GetKlass = xmlSecNssTransformRsaSha512GetKlass;
165+
#endif /* XMLSEC_NO_SHA512 */
166+
123167
gXmlSecNssFunctions->transformRsaPkcs1GetKlass = xmlSecNssTransformRsaPkcs1GetKlass;
124168

125169
/* RSA OAEP is not supported by NSS yet */
@@ -129,9 +173,20 @@ xmlSecCryptoGetFunctions_nss(void) {
129173

130174
#endif /* XMLSEC_NO_RSA */
131175

176+
/******************************* SHA ********************************/
132177
#ifndef XMLSEC_NO_SHA1
133178
gXmlSecNssFunctions->transformSha1GetKlass = xmlSecNssTransformSha1GetKlass;
134179
#endif /* XMLSEC_NO_SHA1 */
180+
#ifndef XMLSEC_NO_SHA256
181+
gXmlSecNssFunctions->transformSha256GetKlass = xmlSecNssTransformSha256GetKlass;
182+
#endif /* XMLSEC_NO_SHA256 */
183+
#ifndef XMLSEC_NO_SHA384
184+
gXmlSecNssFunctions->transformSha384GetKlass = xmlSecNssTransformSha384GetKlass;
185+
#endif /* XMLSEC_NO_SHA384 */
186+
#ifndef XMLSEC_NO_SHA512
187+
gXmlSecNssFunctions->transformSha512GetKlass = xmlSecNssTransformSha512GetKlass;
188+
#endif /* XMLSEC_NO_SHA512 */
189+
135190

136191
/**
137192
* High level routines form xmlsec command line utility

0 commit comments

Comments
 (0)