Compare commits

..

1193 Commits

Author SHA1 Message Date
rrelyea%redhat.com
39d2eeadb5 Make building and using a local sqlite3 default.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@227924 18797224-902f-48f8-a5cc-f745e15eee43
2007-06-12 23:07:48 +00:00
rrelyea%redhat.com
f74a40f7df Handle system 5 gettimeofday.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@227917 18797224-902f-48f8-a5cc-f745e15eee43
2007-06-12 22:01:20 +00:00
rrelyea%redhat.com
4b31109f00 Include Makefile in
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@227906 18797224-902f-48f8-a5cc-f745e15eee43
2007-06-12 21:29:34 +00:00
rrelyea%redhat.com
2e09e0e5fc NSS copy of sqlite3
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@227497 18797224-902f-48f8-a5cc-f745e15eee43
2007-06-04 23:02:09 +00:00
rrelyea%redhat.com
0665ad119e Build shareddb on windows.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@227291 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-30 22:06:27 +00:00
rrelyea%redhat.com
d7b9d894f6 1) Sharing db handles across threads should not be the default.
2) add back in the sensitive attribute checking


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@227289 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-30 22:00:14 +00:00
rrelyea%redhat.com
dabee342b8 fix update bug in SDR. Export the CKA_ID of the key
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@226629 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-18 23:22:53 +00:00
rrelyea%redhat.com
c6d26613e8 Changes to shared db doesn't kill performance.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@226627 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-18 23:08:27 +00:00
rrelyea%redhat.com
9b5c615213 Add CKA_NSS_OVERRIDE_EXTENSIONS attribute.
rename CK?_NETSCAPE_* to CK?_NSS_*. Keep the old names for older code.
Fix password update in the legacydb case.


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@226551 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-17 01:08:18 +00:00
rrelyea%redhat.com
56849861da include the legacydb manifest file
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@226483 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-15 23:02:22 +00:00
rrelyea%redhat.com
261c99b079 Add database upgrade support.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@226480 18797224-902f-48f8-a5cc-f745e15eee43
2007-05-15 21:59:52 +00:00
rrelyea%redhat.com
7fb0950700 Add support to dbm databases as a separate shared library.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@224109 18797224-902f-48f8-a5cc-f745e15eee43
2007-04-03 22:50:02 +00:00
rrelyea%redhat.com
eaaf175c61 Fix change password support.
Add database reset support.


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@221993 18797224-902f-48f8-a5cc-f745e15eee43
2007-03-16 23:01:41 +00:00
rrelyea%redhat.com
726fba2c84 C_FindObjectInit should return all objects when NULL is passed.
(pk11mode found this error). With this all.sh passes with the new db code.


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@221587 18797224-902f-48f8-a5cc-f745e15eee43
2007-03-08 23:11:34 +00:00
rrelyea%redhat.com
7e4c9a0b96 Roll the current tip changes into my branch.
Fix the semantics of transaction processing. This helps keep a more consistant
 view of the database. Only the thread the transaction is on sees the
 transaction database. Other threads continue to get their own database, so
 they can continue to work, reading the old changes untill the transaction
 is committed.


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@221518 18797224-902f-48f8-a5cc-f745e15eee43
2007-03-08 02:19:56 +00:00
rrelyea%redhat.com
f86085f1ae Get a fresh pull to build correctly.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@221090 18797224-902f-48f8-a5cc-f745e15eee43
2007-02-28 20:44:55 +00:00
rrelyea%redhat.com
6d11469725 restore headers needed to build.
Use the correct define for key info structures.


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@221052 18797224-902f-48f8-a5cc-f745e15eee43
2007-02-28 02:25:49 +00:00
rrelyea%redhat.com
0036aa950d Fix stupid unitialized bugs.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@221039 18797224-902f-48f8-a5cc-f745e15eee43
2007-02-28 00:06:57 +00:00
rrelyea%redhat.com
ffd1f975a8 1) Use NSPR's access function rather than building our own.
2) Automatically search use the S/MIME entries to find certs that match a given
email address.


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@218412 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-16 00:20:54 +00:00
rrelyea%redhat.com
2837980869 Remove legacy db files.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@218229 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-11 22:50:31 +00:00
rrelyea%redhat.com
11c4e71dda Initial work for Shared Database support.
The following still need works:
Shared db design not yet approved or completely finished.

Shared db code issues.
   1) there are still race conditions in sdb.c. The temporary locks
   allow strsclient with client auth to pass all.sh.
   2) signtool still does not pass all.sh.
   3) multiple email addresses in the cert do no pass all.sh.
   4) change password does not yet work (NOTE: no all.sh tests for this yet)
   5) current secmod.db code uses stdio libraries rather than NSPR.
   6) need to make secmod.db work with 'foreign' secmod.db's (Windows & Mac)
   7) a number of random FIXME's still in the code.
   8) Need answer to where to get sqlite3 on platforms that don't come with it.

legacy db support
   1) no legacy db support exists in this code base yet.
   2) no database update code exists.
   3) all.sh needs to test shared database as well as legacy db (currently the code only does shared, so existing all.sh tests just the shared).


git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@218228 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-11 22:47:57 +00:00
(no author)
f07ee360a9 This commit was manufactured by cvs2svn to create branch 'NSS_BOB_SHARED'.
git-svn-id: svn://10.0.0.236/branches/NSS_BOB_SHARED@217791 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-05 00:21:46 +00:00
alexei.volkov.bugs%sun.com
85697cdac7 353780: Klocwork NULL ptr dereferences in pkcs11.c. r=nelson
git-svn-id: svn://10.0.0.236/trunk@217790 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-05 00:21:45 +00:00
brendan%mozilla.org
10b034cc1a Fast followup for 365851: use MARK_ID instead of its expansion.
git-svn-id: svn://10.0.0.236/trunk@217789 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-05 00:14:39 +00:00
alexei.volkov.bugs%sun.com
60253eab1a 340218: Coverity 910, memory leaks in CRMF code. r=nelson
git-svn-id: svn://10.0.0.236/trunk@217787 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-05 00:00:50 +00:00
lpsolit%gmail.com
d908e39162 Bug 362066: strict_isolation: cannot remove users from the bug if their privs changed so that they can no longer edit bugs in the product - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=myk
git-svn-id: svn://10.0.0.236/trunk@217786 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 23:37:19 +00:00
ghendricks%novell.com
34ca6a661f Create a test case from a bug.
git-svn-id: svn://10.0.0.236/trunk@217784 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 22:45:11 +00:00
alexei.volkov.bugs%sun.com
43e28046c8 301496: NSS_Shutdown failure in p7sign. r=nelson
git-svn-id: svn://10.0.0.236/trunk@217782 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 22:42:40 +00:00
graydon%mozilla.com
3998c66e23 Bug 333078: XPCOM cycle collector
r=brendan, sicking, bz, dbaron, bsmedberg


git-svn-id: svn://10.0.0.236/trunk@217781 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 22:31:26 +00:00
despotdaemon
6874e8c16c Pseudo-automatic update of changes made by dbaron@dbaron.org.
git-svn-id: svn://10.0.0.236/trunk@217780 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 22:29:53 +00:00
brendan%mozilla.org
e3d844f7cf Stage 0 patch for getter/setter optimizations (365851, r=igor).
git-svn-id: svn://10.0.0.236/trunk@217778 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 21:15:09 +00:00
alexei.volkov.bugs%sun.com
25c1501389 342461 - verify signature on an OCSP response without intermediate decoding and encoding. r=nelson
git-svn-id: svn://10.0.0.236/trunk@217777 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:38:29 +00:00
alexei.volkov.bugs%sun.com
2a5c39463b Bug 158242: PK11_PutCRL is very memory inefficient. r=nelson, julien
git-svn-id: svn://10.0.0.236/trunk@217774 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:25:41 +00:00
despotdaemon
09deea823f Pseudo-automatic update of changes made by pavlov@pavlov.net.
git-svn-id: svn://10.0.0.236/trunk@217773 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:21:19 +00:00
alexei.volkov.bugs%sun.com
f5741042f8 Bug 363987: crlutil does not change thisUpdate date when creating a modified CRL. r=nelson,neil
git-svn-id: svn://10.0.0.236/trunk@217772 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:18:58 +00:00
gavin%gavinsharp.com
d039b77914 Bug 365773: radiogroup.selectedItem = null fails if group is focused, patch by Wladimir Palant <trev@gtchat.de>, r=neil
git-svn-id: svn://10.0.0.236/trunk@217771 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:08:52 +00:00
alexei.volkov.bugs%sun.com
343934c671 Bug 363480 ocspclnt needs option to take cert from specified file. r=nelson
git-svn-id: svn://10.0.0.236/trunk@217770 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:07:33 +00:00
aaronr%us.ibm.com
ddf9863db0 [XForms] xsi:type value with no prefix handled incorrectly. Bug 360974, r=doronr+olli
git-svn-id: svn://10.0.0.236/trunk@217769 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:07:03 +00:00
despotdaemon
8972401ee0 Pseudo-automatic update of changes made by asqueella@gmail.com.
git-svn-id: svn://10.0.0.236/trunk@217768 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:06:37 +00:00
gavin%gavinsharp.com
ec74140a3f Bug 360241: Add a buch of accesskeys to Publishing dialogs/tabs, patch by Giacomo Magnini <prometeo.bugs@gmail.com>, r=glazou, sr=neil
git-svn-id: svn://10.0.0.236/trunk@217767 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:05:18 +00:00
gavin%gavinsharp.com
b6d3618231 Bug 325906: Remove one malloc from the JPEG decoder, and some optimizations, patch by Alfred Kayser <alfredkayser@nl.ibm.com>, updated by Ryan VanderMeulen <ryanvm@gmail.com>, r=alfredkayser, sr=pavlov
git-svn-id: svn://10.0.0.236/trunk@217766 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:03:50 +00:00
gavin%gavinsharp.com
4861a0ff57 Bug 365615: remove unnecessary CSS from downloads.css, patch by Declan Naughton <piratepenguin@gmail.com>, r=me
git-svn-id: svn://10.0.0.236/trunk@217765 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:01:10 +00:00
cltbld
2681bcee34 Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@217764 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 20:01:03 +00:00
gavin%gavinsharp.com
ae2c58657a Bug 364049: add configure check for broken msvc7.1 compilers, patch by Mook <mook.moz+sites.org.mozilla.bugzilla@gmail.com>, r=bsmedberg, sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217763 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 19:59:15 +00:00
despotdaemon
903fe322bb Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217762 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 19:57:49 +00:00
mozilla%weilbacher.org
7d72e49ecd [OS/2] Bug 222509: report the correct DOM_VK constants so that JS apps work better, r=mkaply
git-svn-id: svn://10.0.0.236/trunk@217760 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 19:49:04 +00:00
gavin%gavinsharp.com
40c5978ac1 Bug 365329: string to date conversion returns wrong value for dates in february when run after 28th of each month, patch by Magnus Melin <mkmelin+mozilla@iki.fi>, r=neil, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@217758 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 19:48:04 +00:00
dietrich%mozilla.com
b55e441f57 Bug 364972 [SessionStore] allow SessionStore to work without writing data to disk (for zeniko, r=dietrich)
git-svn-id: svn://10.0.0.236/trunk@217753 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 19:26:37 +00:00
glen.beasley%sun.com
e3ccc4b5e3 update error codes to NSS r=wtc
git-svn-id: svn://10.0.0.236/trunk@217749 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 19:08:47 +00:00
gavin%gavinsharp.com
ef40f655ef Bug 365381: treat <method><body/></method> XBL as 'function () {}' instead of ignoring it, r+sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217745 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:56:00 +00:00
gavin%gavinsharp.com
120ebebc31 Bug 364903: Error page 'Try Again' button doesn't dim once pressed, r=neil, sr=bzbarksy
git-svn-id: svn://10.0.0.236/trunk@217744 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:53:28 +00:00
gavin%gavinsharp.com
7116c82f58 Bug 365633: Non-localizable string when checking for updates to add-ons, patch by Ryan Jones <bugs@ryan-jones.com>, r=me
git-svn-id: svn://10.0.0.236/trunk@217743 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:51:40 +00:00
gavin%gavinsharp.com
85761db8d8 Bug 365529: Take advantage of new yes/no constant in nsIPrompt, patch by Ryan Jones <bugs@ryan-jones.com>, r+sr=biesi for /netwerk, r+sr=neil for mailnews, r=me for the rest
git-svn-id: svn://10.0.0.236/trunk@217742 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:48:53 +00:00
gavin%gavinsharp.com
22d2dce1af Bug 361154: Drop support for pre-Win2k platforms from Win32 widgets, patch by Ryan Jones <bugs@ryan-jones.com>, r=ere, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217741 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:43:26 +00:00
benjamin%smedbergs.us
8a002f032b Bug 364599 - Some newly-created profile files are write protected (build-system fix), r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@217740 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:38:06 +00:00
gavin%gavinsharp.com
89aaaa248c Followup patch for bug 269254: make sure not to include the null terminator in the string's length, patch by Ryan Jones <bugs@ryan-jones.com>, r+sr=biesi
git-svn-id: svn://10.0.0.236/trunk@217739 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:37:00 +00:00
gavin%gavinsharp.com
d725f5d1d5 Bug 363097: Make copy of Win32 REDIST files work with MSYS, patch by Bruno 'Aqualon' Escherl <aqualon@aquachan.de>, r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@217738 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:32:57 +00:00
gavin%gavinsharp.com
5a7c013b7b Bug 328357: Codesize reduction of nsAppRunner.obj, patch by Alfred Kayser <alfredkayser@nl.ibm.com>, r=bsmedberg, sr=neil
git-svn-id: svn://10.0.0.236/trunk@217737 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:28:49 +00:00
gavin%gavinsharp.com
b69ce443af Bug 343296: Spell-checker requires text cursor to be in word to get context menu, patch by smorgan <stuart.morgan@alumni.case.edu>, r=murph, sr=pink
git-svn-id: svn://10.0.0.236/trunk@217736 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:19:22 +00:00
gavin%gavinsharp.com
f167d5e65f Bug 342885: Session restore launches even when I haven't crashed, patch by Simon Bünzli <zeniko@gmail.com>, r=me, sr=neil
git-svn-id: svn://10.0.0.236/trunk@217735 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 18:00:32 +00:00
lpsolit%gmail.com
206d547364 Bug 364216: Flag::retarget() is broken (again) - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=myk
git-svn-id: svn://10.0.0.236/trunk@217732 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 17:48:17 +00:00
benjamin%smedbergs.us
074a1e46a0 Remove unused client.mk-like files.
git-svn-id: svn://10.0.0.236/trunk@217730 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 17:24:08 +00:00
benjamin%smedbergs.us
667c52d8e2 Bug 363942 - MozillaBuild needs to handle MSVC8 express + SDK, r=luser
git-svn-id: svn://10.0.0.236/trunk@217729 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 17:06:35 +00:00
uriber%gmail.com
4ddde0e089 Bug 200098: Double click near beginning of word selects two words (fix for Windows). r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217728 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 16:47:04 +00:00
despotdaemon
f0e1406347 Pseudo-automatic update of changes made by pavlov@pavlov.net.
git-svn-id: svn://10.0.0.236/trunk@217727 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 16:43:57 +00:00
benjamin%smedbergs.us
6430c736f2 Bug 365691 - Useful error message and conversion tool to move a srcdir from cygwin textmode to MSYS binmode - r=dbaron
git-svn-id: svn://10.0.0.236/trunk@217726 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 16:30:04 +00:00
cbiesinger%web.de
5bdaa34e24 Bug 309429 use QueryInterface rather than static_cast where the exact type
isn't known
patch by Nickolay Ponomarev <asqueella@gmail.com>/Jan Varga r=bz sr=neil


git-svn-id: svn://10.0.0.236/trunk@217725 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 16:23:48 +00:00
tor%cs.brown.edu
2d2f675cc3 Bug 360316 - Avoid group opacity when possible. r=jwatt, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217724 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 15:05:39 +00:00
tor%cs.brown.edu
9a3460d709 Bug 364811 - svg:svg not live to length modifications. r=jwatt, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217723 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 14:39:54 +00:00
peterv%propagandism.org
5ac72b9307 Fix for bug 329111 (nsChromeRegistry::SetProviderForPackage has NS_ENSURE_TRUE(rv, rv)). r=bsmedberg, sr=bz.
git-svn-id: svn://10.0.0.236/trunk@217720 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 12:16:08 +00:00
jwatt%jwatt.org
c08a026ac8 Fixing bug 334587. Unify event handling for links and fix various XLink bugs. r=olli.pettay@gmail.com, r=dbaron@mozilla.com, sr=bugmail@sicking.cc
git-svn-id: svn://10.0.0.236/trunk@217719 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 10:53:59 +00:00
Olli.Pettay%helsinki.fi
d8d314d9b0 Bug 365798, IME leaks nsPrivateTextRangeList objects, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217718 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 10:32:10 +00:00
scott%scott-macgregor.org
6a6cf3d925 Bug #336412 --> first names or surnames disappear after sending a message. r=mark banner
git-svn-id: svn://10.0.0.236/trunk@217715 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 05:40:36 +00:00
dbaron%dbaron.org
cd06827bdd Restore code to refresh scrolledContentSize between horizontal and vertical scrollbar manipulation. b=330673 r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217713 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 04:44:42 +00:00
dbaron%dbaron.org
a6fe0f6902 Fix incorrect comments. b=363807 r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217712 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 04:27:36 +00:00
scott%scott-macgregor.org
85991edf9d Bug #359900 --> ship gmail.rdf in Thunderbird. remove obsolete rdf files (example and nswebmail)
sr=bienvenu


git-svn-id: svn://10.0.0.236/trunk@217709 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 04:19:08 +00:00
reed%reedloden.com
959c99db95 Bug 354563 - [p=reed r=bear r=timeless]
git-svn-id: svn://10.0.0.236/trunk@217707 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 02:42:30 +00:00
despotdaemon
306d96c6e1 Pseudo-automatic update of changes made by pavlov@pavlov.net.
git-svn-id: svn://10.0.0.236/trunk@217706 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 02:03:24 +00:00
roc+%cs.cmu.edu
adae28a836 Bug 365695. Fix bad usage of MAC_OS_X_VERSION_10_4. r=vlad
git-svn-id: svn://10.0.0.236/trunk@217705 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 01:48:37 +00:00
ghendricks%novell.com
baae7f9857 Replace individual lookups with single quicksearch field.
git-svn-id: svn://10.0.0.236/trunk@217704 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 00:17:18 +00:00
mattwillis%gmail.com
cdee422ce1 bug 360659 - Fixes 'NS_ERROR_FILE_UNRECOGNIZED_PATH' error in migrator. Patch by Sebastian Schwieger <sebastian.schwieger@googlemail.com>, r1=lilmatt, r2=jminta
git-svn-id: svn://10.0.0.236/trunk@217703 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 00:13:30 +00:00
mkanat%bugzilla.org
46f5661a3c Bug 365229: email_in.pl modifies bug permissions without user entering fields
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=myk


git-svn-id: svn://10.0.0.236/trunk@217702 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-04 00:08:05 +00:00
neil.williams%sun.com
cf6970b3e9 Bug 339906, r=nelson, sec_pkcs12_install_bags passes uninitialized variables
git-svn-id: svn://10.0.0.236/trunk@217700 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 23:02:12 +00:00
bienvenu%nventure.com
0c572e07af fix increasingly slow autocomplete when user has mailing lists in ab by not adding sub-directories to mSubDirectories if we already have them, 363113, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@217699 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 21:41:43 +00:00
bent.mozilla%gmail.com
0164d4a1d8 Bug 362597 - "Increased Rlk (leak) on balsa after landing of bug 354787". r=bsmedberg.
git-svn-id: svn://10.0.0.236/trunk@217698 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 20:40:51 +00:00
despotdaemon
d854be1ab8 Pseudo-automatic update of changes made by graydon@mozilla.com.
git-svn-id: svn://10.0.0.236/trunk@217697 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 20:36:56 +00:00
tor%cs.brown.edu
73a2627706 Bug 365704 - Remove nsSVGAtoms.h. r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217696 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 20:15:38 +00:00
despotdaemon
02530cd38d Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217695 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 20:00:49 +00:00
Olli.Pettay%helsinki.fi
16c1b7501d Bug 176024, possible memleak in IMETextTxn::CollapseTextSelection, r+sr=bz
git-svn-id: svn://10.0.0.236/trunk@217694 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 19:39:28 +00:00
bugzilla%standard8.demon.co.uk
11f759c8eb Bug 361203 Suiterunner: More Information button doesn't work on Smart Browsing pane. r=KaiRo,sr=Neil
git-svn-id: svn://10.0.0.236/trunk@217693 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 18:57:20 +00:00
despotdaemon
39f1768dc9 Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217692 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 18:51:38 +00:00
rhelmer%mozilla.com
08e015964e add check for read-only files r=tfullhart sr=rcampbell
git-svn-id: svn://10.0.0.236/trunk@217691 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 17:55:13 +00:00
gijskruitbosch%gmail.com
2371be1bec Bug 361914 - multiline send regression caused by fix.
r=silver@warwickcompsoc.co.uk (James Ross) on IRC
ChatZilla Only, NPOTB.


git-svn-id: svn://10.0.0.236/trunk@217690 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 17:34:31 +00:00
lpsolit%gmail.com
53b38b69a5 Bug 365739: An error is thrown when attaching a too big file on bug creation - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217689 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 16:23:14 +00:00
bienvenu%nventure.com
a48bf4992a fix 363094, with autcompleteToMyDomain set, we still append domain to addresses that have @ in them (in some cases), sr=mscott
git-svn-id: svn://10.0.0.236/trunk@217687 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 15:52:38 +00:00
peterv%propagandism.org
5934551e2b Fix for bug 365597 (Crash [@ nsINodeInfo::NodeInfoManager]). r/sr=sicking.
git-svn-id: svn://10.0.0.236/trunk@217685 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 13:36:18 +00:00
nelson%bolyard.com
faa99150f6 Bug 256046. Don't prefix with $(JAVA_DESTPATH)/ if it's undefined.
r=Glen.beasley,neil.williams


git-svn-id: svn://10.0.0.236/trunk@217684 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 13:07:47 +00:00
nelson%bolyard.com
c4995ca9fc Bug 353904. Fix potential NULL ptr deref. Klocwork. r=alexei.volkov
git-svn-id: svn://10.0.0.236/trunk@217683 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 12:57:41 +00:00
nelson%bolyard.com
80b2615268 Bug 354423. Get the right string length. R=alexei.volkov,rrelyea
git-svn-id: svn://10.0.0.236/trunk@217682 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 12:54:10 +00:00
lpsolit%gmail.com
e947b7f4b6 Bug 365696: Posting a new bug via email_in.pl fails due to typo in default platform and severity - Patch by Albert Ting <altlst@sonic.net> r=mkanat a=myk
git-svn-id: svn://10.0.0.236/trunk@217681 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 10:50:26 +00:00
longsonr%gmail.com
d569fe36f1 Bug 363583 - remove non-standard getConsolidationMatrix function from SVG DOM r=jwatt,sr=roc
git-svn-id: svn://10.0.0.236/trunk@217679 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 09:54:08 +00:00
m_kato%ga2.so-net.ne.jp
2cccc181e5 bug 364731 - Windows x64 porting of bug 349002 - Refactor xptcall into a frozen API. r=benjamin, sr=dougt
git-svn-id: svn://10.0.0.236/trunk@217678 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 08:30:34 +00:00
bmlk%gmx.de
3185892a10 remove TableProcessChild, this creates a single codepath trough ProcessChildren for frame construction bug 243159 2. attempt r=rbs sr=bz
git-svn-id: svn://10.0.0.236/trunk@217677 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 07:18:54 +00:00
stridey%gmail.com
92c61ab764 Bug 365603: Updating copyright dates for 2007. Patches by ardissone <alqahira@ardisson.org> r=wevah sr=smorgan.
git-svn-id: svn://10.0.0.236/trunk@217674 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 06:25:36 +00:00
philringnalda%gmail.com
479eb2d1a8 Bug 365569: remove workaround from bug 297227, r=mento
git-svn-id: svn://10.0.0.236/trunk@217673 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 06:02:39 +00:00
stridey%gmail.com
f38fd73a5e Camino only - Bug 363895: Make history menu items respect cmd/shift toggles when pressed after menu is already shown (ie, alternates). r=cl sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@217672 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 05:59:41 +00:00
Olli.Pettay%helsinki.fi
380e37d9af Bug 364398, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@217671 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 05:37:03 +00:00
nelson%bolyard.com
e14af33a7a Improve checking of received SSL2 records.
Bug 364319, bug 364323. r=rrelyea, wtchang


git-svn-id: svn://10.0.0.236/trunk@217670 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 05:32:33 +00:00
Olli.Pettay%helsinki.fi
d8b38d028b Bug 364718, Crash [@ nsXULElement::HandleDOMEvent], r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@217669 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 05:16:25 +00:00
philringnalda%gmail.com
2b60626872 Bug 365385: unbreak profile manager keyboard shortcuts, r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@217668 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 05:14:50 +00:00
philringnalda%gmail.com
3b436012a4 Bug 365621: update mail/ copyright dates to 2007, r+a=mscott
git-svn-id: svn://10.0.0.236/trunk@217667 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 05:07:55 +00:00
dbaron%dbaron.org
f1baaac993 Remove now-unused declaration from header file (missed in previous patch). b=332285 r=martijn
git-svn-id: svn://10.0.0.236/trunk@217666 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 04:15:00 +00:00
philringnalda%gmail.com
37776c92c3 Bug 364679: attriubtes typo, r=aaronleventhal
git-svn-id: svn://10.0.0.236/trunk@217665 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 04:07:55 +00:00
bienvenu%nventure.com
26cf123dc1 fix 365282 sr=mscott if extension is trying to set content type on an attachment, don't try to override it on mac by fetching the file
git-svn-id: svn://10.0.0.236/trunk@217664 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 01:23:17 +00:00
timeless%mozdev.org
4e14ae0fd4 Bug 365525 Periods in wrong place in relation to parentheses
r=mkanat a=myk


git-svn-id: svn://10.0.0.236/trunk@217663 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 00:32:06 +00:00
timeless%mozdev.org
befa2df488 GetImageRequest is only available for gtk2 builds
trying to fix build bustage


git-svn-id: svn://10.0.0.236/trunk@217660 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-03 00:14:09 +00:00
timeless%mozdev.org
863ecdf17b Bug 321326 code execution in webtools/leak-o-matic/logs.cgi
Upping required perl version to 5.6
r=bear


git-svn-id: svn://10.0.0.236/trunk@217659 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 22:54:24 +00:00
despotdaemon
a88f1758bb Pseudo-automatic update of changes made by inonit@inonit.com.
git-svn-id: svn://10.0.0.236/trunk@217658 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 22:37:32 +00:00
timeless%mozdev.org
733ac809e7 Landing MICROB_20061206_BRANCH
This should improve the gnomevfs story (the goal is to not use it).
Patches Wanted, Work will be on the MICROB_20070103_BRANCH


git-svn-id: svn://10.0.0.236/trunk@217657 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 22:23:53 +00:00
reed%reedloden.com
290ba7ae89 Bug 365684 - "Unable to see add user UI in Despot" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@217652 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 21:52:25 +00:00
despotdaemon
ca9ade4644 Pseudo-automatic update of changes made by justdave@bugzilla.org.
git-svn-id: svn://10.0.0.236/trunk@217649 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 21:47:43 +00:00
brendan%mozilla.org
5e96b76b5d Partial fix from me (239721, r=gavin) and the real fix from Gavin Reaney <gavin@picsel.com> (364836, r=me).
git-svn-id: svn://10.0.0.236/trunk@217639 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:57:03 +00:00
pkasting%google.com
9ed81669fd Bug 364831: Fix Firefox build w/Vista SDK.
Patch by craig.hawko@gmail.com
r=neil


git-svn-id: svn://10.0.0.236/trunk@217637 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:33:23 +00:00
despotdaemon
0be8f41da6 Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217635 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:18:32 +00:00
despotdaemon
33dc49ff6c Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217634 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:13:21 +00:00
despotdaemon
c277c60877 Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217633 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:12:48 +00:00
despotdaemon
33477ff342 Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217632 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:11:45 +00:00
despotdaemon
2b3e41d41b Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217631 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:11:12 +00:00
despotdaemon
7cc5ab4f54 Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217630 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:10:04 +00:00
despotdaemon
3cc36473fc Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217629 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:08:08 +00:00
despotdaemon
104444c687 Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217628 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:07:17 +00:00
despotdaemon
0380aad878 Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217627 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:06:46 +00:00
despotdaemon
69b02f98b1 Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217626 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:05:07 +00:00
despotdaemon
9c62ef6aae Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217624 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 20:00:43 +00:00
despotdaemon
3333af9d8f Pseudo-automatic update of changes made by reed@reedloden.com.
git-svn-id: svn://10.0.0.236/trunk@217623 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 19:56:06 +00:00
despotdaemon
fd2ee3af5e Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217620 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 19:42:01 +00:00
wclouser%mozilla.com
5d7aab8c53 - Fixed a bug where plain text is echoed in a select list
- A new version of plotkit came out, and that is integrated here
- Fixed bug 354391
- Added MPL/GPL/LGPL to all files


git-svn-id: svn://10.0.0.236/trunk@217618 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 19:39:47 +00:00
Olli.Pettay%helsinki.fi
5473831527 Bug 353021, better assertions
git-svn-id: svn://10.0.0.236/trunk@217616 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 19:21:38 +00:00
despotdaemon
f0d94e7ccb Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217615 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 18:53:15 +00:00
Olli.Pettay%helsinki.fi
511e0e4867 Bug 353021, crashes [@ PL_DHashTableOperate] removing from nsDOMClassInfo's sExternallyReferencedTable, r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217614 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 18:51:42 +00:00
bugzilla%standard8.demon.co.uk
e614fbaf43 Bug 365576 Update SeaMonkey's copyright strings to 2007 (main strings) r=KaiRo,sr=Neil
git-svn-id: svn://10.0.0.236/trunk@217611 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:51:16 +00:00
reed%reedloden.com
99ac1271c2 Bug 339471 - [p=reed/LpSolit r=bear]
git-svn-id: svn://10.0.0.236/trunk@217610 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:38:33 +00:00
reed%reedloden.com
23e3a7c011 Bug 325316 - [p=reed r=bear]
git-svn-id: svn://10.0.0.236/trunk@217609 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:32:56 +00:00
justdave%bugzilla.org
29455dc152 Bug 365619: Remove lloydcgi.pl, there's nothing left that uses it.
r=reed


git-svn-id: svn://10.0.0.236/trunk@217608 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:31:17 +00:00
mattwillis%gmail.com
33c8a3805c bug 365545 - Fix javascript strict warnings. sr=bienvenu, aTb2=mscott
git-svn-id: svn://10.0.0.236/trunk@217607 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:29:17 +00:00
justdave%bugzilla.org
e977825211 Bug 276985: Fix XSS vulnerability in who.cgi. Wound up rewriting the whole thing from scratch as a Template Toolkit template, to make it easier to keep track of what's been escaped and what hasn't. This is a wholesale replacement.
r=bear


git-svn-id: svn://10.0.0.236/trunk@217606 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:29:03 +00:00
justdave%bugzilla.org
ea35d634be Bug 280464: Fix XSS vulnerability in file.cgi. Wound up rewriting the whole thing from scratch as a Template Toolkit template, to make it easier to keep track of what's been escaped and what hasn't. This is a wholesale replacement.
r=bear


git-svn-id: svn://10.0.0.236/trunk@217605 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:28:06 +00:00
justdave%bugzilla.org
a2ba25ddf6 Bug 365474: Fix "Use of implicit split to @_ is deprecated" warning
r=bear


git-svn-id: svn://10.0.0.236/trunk@217604 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:15:55 +00:00
justdave%bugzilla.org
190de78b0d Bug 365469: restore create-guided's ability to auto-insert the User-Agent in the build ID field.
r=gerv, a=justdave


git-svn-id: svn://10.0.0.236/trunk@217603 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 17:06:32 +00:00
ajschult%verizon.net
d7e63cffad Bug 362625: Stop pulling individual files to make fast-update happy. r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@217602 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 16:47:08 +00:00
benjamin%smedbergs.us
ebd8d6b93e Bug 364754 - ActiveX control doesn't build with MSVC8 Express, r=dbaron
git-svn-id: svn://10.0.0.236/trunk@217601 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 15:24:08 +00:00
thomas.benisch%sun.com
ca3f655c02 removed patch for bug #350323 add selected calendar to composite calendar
git-svn-id: svn://10.0.0.236/trunk@217600 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 15:10:11 +00:00
longsonr%gmail.com
483340788b Bug 362068 - crash in _moz_cairo_win32_scaled_font_select_font. r=jwatt, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217599 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 13:15:06 +00:00
edburns%acm.org
acfdb6daf6 fix makefiles, remove external dom
git-svn-id: svn://10.0.0.236/trunk@217594 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 03:11:23 +00:00
mozilla.mano%sent.com
df7df362e0 Bug 365570 - FeedWriter doesn't work with handlers with chrome:// URI (throws exception when downloading favicon). r=gavin.
git-svn-id: svn://10.0.0.236/trunk@217593 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 00:33:43 +00:00
mozilla.mano%sent.com
aee7f8b6a9 Bug 365539 - Don't list History and Subscriptions queries in Places Organizer's left pane. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217592 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 00:30:27 +00:00
mozilla.mano%sent.com
a131392aea Bug 365528 - Places Organizer Toolbar. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217591 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 00:26:35 +00:00
mozilla.mano%sent.com
440751c135 Bug 364643 - placesCmd_rename is not implemented. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217590 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-02 00:17:41 +00:00
reed%reedloden.com
e224e8fc55 Bug 274833 - [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@217589 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 19:53:33 +00:00
edburns%acm.org
a50a2627e3 M build.xml
- don't extract dom2.jar.  It's in the JDK now.

M classes/org/mozilla/dom/AttrImpl.java
M classes/org/mozilla/dom/DOMImplementationImpl.java
M classes/org/mozilla/dom/DocumentImpl.java
M classes/org/mozilla/dom/ElementImpl.java
M classes/org/mozilla/dom/EntityImpl.java
M classes/org/mozilla/dom/NodeImpl.java
M classes/org/mozilla/dom/TextImpl.java

- conform to dom in JDK 1.6 (Dom level 3)


git-svn-id: svn://10.0.0.236/trunk@217588 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 18:29:49 +00:00
bmlk%gmx.de
9ddb3480ae Zerorowspans are expanded during cellmap entry creation. There is no need to adapt the rowspan value later, bug 364318 r/sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217587 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 18:18:53 +00:00
mats.palmgren%bredband.net
76ca4d6f76 Print Preview crash when accessing print engine data before it's fully created. b=365003 r=sharparrow1 sr=roc
git-svn-id: svn://10.0.0.236/trunk@217586 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 10:53:11 +00:00
philringnalda%gmail.com
81b401f289 Bug 365553: Update browser/toolkit copyright dates to 2007, r=gavin
git-svn-id: svn://10.0.0.236/trunk@217585 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 04:33:27 +00:00
igor.bukanov%gmail.com
1a88a7954b Bug 363530: cleaning up arguments bytecode implementation. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217584 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 03:03:16 +00:00
mattwillis%gmail.com
7abc6d6e30 bug 360479 - Removes obsolete methods. Patch by <gekacheka@yahoo.com> r1=lilmatt, r2=jminta
git-svn-id: svn://10.0.0.236/trunk@217583 18797224-902f-48f8-a5cc-f745e15eee43
2007-01-01 01:23:25 +00:00
cst%yecc.com
0775934008 Bug 351881 nsIPrompt needs nsIPromptService::STD_YES_NO_BUTTONS
r=biesi sr=darin


git-svn-id: svn://10.0.0.236/trunk@217582 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 19:23:50 +00:00
philringnalda%gmail.com
52ba5a1981 Bug 365437: browser/ dependency in help.css, r=mano
git-svn-id: svn://10.0.0.236/trunk@217581 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 18:36:44 +00:00
mozilla.mano%sent.com
b1df0632ce Bug 365439 - Delete keyboard shortcuts are not working places organizer. Bug 333924 - [Mac] No Window menu in Places Organizer. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217580 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 17:43:46 +00:00
mats.palmgren%bredband.net
159c9722a0 Crash [@ nsPrintEngine::PrintPreview] when trying to print preview a display:none iframe. b=365004 r=sharparrow1 sr=roc
git-svn-id: svn://10.0.0.236/trunk@217579 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 08:13:56 +00:00
philringnalda%gmail.com
1319dcf0ea Bug 323455: chrome override URIs not resolved, p=chpe@gnome.org, r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@217578 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 03:20:27 +00:00
lpsolit%gmail.com
b4b46f81f2 Bug 248037: Link from attachment 'created' date to comment where it was created - Patch by Frédéric Buclin <LpSolit@gmail.com> r=timeless a=justdave
git-svn-id: svn://10.0.0.236/trunk@217577 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 00:45:07 +00:00
cltbld
7cc58d0502 Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@217576 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 00:41:03 +00:00
timeless%mozdev.org
fd01c459c8 sroaming breaks firefox w/ extensions=all
there was an a=benb
this will be removed when bug 249343 is fixed


git-svn-id: svn://10.0.0.236/trunk@217575 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-31 00:38:09 +00:00
mnyromyr%tprac.de
85a2f7e997 Bug 146075: always set a default priority value; r/sr=neil
git-svn-id: svn://10.0.0.236/trunk@217572 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 22:11:43 +00:00
neil%parkwaycc.co.uk
96456f1aca Mac's <wizard> buttons should be Go Back, Continue, Done b=360908 p=sugar.waffle@gmail.com (Hiro) r+sr=me
git-svn-id: svn://10.0.0.236/trunk@217571 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 21:04:38 +00:00
bryner%brianryner.com
0222dfe04d Missing part of checkin for bug 347686 to add the autocomplete collector. Not part of the build.
git-svn-id: svn://10.0.0.236/trunk@217570 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 20:59:22 +00:00
neil%parkwaycc.co.uk
d3e9e234ee Mac's <wizard> buttons should be Go Back, Continue, Done b=360908 p=sugar.waffle@gmail.com (Hiro) r+sr=me
git-svn-id: svn://10.0.0.236/trunk@217569 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 20:34:15 +00:00
lpsolit%gmail.com
9ee874607f Bug 365407: Reorder tabs in userprefs.cgi - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217568 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 19:53:52 +00:00
enndeakin%sympatico.ca
2b9c1bf7dc Bug 365234, scrolled items in listbox are invisible, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217566 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 17:18:15 +00:00
gijskruitbosch%gmail.com
42b91b1da9 Bug 364900 - topcrash [@ nsXULDocument::ResumeWalk], starting with 2006122304 build
p=asqueella@gmail.com (Nickolay Ponomarev)
r+sr=bzbarsky@mit.edu (Boris Zbarsky)


git-svn-id: svn://10.0.0.236/trunk@217565 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 11:10:24 +00:00
mozilla.mano%sent.com
3748ccac60 Bug 364397 - Bookmarks under the chevron menu do nothing when activated (--enable-places-bookmarks only). r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217564 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 10:26:23 +00:00
bugzilla%standard8.demon.co.uk
6cb893d746 Bug 362186 entries from ldap address book not displayed (offline) - you can only search. p=James Andrewartha (trs80@tartarus.uwa.edu.au),r=me,sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217561 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 09:01:28 +00:00
bzbarsky%mit.edu
037b31603b Use the right percentage base for figuring out text-indent when drawing the
text-decoration.  Bug 364862, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@217560 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 05:56:25 +00:00
bzbarsky%mit.edu
50334acdc0 Be consistent about what percentage border-radius is a percentage of. Bug
364861, r+sr=roc


git-svn-id: svn://10.0.0.236/trunk@217559 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 05:23:51 +00:00
bzbarsky%mit.edu
a9c6606754 Make computed style not have to worry about null style structs. Bug 364821, r+sr=roc.
git-svn-id: svn://10.0.0.236/trunk@217558 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 05:17:59 +00:00
reed%reedloden.com
d07c878ca8 Bug 258059 - (change die to &fatal) [p=reed]
git-svn-id: svn://10.0.0.236/trunk@217557 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 02:53:48 +00:00
reed%reedloden.com
96d84f11ee Bug 258059 - [p=justdave]
git-svn-id: svn://10.0.0.236/trunk@217556 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 02:42:27 +00:00
lpsolit%gmail.com
5a090371ab Bug 365352: Lists of bugs (a.k.a tags) may be overwritten or deleted when tagging a new bug - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217555 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 02:02:00 +00:00
lpsolit%gmail.com
5b26ba18fa Bug 365241: Changing the context of a patch fails - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=justdave
git-svn-id: svn://10.0.0.236/trunk@217554 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 01:58:28 +00:00
mkanat%bugzilla.org
fe1ce88121 Bug 365293: [mod_perl] click OR, AND or ADD... button in bool charts initiates search
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=justdave, a=justdave


git-svn-id: svn://10.0.0.236/trunk@217553 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-30 00:45:07 +00:00
lpsolit%gmail.com
153b84b4a4 Bug 365376: query.cgi: Use of uninitialized value at line 178 - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217552 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 23:41:34 +00:00
olav%bkor.dhs.org
764c01e571 Bug 365374: The newchangedmail template calls field-descs when it only needs variables.none.tmpl (perf problem)
Patch By Olav Vitters <olav@bkor.dhs.org> r=mkanat, a=justdave


git-svn-id: svn://10.0.0.236/trunk@217551 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 23:23:35 +00:00
mkanat%bugzilla.org
57eff4620f Bug 364637: contrib/bzdbcopy.pl: Can't locate object method "params" via package "Bugzilla" at Bugzilla/DB/Mysql.pm line 65
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave


git-svn-id: svn://10.0.0.236/trunk@217550 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 23:17:53 +00:00
mkanat%bugzilla.org
2e27cf28d8 Bug 363371: It is hard to determine which row has a failed encoding, with recode.pl --guess
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=justdave, a=justdave


git-svn-id: svn://10.0.0.236/trunk@217549 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 23:16:22 +00:00
lpsolit%gmail.com
c1e595e7c1 Bug 346121: Creating an attachment upon new bug doesn't create attachment link in comment #0 - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217545 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 22:18:55 +00:00
sspitzer%mozilla.org
3d8dad8296 fix for bug #364316
[places] some favicons in the historu sidebar and the bookmarks dialog are bigger than 16px by 16px.

r=mano


git-svn-id: svn://10.0.0.236/trunk@217544 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 21:44:36 +00:00
lpsolit%gmail.com
cce34fa7cf Bug 365300: [mod_perl] Editing a saved search does not re-populate the search page - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217543 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 20:55:08 +00:00
kairo%kairo.at
4c1da1fb6c bug 361096 - sanitize [w|p]instripe help.css, first-r=mano second-r=Neil
git-svn-id: svn://10.0.0.236/trunk@217541 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 16:09:47 +00:00
gijskruitbosch%gmail.com
3de3bec66d Bug 363791 - Crash [@ nsTreeBodyFrame::PrefillPropertyArray] involving removal of <treecols>
p=asqueella@gmail.com (Nickolay Ponomarev)
r=neil@parwaycc.co.uk (Neil Rashbrook)
sr=roc@ocallahan.org (Robert O'Callahan)


git-svn-id: svn://10.0.0.236/trunk@217540 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 13:20:23 +00:00
gijskruitbosch%gmail.com
c0431c1d15 Bug 328128 - nsIPrefBranch::prefHasUserValue should document the fact that a pref doesn't have a user set value if it's set to its default value
p=asqueella@gmail.com (Nickolay Ponomarev)
r+sr=darin.moz@gmail.com (Darin Fisher)
Documentation Only.


git-svn-id: svn://10.0.0.236/trunk@217539 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 13:08:41 +00:00
bmlk%gmx.de
d73e2e993c backout of bug 243159, rtest is necessary before checkin
git-svn-id: svn://10.0.0.236/trunk@217538 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 11:27:31 +00:00
ginn.chen%sun.com
c1b7113c1e bug 364274 Incorrect state for static text in wizard dialogs
patch by evan.yan at sun.com r=ginn.chen


git-svn-id: svn://10.0.0.236/trunk@217537 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 08:52:04 +00:00
ginn.chen%sun.com
be9b368772 Bug 363646 message header tree table report incorrect number of table headers
patch by Evan.Yan at sun.com r=mscott sr=neil


git-svn-id: svn://10.0.0.236/trunk@217536 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 06:41:23 +00:00
lpsolit%gmail.com
f5ed67795d Bug 365254: When running a shared saved search, its name is not displayed at the top of the bug list - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217535 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 02:15:21 +00:00
sspitzer%mozilla.org
858729282d supplimental for bug #364412
Crash when updating in nsIncrementalDownload::OnStartRequest, attempting to allocate a huge amount of memory.

clean up code, per biesi

r=biesi


git-svn-id: svn://10.0.0.236/trunk@217534 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 01:19:32 +00:00
mozilla.mano%sent.com
e0305bcc06 Bug 365268 - Get rid of historyDNDObserver. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217533 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 00:30:19 +00:00
mozilla.mano%sent.com
9527d3db8f Bug 364401 - js error when you drag link from places based history sidebar panel to personal toolbar. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217532 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-29 00:27:33 +00:00
mozilla.mano%sent.com
c3b6cce8a2 Bug 365266 - Bookmark This Link in the history sidebar is broken in places-bookmarks-enabled builds. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217531 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 23:49:44 +00:00
mozilla.mano%sent.com
ff1592d55c Bug 365171 - Bug context menu delete of personal toolbar bookmark can delete history item if focused. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217530 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 22:56:59 +00:00
sspitzer%mozilla.org
352d8f88bc fix for bug #364325
History search shows the results in wrong (reverse) sort order.

r=mano


git-svn-id: svn://10.0.0.236/trunk@217529 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 22:08:06 +00:00
bienvenu%nventure.com
4563d5659c fix default location of special folders for new pop3 accounts which don't use global inbox, sr=mscott 365113
git-svn-id: svn://10.0.0.236/trunk@217528 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 21:52:30 +00:00
mozilla.mano%sent.com
ced59144f3 Use the right array lenght in the fix for bug 365100.
git-svn-id: svn://10.0.0.236/trunk@217527 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 21:26:11 +00:00
timeless%mozdev.org
505e38e735 Bug 365083 edit components cc list text needs wordsmithing
r=lpsolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@217524 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 18:20:07 +00:00
timeless%mozdev.org
bc3da9b791 Bug 365062 extra whitespace in "to classification ..." parenthetical
r=lpsolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@217523 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 18:18:33 +00:00
timeless%mozdev.org
2907a90fd3 Bug 365061 Unclassified default description is bad
r=lpsolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@217522 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 18:16:42 +00:00
timeless%mozdev.org
e36084aafd Bug 365054 no changes should be in the plural
r=lpsolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@217521 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 18:15:21 +00:00
timeless%mozdev.org
85c1d2223d Bug 363915 The group currently being edited should not be linkified, in editgroups.cgi
r=lpsolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@217520 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 18:01:02 +00:00
timeless%mozdev.org
6fd150a1ca Bug 363912 editwhines uses both the word "query" and the word "search" for the same thing
r=colin.ogilvie a=justdave


git-svn-id: svn://10.0.0.236/trunk@217519 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 17:57:50 +00:00
timeless%mozdev.org
b092e6ec4d Bug 354660 please reword "use in total"
r=lpsolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@217518 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 17:56:00 +00:00
reed%reedloden.com
a4dd525d93 Bug 364919 - "Watching-related text at bottom of "Email Preferences" page has typos" [p=reed/timeless r=LpSolit a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217517 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 17:51:35 +00:00
smontagu%smontagu.org
7d71db096f Extend bug 353756 to cover vector fonts as well as bitmap fonts. r=pavlov
git-svn-id: svn://10.0.0.236/trunk@217516 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 17:23:21 +00:00
reed%reedloden.com
ae8d26386f Bug 276565 - ""Log In" link in footer should return to same page after logging in." [p=reed r=justdave a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217515 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 16:48:06 +00:00
Olli.Pettay%helsinki.fi
498568a836 Bug 358713, implement accessible objects for xforms selects of full apperance, p=surkov, r=aaronr+ginn.chen, sr=neil
git-svn-id: svn://10.0.0.236/trunk@217514 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 14:19:47 +00:00
tony%ponderer.org
86d73f3b36 Bug 354199 – firefox fetches a key from sb.google.com in local list mode
patch: only get key when in remote mode
r=mmchew


git-svn-id: svn://10.0.0.236/trunk@217511 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 06:54:35 +00:00
jminta%gmail.com
057a832c82 Bug 336287 – Multiweek view has inconsistent/faulty navigation, r=daniel, mvl
git-svn-id: svn://10.0.0.236/trunk@217505 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 01:23:15 +00:00
jminta%gmail.com
f76922fc5f Bug 343190 – DnD month view: Drag and Drop stops working if event is dropped out of calendar view, r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@217504 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 01:19:59 +00:00
jminta%gmail.com
ab819218ff Bug 361565 – Weekly layout: Every second week is not printed and wrong week numbering, r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@217503 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 01:13:54 +00:00
lpsolit%gmail.com
dca29d8ef1 Bug 365122: Success messages in userprefs.cgi shouldn't be red - Patch by Frédéric Buclin <LpSolit@gmail.com> r=Colin a=justdave
git-svn-id: svn://10.0.0.236/trunk@217501 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:43:16 +00:00
lpsolit%gmail.com
298e6bcd97 Bug 365067: Flags set from the enter_bug page are not mentioned in email - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217500 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:39:30 +00:00
lpsolit%gmail.com
523daa0c88 Bug 365107: When classifications are in use, query.cgi doesn't fill the component, version and target milestone select menus correctly - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217499 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:36:30 +00:00
lpsolit%gmail.com
a3044e837f Bug 365092: Inactive flag types should be excluded from the JS array in the bug creation form - Patch by Frédéric Buclin <LpSolit@gmail.com> and Olav Vitters <bugzilla-mozilla@bkor.dhs.org> r=LpSolit a=justdave
git-svn-id: svn://10.0.0.236/trunk@217498 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:31:35 +00:00
stridey%gmail.com
6a7ebc64f4 Camino only - Image removal for Bug 341967.
git-svn-id: svn://10.0.0.236/trunk@217497 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:29:52 +00:00
lpsolit%gmail.com
726b03b78c Bug 365179: Performance problems with multiple fields chosen in the "where one or more of the following changed" box - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217495 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:26:11 +00:00
stridey%gmail.com
c66230d1a1 Project patch for Bug 341967.
git-svn-id: svn://10.0.0.236/trunk@217493 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:21:02 +00:00
dbaron%dbaron.org
b399e1ef80 Improve behavior of multiple RSS accounts by removing cache of datasource that was not per server but would need to be to work correctly. b=340957 r=mscott
git-svn-id: svn://10.0.0.236/trunk@217492 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:18:04 +00:00
stridey%gmail.com
77c92615e7 Camino only - Bug 341967: Make pop-up blocker notification text wrap. Patch by murph <camino@seanmurph.com> r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217491 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-28 00:11:49 +00:00
neil%parkwaycc.co.uk
e1b3251589 Make some more help buttons work in suiterunner b=346605 r=IanN
git-svn-id: svn://10.0.0.236/trunk@217490 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 23:51:11 +00:00
brendan%mozilla.org
2da9a2eaba Optimize x.p for arg/var/local x; fix decompiler bugs hiding nearby (363536, r=igor).
git-svn-id: svn://10.0.0.236/trunk@217489 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 23:47:13 +00:00
neil%parkwaycc.co.uk
2a65125a67 Fix issues trying to overlay some mail <dialog>s caused by referencing the DOM from top-level script by removing unused code b=365164 r=mscott
git-svn-id: svn://10.0.0.236/trunk@217487 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 23:08:53 +00:00
joshmoz%gmail.com
0b8f2e0bcf we need to include carbon and cocoa here, it works coincidentally without this though. no bug. r=smorgan
git-svn-id: svn://10.0.0.236/trunk@217485 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 23:07:21 +00:00
mnyromyr%tprac.de
61445c9b24 Bug 363831: SeaMonkey regression band-aid fix; r/sr=neil
git-svn-id: svn://10.0.0.236/trunk@217484 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 22:28:49 +00:00
sspitzer%mozilla.org
ad2f3218b9 fix for regression bug #364018
cannot drag and drop url from location bar or webpage to bookmark toolbar.

r=mano


git-svn-id: svn://10.0.0.236/trunk@217483 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 21:51:06 +00:00
mozilla.mano%sent.com
cbc4777865 Bug 365100 - 'Open in Tabs' doesn't work in the left pane of the organizer. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217482 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 21:03:02 +00:00
despotdaemon
4075dc9f82 Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217481 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 20:47:57 +00:00
szegedia%freemail.hu
f7fd78a15c Test watches
git-svn-id: svn://10.0.0.236/trunk@217480 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 20:35:32 +00:00
reed%reedloden.com
55d6fb4f90 s/Fill/File/ [p=reed r=LpSolit]
git-svn-id: svn://10.0.0.236/trunk@217479 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 20:19:50 +00:00
sspitzer%mozilla.org
c5f9be8707 fix for bug #364412.
Crash when updating in nsIncrementalDownload::OnStartRequest, attempting to allocate a huge amount of memory.

thanks to biesi for the initial patch.

r=darin


git-svn-id: svn://10.0.0.236/trunk@217478 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 20:17:44 +00:00
mattwillis%gmail.com
19655ccf5c Convert DOS line endings to UNIX to make future patches readable
git-svn-id: svn://10.0.0.236/trunk@217477 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 19:52:00 +00:00
mnyromyr%tprac.de
fe55f58549 Bug 365005: red XUL error for menu_HelpPopup_reportertoolmenu; r/sr=biesi
git-svn-id: svn://10.0.0.236/trunk@217474 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 19:44:22 +00:00
szegedia%freemail.hu
f7349e58fb Updated with recently fixed bugs
git-svn-id: svn://10.0.0.236/trunk@217473 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 19:43:00 +00:00
mattwillis%gmail.com
7feec8a5bc Convert DOS line endings to UNIX to make future patches readable
git-svn-id: svn://10.0.0.236/trunk@217472 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 19:42:55 +00:00
szegedia%freemail.hu
6184d8baf0 Updated changelog with recent bugfixes
git-svn-id: svn://10.0.0.236/trunk@217471 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 19:23:09 +00:00
stuart.morgan%alumni.case.edu
079e535391 Camino only - Bug 202337: Make keychain storage compatible with Safari. r=josh sr=pink
git-svn-id: svn://10.0.0.236/trunk@217470 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:40:37 +00:00
szegedia%freemail.hu
2e310eb9f1 Fix for #344501 "Can't step into/put breakpoint in functions that are tail called in the debugger"
git-svn-id: svn://10.0.0.236/trunk@217469 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:34:25 +00:00
szegedia%freemail.hu
7d010c88a2 Bug 340561 Ð <Function>.prototype should not be DontEnum
git-svn-id: svn://10.0.0.236/trunk@217468 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:21:59 +00:00
stuart.morgan%alumni.case.edu
75acca6899 Camino only - Bug 181721: Disable menu commands when sheets or dialogs are frontmost. r=cl sr=pink
git-svn-id: svn://10.0.0.236/trunk@217467 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:17:14 +00:00
reed%reedloden.com
8ca8d63cd2 Bug 365143 - "[BUGZILLA] Mozbot does not parse duplicate bug messages correctly" [p=reed r=LpSolit]
git-svn-id: svn://10.0.0.236/trunk@217466 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:13:52 +00:00
szegedia%freemail.hu
6e7934d510 Revert previous change for now
git-svn-id: svn://10.0.0.236/trunk@217465 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:07:58 +00:00
szegedia%freemail.hu
57305a5386 Fix for Bug 347154 Ð CompilerEnvirons examines deprecated cx.compileFunctionsWithDynamicScopeFlag instead of calling cx.hasFeature(Context.FEATURE_DYNAMIC_SCOPE)
git-svn-id: svn://10.0.0.236/trunk@217464 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 18:04:25 +00:00
stuart.morgan%alumni.case.edu
80da8c3580 Camino only - Bug 340099: Highlight bookmark bar buttons when using Cmd-1 through 9. r=stridey sr=pink
git-svn-id: svn://10.0.0.236/trunk@217463 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 17:54:40 +00:00
peterv%propagandism.org
65f31f249d Fix for bug 362937 (Merge element's List and DumpContent implementations). r/sr=jst.
git-svn-id: svn://10.0.0.236/trunk@217462 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 17:26:32 +00:00
peterv%propagandism.org
dd03cc794a Fix for bug 364037 (xsl:copy-of a xsl:variable which contains a node crashes mozilla). r/sr=sicking.
git-svn-id: svn://10.0.0.236/trunk@217461 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 14:24:21 +00:00
masayuki%d-toybox.com
fa284ddafc Bug 287624 ? round CSS border widths to nearest pixel r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217460 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 14:21:43 +00:00
bmlk%gmx.de
627a20a258 remove TableProcessChild, this creates a single codepath trough ProcessChildren for frame construction bug 243159 r=rbs sr=bz
git-svn-id: svn://10.0.0.236/trunk@217459 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 14:00:12 +00:00
daniel.boelzle%sun.com
30b1ae8567 Bug 340949: misc fixes, reconnect timer
git-svn-id: svn://10.0.0.236/trunk@217458 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 12:38:57 +00:00
bmlk%gmx.de
9df82f6d3b initialize variables before use bug 365075 r/sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217456 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 08:46:30 +00:00
smontagu%smontagu.org
b50cbc9d9f Bitmap fonts claim to support Unicode characters when they don't really. Bug 353756, r=pavlov
git-svn-id: svn://10.0.0.236/trunk@217455 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 08:43:15 +00:00
smontagu%smontagu.org
2ac0a48ae0 Make the y-offsets cairo sends to ExtTextOut relative to the location of the previous glyph instead of relative to the baseline. Bug 365021, r=pavlov
git-svn-id: svn://10.0.0.236/trunk@217454 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 07:50:24 +00:00
smontagu%smontagu.org
867405c595 Back out bug 361782 since it was fixed upstream. Bug 365021, r=pavlov
git-svn-id: svn://10.0.0.236/trunk@217453 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 07:47:22 +00:00
lpsolit%gmail.com
15bbea14f5 Bug 365064: describecomponents.cgi returns no data when no product name is given - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217452 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 07:37:20 +00:00
dbaron%dbaron.org
ef84567f30 Make those C-style comments.
git-svn-id: svn://10.0.0.236/trunk@217451 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 03:11:28 +00:00
dbaron%dbaron.org
87b4b6deee Hack to get Mac builds working again. b=364794
git-svn-id: svn://10.0.0.236/trunk@217450 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 03:08:37 +00:00
reed%reedloden.com
4b13f60e01 Bug 364172 - "Wording on showdependencytree.cgi is bad when there are no dependencies" [p=reed r=bkor a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217449 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:28:15 +00:00
reed%reedloden.com
91db19f831 Bug 364926 - "Platform and OS should be next to each other on "Enter Bug" page" [p=reed r=LpSolit a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217448 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:24:42 +00:00
reed%reedloden.com
28077b383d Bug 364835 - "current bug number should be filled in in "to bugs" input box to simplify tagging" [p=reed r=bkor a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217447 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:21:32 +00:00
reed%reedloden.com
4bd34c51b5 Bug 364950 - ""Enter Bug" page does not validate due to <input> in <table>" [p=reed r=bkor a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217446 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:17:05 +00:00
reed%reedloden.com
33c636e085 Bug 364952 - "Clicking "Hide/Show Obsolete" link should not scroll show_bug page" [p=reed/Hannibal r=LpSolit a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217445 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:14:39 +00:00
reed%reedloden.com
8b5b29de1c Bug 364958 - "If user does not have a real name, just e-mail address should be displayed instead of " <user@email.tld>"" [p=reed r=bkor a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217444 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:12:35 +00:00
lpsolit%gmail.com
30ad7a1401 Bug 364951: post_bug.cgi does not validate due to invalid id for "Reassign bug to ..." <input> - Patch by Reed Loden <reed@reedloden.com> r=LpSolit a=justdave
git-svn-id: svn://10.0.0.236/trunk@217443 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 01:01:43 +00:00
lpsolit%gmail.com
bf4199e77f Bug 364851: Some accesskeys are duplicated when viewing a bug - Patch by Reed Loden <reed@reedloden.com> r=LpSolit a=justdave
git-svn-id: svn://10.0.0.236/trunk@217442 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 00:56:50 +00:00
lpsolit%gmail.com
aca3e56f3e Bug 365046: If docs_urlbase is empty, link to "the named tag" in the documentation should be supressed - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217441 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 00:47:05 +00:00
mozilla.mano%sent.com
64e247a4c3 Bug 334451 - Places Organizer: places-list tree should not list bookmark items. This also fixes the selectBookmark dialog bustage from bug 359462. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217440 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-27 00:36:35 +00:00
cbiesinger%web.de
b1cad63a4c Bug 364847 Give nsISocketTransport classinfo and a THREADSAFE flag
r+sr=darin


git-svn-id: svn://10.0.0.236/trunk@217439 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 22:14:29 +00:00
mozilla.mano%sent.com
11879f8ebc Bug 330807 - Places Organizer desn't show URL in its status bar. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217438 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 20:35:05 +00:00
mozilla.mano%sent.com
b9299566db Bug 329949 - browser.tabs.loadBookmarksInBackground is ignored in places views (histrory sidebar, bookmarks toolbar etc.). r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217437 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 20:26:38 +00:00
lpsolit%gmail.com
93db0ccb13 Bug 364780: The keyword cache cannot be fixed with editkeywords privs only - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217436 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 20:19:06 +00:00
mozilla.mano%sent.com
7b4f912194 Bug 364991 - Stop loading CFLocale functions dynamically. r=josh, sr=pink.
git-svn-id: svn://10.0.0.236/trunk@217435 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 20:18:15 +00:00
bmlk%gmx.de
5e2c64b119 the previous commit was bogus, the bustage was due to midcheckin.
git-svn-id: svn://10.0.0.236/trunk@217434 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 19:18:56 +00:00
reed%reedloden.com
cdc5eb4ce9 Bug 364863 - "on confirming a new account page, wrong 'Email Address' is shown when logged in" [p=victory/vladd/reed r=LpSolit a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217433 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 19:03:55 +00:00
reed%reedloden.com
033cb53971 Bug 353528 - "<select> fields with just one value shouldn't appear editable" [p=reed r=LpSolit a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217432 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 18:53:15 +00:00
lpsolit%gmail.com
da9a9f06d5 Bug 364923: Flag options should be disabled for users that cannot request or grant/deny them instead of showing a blank drop-down - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217431 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 18:48:24 +00:00
bmlk%gmx.de
a38d8c03a8 bustage fix
git-svn-id: svn://10.0.0.236/trunk@217430 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 18:34:59 +00:00
bmlk%gmx.de
f20938bf42 bustage fix
git-svn-id: svn://10.0.0.236/trunk@217429 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 18:12:11 +00:00
lpsolit%gmail.com
19c57f7bf3 Bug 364134: Upgrading from 2.20 to latest CVS produces error message in contrib/recode.pl - Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217428 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 18:12:04 +00:00
lpsolit%gmail.com
f5de6af0bf Bug 364879: The custom field creation page generates invalid HTML code - Patch by victory(_RSZ_) <bmo2007@rsz.jp> r=vladd a=justdave
git-svn-id: svn://10.0.0.236/trunk@217427 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 18:01:07 +00:00
lpsolit%gmail.com
5cf2e37c40 Bug 363916: buglist.cgi can throw an error about JavaScript even though QuickSearch no longer uses JS - Patch by timeless <timeless@bemail.org> r=vladd a=justdave
git-svn-id: svn://10.0.0.236/trunk@217426 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 17:51:53 +00:00
timeless%mozdev.org
c778d21502 Bug 355300 There should be only one nsGkAtoms creature
r=dbaron


git-svn-id: svn://10.0.0.236/trunk@217425 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 17:47:52 +00:00
reed%reedloden.com
6eb41c6e0e Bug 364920 - "Watcher list should be sorted alphabetically" [p=reed r=LpSolit a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217424 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 16:46:04 +00:00
reed%reedloden.com
0681f9e6b8 Bug 364169 - "There is a "show votes for this bug" link when the bug has no votes" [p=reed r=bkor a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217423 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 16:41:47 +00:00
reed%reedloden.com
689ef9e373 Bug 364165 - ""Unclassified" classification appears in "Format for Printing" but not normal view" [p=reed r=bkor a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217422 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 16:38:34 +00:00
justdave%bugzilla.org
d17c7f7365 Bug 356074: make error for omitting "cf_" from a command name be grammatically correct.
r=LpSolit, a=jusdave


git-svn-id: svn://10.0.0.236/trunk@217421 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 16:28:25 +00:00
bmlk%gmx.de
6db17ea546 be carefull with row indices when deleting cells bug=364318, patch by bz, r=me sr=roc
git-svn-id: svn://10.0.0.236/trunk@217418 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 14:24:15 +00:00
bmlk%gmx.de
93402c4df5 rename variable rename mRowCount to mContentRowCount so that it becomes obvious what it contains. Adjust the cellmap grow mechanism to the new nsTArray world bug=363370 r/sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217417 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 14:04:20 +00:00
bmlk%gmx.de
1ac0afc850 add again bound checks that the BC code relies on. bug 364150 r/sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217416 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 13:55:32 +00:00
gijskruitbosch%gmail.com
68ca4e5ac5 Bug 363965 - [OS/2] by default, SM single middle mouse button click will not open CZ window URL in new tab with CZ 0.9.76+
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217415 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 12:20:29 +00:00
mozilla.mano%sent.com
e7ccd5bf3c Bug 365002 - newFolder/Separator methods should not try to focus the controller's view. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217414 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 01:57:23 +00:00
mozilla.mano%sent.com
da56f8b8df Bug 336990 - Choosing delete on bookmarks toolbar deletes everything there indeed (this should only affect --enable-places-bookmarks builds). r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217413 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-26 01:54:51 +00:00
dbaron%dbaron.org
202dcc4811 Untabify.
git-svn-id: svn://10.0.0.236/trunk@217412 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-25 19:44:34 +00:00
uriber%gmail.com
c0d1269952 Pull InsertFrames, AppendFrames, and RemoveFrames up from nsInlineFrame to nsContainerFrame. bug=198928 r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217411 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-25 18:53:52 +00:00
mozilla.mano%sent.com
8a87c4db26 Bug 364828 - PlacesController efficiency improvements - update places-specific commands for places-events only. r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217410 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 22:56:08 +00:00
mozilla.mano%sent.com
c6297a8700 Bug 364905 - places-popup is broken (NPOB, only affects --enable-places-bookmarks builds). r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217409 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 22:51:40 +00:00
timeless%mozdev.org
4ed094a7fd Bug 363390 IS_LOW_SURROGATE conflicts with winnls.h
r=darin
updating comment


git-svn-id: svn://10.0.0.236/trunk@217408 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 12:27:45 +00:00
igor.bukanov%gmail.com
703dd01edc Bug 310405: allow to stop long running native code. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217407 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 11:31:37 +00:00
gijskruitbosch%gmail.com
89e4c82aaf Bug 348215 - Join Channel dialog creating messages in client
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217406 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 09:59:46 +00:00
gijskruitbosch%gmail.com
2cfad0e067 Bug 288844 - irc channel calls onStartRequest synchronously and without onStopRequest
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217405 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 09:07:35 +00:00
stridey%gmail.com
c105b6b9b5 Camino only - Bug 363680:Context menu overhaul for menu spacers. Patch by cl <bugzilla@chrislawson.net>. r=me sr=pink
git-svn-id: svn://10.0.0.236/trunk@217403 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-24 00:02:30 +00:00
neil%parkwaycc.co.uk
60ee1fcc79 Back out bug 350766's scrollbar metrics r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217402 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 23:32:09 +00:00
joshmoz%gmail.com
2d5f1cce9f get rid of kTitleBarHeight constant in cocoa widgets. b=347965 r=mano sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@217401 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 20:25:51 +00:00
mozilla.mano%sent.com
84eb283b30 Bug 364521 - Need a bundleIdentifier attribute in nsILocalFileMac. r=mento, sr=pink.
git-svn-id: svn://10.0.0.236/trunk@217400 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 20:17:29 +00:00
mozilla.mano%sent.com
a6d1dc9800 Bug 364661 - [cocoa] nsDragService::IsDataFlavorSupported should not throw for unsupported data flavors. r=josh, sr=pink.
git-svn-id: svn://10.0.0.236/trunk@217399 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 20:09:43 +00:00
dbaron%dbaron.org
16fd6022ad Bug 132071: Escape < and > (used in templates) in jprof's HTML output. Initial patch by Dave Morrison <morrison@bnl.gov>, r=dbaron
git-svn-id: svn://10.0.0.236/trunk@217397 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 18:37:39 +00:00
masayuki%d-toybox.com
d883023eda Bug 364785 ts regression by bug 362665 and bug 364678 r=vlad
git-svn-id: svn://10.0.0.236/trunk@217396 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 16:12:11 +00:00
gavin%gavinsharp.com
2f0ee572e8 Bug 364297: Fix typo, add a few more names, r=mconnor
git-svn-id: svn://10.0.0.236/trunk@217394 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 15:48:59 +00:00
mnyromyr%tprac.de
ebc7380b6c Bug 362349: suppressMsgDisplay should only force display when exactly one message is selected; p=Bruno 'Aqualon' Escherl <aqualon@aquachan.de>, r=neil, sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217393 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 13:20:30 +00:00
wr%rosenauer.org
6faafbe6f0 Bug 364567 - fixed warning: operation on 'typeIndex' may be undefined, r+sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217387 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 08:58:13 +00:00
masayuki%d-toybox.com
25bbfb2e05 Bug 364678 Incorrectly styled text after bug 362665 (only on western page??) r=vlad
git-svn-id: svn://10.0.0.236/trunk@217385 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 05:27:45 +00:00
vladimir%pobox.com
6a67fdb3c8 linux cff fix
git-svn-id: svn://10.0.0.236/trunk@217384 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 01:46:43 +00:00
vladimir%pobox.com
3670425f12 linux/xlib fix
git-svn-id: svn://10.0.0.236/trunk@217383 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 01:42:53 +00:00
vladimir%pobox.com
bb81827bcf OS X fix
git-svn-id: svn://10.0.0.236/trunk@217382 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 01:32:34 +00:00
vladimir%pobox.com
bf19bcf865 b=364742, Update cairo to git 473ae3aa95, r=stuart
git-svn-id: svn://10.0.0.236/trunk@217379 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 01:15:54 +00:00
mike.morgan%oregonstate.edu
7fe98785dc Checking in patch from bug 364628 that makes the AUS2 config more flexible and helps avoid cross-product version conflicts for nightly updates.
git-svn-id: svn://10.0.0.236/trunk@217378 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 00:55:56 +00:00
mike.morgan%oregonstate.edu
ddf51bd97f Removed trailing slash at the end of $host.
git-svn-id: svn://10.0.0.236/trunk@217376 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 00:25:40 +00:00
mike.morgan%oregonstate.edu
7f1ad43737 Fixed acceptance tests to make sure updateVersion and osVersion are granular and adjustable.
git-svn-id: svn://10.0.0.236/trunk@217375 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-23 00:23:22 +00:00
bclary%bclary.com
ac0f6baa41 JavaScript Test - test callback mutation in Array filter, by Jeff Walden, bug 364603
git-svn-id: svn://10.0.0.236/trunk@217374 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 21:45:44 +00:00
mozilla%weilbacher.org
865ecf539d [OS/2] Bug 351246: Load Mozilla into Highmem on OS/2. Part 5, changes to SQLite. r=abwillis1, sr=vlad
git-svn-id: svn://10.0.0.236/trunk@217373 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 20:12:03 +00:00
dmose%mozilla.org
ff897ddcb7 Back out version number change, as we need more discussion on this first
git-svn-id: svn://10.0.0.236/trunk@217372 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 20:11:52 +00:00
lpsolit%gmail.com
34501f0979 Bug 364748: Bug number not displayed when viewing all attachments - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217371 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 19:41:45 +00:00
lpsolit%gmail.com
a2ca50da43 Bug 364743: Crash when renaming components (regression) - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217369 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 18:10:21 +00:00
brendan%mozilla.org
bec424d922 Meter small-slot ops (363529, r=crowder).
git-svn-id: svn://10.0.0.236/trunk@217368 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 18:02:42 +00:00
dbaron%dbaron.org
3c6623d408 Don't forget to assign to rv. b=340554 r=sayrer
git-svn-id: svn://10.0.0.236/trunk@217367 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 17:28:48 +00:00
peterv%propagandism.org
7809c17869 First part of fix for bug 306539 (Error during XSLT transformation: (null)). r/sr=sicking.
git-svn-id: svn://10.0.0.236/trunk@217366 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 17:22:18 +00:00
rhelmer%mozilla.com
dbb8f52160 use different filter for State line b=364652 r=nrthomas
git-svn-id: svn://10.0.0.236/trunk@217365 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 17:17:50 +00:00
peterv%propagandism.org
faa9bb5fb6 Fix for bug 363656 (regexp:match returns results out of order). r/sr=sicking.
git-svn-id: svn://10.0.0.236/trunk@217364 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 16:15:15 +00:00
gijskruitbosch%gmail.com
354a68501f Bug 361087 - remove the nsIXULPrototypeDocument interface
p=asqueella@gmail.com (Nickolay Ponomarev)
r+sr=bugmail@sicking.cc (Jonas Sicking)


git-svn-id: svn://10.0.0.236/trunk@217363 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 16:11:16 +00:00
bclary%bclary.com
da814fc21f JavaScript Test - modify test to use object instance instead of |this|, bug 355344
git-svn-id: svn://10.0.0.236/trunk@217361 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 14:53:50 +00:00
bclary%bclary.com
f0ea5d5c27 JavaScript Test - modify test to reflect change in typeof RegExp instance, bug 61911
git-svn-id: svn://10.0.0.236/trunk@217360 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 14:43:56 +00:00
bclary%bclary.com
49bcb26b67 JavaScript Test - modify test to delay execution until page loaded, bug 324688
git-svn-id: svn://10.0.0.236/trunk@217359 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 14:38:00 +00:00
bienvenu%nventure.com
55b9de05ed fix a couple problems with news unread counts, including marking missing articles as read, sr=mscott part of 298737
git-svn-id: svn://10.0.0.236/trunk@217357 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 13:57:22 +00:00
bugzilla%standard8.demon.co.uk
71b6295893 Bug 363266 Simplify some ifdefs/Restructure some DIRS under xpfe/ (components/MakeFile.in part) r=benjamin
git-svn-id: svn://10.0.0.236/trunk@217356 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 13:56:40 +00:00
bienvenu%nventure.com
c8be66dec0 fix 319535 don't issue getacl command unless we have myrights administrative rights, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@217354 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 13:39:04 +00:00
brendan%mozilla.org
c86b0a0350 Fix from shutdown@flashmail.com for off-by-one in js_Disassemble1 (364691, r=me).
git-svn-id: svn://10.0.0.236/trunk@217346 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 08:22:32 +00:00
alfred.peng%sun.com
b34b600af7 Bug 353162. Firefox calls system pixman_image_init and causes hang.
r=benjamin+vladimir.


git-svn-id: svn://10.0.0.236/trunk@217341 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 06:40:36 +00:00
bzbarsky%mit.edu
70c517f74d Remove most of the aFrame args in computed style; just store the frame in a
member instead.  Bug 364617, r+sr=roc


git-svn-id: svn://10.0.0.236/trunk@217340 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 06:10:32 +00:00
brendan%mozilla.org
5963937b03 Back out patch for 310405 due to regressions.
git-svn-id: svn://10.0.0.236/trunk@217339 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 05:46:46 +00:00
rhelmer%mozilla.com
12ee7153ab disable xforms until bug 339568 is resolved.
git-svn-id: svn://10.0.0.236/trunk@217338 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 04:33:00 +00:00
masayuki%d-toybox.com
efed138d00 Bug 362665 Implement font name resolver on Mac r=vlad
git-svn-id: svn://10.0.0.236/trunk@217335 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 03:56:37 +00:00
cvshook%sicking.cc
ea18868277 Fix bustage from bug 363789
git-svn-id: svn://10.0.0.236/trunk@217334 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 01:13:04 +00:00
cvshook%sicking.cc
10146a5b87 Fix long lines in previous patch. b=363789
git-svn-id: svn://10.0.0.236/trunk@217333 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 00:58:00 +00:00
neil%parkwaycc.co.uk
442631c4f5 Bug 364215 Modern themed sidebar should have mini scrollbars r=IanN
git-svn-id: svn://10.0.0.236/trunk@217331 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 00:24:05 +00:00
cvshook%sicking.cc
d3f8d240a0 Implement more exslt functions. r/sr=peterv
git-svn-id: svn://10.0.0.236/trunk@217330 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 00:19:34 +00:00
igor.bukanov%gmail.com
7104aa81f2 Bug 310405: long running loops in native code are brekable now. r=brendan,crowder
git-svn-id: svn://10.0.0.236/trunk@217329 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 00:00:40 +00:00
mozilla.mano%sent.com
6235546314 Bug 359462 - Redesign PlacesController interaction with places views (this makes various edit command work in the places-based history sidebar). r=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@217328 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-22 00:00:21 +00:00
mattwillis%gmail.com
bf38a49e18 bump trunk version number so AUS branch vs. trunk don't collide
git-svn-id: svn://10.0.0.236/trunk@217327 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 23:36:31 +00:00
wtchang%redhat.com
baeea2fe1e Bugzilla Bug 362134: fixed a crash in dtoa when running with reduced CPU
float precision.  Original patch for jsdtoa.c in JavaScript by Keith Victor
<keith@virtock.com>.  r=wtc.


git-svn-id: svn://10.0.0.236/trunk@217323 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 22:41:42 +00:00
gijskruitbosch%gmail.com
c4cf0051a5 Change profilePath pref to hidden. No bug.
r=silver@warwickcompsoc.co.uk (James Ross) on IRC
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217321 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 22:35:55 +00:00
bienvenu%nventure.com
03094f8024 add hidden per smtp server pref to allow overriding of EHLO/HELO argument, patch by ch.ey@gmx.net, r/sr=bienvenu 244030
git-svn-id: svn://10.0.0.236/trunk@217317 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 22:10:54 +00:00
Olli.Pettay%helsinki.fi
0c12bf4696 Bug 364544, Crash [@ nsSliderFrame::HandleEvent] when a scrollbar thumb gets removed while dragging, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217314 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 21:44:10 +00:00
rhelmer%mozilla.com
65c9f8fb84 used for testing 1509/2001 releases
git-svn-id: svn://10.0.0.236/trunk@217312 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 21:37:57 +00:00
benjamin%smedbergs.us
3254e73176 Bug 341654 cleanup - search should be built in tier-app, not tier-toolkit, r=gavin
git-svn-id: svn://10.0.0.236/trunk@217311 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 21:34:05 +00:00
mike.morgan%oregonstate.edu
1e410ed873 Checked in added versions for nightly updates from bug 364477.
git-svn-id: svn://10.0.0.236/trunk@217309 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 21:14:49 +00:00
lpsolit%gmail.com
38d4dd1b08 Bug 91761: sanitycheck.cgi is too broadly accessible - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@217308 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 20:47:23 +00:00
lpsolit%gmail.com
cb931d84c8 Bug 364293: Do not call can_see_product() from templates - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217307 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 20:34:07 +00:00
lpsolit%gmail.com
c49cb29251 Bug 364284: User::get_selectable_products() can return wrong data if $classification_id is passed - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217306 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 20:30:43 +00:00
roc+%cs.cmu.edu
36d18e2982 Bug 363813. Mark canvas with HAS_DIRTY_CHILDREN when we delete its child. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217305 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 20:05:34 +00:00
roc+%cs.cmu.edu
408d24ae4a Bug 363813. Reparent style contexts for special-siblings because they may depend on our frame's style context. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217304 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 20:03:09 +00:00
mnyromyr%tprac.de
f10bf9fb3b Bug 364542: View > Messages > All/Unread doesn't uncheck; r/sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217303 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 20:02:35 +00:00
roc+%cs.cmu.edu
75b2611119 Bug 363813. Always reset parent pointers when pulling an inline frame's overflow back into its main child list. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217302 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 19:59:30 +00:00
Olli.Pettay%helsinki.fi
810e04c8c4 Bug 364219, Crash [@ CallQueryInterface] when passing on an xmlhttprequest load event to a timeout, r+sr=peterv
git-svn-id: svn://10.0.0.236/trunk@217301 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 19:27:48 +00:00
bugzilla%standard8.demon.co.uk
da5dcb4a18 Bug 364141 toolkitify composer's startup handler. r/sr=Neil
git-svn-id: svn://10.0.0.236/trunk@217300 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 17:36:44 +00:00
mozilla.mano%sent.com
888455ec8c Bug 358456 - Feed preview should include pubDate of each entry. patch from Michael Ventnor <ventnor.bugzilla@yahoo.com.au>; r=sayre,me; ui-r=beltzner.
git-svn-id: svn://10.0.0.236/trunk@217297 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 08:43:09 +00:00
timeless%mozdev.org
90a496a407 Bug 47868 Unable to search for numbers only
r=bear


git-svn-id: svn://10.0.0.236/trunk@217296 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 07:17:07 +00:00
timeless%mozdev.org
0dbce75039 Bug 363390 IS_LOW_SURROGATE conflicts with winnls.h
r=darin


git-svn-id: svn://10.0.0.236/trunk@217295 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 07:13:58 +00:00
timeless%mozdev.org
35b31fd791 Bug 341952 Adding firefox variants to mozilla/browser/app/.cvsignore
also sunbird and thunderbird
r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@217294 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 07:05:08 +00:00
timeless%mozdev.org
7a201105b7 Bug 341955 add some more items to .cvsignore
r=bsmeberg


git-svn-id: svn://10.0.0.236/trunk@217293 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 07:04:12 +00:00
timeless%mozdev.org
3ea4e560e3 Bug 363390 IS_LOW_SURROGATE conflicts with winnls.h
r=darin


git-svn-id: svn://10.0.0.236/trunk@217292 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 07:03:23 +00:00
timeless%mozdev.org
3c5c6820cf Bug 363446 EmbedPrivate::ScrollToSelectedNode doesn't initialize rv if !aDOMNode
patch by sciguyryan+bugzilla@gmail.com r=timeless


git-svn-id: svn://10.0.0.236/trunk@217291 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 07:01:48 +00:00
timeless%mozdev.org
4f67e833f0 Bug 364264 Assertion failure: pcdepth >= 0, at jsopcode.c:4737 - failure to handle JSOP_TRAP in js_DecompileValueGenerator
r=brendan


git-svn-id: svn://10.0.0.236/trunk@217289 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 06:59:51 +00:00
justdave%bugzilla.org
bc48ce29db Followup fix for bug 362546: set the value in the DB correctly
git-svn-id: svn://10.0.0.236/trunk@217288 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 06:19:04 +00:00
despotdaemon
95a593f678 Pseudo-automatic update of changes made by justdave@bugzilla.org.
git-svn-id: svn://10.0.0.236/trunk@217287 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 06:15:58 +00:00
despotdaemon
0381e90806 Pseudo-automatic update of changes made by justdave@bugzilla.org.
git-svn-id: svn://10.0.0.236/trunk@217286 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 06:07:17 +00:00
jminta%gmail.com
9549262a93 Bug 329582 Remove superfluous parts of gCalendarWindow object, including disabled mail support in sunbird. r=lilmatt,mvl
git-svn-id: svn://10.0.0.236/trunk@217285 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 04:52:28 +00:00
jminta%gmail.com
470a625b49 Bug 361836 Calendar csv import/export does not include alarms r=lilmatt,mvl
git-svn-id: svn://10.0.0.236/trunk@217284 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 04:39:12 +00:00
jminta%gmail.com
f6f291b898 Bug 362496 Fail more gracefully if we can't parse the date during csv import r=ctalbert,mvl
git-svn-id: svn://10.0.0.236/trunk@217283 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 04:35:21 +00:00
jminta%gmail.com
ab2dd2188f Bug 362876 Offer a chance to save changes to an item if the app is trying to restart r=lilmatt,mvl
git-svn-id: svn://10.0.0.236/trunk@217282 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 04:31:21 +00:00
igor.bukanov%gmail.com
da9e4ec912 Bug 364017: fix source node decoding in the dissembler, r=brendan
git-svn-id: svn://10.0.0.236/trunk@217279 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 01:48:27 +00:00
brendan%mozilla.org
c6642a597b Finish NEW_ => STRICT_ renaming (363536, r=igor).
git-svn-id: svn://10.0.0.236/trunk@217277 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 01:35:54 +00:00
brendan%mozilla.org
ee32c685b5 Remove stale comments (334261 followup, r=self).
git-svn-id: svn://10.0.0.236/trunk@217275 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 01:00:32 +00:00
brendan%mozilla.org
b328725e03 JSOP_GETTHISPROP optimization (363536, r=igor).
git-svn-id: svn://10.0.0.236/trunk@217273 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-21 00:02:20 +00:00
mozilla.mano%sent.com
7ae3cfd07a Bug 356536 - [Mac] XUL Scroll bar slider jumps back up when mouse cursor strays from near scroll bar. patch from Stefan <stefanh@bluebottle.com>, r=me, sr=roc.
git-svn-id: svn://10.0.0.236/trunk@217270 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 22:49:59 +00:00
mozilla.mano%sent.com
d3e7fc2422 Bug 363512 - remove base-64 encoding functions in favor of built-ins. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@217269 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 22:41:20 +00:00
mozilla.mano%sent.com
a0f3b04b72 Bug 355120 - Move default feed reader code to shellsvc. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@217268 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 22:34:51 +00:00
Olli.Pettay%helsinki.fi
28ce10d978 Testcases for bug 364092 and bug 364413
git-svn-id: svn://10.0.0.236/trunk@217266 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 21:33:22 +00:00
Olli.Pettay%helsinki.fi
1b73029ac9 Bug 364413, Related node on DOMAttrModified listener isn't the same as attr node set by SetAttributeNodeNS, p=Alex Vincent+me, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@217265 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:55:08 +00:00
despotdaemon
ad52cd19a0 Pseudo-automatic update of changes made by brendan@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217264 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:54:19 +00:00
crowder%fiverocks.com
3da5f7e293 Bug 364350: free of uninitialized memory in OOM condition, patch by Gavin Reaney (gavin@picsel.com), r=crowder@fiverocks.com
git-svn-id: svn://10.0.0.236/trunk@217263 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:51:12 +00:00
benjamin%smedbergs.us
cadeb69c98 Bug 36195 - CYGWIN and PATH environment variables should be unset when building in the MSYS shell, r=luser
git-svn-id: svn://10.0.0.236/trunk@217262 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:44:31 +00:00
mattwillis%gmail.com
41e4fad997 bug 327064 - Adds STRIP_XPI to Lightning. r=dmose via IRC
git-svn-id: svn://10.0.0.236/trunk@217261 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:42:36 +00:00
mvl%exedo.nl
4f3b97d4ad bug 215971, use the values from the actual patch
git-svn-id: svn://10.0.0.236/trunk@217260 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:18:04 +00:00
mozilla.mano%sent.com
ad97db0aee Fix upcoming bustage from bug 326854
git-svn-id: svn://10.0.0.236/trunk@217259 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:16:23 +00:00
mvl%exedo.nl
8dd355ce8b Bug 215971 auto refresh remote calendar every x minutes. r=lilmatt, jminta
git-svn-id: svn://10.0.0.236/trunk@217258 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:14:25 +00:00
mozilla.mano%sent.com
d59fc62008 Bug 326854 - expose btoa and atob to JS components. r=brendan, sr=jst.
git-svn-id: svn://10.0.0.236/trunk@217257 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:10:12 +00:00
despotdaemon
9785d446e8 Pseudo-automatic update of changes made by shaver@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@217256 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 20:06:06 +00:00
lpsolit%gmail.com
8d9dd10809 Bug 364216: Flag::retarget() is broken - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=myk
git-svn-id: svn://10.0.0.236/trunk@217254 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 19:53:58 +00:00
justdave%bugzilla.org
609ed4072f Scripts now live in $CONFIG_DIR
git-svn-id: svn://10.0.0.236/trunk@217253 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 19:53:18 +00:00
justdave%bugzilla.org
40a7f8bc46 Add the check scripts that we use
git-svn-id: svn://10.0.0.236/trunk@217252 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 19:50:59 +00:00
mvl%exedo.nl
3d78320a71 bug 360479: move workweek days calculation to multiday-view so it refreshes just once. patch by gekacheka@yahoo.com, r=lilmatt, jminta
git-svn-id: svn://10.0.0.236/trunk@217250 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 19:07:12 +00:00
mattwillis%gmail.com
7499d9ec74 fix obvious typo in comment
git-svn-id: svn://10.0.0.236/trunk@217249 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 19:01:40 +00:00
igor.bukanov%gmail.com
9093eec7cf Bug 354297: Fix for getters on index when compiled with GC_MARK_DEBUG. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217248 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 18:55:07 +00:00
mvl%exedo.nl
2f7fe8772e bug 356207: start searching at the right place when reading .ics which has BYMONTHDAY and BYDAY in an RRULE. r=dbo
git-svn-id: svn://10.0.0.236/trunk@217247 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 18:53:54 +00:00
ghendricks%novell.com
736fa53ff4 Sync with 2499 Testopia 1.1.2
git-svn-id: svn://10.0.0.236/trunk@217244 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 17:01:20 +00:00
mattwillis%gmail.com
c14a7c952f bug 364339 - Add files to be packaged with Windows build for Sunbird to work on branch. Patch by Stefan Sitter <ssitter@googlemail.com> r1=lilmatt, r2=jminta
git-svn-id: svn://10.0.0.236/trunk@217237 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 13:04:58 +00:00
gijskruitbosch%gmail.com
390dabf129 Bug 361781 - nsIDomInternalWindow::GetAttention on GTK2 doesn't behave "right" in all cases. (Second try)
r+sr=roc@ocallahan.org (Robert O'Callahan)


git-svn-id: svn://10.0.0.236/trunk@217236 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 09:05:19 +00:00
stridey%gmail.com
8d1571d60e Camino only - Make the string from bug 330534 localize properly. sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@217235 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 08:46:26 +00:00
brendan%mozilla.org
7991ccd56e Rename strict equality ops (cleanup pre-patch for 363536, r=igor).
git-svn-id: svn://10.0.0.236/trunk@217234 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 08:12:18 +00:00
brendan%mozilla.org
43e84ca3e2 Bytecode succession metering (363529, r=crowder).
git-svn-id: svn://10.0.0.236/trunk@217233 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 07:47:22 +00:00
philringnalda%gmail.com
d13faa839e Bug 363043: Unfork Sb's customizeToolbar, r=jminta
git-svn-id: svn://10.0.0.236/trunk@217231 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 06:45:09 +00:00
philringnalda%gmail.com
f01d0a6515 Bug 364197: Wrong end position for bolding in Granpa Radiso EULA for Mac, r=mano
git-svn-id: svn://10.0.0.236/trunk@217230 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 06:10:36 +00:00
ginn.chen%sun.com
3bec800993 Bug 364205 gtkmozembed.h should be C style
r+sr=roc


git-svn-id: svn://10.0.0.236/trunk@217229 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 05:28:57 +00:00
reed%reedloden.com
0714ad586e Bug 364195 - "No way to search for private comments" [p=reed r=justdave a=justdave]
git-svn-id: svn://10.0.0.236/trunk@217228 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 05:14:24 +00:00
mats.palmgren%bredband.net
14e7266121 Rename IsSplittable() to GetSplittableType(). b=349973 r+sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217227 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 03:52:34 +00:00
joshmoz%gmail.com
201ffb4c53 remove unused quickdraw code. b=364415 r=cl
git-svn-id: svn://10.0.0.236/trunk@217226 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 03:41:43 +00:00
joshmoz%gmail.com
78fbb28d7a nsChildView comment, whitespace, and includes cleanup, no actual code changes. makes the file much easier to read. r=smorgan
git-svn-id: svn://10.0.0.236/trunk@217225 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 02:13:57 +00:00
bzbarsky%mit.edu
e457732aea Remove the GetScrollBarDimensions API from device contexts. Bug 364345, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217224 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 02:04:00 +00:00
dbaron%dbaron.org
9332796f42 Eliminate nsStyleBorderPadding and add margin/padding/content rect APIs to nsIFrame. b=332922 r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217223 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 01:23:45 +00:00
mats.palmgren%bredband.net
36ff0f7a42 Horizontal under/overflow events are not dispatched. b=363933 r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217222 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-20 01:17:00 +00:00
Olli.Pettay%helsinki.fi
3ab568daae Try to fix crashes possibly caused by bug 359790, r=aaronl
git-svn-id: svn://10.0.0.236/trunk@217219 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 22:57:23 +00:00
joshmoz%gmail.com
3afdea1233 followup to menubarless dialog fix. sometimes during startup it is normal to not have a native application menu yet. b=355138
git-svn-id: svn://10.0.0.236/trunk@217218 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 22:54:14 +00:00
mike.morgan%oregonstate.edu
fb970ea6ca Fixed missing </div>.
git-svn-id: svn://10.0.0.236/trunk@217214 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 21:39:06 +00:00
silver%warwickcompsoc.co.uk
8343179484 Bug 361785 - adoptNode as needed.
JavaScript Debugger only.
r=rginda


git-svn-id: svn://10.0.0.236/trunk@217212 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 21:00:10 +00:00
joshmoz%gmail.com
163e763cde Remove non-cairo gfx support from cocoa widgets. This isn't going to work soon anyway, camino can't build without cairo already, and it is a lot of clutter. Carbon widgets will still build with non-cairo gfx. b=364379 r=smorgan r=mento sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@217211 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 20:47:53 +00:00
mnyromyr%tprac.de
987b264088 Bug 363831: Saved Search with only one folder to search results in endless loading and high CPU load; r=neil, sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217210 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 20:26:47 +00:00
roc+%cs.cmu.edu
5dd391d386 Bug 363848. Scrollframes CAN TOO have an nsIScrollbarMediator scrolled frame. r=enndeaking,sr=mats
git-svn-id: svn://10.0.0.236/trunk@217209 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 20:11:27 +00:00
sayrer%gmail.com
1ab4016c16 Fix an ifdef syntax mistake.
git-svn-id: svn://10.0.0.236/trunk@217208 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 19:58:04 +00:00
sayrer%gmail.com
163a3d2df1 Bug 364337. Fix unit test build bustage--don't run bookmarks tests when bookmarks aren't enabled. r=sspitzer
git-svn-id: svn://10.0.0.236/trunk@217207 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 19:51:31 +00:00
joshmoz%gmail.com
402e8c42ee fix menu bar for menubarless dialogs. b=355138 r=hwaara r=mento sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@217206 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 19:26:41 +00:00
gavin%gavinsharp.com
2bda371186 Bug 361652: Remove extraneous files that differ only in case, r=morgamic
git-svn-id: svn://10.0.0.236/trunk@217205 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 19:25:55 +00:00
bzbarsky%mit.edu
d33fe96766 If we have an unsupported classid, bail out even if we have no URI. Bug
363379, r+sr=biesi


git-svn-id: svn://10.0.0.236/trunk@217202 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 16:31:42 +00:00
bzbarsky%mit.edu
1fdc2a2db8 Fix bug 363235 -- REJECT_SERVER is taken to mean "content is blocked by user",
and that's not what we want here.  r+sr=sicking


git-svn-id: svn://10.0.0.236/trunk@217201 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 15:32:46 +00:00
bzbarsky%mit.edu
78cfdd7ca8 Remove the consumers of GetScrollBarDimensions so that we can work on removing
the API too.  Bug 364301, r+sr=roc


git-svn-id: svn://10.0.0.236/trunk@217200 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 15:08:34 +00:00
cbiesinger%web.de
6e9115cd9c bug 261425
Make nsStandardURL::SetSpec and SetHost consistent with respect to handling
spaces in hostnames (i.e. make both return an error)
r+sr=darin


git-svn-id: svn://10.0.0.236/trunk@217199 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 15:07:14 +00:00
cbiesinger%web.de
133b9c1384 bug 357958 Ignore unsupported content encodings instead of making them a fatal
error
r+sr=darin


git-svn-id: svn://10.0.0.236/trunk@217198 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 15:03:17 +00:00
longsonr%gmail.com
2eb1d086cc Bug 363710 - Removing text node has no visible effect. r=jwatt, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217195 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 13:15:37 +00:00
gijskruitbosch%gmail.com
3ed4c763e2 Bug 361781 - Backing out due to orange on older boxes.
git-svn-id: svn://10.0.0.236/trunk@217194 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 12:07:10 +00:00
gijskruitbosch%gmail.com
ab1187cc82 Bug 361781 - try nullchecking lib to fix orange.
git-svn-id: svn://10.0.0.236/trunk@217193 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 11:46:37 +00:00
silver%warwickcompsoc.co.uk
2c37efe634 Update version from 3.0a1 to 3.0a2; we hate you AMO.
ChatZilla only, NPODB.


git-svn-id: svn://10.0.0.236/trunk@217192 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 11:22:30 +00:00
martijn.martijn%gmail.com
c3140a39f3 Bug 312867 - Implement textbox.reset(), expose input's editor, r+sr=neil, r=gavin
git-svn-id: svn://10.0.0.236/trunk@217191 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 11:17:27 +00:00
gijskruitbosch%gmail.com
90e15eb199 Bug 361781 - nsIDomInternalWindow::GetAttention on GTK2 behaves non-optimal
r+sr=roc@ocallahan.org (Robert O'Callahan, Novell)


git-svn-id: svn://10.0.0.236/trunk@217190 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 11:01:12 +00:00
lpsolit%gmail.com
53078c46f2 Bug 339384: Make Bugzilla::Milestone use Bugzilla::Object - Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit a=justdave
git-svn-id: svn://10.0.0.236/trunk@217189 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 10:35:43 +00:00
lpsolit%gmail.com
82e79d9d8f Back out a change which is not part of the patch I reviewed and which breaks the list of flags to display on bug and attachment creation - see bug 335389
git-svn-id: svn://10.0.0.236/trunk@217187 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 09:38:11 +00:00
lpsolit%gmail.com
8d9b0dd2c2 Bug 364286: Code in Classification->products() is suboptimal - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=justdave
git-svn-id: svn://10.0.0.236/trunk@217185 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 08:38:49 +00:00
lpsolit%gmail.com
ba1bec1581 Bug 343635: Enabling classifications should add a tree view of classifications and products when entering a new bug - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@217184 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 08:32:04 +00:00
reed%reedloden.com
1deb867b0e Bug 362546 - "Hide ancient code modules from list of current modules" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@217183 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 07:00:35 +00:00
reed%reedloden.com
94d0be48ed Bug 363681 - "Clean up poorly used subroutine prototypes" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@217182 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 06:55:03 +00:00
mkanat%bugzilla.org
4f0a60e4a0 Bug 364250: If a hook fails, no error is available for diagnosis
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=colin, a=myk


git-svn-id: svn://10.0.0.236/trunk@217181 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 06:43:10 +00:00
mkanat%bugzilla.org
c7ae56b4db Bug 339385: Make Bugzilla::Version use Bugzilla::Object
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=myk


git-svn-id: svn://10.0.0.236/trunk@217180 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 06:41:46 +00:00
mkanat%bugzilla.org
4a41fcb4c8 Bug 339380: Make Bugzilla::Component use Bugzilla::Object
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=myk


git-svn-id: svn://10.0.0.236/trunk@217179 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 06:39:29 +00:00
bzbarsky%mit.edu
92ae61a0e2 Use typesafe methods for getting style structs, for now. Bug 363605, r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217175 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 04:16:09 +00:00
reed%reedloden.com
9c32bc40a2 Bug 364065 - "Disabling CC list <select> for logged-out users can make the list unscrollable" [p=reed r=bkor a=myk]
git-svn-id: svn://10.0.0.236/trunk@217174 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 04:05:58 +00:00
reed%reedloden.com
1fde8135c2 Bug 364167 - "no space in Attachments on this Bug:263" [p=reed r=LpSolit a=myk]
git-svn-id: svn://10.0.0.236/trunk@217173 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 04:03:49 +00:00
reed%reedloden.com
a3d85bc82c Bug 335389 - "flags should use '', '?', '+', '-' as option order" [p=reed r=LpSolit a=myk]
git-svn-id: svn://10.0.0.236/trunk@217172 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 04:01:32 +00:00
reed%reedloden.com
22201ca6f9 Bug 364094 - "login-small.html.tmpl's table needs an id for skinning" [p=reed r=LpSolit a=myk]
git-svn-id: svn://10.0.0.236/trunk@217171 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 03:59:21 +00:00
bzbarsky%mit.edu
ff23c0ece1 Make scrollframes use the pref width of the scrollbar, not the min width, for
determining pref width.  Fixes bug 363528, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@217169 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 02:53:05 +00:00
wtchang%redhat.com
ff4f6cd0b2 Bugzilla Bug 360933: removed dead code (for the plevent.h functions and for
Win16 support).
Modified Files:
	README.TXT
Removed Files:
	w16gui/.cvsignore w16gui/Makefile.in w16gui/popfile.c
	w16gui/popfind.c w16gui/popfont.c w16gui/poppad.c
	w16gui/poppad.h w16gui/poppad.ico w16gui/poppad.rc
	w16gui/popprnt0.c w16gui/readme.1st


git-svn-id: svn://10.0.0.236/trunk@217168 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 02:33:05 +00:00
wtchang%redhat.com
3d53310c7b Bugzilla Bug 360933: removed the 'windows' directory from CVS.
git-svn-id: svn://10.0.0.236/trunk@217167 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 02:25:11 +00:00
wtchang%redhat.com
45f6755c7f Bugzilla Bug 360933: removed dead code (for the plevent.h functions, which
have been moved to XPCOM).
Removed files: makefile readme.1st winevent.c


git-svn-id: svn://10.0.0.236/trunk@217166 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 02:21:06 +00:00
stridey%gmail.com
61417304b9 Camino only - Bug 330534: Show correct expiration date ('On Quit') for session cookies. Patch by cl <bugzilla@chrislawson.net>. r=murph sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@217163 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 00:08:35 +00:00
neil%parkwaycc.co.uk
b5e860555f Fix missing icons b=364115 r=Mnyromyr
git-svn-id: svn://10.0.0.236/trunk@217162 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 00:03:39 +00:00
stridey%gmail.com
a0468bf49f Camino only - Missed nib for bug 359662.
git-svn-id: svn://10.0.0.236/trunk@217161 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-19 00:00:37 +00:00
nrthomas%gmail.com
e64140f3d0 Bump version to 1.{5,8}.0.10pre for Fx,Tb, & XR. Bug 360034, r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@217157 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 23:41:27 +00:00
nrthomas%gmail.com
ffdacda0c4 Bump version to 2.0.0.2pre for Firefox & XULRunner. Bug 360585, r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@217155 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 23:31:21 +00:00
Olli.Pettay%helsinki.fi
fe5981e170 Bug 364125, middle-click on scroll bar keeps scrolling until the left mouse button is pressed, p=badsector@slashstone.com, r=me, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217154 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 22:45:07 +00:00
dbaron%dbaron.org
244455b8f1 Fix shadowing variable name. No bug.
git-svn-id: svn://10.0.0.236/trunk@217153 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 22:35:01 +00:00
dbaron%dbaron.org
c31903a4f8 Fix handling of columns in which no cell originates (i.e., unneeded extra colspan). b=363329 Patch from Bernd Mielke, bmlk%gmx.de, with review comments addressed by me. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217152 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 22:34:30 +00:00
cbiesinger%web.de
35043a79c8 bug 362673
Document that nsISocketTransport::securityInfo is only set once the socket is
connected, and document how to trigger connection setup.
r+sr=darin


git-svn-id: svn://10.0.0.236/trunk@217151 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 21:52:24 +00:00
tony%ponderer.org
d5e888b6d3 bug 352788: New Firefox versions result in a new pref entry for rc4 key
patch: only use getkey url up until ?
r=mmchew


git-svn-id: svn://10.0.0.236/trunk@217149 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 20:47:49 +00:00
mozilla.mano%sent.com
6ac04ea189 Bug 362578 - 'autocheck' doesn't work in cocoa widget menus. r=josh, sr=pinkerton.
git-svn-id: svn://10.0.0.236/trunk@217148 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 20:14:47 +00:00
stridey%gmail.com
52bf0d8945 Camino only - Bug 328737: Destination should be consistently remembered when saving bookmarks. Patch by hwaara <hwaara@gmail.com> and cl <bugzilla@chrislawson.net>. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217147 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 20:02:18 +00:00
joshmoz%gmail.com
b3542cd914 don't use quartz/qd font prefs under cairo. b=363501 r=mento r=smorgan
git-svn-id: svn://10.0.0.236/trunk@217146 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:50:14 +00:00
nrthomas%gmail.com
51df5e36ad Bump version to 1.9a2pre/3.0a2pre in XULRunner/Firefox nighty files config. Bug 362418, r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@217145 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:40:54 +00:00
stridey%gmail.com
a525ee455c Camino only - Bug 240760:Make Find menu item focus the quicksearch field when in the bookmark manager. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217144 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:35:01 +00:00
rhelmer%mozilla.com
32e67f7ce5 bump version to 3.0a2pre/1.9a2pre b=362418 r=preed
git-svn-id: svn://10.0.0.236/trunk@217143 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:28:36 +00:00
Olli.Pettay%helsinki.fi
ef488fc7b6 Bug 364092, Related node on DOMAttrModifed listener isn't the same as attr node removed by RemoveAttributeNode, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@217142 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:15:57 +00:00
lpsolit%gmail.com
cc90217d30 Bug 364013: "Add individual bugs to..." should be reworded - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=justdave
git-svn-id: svn://10.0.0.236/trunk@217141 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:08:35 +00:00
stridey%gmail.com
ff3d4a4248 Camino only - Bug 361049:Keep zoom-to-fit from failing miserably. Patch by Torben <torben@Spamfence.net>. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217140 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 19:08:12 +00:00
stridey%gmail.com
a3fb812bd4 Camino only - Bug 359662: Fix validation of Bookmark menu helper items. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217139 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:52:47 +00:00
stridey%gmail.com
6fdd0f79fc Camino only - Bug 359662: Fix validation of Bookmark menu helper items. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217138 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:44:53 +00:00
joshmoz%gmail.com
0ac4b9b246 JEP 0.9.6. b=364158 r=josh sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@217137 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:38:56 +00:00
stuart.morgan%alumni.case.edu
2bb0b7649f Camino only - Bug 363600: Periodically auto-save window state for crash recovery. r=cl sr=pink
git-svn-id: svn://10.0.0.236/trunk@217136 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:38:48 +00:00
stridey%gmail.com
be988612ec Camino only - Bug 346228:Use files' actual icons for favicons of local files. r=murph sr=pink
git-svn-id: svn://10.0.0.236/trunk@217135 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:28:57 +00:00
Olli.Pettay%helsinki.fi
191ed00378 Bug 363879, deCOMtaminate nsGrid dir, part 2, p=Andreas Lange, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217134 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:25:48 +00:00
stridey%gmail.com
4e29e718b8 Camino only - Bug 363435:Make bookmark keyword case-insensitive. r=murph sr=pink
git-svn-id: svn://10.0.0.236/trunk@217133 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:18:39 +00:00
stridey%gmail.com
90d70d08fd Camino only - Bug 362609: Change font of 'Like Times'/'Like Helvetica' hint text to always reflect the text. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@217131 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 18:15:13 +00:00
Olli.Pettay%helsinki.fi
42687d7b53 Bug 363450, implement nsIScriptEventHandlerOwner as a tearoff, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@217130 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 17:52:04 +00:00
richm%stanfordalumni.org
474babe745 svrcore was still using the -e test which is broken with test on traditional unix bourne shell systems
git-svn-id: svn://10.0.0.236/trunk@217129 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 17:01:07 +00:00
wsharp%adobe.com
74ea3bce3d bug 360602. fix mac build from recent checkin
git-svn-id: svn://10.0.0.236/trunk@217128 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 16:43:46 +00:00
wsharp%adobe.com
be49a384fb bug 360602. 64-bit porting work. review: stejohns.adobe.com
git-svn-id: svn://10.0.0.236/trunk@217127 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 16:04:48 +00:00
gerv%gerv.net
00c98834ad Bug 358399 - make "dot" munging in email addresses global, instead of just doing the first one.
git-svn-id: svn://10.0.0.236/trunk@217125 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 15:33:38 +00:00
hwaara%gmail.com
303f0e17cd Initial support for making comboboxes (for example the location bar in firefox) accessible. r=surkov, b=362079
Don't use performance-intensive NSAccessibilityUnignoredChildren() API since we no longer have to. r=surkov, b=363713


git-svn-id: svn://10.0.0.236/trunk@217123 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 13:57:37 +00:00
mats.palmgren%bredband.net
277be83fff Rename ComputeHorizontalValue to ComputeWidthDependentValue (ditto for height) and some minor cleanup. b=364131 r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217122 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 13:20:18 +00:00
neil%parkwaycc.co.uk
f5951dc23f Bug 364116 Virtual Folder list contains an extraneous splitter r=mscott
git-svn-id: svn://10.0.0.236/trunk@217121 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 10:52:48 +00:00
neil%parkwaycc.co.uk
29ed8be6fd Bug 363725 Make about:logo work in (some) toolkit apps r+sr=darin
git-svn-id: svn://10.0.0.236/trunk@217120 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 10:51:10 +00:00
daniel.boelzle%sun.com
5f98fd61e5 Bug 361057: minding asynchronous provider responses
git-svn-id: svn://10.0.0.236/trunk@217119 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 10:51:09 +00:00
stridey%gmail.com
8a17b47167 Camino only - Bug 364075:Ensure that separators in bookmarks bar always appear as separators. r=cl sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@217118 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 07:53:21 +00:00
ginn.chen%sun.com
9b0d86d308 Bug 359790 set text doesn't work correctly for XUL entry
patch by nian.liu at sun.com r=ginn.chen


git-svn-id: svn://10.0.0.236/trunk@217117 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 07:02:03 +00:00
jwalden%mit.edu
efabeb8450 Bug 364104 - Fix two bugs: one in array.indexOf with first argument === array[array.length-1] and second argument >= array.length, and another in array.lastIndexOf with first argument === array[0] and with second argument < -array.length. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217116 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 06:43:02 +00:00
bzbarsky%mit.edu
68ad73677a Fix bug 364192 -- assert was backwards.
git-svn-id: svn://10.0.0.236/trunk@217115 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 05:08:01 +00:00
reed%reedloden.com
d2031ae9a0 Bug 338845 - "[BUGZILLA] Mozbot incorrectly parses the "changed:" line" (fix for previous fix) [p=reed r=mkanat]
git-svn-id: svn://10.0.0.236/trunk@217114 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 05:02:09 +00:00
bzbarsky%mit.edu
3c5c5f02b3 Fix build bustage. Still bug 363406
git-svn-id: svn://10.0.0.236/trunk@217113 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 04:06:21 +00:00
bzbarsky%mit.edu
a9fd8779bf Fix bug 363406, patch by Nickolay Ponomarev <asqueella@gmail.com>,
r+sr=bzbarsky


git-svn-id: svn://10.0.0.236/trunk@217112 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 03:59:46 +00:00
bzbarsky%mit.edu
e92b9baa88 Forgot file for bug 363637. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217111 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 03:34:05 +00:00
bzbarsky%mit.edu
c3dbe09fe8 Adding regression test.
git-svn-id: svn://10.0.0.236/trunk@217110 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 03:29:35 +00:00
bzbarsky%mit.edu
6cab0c0057 Remove some unused table code. Bug 359139, r=bernd, sr=roc
git-svn-id: svn://10.0.0.236/trunk@217109 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 03:04:25 +00:00
bzbarsky%mit.edu
e9cbfbe714 Fix computation of a hypothetical box for abs pos frames which are descendants
of a rel-pos block.  Bug 363637, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@217108 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 03:00:23 +00:00
roc+%cs.cmu.edu
f50a7d874f Bug 363767. Add AppendElements() API (that appends empty elements) to nsTArray. r=sicking,sr=darin
git-svn-id: svn://10.0.0.236/trunk@217103 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-18 01:17:23 +00:00
cbiesinger%web.de
bb74327ee2 bug 275116 use the safe version of ObjectAt as required by the documentation
patch by Andreas Lange <mozilla@lange.cx> r=darin sr=biesi


git-svn-id: svn://10.0.0.236/trunk@217102 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 21:59:26 +00:00
sharparrow1%yahoo.com
f3db88e798 Bug 363770: Fix print crash caused by premature release of print engine. r+sr=roc.
git-svn-id: svn://10.0.0.236/trunk@217101 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 21:39:03 +00:00
uriber%gmail.com
9de31d2467 Fix calculation of margin forced to "auto" when both margins and width are specified but together smaller than available width. bug=364079 r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217099 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 17:02:22 +00:00
uriber%gmail.com
c44fa5a890 Always set wordLen to -1 before calling tx.GetNextWord() from AddInline[Min|Pref]Width, so that GetNextWord() will look at the entire content. bug=363732, r=smontagu sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217098 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 16:57:15 +00:00
szegedia%freemail.hu
260f663015 finalizers should be protected
git-svn-id: svn://10.0.0.236/trunk@217097 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 15:39:48 +00:00
szegedia%freemail.hu
234bf62c7f Don't invoke System.gc
git-svn-id: svn://10.0.0.236/trunk@217096 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 15:39:36 +00:00
szegedia%freemail.hu
369c9de239 Smaller sanity fixes - removal of unnecessary casts and local variables
git-svn-id: svn://10.0.0.236/trunk@217095 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 15:37:19 +00:00
szegedia%freemail.hu
189e48f949 Fix for #351664: more usable error message in JavaScriptException
git-svn-id: svn://10.0.0.236/trunk@217094 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 15:14:31 +00:00
szegedia%freemail.hu
6ef01a7395 Fix for #359411, courtesy of Hannes Wallnoefer
git-svn-id: svn://10.0.0.236/trunk@217093 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 14:42:39 +00:00
gijskruitbosch%gmail.com
6db791dd9e General whitespace and code style cleanup in ircbot and mingus code. No bug.
r=Silver on IRC (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217092 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 14:40:31 +00:00
szegedia%freemail.hu
2337902323 Fix for #359411: make it serializable
git-svn-id: svn://10.0.0.236/trunk@217091 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 14:33:47 +00:00
szegedia%freemail.hu
20d2cd4e7f Reduce race condition opportunity
git-svn-id: svn://10.0.0.236/trunk@217090 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 14:29:34 +00:00
mats.palmgren%bredband.net
34a45a87f6 Make the CSS 'ch' length unit work in most cases. b=363573 r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217089 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 14:06:42 +00:00
szegedia%freemail.hu
ae532eaa4c Fix for #361574
git-svn-id: svn://10.0.0.236/trunk@217088 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 13:16:46 +00:00
gijskruitbosch%gmail.com
d70e78ae3d Bug 232817 - make IRC library work under XPCShell and Rhino
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217087 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 11:07:40 +00:00
gijskruitbosch%gmail.com
bc90c345ce Bug 235169 - ChatZilla's motifs should style the userlist and other UI elements
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217086 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 10:24:19 +00:00
timeless%mozdev.org
ed823955bc Bug 363046 libgfxps.a to lubxul.so link error - Bustage caused by printing on linux bug 323928
patch by laurent@xulfr.org r=bsmedberg sr=pavlov


git-svn-id: svn://10.0.0.236/trunk@217084 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 09:19:25 +00:00
igor.bukanov%gmail.com
e88ea52827 Bug 362909: Faster debugging of function calls. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217081 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 01:58:54 +00:00
mnyromyr%tprac.de
dc998a3990 Bug 199318: Keyboard shortcut for opening new tabs works differently than documented; p=Bruno 'Aqualon' Escherl <aqualon@aquachan.de>, r=stefanh
git-svn-id: svn://10.0.0.236/trunk@217080 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 01:12:31 +00:00
cst%yecc.com
1193a6e776 Bug 343893 Add events for watching the addition and removal of tabs (API compatibility w/Firefox)
r=neil


git-svn-id: svn://10.0.0.236/trunk@217079 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-17 00:45:08 +00:00
reed%reedloden.com
1289b6300e Bug 338845 - "[BUGZILLA] Mozbot incorrectly parse the 'from' field" [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@217078 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 23:51:27 +00:00
bugzilla%arlen.demon.co.uk
90ab419152 Bug 360777 Change nsIAbCard::EditCardToDatabase to nsIAbDirectory::ModifyCard - fix for SM (also includes port of TB Bug 363993)
p=me r=standard8 sr=mscott


git-svn-id: svn://10.0.0.236/trunk@217077 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 23:20:30 +00:00
martijn.martijn%gmail.com
38d94bf132 Bug 364039 - Plugin placeholder is not styled anymore, r=mano
git-svn-id: svn://10.0.0.236/trunk@217076 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 22:53:50 +00:00
gijskruitbosch%gmail.com
00962ab102 Bug 361914 - hostmasks should not be formatted as mailto urls
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217075 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 22:24:04 +00:00
cst%yecc.com
c36d7ddc21 Bug 363792 tabbrowser destructor loops over array that's length of tabpanels rather than length of tabs
r=neil


git-svn-id: svn://10.0.0.236/trunk@217073 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 21:14:38 +00:00
gijskruitbosch%gmail.com
9d7a5d3eb7 Bug 349137 - no way to disable bugzilla munging on a per-channel basis
p=bonzini@gnu.org (Paolo Bonzini)
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@217072 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 20:32:52 +00:00
neil%parkwaycc.co.uk
9a850ce752 Fix possible referrer spoofing b=363179 r=IanN sr=jag
git-svn-id: svn://10.0.0.236/trunk@217071 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 20:10:37 +00:00
brendan%mozilla.org
4f1c139293 Fix for 363988 from shutdown@flashmail.com, r=me.
git-svn-id: svn://10.0.0.236/trunk@217070 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 20:01:05 +00:00
neil%parkwaycc.co.uk
ed4258cef2 Bug 360908 Account Wizard "Finish" should be "Done" on Mac p=sugar.waffle@gmail.com (Hiro) r=me sr=mscott
git-svn-id: svn://10.0.0.236/trunk@217069 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 19:59:31 +00:00
sayrer%gmail.com
3ef429d26e Bug 364070. Places bookmark import running when places bookmarks are not enabled. r=mano.
git-svn-id: svn://10.0.0.236/trunk@217068 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 19:12:52 +00:00
lpsolit%gmail.com
54e7222b48 Bug 364055: Message confusing when your version of DBD::foo is too old - Patch by Frédéric Buclin <LpSolit@gmail.com> r=mkanat a=justdave
git-svn-id: svn://10.0.0.236/trunk@217067 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 16:30:22 +00:00
szegedia%freemail.hu
64ac797ac7 Fix for #342807: Error objects can have automatic "fileName" and "lineNumber" properties
git-svn-id: svn://10.0.0.236/trunk@217066 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 16:15:59 +00:00
szegedia%freemail.hu
b609e76c15 Fix for #342807: Error objects can have automatic "fileName" and "lineNumber" properties
git-svn-id: svn://10.0.0.236/trunk@217065 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 16:08:07 +00:00
szegedia%freemail.hu
e5bf34b183 Fix for #361616
git-svn-id: svn://10.0.0.236/trunk@217064 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 15:27:39 +00:00
gavin%gavinsharp.com
072db601f3 Mac bustage fix for bug 361351
git-svn-id: svn://10.0.0.236/trunk@217063 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 15:11:56 +00:00
gavin%gavinsharp.com
c8cffe7fb1 Bug 363734: update French DOMi locale, patch by Cédric Corazza <cedric.corazza@wanadoo.fr>, r=bugzilla.fr@gmail.com
git-svn-id: svn://10.0.0.236/trunk@217062 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:59:17 +00:00
gavin%gavinsharp.com
eef25bc48a Bug 363138: Extra separator on mail context menu, patch by Neuos (formerly Paradigm K.) <neuos@technodrome.com>, r=IanN, sr=Neil
git-svn-id: svn://10.0.0.236/trunk@217061 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:57:33 +00:00
gavin%gavinsharp.com
bccaa15503 Bug 361351: nsIFile.exists() should throw NOT_INITIALIZED if nsIFile is not initialized, patch by Ryan Jones <sciguyryan+bugzilla@gmail.com>, r+sr=darin
git-svn-id: svn://10.0.0.236/trunk@217060 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:55:00 +00:00
gavin%gavinsharp.com
51a92482a0 Bug 358512: notification sliding does not complete last step, patch by Mook <mook.moz+sites.org.mozilla.bugzilla@gmail.com>, r=enndeakin
git-svn-id: svn://10.0.0.236/trunk@217058 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:48:12 +00:00
gavin%gavinsharp.com
574c3e161b Bug 348520: remove threadpane.dtd from thunderbird, patch by Magnus Melin <mkmelin+mozilla@iki.fi>, r=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217057 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:46:18 +00:00
gavin%gavinsharp.com
9400380c7a Bug 345121: Option "File replies in folder of original message" disabled, patch by Magnus Melin <mkmelin+mozilla@iki.fi>, r=mscott
git-svn-id: svn://10.0.0.236/trunk@217055 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:42:57 +00:00
gavin%gavinsharp.com
af54921f6e Bug 320468: SetDelayCaretOverExistingSelection is unused, patch by Adam Guthrie <ispiked@gmail.com>, r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217054 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:40:44 +00:00
gavin%gavinsharp.com
053886d76a Bug 307058: Folder Properties dialog's Retention Policy tab has incorrectly aligned captions, patch by Magnus Melin <mkmelin+mozilla@iki.fi>, r=mscott
git-svn-id: svn://10.0.0.236/trunk@217052 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:38:07 +00:00
gavin%gavinsharp.com
bc4d6b90ec Bug 269254: fix bug in utf16ToUcs4()'s returned length, patch by Ryan Jones <sciguyryan+bugzilla@gmail.com>, r+sr=biesi
git-svn-id: svn://10.0.0.236/trunk@217051 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:36:12 +00:00
gavin%gavinsharp.com
6fd6852c5a Bug 262866: Invalid path offered when file already exists (Save all attachments), patch by Magnus Melin <mkmelin+mozilla@iki.fi>/Katsuhiro MIHARA <katsuhiromihara@goo.jp>, r+sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217050 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:34:12 +00:00
gavin%gavinsharp.com
7a9f44f99f Bug 212852: Browser assumes ftp protocol for URL's beginning with 'ftp' and written without protocol in address field, patch by Magnus Melin <mkmelin+mozilla@iki.fi>, r=biesi, sr=darin
git-svn-id: svn://10.0.0.236/trunk@217049 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:32:19 +00:00
gavin%gavinsharp.com
1b320b5fc0 Bug 364041: failure to detect SeaMonkey (>= 1.0) as valid default browsers, which breaks first-startup profile migration, r=mano
git-svn-id: svn://10.0.0.236/trunk@217048 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:30:05 +00:00
gavin%gavinsharp.com
f9ef193f2b Bug 364042: first startup profile migration is broken, r=mano
git-svn-id: svn://10.0.0.236/trunk@217047 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 14:27:58 +00:00
bugzilla%standard8.demon.co.uk
30cb571fb8 Bug 361683 Help buttons missing for mailnews items in suiterunner builds r=iann_bugzilla
git-svn-id: svn://10.0.0.236/trunk@217046 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 08:39:20 +00:00
stridey%gmail.com
81378dcdb4 Camino only - Missed strings from Bug 356708: Make the corrupted bookmark dialog less jargony.
git-svn-id: svn://10.0.0.236/trunk@217045 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 07:41:47 +00:00
rhelmer%mozilla.com
415dc71d70 updates for 1508, reverse order so more critical operations (partials) run first
git-svn-id: svn://10.0.0.236/trunk@217043 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 06:57:08 +00:00
rhelmer%mozilla.com
b8b5b3bed7 initialize config variables between runs b=363871 r=tfullhart
git-svn-id: svn://10.0.0.236/trunk@217042 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 06:50:46 +00:00
stridey%gmail.com
6c316c2f62 Bug 362042: Remove pre-Cocoa-Cairo remnants from basebrowser-mac-macho. Patch by ardissone <alqahira@ardisson.org>. r=smorgan sr=mento
git-svn-id: svn://10.0.0.236/trunk@217041 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 04:58:25 +00:00
dbaron%dbaron.org
806b1c5919 Use unsigned value with 1-bit field width, per sicking's advice. No bug.
git-svn-id: svn://10.0.0.236/trunk@217040 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 02:11:38 +00:00
mkanat%bugzilla.org
4bdf98635a Bug 345405: showdependencygraph.cgi: Dependency Graphs are broken on mod_perl
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=myk


git-svn-id: svn://10.0.0.236/trunk@217039 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 01:47:12 +00:00
igor.bukanov%gmail.com
78871b5335 Bug 363057: Propagating cx to MakeStringImmutable so it can properly report out-of-memory. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217038 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 01:27:48 +00:00
scott%scott-macgregor.org
1f800eac06 Bug #362241 --> thread pane selection is lost when thunderbird compacts folders in the background. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217037 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 01:13:55 +00:00
scott%scott-macgregor.org
be46cbbe58 Bug #363993 --> ModifyCard is not a property of nsIAbMDBDirectory, it is a property of nsIAbDirectory. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217036 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 01:11:58 +00:00
scott%scott-macgregor.org
b916ccaa6b Bug #363979 --> Package storage.xpt and dom_storage.xpt files. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217035 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 01:09:29 +00:00
scott%scott-macgregor.org
8e18cf5784 Bug #362754 --> improve the english translation of the confirm phishing url entity string. Not changing the meaning at all. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217034 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-16 01:04:08 +00:00
dbaron%dbaron.org
d0ca35d600 Fix crash regression by doing the best we can for computed padding/margin when there's no frame. b=363950 r+sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@217033 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 23:39:43 +00:00
bzbarsky%mit.edu
7bb79c2d4b Fix warning. Bug 347705, no review.
git-svn-id: svn://10.0.0.236/trunk@217032 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 23:15:58 +00:00
ghendricks%novell.com
9cb03f81f3 Versions are converted to numbers instead of strings
git-svn-id: svn://10.0.0.236/trunk@217031 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 21:42:55 +00:00
bzbarsky%mit.edu
ea96e4cb5d Fix error in previous patch for bug 348691. Reviews pending.
git-svn-id: svn://10.0.0.236/trunk@217030 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 21:39:30 +00:00
bienvenu%nventure.com
1f917eac36 fix removing of a single default tag (the old labels), sr=mscott 348752
git-svn-id: svn://10.0.0.236/trunk@217029 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 20:45:14 +00:00
ghendricks%novell.com
2bf5a4b941 Bugzilla Bug 358424
hyperlinks do not work


git-svn-id: svn://10.0.0.236/trunk@217027 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 20:08:48 +00:00
ghendricks%novell.com
afe69a2f31 update multiple was setting the status when it shouldn't
links to csv were broken on opensource
removed unused file


git-svn-id: svn://10.0.0.236/trunk@217026 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 19:49:55 +00:00
mozilla%weilbacher.org
c6bdce8b5b Bug 351246 (Part 4). Recreated configure was still missing
git-svn-id: svn://10.0.0.236/trunk@217025 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 19:00:57 +00:00
cltbld
8bf319306a Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@217024 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 18:41:02 +00:00
sspitzer%mozilla.org
7393a57057 fix for bug #355738
re-enable places by default.  note, this will not enable all of places, just
history on top of places.

also note, we are using places.sqlite now (and not bookmarks_history.sqlite)
because the schema has changed.

r=mconnor


git-svn-id: svn://10.0.0.236/trunk@217023 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 18:40:08 +00:00
sayrer%gmail.com
bfebe8d327 Bug 309085. False positives from FeedHandler.harvestFeeds hide distinct feeds. r=gavin, ui-r=beltzner
git-svn-id: svn://10.0.0.236/trunk@217021 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 17:57:43 +00:00
joshmoz%gmail.com
c88dde303d remove unused code from cocoa cursor code. b=363629 r=cbarrett r=smorgan
git-svn-id: svn://10.0.0.236/trunk@217020 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 17:32:16 +00:00
ghendricks%novell.com
556386aa24 add support for creating object from env and build
git-svn-id: svn://10.0.0.236/trunk@217019 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 16:57:30 +00:00
bienvenu%nventure.com
9fb28f6487 don't send rtf or vcs files as text/plain, sr=mscott 363764
git-svn-id: svn://10.0.0.236/trunk@217017 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 16:20:32 +00:00
bugzilla%standard8.demon.co.uk
7d981cbbbd SeaMonkey doesn't need to enter xpfe/communicator any more (part of Bug 363266 - Simplify some ifdefs/Restructure some DIRS under xpfe/) r=KaiRo,benjamin
git-svn-id: svn://10.0.0.236/trunk@217016 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 15:22:04 +00:00
lpsolit%gmail.com
2d6deb20ac Bug 363894: Use a better date format in notifications about user account creation and email address change (and include the timezone too) - Patch by Frédéric Buclin <LpSolit@gmail.com> r=timeless a=myk
git-svn-id: svn://10.0.0.236/trunk@217015 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 12:30:02 +00:00
Olli.Pettay%helsinki.fi
cb11b4c039 Bug 363879, deCOMtaminate nsGrid dir, p=Andreas Lange, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217014 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 12:18:37 +00:00
igor.bukanov%gmail.com
617bf0b194 Bug 313967: function body parser use the shared recycle list. r=brendan
git-svn-id: svn://10.0.0.236/trunk@217013 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 10:50:20 +00:00
thomas.benisch%sun.com
844598e406 bug #350323 add selected calendar to composite calendar r=lilmatt
git-svn-id: svn://10.0.0.236/trunk@217012 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 10:28:57 +00:00
thomas.benisch%sun.com
8cdd4af922 bug #362930 Selected calendar will not be restored after restart of Lightning r=lilmatt
git-svn-id: svn://10.0.0.236/trunk@217011 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 10:17:07 +00:00
uriber%gmail.com
50a51cb08d Bug 363378: Caret gets stuck (or moves incorrectly) in empty table cells when using left/right arrow keys. r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@217008 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 09:32:24 +00:00
brendan%mozilla.org
e3be1c2962 Fix 363917, r=igor.
git-svn-id: svn://10.0.0.236/trunk@217007 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 08:00:13 +00:00
bzbarsky%mit.edu
3723073263 Adding testcase.
git-svn-id: svn://10.0.0.236/trunk@217006 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 06:37:07 +00:00
ginn.chen%sun.com
deac34db38 Bug 359790 set text doesn't work correctly for XUL entry
patch by nian.liu at sun.com r=aaronleventhal


git-svn-id: svn://10.0.0.236/trunk@217005 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 06:28:11 +00:00
ajschult%verizon.net
82b497bce0 Bug 363804: new / delete / free mismatch in mimeobj. r+sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@217004 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 03:53:31 +00:00
ajschult%verizon.net
68fe64450f Bug 363678: have fast-update use non-recursive bonsai queries for local directories. r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@217003 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 03:43:18 +00:00
martijn.martijn%gmail.com
d1b4f97646 Partial back-out of patch for bug 330705 to fix the regressions it caused
git-svn-id: svn://10.0.0.236/trunk@217002 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 02:50:57 +00:00
jwalden%mit.edu
6262239dc7 Bug 342877 - Substantially revamp/rewrite the testing-only HTTP server used in necko unit tests, making it suitable for use in Mozilla tests which require files be stored on an HTTP server (e.g. because the test depends on certain HTTP headers being set or not set, the functionality uses HTTP, etc.) but which don't require that the server have a specified hostname. Docs, implementation, and tests (!) are in netwerk/test/httpserver/; if you have questions about using the server in unit tests or have some use case which the server could support better or doesn't support at all, CC me on the bug and I'll see how I can help. Huge (huge) thanks to biesi for the review of the huge patch. r=davel on test-harness changes, r=biesi on the server and test changes
git-svn-id: svn://10.0.0.236/trunk@217001 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 02:13:54 +00:00
roc+%cs.cmu.edu
23b002054c Bug 359371. Calculate correct available content-height when a float has border or padding. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@217000 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 01:52:53 +00:00
dbaron%dbaron.org
0190abe263 Use hidden visibility for JPEG lib when we build it. b=359461 r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216999 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 00:27:53 +00:00
dbaron%dbaron.org
3ca8e8e2ff Add lber.h, used by LDAP code. b=363679 r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216998 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 00:24:25 +00:00
Olli.Pettay%helsinki.fi
aec65575d1 Bug 336574, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216997 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-15 00:23:39 +00:00
mattwillis%gmail.com
8d457acb68 bug 363275 - Makes week printout show correct dates for timezones with positive offset from UTC. r1=ssitter, r2=dmose
git-svn-id: svn://10.0.0.236/trunk@216996 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 23:26:39 +00:00
bzbarsky%mit.edu
58c4c002b2 Adding regression test.
git-svn-id: svn://10.0.0.236/trunk@216995 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 22:35:52 +00:00
joshmoz%gmail.com
d784b86bc6 Apple Event handling for use with Cocoa widgets. Patch by Stan Shebs. b=355352 r=josh moa=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216994 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 22:00:46 +00:00
mozilla%weilbacher.org
9c4f11abbe [OS/2] Bug 265798: add min-height to make new toolbar visible, p=philringnalda, r(OS/2 only)=me
git-svn-id: svn://10.0.0.236/trunk@216992 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 21:54:49 +00:00
Olli.Pettay%helsinki.fi
bbd39f5447 Bug 363817, nsVoidArray mAttachedStack to nsTArray<nsRefPtr<nsXBLBinding> >, r+sr=jst
git-svn-id: svn://10.0.0.236/trunk@216991 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 21:32:10 +00:00
benjamin%smedbergs.us
0327ccd65c Bug 363079 - MozillaBuild for Windows, initial cut (there are still known bugs to fix, and need to implement an installer), r=preed
git-svn-id: svn://10.0.0.236/trunk@216990 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 20:44:58 +00:00
wtchang%redhat.com
2e366638ed [OS/2] Bug 351246: Load Mozilla into Highmem on OS/2. Part 2, changes to
NSPR. By Peter Weilbacher <mozilla@weilbacher.org>. r=mkaply, sr=wtc


git-svn-id: svn://10.0.0.236/trunk@216989 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 19:29:25 +00:00
benjamin%smedbergs.us
0a46d346a5 Bug 361413 - Build succeeds even when arch-specific xptcall is not implemented, r=timeless
git-svn-id: svn://10.0.0.236/trunk@216988 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 19:13:43 +00:00
sayrer%gmail.com
6dacac1bce Bug 358946. Let the places unit tests pass. r=sspitzer,mano
git-svn-id: svn://10.0.0.236/trunk@216987 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 17:28:52 +00:00
ghendricks%novell.com
2432c46853 Cleared up some inconsistencies with caserun editing
git-svn-id: svn://10.0.0.236/trunk@216986 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 17:25:17 +00:00
richm%stanfordalumni.org
96a84d4d49 Resolves: bug 299995
Description: Use PK11_TokenKeyGenWithFlags instead of PK11_KeyGen
Fix Description: Use the new function and pass in CKF_ENCRYPT|CKF_DECRYPT
as the keygen flags.


git-svn-id: svn://10.0.0.236/trunk@216984 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 17:09:17 +00:00
richm%stanfordalumni.org
ff18d41b73 Resolves: bug 363168
Description: Add autotool support to svrcore; have svrcore build shared libs
Fix Description: This is a pretty basic autotool-ization using libtool
to build the shared library.  The vast majority of the work was done
by Toshio-san.  However, there are a couple of extras worth noting:
1) Windows builds are different now.  In order to build on Windows using
the MSVC compiler, you still have to use coreconf.  I just could not get
configure/libtool to work correctly with the MSVC compiler.  The old
makefile has been moved to src/Makefile.win, so you just have to
 cd src ; make -f Makefile.win
I also updated the README and INSTALL.win to add this information.
2) I added some m4 files to find and figure out which nspr and nss to use
based on the environment and pkg-config.


git-svn-id: svn://10.0.0.236/trunk@216983 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 17:07:32 +00:00
martijn.martijn%gmail.com
8dc347cd42 Bug 330705 - Using blur() on some unfocused element also blurs the focused element, r=jst, sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@216982 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 13:59:50 +00:00
Olli.Pettay%helsinki.fi
46b0b0fc24 Bug 363810, strong reference to owner document while deleting properties, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@216981 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 11:31:28 +00:00
michael.buettner%sun.com
763bbd0e47 fixed sign-problem with alarmOffset
git-svn-id: svn://10.0.0.236/trunk@216979 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 08:24:56 +00:00
dbaron%dbaron.org
56a1a43b54 Forgot to rev IID. b=332922
git-svn-id: svn://10.0.0.236/trunk@216978 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 08:00:53 +00:00
masayuki%d-toybox.com
01992f3d68 Bug 363410 Implement font-size-adjust on Linux r=pavlov
git-svn-id: svn://10.0.0.236/trunk@216977 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 04:14:06 +00:00
masayuki%d-toybox.com
731c5162cb Bug 362428 [Cairo] 'normal' keyword for line-height is too tall with 'Lucida Grande'. r=pavlov
git-svn-id: svn://10.0.0.236/trunk@216976 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 04:12:40 +00:00
reed%reedloden.com
89a837d71f Bug 363739 - "graph.html has several validation errors" [p=reed r=thunder]
git-svn-id: svn://10.0.0.236/trunk@216975 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 03:57:26 +00:00
cst%yecc.com
04fcda6a25 Bug 358553 Disabled and checked menuitems should always have disabled checkmarks
Images by stefanh, r+sr=neil


git-svn-id: svn://10.0.0.236/trunk@216973 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 03:31:58 +00:00
cst%yecc.com
b8a69ce731 Bug 358553 Disabled and checked menuitems should always have disabled checkmarks
Patch by stefanh <stefanh@bluebottle.com>
r+sr=neil


git-svn-id: svn://10.0.0.236/trunk@216972 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 03:27:16 +00:00
cst%yecc.com
4dc1cb5575 Bug 301477 image zoom cursor does not change after resizing browser window
r=bz sr=jst


git-svn-id: svn://10.0.0.236/trunk@216971 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-14 02:06:49 +00:00
dbaron%dbaron.org
534cefc5fa Remove nsLineLayout::mWordWidth, which should have been removed in earlier reflow branch merging. b=363232 r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216966 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 23:11:13 +00:00
dbaron%dbaron.org
866a194991 Better API for used padding/border/margin: remove deprecated Calc*For on nsStyleStructs and add GetUsed* to nsIFrame. b=332922 r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216965 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 23:04:57 +00:00
mozilla%weilbacher.org
d9604b2cd3 [OS/2] Bug 351246: Load Mozilla into Highmem on OS/2. Part 4, changes to LDAP build config (LDAP trunk version). r=mkaply, r=mcs
git-svn-id: svn://10.0.0.236/trunk@216963 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 22:12:16 +00:00
mkanat%bugzilla.org
8a1eb23cc4 Post-checkin fix for bug 360710: Fix how docs get the required DBD versions.
git-svn-id: svn://10.0.0.236/trunk@216962 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 22:03:50 +00:00
cltbld
ac15ce4cf1 Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216961 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 22:01:03 +00:00
mozilla%weilbacher.org
7b30ebaa02 [OS/2] Bug 351246: Load Mozilla into Highmem on OS/2. Part 3, changes to build config. r=mkaply, sr=wtc
git-svn-id: svn://10.0.0.236/trunk@216960 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 21:57:56 +00:00
mkanat%bugzilla.org
f100a74462 Bug 360710: checksetup.pl needs to blacklist some non-working external modules
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=justdave


git-svn-id: svn://10.0.0.236/trunk@216959 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 21:45:12 +00:00
mattwillis%gmail.com
530e3db408 Removing README.txt for Mozilla Suite from Sunbird builds. Was causing trouble with unify.
git-svn-id: svn://10.0.0.236/trunk@216958 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 21:43:31 +00:00
hwaara%gmail.com
efaa01b40b Make sure disabled buttons never get the default button look. r=josh, sr=pavlov, b=362820
git-svn-id: svn://10.0.0.236/trunk@216957 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 21:37:34 +00:00
mozilla.mano%sent.com
a7e2df9cf3 Bug 360211 - text fields are transparent in cocoa-cairo builds. r=josh, sr=pavlov.
git-svn-id: svn://10.0.0.236/trunk@216955 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 21:13:42 +00:00
neil%parkwaycc.co.uk
df888d713e Bug 363444 Small objects sometimes incorrectly scrolled into view r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216954 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 20:43:59 +00:00
ccooper%deadsquid.com
2ae105144f b=363658
- fix footer links


git-svn-id: svn://10.0.0.236/trunk@216953 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 20:30:13 +00:00
gijskruitbosch%gmail.com
d8915d70bc Bug 135926 - Support for IRCnet network
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@216952 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 20:29:35 +00:00
gijskruitbosch%gmail.com
6b73e409d7 Bug 227366 - Add irc-hispano to default network list
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@216951 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 20:21:07 +00:00
ccooper%deadsquid.com
7534b912ca b=363658
- fix runaway JS from double product setting


git-svn-id: svn://10.0.0.236/trunk@216950 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 20:04:36 +00:00
mattwillis%gmail.com
382969e162 Add Sunbird to list of 'normal' profile directories on Mac. r=coop via IRC
git-svn-id: svn://10.0.0.236/trunk@216949 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 19:12:21 +00:00
mvl%exedo.nl
e528e80cfe bug 343792: bulletproof libical to not hang after import of .ics file which has INTERVAL=0 in RRULE. r=dbo
git-svn-id: svn://10.0.0.236/trunk@216948 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 19:06:08 +00:00
reed%reedloden.com
90dff61149 Bug 353459 - "Unable to load config.pl if the GTop perl module is installed." [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216947 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 18:49:19 +00:00
mattwillis%gmail.com
347987a472 Fix lightning's CVSROOT
git-svn-id: svn://10.0.0.236/trunk@216946 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 18:34:08 +00:00
mattwillis%gmail.com
839d45940c bug 340920 - Make Sunbird builds Universal
git-svn-id: svn://10.0.0.236/trunk@216945 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 18:17:08 +00:00
mkanat%bugzilla.org
1839c95781 Bug 357847: recommend Theory58S instead of landfill for ppm users
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=glob, a=justdave


git-svn-id: svn://10.0.0.236/trunk@216944 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 17:36:03 +00:00
bienvenu%nventure.com
0f25e83178 fix 362735 problem in rich text conversion, patch by guninski@guninski.com, r=bienvenu, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216943 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 16:25:53 +00:00
uriber%gmail.com
774e156325 Use the containing block's direction (LTR/RTL) instead of this frame's direction when deciding on default alignment of the frame. bug=328181 r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@216942 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 16:16:25 +00:00
smontagu%smontagu.org
f05531a6b7 Bug 345238: Make XPFE alerts service use alert origin reported by look and feel. Ported from the toolkit patch by Jens Bannmann <jens.b@web.de>, r=neil, sr=biesi
git-svn-id: svn://10.0.0.236/trunk@216941 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 16:06:20 +00:00
bzbarsky%mit.edu
e4cf24b861 Push the JSContext we're going to run the javascript: URL in on the stack
before doing anything else.  Bug 363594, r+sr=jst


git-svn-id: svn://10.0.0.236/trunk@216940 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 15:52:55 +00:00
bzbarsky%mit.edu
f7370ae6b5 Use string buffers to store strings in nsCSSValue so we don't have to alloc in
copy constructors and such.  Bug 350141, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@216939 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 15:49:36 +00:00
cltbld
e0b765ccef Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216938 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 15:21:03 +00:00
gijskruitbosch%gmail.com
0266dfb861 Bug 361409 - Configure should list options for fixing java-xpcom deficits more clearly
first-r=benjamin@smedbergs.us (Benjamin Smedberg)


git-svn-id: svn://10.0.0.236/trunk@216937 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 15:14:29 +00:00
aaronleventhal%moonset.net
82cd6f52a8 Bug 363617. Missing support for some ARIA properties. r=ginn.chen, sr=neil
git-svn-id: svn://10.0.0.236/trunk@216936 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 14:40:54 +00:00
dbaron%dbaron.org
6552bcb27d Correct style for messages already converted from RSS to HTML email. b=363154 r=mscott
git-svn-id: svn://10.0.0.236/trunk@216934 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 08:08:24 +00:00
dbaron%dbaron.org
9c1887ad97 Generate CSS that's *supposed* to make the iframe fill the viewport. b=363154 r=mscott
git-svn-id: svn://10.0.0.236/trunk@216933 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 08:06:56 +00:00
dbaron%dbaron.org
7c3d43cc80 Fix bustage. b=363524
git-svn-id: svn://10.0.0.236/trunk@216932 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 04:21:05 +00:00
despotdaemon
a4f1fdaeca Pseudo-automatic update of changes made by dbaron@dbaron.org.
git-svn-id: svn://10.0.0.236/trunk@216931 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 04:18:42 +00:00
despotdaemon
4f78eb0b55 Pseudo-automatic update of changes made by dbaron@dbaron.org.
git-svn-id: svn://10.0.0.236/trunk@216930 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 04:17:36 +00:00
despotdaemon
8c180cd1b3 Pseudo-automatic update of changes made by dbaron@dbaron.org.
git-svn-id: svn://10.0.0.236/trunk@216929 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 04:15:59 +00:00
despotdaemon
db77e554fe Pseudo-automatic update of changes made by dbaron@dbaron.org.
git-svn-id: svn://10.0.0.236/trunk@216928 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 04:14:42 +00:00
ccooper%deadsquid.com
8a1c8682b8 - updating calendar configs to run on new intel xserve
git-svn-id: svn://10.0.0.236/trunk@216927 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 04:03:19 +00:00
dbaron%dbaron.org
08d8ed684c Reflow all of the table structure (although not its descendants) when frame structure within the table is changed. b=363524 r=bernd sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@216926 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 03:45:28 +00:00
cst%yecc.com
6a74e8c266 Bug 363422 Fix confirmEx parameters (broken "delete all cookies" button)
r=neil


git-svn-id: svn://10.0.0.236/trunk@216923 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 01:13:01 +00:00
sayrer%gmail.com
813328f8de Bug 363636. duplicate nsLivemarkService.getSiteURI in toolbar.xml. r=sspitzer/gavin
git-svn-id: svn://10.0.0.236/trunk@216922 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 01:05:31 +00:00
bzbarsky%mit.edu
da2551af1f Having an empty textnode or CDATA section child should not prevent an element
from matching :empty.  Bug 315620, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@216919 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-13 00:18:32 +00:00
bienvenu%nventure.com
ae4ae2eb1f fix hang when doing a quick search while in threaded mode, sr=mscott 331014
git-svn-id: svn://10.0.0.236/trunk@216917 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 23:41:00 +00:00
wtchang%redhat.com
79bcd9fcd8 Bug 236613: added newline at end of file.
git-svn-id: svn://10.0.0.236/trunk@216914 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 23:26:40 +00:00
mnyromyr%tprac.de
a96e3f7e01 Bug 362741: Selecting folder with previous view unread, while viewing another unread folder, fails; p=Kent James <kent@caspia.com>, r=me, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216913 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 23:24:51 +00:00
mnyromyr%tprac.de
49623e06d8 Bug 362990: asynchronous message view list manipulation; r=neil, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216912 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 23:20:48 +00:00
sayrer%gmail.com
c87c7f7b73 Bug 363506. Can not build nsDocumentViewer.cpp with --disable-printing. Patch by Andreas Lange <mozilla@lange.cx>. r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216911 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 23:00:52 +00:00
bzbarsky%mit.edu
5a40a60434 Make nsAString lookups in nsStaticCaseInsensitiveNameTable a little faster.
Bug 348691, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@216910 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 22:47:16 +00:00
bzbarsky%mit.edu
416011af41 Call the superclass Destroy(). Bug 363149, r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216909 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 22:30:39 +00:00
mozilla%weilbacher.org
26dbf92062 [OS/2] Bug 358296: fix crash when closing filepicker with the system menu, r=mkaply
git-svn-id: svn://10.0.0.236/trunk@216907 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 22:24:52 +00:00
cvshook%sicking.cc
2eec67b7b3 fix bustage for optimized builds
git-svn-id: svn://10.0.0.236/trunk@216906 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 22:05:47 +00:00
mozilla%weilbacher.org
f4e25b5f8e [OS/2] Bug 351246: Load Mozilla into Highmem on OS/2. Part 2, changes to NSPR. r=mkaply, sr=wtc
git-svn-id: svn://10.0.0.236/trunk@216905 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 22:00:25 +00:00
rhelmer%mozilla.com
c77318159c full update verification used by tfullhart for 1508 r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216903 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 21:20:28 +00:00
cvshook%sicking.cc
120424502b Bug 210528: Fix ownership models of some functioncalls in the XPath code and replace some txLists with owning nsTArrays. r/sr=peterv
git-svn-id: svn://10.0.0.236/trunk@216902 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 21:20:15 +00:00
rhelmer%mozilla.com
91d86dd5ac config used for 1508 by tfullhart r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216901 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 21:18:49 +00:00
bzbarsky%mit.edu
dbfd5010c0 Don't return bogus overflow values when we can't compute a real overflow
value.  Bug 319381, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@216900 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 21:16:23 +00:00
bienvenu%nventure.com
1e60671f8a make custom db headers a space delimited list, not comma, follow on to 356860, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216899 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 21:14:35 +00:00
bienvenu%nventure.com
e5846dc78c allow users or extensions to add headers to display in the message pane header area via a pref 353193, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216897 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 19:36:33 +00:00
wtchang%redhat.com
1cb0ab078a Bug 236613: added newline to the end of file.
git-svn-id: svn://10.0.0.236/trunk@216896 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 19:35:56 +00:00
joshmoz%gmail.com
0abb99a15b remove my name from these files, I never did anything with them as far as I know. r=wevah sr=me
git-svn-id: svn://10.0.0.236/trunk@216894 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 19:22:01 +00:00
aaronleventhal%moonset.net
b5987cf65d Bug 359924. Crash when entering characters in XUL textfields, such as find field. r=nian.liu, r=surkov
git-svn-id: svn://10.0.0.236/trunk@216893 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 19:04:25 +00:00
joshmoz%gmail.com
7b76adf46a When a top-level window's parent is destroyed, the parent should set the parent pointer on its children to null. We do this in the other Mac nsIWidget impls, someone just forgot to do it in cocoa top-level windows. b=362952 r=mano r=smorgan
git-svn-id: svn://10.0.0.236/trunk@216892 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:55:24 +00:00
reed%reedloden.com
17f4a9ade6 Bug 61150 - "Site-specific data spread throughout despot" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216891 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:51:09 +00:00
reed%reedloden.com
0db27b871f Bug 166424 - "can't rename a module in despot" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216890 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:38:47 +00:00
dbaron%dbaron.org
e4794b2c9c Correctly align a line with no justification opportunities (a single word) for RTL justified text. Patch originally from Uri Bernstein <uriber@gmail.com>, modified by smontagu and me. b=102019 r=dbaron/smontagu
git-svn-id: svn://10.0.0.236/trunk@216889 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:28:37 +00:00
lpsolit%gmail.com
868db5d9ae Bug 363556: No obvious way to log in to view/change a bug when you're not logged in - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@216888 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:17:34 +00:00
uriber%gmail.com
47d6cf40cf Bug 314519: Caret skips blank lines using right-arrow key in some cases of preformatted text. Take 2. r+sr=roc
git-svn-id: svn://10.0.0.236/trunk@216887 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:12:46 +00:00
stuart.morgan%alumni.case.edu
4cc6242f8f Camino only - Bug 360779: Fix loading of links dropped on tabs. r=max r=ardissone sr=pink
git-svn-id: svn://10.0.0.236/trunk@216886 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:04:27 +00:00
bugzilla%standard8.demon.co.uk
c05e8a2d22 Bug 361193 In suiterunner preferences, advanced -> Mousewheel pane doesn't display (remove obsolete xpfe strings) r=kairo
git-svn-id: svn://10.0.0.236/trunk@216885 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 18:03:17 +00:00
sayrer%gmail.com
991a6880dd Bug 350273. registerContentHandler should throw an exception for malformed URIs. r=mano
git-svn-id: svn://10.0.0.236/trunk@216884 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 17:57:11 +00:00
bzbarsky%mit.edu
11427fca97 Make the GetStyle* getters not go through GetStyleData() so they can be
faster.  Bug 360870, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@216883 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 17:44:45 +00:00
bienvenu%nventure.com
545eabec69 make check for existing keywords be case-insensitive when fetching tags in the thread pane, sr=mscott 355547
git-svn-id: svn://10.0.0.236/trunk@216882 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 17:33:49 +00:00
sayrer%gmail.com
c3491129b4 Bug 266904. Discovered feeds aren't cleared on loads in background tabs (refresh or drag and drop). r=gavin
git-svn-id: svn://10.0.0.236/trunk@216881 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 17:27:34 +00:00
hwaara%gmail.com
e92ea807b0 implement accessible objects for xforms date input controls, r=aaronr, aaronlev, sr=neil, b=349644. Patch by Alexander Surkov <surkov.alexander@gmail.com>
git-svn-id: svn://10.0.0.236/trunk@216880 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 16:19:18 +00:00
bzbarsky%mit.edu
932d12bfe8 Make it possible to start/stop jprof programmatically in C++ inside gklayout.
Bug 354069, r+sr=dbaron


git-svn-id: svn://10.0.0.236/trunk@216879 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 15:47:47 +00:00
bzbarsky%mit.edu
07726b530a Add tests for bug 332557
git-svn-id: svn://10.0.0.236/trunk@216878 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 15:45:12 +00:00
bzbarsky%mit.edu
2a4880f3a6 Don't use LookupKeyword to deal with CSS units. Bug 347705, r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@216876 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 15:34:43 +00:00
bzbarsky%mit.edu
eed3b083f3 Adding test for bug 360065, r=dbaron
git-svn-id: svn://10.0.0.236/trunk@216875 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 15:27:05 +00:00
bzbarsky%mit.edu
82cfd09e26 Fix percentage padding on nodes with overflow other than visible. Bug 332557,
r+sr=dbaron.


git-svn-id: svn://10.0.0.236/trunk@216874 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 15:18:40 +00:00
igor.bukanov%gmail.com
4cd5fdde5c Bug 331966: Fixing orage tinderboxes due to my stupid oversight in RealloSlots.
git-svn-id: svn://10.0.0.236/trunk@216873 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 12:58:42 +00:00
igor.bukanov%gmail.com
3daead6c18 Bug 331966: initial object's slots are allocated together with JSObjects, r=brendan.
git-svn-id: svn://10.0.0.236/trunk@216872 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 10:45:06 +00:00
mats.palmgren%bredband.net
f88e2865ef Fix crash in Print Preview when doc has more than two pages. Patch by Eli Friedman<sharparrow1@yahoo.com>. b=362210 r=me sr=roc
git-svn-id: svn://10.0.0.236/trunk@216871 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 09:54:48 +00:00
justdave%bugzilla.org
7d0ebfb25a Bug 31985: put committer name in the From line on mail from cvsmailfilter
git-svn-id: svn://10.0.0.236/trunk@216870 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 03:44:22 +00:00
reed%reedloden.com
694411a805 Bug 241493 - [p=timeless r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216869 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 03:44:13 +00:00
gavin%gavinsharp.com
499e72a65c Bug 360898: Option to hide processing instructions, patch by Shawn Wilsher <comrade693@gmail.com>, r=db48x, sr=neil
git-svn-id: svn://10.0.0.236/trunk@216868 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 02:05:28 +00:00
cvshook%sicking.cc
1a3376514d Bug 363242: Make txExpandedNameMap typesafe. r/sr=peterv
git-svn-id: svn://10.0.0.236/trunk@216867 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 01:59:30 +00:00
roc+%cs.cmu.edu
08f7e2bd9a Bug 359371. Don't leak overflowing frames if a bug occurs and we still have overflowing frames in an unconstrained reflow situation. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@216866 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 01:06:23 +00:00
scott%scott-macgregor.org
ac1c61a115 Bug #363459 --> add more names to the credit list. Move more names into the Special Thanks section. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216865 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-12 00:37:07 +00:00
tor%cs.brown.edu
bf87e4c98d Bug 363458 - avoid trying to draw circles or ellipses with radius <= 0.
r+sr=roc


git-svn-id: svn://10.0.0.236/trunk@216864 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 23:21:01 +00:00
aaronr%us.ibm.com
b79fe3c6df [XForms] incorrect dup schema error message using inline schemas. Bug 350067, patch by msterlin, r=olli+aaronr
git-svn-id: svn://10.0.0.236/trunk@216861 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 22:14:11 +00:00
ghendricks%novell.com
a8e91342ed run->cases is returning the wrong thing.
git-svn-id: svn://10.0.0.236/trunk@216860 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 22:08:06 +00:00
joshmoz%gmail.com
fc2ebfe878 different approach for fixing 363002. b=363002 r=mento
git-svn-id: svn://10.0.0.236/trunk@216859 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 21:40:32 +00:00
gavin%gavinsharp.com
14050ba106 Bug 363318: use native btoa() where possible, and optimize the JS-implemented b64() for the search service (large slowdown seen when the feed preview page is shown), r=mano
git-svn-id: svn://10.0.0.236/trunk@216858 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 21:29:38 +00:00
sspitzer%mozilla.org
06fd784c9f fix for bug #344284, saved search history not imported from Safari. r=gavin
git-svn-id: svn://10.0.0.236/trunk@216857 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 21:12:12 +00:00
pedemont%us.ibm.com
a696c4c0e4 Bug 335696 - Provide helper method for embedding in AWT/Swing (Mac only for the moment). r=bsmeberg
git-svn-id: svn://10.0.0.236/trunk@216856 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 21:07:02 +00:00
gavin%gavinsharp.com
58b58f6992 Bug 361061: params added nsISearchEngine::addParam() are sometimes forgotten after a restart (especially for engines added without icons), r=mano
git-svn-id: svn://10.0.0.236/trunk@216855 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 20:54:35 +00:00
bmlk%gmx.de
586eb3f128 typo fix
git-svn-id: svn://10.0.0.236/trunk@216854 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 20:09:25 +00:00
lpsolit%gmail.com
682be710f0 Bug 297186: Send emails in the recipient's locale, not the current user's - Patch by Frédéric Buclin <LpSolit@gmail.com> r=bkor a=justdave
git-svn-id: svn://10.0.0.236/trunk@216853 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 18:00:46 +00:00
despotdaemon
e584bd7817 Pseudo-automatic update of changes made by brendan@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@216852 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 18:00:11 +00:00
dietrich%mozilla.com
c16f693d65 Tests for Bug 359862 (r=sspitzer)
git-svn-id: svn://10.0.0.236/trunk@216851 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 17:16:55 +00:00
olav%bkor.dhs.org
c402b6f16a Bug 181239: Do not show flag table's header when all flags are disabled
Patch by Olav Vitters <olav@bkor.dhs.org> r=LpSolit a=justdave


git-svn-id: svn://10.0.0.236/trunk@216850 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 16:51:47 +00:00
tor%cs.brown.edu
8c3f65c081 Bug 361070 - Implement feBlend and feComposite.
Patch by amenzie@us.ibm.com, r=tor, sr=roc.


git-svn-id: svn://10.0.0.236/trunk@216849 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 16:33:08 +00:00
stridey%gmail.com
55a35a3c1a Camino only - Bug 335637: General polish to the Certificates window. r=ardissone sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@216848 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 16:10:58 +00:00
mattwillis%gmail.com
46854f8451 bug 360947 - Fixes calendar grid to not overflow when screen is in portrait mode. Patch by <gekacheka@yahoo.com> r1=lilmatt, r2=mvl
git-svn-id: svn://10.0.0.236/trunk@216847 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 16:08:10 +00:00
mattwillis%gmail.com
d42315e08f bug 358701 - Makes vertical day/date header column narrower. Patch by <gekacheka@yahoo.com>, r1=lilmatt, r2=mvl, ui-r=mvl
git-svn-id: svn://10.0.0.236/trunk@216846 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 15:50:18 +00:00
kaie%kuix.de
df796d13a7 Bug 355409, unable to search LDAP server (over SSL) with tbird 2.0 build, but 1.5.0.7 works
r=wtchang


git-svn-id: svn://10.0.0.236/trunk@216845 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 13:51:25 +00:00
gijskruitbosch%gmail.com
aea190009b Bug 363141 - "this.whoisList has no properties" when doing a /query
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@216844 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 11:55:44 +00:00
Olli.Pettay%helsinki.fi
e37cecac93 Bug 361501, use 'anonid' attribute inside anonymous content as ID attribute, p=surkov, r=aaronr+me
git-svn-id: svn://10.0.0.236/trunk@216843 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 10:54:09 +00:00
Olli.Pettay%helsinki.fi
9cd35293e7 Bug 361366, problems with xf:repeat in anonymous content, r=aaronr+doronr
git-svn-id: svn://10.0.0.236/trunk@216842 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 10:24:25 +00:00
martijn.martijn%gmail.com
cdb785a2f0 Bug 363285 - marquee broken, r+sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@216841 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 09:51:46 +00:00
gerv%gerv.net
a54c420f30 Bug 236613: change to MPL/LGPL/GPL tri-license.
git-svn-id: svn://10.0.0.236/trunk@216839 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 09:45:41 +00:00
hwaara%gmail.com
ae9ba90686 Make all buttons (also those that are not by definition popupmenus) that have a menu expose the ShowMenu action (by making them mozPopupButtonAccessible instances under the hood). r=surkov, b=363082
git-svn-id: svn://10.0.0.236/trunk@216838 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 09:37:01 +00:00
joshmoz%gmail.com
638836cc26 Some keys like arrow keys send double command events to NSView's performKeyEquivalent:, one for key up and one for key down. This doesn't make sense for us, so only handle key down command events. b=363005 r=cbarrett r=froodian r=cl
git-svn-id: svn://10.0.0.236/trunk@216837 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 05:31:33 +00:00
dougt%meer.net
e93f384e2b Trying bandaide for crash at [@ imgRequest::OnStopRequest]. see bug 361499.
git-svn-id: svn://10.0.0.236/trunk@216836 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 04:15:45 +00:00
roc+%cs.cmu.edu
3d86905040 Bug 357351. Assertion should be #ifdef MOZ_CAIRO_GFX only. Debug-only change.
git-svn-id: svn://10.0.0.236/trunk@216835 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-11 00:09:50 +00:00
timeless%mozdev.org
8753f00580 Removing lowercase filename because it's identical to a properly named file
git-svn-id: svn://10.0.0.236/trunk@216834 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 23:19:34 +00:00
sayrer%gmail.com
eba310c07d Bug 361030. Bookmarks refresh problem due to JS error code. r=sspitzer/jminta
git-svn-id: svn://10.0.0.236/trunk@216833 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 22:40:39 +00:00
roc+%cs.cmu.edu
3713dfee3b Fixing DEBUG_roc-only bustage. NPOB.
git-svn-id: svn://10.0.0.236/trunk@216831 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 22:06:53 +00:00
roc+%cs.cmu.edu
4d9d5d0511 Bug 326758. Bullets should accept mouse events. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@216830 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 21:56:30 +00:00
roc+%cs.cmu.edu
95b9c792e0 Bug 344894. Process mContentFrame before mLegendFrame in nsFieldSetFrame::BuildDisplayList, because mContentFrame might have out-of-flow frames whose placeholders are in mLegendFrame and we always need to visit out-of-flow frames before their placeholders while building display lists. r+sr=dbaron
git-svn-id: svn://10.0.0.236/trunk@216829 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 21:53:53 +00:00
bienvenu%nventure.com
205b3ad002 fix 298737 newsgroups lose track of counts when headers haven't been downloaded, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216828 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 21:28:37 +00:00
ajschult%verizon.net
c0a04ffd9d Bug 361437: GRE should be installed locally. Patch by Benoît <benoit@gawab.com>. r=CTho, sr=Neil
git-svn-id: svn://10.0.0.236/trunk@216827 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 21:07:45 +00:00
stridey%gmail.com
0d2936025d Camino only - Bug 362541: Tooltips for Download toolbar buttons should update to reflect the number of items selected. r=cl sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@216826 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 19:16:20 +00:00
db48x%yahoo.com
4781091ef7 bug 363112: nsDeckFrame::GetSelectedBox should use mIndex
patch by Alex Vincent <ajvincent@gmail.com>, r=enn, sr=neil


git-svn-id: svn://10.0.0.236/trunk@216825 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 18:13:48 +00:00
bienvenu%nventure.com
61bd14e6ba land part of fix for 360342 that I missed due to a merge conflict, sr=mscott, fix crash deleting imap attachment
git-svn-id: svn://10.0.0.236/trunk@216824 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 16:45:21 +00:00
cst%yecc.com
98717b2da9 Bug 362905 OK/Cancel are almost never the right choices
r+sr=neil


git-svn-id: svn://10.0.0.236/trunk@216823 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 16:02:27 +00:00
masayuki%d-toybox.com
af0e2675bd Bug 357637 Loading time (Tp) of pages with Chinese text is unbearable r=stuart
git-svn-id: svn://10.0.0.236/trunk@216822 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 14:01:36 +00:00
kjh-5727%comcast.net
453fd077ad Bug 360485 - Factor out nsIDeviceContextSpecFactory. Part B: deleted files. r=pavlov, sr=roc.
git-svn-id: svn://10.0.0.236/trunk@216821 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 13:02:12 +00:00
silver%warwickcompsoc.co.uk
4d8b39114c Bug 363276 - Specify more properties so Gecko doesn't guess 'wrong'.
ChatZilla only.
r=samuel


git-svn-id: svn://10.0.0.236/trunk@216820 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 12:54:29 +00:00
kjh-5727%comcast.net
ef03dea008 Bug 360485 - OS/2 build bustage fix. Patch by Andy Williams <abwillis1@gmail.com>.
git-svn-id: svn://10.0.0.236/trunk@216819 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 12:47:13 +00:00
mozilla%weilbacher.org
712a4e7cb3 [OS/2] Bug 351246: Load Mozilla into Highmem on OS/2. Part 1, changes to OS/2 only core code. r=abwillis1, sr=mkaply
git-svn-id: svn://10.0.0.236/trunk@216818 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 08:53:03 +00:00
sharparrow1%yahoo.com
bbc7755ab2 Bug 361844: Printing cleanup; r+sr=roc. Changes the way the presentation is managed for print preview, plus many smaller cleanups.
git-svn-id: svn://10.0.0.236/trunk@216817 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 08:05:05 +00:00
mozilla.mano%sent.com
e767bc6b84 Bug 363339 - Gran Paradiso dmg license is improperly encoded. patch from Smokey Ardisson, <alqahira@ardisson.or>, r=me.
git-svn-id: svn://10.0.0.236/trunk@216816 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 08:00:47 +00:00
bmlk%gmx.de
46398b3fb9 report frames currently on the overflow list as frames on a additional childlist to get their views reparented if a frame higher in the tree needs to reparent the views bug 362724 r/sr=roc
git-svn-id: svn://10.0.0.236/trunk@216815 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 06:46:17 +00:00
timeless%mozdev.org
e790f0abc6 Backing out!
git-svn-id: svn://10.0.0.236/trunk@216814 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 03:35:22 +00:00
timeless%mozdev.org
c3ae441147 Bug 361413 Build succeeds even when XPTC stubs/invocation stuff are not implemented.
patch by bsmedberg r=timeless


git-svn-id: svn://10.0.0.236/trunk@216813 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 03:24:47 +00:00
sayrer%gmail.com
ddf4c03c15 bug 362547. xpcshell unit tests for SAX Patch by Alex Vincent <ajvincent@gmail.com>. r=sayrer
git-svn-id: svn://10.0.0.236/trunk@216812 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 03:16:39 +00:00
bienvenu%nventure.com
d750bed9e8 fix crash deleting attachment from imap message, sr=mscott 360342
git-svn-id: svn://10.0.0.236/trunk@216811 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-10 00:09:31 +00:00
mozilla.mano%sent.com
eaf232c61c Bug 360220 - readers menulist has no icon if the last-selected reader is a web reader. r=enn.
git-svn-id: svn://10.0.0.236/trunk@216808 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 21:34:51 +00:00
gijskruitbosch%gmail.com
5ab5e9bf90 Bug 362646 - domNodeDialog.xul doesn't have control attributes pointing to valid ids
p=comrade693+bmo@gmail.com (Shawn Wilsher)
r=db48x (Daniel Brooks)
sr=neil@parkwaycc.co.uk


git-svn-id: svn://10.0.0.236/trunk@216806 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 19:43:54 +00:00
sayrer%gmail.com
2757ebe9db Test for bug 308484 by Wladimir Palant <trev@gtchat.de>. r=bz
git-svn-id: svn://10.0.0.236/trunk@216803 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 18:02:18 +00:00
sayrer%gmail.com
9cd5bffe94 Test for bug 238409 by Wladimir Palant <trev@gtchat.de>. r=jst
git-svn-id: svn://10.0.0.236/trunk@216802 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 17:33:29 +00:00
kjh-5727%comcast.net
2674b6e768 Bug 360485 - Factor out nsIDeviceContextSpecFactory. Part 1: changed files. r=pavlov, sr=roc.
git-svn-id: svn://10.0.0.236/trunk@216801 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 17:18:56 +00:00
lpsolit%gmail.com
2e18b4a401 Bug 359315: "NNTP" and "IO" should be filtered out of the mail_delivery_method options - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=justdave
git-svn-id: svn://10.0.0.236/trunk@216800 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 16:39:18 +00:00
timeless%mozdev.org
9f7096c63b Bug 362842 please rename nsIMsgImapMailFolder.canIOpenThisFolder
r=bienvenu sr=bienvenu


git-svn-id: svn://10.0.0.236/trunk@216799 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 16:31:05 +00:00
igor.bukanov%gmail.com
b8fe134378 Bug 362668: JSObject.slot is no longer accessed directly. Instead code uses STOBJ_macros. r=brendan
git-svn-id: svn://10.0.0.236/trunk@216798 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 15:02:37 +00:00
wsharp%adobe.com
74e31a04ae bug 363255. uintptr_t should be uintptr. Also checked in fix for e4xnode.cpp when parsing malformed namespace. no reviewer for sat. morning
git-svn-id: svn://10.0.0.236/trunk@216797 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 13:33:53 +00:00
lpsolit%gmail.com
364bdefaf8 Bug 362865: email_in.pl permissions not good after running checksetup.pl - Patch by Bill Barry <after.fallout@gmail.com> r=mkanat a=myk
git-svn-id: svn://10.0.0.236/trunk@216795 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 11:58:14 +00:00
lpsolit%gmail.com
870c67b100 Bug 361252: checksetup.pl should get confirmation from the user before causing dataloss in UTF8 conversion - Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit a=myk
git-svn-id: svn://10.0.0.236/trunk@216794 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 11:51:35 +00:00
philringnalda%gmail.com
c097eee8cd Bug 353194: Statusbar changes size depending on whether lock icon appears; Wrong broken image in addressbar, r=mano
git-svn-id: svn://10.0.0.236/trunk@216793 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 06:40:21 +00:00
dbaron%dbaron.org
1d1477169f Fix bad interaction of colspan handling with AddMinCoord's magic to deal with specified coord widths. Substantive changes by bzbarsky, comments by me. r+sr=dbaron/bzbarsky b=363150
git-svn-id: svn://10.0.0.236/trunk@216792 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 05:38:19 +00:00
gavin%gavinsharp.com
ee7a0ad27d Bug 347230: Minimal Save-only dialog shown for files with discoverable types (known file extensions), patch by Masatoshi Kimura (:emk) <VYV03354@nifty.ne.jp>, r=me
git-svn-id: svn://10.0.0.236/trunk@216791 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 04:37:22 +00:00
philringnalda%gmail.com
4027c85c61 Bug 359656: Make toolbar customization restore defaults restore the app's defaults, not Firefox's defaults, r=mano, lilmatt
git-svn-id: svn://10.0.0.236/trunk@216790 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 03:32:36 +00:00
preed%mozilla.com
28bf8fab5b Bug 363108: patcher2.pl --build-tools pulls from the trunk. This is bad for a number of reasons. This is a stop-gap measure to get --build-tools working again after the cairo/svg landing and the dbus landing. patch=tfullhart. r=preed.
git-svn-id: svn://10.0.0.236/trunk@216789 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 02:47:38 +00:00
rhelmer%mozilla.com
47ae2d48a9 remove independent verification from this step b=363237 r=preed
git-svn-id: svn://10.0.0.236/trunk@216788 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 02:18:52 +00:00
jminta%gmail.com
f90ffc2a94 Second try at fixing bug 360658 Weekly print layout: No preview for 'Selected events' selection. r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@216787 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 01:14:59 +00:00
jminta%gmail.com
c5a3578441 Bug 362866 Tasklist, unifinder and views still display old task/event after conversion to event/task. r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@216786 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 01:12:48 +00:00
jminta%gmail.com
2d2097fa8d Bug 361650 Default event start time is 00:00 and not the next full hour. r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@216785 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 01:09:45 +00:00
jminta%gmail.com
c96e65f884 Bug 362585 Remove useless line that can throw an error in some cases. r=lilmatt, dmose
git-svn-id: svn://10.0.0.236/trunk@216784 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 01:03:09 +00:00
wtchang%redhat.com
e045e318b7 Bugzilla Bug 358785: merged the mozilla/security/nss/lib/libpkix from the
NSS_LIBPKIX_BRANCH onto the NSS trunk.  Approved by rrelyea and nelsonb.


git-svn-id: svn://10.0.0.236/trunk@216782 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 00:27:38 +00:00
rhelmer%mozilla.com
eb04305862 rollback to 1.3, 1.4 should not have been checked in
git-svn-id: svn://10.0.0.236/trunk@216781 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-09 00:16:05 +00:00
ghendricks%novell.com
a12f9503a9 Failing a test cases with closed bugs, opens them. Passing one with RESOLVED bugs Verifies them.
git-svn-id: svn://10.0.0.236/trunk@216779 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 23:12:16 +00:00
wtchang%redhat.com
078873d980 Bugzilla Bug 363092: removed the pthread_kill macro definition. Mac OS X
has had the pthread_kill function since 10.2.   The patch is contributed by
Josh Aas <joshmoz@gmail.com>.  r=mark.mentovai,wtc


git-svn-id: svn://10.0.0.236/trunk@216775 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 22:58:13 +00:00
wtchang%redhat.com
861ea09ed1 Bugzilla Bug 363092: made 10.2 the default Mac OS X ppc deployment target.
r=josh.aas


git-svn-id: svn://10.0.0.236/trunk@216774 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 22:56:43 +00:00
wtchang%redhat.com
1cb5d3ccbb Bugzilla Bug 363073: verify that the peer's ephemeral public key is the
type we expect before using it.  r=nelsonb
Modified Files: ssl3con.c ssl3ecc.c


git-svn-id: svn://10.0.0.236/trunk@216773 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 22:37:29 +00:00
wtchang%redhat.com
ee9615098b Bugzilla Bug 357197: a small but subtle change to reject a hash algorithm
identifier with bogus 'parameters', and a large but straightforward change
of renaming function arguments and improving comments to clarify the
asymmetry between the two certID arguments. r=nelsonb


git-svn-id: svn://10.0.0.236/trunk@216772 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 22:10:52 +00:00
bclary%bclary.com
bade730b62 Bug 309169 - update JS_GetImplementationVersion, r=brendan
git-svn-id: svn://10.0.0.236/trunk@216771 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 21:08:09 +00:00
dietrich%mozilla.com
aa7253d2f9 Bug 359862 Places schema: improvements in descriptiveness and consistency (r=sspitzer)
git-svn-id: svn://10.0.0.236/trunk@216770 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 19:57:12 +00:00
sspitzer%mozilla.org
7703e1e5fa fix for bug #359349:
add "show sessions" to the history query options, so that we can disable it.

by default, disable sessions for the history-on-places sidebar (as we are initially going for Firefox 2.0 parity on top of places.)

To enable sessions, toggle the hidden "browser.history.showSessions" boolean pref.

Thanks to Dan Mills <thunder@mozilla.com> for the fix.

r=sspitzer,gavin


git-svn-id: svn://10.0.0.236/trunk@216769 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 19:56:31 +00:00
ghendricks%novell.com
23af09768a Bugzilla Bug 360100
Cloning a test case with copy document also clones the entire document history


git-svn-id: svn://10.0.0.236/trunk@216767 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 19:19:09 +00:00
rhelmer%mozilla.com
51db457067 script to download and clean pageset, checkin for anodelman, b=362152 r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216766 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 18:53:15 +00:00
ghendricks%novell.com
bbbf4af613 Escape <script> tags in wysiwyg feilds so that they don't execute.
git-svn-id: svn://10.0.0.236/trunk@216765 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 18:39:14 +00:00
sayrer%gmail.com
dc4d0507ba Bug 361448. Feed processor logs an exception when it hits an unknown element in atom:author. r=mano
git-svn-id: svn://10.0.0.236/trunk@216762 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 17:33:15 +00:00
stridey%gmail.com
dbe6fd41ab Bug 284554 - Enable preference panes to use applescript studio. Patch by Geoff Beier <me@mollyandgeoff.com> r=cl sr=pink
git-svn-id: svn://10.0.0.236/trunk@216761 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 17:29:09 +00:00
stridey%gmail.com
e6ed54b40d Camino only - Bug 288980. Create 'Reveal in Bookmark Manager' contextual menu item for relevant bookmarks. Patch by Chris Lawson <bugzilla@chrislawson.net> r=me sr=pink
git-svn-id: svn://10.0.0.236/trunk@216760 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 17:23:05 +00:00
bienvenu%nventure.com
63b89d266c remember tags when copying imap messages to local folders, sr=mscott 362989
git-svn-id: svn://10.0.0.236/trunk@216759 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 17:12:07 +00:00
stridey%gmail.com
9df1d6058e Camino only - bug 345419: When already selected, make 'Use as Dock Menu' context menu item reset the Dock Menu to the default folder. r=cl sr=pink
git-svn-id: svn://10.0.0.236/trunk@216758 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 16:57:38 +00:00
mattwillis%gmail.com
a0982d4393 bug 362742 - ifdefs branch vs. trunk pieces of Customize Toolbar in prep for using toolkit's. Patch by philor. r=lilmatt, jminta
git-svn-id: svn://10.0.0.236/trunk@216757 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 16:37:01 +00:00
silver%warwickcompsoc.co.uk
f660a3990f Bug 359592 - Kill off dead strings from chatzilla.dtd, and consistently use "ChatZilla" to refer to the app.
ChatZilla only.
r=samuel


git-svn-id: svn://10.0.0.236/trunk@216756 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 16:23:53 +00:00
mozilla.mano%sent.com
df85dc6a39 Backout help.css changes I accidenally checked in.
git-svn-id: svn://10.0.0.236/trunk@216754 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 16:23:24 +00:00
ted.mielczarek%gmail.com
f3403205ed bug 363062, workaround to prevent out of disk space errors on hourly win32 tinderboxes. airbag symbol store generation is disabled for now. r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216753 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 16:22:58 +00:00
mozilla.mano%sent.com
7d9a9cbede Bug 363125 - location bar is stretched vertically in Pinstripe. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216751 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 16:18:03 +00:00
longsonr%gmail.com
0c9355d8c2 Bug 363066 - remove unused macro from nsSVGImageFrame. r+sr=tor
git-svn-id: svn://10.0.0.236/trunk@216748 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 10:48:43 +00:00
michael.buettner%sun.com
e173bb08f0 bug #363147 attendee list and free/busy grid are not synchronized
git-svn-id: svn://10.0.0.236/trunk@216747 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 10:24:11 +00:00
alfred.peng%sun.com
102c41198f Bug 356863. Right-hand account settings panels are not accessible.
Patch by Evan.Yan@sun.com. r=aaronleventhal.


git-svn-id: svn://10.0.0.236/trunk@216746 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 09:59:45 +00:00
alfred.peng%sun.com
f576513bce Bug 356347. Invisible column headers of xul tree-table are not exposed.
Patch by Evan.Yan@sun.com. r=aaronleventhal.


git-svn-id: svn://10.0.0.236/trunk@216745 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 09:57:25 +00:00
bzbarsky%mit.edu
7c3973cf2b More tests pass now that reflow branch landed.
git-svn-id: svn://10.0.0.236/trunk@216744 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 08:53:41 +00:00
joshmoz%gmail.com
bae08c8401 merge nsToolkit and nsToolkitBase in cocoa widgets. b=363117 r=mento sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@216743 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 08:29:46 +00:00
joshmoz%gmail.com
0988905a4a Don't compile FSVolumeMount in MoreFilesX. It exists on Mac OS X 10.5 now, we can't re-define it in MoreFilesX. Since we don't use it anyway, just don't ever compile it. b=363092 r=mento sr=wtc
git-svn-id: svn://10.0.0.236/trunk@216742 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 07:52:18 +00:00
ajschult%verizon.net
ee1c4ccf9a Bug 362605: fast-update pulls Attic directory on branch for files deleted on trunk. r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216741 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 07:47:08 +00:00
dbaron%dbaron.org
1ca9f3f372 Bug 300030: Move intrinsic width computation out of nsIFrame::Reflow and into its own methods on nsIFrame. Replace reflow reasons, types, and commands with dirty bits/notifications. Thanks to bzbarsky for almost all of the HTML form controls (mozilla/layout/forms) changes, and many others for help testing and patching. For detailed commit logs, see REFLOW_YYYYMMDD_BRANCH, where YYYYMMDD is one of 20061031, 20060830, 20060603, 20060302, 20060119, 20051011, 20050804, 20050429, 20050315, 20050111, and 20041213.
git-svn-id: svn://10.0.0.236/trunk@216738 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 05:38:33 +00:00
philringnalda%gmail.com
1a1de382fe Bug 363098: customizeToolbar needs to include global/skin, r=gavin
git-svn-id: svn://10.0.0.236/trunk@216736 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 04:19:56 +00:00
jwalden%mit.edu
6a5a8fdefa Bug 277122 - XUL preprocessor #else-type conditions are evaluated relative to the result of the previous condition only. Fixed the bug with the original patch (unknowing use of a Perl 5.8.0 feature) and relanding... r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216735 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 04:13:00 +00:00
mats.palmgren%bredband.net
b1edb47875 Fix a Print Preview crash. b=362708 r=bernd sr=roc
git-svn-id: svn://10.0.0.236/trunk@216733 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 03:44:11 +00:00
mats.palmgren%bredband.net
dd00a78c5d Syncing with branch fix for bug 363054: Ctrl-Shift Keyboard Shortcuts broken (linux). r=zeniko sr=pavlov
git-svn-id: svn://10.0.0.236/trunk@216731 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 03:18:29 +00:00
jwalden%mit.edu
c1d1dab503 Giving up on bug 277122 for now; will try again later.
git-svn-id: svn://10.0.0.236/trunk@216718 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-08 00:09:08 +00:00
mattwillis%gmail.com
08d7a50483 bug 343207 - Uncomments piece of Makefile that packages updater.ini. r=dmose
git-svn-id: svn://10.0.0.236/trunk@216717 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 23:53:59 +00:00
cst%yecc.com
e05d061afa Bug 362913 Fix regression from bug 354953 that made the undo history store the least-recent tabs rather than the most-recent
r+sr=neil


git-svn-id: svn://10.0.0.236/trunk@216716 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 23:52:58 +00:00
bugzilla%arlen.demon.co.uk
1ad7ce4729 Bug 361708 Make the way links from mailnews behave pref controllable
p=me r=mnyromyr sr=neil (SM only)


git-svn-id: svn://10.0.0.236/trunk@216711 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 23:25:03 +00:00
jwalden%mit.edu
563073030c Attempt to fix build bustage on balsa-trunk; fix stupid Perl mistake in previous commit, still trying to fix bug 277122.
git-svn-id: svn://10.0.0.236/trunk@216708 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 23:04:12 +00:00
jwalden%mit.edu
b42f900ae9 Attempt to fix build bustage on balsa-trunk; if this fails will probably back out the patch for bug 277122.
git-svn-id: svn://10.0.0.236/trunk@216706 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 22:59:19 +00:00
mozilla%weilbacher.org
ed9c885ce9 Fix XPCOM build break on OS/2, see bug 345517. p=abwillis1, r=benjamin
git-svn-id: svn://10.0.0.236/trunk@216705 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 22:54:18 +00:00
mattwillis%gmail.com
aaba7a2abe bug 343207 - Uncomments piece of Makefile that packages updater.ini. r=dmose
git-svn-id: svn://10.0.0.236/trunk@216704 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 22:29:50 +00:00
sayrer%gmail.com
e8aa8fa1dd Bug 363032. invalid arg assertion in nsFrameList.cpp. Patch by Alex Vincent <ajvincent@gmail.com>. r=enndeakin, sr=neil
git-svn-id: svn://10.0.0.236/trunk@216703 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 22:08:00 +00:00
mozilla%weilbacher.org
bd0a019b6d [OS/2] Bug 355067: add Freetype copyright notice to about:license as OS/2 builds with cairo need to ship with it. r=gerv
git-svn-id: svn://10.0.0.236/trunk@216702 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 22:00:22 +00:00
jwalden%mit.edu
fbc7395155 Bug 277122 - XUL preprocessor #else-type conditions are evaluated relative to the result of the previous condition only (with one visible result being that #ifdef/#elifdef/#else/#endif doesn't work correctly if both the ifdef and elifdef conditions are true). This patch fixes conditions such that at most one section of any #if/#el*/#el*[...]/#endif set is ever included, regardless of the conditions used or types of the tests performed. r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216701 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:49:21 +00:00
gavin%gavinsharp.com
078433f1c5 Bug 362686: install-app from zip fails, patch by Tuukka Tolvanen <tuukka.tolvanen@gmail.com>, r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216700 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:39:35 +00:00
mvl%exedo.nl
7312f8fcfb bug 343721: just try to password from passwordmanager, instead of prompting. r=lilmatt, jminta
git-svn-id: svn://10.0.0.236/trunk@216699 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:36:02 +00:00
gavin%gavinsharp.com
479df5064c Bug 360273: Firefox should substitute unrecognized parameter extension with blank string, patch by Pavel Franc - Pawell (Czilla.cz) <p.franc@gmail.com>, r=me
git-svn-id: svn://10.0.0.236/trunk@216698 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:31:15 +00:00
gavin%gavinsharp.com
a393fef1e6 Bug 351260: No provision for disabling welcome and override pages, patch by Harry Johnston <harry@scms.waikato.ac.nz>, r=me
git-svn-id: svn://10.0.0.236/trunk@216697 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:28:32 +00:00
gavin%gavinsharp.com
f561786137 Bug 351591: Pressing Enter in an exceptions dialog adds an unwanted 'scheme:http' entry in the list, r=mano
git-svn-id: svn://10.0.0.236/trunk@216696 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:25:38 +00:00
gavin%gavinsharp.com
5f01743988 Bug 278859: fix minor layout-debug issues when using Firefox, r=dbaron
git-svn-id: svn://10.0.0.236/trunk@216695 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:21:41 +00:00
gavin%gavinsharp.com
104aff22be Bug 353324: When search engine is found and search bar icon highlighted in blue, it loses effect on hover, r=mano
git-svn-id: svn://10.0.0.236/trunk@216694 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:20:07 +00:00
gavin%gavinsharp.com
f2c1bab4fd Bug 341872: Download manager leaks helperApps, patch by Regis Caspar <regis.caspar+bz@gmail.com>, r=me
git-svn-id: svn://10.0.0.236/trunk@216693 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:16:56 +00:00
ghendricks%novell.com
9215b62099 Cloning a plan without the doc causes error when creating a run in that clone.
git-svn-id: svn://10.0.0.236/trunk@216692 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 21:12:47 +00:00
neil%parkwaycc.co.uk
b4a9673424 Bug 360639 Omit virtual folders from offline use selection r=bienvenu sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216690 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 20:48:50 +00:00
mattwillis%gmail.com
7696e6b571 bug 362639 - Adds missing accesskeys to Lightning's main menu. Patch by Cédric Corazza <cedric.corazza@wanadoo.fr> r=lilmatt,jminta
git-svn-id: svn://10.0.0.236/trunk@216689 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 20:15:28 +00:00
timeless%mozdev.org
e7bcc57e31 Bug 362843 xpidl should warn about attribute anytype aaaIAa ([a-z]{2,3}I[A-Z][a-z])
r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@216688 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 20:10:34 +00:00
sayrer%gmail.com
153508ceff Bug 354345. Set isStoredWithId for RSS 2.0 feed items. Patch by Wladimir Palant <trev@gtchat.de>. r=sayrer, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216687 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 20:07:48 +00:00
roc+%cs.cmu.edu
0e0e3e92c4 Bug 344228. Fix up some naughty uses of nsIScrollbarMediator. r=enndeakin,sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@216686 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 19:53:41 +00:00
roc+%cs.cmu.edu
a05d07a3a7 Bug 358764. Make backspace do nothing on Linux. r=caillon,mconnor
git-svn-id: svn://10.0.0.236/trunk@216685 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 19:46:47 +00:00
joshmoz%gmail.com
41d796e2b3 don't include nsMimeMapper.h in the cocoa drag service, it is unused and causes problems compiling trunk on 10.5. r=mento
git-svn-id: svn://10.0.0.236/trunk@216683 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 19:16:08 +00:00
ghendricks%novell.com
0bca36ec93 Allow more options for tag searches
git-svn-id: svn://10.0.0.236/trunk@216682 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 19:13:10 +00:00
ghendricks%novell.com
bb5b2e7ca3 Missing error message
git-svn-id: svn://10.0.0.236/trunk@216680 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:53:29 +00:00
sayrer%gmail.com
a54860f67d Bug 362156. Support the 'feed' link relation for autodiscovery. r=gavin
git-svn-id: svn://10.0.0.236/trunk@216679 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:45:45 +00:00
ghendricks%novell.com
10ef4758cd RELATIONSHIPS collides with Exporter.
git-svn-id: svn://10.0.0.236/trunk@216678 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:43:21 +00:00
ghendricks%novell.com
3cc49fd7c2 You shouldn't be able to drag product folders.
git-svn-id: svn://10.0.0.236/trunk@216677 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:39:50 +00:00
scott%scott-macgregor.org
3b9324bd2c Bug #291341 --> switching from drafts folder to saved search folder doesn't remove the edit draft button. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216676 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:35:25 +00:00
wtchang%redhat.com
17276e586e Bugzilla Bug 361077: removed commented-out code. r=christophe.ravel
git-svn-id: svn://10.0.0.236/trunk@216675 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:31:49 +00:00
wtchang%redhat.com
6bd11fe950 Bugzilla Bug 361077: fixed the bug that HP-UXB.11.*.mk test USE_PTHREADS
before it is set.  Since we always use pthreads now, we can unconditionally
add -D_POSIX_C_SOURCE=199506L to OS_CFLAGS in HP-UXB.11.mk.
r=christophe.ravel
Modified Files:
	HP-UXB.11.00.mk HP-UXB.11.11.mk HP-UXB.11.20.mk
	HP-UXB.11.22.mk HP-UXB.11.23.mk HP-UXB.11.mk


git-svn-id: svn://10.0.0.236/trunk@216673 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:28:40 +00:00
ghendricks%novell.com
a1952380ba Missing filters on a couple tables
git-svn-id: svn://10.0.0.236/trunk@216672 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:24:29 +00:00
nrthomas%gmail.com
dcccfafa52 Bump nagios version for Thunderbird 1.5.0.9, b=360034, r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216670 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 18:02:29 +00:00
jminta%gmail.com
fa1f63e4b1 Bug 362856 Edit Task command from tasklist context menu does nothing, patch by sebastian.schwieger@googlemail.com, r=jminta
git-svn-id: svn://10.0.0.236/trunk@216669 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 17:19:23 +00:00
benjamin%smedbergs.us
c5717f53e9 Bug 363000 - protect against spaces in the source directory, r=luser
git-svn-id: svn://10.0.0.236/trunk@216668 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 16:36:22 +00:00
vladd%bugzilla.org
df34507479 Documentation patch for bug 355302: Documentation for the "clone bug" feature; patch by victory(_RSZ_) <bmo2007@rsz.jp>, r=vladd.
git-svn-id: svn://10.0.0.236/trunk@216667 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 15:40:27 +00:00
thomas.benisch%sun.com
4a789af8f6 bug #357397 support WCAP server invitations r=mvl
git-svn-id: svn://10.0.0.236/trunk@216666 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 14:50:04 +00:00
dschaffe%adobe.com
ee5c81b648 bug 361312, fix tamarin tests of case Math.pow(Infinity,-1)=0 and variants, r=wsharp
git-svn-id: svn://10.0.0.236/trunk@216665 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 14:30:29 +00:00
thomas.benisch%sun.com
f75e0df2ee bug #357397 support WCAP server invitations
git-svn-id: svn://10.0.0.236/trunk@216664 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 14:28:45 +00:00
thomas.benisch%sun.com
c392079e43 bug #357397 support WCAP server invitations
git-svn-id: svn://10.0.0.236/trunk@216663 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 13:48:42 +00:00
kaie%kuix.de
413c4b7249 Bug 362980, Unable to verify the identity of [www.something.com] as a trusted site
Fixes a regression from yesterday's checkin for bug 176501.
r=rrelyea, r=wtchang


git-svn-id: svn://10.0.0.236/trunk@216661 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 13:02:28 +00:00
mozilla.mano%sent.com
a585ab7859 Bug 359552 - Remove keycode constants from nsIAutoCompleteController. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216660 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 12:59:02 +00:00
gijskruitbosch%gmail.com
f534757264 Bug 342988 - Allow plugins to rebuild menu(s), but not before CZ has initialized.
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@216656 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 12:21:11 +00:00
gijskruitbosch%gmail.com
40bba391c8 Bug 326873 - ChatZilla should be less picky about filenames
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only.


git-svn-id: svn://10.0.0.236/trunk@216655 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 11:35:20 +00:00
longsonr%gmail.com
e7664de954 Bug 357808 - make nsSVGMarkerFrame::PaintMark and nsSVGMarkerFrame::RegionMark more robust. r=jwatt, sr=tor
git-svn-id: svn://10.0.0.236/trunk@216654 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 09:32:13 +00:00
mozilla.mano%sent.com
5ec2a77783 Bug 354531 - Moving (reordering) search engines should enable the Restore Defaults button. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216651 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 09:01:30 +00:00
mozilla.mano%sent.com
1cb30110cf Bug 359056 - [Winstripe] regression: no hover feedback for go/search dropdown buttons. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216650 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 08:58:48 +00:00
mozilla.mano%sent.com
2c72f3427c Bug 353438 - Preview of Location Bar in 'Customize' dialog flawed. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216649 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 08:55:52 +00:00
cltbld
d3ee520ca6 bootstrap.cfg changes for Tbird 1.5.0.9 builds -preed
git-svn-id: svn://10.0.0.236/trunk@216645 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 07:15:31 +00:00
mozilla.mano%sent.com
233443cc69 Landing bug 354644's fix on trunk, r=mconnor.
git-svn-id: svn://10.0.0.236/trunk@216644 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 07:03:44 +00:00
masayuki%d-toybox.com
305c7436cb Bug 362048 gfxPlatFormGtk::ResolveFontName returns uninitialzed value for aAborted r=dbaron
git-svn-id: svn://10.0.0.236/trunk@216643 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 07:01:08 +00:00
reed%reedloden.com
1e6a5d1cb9 Bug 363029 - "local patch on registry on webtools.m.o... do we need it?" (commit just the comment portion)
git-svn-id: svn://10.0.0.236/trunk@216638 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 06:12:16 +00:00
cltbld
bc73e4f8ef Bump the pullDate to get the version number checkins for FFx 1.5.0.9.
git-svn-id: svn://10.0.0.236/trunk@216636 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 06:08:43 +00:00
smontagu%smontagu.org
b95d0b69a2 Compiler bustage fix
git-svn-id: svn://10.0.0.236/trunk@216634 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 05:10:12 +00:00
reed%reedloden.com
8eb5d2f530 Change /usr/bonsaitools/bin/perl to /usr/bin/perl [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216633 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 04:59:39 +00:00
reed%reedloden.com
8f3ad8ec5b Change /usr/bonsaitools/bin/perl to /usr/bin/perl [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216632 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 04:35:46 +00:00
bzbarsky%mit.edu
d631c95536 Fix build orange. Bug 356335, reviews hopefully coming up.
git-svn-id: svn://10.0.0.236/trunk@216631 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 03:43:52 +00:00
bzbarsky%mit.edu
9ecace1150 Fix build bustage. See bug 356335 comment 18 for what I forgot to do in the
initial checkin for that bug...  I need a longer-term memory, clearly.  :(


git-svn-id: svn://10.0.0.236/trunk@216630 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 02:53:35 +00:00
bzbarsky%mit.edu
db150e26f6 Go into an error state if we get a handler with a command in non-chrome XBL.
Bug 362716, r+sr=sicking


git-svn-id: svn://10.0.0.236/trunk@216629 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 02:34:57 +00:00
bzbarsky%mit.edu
dfc962fee2 Allocate the celldata structs from the presshell arena instead of allocating
them from the malloc heap with new.  Use nsTArray to store them and an nsTArray
to store those arrays instead of using nsVoidArray.  Bug 356335, r=bernd,
sr=sicking


git-svn-id: svn://10.0.0.236/trunk@216628 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 02:32:57 +00:00
wtchang%redhat.com
0c3b792433 Bugzilla Bug 345482: changed abspath to core_abspath to avoid conflict with
the built-in abspath function of GNU make 3.81.  The patch is contributed
by Benjamin Smedberg <benjamin@smedbergs.us>. r=wtc,christophe.ravel
Modified Files:
	coreconf/rules.mk nss/cmd/shlibsign/Makefile
	nss/lib/freebl/Makefile nss/lib/pk11wrap/Makefile


git-svn-id: svn://10.0.0.236/trunk@216626 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 01:57:18 +00:00
timeless%mozdev.org
c4eb3547d6 there's no objdir, but we need LOCAL_INCLUDES
git-svn-id: svn://10.0.0.236/trunk@216621 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-07 00:41:36 +00:00
ghendricks%novell.com
2e009fcc63 Filter the html in the diffs.
git-svn-id: svn://10.0.0.236/trunk@216619 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 23:33:07 +00:00
mozilla.mano%sent.com
d25e533013 Bug 347249 - QuickFind Link/Text Visual Distinction. r=gavin, ui-r=mconnor.
git-svn-id: svn://10.0.0.236/trunk@216617 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 23:24:26 +00:00
mozilla.mano%sent.com
67f31cfa10 Bug 363011 - click on search suggestion doesn't start the search anymore. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216615 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 23:00:20 +00:00
wtchang%redhat.com
cb167e11ec Bug 332350: fixed a typo in the comment.
git-svn-id: svn://10.0.0.236/trunk@216614 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 23:00:17 +00:00
sayrer%gmail.com
ba68e3a1b8 test for bug 218236. Patch by Wladimir Palant <trev@gtchat.de>. r=bz
git-svn-id: svn://10.0.0.236/trunk@216610 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:41:07 +00:00
timeless%mozdev.org
b46cf23c0c Bug 362950 build in embedding/browser/gtk/src failed if srcdir=. is set
The makefile was violating readonly srcdir for objdir builds too...
r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@216609 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:32:07 +00:00
joshmoz%gmail.com
388bae4a52 copy nsLookAndFeel to cocoa dir so we don't depend on widget/mac, we can use cocoa, and our impl can diverge from mac widgets. remove cocoa ifdefs, de-tab files. b=362999 r=smorgan sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@216608 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:31:17 +00:00
ghendricks%novell.com
b8b10f9715 Added a top bugs report to plans
git-svn-id: svn://10.0.0.236/trunk@216607 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:29:50 +00:00
tor%cs.brown.edu
ca2e75f93f Bug 362008 - remove nsSVGImageFrame copy of image data. r=pavlov, sr=roc
git-svn-id: svn://10.0.0.236/trunk@216606 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:23:10 +00:00
mnyromyr%tprac.de
4d4efea460 Bug 351108: Tooltips in OS X need to not be banana-yellow; p=<stefanh@bluebottle.com>, r=josh, sr=pinkerton - "too....much....free....time..."
git-svn-id: svn://10.0.0.236/trunk@216605 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:19:45 +00:00
tor%cs.brown.edu
4f512d8fda Bug 362759 - make erode default morphology operation.
Patch by amenzie@us.ibm.com, r=tor, sr=roc.


git-svn-id: svn://10.0.0.236/trunk@216604 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:18:01 +00:00
tor%cs.brown.edu
b484107c01 Bug 362773 - add cairo_create error checking to nsSVGUtils.
Patch by amenzie@us.ibm.com, r=tor, sr=roc.


git-svn-id: svn://10.0.0.236/trunk@216603 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 22:16:15 +00:00
wtchang%redhat.com
a26a68193b Bugzilla Bug 342795: the call-once functions need to store the error code
on failure so that the error code can be retrieved later. r=nelsonb and
alexei.volkov.


git-svn-id: svn://10.0.0.236/trunk@216601 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 21:50:40 +00:00
stridey%gmail.com
197981d0a9 Camino only - bug 361016: Make zoom widget maximize to fill screen when shift is held. r=torben sr=pink
git-svn-id: svn://10.0.0.236/trunk@216600 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 21:43:39 +00:00
stridey%gmail.com
1899e63d7a Camino only - Bug 327203: When opening prefpanes, respect the OS Full keyboard access pref for determining whether or not to focus the first element. r=hwaara sr=pink
git-svn-id: svn://10.0.0.236/trunk@216599 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 21:25:09 +00:00
christophe.ravel.bugs%sun.com
b7566555ac Bugzilla 362857 Simplify the NSS version string definition.
r+ wtchang


git-svn-id: svn://10.0.0.236/trunk@216598 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 21:14:54 +00:00
smontagu%smontagu.org
6f9d166dbe Make alert notifications popup over the left end of the taskbar on right-to-left desktops. Bug 132733, r=ere, sr=neil
git-svn-id: svn://10.0.0.236/trunk@216596 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 20:52:09 +00:00
wsharp%adobe.com
9d04e5b964 bug 361312. Fix for Math.pow plus a few other things. r: stejohns@adobe.com
git-svn-id: svn://10.0.0.236/trunk@216595 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 20:51:03 +00:00
wtchang%redhat.com
521bf20b5a Bugzilla Bug 362857: simplified the NSS and softoken version string
definition.  r=christophe.ravel,nelsonb.
Modified files: nss/nss.h softoken/softkver.h


git-svn-id: svn://10.0.0.236/trunk@216592 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 19:51:30 +00:00
ghendricks%novell.com
0689dec183 Update url in env lookup
git-svn-id: svn://10.0.0.236/trunk@216591 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 19:37:03 +00:00
scott%scott-macgregor.org
0802969b60 Bug #360702 --> look for ISP RDF Files in extension directories. Don't forget to package rss.rdf from its new location. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216590 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 19:36:27 +00:00
ghendricks%novell.com
8c7002dc1e Forgot to add the quicksearch files.
git-svn-id: svn://10.0.0.236/trunk@216589 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 19:35:10 +00:00
smontagu%smontagu.org
9e39056441 Recognize attachments when importing Japanese Eudora mailboxes. Bug 95613, patch by Hiro <sugar.waffle@gmail.com>, r=me, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216584 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 19:09:49 +00:00
timeless%mozdev.org
4d2beb9547 Bug 283487 nsStringInputStream is still broken
use LengthRemaining consistently
r=darin


git-svn-id: svn://10.0.0.236/trunk@216583 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 18:46:29 +00:00
ghendricks%novell.com
987a4bc169 Use a suggest type lookup for environments in caseruns.
git-svn-id: svn://10.0.0.236/trunk@216582 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 18:35:39 +00:00
ccooper%deadsquid.com
e187b497d0 b=355278
- associate branches directly with testcases, subgroups, and testgroups
- existing Litmus installs will need to run the migration/update_branch_relationships.pl script to update their installs
- fix fidelity of testcase, subgroup, and testgroup listings so that entities th
at don't belong to groupings are still displayed

Misc.
- standardize how we call 'onchange' js functions to avoid capitalization errors that were plaguing us before
- enable differential sorting in FormWidget listings


git-svn-id: svn://10.0.0.236/trunk@216581 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 18:18:31 +00:00
stuart.morgan%alumni.case.edu
09a4411ae3 Camino only - Remove extra parameter is bookmark failure logging; no bug. r/sr=josh
git-svn-id: svn://10.0.0.236/trunk@216580 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 18:04:47 +00:00
aaronr%us.ibm.com
081a782a2a [XForms] removed redundant label in select anonymous content. Bug 348053, patch by surkov, r=aaronL+aaronr
git-svn-id: svn://10.0.0.236/trunk@216579 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 18:02:39 +00:00
wtchang%redhat.com
50fccfcc92 Bugzilla Bug 362246: enable large-file support on Mac OS X.
r=mark.mentovai,bienvenu


git-svn-id: svn://10.0.0.236/trunk@216575 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:57:34 +00:00
kaie%kuix.de
a6585ba30d Bug 362967, export SECMOD_DeleteModuleEx
r=rrelyea, r=wtchang


git-svn-id: svn://10.0.0.236/trunk@216574 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:56:04 +00:00
michael.buettner%sun.com
719f017794 bug #362921 moving event to new start-date does not update free/busy grid
git-svn-id: svn://10.0.0.236/trunk@216573 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:54:30 +00:00
stuart.morgan%alumni.case.edu
d43ce9ede1 Camino only - Bug 344356: Fill all password forms, not just the first one.
git-svn-id: svn://10.0.0.236/trunk@216572 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:43:39 +00:00
kaie%kuix.de
8f45191b4b follow up checkin, make sure entries in nss.def are sorted
git-svn-id: svn://10.0.0.236/trunk@216571 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:32:47 +00:00
kaie%kuix.de
ac6441f8bf Bug 345277, When "Certificate Viewer" is shut, the object leaks
r=rrelyea


git-svn-id: svn://10.0.0.236/trunk@216570 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:25:14 +00:00
kaie%kuix.de
85ee992791 Export two NSS functions, required for:
Bug 307319, Certificate details show incorrect public key information
r=rrelyea


git-svn-id: svn://10.0.0.236/trunk@216569 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:12:41 +00:00
joshmoz%gmail.com
703152c5b9 fix "Some Cmd+Shift+letter shortcuts are broken". This is a big step towards fixing menuless dialogs as well. b=355817 r=mento sr=pinkerton
git-svn-id: svn://10.0.0.236/trunk@216568 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 17:04:13 +00:00
kaie%kuix.de
04fb966856 Bug 360526, Cert not imported - Feedback prompt sometimes does not work
r=rrelyea


git-svn-id: svn://10.0.0.236/trunk@216566 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 16:31:32 +00:00
kaie%kuix.de
27a43405ec Bug 360525, S/Mime LDAP cert fetching no longer works on trunk
r=mscott


git-svn-id: svn://10.0.0.236/trunk@216565 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 16:27:45 +00:00
kaie%kuix.de
fde4dc155a Bug 360528, Can no longer import trusted email cert
r=rrelyea


git-svn-id: svn://10.0.0.236/trunk@216564 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 16:20:08 +00:00
kaie%kuix.de
bf7ee32279 Bug 164707, Provide a way to view/delete orphan certs
r=rrelyea


git-svn-id: svn://10.0.0.236/trunk@216563 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 16:16:52 +00:00
mkaply%us.ibm.com
0b9ba08bd5 OS/2build break
git-svn-id: svn://10.0.0.236/trunk@216562 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 16:14:41 +00:00
michael.buettner%sun.com
d50ffb82b5 bug #359026 all-day events not included in calculating availability
git-svn-id: svn://10.0.0.236/trunk@216561 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 15:59:43 +00:00
kaie%kuix.de
e2a6356e24 Bug 176501, mozilla apps must manage NSS configuration for PKCS#11 shared libs, including nssckbi.dll
r=rrelyea


git-svn-id: svn://10.0.0.236/trunk@216560 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 15:42:39 +00:00
michael.buettner%sun.com
693585d8a8 bug #362961 missing relation for custom reminder
git-svn-id: svn://10.0.0.236/trunk@216559 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 14:50:33 +00:00
hwaara%gmail.com
12c3af2372 Implement accessible objects for xforms select controls. Patch by Alexander Surkov <surkov.alexander@gmail.com>. r=aaronr, aaronlev, b=348053
git-svn-id: svn://10.0.0.236/trunk@216558 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 13:44:19 +00:00
hwaara%gmail.com
c5c5bee258 Initial support for popupmenus, r=surkov, b=362080
git-svn-id: svn://10.0.0.236/trunk@216557 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 13:35:56 +00:00
neil%parkwaycc.co.uk
600348d019 Register content separately from skin and locale b=362265 r=ajschult sr=dveditz
git-svn-id: svn://10.0.0.236/trunk@216556 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 10:37:05 +00:00
reed%reedloden.com
9bd323afae Bug 311765 - [p=timeless r=bear]
git-svn-id: svn://10.0.0.236/trunk@216555 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 10:22:03 +00:00
reed%reedloden.com
ab05782243 Bug 318880 - "Despot should log authentication results" [p=justdave r=reed]
git-svn-id: svn://10.0.0.236/trunk@216554 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 09:37:49 +00:00
longsonr%gmail.com
a3f9a4e652 Bug 362683 - SVG Text doesn't move when x/y attributes changed r+sr=tor
git-svn-id: svn://10.0.0.236/trunk@216553 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 09:34:14 +00:00
michael.buettner%sun.com
c36b818abf bug #362743 add new icons to free/busy dialog and rearrange layout
git-svn-id: svn://10.0.0.236/trunk@216552 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 08:02:04 +00:00
michael.buettner%sun.com
6cc720608d bug #362743 add new icons to free/busy dialog and rearrange layout
git-svn-id: svn://10.0.0.236/trunk@216551 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 07:56:42 +00:00
reed%reedloden.com
3fb096fea7 Bug 322763 - "Should be a UI for the administrator to view an account's history" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216550 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 07:56:24 +00:00
masayuki%d-toybox.com
97ca50516b Bug 341500 crash in usp10.dll(ScriptShape API) r=pavlov
git-svn-id: svn://10.0.0.236/trunk@216548 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 07:01:02 +00:00
bzbarsky%mit.edu
2cb665ad6a Add more tests.
git-svn-id: svn://10.0.0.236/trunk@216547 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 06:59:22 +00:00
reed%reedloden.com
376c1c0259 Bug 362912 - [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216546 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 06:25:05 +00:00
bzbarsky%mit.edu
79e3b2b3ba Add a few more tests
git-svn-id: svn://10.0.0.236/trunk@216545 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 06:20:21 +00:00
scott%scott-macgregor.org
6251d22199 replace spaces with tabs in the Makefile in order to fix build bustage on linux.
git-svn-id: svn://10.0.0.236/trunk@216544 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 05:49:23 +00:00
scott%scott-macgregor.org
01da3259d0 Bug #362557 --> forgot to land this with the rest of the changes to support editing tags.
git-svn-id: svn://10.0.0.236/trunk@216541 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 05:31:44 +00:00
scott%scott-macgregor.org
b3824ce6e8 Bug #360702 --> Look for ISP RDF files in extension directories. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216540 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 05:24:28 +00:00
scott%scott-macgregor.org
bea3b02a66 Bug #360702 --> Look for ISP RDF files in extension directories that contain "isp" sub directories. This should make it easy for extensions to make account setup easy for ISPs. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216539 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 05:22:26 +00:00
alfred.peng%sun.com
cf0865ef8c Bug 351950. nsLocalFileUnix has "access"(system call) problem on Solaris.
r+sr=dougt.


git-svn-id: svn://10.0.0.236/trunk@216538 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 03:58:48 +00:00
timeless%mozdev.org
87d9aca247 Bug 351261 startup crash. [@ js_XDRStringAtom] / jsxdrapi.c
mips crash because of bad optimization with MIPSpro compiler
patch by neko@nekochan.net r=brendan


git-svn-id: svn://10.0.0.236/trunk@216537 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 03:03:59 +00:00
timeless%mozdev.org
99eae78b79 Bug 322806 ARM crash [@ XPTC_InvokeByIndex]
patch by apm@dna.fi
eabi arm assembly didn't warn that a variable was a memory operand so the
newer gcc compilers (e.g. gcc4) started optimizing things away...

I tried to get someone to vouch for this code but the people I poked
never got back to me.

moa=timeless


git-svn-id: svn://10.0.0.236/trunk@216536 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 03:00:09 +00:00
timeless%mozdev.org
f723e5f220 Bug 337244 Incorrect pointer passed in nsUnicodeToISO2022JP::ConvertNoBuffNoErr
r=smontagu sr=roc


git-svn-id: svn://10.0.0.236/trunk@216534 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 02:49:51 +00:00
mattwillis%gmail.com
eb75237ca0 Okay, that doesn't work either. Removing --with-sdk for now.
git-svn-id: svn://10.0.0.236/trunk@216533 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 02:42:15 +00:00
wtchang%redhat.com
b9d0822fe3 Bugzilla Bug 357197: when we compare hash algorithm identifiers, allow the
'parameters' to be either NULL or missing.  r=nelsonb,relyea


git-svn-id: svn://10.0.0.236/trunk@216531 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 02:25:52 +00:00
mattwillis%gmail.com
9684419fd7 Bump SDK used to 10.3.9. josh's checkin for (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3) breaks using 10.2.8 on trunk.
git-svn-id: svn://10.0.0.236/trunk@216529 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 01:37:53 +00:00
wtchang%redhat.com
ed4b8e9aeb Bugzilla Bug 358248: SSL_ShutdownServerSessionIDCache should stop the
LockPoller thread.  r=nelsonb,relyea


git-svn-id: svn://10.0.0.236/trunk@216528 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 01:36:08 +00:00
ted.mielczarek%gmail.com
bee418d4f3 bug 359151 Generate symbol files from pdb if airbag is enabled. r=preed. Use |make splitsymbols| to generate symbols.
git-svn-id: svn://10.0.0.236/trunk@216526 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 01:16:05 +00:00
ted.mielczarek%gmail.com
86894b2dc0 bug 359151 Generate symbol files from pdb if airbag is enabled. r=preed. This binary was compiled from the airbag source: http://airbag.googlecode.com/svn/trunk/src/tools/windows/dump_syms/
git-svn-id: svn://10.0.0.236/trunk@216525 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 01:14:51 +00:00
timeless%mozdev.org
bcb588e3dc Bug 362283 Components.errors is a silly typo for Components.results
patch by sciguyryan+bugzilla@gmail.com r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@216524 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 01:12:06 +00:00
preed%mozilla.com
60b8a5568d Bug 360813: patcher2.pl doesn't generate correct snippits for older releases on partner builds. r=preed
git-svn-id: svn://10.0.0.236/trunk@216523 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 01:11:27 +00:00
timeless%mozdev.org
222d8d6349 Bug 362720 please spell NS_LOCAL_FILE_CONTRACTID as such
r=gavin


git-svn-id: svn://10.0.0.236/trunk@216522 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 00:48:12 +00:00
martijn.martijn%gmail.com
1e69df58b5 Bug 304188 - find-menu appears in editor element which has had makeEditable() called but designMode not set, r=mano
git-svn-id: svn://10.0.0.236/trunk@216520 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 00:17:24 +00:00
joshmoz%gmail.com
9b756917d1 (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_3) is never true any more on trunk. r=smorgan
git-svn-id: svn://10.0.0.236/trunk@216519 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-06 00:14:47 +00:00
tony%ponderer.org
e51ed9e0c2 Add tests for URLCanonicalizer and EnchashDecryptor. Small change in
trtable.js to expose JS component in debug builds to allow testing.


git-svn-id: svn://10.0.0.236/trunk@216517 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 23:36:01 +00:00
lpsolit%gmail.com
62b510372b Bug 362878: .htaccess should protect .pm and .pl files by default - Patch by Frédéric Buclin <LpSolit@gmail.com> r=myk
git-svn-id: svn://10.0.0.236/trunk@216515 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 23:09:46 +00:00
bzbarsky%mit.edu
ab526229a2 Avoid floats altogether for block <math>. Bug 362701, r+sr=rbs
git-svn-id: svn://10.0.0.236/trunk@216512 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 22:28:07 +00:00
lpsolit%gmail.com
d1f058a46b Bug 334995: Doctor needs an installation script to set file permissions correctly - Patch by Frédéric Buclin <LpSolit@gmail.com> r=myk
git-svn-id: svn://10.0.0.236/trunk@216511 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 22:19:38 +00:00
timeless%mozdev.org
35361dde9b Trying to fix Thunderbird Linux galactica Dep Lt-Release %
it's running with an old glib2. The hope is that the code will automatically
generate the marshalling code. This may or may not work, if it doesn't,
everything will probably go red :).


git-svn-id: svn://10.0.0.236/trunk@216509 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 21:36:25 +00:00
mvl%exedo.nl
4b76343d6e bug 360513: Show file type suffix in import/export file picker filter description (wildmat pattern). patch by gekacheka@yahoo.com, r=lilmatt, me. ui-review=dmose
git-svn-id: svn://10.0.0.236/trunk@216507 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 21:17:18 +00:00
ghendricks%novell.com
7590f96609 Bugzilla Bug 362861
DB error--cannot find column while attempting to create report of completed test run


git-svn-id: svn://10.0.0.236/trunk@216506 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 20:46:09 +00:00
rhelmer%mozilla.com
13df5f7d1e add Makefile and Config
git-svn-id: svn://10.0.0.236/trunk@216503 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 19:58:38 +00:00
preed%mozilla.com
ab3e04b540 Bug 360034: tinder-config changes for the 1.5.0.9 release; r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216502 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 19:56:12 +00:00
sayrer%gmail.com
a9df860190 Bug 362547. Crash in SAXReader with doctype missing public, system ID's. Patch by Alex Vincent <ajvincent@gmail.com>. r=sayrer, sr=bz
git-svn-id: svn://10.0.0.236/trunk@216499 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 19:37:37 +00:00
bzbarsky%mit.edu
6dda4a3840 Allow subframes that come from a different domain to document.write/open
themselves.  Bug 362837, r+sr=jst


git-svn-id: svn://10.0.0.236/trunk@216498 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 19:36:40 +00:00
rhelmer%mozilla.com
c044968bd5 reset test log
git-svn-id: svn://10.0.0.236/trunk@216497 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 19:13:34 +00:00
rhelmer%mozilla.com
cf5be8be88 implement release steps b=356185 r=preed
git-svn-id: svn://10.0.0.236/trunk@216496 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 19:12:59 +00:00
joshmoz%gmail.com
bcef8b46c5 Treat control-click on mac as a right click. b=362812 r=mano sr=pink
git-svn-id: svn://10.0.0.236/trunk@216495 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:38:17 +00:00
stridey%gmail.com
6caa129bfc Camino only - Bug 313740: Force drags from external apps to copy, not move. r=Wevah sr=pink
git-svn-id: svn://10.0.0.236/trunk@216494 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:36:59 +00:00
preed%mozilla.com
ecc226facb Add HashFile() to exported symbols. r=rhelmer
git-svn-id: svn://10.0.0.236/trunk@216493 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:27:08 +00:00
rhelmer%mozilla.com
0c17fae856 use exporter b=356185 r=preed
git-svn-id: svn://10.0.0.236/trunk@216492 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:24:08 +00:00
sayrer%gmail.com
d321819e85 Bug 362329. Autodiscovery should not discover rel='alternate stylesheet' as a feed. r=gavin
git-svn-id: svn://10.0.0.236/trunk@216491 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:18:05 +00:00
aaronr%us.ibm.com
abaef00423 schema loader/validator isnt handling forward declaration of complexContent extension base. Bug 350076, patch by sspeiche, r+a=doronr
git-svn-id: svn://10.0.0.236/trunk@216490 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:09:42 +00:00
nrthomas%gmail.com
e5f7f40b80 Nagios changes for Firefox/Xulrunner version bump to 2.0.0.1/1.8.1.1. Bug 360585, r=preed
git-svn-id: svn://10.0.0.236/trunk@216489 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 18:02:18 +00:00
nrthomas%gmail.com
07591b6813 Firefox/Xulrunner version bump to 1.5.0.9/1.8.0.9. Bug 360034, r=preed
git-svn-id: svn://10.0.0.236/trunk@216488 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 17:59:44 +00:00
mvl%exedo.nl
4e096d0f15 bustage fix
git-svn-id: svn://10.0.0.236/trunk@216487 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 16:46:39 +00:00
jminta%gmail.com
d41a8c8a90 Bug 277731 no way to convert task <-> event, r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@216486 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 16:21:45 +00:00
doronr%us.ibm.com
2de3ed3b02 Make schema validation tests not hardcode my path. Patch be sspeiche, r=me
git-svn-id: svn://10.0.0.236/trunk@216485 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 16:21:13 +00:00
jminta%gmail.com
a71ebd6df4 Bug 361560 Weekly layout: Sunday of previous week displayed in current week, r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@216484 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 16:17:08 +00:00
jminta%gmail.com
84a2947cb2 Bug 360658 Weekly layout: No preview for 'Selected events' selection [Error: aStart has no properties], r=lilmatt, mvl
git-svn-id: svn://10.0.0.236/trunk@216483 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 16:13:29 +00:00
peterv%propagandism.org
859f63854e Fix part of bug 226124 (Cleanup transformiix walkers). r/sr=sicking.
git-svn-id: svn://10.0.0.236/trunk@216482 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 15:59:04 +00:00
bienvenu%nventure.com
b1291887d5 don't stop local ab autocomplete when the user types @, r=neil, sr=mscott 200804
git-svn-id: svn://10.0.0.236/trunk@216481 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 15:54:02 +00:00
brendan%mozilla.org
5ce206c2a5 Back out last checkin.
git-svn-id: svn://10.0.0.236/trunk@216480 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 15:46:19 +00:00
bzbarsky%mit.edu
25c459209d Move GetCompatibilityMode() to nsIDocument. Bug 362797, r+sr=jst
git-svn-id: svn://10.0.0.236/trunk@216479 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 15:46:18 +00:00
edburns%acm.org
dac867a2cc M mozilla/Makefile.in
M src/Makefile.in

- Force logging to be enabled, regardless of debugging setting.

M src/PlugletEngine.cpp

- Make sure to disable JVM debugging.


git-svn-id: svn://10.0.0.236/trunk@216477 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 13:02:25 +00:00
brendan%mozilla.org
43df37f53d Back out last rev to clear orange balsa.
git-svn-id: svn://10.0.0.236/trunk@216476 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 07:39:15 +00:00
brendan%mozilla.org
501c8f8d6f Fix O(n^2) problem exposed by closures as instance-getters/setters (335700, r=mrbkap+shaver).
git-svn-id: svn://10.0.0.236/trunk@216471 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 00:55:00 +00:00
brendan%mozilla.org
985f53dfd3 Add JS_DHASH_{,DEFAULT_}CAPACITY macros for realloc-free init (356116, r/sr=mrbkap+shaver/dbaron).
git-svn-id: svn://10.0.0.236/trunk@216470 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 00:52:05 +00:00
ghendricks%novell.com
a6d15be59d Add more detail to notes and give users a popup too view all the notes.
Added script and arguments to the case-run short form.


git-svn-id: svn://10.0.0.236/trunk@216467 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 00:20:58 +00:00
cst%yecc.com
bc0ee935af Fixing string from previous checkin
git-svn-id: svn://10.0.0.236/trunk@216466 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 00:18:14 +00:00
cst%yecc.com
0c10bf0bbf Bug 339720 show warning page before showing about:config (toolkit version)
r=mano


git-svn-id: svn://10.0.0.236/trunk@216465 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-05 00:15:22 +00:00
mats.palmgren%bredband.net
a51098a12d Last checkin was for bug 353553.
git-svn-id: svn://10.0.0.236/trunk@216464 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 23:50:19 +00:00
mats.palmgren%bredband.net
3e318e35c9 Fix regression from bug 286622. r=cbiesinger sr=dveditz
git-svn-id: svn://10.0.0.236/trunk@216463 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 23:47:34 +00:00
timeless%mozdev.org
4b321afe5f missed one gnomevfs containing function. of course, that function was buggy...
git-svn-id: svn://10.0.0.236/trunk@216460 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 23:40:52 +00:00
wtchang%redhat.com
c7169e2f5e Bugzilla Bug 362173: The NSS cryptographic module (the softoken and freebl
shared libraries) should have its own version numbers. r=nelsonb and
neil.williams.
Modified Files:
	lib/freebl/freebl.rc lib/freebl/freeblver.c
	lib/softoken/manifest.mn lib/softoken/pkcs11.c
	lib/softoken/softkver.c lib/softoken/softokn.rc
Added Files:
	lib/softoken/softkver.h


git-svn-id: svn://10.0.0.236/trunk@216459 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 23:31:35 +00:00
preed%mozilla.com
e950cdfa5a Adds HashFile(), a method that uses openssl to provide md5/sha1 sums of files. Much of the code was taken from tinderbox's implementation; openssl was chosen because it's just about guaranteed to exist on all the platforms we care about, and thus elimintes platform-specifics-parsing- and trying to figure out platform/which-binary-to-call-issues.
git-svn-id: svn://10.0.0.236/trunk@216458 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 23:19:01 +00:00
timeless%mozdev.org
2c45bf926f Attempt to make gnomevfs optional
git-svn-id: svn://10.0.0.236/trunk@216457 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 23:10:20 +00:00
timeless%mozdev.org
5193e38807 oops, map doesn't take a parameter
git-svn-id: svn://10.0.0.236/trunk@216456 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 22:33:27 +00:00
ghendricks%novell.com
7498a51b05 fixed the missing pie.
git-svn-id: svn://10.0.0.236/trunk@216455 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 22:23:21 +00:00
ghendricks%novell.com
0860b44fd9 List bug test cases instead of case-runs
git-svn-id: svn://10.0.0.236/trunk@216454 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 22:15:30 +00:00
ghendricks%novell.com
f819acd422 Allow cloning of a list of cases to a list of plans.
git-svn-id: svn://10.0.0.236/trunk@216453 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:52:57 +00:00
despotdaemon
5a25ba25f8 Pseudo-automatic update of changes made by nrthomas@gmail.com.
git-svn-id: svn://10.0.0.236/trunk@216452 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:46:42 +00:00
mvl%exedo.nl
cd712957fd bustage fix
git-svn-id: svn://10.0.0.236/trunk@216450 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:38:20 +00:00
cltbld
8c4ad5353b Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216449 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:31:03 +00:00
roc+%cs.cmu.edu
7a14fc9070 fixing bustage
git-svn-id: svn://10.0.0.236/trunk@216448 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:28:56 +00:00
timeless%mozdev.org
030f8e1ef5 Fixing merge conflict, fixing out value to return ok on success and fixing out value to null out on failure.
Using interface map for complicated conditional case.


git-svn-id: svn://10.0.0.236/trunk@216445 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:23:35 +00:00
ghendricks%novell.com
b77b994631 Changes to cloning. Now you can keep the author or choose yourself. Also cloning plans between products and runs between plans.
git-svn-id: svn://10.0.0.236/trunk@216444 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 21:03:06 +00:00
timeless%mozdev.org
1c7e4a3627 reverting header include to match rev 1.24, it's a gtk2 only header...
git-svn-id: svn://10.0.0.236/trunk@216443 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:58:27 +00:00
cltbld
fe2cf06b52 Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216442 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:51:03 +00:00
roc+%cs.cmu.edu
e7a95dd7ee Bug 312793. Make Linux builds listen to dbus for NetworkManager events so we can go online/offline automatically. r=caillon,bsmedberg sr=darin
git-svn-id: svn://10.0.0.236/trunk@216440 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:42:31 +00:00
bzbarsky%mit.edu
e1eaaf62ed Make ReconstructDocElementHierarchy work correctly even if we first blew away a
pseudo which had the root as its content.  Bug 343293, r+sr=roc


git-svn-id: svn://10.0.0.236/trunk@216439 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:35:55 +00:00
aaronr%us.ibm.com
40660adb9d [XForms] reset has stopped working. Bug 362310, r=surkov+olli
git-svn-id: svn://10.0.0.236/trunk@216438 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:33:14 +00:00
bzbarsky%mit.edu
090356bde5 Fix build bustage on platforms where we use a struct for 64-bit ints. Bug
361075, r=shaver


git-svn-id: svn://10.0.0.236/trunk@216436 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:28:31 +00:00
bugzilla%standard8.demon.co.uk
48339d03de Fix build bustage from gtkmozembed checkins, r=timeless
git-svn-id: svn://10.0.0.236/trunk@216435 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:23:52 +00:00
lpsolit%gmail.com
c8c3de36a3 Bug 359129: Doctor should have a robots.txt - Patch by Frédéric Buclin <LpSolit@gmail.com> r=myk
git-svn-id: svn://10.0.0.236/trunk@216434 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 20:06:25 +00:00
despotdaemon
2b59b36bff Pseudo-automatic update of changes made by knous@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@216431 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 19:35:05 +00:00
timeless%mozdev.org
b062f9dbe8 Pulling romaxa's gtk1 fixes and the other changes from his commit
git-svn-id: svn://10.0.0.236/trunk@216429 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 18:00:11 +00:00
stridey%gmail.com
022cc742ca Camino only - bug 362572: Visual tweaks to Appearance Prefpane. r=ardissone sr=pink
git-svn-id: svn://10.0.0.236/trunk@216427 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 17:46:57 +00:00
bugzilla%standard8.demon.co.uk
d0a1c6d189 Bug 256447 In mailWindowOverlay.js, "Warning: redeclaration of var i" and "Warning: assignment to undeclared variable pop3Server" (Bv1-TB) p=Serge Gautherie <sgautherie.bz@free.fr>,r=bienvenu,sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216423 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 17:09:01 +00:00
bugzilla%standard8.demon.co.uk
cf30ce7778 Bug 361994 Searching for LDAP entries in address book always gets all entries (fixes regression from bug 355363). r/sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216422 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 17:06:15 +00:00
stridey%gmail.com
87e7e8ef50 Camino only - Bug 346772: First item in History search results has all disabled items in context menu. r=smorgan sr=pink
git-svn-id: svn://10.0.0.236/trunk@216421 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 17:04:55 +00:00
bugzilla%standard8.demon.co.uk
498562c05c Bug 360777 Change nsIAbCard::EditCardToDatabase to nsIAbDirectory::ModifyCard. r=bienvenu,sr=mscott (relanding now windows compilation issues should be fixed).
git-svn-id: svn://10.0.0.236/trunk@216420 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 17:04:43 +00:00
timeless%mozdev.org
b4ff8c409e fixing non libxul directory service handl; thanks smaug
git-svn-id: svn://10.0.0.236/trunk@216419 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 16:01:06 +00:00
timeless%mozdev.org
d4a7b4df39 fixing non libxul directory service handling; thanks smaug
git-svn-id: svn://10.0.0.236/trunk@216418 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 15:39:33 +00:00
peterv%propagandism.org
8c4433aa7f Add new JS component for bug 354886 to package files.
git-svn-id: svn://10.0.0.236/trunk@216417 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 15:30:00 +00:00
hwaara%gmail.com
b2338f244c Reorganize full selects, Patch by Alexander Surkov <surkov.alexander@gmail.com>. r=aaronr, Olli.Pettay, b=358712
git-svn-id: svn://10.0.0.236/trunk@216416 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 15:21:14 +00:00
peterv%propagandism.org
4249846cc7 Fix for bug 354886 (implement EXSLT - Regular Expressions module). r/sr=sicking.
git-svn-id: svn://10.0.0.236/trunk@216415 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 15:11:40 +00:00
hwaara%gmail.com
599211201d Reorganize full selects, Patch by Alexander Surkov <surkov.alexander@gmail.com>. r=aaronr, Olli.Pettay, b=358712
git-svn-id: svn://10.0.0.236/trunk@216414 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 14:55:25 +00:00
timeless%mozdev.org
7563c3b33c Fixing most ifdefs to mean libxul instead of saying 1.8
making xulrunner link dynamically against gtkmozembed (because ajschult and
I couldn't figure out how to deal with a profiledirectorylock and we know
of no reason to have gtkmozembed linked statically).
Hopefully fixed some cast complaints smaug had (presumably they relate to
the comments "I doubt this cast pair is correct").
Tried to clean up the REQUIRES a /bit/ in an effort to address the lock
problem.

Again, thanks to ajschult for his time and assistance.


git-svn-id: svn://10.0.0.236/trunk@216412 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 10:50:02 +00:00
smontagu%smontagu.org
8cb532ea8b Correct stupid typo in default font names. Bug 362709, r=mano
git-svn-id: svn://10.0.0.236/trunk@216411 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 09:43:52 +00:00
reed%reedloden.com
dd57b1f8a4 Bug 362704 - "Bonsai needs a default .htaccess file for data directory" [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216410 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 08:32:01 +00:00
reed%reedloden.com
dc7064168a Bug 272514 - "make install does "chmod 755 data/", which breaks sendmail writing to that directory" [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216409 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 08:00:08 +00:00
timeless%mozdev.org
9dfdbfd20c SetPageTitle is nsIGlobalHistory2 :(
And RemoveAllPages is now just nsresult


git-svn-id: svn://10.0.0.236/trunk@216408 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 07:58:22 +00:00
smontagu%smontagu.org
d1c574b919 Reverse the y offsets returned by ScriptPlace(). Bug 361782, r=pavlov
git-svn-id: svn://10.0.0.236/trunk@216407 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 07:23:12 +00:00
reed%reedloden.com
dc331a3010 Bug 347105 - [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216406 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 07:09:50 +00:00
reed%reedloden.com
d132cad03c Bug 346660 - [p=justdave r=myk]
git-svn-id: svn://10.0.0.236/trunk@216405 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 07:08:00 +00:00
timeless%mozdev.org
7482a312b7 Removing nsIBrowserHistory
The only method we needed was RemoveAllPages, which i've moved to be accessible via nsIObserver,
it's a private communication from the specific history client.

Variable length arrays is a C99 ism, in gecko we use nsAutoArrayPtr.

thanks to ajschult for helping out


git-svn-id: svn://10.0.0.236/trunk@216404 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 06:46:27 +00:00
timeless%mozdev.org
6c1793062c Title should be nsCString (Autos never belong in structures, and the data was always narrow)
git-svn-id: svn://10.0.0.236/trunk@216403 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 06:23:28 +00:00
timeless%mozdev.org
01e43ed007 First attempt at bandaging gtk1
git-svn-id: svn://10.0.0.236/trunk@216402 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 06:22:18 +00:00
scott%scott-macgregor.org
4cda990adc Bug #308552 --> land some strings for growl integration in case we add growl support.
git-svn-id: svn://10.0.0.236/trunk@216401 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 06:11:02 +00:00
ajschult%verizon.net
24dcebf110 Fixing preliminary bustage. rs=timeless
git-svn-id: svn://10.0.0.236/trunk@216400 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 06:02:56 +00:00
scott%scott-macgregor.org
cb9dcc05d5 Bug #361434 --> add some strings for the privacy dialog in case we want to use them after the string freeze
git-svn-id: svn://10.0.0.236/trunk@216399 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 05:53:49 +00:00
scott%scott-macgregor.org
443ecb1b3e Bug #361434 --> put the advanced config button after the return receipts button.
git-svn-id: svn://10.0.0.236/trunk@216398 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 05:43:32 +00:00
pavlov%pavlov.net
8be0a19df7 fixing windows print crash bug 362476. r=vlad
git-svn-id: svn://10.0.0.236/trunk@216395 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 05:03:13 +00:00
reed%reedloden.com
7982fe675f Bug 279089 - "Add favicon to bonsai" [p=justdave p=unattended@gmail.com r=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216394 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 05:02:57 +00:00
timeless%mozdev.org
7e663e4f9e Landing MICROB_20061031_BRANCH
This is an experiment, and I'm sorry that the code isn't perfect.
Patches Wanted, Work will be on the MICROB_20061204_BRANCH


git-svn-id: svn://10.0.0.236/trunk@216392 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 04:06:14 +00:00
philringnalda%gmail.com
b979daf5a5 Bug 361246: Don't collapse toolbar customization window since we don't animate it, r=mano
git-svn-id: svn://10.0.0.236/trunk@216389 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 03:02:15 +00:00
bzbarsky%mit.edu
6175079009 Better naming for the tests for bug 362594
git-svn-id: svn://10.0.0.236/trunk@216388 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 02:24:03 +00:00
bzbarsky%mit.edu
13b38651f2 Fixing buglet.
git-svn-id: svn://10.0.0.236/trunk@216387 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 02:15:22 +00:00
db48x%yahoo.com
79a9c4511f bug 327833: In <inspector.xul>, "Failed to load overlay from chrome://browser/content/baseMenuOverlay.xul"
patch by Shawn Wilsher :sdwilsh <comrade693+bmo@gmail.com>, r=timeless, sr=neil


git-svn-id: svn://10.0.0.236/trunk@216385 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 01:02:05 +00:00
despotdaemon
7383866fb1 Pseudo-automatic update of changes made by timeless@mozdev.org.
git-svn-id: svn://10.0.0.236/trunk@216384 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-04 00:40:17 +00:00
bzbarsky%mit.edu
764bd2fa4a Add regression tests for bug 362594.
git-svn-id: svn://10.0.0.236/trunk@216383 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 23:39:49 +00:00
Olli.Pettay%helsinki.fi
b9f447cb08 Test for bug 362391, r=sicking
git-svn-id: svn://10.0.0.236/trunk@216382 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 23:04:42 +00:00
reed%reedloden.com
c0b31a92d5 Bug 322729 - "Despot needs an .htaccess file to restrict access to various non-CGI files" [p=justdave r=reed]
git-svn-id: svn://10.0.0.236/trunk@216379 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 22:52:47 +00:00
reed%reedloden.com
41315ac6df Bug 322765 - "Lots of people are missing vouchers" [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216378 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 22:16:44 +00:00
reed%reedloden.com
242ba0609b Bug 17589 - ""delete user" currently not a good idea" (also change $EnableDeleteUser to 1) [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216377 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 22:10:33 +00:00
reed%reedloden.com
fd21d6ace5 Bug 322762 - "Password resets don't get logged" [p=reed r=timeless]
git-svn-id: svn://10.0.0.236/trunk@216376 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 22:07:18 +00:00
stridey%gmail.com
80ec4e16ce Camino only - Bug 362543: Make 'Clear History' menu item function with user-added keyboard shortcuts. r=ardissone sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@216375 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 22:01:14 +00:00
cltbld
59fb0c0188 Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216374 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 21:21:02 +00:00
dietrich%mozilla.com
1ae60d8b04 Bug 360162 - Create build option for MOZ_PLACES_BOOKMARKS (r=bsmedberg)
git-svn-id: svn://10.0.0.236/trunk@216373 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 21:19:21 +00:00
mozilla.mano%sent.com
6ca0019f67 Bug 351253 - Search button misinterprets modifiers when clicked. r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216372 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 20:10:29 +00:00
philringnalda%gmail.com
5ef3c4b0b8 Bug 362627: Keyboard shortcuts to close Mac toolbar customization sheet don't work, r=mano
git-svn-id: svn://10.0.0.236/trunk@216371 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 19:52:28 +00:00
szegedia%freemail.hu
274664269e Bugfix for a generated proxy
git-svn-id: svn://10.0.0.236/trunk@216370 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 19:46:12 +00:00
neil%parkwaycc.co.uk
4322f922e5 Remove try/catch as Scott changed the implementation so that it returns nothing instead of throwing r=Mnyromyr
git-svn-id: svn://10.0.0.236/trunk@216369 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 19:43:16 +00:00
neil%parkwaycc.co.uk
cb6a4b2a28 Port Serge Gautherie's Thunderbird priority menu changes b=146075 r=Mnyromyr
git-svn-id: svn://10.0.0.236/trunk@216368 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 19:31:44 +00:00
reed%reedloden.com
aa1d06fa63 Bug 164221 - ""find partition containing file named" is misleading" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216367 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 19:07:47 +00:00
mattwillis%gmail.com
710811902a bug 357756 - Make CalDAV handle trailing parameters on the URL. Patch by Bruno Browning <browning@uwalumni.com> r=lilmatt, jminta
git-svn-id: svn://10.0.0.236/trunk@216366 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 18:45:37 +00:00
mattwillis%gmail.com
17d511cef4 bug 311263 - Adds UTF-8 request headers for CalDAV. Patch by Bruno Browning <browning@uwalumni.com> r=ctalbert,mvl NPOTDB
git-svn-id: svn://10.0.0.236/trunk@216365 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 18:40:05 +00:00
reed%reedloden.com
d24dec84e8 Bug 321234 - [p=morgamic/timeless r=dveditz r=chase r=dbaron]
git-svn-id: svn://10.0.0.236/trunk@216364 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 18:35:24 +00:00
ajschult%verizon.net
8a25258922 Bug 343552: Bonsai shouldn't try to look ouside of cvsroot via ../, r=timeless
git-svn-id: svn://10.0.0.236/trunk@216361 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 16:27:46 +00:00
emaijala%kolumbus.fi
adb9378f07 Fix for bug 362162: copy image to other app and crash on exit
r+sr=pavlov


git-svn-id: svn://10.0.0.236/trunk@216360 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 10:10:30 +00:00
tony%ponderer.org
c4b664bdde Bug 337336: Remove safebrowsing code from /extensions/safebrowsing
part 2, actually remove all the safe browsing files
r=bsmedbergs


git-svn-id: svn://10.0.0.236/trunk@216359 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 08:29:45 +00:00
cltbld
f5e9421958 Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216358 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 08:11:01 +00:00
tony%ponderer.org
58a8f1155f Bug 337336: Remove safebrowsing code from /extensions/safebrowsing
patch part 1 (making sure configure change doesn't cause anything to blow up)
r=bsmedbergs


git-svn-id: svn://10.0.0.236/trunk@216357 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 08:04:21 +00:00
robert%accettura.com
06e19af06e Backout of bug 325098 to facilitate 256447
git-svn-id: svn://10.0.0.236/trunk@216355 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 04:11:33 +00:00
reed%reedloden.com
85661b9795 Bug 362614 - "Use of uninitialized value in string ne at despot.cgi line 441" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216354 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 03:33:22 +00:00
anton.bobrov%sun.com
f10c871ff7 fix previous commit
git-svn-id: svn://10.0.0.236/trunk@216353 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 02:43:16 +00:00
bienvenu%nventure.com
f17d9ada0b fix 352530 connections exceeded alert with ssl imap, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216350 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 01:53:32 +00:00
reed%reedloden.com
1f09b3e8cd Bug 164151 - "Use of uninitialized value at line 58" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216349 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 01:06:29 +00:00
reed%reedloden.com
75eb99b7c8 Bug 322790 - "Error about email address not in database should be consistent" [p=timeless r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216348 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 00:34:02 +00:00
mrbkap%gmail.com
f9f5201fe4 Fix silly mistake (and thus UMR). bug 361694, r=brendan
git-svn-id: svn://10.0.0.236/trunk@216347 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-03 00:15:06 +00:00
brendan%mozilla.org
16c6d9e308 Fix from Gavin Reaney <gavin@picsel.com> for bug 362110, r=me.
git-svn-id: svn://10.0.0.236/trunk@216346 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 23:12:56 +00:00
gavin%gavinsharp.com
c7050a4e14 Bug 362286: nsIPrefBranchInternal is deprecated - use nsIPrefBranch2, patch by Shawn Wilsher :sdwilsh <comrade693+bmo@gmail.com>, r=db48x, sr=neil
git-svn-id: svn://10.0.0.236/trunk@216345 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 22:27:06 +00:00
gavin%gavinsharp.com
0c97f872d5 Bug 362590: Context 'Print Preview' menu lacks an accesskey, patch by Cédric Corazza <cedric.corazza@wanadoo.fr>, r=mscott
git-svn-id: svn://10.0.0.236/trunk@216343 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 21:57:01 +00:00
ajschult%verizon.net
b52c664be4 Bug 361128: Bad description of Privacy tab in page_info_help.xhtml. Patch by Rafal Likus <lemiel@wp.pl>, r=stefanh.
git-svn-id: svn://10.0.0.236/trunk@216341 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 17:16:18 +00:00
ajschult%verizon.net
02cf59e431 Bug 249744: Wrong URI for cookie notification icon. Patch by Rafal Likus <lemiel@wp.pl>, r=IanN.
git-svn-id: svn://10.0.0.236/trunk@216340 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 17:14:21 +00:00
ajschult%verizon.net
ba770dcb62 Bug 361901: Save Page menuitem label missing from File menu when DM is open. Patch by Stefan Hermes <stefanh@bluebottle.com>, r=mnyromyr, sr=neil
git-svn-id: svn://10.0.0.236/trunk@216338 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 16:40:40 +00:00
bugzilla%standard8.demon.co.uk
9b7d725b13 Bug 329744 Write migrator for moving to Toolkit-based profiles (basic build structure only). r/sr=Neil
git-svn-id: svn://10.0.0.236/trunk@216337 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 15:40:33 +00:00
bmlk%gmx.de
90079a0a52 testcase for bug 362348 NPOTB
git-svn-id: svn://10.0.0.236/trunk@216336 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 08:45:07 +00:00
scott%scott-macgregor.org
f8599f28d0 Bug #362557 --> add support for editing tags. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216335 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 07:47:42 +00:00
scott%scott-macgregor.org
34d346afc4 fix some dos line endings
git-svn-id: svn://10.0.0.236/trunk@216334 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 07:27:23 +00:00
scott%scott-macgregor.org
d88a2e8b50 Bug #362560 --> Tag UI polish. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216331 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 07:24:38 +00:00
bmlk%gmx.de
c07940c9fb colframes are referenced via the firstinflow bug 362348 r/sr=roc
git-svn-id: svn://10.0.0.236/trunk@216330 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 06:52:55 +00:00
mconnor%steelgryphon.com
62847bcfd9 bug 360493 - allow users to disable password autofill without disabling password manager, r=gavin
git-svn-id: svn://10.0.0.236/trunk@216329 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 06:34:22 +00:00
stuart.morgan%alumni.case.edu
92a4ecabf8 Bug 361838: Some valid .url files fail to open. Patch by Wevah <mozilla@derailer.org>. r=max sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@216328 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 05:14:10 +00:00
stuart.morgan%alumni.case.edu
29ecff721d Bug 362488: Copied images are byte-swapped on Intel. r=josh
git-svn-id: svn://10.0.0.236/trunk@216327 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 04:54:26 +00:00
gerv%gerv.net
45d573d5f4 Code tidy-up; add option to print out list of initial developers.
git-svn-id: svn://10.0.0.236/trunk@216326 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 01:58:14 +00:00
mnyromyr%tprac.de
7c08ff25cb Bug 342560: npob anymore
git-svn-id: svn://10.0.0.236/trunk@216324 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 01:17:26 +00:00
philringnalda%gmail.com
c7a6cd3067 Bug 351639: Close button in notification bar is missing a tooltip, r=mano
git-svn-id: svn://10.0.0.236/trunk@216323 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 01:16:33 +00:00
bienvenu%nventure.com
5b7fff745e fix 361150 message aging with grouped view crashing, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216318 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 00:41:06 +00:00
ghendricks%novell.com
498e1254af Allow user to add a new case to a list of runs or an existing case from within show_case
git-svn-id: svn://10.0.0.236/trunk@216316 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 00:32:10 +00:00
cst%yecc.com
b49bae56c0 Bug 356805 Undo close tab doesn't show the tab bar if it was hidden
r+sr=neil


git-svn-id: svn://10.0.0.236/trunk@216315 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 00:29:36 +00:00
ghendricks%novell.com
47e2815af8 Nasty error showing up if you enter an invalid bug id on a case-run
git-svn-id: svn://10.0.0.236/trunk@216313 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 00:15:21 +00:00
cvshook%sicking.cc
38f3bfff89 Bug 361442: Evaluate context independent expressions at optimize time. r/sr=peterv
git-svn-id: svn://10.0.0.236/trunk@216312 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-02 00:01:45 +00:00
reed%reedloden.com
1be503802b Bug 362447 - "use ssl for URLs on bmo in mozbot" [p=bugzilla@tuxmachine.com r=colin.oglivie]
git-svn-id: svn://10.0.0.236/trunk@216311 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 23:49:49 +00:00
ghendricks%novell.com
873f5c2e57 Move to the lists of builds and categories after adding and updating instead of show_plan
git-svn-id: svn://10.0.0.236/trunk@216309 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 23:40:07 +00:00
rhelmer%mozilla.com
1c779fa96a tbird version bump b=362533 r=nrthomas(cf)
git-svn-id: svn://10.0.0.236/trunk@216300 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 23:01:35 +00:00
stridey%gmail.com
d54369b4b3 Camino only - Bug 359334: Tweak download toolbar tooltips for consistency and accuracy
git-svn-id: svn://10.0.0.236/trunk@216294 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 22:18:17 +00:00
scott%scott-macgregor.org
d61a2c9435 Bug #362402 --> chrome toolbars aren't toggline on and off properly because goToggleToolbar was accidentally removed. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216293 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 22:07:16 +00:00
mozilla%justcameron.com
48277a21d0 Bug 359084 - rustico: some ugly excess platform text when viewing an add-on that's not available for your platform
CSS changes made in the patch for that bug affected the bookmarks page too :(
r=shaver


git-svn-id: svn://10.0.0.236/trunk@216290 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 21:13:24 +00:00
ghendricks%novell.com
c9a2fc13e7 renamed README
git-svn-id: svn://10.0.0.236/trunk@216289 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 20:54:46 +00:00
ghendricks%novell.com
983411d54e Renamed README in dojo to prevent conflicts.
git-svn-id: svn://10.0.0.236/trunk@216288 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 20:48:23 +00:00
neil%parkwaycc.co.uk
56749d281a Decode the priority when editing a message as new b=146075 r=bienvenu sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216286 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 20:12:09 +00:00
ghendricks%novell.com
5f2daecadd Added script for updating testopia from CVS
git-svn-id: svn://10.0.0.236/trunk@216285 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 20:11:38 +00:00
bent.mozilla%gmail.com
8b21a1191d Bustage fix from 354787.
git-svn-id: svn://10.0.0.236/trunk@216283 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:49:24 +00:00
ghendricks%novell.com
216854ef14 Some error messages were being displayed before the headers were printed.
git-svn-id: svn://10.0.0.236/trunk@216282 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:37:26 +00:00
reed%reedloden.com
86ace1f824 Bug 349265 - "When using Modify Query, dates entered are clobbered (set to UNIX time)" (fix a regression caused by first patch) [p=bugzilla@tuxmachine.com r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216278 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:30:43 +00:00
redfive%acm.org
609d721e2a bug360301 - add/remove eventListeners should both be capture
trunk checkin
r=enndeakin


git-svn-id: svn://10.0.0.236/trunk@216277 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:30:07 +00:00
reed%reedloden.com
8fc8db8f7d Bug 362444 - "Correct old reference to netscape, use https instead of http for URL, and update help" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216276 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:27:28 +00:00
bienvenu%nventure.com
c501ba47df fix 362512 issues with rfc2047 encoding, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@216275 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:26:30 +00:00
bent.mozilla%gmail.com
b2dca58318 Bug 354787 - "1% performance hit (Tp/Tdhtml) from the fix for bug 204114". r=roc+bsmedberg.
git-svn-id: svn://10.0.0.236/trunk@216274 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 19:26:18 +00:00
gavin%gavinsharp.com
deb3dbb566 Bug 362514: "official build" detection code doesn't work, treats all builds as "official", r=bsmedberg
git-svn-id: svn://10.0.0.236/trunk@216273 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 18:59:11 +00:00
gavin%gavinsharp.com
7c710a3066 Bug 362460: Search service shouldn't assume that builds with branding directories are "official" builds, r=mconnor
git-svn-id: svn://10.0.0.236/trunk@216270 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 18:18:28 +00:00
mattwillis%gmail.com
2412dc36c8 bustage fix - Remove blank lines caused by Windows line endings in the middle of a Unix file
git-svn-id: svn://10.0.0.236/trunk@216269 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 18:16:43 +00:00
ghendricks%novell.com
ab3a43f6a6 Sync with 2431
git-svn-id: svn://10.0.0.236/trunk@216268 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 18:06:58 +00:00
mattwillis%gmail.com
175ea305f7 bug 361216 - Adds new dtds to lightning's jar.mn. Patch by nightrat, r=jminta. Slight typo fixes by lilmatt
git-svn-id: svn://10.0.0.236/trunk@216267 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 17:55:13 +00:00
mats.palmgren%bredband.net
50ac9a55cb Use the EventStateManager to focus the for-element. b=360009 r=zeniko sr=bzbarsky
git-svn-id: svn://10.0.0.236/trunk@216266 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 17:18:34 +00:00
wsharp%adobe.com
667f641df0 fix mac build. bug 362390.
git-svn-id: svn://10.0.0.236/trunk@216265 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 17:17:06 +00:00
wsharp%adobe.com
9cb1faf54b bug 362390. Various fixes to get Tamarin working with latest Adobe Flash player. Some fixes from Flash source code brought over. r: edwsmith
git-svn-id: svn://10.0.0.236/trunk@216264 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 16:38:46 +00:00
bclary%bclary.com
aa6928f538 JavaScript Test - regression test for bug 361571, by Jesse Ruderman
git-svn-id: svn://10.0.0.236/trunk@216263 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 16:11:58 +00:00
lpsolit%gmail.com
2d0af23821 Bug 356395: On bug creation, an error is thrown when the requestee of a private attachment is not in the insidergroup, or when the requestee is not in the grant group (for attachment flags) - Patch by Frédéric Buclin <LpSolit@gmail.com> r/a=myk
git-svn-id: svn://10.0.0.236/trunk@216262 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 15:55:24 +00:00
michael.buettner%sun.com
818ee87cca fixed issue with timezone-setting for tasks
git-svn-id: svn://10.0.0.236/trunk@216261 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 15:26:11 +00:00
Olli.Pettay%helsinki.fi
9e389ab7d5 Trying to fix Thunderbird bustage, Bug 360731
git-svn-id: svn://10.0.0.236/trunk@216260 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 14:40:05 +00:00
mozilla.mano%sent.com
f16cfe1d1b Bug 349481 - Clear private data dialog width is hardcoded. r=gavin
git-svn-id: svn://10.0.0.236/trunk@216258 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 12:44:40 +00:00
mozilla.mano%sent.com
fd4fc0b9e8 Bug 362295 - Remove find methods from browser and tabbrowser, r=gavin.
git-svn-id: svn://10.0.0.236/trunk@216257 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 12:38:47 +00:00
mozilla.mano%sent.com
91ef1d26dd Actually address gavin's review comment in bug 185239
git-svn-id: svn://10.0.0.236/trunk@216256 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 12:36:23 +00:00
mozilla.mano%sent.com
1bf95a76be Bug 185239 - Print Frame in context menu. r=gavin, ui-r=mconnor.
git-svn-id: svn://10.0.0.236/trunk@216255 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 12:33:30 +00:00
mozilla.mano%sent.com
e5a1371058 Bug 331215 - Find toolbar doesn't reset status when search is wrapped, also fix bug 361930 (strict warnings 'reference to undefined property this._foundLink'). r=gavin on both.
git-svn-id: svn://10.0.0.236/trunk@216254 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 12:29:11 +00:00
mozilla.mano%sent.com
8b3c53b218 Bug 343077 - Find Again toolbarbutton doesn't switch back to normal-find if the findbar is opened after links TAF. r=masayuki.
git-svn-id: svn://10.0.0.236/trunk@216253 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 12:19:26 +00:00
gijskruitbosch%gmail.com
9c6f25d793 Bug 361145 - Makes FAQ entry in help menu localizable
r=silver@warwickcompsoc.co.uk (James Ross)
ChatZilla Only


git-svn-id: svn://10.0.0.236/trunk@216249 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 11:36:12 +00:00
Olli.Pettay%helsinki.fi
67a5b99ec2 Bug 360731, Back and Forward buttons on mouse no longer work, also Bug 330938, r=emaijala, sr=roc
git-svn-id: svn://10.0.0.236/trunk@216248 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 11:16:07 +00:00
Olli.Pettay%helsinki.fi
174edaba72 Bug 360731, Back and Forward buttons on mouse no longer work, also Bug 330938, r=emaijala, sr=roc
git-svn-id: svn://10.0.0.236/trunk@216247 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 11:09:53 +00:00
hwaara%gmail.com
d6879d09a3 Make deep hit-testing work. This makes VoiceOver able to speak whatever you mouse over, both in XUL and web page content (if that pref is set in the accessibility settings)
r=surkov, b=352329


git-svn-id: svn://10.0.0.236/trunk@216246 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 10:53:52 +00:00
michael.buettner%sun.com
46f75b409e bug #360120 selection of scheduled event should be interactive
git-svn-id: svn://10.0.0.236/trunk@216245 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 10:42:31 +00:00
Olli.Pettay%helsinki.fi
3be1d1aa64 Bug 362391, DOMAttrModified doesn't handle namespaced attributes properly, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@216242 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 08:44:38 +00:00
scott%scott-macgregor.org
2acffb210e band aid, wrap our attempt to get the phishing warden in a try/catch
git-svn-id: svn://10.0.0.236/trunk@216241 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 08:32:52 +00:00
cls%seawood.org
0dd72d58fc Automatically disable airbag for mingw builds
Bug #362128 r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@216240 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 08:04:59 +00:00
cls%seawood.org
ea2634e773 Add -D_WIN32_IE=0x0400 to win32 builds to enable features used by SpecialSystemDirectory
Bug #361340 r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@216239 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 08:03:14 +00:00
cls%seawood.org
4efa0300cb The features used by nsNotifyAddrListener require w32api 3.8.
Bug #358023 r=bsmedberg


git-svn-id: svn://10.0.0.236/trunk@216238 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 07:57:08 +00:00
mconnor%steelgryphon.com
980f78e108 fix brokenness for a1, r=gavin over IRC, a=me since everyone's asleep
git-svn-id: svn://10.0.0.236/trunk@216237 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 07:56:36 +00:00
gerv%gerv.net
5ef0656e5c Further updates to deal with current codebase, and to note progress
git-svn-id: svn://10.0.0.236/trunk@216233 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:59:21 +00:00
scott%scott-macgregor.org
172eef2013 Bug #328749 --> add phishing detection support using a locally downloaded list of known phishing urls. Currently we don't have a provider to use to download the list. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216232 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:57:58 +00:00
scott%scott-macgregor.org
888fb78953 Bug #328749 --> Add phishing detection support using a locally downloaded list of known phishing urls. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216231 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:56:40 +00:00
cltbld
36558ab70e Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216230 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:51:02 +00:00
scott%scott-macgregor.org
342c090e6c Bug #328749 --> start building the url classifier for thunderbird. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216229 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:50:06 +00:00
scott%scott-macgregor.org
25a2feb828 Bug #328749 --> Add phishing detection support using a locally downloaded list of known phishing urls. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216228 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:47:44 +00:00
scott%scott-macgregor.org
b1958b065b Bug #328749 --> Add phishing detection support using a locally downloaded list of known phishing urls. sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@216226 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:41:28 +00:00
cltbld
1a31cc3d4d Automated update from host egg.build.mozilla.org
git-svn-id: svn://10.0.0.236/trunk@216225 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:21:01 +00:00
alfred.peng%sun.com
73eebe5f74 Bug 362209. test -e not available in sh.
r=mconnor.


git-svn-id: svn://10.0.0.236/trunk@216224 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:13:19 +00:00
reed%reedloden.com
e0407d9aaa Bug 362442 - "Despot syncit file still refers to netscape.public.*" [p=reed r=justdave]
git-svn-id: svn://10.0.0.236/trunk@216223 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 06:09:28 +00:00
tor%cs.brown.edu
839557aeb8 Bug 362233 - merge filter with subregion misbehaves.
Patch by amenzie@us.ibm.com, r=tor, sr=roc


git-svn-id: svn://10.0.0.236/trunk@216222 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 05:30:42 +00:00
tor%cs.brown.edu
5974cf3bd2 Bug 362413 - expose cairo fill rule control. r=vlad
git-svn-id: svn://10.0.0.236/trunk@216221 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 05:24:50 +00:00
tor%cs.brown.edu
e81f27ecb0 Bug 362226 - nested inner svg not updating viewbox. r=jwatt, sr=roc
git-svn-id: svn://10.0.0.236/trunk@216220 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 05:16:14 +00:00
stuart.morgan%alumni.case.edu
78bf66de9e Camino only - Bug 348695: Use editor context menu in Midas frames. r=kreeger sr=pink
git-svn-id: svn://10.0.0.236/trunk@216219 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 05:03:19 +00:00
bzbarsky%mit.edu
15374197c2 Make sure the XML decl in the data we post when a document is passed to send()
matches the encoding we use.  Bug 361934, r=sicking, sr=biesi


git-svn-id: svn://10.0.0.236/trunk@216218 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 04:48:05 +00:00
bzbarsky%mit.edu
755660d2d2 Don't construct unneeded autostring. Bug 362316, r+sr=sicking
git-svn-id: svn://10.0.0.236/trunk@216217 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 04:44:57 +00:00
bzbarsky%mit.edu
e83916216b Make sure to not use the same disk cache data block for different URIs. Bug
347852, patch by Alfred Kayser <alfredkayser@nl.ibm.com>, r=darin, sr=bzbarsky


git-svn-id: svn://10.0.0.236/trunk@216216 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 04:41:30 +00:00
bzbarsky%mit.edu
2830ae21c5 Fix assertion to assert about the right thing. Bug 265780 comment 35 followup.
git-svn-id: svn://10.0.0.236/trunk@216215 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 04:35:18 +00:00
ginn.chen%sun.com
e1a175b756 Bug 360865 Firefox crashes when selecting downloaded item with gok [@nsXULMenuitemAccessible::DoAction]
r=aaronleventhal


git-svn-id: svn://10.0.0.236/trunk@216211 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 03:46:18 +00:00
stridey%gmail.com
b027774f51 Camino only - Bug 359557: Omnibus ad-blocking bug for November. Patch by ardissone <alqahira@ardisson.org> r/sr=smfr
git-svn-id: svn://10.0.0.236/trunk@216210 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 03:46:14 +00:00
stridey%gmail.com
b45374470e Camino only - Bug 353391: Camino ships 2 copies of the table images. Patch by ardissone <alqahira@ardisson.org>. r/sr=smorgan
git-svn-id: svn://10.0.0.236/trunk@216209 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 03:42:16 +00:00
aaronleventhal%moonset.net
d5a3b5e273 Bug 362369. Description missing for Tools -> Options -> Content -> File types -> Manage. r=mano
git-svn-id: svn://10.0.0.236/trunk@216208 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 03:42:12 +00:00
rhelmer%mozilla.com
2588f7c8cc back out changes, only meant for branch
git-svn-id: svn://10.0.0.236/trunk@216205 18797224-902f-48f8-a5cc-f745e15eee43
2006-12-01 02:22:58 +00:00
95 changed files with 115159 additions and 2519 deletions

View File

@@ -0,0 +1,95 @@
#! gmake
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
#######################################################################
# (1) Include initial platform-independent assignments (MANDATORY). #
#######################################################################
include manifest.mn
#######################################################################
# (2) Include "global" configuration information. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/config.mk
#######################################################################
# (3) Include "component" configuration information. (OPTIONAL) #
#######################################################################
#######################################################################
# (4) Include "local" platform-dependent assignments (OPTIONAL). #
#######################################################################
include config.mk
#######################################################################
# (5) Execute "global" rules. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
# (6) Execute "component" rules. (OPTIONAL) #
#######################################################################
#######################################################################
# (7) Execute "local" rules. (OPTIONAL). #
#######################################################################
export:: private_export
# On AIX 4.3, IBM xlC_r compiler (version 3.6.6) cannot compile
# pkcs11c.c in 64-bit mode for unknown reasons. A workaround is
# to compile it with optimizations turned on. (Bugzilla bug #63815)
ifeq ($(OS_TARGET)$(OS_RELEASE),AIX4.3)
ifeq ($(USE_64),1)
ifndef BUILD_OPT
$(OBJDIR)/pkcs11.o: pkcs11.c
@$(MAKE_OBJDIR)
$(CC) -o $@ -c -O2 $(CFLAGS) $<
$(OBJDIR)/pkcs11c.o: pkcs11c.c
@$(MAKE_OBJDIR)
$(CC) -o $@ -c -O2 $(CFLAGS) $<
endif
endif
endif

View File

@@ -0,0 +1,107 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
CRYPTOLIB=$(DIST)/lib/$(LIB_PREFIX)freebl.$(LIB_SUFFIX)
CRYPTODIR=../freebl
ifdef MOZILLA_SECURITY_BUILD
CRYPTOLIB=$(DIST)/lib/$(LIB_PREFIX)crypto.$(LIB_SUFFIX)
CRYPTODIR=../crypto
endif
SQLITE_LIB = $(DIST)/lib/$(LIB_PREFIX)sqlite3.$(LIB_SUFFIX)
ifdef NSS_USE_SYTEM_SQLITE
SQLITE_LIB = -lsqlite3
endif
EXTRA_LIBS += \
$(CRYPTOLIB) \
$(DIST)/lib/$(LIB_PREFIX)secutil.$(LIB_SUFFIX) \
$(SQLITE_LIB) \
$(NULL)
# can't do this in manifest.mn because OS_TARGET isn't defined there.
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
# don't want the 32 in the shared library name
SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
IMPORT_LIBRARY = $(OBJDIR)/$(IMPORT_LIB_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION)$(IMPORT_LIB_SUFFIX)
RES = $(OBJDIR)/$(LIBRARY_NAME).res
RESNAME = $(LIBRARY_NAME).rc
ifdef NS_USE_GCC
EXTRA_SHARED_LIBS += \
-L$(NSPR_LIB_DIR) \
-lplc4 \
-lplds4 \
-lnspr4 \
$(NULL)
else # ! NS_USE_GCC
EXTRA_SHARED_LIBS += \
$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plc4.lib \
$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plds4.lib \
$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)nspr4.lib \
$(NULL)
endif # NS_USE_GCC
else
# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
# $(EXTRA_SHARED_LIBS) come before $(OS_LIBS), except on AIX.
EXTRA_SHARED_LIBS += \
-L$(NSPR_LIB_DIR) \
-lplc4 \
-lplds4 \
-lnspr4 \
$(NULL)
endif
ifeq ($(OS_TARGET),SunOS)
# The -R '$ORIGIN' linker option instructs this library to search for its
# dependencies in the same directory where it resides.
MKSHLIB += -R '$$ORIGIN'
OS_LIBS += -lbsm
endif
ifeq ($(OS_TARGET),WINCE)
DEFINES += -DDBM_USING_NSPR
endif
# indicates dependency on freebl static lib
$(SHARED_LIBRARY): $(CRYPTOLIB)

View File

@@ -0,0 +1,641 @@
/*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Elliptic Curve Cryptography library.
*
* The Initial Developer of the Original Code is
* Sun Microsystems, Inc.
* Portions created by the Initial Developer are Copyright (C) 2003
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com> and
* Douglas Stebila <douglas@stebila.ca>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifdef NSS_ENABLE_ECC
#include "blapi.h"
#include "secoid.h"
#include "secitem.h"
#include "secerr.h"
#include "ec.h"
#include "ecl-curve.h"
#define CHECK_OK(func) if (func == NULL) goto cleanup
#define CHECK_SEC_OK(func) if (SECSuccess != (rv = func)) goto cleanup
/*
* Initializes a SECItem from a hexadecimal string
*
* Warning: This function ignores leading 00's, so any leading 00's
* in the hexadecimal string must be optional.
*/
static SECItem *
hexString2SECItem(PRArenaPool *arena, SECItem *item, const char *str)
{
int i = 0;
int byteval = 0;
int tmp = PORT_Strlen(str);
if ((tmp % 2) != 0) return NULL;
/* skip leading 00's unless the hex string is "00" */
while ((tmp > 2) && (str[0] == '0') && (str[1] == '0')) {
str += 2;
tmp -= 2;
}
item->data = (unsigned char *) PORT_ArenaAlloc(arena, tmp/2);
if (item->data == NULL) return NULL;
item->len = tmp/2;
while (str[i]) {
if ((str[i] >= '0') && (str[i] <= '9'))
tmp = str[i] - '0';
else if ((str[i] >= 'a') && (str[i] <= 'f'))
tmp = str[i] - 'a' + 10;
else if ((str[i] >= 'A') && (str[i] <= 'F'))
tmp = str[i] - 'A' + 10;
else
return NULL;
byteval = byteval * 16 + tmp;
if ((i % 2) != 0) {
item->data[i/2] = byteval;
byteval = 0;
}
i++;
}
return item;
}
/* Copy all of the fields from srcParams into dstParams
*/
SECStatus
EC_CopyParams(PRArenaPool *arena, ECParams *dstParams,
const ECParams *srcParams)
{
SECStatus rv = SECFailure;
dstParams->arena = arena;
dstParams->type = srcParams->type;
dstParams->fieldID.size = srcParams->fieldID.size;
dstParams->fieldID.type = srcParams->fieldID.type;
if (srcParams->fieldID.type == ec_field_GFp) {
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->fieldID.u.prime,
&srcParams->fieldID.u.prime));
} else {
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->fieldID.u.poly,
&srcParams->fieldID.u.poly));
}
dstParams->fieldID.k1 = srcParams->fieldID.k1;
dstParams->fieldID.k2 = srcParams->fieldID.k2;
dstParams->fieldID.k3 = srcParams->fieldID.k3;
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->curve.a,
&srcParams->curve.a));
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->curve.b,
&srcParams->curve.b));
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->curve.seed,
&srcParams->curve.seed));
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->base,
&srcParams->base));
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->order,
&srcParams->order));
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->DEREncoding,
&srcParams->DEREncoding));
dstParams->name = srcParams->name;
CHECK_SEC_OK(SECITEM_CopyItem(arena, &dstParams->curveOID,
&srcParams->curveOID));
dstParams->cofactor = srcParams->cofactor;
return SECSuccess;
cleanup:
return SECFailure;
}
static SECStatus
gf_populate_params(ECCurveName name, ECFieldType field_type, ECParams *params)
{
SECStatus rv = SECFailure;
const ECCurveParams *curveParams;
/* 2 ['0'+'4'] + MAX_ECKEY_LEN * 2 [x,y] * 2 [hex string] + 1 ['\0'] */
char genenc[3 + 2 * 2 * MAX_ECKEY_LEN];
if ((name < ECCurve_noName) || (name > ECCurve_pastLastCurve)) goto cleanup;
params->name = name;
curveParams = ecCurve_map[params->name];
CHECK_OK(curveParams);
params->fieldID.size = curveParams->size;
params->fieldID.type = field_type;
if (field_type == ec_field_GFp) {
CHECK_OK(hexString2SECItem(params->arena, &params->fieldID.u.prime,
curveParams->irr));
} else {
CHECK_OK(hexString2SECItem(params->arena, &params->fieldID.u.poly,
curveParams->irr));
}
CHECK_OK(hexString2SECItem(params->arena, &params->curve.a,
curveParams->curvea));
CHECK_OK(hexString2SECItem(params->arena, &params->curve.b,
curveParams->curveb));
genenc[0] = '0';
genenc[1] = '4';
genenc[2] = '\0';
strcat(genenc, curveParams->genx);
strcat(genenc, curveParams->geny);
CHECK_OK(hexString2SECItem(params->arena, &params->base, genenc));
CHECK_OK(hexString2SECItem(params->arena, &params->order,
curveParams->order));
params->cofactor = curveParams->cofactor;
rv = SECSuccess;
cleanup:
return rv;
}
SECStatus
EC_FillParams(PRArenaPool *arena, const SECItem *encodedParams,
ECParams *params)
{
SECStatus rv = SECFailure;
SECOidTag tag;
SECItem oid = { siBuffer, NULL, 0};
#if EC_DEBUG
int i;
printf("Encoded params in EC_DecodeParams: ");
for (i = 0; i < encodedParams->len; i++) {
printf("%02x:", encodedParams->data[i]);
}
printf("\n");
#endif
if ((encodedParams->len != ANSI_X962_CURVE_OID_TOTAL_LEN) &&
(encodedParams->len != SECG_CURVE_OID_TOTAL_LEN)) {
PORT_SetError(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE);
return SECFailure;
};
oid.len = encodedParams->len - 2;
oid.data = encodedParams->data + 2;
if ((encodedParams->data[0] != SEC_ASN1_OBJECT_ID) ||
((tag = SECOID_FindOIDTag(&oid)) == SEC_OID_UNKNOWN)) {
PORT_SetError(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE);
return SECFailure;
}
params->arena = arena;
params->cofactor = 0;
params->type = ec_params_named;
params->name = ECCurve_noName;
/* For named curves, fill out curveOID */
params->curveOID.len = oid.len;
params->curveOID.data = (unsigned char *) PORT_ArenaAlloc(arena, oid.len);
if (params->curveOID.data == NULL) goto cleanup;
memcpy(params->curveOID.data, oid.data, oid.len);
#if EC_DEBUG
printf("Curve: %s\n", SECOID_FindOIDTagDescription(tag));
#endif
switch (tag) {
/* Binary curves */
case SEC_OID_ANSIX962_EC_C2PNB163V1:
/* Populate params for c2pnb163v1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB163V1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB163V2:
/* Populate params for c2pnb163v2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB163V2, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB163V3:
/* Populate params for c2pnb163v3 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB163V3, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB176V1:
/* Populate params for c2pnb176v1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB176V1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB191V1:
/* Populate params for c2tnb191v1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB191V1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB191V2:
/* Populate params for c2tnb191v2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB191V2, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB191V3:
/* Populate params for c2tnb191v3 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB191V3, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB208W1:
/* Populate params for c2pnb208w1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB208W1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB239V1:
/* Populate params for c2tnb239v1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB239V1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB239V2:
/* Populate params for c2tnb239v2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB239V2, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB239V3:
/* Populate params for c2tnb239v3 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB239V3, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB272W1:
/* Populate params for c2pnb272w1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB272W1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB304W1:
/* Populate params for c2pnb304w1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB304W1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB359V1:
/* Populate params for c2tnb359v1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB359V1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2PNB368W1:
/* Populate params for c2pnb368w1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_PNB368W1, ec_field_GF2m,
params) );
break;
case SEC_OID_ANSIX962_EC_C2TNB431R1:
/* Populate params for c2tnb431r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_CHAR2_TNB431R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT113R1:
/* Populate params for sect113r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_113R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT113R2:
/* Populate params for sect113r2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_113R2, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT131R1:
/* Populate params for sect131r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_131R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT131R2:
/* Populate params for sect131r2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_131R2, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT163K1:
/* Populate params for sect163k1
* (the NIST K-163 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_163K1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT163R1:
/* Populate params for sect163r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_163R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT163R2:
/* Populate params for sect163r2
* (the NIST B-163 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_163R2, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT193R1:
/* Populate params for sect193r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_193R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT193R2:
/* Populate params for sect193r2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_193R2, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT233K1:
/* Populate params for sect233k1
* (the NIST K-233 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_233K1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT233R1:
/* Populate params for sect233r1
* (the NIST B-233 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_233R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT239K1:
/* Populate params for sect239k1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_239K1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT283K1:
/* Populate params for sect283k1
* (the NIST K-283 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_283K1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT283R1:
/* Populate params for sect283r1
* (the NIST B-283 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_283R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT409K1:
/* Populate params for sect409k1
* (the NIST K-409 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_409K1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT409R1:
/* Populate params for sect409r1
* (the NIST B-409 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_409R1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT571K1:
/* Populate params for sect571k1
* (the NIST K-571 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_571K1, ec_field_GF2m,
params) );
break;
case SEC_OID_SECG_EC_SECT571R1:
/* Populate params for sect571r1
* (the NIST B-571 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_CHAR2_571R1, ec_field_GF2m,
params) );
break;
/* Prime curves */
case SEC_OID_ANSIX962_EC_PRIME192V1:
/* Populate params for prime192v1 aka secp192r1
* (the NIST P-192 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_192V1, ec_field_GFp,
params) );
break;
case SEC_OID_ANSIX962_EC_PRIME192V2:
/* Populate params for prime192v2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_192V2, ec_field_GFp,
params) );
break;
case SEC_OID_ANSIX962_EC_PRIME192V3:
/* Populate params for prime192v3 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_192V3, ec_field_GFp,
params) );
break;
case SEC_OID_ANSIX962_EC_PRIME239V1:
/* Populate params for prime239v1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_239V1, ec_field_GFp,
params) );
break;
case SEC_OID_ANSIX962_EC_PRIME239V2:
/* Populate params for prime239v2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_239V2, ec_field_GFp,
params) );
break;
case SEC_OID_ANSIX962_EC_PRIME239V3:
/* Populate params for prime239v3 */
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_239V3, ec_field_GFp,
params) );
break;
case SEC_OID_ANSIX962_EC_PRIME256V1:
/* Populate params for prime256v1 aka secp256r1
* (the NIST P-256 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_X9_62_PRIME_256V1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP112R1:
/* Populate params for secp112r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_112R1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP112R2:
/* Populate params for secp112r2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_112R2, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP128R1:
/* Populate params for secp128r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_128R1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP128R2:
/* Populate params for secp128r2 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_128R2, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP160K1:
/* Populate params for secp160k1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_160K1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP160R1:
/* Populate params for secp160r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_160R1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP160R2:
/* Populate params for secp160r1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_160R2, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP192K1:
/* Populate params for secp192k1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_192K1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP224K1:
/* Populate params for secp224k1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_224K1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP224R1:
/* Populate params for secp224r1
* (the NIST P-224 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_224R1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP256K1:
/* Populate params for secp256k1 */
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_256K1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP384R1:
/* Populate params for secp384r1
* (the NIST P-384 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_384R1, ec_field_GFp,
params) );
break;
case SEC_OID_SECG_EC_SECP521R1:
/* Populate params for secp521r1
* (the NIST P-521 curve)
*/
CHECK_SEC_OK( gf_populate_params(ECCurve_SECG_PRIME_521R1, ec_field_GFp,
params) );
break;
default:
break;
};
cleanup:
if (!params->cofactor) {
PORT_SetError(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE);
#if EC_DEBUG
printf("Unrecognized curve, returning NULL params\n");
#endif
}
return rv;
}
SECStatus
EC_DecodeParams(const SECItem *encodedParams, ECParams **ecparams)
{
PRArenaPool *arena;
ECParams *params;
SECStatus rv = SECFailure;
/* Initialize an arena for the ECParams structure */
if (!(arena = PORT_NewArena(NSS_FREEBL_DEFAULT_CHUNKSIZE)))
return SECFailure;
params = (ECParams *)PORT_ArenaZAlloc(arena, sizeof(ECParams));
if (!params) {
PORT_FreeArena(arena, PR_TRUE);
return SECFailure;
}
/* Copy the encoded params */
SECITEM_AllocItem(arena, &(params->DEREncoding),
encodedParams->len);
memcpy(params->DEREncoding.data, encodedParams->data, encodedParams->len);
/* Fill out the rest of the ECParams structure based on
* the encoded params
*/
rv = EC_FillParams(arena, encodedParams, params);
if (rv == SECFailure) {
PORT_FreeArena(arena, PR_TRUE);
return SECFailure;
} else {
*ecparams = params;;
return SECSuccess;
}
}
#endif /* NSS_ENABLE_ECC */

View File

@@ -0,0 +1,351 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Network Security Services (NSS).
*
* The Initial Developer of the Original Code is
* Red Hat, Inc.
* Portions created by the Initial Developer are Copyright (C) 2006
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* This file implements audit logging required by FIPS 140-2 Security
* Level 2.
*/
#include "prprf.h"
#include "softoken.h"
/*
* Print the value of the returned object handle in the output buffer
* on a successful return of the PKCS #11 function. If the PKCS #11
* function failed or the pointer to object handle is NULL (which is
* the case for C_DeriveKey with CKM_TLS_KEY_AND_MAC_DERIVE), an empty
* string is stored in the output buffer.
*
* out: the output buffer
* outlen: the length of the output buffer
* argName: the name of the "pointer to object handle" argument
* phObject: the pointer to object handle
* rv: the return value of the PKCS #11 function
*/
static void sftk_PrintReturnedObjectHandle(char *out, PRUint32 outlen,
const char *argName, CK_OBJECT_HANDLE_PTR phObject, CK_RV rv)
{
if ((rv == CKR_OK) && phObject) {
PR_snprintf(out, outlen,
" *%s=0x%08lX", argName, (PRUint32)*phObject);
} else {
PORT_Assert(outlen != 0);
out[0] = '\0';
}
}
/*
* MECHANISM_BUFSIZE needs to be large enough for sftk_PrintMechanism,
* which uses <= 49 bytes.
*/
#define MECHANISM_BUFSIZE 64
static void sftk_PrintMechanism(char *out, PRUint32 outlen,
CK_MECHANISM_PTR pMechanism)
{
if (pMechanism) {
/*
* If we change the format string, we need to make sure
* MECHANISM_BUFSIZE is still large enough. We allow
* 20 bytes for %p on a 64-bit platform.
*/
PR_snprintf(out, outlen, "%p {mechanism=0x%08lX, ...}",
pMechanism, (PRUint32)pMechanism->mechanism);
} else {
PR_snprintf(out, outlen, "%p", pMechanism);
}
}
void sftk_AuditCreateObject(CK_SESSION_HANDLE hSession,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount,
CK_OBJECT_HANDLE_PTR phObject, CK_RV rv)
{
char msg[256];
char shObject[32];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintReturnedObjectHandle(shObject, sizeof shObject,
"phObject", phObject, rv);
PR_snprintf(msg, sizeof msg,
"C_CreateObject(hSession=0x%08lX, pTemplate=%p, ulCount=%lu, "
"phObject=%p)=0x%08lX%s",
(PRUint32)hSession, pTemplate, (PRUint32)ulCount,
phObject, (PRUint32)rv, shObject);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditCopyObject(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount,
CK_OBJECT_HANDLE_PTR phNewObject, CK_RV rv)
{
char msg[256];
char shNewObject[32];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintReturnedObjectHandle(shNewObject, sizeof shNewObject,
"phNewObject", phNewObject, rv);
PR_snprintf(msg, sizeof msg,
"C_CopyObject(hSession=0x%08lX, hObject=0x%08lX, "
"pTemplate=%p, ulCount=%lu, phNewObject=%p)=0x%08lX%s",
(PRUint32)hSession, (PRUint32)hObject,
pTemplate, (PRUint32)ulCount, phNewObject, (PRUint32)rv, shNewObject);
sftk_LogAuditMessage(severity, msg);
}
/* WARNING: hObject has been destroyed and can only be printed. */
void sftk_AuditDestroyObject(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_RV rv)
{
char msg[256];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
PR_snprintf(msg, sizeof msg,
"C_DestroyObject(hSession=0x%08lX, hObject=0x%08lX)=0x%08lX",
(PRUint32)hSession, (PRUint32)hObject, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditGetObjectSize(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize, CK_RV rv)
{
char msg[256];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
PR_snprintf(msg, sizeof msg,
"C_GetObjectSize(hSession=0x%08lX, hObject=0x%08lX, "
"pulSize=%p)=0x%08lX",
(PRUint32)hSession, (PRUint32)hObject,
pulSize, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditGetAttributeValue(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount, CK_RV rv)
{
char msg[256];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
PR_snprintf(msg, sizeof msg,
"C_GetAttributeValue(hSession=0x%08lX, hObject=0x%08lX, "
"pTemplate=%p, ulCount=%lu)=0x%08lX",
(PRUint32)hSession, (PRUint32)hObject,
pTemplate, (PRUint32)ulCount, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditSetAttributeValue(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount, CK_RV rv)
{
char msg[256];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
PR_snprintf(msg, sizeof msg,
"C_SetAttributeValue(hSession=0x%08lX, hObject=0x%08lX, "
"pTemplate=%p, ulCount=%lu)=0x%08lX",
(PRUint32)hSession, (PRUint32)hObject,
pTemplate, (PRUint32)ulCount, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditCryptInit(const char *opName, CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey, CK_RV rv)
{
char msg[256];
char mech[MECHANISM_BUFSIZE];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintMechanism(mech, sizeof mech, pMechanism);
PR_snprintf(msg, sizeof msg,
"C_%sInit(hSession=0x%08lX, pMechanism=%s, "
"hKey=0x%08lX)=0x%08lX",
opName, (PRUint32)hSession, mech,
(PRUint32)hKey, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditGenerateKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey, CK_RV rv)
{
char msg[256];
char mech[MECHANISM_BUFSIZE];
char shKey[32];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintMechanism(mech, sizeof mech, pMechanism);
sftk_PrintReturnedObjectHandle(shKey, sizeof shKey, "phKey", phKey, rv);
PR_snprintf(msg, sizeof msg,
"C_GenerateKey(hSession=0x%08lX, pMechanism=%s, "
"pTemplate=%p, ulCount=%lu, phKey=%p)=0x%08lX%s",
(PRUint32)hSession, mech,
pTemplate, (PRUint32)ulCount, phKey, (PRUint32)rv, shKey);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditGenerateKeyPair(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pPublicKeyTemplate,
CK_ULONG ulPublicKeyAttributeCount, CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
CK_ULONG ulPrivateKeyAttributeCount, CK_OBJECT_HANDLE_PTR phPublicKey,
CK_OBJECT_HANDLE_PTR phPrivateKey, CK_RV rv)
{
char msg[512];
char mech[MECHANISM_BUFSIZE];
char shPublicKey[32];
char shPrivateKey[32];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintMechanism(mech, sizeof mech, pMechanism);
sftk_PrintReturnedObjectHandle(shPublicKey, sizeof shPublicKey,
"phPublicKey", phPublicKey, rv);
sftk_PrintReturnedObjectHandle(shPrivateKey, sizeof shPrivateKey,
"phPrivateKey", phPrivateKey, rv);
PR_snprintf(msg, sizeof msg,
"C_GenerateKeyPair(hSession=0x%08lX, pMechanism=%s, "
"pPublicKeyTemplate=%p, ulPublicKeyAttributeCount=%lu, "
"pPrivateKeyTemplate=%p, ulPrivateKeyAttributeCount=%lu, "
"phPublicKey=%p, phPrivateKey=%p)=0x%08lX%s%s",
(PRUint32)hSession, mech,
pPublicKeyTemplate, (PRUint32)ulPublicKeyAttributeCount,
pPrivateKeyTemplate, (PRUint32)ulPrivateKeyAttributeCount,
phPublicKey, phPrivateKey, (PRUint32)rv, shPublicKey, shPrivateKey);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditWrapKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hWrappingKey,
CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey,
CK_ULONG_PTR pulWrappedKeyLen, CK_RV rv)
{
char msg[256];
char mech[MECHANISM_BUFSIZE];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintMechanism(mech, sizeof mech, pMechanism);
PR_snprintf(msg, sizeof msg,
"C_WrapKey(hSession=0x%08lX, pMechanism=%s, hWrappingKey=0x%08lX, "
"hKey=0x%08lX, pWrappedKey=%p, pulWrappedKeyLen=%p)=0x%08lX",
(PRUint32)hSession, mech, (PRUint32)hWrappingKey,
(PRUint32)hKey, pWrappedKey, pulWrappedKeyLen, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditUnwrapKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hUnwrappingKey,
CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount,
CK_OBJECT_HANDLE_PTR phKey, CK_RV rv)
{
char msg[256];
char mech[MECHANISM_BUFSIZE];
char shKey[32];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintMechanism(mech, sizeof mech, pMechanism);
sftk_PrintReturnedObjectHandle(shKey, sizeof shKey, "phKey", phKey, rv);
PR_snprintf(msg, sizeof msg,
"C_UnwrapKey(hSession=0x%08lX, pMechanism=%s, "
"hUnwrappingKey=0x%08lX, pWrappedKey=%p, ulWrappedKeyLen=%lu, "
"pTemplate=%p, ulAttributeCount=%lu, phKey=%p)=0x%08lX%s",
(PRUint32)hSession, mech,
(PRUint32)hUnwrappingKey, pWrappedKey, (PRUint32)ulWrappedKeyLen,
pTemplate, (PRUint32)ulAttributeCount, phKey, (PRUint32)rv, shKey);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditDeriveKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hBaseKey,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount,
CK_OBJECT_HANDLE_PTR phKey, CK_RV rv)
{
char msg[512];
char mech[MECHANISM_BUFSIZE];
char shKey[32];
char sTlsKeys[128];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
sftk_PrintMechanism(mech, sizeof mech, pMechanism);
sftk_PrintReturnedObjectHandle(shKey, sizeof shKey, "phKey", phKey, rv);
if ((rv == CKR_OK) &&
(pMechanism->mechanism == CKM_TLS_KEY_AND_MAC_DERIVE)) {
CK_SSL3_KEY_MAT_PARAMS *param =
(CK_SSL3_KEY_MAT_PARAMS *)pMechanism->pParameter;
CK_SSL3_KEY_MAT_OUT *keymat = param->pReturnedKeyMaterial;
PR_snprintf(sTlsKeys, sizeof sTlsKeys,
" hClientMacSecret=0x%08lX hServerMacSecret=0x%08lX"
" hClientKey=0x%08lX hServerKey=0x%08lX",
(PRUint32)keymat->hClientMacSecret,
(PRUint32)keymat->hServerMacSecret,
(PRUint32)keymat->hClientKey,
(PRUint32)keymat->hServerKey);
} else {
sTlsKeys[0] = '\0';
}
PR_snprintf(msg, sizeof msg,
"C_DeriveKey(hSession=0x%08lX, pMechanism=%s, "
"hBaseKey=0x%08lX, pTemplate=%p, ulAttributeCount=%lu, "
"phKey=%p)=0x%08lX%s%s",
(PRUint32)hSession, mech,
(PRUint32)hBaseKey, pTemplate,(PRUint32)ulAttributeCount,
phKey, (PRUint32)rv, shKey, sTlsKeys);
sftk_LogAuditMessage(severity, msg);
}
void sftk_AuditDigestKey(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hKey, CK_RV rv)
{
char msg[256];
NSSAuditSeverity severity = (rv == CKR_OK) ?
NSS_AUDIT_INFO : NSS_AUDIT_ERROR;
PR_snprintf(msg, sizeof msg,
"C_DigestKey(hSession=0x%08lX, hKey=0x%08lX)=0x%08lX",
(PRUint32)hSession, (PRUint32)hKey, (PRUint32)rv);
sftk_LogAuditMessage(severity, msg);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,80 @@
#! gmake
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
#######################################################################
# (1) Include initial platform-independent assignments (MANDATORY). #
#######################################################################
include manifest.mn
#######################################################################
# (2) Include "global" configuration information. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/config.mk
#######################################################################
# (3) Include "component" configuration information. (OPTIONAL) #
#######################################################################
#######################################################################
# (4) Include "local" platform-dependent assignments (OPTIONAL). #
#######################################################################
include config.mk
#######################################################################
# (5) Execute "global" rules. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
# (6) Execute "component" rules. (OPTIONAL) #
#######################################################################
#######################################################################
# (7) Execute "local" rules. (OPTIONAL). #
#######################################################################
export:: private_export

View File

@@ -0,0 +1,85 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* cdbhdl.h - certificate database handle
* private to the certdb module
*
* $Id: cdbhdl.h,v 1.1.2.1 2007-04-03 22:50:02 rrelyea%redhat.com Exp $
*/
#ifndef _CDBHDL_H_
#define _CDBHDL_H_
#include "nspr.h"
#include "mcom_db.h"
#include "pcertt.h"
#include "prtypes.h"
/*
* Handle structure for open certificate databases
*/
struct NSSLOWCERTCertDBHandleStr {
DB *permCertDB;
PZMonitor *dbMon;
PRBool dbVerify;
PRInt32 ref; /* reference count */
};
#ifdef DBM_USING_NSPR
#define NO_RDONLY PR_RDONLY
#define NO_RDWR PR_RDWR
#define NO_CREATE (PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE)
#else
#define NO_RDONLY O_RDONLY
#define NO_RDWR O_RDWR
#define NO_CREATE (O_RDWR | O_CREAT | O_TRUNC)
#endif
typedef DB * (*rdbfunc)(const char *appName, const char *prefix,
const char *type, int flags);
typedef int (*rdbstatusfunc)(void);
#define RDB_FAIL 1
#define RDB_RETRY 2
DB * rdbopen(const char *appName, const char *prefix,
const char *type, int flags, int *status);
DB *dbsopen (const char *dbname , int flags, int mode, DBTYPE type,
const void * appData);
SECStatus db_Copy(DB *dest,DB *src);
int db_InitComplete(DB *db);
#endif

View File

@@ -0,0 +1,102 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# $(PROGRAM) has explicit dependencies on $(EXTRA_LIBS)
CRYPTOLIB=$(DIST)/lib/$(LIB_PREFIX)freebl.$(LIB_SUFFIX)
CRYPTODIR=../freebl
ifdef MOZILLA_SECURITY_BUILD
CRYPTOLIB=$(DIST)/lib/$(LIB_PREFIX)crypto.$(LIB_SUFFIX)
CRYPTODIR=../crypto
endif
EXTRA_LIBS += \
$(CRYPTOLIB) \
$(DIST)/lib/$(LIB_PREFIX)secutil.$(LIB_SUFFIX) \
$(DIST)/lib/$(LIB_PREFIX)dbm.$(LIB_SUFFIX) \
$(NULL)
# can't do this in manifest.mn because OS_TARGET isn't defined there.
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
# don't want the 32 in the shared library name
SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
IMPORT_LIBRARY = $(OBJDIR)/$(IMPORT_LIB_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION)$(IMPORT_LIB_SUFFIX)
RES = $(OBJDIR)/$(LIBRARY_NAME).res
RESNAME = $(LIBRARY_NAME).rc
ifdef NS_USE_GCC
EXTRA_SHARED_LIBS += \
-L$(NSPR_LIB_DIR) \
-lplc4 \
-lplds4 \
-lnspr4 \
$(NULL)
else # ! NS_USE_GCC
EXTRA_SHARED_LIBS += \
$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plc4.lib \
$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)plds4.lib \
$(NSPR_LIB_DIR)/$(NSPR31_LIB_PREFIX)nspr4.lib \
$(NULL)
endif # NS_USE_GCC
else
# $(PROGRAM) has NO explicit dependencies on $(EXTRA_SHARED_LIBS)
# $(EXTRA_SHARED_LIBS) come before $(OS_LIBS), except on AIX.
EXTRA_SHARED_LIBS += \
-L$(NSPR_LIB_DIR) \
-lplc4 \
-lplds4 \
-lnspr4 \
$(NULL)
endif
ifeq ($(OS_TARGET),SunOS)
# The -R '$ORIGIN' linker option instructs this library to search for its
# dependencies in the same directory where it resides.
MKSHLIB += -R '$$ORIGIN'
OS_LIBS += -lbsm
endif
ifeq ($(OS_TARGET),WINCE)
DEFINES += -DDBM_USING_NSPR
endif
# indicates dependency on freebl static lib
$(SHARED_LIBRARY): $(CRYPTOLIB)

View File

@@ -0,0 +1,647 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Berkeley DB 1.85 Shim code to handle blobs.
*
* $Id: dbmshim.c,v 1.1.2.1 2007-04-03 22:50:02 rrelyea%redhat.com Exp $
*/
#include "mcom_db.h"
#include "secitem.h"
#include "nssb64.h"
#include "blapi.h"
#include "secerr.h"
#include "lgdb.h"
/*
* Blob block:
* Byte 0 CERTDB Version -+ -+
* Byte 1 certDBEntryTypeBlob | BLOB_HEAD_LEN |
* Byte 2 flags (always '0'); | |
* Byte 3 reserved (always '0'); -+ |
* Byte 4 LSB length | <--BLOB_LENGTH_START | BLOB_BUF_LEN
* Byte 5 . | |
* Byte 6 . | BLOB_LENGTH_LEN |
* Byte 7 MSB length | |
* Byte 8 blob_filename -+ -+ <-- BLOB_NAME_START |
* Byte 9 . | BLOB_NAME_LEN |
* . . | |
* Byte 37 . -+ -+
*/
#define DBS_BLOCK_SIZE (16*1024) /* 16 k */
#define DBS_MAX_ENTRY_SIZE (DBS_BLOCK_SIZE - (2048)) /* 14 k */
#define DBS_CACHE_SIZE DBS_BLOCK_SIZE*8
#define ROUNDDIV(x,y) (x+(y-1))/y
#define BLOB_HEAD_LEN 4
#define BLOB_LENGTH_START BLOB_HEAD_LEN
#define BLOB_LENGTH_LEN 4
#define BLOB_NAME_START BLOB_LENGTH_START+BLOB_LENGTH_LEN
#define BLOB_NAME_LEN 1+ROUNDDIV(SHA1_LENGTH,3)*4+1
#define BLOB_BUF_LEN BLOB_HEAD_LEN+BLOB_LENGTH_LEN+BLOB_NAME_LEN
/* a Shim data structure. This data structure has a db built into it. */
typedef struct DBSStr DBS;
struct DBSStr {
DB db;
char *blobdir;
int mode;
PRBool readOnly;
PRFileMap *dbs_mapfile;
unsigned char *dbs_addr;
PRUint32 dbs_len;
char staticBlobArea[BLOB_BUF_LEN];
};
/*
* return true if the Datablock contains a blobtype
*/
static PRBool
dbs_IsBlob(DBT *blobData)
{
unsigned char *addr = (unsigned char *)blobData->data;
if (blobData->size < BLOB_BUF_LEN) {
return PR_FALSE;
}
return addr && ((certDBEntryType) addr[1] == certDBEntryTypeBlob);
}
/*
* extract the filename in the blob of the real data set.
* This value is not malloced (does not need to be freed by the caller.
*/
static const char *
dbs_getBlobFileName(DBT *blobData)
{
char *addr = (char *)blobData->data;
return &addr[BLOB_NAME_START];
}
/*
* extract the size of the actual blob from the blob record
*/
static PRUint32
dbs_getBlobSize(DBT *blobData)
{
unsigned char *addr = (unsigned char *)blobData->data;
return (PRUint32)(addr[BLOB_LENGTH_START+3] << 24) |
(addr[BLOB_LENGTH_START+2] << 16) |
(addr[BLOB_LENGTH_START+1] << 8) |
addr[BLOB_LENGTH_START];
}
/* We are using base64 data for the filename, but base64 data can include a
* '/' which is interpreted as a path separator on many platforms. Replace it
* with an inocuous '-'. We don't need to convert back because we never actual
* decode the filename.
*/
static void
dbs_replaceSlash(char *cp, int len)
{
while (len--) {
if (*cp == '/') *cp = '-';
cp++;
}
}
/*
* create a blob record from a key, data and return it in blobData.
* NOTE: The data element is static data (keeping with the dbm model).
*/
static void
dbs_mkBlob(DBS *dbsp,const DBT *key, const DBT *data, DBT *blobData)
{
unsigned char sha1_data[SHA1_LENGTH];
char *b = dbsp->staticBlobArea;
PRUint32 length = data->size;
SECItem sha1Item;
b[0] = CERT_DB_FILE_VERSION; /* certdb version number */
b[1] = (char) certDBEntryTypeBlob; /* type */
b[2] = 0; /* flags */
b[3] = 0; /* reserved */
b[BLOB_LENGTH_START] = length & 0xff;
b[BLOB_LENGTH_START+1] = (length >> 8) & 0xff;
b[BLOB_LENGTH_START+2] = (length >> 16) & 0xff;
b[BLOB_LENGTH_START+3] = (length >> 24) & 0xff;
sha1Item.data = sha1_data;
sha1Item.len = SHA1_LENGTH;
SHA1_HashBuf(sha1_data,key->data,key->size);
b[BLOB_NAME_START]='b'; /* Make sure we start with a alpha */
NSSBase64_EncodeItem(NULL,&b[BLOB_NAME_START+1],BLOB_NAME_LEN-1,&sha1Item);
b[BLOB_BUF_LEN-1] = 0;
dbs_replaceSlash(&b[BLOB_NAME_START+1],BLOB_NAME_LEN-1);
blobData->data = b;
blobData->size = BLOB_BUF_LEN;
return;
}
/*
* construct a path to the actual blob. The string returned must be
* freed by the caller with PR_smprintf_free.
*
* Note: this file does lots of consistancy checks on the DBT. The
* routines that call this depend on these checks, so they don't worry
* about them (success of this routine implies a good blobdata record).
*/
static char *
dbs_getBlobFilePath(char *blobdir,DBT *blobData)
{
const char *name;
if (blobdir == NULL) {
PR_SetError(SEC_ERROR_BAD_DATABASE,0);
return NULL;
}
if (!dbs_IsBlob(blobData)) {
PR_SetError(SEC_ERROR_BAD_DATABASE,0);
return NULL;
}
name = dbs_getBlobFileName(blobData);
if (!name || *name == 0) {
PR_SetError(SEC_ERROR_BAD_DATABASE,0);
return NULL;
}
return PR_smprintf("%s" PATH_SEPARATOR "%s", blobdir, name);
}
/*
* Delete a blob file pointed to by the blob record.
*/
static void
dbs_removeBlob(DBS *dbsp, DBT *blobData)
{
char *file;
file = dbs_getBlobFilePath(dbsp->blobdir, blobData);
if (!file) {
return;
}
PR_Delete(file);
PR_smprintf_free(file);
}
/*
* Directory modes are slightly different, the 'x' bit needs to be on to
* access them. Copy all the read bits to 'x' bits
*/
static int
dbs_DirMode(int mode)
{
int x_bits = (mode >> 2) & 0111;
return mode | x_bits;
}
/*
* write a data blob to it's file. blobdData is the blob record that will be
* stored in the database. data is the actual data to go out on disk.
*/
static int
dbs_writeBlob(DBS *dbsp, int mode, DBT *blobData, const DBT *data)
{
char *file = NULL;
PRFileDesc *filed;
PRStatus status;
int len;
int error = 0;
file = dbs_getBlobFilePath(dbsp->blobdir, blobData);
if (!file) {
goto loser;
}
if (PR_Access(dbsp->blobdir, PR_ACCESS_EXISTS) != PR_SUCCESS) {
status = PR_MkDir(dbsp->blobdir,dbs_DirMode(mode));
if (status != PR_SUCCESS) {
goto loser;
}
}
filed = PR_OpenFile(file,PR_CREATE_FILE|PR_TRUNCATE|PR_WRONLY, mode);
if (filed == NULL) {
error = PR_GetError();
goto loser;
}
len = PR_Write(filed,data->data,data->size);
error = PR_GetError();
PR_Close(filed);
if (len < (int)data->size) {
goto loser;
}
PR_smprintf_free(file);
return 0;
loser:
if (file) {
PR_Delete(file);
PR_smprintf_free(file);
}
/* don't let close or delete reset the error */
PR_SetError(error,0);
return -1;
}
/*
* we need to keep a address map in memory between calls to DBM.
* remember what we have mapped can close it when we get another dbm
* call.
*
* NOTE: Not all platforms support mapped files. This code is designed to
* detect this at runtime. If map files aren't supported the OS will indicate
* this by failing the PR_Memmap call. In this case we emulate mapped files
* by just reading in the file into regular memory. We signal this state by
* making dbs_mapfile NULL and dbs_addr non-NULL.
*/
static void
dbs_freemap(DBS *dbsp)
{
if (dbsp->dbs_mapfile) {
PR_MemUnmap(dbsp->dbs_addr,dbsp->dbs_len);
PR_CloseFileMap(dbsp->dbs_mapfile);
dbsp->dbs_mapfile = NULL;
dbsp->dbs_addr = NULL;
dbsp->dbs_len = 0;
} else if (dbsp->dbs_addr) {
PORT_Free(dbsp->dbs_addr);
dbsp->dbs_addr = NULL;
dbsp->dbs_len = 0;
}
return;
}
static void
dbs_setmap(DBS *dbsp, PRFileMap *mapfile, unsigned char *addr, PRUint32 len)
{
dbsp->dbs_mapfile = mapfile;
dbsp->dbs_addr = addr;
dbsp->dbs_len = len;
}
/*
* platforms that cannot map the file need to read it into a temp buffer.
*/
static unsigned char *
dbs_EmulateMap(PRFileDesc *filed, int len)
{
unsigned char *addr;
PRInt32 dataRead;
addr = PORT_Alloc(len);
if (addr == NULL) {
return NULL;
}
dataRead = PR_Read(filed,addr,len);
if (dataRead != len) {
PORT_Free(addr);
if (dataRead > 0) {
/* PR_Read didn't set an error, we need to */
PR_SetError(SEC_ERROR_BAD_DATABASE,0);
}
return NULL;
}
return addr;
}
/*
* pull a database record off the disk
* data points to the blob record on input and the real record (if we could
* read it) on output. if there is an error data is not modified.
*/
static int
dbs_readBlob(DBS *dbsp, DBT *data)
{
char *file = NULL;
PRFileDesc *filed = NULL;
PRFileMap *mapfile = NULL;
unsigned char *addr = NULL;
int error;
int len = -1;
file = dbs_getBlobFilePath(dbsp->blobdir, data);
if (!file) {
goto loser;
}
filed = PR_OpenFile(file,PR_RDONLY,0);
PR_smprintf_free(file); file = NULL;
if (filed == NULL) {
goto loser;
}
len = dbs_getBlobSize(data);
mapfile = PR_CreateFileMap(filed, len, PR_PROT_READONLY);
if (mapfile == NULL) {
/* USE PR_GetError instead of PORT_GetError here
* because we are getting the error from PR_xxx
* function */
if (PR_GetError() != PR_NOT_IMPLEMENTED_ERROR) {
goto loser;
}
addr = dbs_EmulateMap(filed, len);
} else {
addr = PR_MemMap(mapfile, 0, len);
}
if (addr == NULL) {
goto loser;
}
PR_Close(filed);
dbs_setmap(dbsp,mapfile,addr,len);
data->data = addr;
data->size = len;
return 0;
loser:
/* preserve the error code */
error = PR_GetError();
if (mapfile) {
PR_CloseFileMap(mapfile);
}
if (filed) {
PR_Close(filed);
}
PR_SetError(error,0);
return -1;
}
/*
* actual DBM shims
*/
static int
dbs_get(const DB *dbs, const DBT *key, DBT *data, unsigned int flags)
{
int ret;
DBS *dbsp = (DBS *)dbs;
DB *db = (DB *)dbs->internal;
dbs_freemap(dbsp);
ret = (* db->get)(db, key, data, flags);
if ((ret == 0) && dbs_IsBlob(data)) {
ret = dbs_readBlob(dbsp,data);
}
return(ret);
}
static int
dbs_put(const DB *dbs, DBT *key, const DBT *data, unsigned int flags)
{
DBT blob;
int ret = 0;
DBS *dbsp = (DBS *)dbs;
DB *db = (DB *)dbs->internal;
dbs_freemap(dbsp);
/* If the db is readonly, just pass the data down to rdb and let it fail */
if (!dbsp->readOnly) {
DBT oldData;
int ret1;
/* make sure the current record is deleted if it's a blob */
ret1 = (*db->get)(db,key,&oldData,0);
if ((ret1 == 0) && flags == R_NOOVERWRITE) {
/* let DBM return the error to maintain consistancy */
return (* db->put)(db, key, data, flags);
}
if ((ret1 == 0) && dbs_IsBlob(&oldData)) {
dbs_removeBlob(dbsp, &oldData);
}
if (data->size > DBS_MAX_ENTRY_SIZE) {
dbs_mkBlob(dbsp,key,data,&blob);
ret = dbs_writeBlob(dbsp, dbsp->mode, &blob, data);
data = &blob;
}
}
if (ret == 0) {
ret = (* db->put)(db, key, data, flags);
}
return(ret);
}
static int
dbs_sync(const DB *dbs, unsigned int flags)
{
DB *db = (DB *)dbs->internal;
DBS *dbsp = (DBS *)dbs;
dbs_freemap(dbsp);
return (* db->sync)(db, flags);
}
static int
dbs_del(const DB *dbs, const DBT *key, unsigned int flags)
{
int ret;
DBS *dbsp = (DBS *)dbs;
DB *db = (DB *)dbs->internal;
dbs_freemap(dbsp);
if (!dbsp->readOnly) {
DBT oldData;
ret = (*db->get)(db,key,&oldData,0);
if ((ret == 0) && dbs_IsBlob(&oldData)) {
dbs_removeBlob(dbsp,&oldData);
}
}
return (* db->del)(db, key, flags);
}
static int
dbs_seq(const DB *dbs, DBT *key, DBT *data, unsigned int flags)
{
int ret;
DBS *dbsp = (DBS *)dbs;
DB *db = (DB *)dbs->internal;
dbs_freemap(dbsp);
ret = (* db->seq)(db, key, data, flags);
if ((ret == 0) && dbs_IsBlob(data)) {
/* don't return a blob read as an error so traversals keep going */
(void) dbs_readBlob(dbsp,data);
}
return(ret);
}
static int
dbs_close(DB *dbs)
{
DBS *dbsp = (DBS *)dbs;
DB *db = (DB *)dbs->internal;
int ret;
dbs_freemap(dbsp);
ret = (* db->close)(db);
PORT_Free(dbsp->blobdir);
PORT_Free(dbsp);
return ret;
}
static int
dbs_fd(const DB *dbs)
{
DB *db = (DB *)dbs->internal;
return (* db->fd)(db);
}
/*
* the naming convention we use is
* change the .xxx into .dir. (for nss it's always .db);
* if no .extension exists or is equal to .dir, add a .dir
* the returned data must be freed.
*/
#define DIRSUFFIX ".dir"
static char *
dbs_mkBlobDirName(const char *dbname)
{
int dbname_len = PORT_Strlen(dbname);
int dbname_end = dbname_len;
const char *cp;
char *blobDir = NULL;
/* scan back from the end looking for either a directory separator, a '.',
* or the end of the string. NOTE: Windows should check for both separators
* here. For now this is safe because we know NSS always uses a '.'
*/
for (cp = &dbname[dbname_len];
(cp > dbname) && (*cp != '.') && (*cp != *PATH_SEPARATOR) ;
cp--)
/* Empty */ ;
if (*cp == '.') {
dbname_end = cp - dbname;
if (PORT_Strcmp(cp,DIRSUFFIX) == 0) {
dbname_end = dbname_len;
}
}
blobDir = PORT_ZAlloc(dbname_end+sizeof(DIRSUFFIX));
if (blobDir == NULL) {
return NULL;
}
PORT_Memcpy(blobDir,dbname,dbname_end);
PORT_Memcpy(&blobDir[dbname_end],DIRSUFFIX,sizeof(DIRSUFFIX));
return blobDir;
}
#define DBM_DEFAULT 0
static const HASHINFO dbs_hashInfo = {
DBS_BLOCK_SIZE, /* bucket size, must be greater than = to
* or maximum entry size (+ header)
* we allow before blobing */
DBM_DEFAULT, /* Fill Factor */
DBM_DEFAULT, /* number of elements */
DBS_CACHE_SIZE, /* cache size */
DBM_DEFAULT, /* hash function */
DBM_DEFAULT, /* byte order */
};
/*
* the open function. NOTE: this is the only exposed function in this file.
* everything else is called through the function table pointer.
*/
DB *
dbsopen(const char *dbname, int flags, int mode, DBTYPE type,
const void *userData)
{
DB *db = NULL,*dbs = NULL;
DBS *dbsp = NULL;
/* NOTE: we are overriding userData with dbs_hashInfo. since all known
* callers pass 0, this is ok, otherwise we should merge the two */
dbsp = (DBS *)PORT_ZAlloc(sizeof(DBS));
if (!dbsp) {
return NULL;
}
dbs = &dbsp->db;
dbsp->blobdir=dbs_mkBlobDirName(dbname);
if (dbsp->blobdir == NULL) {
goto loser;
}
dbsp->mode = mode;
dbsp->readOnly = (PRBool)(flags == NO_RDONLY);
dbsp->dbs_mapfile = NULL;
dbsp->dbs_addr = NULL;
dbsp->dbs_len = 0;
/* the real dbm call */
db = dbopen(dbname, flags, mode, type, &dbs_hashInfo);
if (db == NULL) {
goto loser;
}
dbs->internal = (void *) db;
dbs->type = type;
dbs->close = dbs_close;
dbs->get = dbs_get;
dbs->del = dbs_del;
dbs->put = dbs_put;
dbs->seq = dbs_seq;
dbs->sync = dbs_sync;
dbs->fd = dbs_fd;
return dbs;
loser:
if (db) {
(*db->close)(db);
}
if (dbsp) {
if (dbsp->blobdir) {
PORT_Free(dbsp->blobdir);
}
PORT_Free(dbsp);
}
return NULL;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,86 @@
/*
* private.h - Private data structures for the software token library
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: keydbi.h,v 1.1.2.1 2007-04-03 22:50:02 rrelyea%redhat.com Exp $ */
#ifndef _KEYDBI_H_
#define _KEYDBI_H_
#include "nspr.h"
#include "seccomon.h"
#include "mcom_db.h"
/*
* Handle structure for open key databases
*/
struct NSSLOWKEYDBHandleStr {
DB *db;
DB *updatedb; /* used when updating an old version */
SECItem *global_salt; /* password hashing salt for this db */
int version; /* version of the database */
char *appname; /* multiaccess app name */
char *dbname; /* name of the openned DB */
PRBool readOnly; /* is the DB read only */
PRLock *lock;
PRInt32 ref; /* reference count */
};
/*
** Typedef for callback for traversing key database.
** "key" is the key used to index the data in the database (nickname)
** "data" is the key data
** "pdata" is the user's data
*/
typedef SECStatus (* NSSLOWKEYTraverseKeysFunc)(DBT *key, DBT *data, void *pdata);
SEC_BEGIN_PROTOS
/*
** Traverse the entire key database, and pass the nicknames and keys to a
** user supplied function.
** "f" is the user function to call for each key
** "udata" is the user's data, which is passed through to "f"
*/
extern SECStatus nsslowkey_TraverseKeys(NSSLOWKEYDBHandle *handle,
NSSLOWKEYTraverseKeysFunc f,
void *udata);
SEC_END_PROTOS
#endif /* _KEYDBI_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,955 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "secitem.h"
#include "pkcs11.h"
#include "lgdb.h"
#include "pcert.h"
#include "lowkeyi.h"
#include "blapi.h"
#include "secder.h"
#include "keydbi.h"
/*
* ******************** Object Creation Utilities ***************************
*/
/*
* check the consistancy and initialize a Certificate Object
*/
static CK_RV
lg_createCertObject(SDB *sdb, CK_OBJECT_HANDLE *handle,
const CK_ATTRIBUTE *templ, CK_ULONG count)
{
SECItem derCert;
NSSLOWCERTCertificate *cert;
NSSLOWCERTCertTrust *trust = NULL;
NSSLOWCERTCertTrust userTrust =
{ CERTDB_USER, CERTDB_USER, CERTDB_USER };
NSSLOWCERTCertTrust defTrust =
{ CERTDB_TRUSTED_UNKNOWN,
CERTDB_TRUSTED_UNKNOWN, CERTDB_TRUSTED_UNKNOWN };
char *label = NULL;
char *email = NULL;
SECStatus rv;
PRBool inDB = PR_TRUE;
NSSLOWCERTCertDBHandle *certHandle = lg_getCertDB(sdb);
NSSLOWKEYDBHandle *keyHandle = NULL;
CK_CERTIFICATE_TYPE type;
const CK_ATTRIBUTE *attribute;
/* we can't store any certs private */
if (lg_isTrue(CKA_PRIVATE, templ, count)) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
/* We only support X.509 Certs for now */
attribute = lg_FindAttribute(CKA_CERTIFICATE_TYPE, templ, count);
if (attribute == NULL) return CKR_TEMPLATE_INCOMPLETE;
type = *(CK_CERTIFICATE_TYPE *)attribute->pValue;
if (type != CKC_X_509) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
/* X.509 Certificate */
if (certHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
}
/* get the der cert */
attribute = lg_FindAttribute(CKA_VALUE, templ, count);
if (!attribute) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
derCert.type = 0;
derCert.data = (unsigned char *)attribute->pValue;
derCert.len = attribute->ulValueLen ;
label = lg_getString(CKA_LABEL, templ, count);
cert = nsslowcert_FindCertByDERCert(certHandle, &derCert);
if (cert == NULL) {
cert = nsslowcert_DecodeDERCertificate(&derCert, label);
inDB = PR_FALSE;
}
if (cert == NULL) {
if (label) PORT_Free(label);
return CKR_ATTRIBUTE_VALUE_INVALID;
}
keyHandle = lg_getKeyDB(sdb);
if (keyHandle) {
if (nsslowkey_KeyForCertExists(keyHandle,cert)) {
trust = &userTrust;
}
}
if (!inDB) {
if (!trust) trust = &defTrust;
rv = nsslowcert_AddPermCert(certHandle, cert, label, trust);
} else {
rv = trust ? nsslowcert_ChangeCertTrust(certHandle,cert,trust) :
SECSuccess;
}
if (label) PORT_Free(label);
if (rv != SECSuccess) {
nsslowcert_DestroyCertificate(cert);
return CKR_DEVICE_ERROR;
}
/*
* Add a NULL S/MIME profile if necessary.
*/
email = lg_getString(CKA_NETSCAPE_EMAIL, templ, count);
if (email) {
certDBEntrySMime *entry;
entry = nsslowcert_ReadDBSMimeEntry(certHandle,email);
if (!entry) {
nsslowcert_SaveSMimeProfile(certHandle, email,
&cert->derSubject, NULL, NULL);
} else {
nsslowcert_DestroyDBEntry((certDBEntry *)entry);
}
PORT_Free(email);
}
*handle=lg_mkHandle(sdb,&cert->certKey,LG_TOKEN_TYPE_CERT);
nsslowcert_DestroyCertificate(cert);
return CKR_OK;
}
unsigned int
lg_MapTrust(CK_TRUST trust, PRBool clientAuth)
{
unsigned int trustCA = clientAuth ? CERTDB_TRUSTED_CLIENT_CA :
CERTDB_TRUSTED_CA;
switch (trust) {
case CKT_NETSCAPE_TRUSTED:
return CERTDB_VALID_PEER|CERTDB_TRUSTED;
case CKT_NETSCAPE_TRUSTED_DELEGATOR:
return CERTDB_VALID_CA|trustCA;
case CKT_NETSCAPE_UNTRUSTED:
return CERTDB_NOT_TRUSTED;
case CKT_NETSCAPE_MUST_VERIFY:
return 0;
case CKT_NETSCAPE_VALID: /* implies must verify */
return CERTDB_VALID_PEER;
case CKT_NETSCAPE_VALID_DELEGATOR: /* implies must verify */
return CERTDB_VALID_CA;
default:
break;
}
return CERTDB_TRUSTED_UNKNOWN;
}
/*
* check the consistancy and initialize a Trust Object
*/
static CK_RV
lg_createTrustObject(SDB *sdb, CK_OBJECT_HANDLE *handle,
const CK_ATTRIBUTE *templ, CK_ULONG count)
{
const CK_ATTRIBUTE *issuer = NULL;
const CK_ATTRIBUTE *serial = NULL;
NSSLOWCERTCertificate *cert = NULL;
const CK_ATTRIBUTE *trust;
CK_TRUST sslTrust = CKT_NETSCAPE_TRUST_UNKNOWN;
CK_TRUST clientTrust = CKT_NETSCAPE_TRUST_UNKNOWN;
CK_TRUST emailTrust = CKT_NETSCAPE_TRUST_UNKNOWN;
CK_TRUST signTrust = CKT_NETSCAPE_TRUST_UNKNOWN;
CK_BBOOL stepUp;
NSSLOWCERTCertTrust dbTrust = { 0 };
SECStatus rv;
NSSLOWCERTCertDBHandle *certHandle = lg_getCertDB(sdb);
NSSLOWCERTIssuerAndSN issuerSN;
/* we can't store any certs private */
if (lg_isTrue(CKA_PRIVATE, templ, count)) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
if (certHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
}
issuer = lg_FindAttribute(CKA_ISSUER, templ, count);
serial = lg_FindAttribute(CKA_SERIAL_NUMBER, templ, count);
if (issuer && serial) {
issuerSN.derIssuer.data = (unsigned char *)issuer->pValue;
issuerSN.derIssuer.len = issuer->ulValueLen ;
issuerSN.serialNumber.data = (unsigned char *)serial->pValue;
issuerSN.serialNumber.len = serial->ulValueLen ;
cert = nsslowcert_FindCertByIssuerAndSN(certHandle,&issuerSN);
}
if (cert == NULL) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
lg_GetULongAttribute(CKA_TRUST_SERVER_AUTH, templ, count, &sslTrust);
lg_GetULongAttribute(CKA_TRUST_CLIENT_AUTH, templ, count, &clientTrust);
lg_GetULongAttribute(CKA_TRUST_EMAIL_PROTECTION, templ, count, &emailTrust);
lg_GetULongAttribute(CKA_TRUST_CODE_SIGNING, templ, count, &signTrust);
stepUp = CK_FALSE;
trust = lg_FindAttribute(CKA_TRUST_STEP_UP_APPROVED, templ, count);
if (trust) {
if (trust->ulValueLen == sizeof(CK_BBOOL)) {
stepUp = *(CK_BBOOL*)trust->pValue;
}
}
/* preserve certain old fields */
if (cert->trust) {
dbTrust.sslFlags = cert->trust->sslFlags & CERTDB_PRESERVE_TRUST_BITS;
dbTrust.emailFlags=
cert->trust->emailFlags & CERTDB_PRESERVE_TRUST_BITS;
dbTrust.objectSigningFlags =
cert->trust->objectSigningFlags & CERTDB_PRESERVE_TRUST_BITS;
}
dbTrust.sslFlags |= lg_MapTrust(sslTrust,PR_FALSE);
dbTrust.sslFlags |= lg_MapTrust(clientTrust,PR_TRUE);
dbTrust.emailFlags |= lg_MapTrust(emailTrust,PR_FALSE);
dbTrust.objectSigningFlags |= lg_MapTrust(signTrust,PR_FALSE);
if (stepUp) {
dbTrust.sslFlags |= CERTDB_GOVT_APPROVED_CA;
}
rv = nsslowcert_ChangeCertTrust(certHandle,cert,&dbTrust);
*handle=lg_mkHandle(sdb,&cert->certKey,LG_TOKEN_TYPE_TRUST);
nsslowcert_DestroyCertificate(cert);
if (rv != SECSuccess) {
return CKR_DEVICE_ERROR;
}
return CKR_OK;
}
/*
* check the consistancy and initialize a Trust Object
*/
static CK_RV
lg_createSMimeObject(SDB *sdb, CK_OBJECT_HANDLE *handle,
const CK_ATTRIBUTE *templ, CK_ULONG count)
{
SECItem derSubj,rawProfile,rawTime,emailKey;
SECItem *pRawProfile = NULL;
SECItem *pRawTime = NULL;
char *email = NULL;
const CK_ATTRIBUTE *subject = NULL,
*profile = NULL,
*time = NULL;
SECStatus rv;
NSSLOWCERTCertDBHandle *certHandle;
CK_RV ck_rv = CKR_OK;
/* we can't store any certs private */
if (lg_isTrue(CKA_PRIVATE,templ,count)) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
certHandle = lg_getCertDB(sdb);
if (certHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
}
/* lookup SUBJECT */
subject = lg_FindAttribute(CKA_SUBJECT,templ,count);
PORT_Assert(subject);
if (!subject) {
ck_rv = CKR_ATTRIBUTE_VALUE_INVALID;
goto loser;
}
derSubj.data = (unsigned char *)subject->pValue;
derSubj.len = subject->ulValueLen ;
derSubj.type = 0;
/* lookup VALUE */
profile = lg_FindAttribute(CKA_VALUE,templ,count);
if (profile) {
rawProfile.data = (unsigned char *)profile->pValue;
rawProfile.len = profile->ulValueLen ;
rawProfile.type = siBuffer;
pRawProfile = &rawProfile;
}
/* lookup Time */
time = lg_FindAttribute(CKA_NETSCAPE_SMIME_TIMESTAMP,templ,count);
if (time) {
rawTime.data = (unsigned char *)time->pValue;
rawTime.len = time->ulValueLen ;
rawTime.type = siBuffer;
pRawTime = &rawTime;
}
email = lg_getString(CKA_NETSCAPE_EMAIL,templ,count);
if (!email) {
ck_rv = CKR_ATTRIBUTE_VALUE_INVALID;
goto loser;
}
/* Store S/MIME Profile by SUBJECT */
rv = nsslowcert_SaveSMimeProfile(certHandle, email, &derSubj,
pRawProfile,pRawTime);
if (rv != SECSuccess) {
ck_rv = CKR_DEVICE_ERROR;
goto loser;
}
emailKey.data = (unsigned char *)email;
emailKey.len = PORT_Strlen(email)+1;
*handle = lg_mkHandle(sdb, &emailKey, LG_TOKEN_TYPE_SMIME);
loser:
if (email) PORT_Free(email);
return ck_rv;
}
/*
* check the consistancy and initialize a Trust Object
*/
static CK_RV
lg_createCrlObject(SDB *sdb, CK_OBJECT_HANDLE *handle,
const CK_ATTRIBUTE *templ, CK_ULONG count)
{
PRBool isKRL = PR_FALSE;
SECItem derSubj,derCrl;
char *url = NULL;
const CK_ATTRIBUTE *subject,*crl;
SECStatus rv;
NSSLOWCERTCertDBHandle *certHandle;
certHandle = lg_getCertDB(sdb);
/* we can't store any private crls */
if (lg_isTrue(CKA_PRIVATE,templ,count)) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
if (certHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
}
/* lookup SUBJECT */
subject = lg_FindAttribute(CKA_SUBJECT,templ,count);
if (!subject) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
derSubj.data = (unsigned char *)subject->pValue;
derSubj.len = subject->ulValueLen ;
/* lookup VALUE */
crl = lg_FindAttribute(CKA_VALUE,templ,count);
PORT_Assert(crl);
if (!crl) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
derCrl.data = (unsigned char *)crl->pValue;
derCrl.len = crl->ulValueLen ;
url = lg_getString(CKA_NETSCAPE_URL,templ,count);
isKRL = lg_isTrue(CKA_NETSCAPE_KRL,templ,count);
/* Store CRL by SUBJECT */
rv = nsslowcert_AddCrl(certHandle, &derCrl, &derSubj, url, isKRL);
if (url) {
PORT_Free(url);
}
if (rv != SECSuccess) {
return CKR_DEVICE_ERROR;
}
/* if we overwrote the existing CRL, poison the handle entry so we get
* a new object handle */
(void) lg_poisonHandle(sdb, &derSubj,
isKRL ? LG_TOKEN_KRL_HANDLE : LG_TOKEN_TYPE_CRL);
*handle = lg_mkHandle(sdb, &derSubj,
isKRL ? LG_TOKEN_KRL_HANDLE : LG_TOKEN_TYPE_CRL);
return CKR_OK;
}
/*
* check the consistancy and initialize a Public Key Object
*/
static CK_RV
lg_createPublicKeyObject(SDB *sdb, CK_KEY_TYPE key_type,
CK_OBJECT_HANDLE *handle, const CK_ATTRIBUTE *templ, CK_ULONG count)
{
CK_ATTRIBUTE_TYPE pubKeyAttr = CKA_VALUE;
CK_RV crv;
NSSLOWKEYPrivateKey *priv;
SECItem pubKey;
NSSLOWKEYDBHandle *keyHandle = NULL;
switch (key_type) {
case CKK_RSA:
pubKeyAttr = CKA_MODULUS;
break;
#ifdef NSS_ENABLE_ECC
case CKK_EC:
pubKeyAttr = CKA_EC_POINT;
break;
#endif /* NSS_ENABLE_ECC */
case CKK_DSA:
case CKK_DH:
break;
default:
return CKR_ATTRIBUTE_VALUE_INVALID;
}
crv = lg_Attribute2SSecItem(NULL,pubKeyAttr,templ,count,&pubKey);
if (crv != CKR_OK) return crv;
PORT_Assert(pubKey.data);
keyHandle = lg_getKeyDB(sdb);
if (keyHandle == NULL) {
PORT_Free(pubKey.data);
return CKR_TOKEN_WRITE_PROTECTED;
}
if (keyHandle->version != 3) {
unsigned char buf[SHA1_LENGTH];
SHA1_HashBuf(buf,pubKey.data,pubKey.len);
PORT_Memcpy(pubKey.data,buf,sizeof(buf));
pubKey.len = sizeof(buf);
}
/* make sure the associated private key already exists */
/* only works if we are logged in */
priv = nsslowkey_FindKeyByPublicKey(keyHandle, &pubKey, sdb /*password*/);
if (priv == NULL) {
PORT_Free(pubKey.data);
return crv;
}
nsslowkey_DestroyPrivateKey(priv);
*handle = lg_mkHandle(sdb, &pubKey, LG_TOKEN_TYPE_PUB);
PORT_Free(pubKey.data);
return CKR_OK;
}
/* make a private key from a verified object */
static NSSLOWKEYPrivateKey *
lg_mkPrivKey(SDB *sdb, const CK_ATTRIBUTE *templ, CK_ULONG count,
CK_KEY_TYPE key_type, CK_RV *crvp)
{
NSSLOWKEYPrivateKey *privKey;
PLArenaPool *arena;
CK_RV crv = CKR_OK;
SECStatus rv;
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
*crvp = CKR_HOST_MEMORY;
return NULL;
}
privKey = (NSSLOWKEYPrivateKey *)
PORT_ArenaZAlloc(arena,sizeof(NSSLOWKEYPrivateKey));
if (privKey == NULL) {
PORT_FreeArena(arena,PR_FALSE);
*crvp = CKR_HOST_MEMORY;
return NULL;
}
/* in future this would be a switch on key_type */
privKey->arena = arena;
switch (key_type) {
case CKK_RSA:
privKey->keyType = NSSLOWKEYRSAKey;
crv=lg_Attribute2SSecItem(arena,CKA_MODULUS,templ,count,
&privKey->u.rsa.modulus);
if (crv != CKR_OK) break;
crv=lg_Attribute2SSecItem(arena,CKA_PUBLIC_EXPONENT,templ,count,
&privKey->u.rsa.publicExponent);
if (crv != CKR_OK) break;
crv=lg_PrivAttr2SSecItem(arena,CKA_PRIVATE_EXPONENT,templ,count,
&privKey->u.rsa.privateExponent, sdb);
if (crv != CKR_OK) break;
crv=lg_PrivAttr2SSecItem(arena,CKA_PRIME_1,templ,count,
&privKey->u.rsa.prime1, sdb);
if (crv != CKR_OK) break;
crv=lg_PrivAttr2SSecItem(arena,CKA_PRIME_2,templ,count,
&privKey->u.rsa.prime2, sdb);
if (crv != CKR_OK) break;
crv=lg_PrivAttr2SSecItem(arena,CKA_EXPONENT_1,templ,count,
&privKey->u.rsa.exponent1, sdb);
if (crv != CKR_OK) break;
crv=lg_PrivAttr2SSecItem(arena,CKA_EXPONENT_2,templ,count,
&privKey->u.rsa.exponent2, sdb);
if (crv != CKR_OK) break;
crv=lg_PrivAttr2SSecItem(arena,CKA_COEFFICIENT,templ,count,
&privKey->u.rsa.coefficient, sdb);
if (crv != CKR_OK) break;
rv = DER_SetUInteger(privKey->arena, &privKey->u.rsa.version,
NSSLOWKEY_VERSION);
if (rv != SECSuccess) crv = CKR_HOST_MEMORY;
break;
case CKK_DSA:
privKey->keyType = NSSLOWKEYDSAKey;
crv = lg_Attribute2SSecItem(arena,CKA_PRIME,templ,count,
&privKey->u.dsa.params.prime);
if (crv != CKR_OK) break;
crv = lg_Attribute2SSecItem(arena,CKA_SUBPRIME,templ,count,
&privKey->u.dsa.params.subPrime);
if (crv != CKR_OK) break;
crv = lg_Attribute2SSecItem(arena,CKA_BASE,templ,count,
&privKey->u.dsa.params.base);
if (crv != CKR_OK) break;
crv = lg_PrivAttr2SSecItem(arena,CKA_VALUE,templ,count,
&privKey->u.dsa.privateValue, sdb);
if (crv != CKR_OK) break;
if (lg_hasAttribute(CKA_NETSCAPE_DB, templ,count)) {
crv = lg_Attribute2SSecItem(arena, CKA_NETSCAPE_DB,templ,count,
&privKey->u.dsa.publicValue);
/* privKey was zero'd so public value is already set to NULL, 0
* if we don't set it explicitly */
}
break;
case CKK_DH:
privKey->keyType = NSSLOWKEYDHKey;
crv = lg_Attribute2SSecItem(arena,CKA_PRIME,templ,count,
&privKey->u.dh.prime);
if (crv != CKR_OK) break;
crv = lg_Attribute2SSecItem(arena,CKA_BASE,templ,count,
&privKey->u.dh.base);
if (crv != CKR_OK) break;
crv = lg_PrivAttr2SSecItem(arena,CKA_VALUE,templ,count,
&privKey->u.dh.privateValue, sdb);
if (crv != CKR_OK) break;
if (lg_hasAttribute(CKA_NETSCAPE_DB, templ, count)) {
crv = lg_Attribute2SSecItem(arena, CKA_NETSCAPE_DB,templ,count,
&privKey->u.dh.publicValue);
/* privKey was zero'd so public value is already set to NULL, 0
* if we don't set it explicitly */
}
break;
#ifdef NSS_ENABLE_ECC
case CKK_EC:
privKey->keyType = NSSLOWKEYECKey;
crv = lg_Attribute2SSecItem(arena, CKA_EC_PARAMS,templ,count,
&privKey->u.ec.ecParams.DEREncoding);
if (crv != CKR_OK) break;
/* Fill out the rest of the ecParams structure
* based on the encoded params
*/
if (LGEC_FillParams(arena, &privKey->u.ec.ecParams.DEREncoding,
&privKey->u.ec.ecParams) != SECSuccess) {
crv = CKR_DOMAIN_PARAMS_INVALID;
break;
}
crv = lg_PrivAttr2SSecItem(arena,CKA_VALUE,templ,count,
&privKey->u.ec.privateValue, sdb);
if (crv != CKR_OK) break;
if (lg_hasAttribute(CKA_NETSCAPE_DB,templ,count)) {
crv = lg_Attribute2SSecItem(arena, CKA_NETSCAPE_DB,templ,count,
&privKey->u.ec.publicValue);
if (crv != CKR_OK) break;
/* privKey was zero'd so public value is already set to NULL, 0
* if we don't set it explicitly */
}
rv = DER_SetUInteger(privKey->arena, &privKey->u.ec.version,
NSSLOWKEY_EC_PRIVATE_KEY_VERSION);
if (rv != SECSuccess) crv = CKR_HOST_MEMORY;
break;
#endif /* NSS_ENABLE_ECC */
default:
crv = CKR_KEY_TYPE_INCONSISTENT;
break;
}
*crvp = crv;
if (crv != CKR_OK) {
PORT_FreeArena(arena,PR_FALSE);
return NULL;
}
return privKey;
}
/*
* check the consistancy and initialize a Private Key Object
*/
static CK_RV
lg_createPrivateKeyObject(SDB *sdb, CK_KEY_TYPE key_type,
CK_OBJECT_HANDLE *handle, const CK_ATTRIBUTE *templ, CK_ULONG count)
{
NSSLOWKEYPrivateKey *privKey;
char *label;
SECStatus rv = SECSuccess;
CK_RV crv = CKR_DEVICE_ERROR;
SECItem pubKey;
NSSLOWKEYDBHandle *keyHandle = lg_getKeyDB(sdb);
if (keyHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
}
privKey=lg_mkPrivKey(sdb, templ,count,key_type,&crv);
if (privKey == NULL) return crv;
label = lg_getString(CKA_LABEL,templ,count);
crv = lg_Attribute2SSecItem(NULL,CKA_NETSCAPE_DB,templ,count,&pubKey);
if (crv != CKR_OK) {
crv = CKR_TEMPLATE_INCOMPLETE;
rv = SECFailure;
goto fail;
}
#ifdef notdef
if (keyHandle->version != 3) {
unsigned char buf[SHA1_LENGTH];
SHA1_HashBuf(buf,pubKey.data,pubKey.len);
PORT_Memcpy(pubKey.data,buf,sizeof(buf));
pubKey.len = sizeof(buf);
}
#endif
/* get the key type */
if (key_type == CKK_RSA) {
rv = RSA_PrivateKeyCheck(&privKey->u.rsa);
if (rv == SECFailure) {
goto fail;
}
}
rv = nsslowkey_StoreKeyByPublicKey(keyHandle, privKey, &pubKey,
label, sdb /*->password*/);
fail:
if (label) PORT_Free(label);
*handle = lg_mkHandle(sdb,&pubKey,LG_TOKEN_TYPE_PRIV);
if (pubKey.data) PORT_Free(pubKey.data);
nsslowkey_DestroyPrivateKey(privKey);
if (rv != SECSuccess) return crv;
return CKR_OK;
}
#define LG_KEY_MAX_RETRIES 10 /* don't hang if we are having problems with the rng */
#define LG_KEY_ID_SIZE 18 /* don't use either SHA1 or MD5 sizes */
/*
* Secret keys must have a CKA_ID value to be stored in the database. This code
* will generate one if there wasn't one already.
*/
static CK_RV
lg_GenerateSecretCKA_ID(NSSLOWKEYDBHandle *handle, SECItem *id, char *label)
{
unsigned int retries;
SECStatus rv = SECSuccess;
CK_RV crv = CKR_OK;
id->data = NULL;
if (label) {
id->data = (unsigned char *)PORT_Strdup(label);
if (id->data == NULL) {
return CKR_HOST_MEMORY;
}
id->len = PORT_Strlen(label)+1;
if (!nsslowkey_KeyForIDExists(handle,id)) {
return CKR_OK;
}
PORT_Free(id->data);
id->data = NULL;
id->len = 0;
}
id->data = (unsigned char *)PORT_Alloc(LG_KEY_ID_SIZE);
if (id->data == NULL) {
return CKR_HOST_MEMORY;
}
id->len = LG_KEY_ID_SIZE;
retries = 0;
do {
rv = RNG_GenerateGlobalRandomBytes(id->data,id->len);
} while (rv == SECSuccess && nsslowkey_KeyForIDExists(handle,id) &&
(++retries <= LG_KEY_MAX_RETRIES));
if ((rv != SECSuccess) || (retries > LG_KEY_MAX_RETRIES)) {
crv = CKR_DEVICE_ERROR; /* random number generator is bad */
PORT_Free(id->data);
id->data = NULL;
id->len = 0;
}
return crv;
}
static NSSLOWKEYPrivateKey *lg_mkSecretKeyRep(const CK_ATTRIBUTE *templ,
CK_ULONG count, CK_KEY_TYPE key_type,
SECItem *pubkey, SDB *sdbpw)
{
NSSLOWKEYPrivateKey *privKey = 0;
PLArenaPool *arena = 0;
CK_KEY_TYPE keyType;
PRUint32 keyTypeStorage;
SECItem keyTypeItem;
CK_RV crv;
SECStatus rv;
static unsigned char derZero[1] = { 0 };
arena = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) { crv = CKR_HOST_MEMORY; goto loser; }
privKey = (NSSLOWKEYPrivateKey *)
PORT_ArenaZAlloc(arena,sizeof(NSSLOWKEYPrivateKey));
if (privKey == NULL) { crv = CKR_HOST_MEMORY; goto loser; }
privKey->arena = arena;
/* Secret keys are represented in the database as "fake" RSA keys.
* The RSA key is marked as a secret key representation by setting the
* public exponent field to 0, which is an invalid RSA exponent.
* The other fields are set as follows:
* modulus - CKA_ID value for the secret key
* private exponent - CKA_VALUE (the key itself)
* coefficient - CKA_KEY_TYPE, which indicates what encryption algorithm
* is used for the key.
* all others - set to integer 0
*/
privKey->keyType = NSSLOWKEYRSAKey;
/* The modulus is set to the key id of the symmetric key */
crv = lg_Attribute2SecItem(arena, CKA_ID, templ, count,
&privKey->u.rsa.modulus);
if (crv != CKR_OK) goto loser;
/* The public exponent is set to 0 length to indicate a special key */
privKey->u.rsa.publicExponent.len = sizeof derZero;
privKey->u.rsa.publicExponent.data = derZero;
/* The private exponent is the actual key value */
crv = lg_PrivAttr2SecItem(arena, CKA_VALUE, templ, count,
&privKey->u.rsa.privateExponent, sdbpw);
if (crv != CKR_OK) goto loser;
/* All other fields empty - needs testing */
privKey->u.rsa.prime1.len = sizeof derZero;
privKey->u.rsa.prime1.data = derZero;
privKey->u.rsa.prime2.len = sizeof derZero;
privKey->u.rsa.prime2.data = derZero;
privKey->u.rsa.exponent1.len = sizeof derZero;
privKey->u.rsa.exponent1.data = derZero;
privKey->u.rsa.exponent2.len = sizeof derZero;
privKey->u.rsa.exponent2.data = derZero;
/* Coeficient set to KEY_TYPE */
crv = lg_GetULongAttribute(CKA_KEY_TYPE, templ, count, &keyType);
if (crv != CKR_OK) goto loser;
/* on 64 bit platforms, we still want to store 32 bits of keyType (This is
* safe since the PKCS #11 defines for all types are 32 bits or less). */
keyTypeStorage = (PRUint32) keyType;
keyTypeStorage = PR_htonl(keyTypeStorage);
keyTypeItem.data = (unsigned char *)&keyTypeStorage;
keyTypeItem.len = sizeof (keyTypeStorage);
rv = SECITEM_CopyItem(arena, &privKey->u.rsa.coefficient, &keyTypeItem);
if (rv != SECSuccess) {
crv = CKR_HOST_MEMORY;
goto loser;
}
/* Private key version field set normally for compatibility */
rv = DER_SetUInteger(privKey->arena,
&privKey->u.rsa.version, NSSLOWKEY_VERSION);
if (rv != SECSuccess) { crv = CKR_HOST_MEMORY; goto loser; }
loser:
if (crv != CKR_OK) {
PORT_FreeArena(arena,PR_FALSE);
privKey = 0;
}
return privKey;
}
/*
* check the consistancy and initialize a Secret Key Object
*/
static CK_RV
lg_createSecretKeyObject(SDB *sdb, CK_KEY_TYPE key_type,
CK_OBJECT_HANDLE *handle, const CK_ATTRIBUTE *templ, CK_ULONG count)
{
CK_RV crv;
NSSLOWKEYPrivateKey *privKey = NULL;
NSSLOWKEYDBHandle *keyHandle = NULL;
SECItem pubKey;
char *label = NULL;
SECStatus rv = SECSuccess;
pubKey.data = 0;
/* If the object is a TOKEN object, store in the database */
keyHandle = lg_getKeyDB(sdb);
if (keyHandle == NULL) {
return CKR_TOKEN_WRITE_PROTECTED;
}
label = lg_getString(CKA_LABEL,templ,count);
crv = lg_Attribute2SecItem(NULL,CKA_ID,templ,count,&pubKey);
/* Should this be ID? */
if (crv != CKR_OK) goto loser;
/* if we don't have an ID, generate one */
if (pubKey.len == 0) {
if (pubKey.data) {
PORT_Free(pubKey.data);
pubKey.data = NULL;
}
crv = lg_GenerateSecretCKA_ID(keyHandle, &pubKey, label);
if (crv != CKR_OK) goto loser;
}
privKey = lg_mkSecretKeyRep(templ, count, key_type, &pubKey, sdb);
if (privKey == NULL) {
crv = CKR_HOST_MEMORY;
goto loser;
}
rv = nsslowkey_StoreKeyByPublicKey(keyHandle,
privKey, &pubKey, label, sdb /*->password*/);
if (rv != SECSuccess) {
crv = CKR_DEVICE_ERROR;
goto loser;
}
*handle = lg_mkHandle(sdb, &pubKey, LG_TOKEN_TYPE_KEY);
loser:
if (label) PORT_Free(label);
if (privKey) nsslowkey_DestroyPrivateKey(privKey);
if (pubKey.data) PORT_Free(pubKey.data);
return crv;
}
/*
* check the consistancy and initialize a Key Object
*/
static CK_RV
lg_createKeyObject(SDB *sdb, CK_OBJECT_CLASS objclass,
CK_OBJECT_HANDLE *handle, const CK_ATTRIBUTE *templ, CK_ULONG count)
{
CK_RV crv;
CK_KEY_TYPE key_type;
/* get the key type */
crv = lg_GetULongAttribute(CKA_KEY_TYPE, templ, count, &key_type);
if (crv != CKR_OK) {
return crv;
}
switch (objclass) {
case CKO_PUBLIC_KEY:
return lg_createPublicKeyObject(sdb,key_type,handle,templ,count);
case CKO_PRIVATE_KEY:
return lg_createPrivateKeyObject(sdb,key_type,handle,templ,count);
case CKO_SECRET_KEY:
return lg_createSecretKeyObject(sdb,key_type,handle,templ,count);
default:
break;
}
return CKR_ATTRIBUTE_VALUE_INVALID;
}
/*
* Parse the template and create an object stored in the DB that reflects.
* the object specified in the database.
*/
CK_RV
lg_CreateObject(SDB *sdb, CK_OBJECT_HANDLE *handle,
const CK_ATTRIBUTE *templ, CK_ULONG count)
{
CK_RV crv;
CK_OBJECT_CLASS objclass;
/* get the object class */
crv = lg_GetULongAttribute(CKA_CLASS, templ, count, &objclass);
if (crv != CKR_OK) {
return crv;
}
/* Now handle the specific object class.
*/
switch (objclass) {
case CKO_CERTIFICATE:
crv = lg_createCertObject(sdb,handle,templ,count);
break;
case CKO_NETSCAPE_TRUST:
crv = lg_createTrustObject(sdb,handle,templ,count);
break;
case CKO_NETSCAPE_CRL:
crv = lg_createCrlObject(sdb,handle,templ,count);
break;
case CKO_NETSCAPE_SMIME:
crv = lg_createSMimeObject(sdb,handle,templ,count);
break;
case CKO_PRIVATE_KEY:
case CKO_PUBLIC_KEY:
case CKO_SECRET_KEY:
crv = lg_createKeyObject(sdb,objclass,handle,templ,count);
break;
default:
crv = CKR_ATTRIBUTE_VALUE_INVALID;
break;
}
return crv;
}

View File

@@ -0,0 +1,197 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Internal data structures and functions used by pkcs11.c
*/
#ifndef _LGDB_H_
#define _LGDB_H_ 1
#include "nssilock.h"
#include "seccomon.h"
#include "secoidt.h"
#include "lowkeyti.h"
#include "pkcs11t.h"
#include "sdb.h"
#include "cdbhdl.h"
#define MULTIACCESS "multiaccess:"
/* machine dependent path stuff used by dbinit.c and pk11db.c */
#ifdef macintosh
#define PATH_SEPARATOR ":"
#define SECMOD_DB "Security Modules"
#define CERT_DB_FMT "%sCertificates%s"
#define KEY_DB_FMT "%sKey Database%s"
#else
#define PATH_SEPARATOR "/"
#define SECMOD_DB "secmod.db"
#define CERT_DB_FMT "%scert%s.db"
#define KEY_DB_FMT "%skey%s.db"
#endif
SEC_BEGIN_PROTOS
/* internal utility functions used by pkcs11.c */
extern const CK_ATTRIBUTE *lg_FindAttribute(CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count);
extern CK_RV lg_Attribute2SecItem(PLArenaPool *,CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item);
extern CK_RV lg_Attribute2SSecItem(PLArenaPool *,CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item);
extern CK_RV lg_PrivAttr2SecItem(PLArenaPool *,CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item, SDB *sdbpw);
extern CK_RV lg_PrivAttr2SSecItem(PLArenaPool *,CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item, SDB *sdbpw);
extern CK_RV lg_GetULongAttribute(CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
CK_ULONG *out);
extern PRBool lg_hasAttribute(CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count);
extern PRBool lg_isTrue(CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count);
extern PRBool lg_isSensitive(CK_ATTRIBUTE_TYPE type, CK_OBJECT_CLASS inClass);
extern char *lg_getString(CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count);
extern unsigned int lg_MapTrust(CK_TRUST trust, PRBool clientAuth);
/* clear out all the existing object ID to database key mappings.
* used to reinit a token */
extern CK_RV SFTK_ClearTokenKeyHashTable(SDB *sdb);
extern void lg_FreeSearch(SDBFind *search);
NSSLOWCERTCertDBHandle *lg_getCertDB(SDB *sdb);
NSSLOWKEYDBHandle *lg_getKeyDB(SDB *sdb);
const char *lg_EvaluateConfigDir(const char *configdir, char **domain);
/*
* object handle modifiers
*/
#define LG_TOKEN_MASK 0xc0000000L
#define LG_TOKEN_TYPE_MASK 0x38000000L
#define LG_TOKEN_TYPE_SHIFT 27
/* keydb (high bit == 0) */
#define LG_TOKEN_TYPE_PRIV 0x08000000L
#define LG_TOKEN_TYPE_PUB 0x10000000L
#define LG_TOKEN_TYPE_KEY 0x18000000L
/* certdb (high bit == 1) */
#define LG_TOKEN_TYPE_TRUST 0x20000000L
#define LG_TOKEN_TYPE_CRL 0x28000000L
#define LG_TOKEN_TYPE_SMIME 0x30000000L
#define LG_TOKEN_TYPE_CERT 0x38000000L
#define LG_TOKEN_KRL_HANDLE (LG_TOKEN_TYPE_CRL|1)
#define LG_SEARCH_BLOCK_SIZE 10
#define LG_BUF_SPACE 50
#define LG_STRICT PR_FALSE
/*
* token object utilities
*/
void lg_addHandle(SDBFind *search, CK_OBJECT_HANDLE handle);
PRBool lg_poisonHandle(SDB *sdb, SECItem *dbkey, CK_OBJECT_HANDLE handle);
PRBool lg_tokenMatch(SDB *sdb, const SECItem *dbKey, CK_OBJECT_HANDLE class,
const CK_ATTRIBUTE *templ, CK_ULONG count);
const SECItem *lg_lookupTokenKeyByHandle(SDB *sdb, CK_OBJECT_HANDLE handle);
CK_OBJECT_HANDLE lg_mkHandle(SDB *sdb, SECItem *dbKey, CK_OBJECT_HANDLE class);
SECStatus lg_deleteTokenKeyByHandle(SDB *sdb, CK_OBJECT_HANDLE handle);
SECStatus lg_util_encrypt(PLArenaPool *arena, SDB *sdbpw,
SECItem *plainText, SECItem **cipherText);
SECStatus lg_util_decrypt(SDB *sdbpw,
SECItem *cipherText, SECItem **plainText);
PLHashTable *lg_GetHashTable(SDB *sdb);
void lg_DBLock(SDB *sdb);
void lg_DBUnlock(SDB *sdb);
typedef void (*LGFreeFunc)(void *);
/*
* database functions
*/
/* lg_FindObjectsInit initializes a search for token and session objects
* that match a template. */
CK_RV lg_FindObjectsInit(SDB *sdb, const CK_ATTRIBUTE *pTemplate,
CK_ULONG ulCount, SDBFind **search);
/* lg_FindObjects continues a search for token and session objects
* that match a template, obtaining additional object handles. */
CK_RV lg_FindObjects(SDB *sdb, SDBFind *search,
CK_OBJECT_HANDLE *phObject,CK_ULONG ulMaxObjectCount,
CK_ULONG *pulObjectCount);
/* lg_FindObjectsFinal finishes a search for token and session objects. */
CK_RV lg_FindObjectsFinal(SDB* lgdb, SDBFind *search);
/* lg_CreateObject parses the template and create an object stored in the
* DB that reflects the object specified in the template. */
CK_RV lg_CreateObject(SDB *sdb, CK_OBJECT_HANDLE *handle,
const CK_ATTRIBUTE *templ, CK_ULONG count);
CK_RV lg_GetAttributeValue(SDB *sdb, CK_OBJECT_HANDLE object_id,
CK_ATTRIBUTE *template, CK_ULONG count);
CK_RV lg_SetAttributeValue(SDB *sdb, CK_OBJECT_HANDLE object_id,
const CK_ATTRIBUTE *template, CK_ULONG count);
CK_RV lg_DestroyObject(SDB *sdb, CK_OBJECT_HANDLE object_id);
CK_RV lg_Close(SDB *sdb);
CK_RV lg_Reset(SDB *sdb);
/*
* The old database doesn't share and doesn't support
* transactions.
*/
CK_RV lg_Begin(SDB *sdb);
CK_RV lg_Commit(SDB *sdb);
CK_RV lg_Abort(SDB *sdb);
CK_RV lg_GetPWEntry(SDB *sdb, SDBPasswordEntry *entry);
CK_RV lg_PutPWEntry(SDB *sdb, SDBPasswordEntry *entry);
SEC_END_PROTOS
#endif /* _LGDB_H_ */

View File

@@ -0,0 +1,64 @@
;+#
;+# ***** BEGIN LICENSE BLOCK *****
;+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
;+#
;+# The contents of this file are subject to the Mozilla Public License Version
;+# 1.1 (the "License"); you may not use this file except in compliance with
;+# the License. You may obtain a copy of the License at
;+# http://www.mozilla.org/MPL/
;+#
;+# Software distributed under the License is distributed on an "AS IS" basis,
;+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
;+# for the specific language governing rights and limitations under the
;+# License.
;+#
;+# The Original Code is the Netscape security libraries.
;+#
;+# The Initial Developer of the Original Code is
;+# Netscape Communications Corporation.
;+# Portions created by the Initial Developer are Copyright (C) 2000
;+# the Initial Developer. All Rights Reserved.
;+#
;+# Contributor(s):
;+# Dr Stephen Henson <stephen.henson@gemplus.com>
;+#
;+# Alternatively, the contents of this file may be used under the terms of
;+# either the GNU General Public License Version 2 or later (the "GPL"), or
;+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
;+# in which case the provisions of the GPL or the LGPL are applicable instead
;+# of those above. If you wish to allow use of your version of this file only
;+# under the terms of either the GPL or the LGPL, and not to allow others to
;+# use your version of this file under the terms of the MPL, indicate your
;+# decision by deleting the provisions above and replace them with the notice
;+# and other provisions required by the GPL or the LGPL. If you do not delete
;+# the provisions above, a recipient may use your version of this file under
;+# the terms of any one of the MPL, the GPL or the LGPL.
;+#
;+# ***** END LICENSE BLOCK *****
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+LGDBM_3.12 { # NSS 3.12 release
;+ global:
LIBRARY lgdbm3 ;-
EXPORTS ;-
legacy_Open;
legacy_Shutdown;
legacy_ReadSecmodDB;
legacy_ReleaseSecmodDBData;
legacy_AddSecmodDB;
legacy_DeleteSecmodDB;
legacy_SetCryptFunctions;
;+ local:
;+ *;
;+};

View File

@@ -0,0 +1,144 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Internal PKCS #11 functions. Should only be called by pkcs11.c
*/
#include "pkcs11.h"
#include "lgdb.h"
#include "pcert.h"
#include "lowkeyi.h"
/*
* remove an object.
*/
CK_RV
lg_DestroyObject(SDB *sdb, CK_OBJECT_HANDLE object_id)
{
CK_RV crv = CKR_OK;
SECStatus rv;
NSSLOWCERTCertificate *cert;
NSSLOWCERTCertTrust tmptrust;
PRBool isKrl;
NSSLOWKEYDBHandle *keyHandle;
NSSLOWCERTCertDBHandle *certHandle;
const SECItem *dbKey;
object_id &= ~LG_TOKEN_MASK;
dbKey = lg_lookupTokenKeyByHandle(sdb,object_id);
if (dbKey == NULL) {
return CKR_OBJECT_HANDLE_INVALID;
}
/* remove the objects from the real data base */
switch (object_id & LG_TOKEN_TYPE_MASK) {
case LG_TOKEN_TYPE_PRIV:
case LG_TOKEN_TYPE_KEY:
/* KEYID is the public KEY for DSA and DH, and the MODULUS for
* RSA */
keyHandle = lg_getKeyDB(sdb);
if (!keyHandle) {
crv = CKR_TOKEN_WRITE_PROTECTED;
break;
}
rv = nsslowkey_DeleteKey(keyHandle, dbKey);
if (rv != SECSuccess) {
crv = CKR_DEVICE_ERROR;
}
break;
case LG_TOKEN_TYPE_PUB:
break; /* public keys only exist at the behest of the priv key */
case LG_TOKEN_TYPE_CERT:
certHandle = lg_getCertDB(sdb);
if (!certHandle) {
crv = CKR_TOKEN_WRITE_PROTECTED;
break;
}
cert = nsslowcert_FindCertByKey(certHandle,dbKey);
if (cert == NULL) {
crv = CKR_DEVICE_ERROR;
break;
}
rv = nsslowcert_DeletePermCertificate(cert);
if (rv != SECSuccess) {
crv = CKR_DEVICE_ERROR;
}
nsslowcert_DestroyCertificate(cert);
break;
case LG_TOKEN_TYPE_CRL:
certHandle = lg_getCertDB(sdb);
if (!certHandle) {
crv = CKR_TOKEN_WRITE_PROTECTED;
break;
}
isKrl = (PRBool) (object_id == LG_TOKEN_KRL_HANDLE);
rv = nsslowcert_DeletePermCRL(certHandle, dbKey, isKrl);
if (rv == SECFailure) crv = CKR_DEVICE_ERROR;
break;
case LG_TOKEN_TYPE_TRUST:
certHandle = lg_getCertDB(sdb);
if (!certHandle) {
crv = CKR_TOKEN_WRITE_PROTECTED;
break;
}
cert = nsslowcert_FindCertByKey(certHandle, dbKey);
if (cert == NULL) {
crv = CKR_DEVICE_ERROR;
break;
}
tmptrust = *cert->trust;
tmptrust.sslFlags &= CERTDB_PRESERVE_TRUST_BITS;
tmptrust.emailFlags &= CERTDB_PRESERVE_TRUST_BITS;
tmptrust.objectSigningFlags &= CERTDB_PRESERVE_TRUST_BITS;
tmptrust.sslFlags |= CERTDB_TRUSTED_UNKNOWN;
tmptrust.emailFlags |= CERTDB_TRUSTED_UNKNOWN;
tmptrust.objectSigningFlags |= CERTDB_TRUSTED_UNKNOWN;
rv = nsslowcert_ChangeCertTrust(certHandle, cert, &tmptrust);
if (rv != SECSuccess) crv = CKR_DEVICE_ERROR;
nsslowcert_DestroyCertificate(cert);
break;
default:
break;
}
lg_DBLock(sdb);
lg_deleteTokenKeyByHandle(sdb,object_id);
lg_DBUnlock(sdb);
return crv;
}

View File

@@ -0,0 +1,941 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "secitem.h"
#include "pkcs11.h"
#include "lgdb.h"
#include "lowkeyi.h"
#include "pcert.h"
#include "blapi.h"
#include "keydbi.h"
/*
* This code maps PKCS #11 Finds to legacy database searches. This code
* was orginally in pkcs11.c in previous versions of NSS.
*/
struct SDBFindStr {
CK_OBJECT_HANDLE *handles;
int size;
int index;
int array_size;
};
/*
* free a search structure
*/
void
lg_FreeSearch(SDBFind *search)
{
if (search->handles) {
PORT_Free(search->handles);
}
PORT_Free(search);
}
void
lg_addHandle(SDBFind *search, CK_OBJECT_HANDLE handle)
{
if (search->handles == NULL) {
return;
}
if (search->size >= search->array_size) {
search->array_size += LG_SEARCH_BLOCK_SIZE;
search->handles = (CK_OBJECT_HANDLE *) PORT_Realloc(search->handles,
sizeof(CK_OBJECT_HANDLE)* search->array_size);
if (search->handles == NULL) {
return;
}
}
search->handles[search->size] = handle;
search->size++;
}
/*
* find any certs that may match the template and load them.
*/
#define LG_CERT 0x00000001
#define LG_TRUST 0x00000002
#define LG_CRL 0x00000004
#define LG_SMIME 0x00000008
#define LG_PRIVATE 0x00000010
#define LG_PUBLIC 0x00000020
#define LG_KEY 0x00000040
/*
* structure to collect key handles.
*/
typedef struct lgEntryDataStr {
SDB *sdb;
SDBFind *searchHandles;
const CK_ATTRIBUTE *template;
CK_ULONG templ_count;
} lgEntryData;
static SECStatus
lg_crl_collect(SECItem *data, SECItem *key, certDBEntryType type, void *arg)
{
lgEntryData *crlData;
CK_OBJECT_HANDLE class_handle;
SDB *sdb;
crlData = (lgEntryData *)arg;
sdb = crlData->sdb;
class_handle = (type == certDBEntryTypeRevocation) ? LG_TOKEN_TYPE_CRL :
LG_TOKEN_KRL_HANDLE;
if (lg_tokenMatch(sdb, key, class_handle,
crlData->template, crlData->templ_count)) {
lg_addHandle(crlData->searchHandles,
lg_mkHandle(sdb,key,class_handle));
}
return(SECSuccess);
}
static void
lg_searchCrls(SDB *sdb, SECItem *derSubject, PRBool isKrl,
unsigned long classFlags, SDBFind *search,
const CK_ATTRIBUTE *pTemplate, CK_ULONG ulCount)
{
NSSLOWCERTCertDBHandle *certHandle = NULL;
certHandle = lg_getCertDB(sdb);
if (certHandle == NULL) {
return;
}
if (derSubject->data != NULL) {
certDBEntryRevocation *crl =
nsslowcert_FindCrlByKey(certHandle, derSubject, isKrl);
if (crl != NULL) {
lg_addHandle(search, lg_mkHandle(sdb, derSubject,
isKrl ? LG_TOKEN_KRL_HANDLE : LG_TOKEN_TYPE_CRL));
nsslowcert_DestroyDBEntry((certDBEntry *)crl);
}
} else {
lgEntryData crlData;
/* traverse */
crlData.sdb = sdb;
crlData.searchHandles = search;
crlData.template = pTemplate;
crlData.templ_count = ulCount;
nsslowcert_TraverseDBEntries(certHandle, certDBEntryTypeRevocation,
lg_crl_collect, (void *)&crlData);
nsslowcert_TraverseDBEntries(certHandle, certDBEntryTypeKeyRevocation,
lg_crl_collect, (void *)&crlData);
}
}
/*
* structure to collect key handles.
*/
typedef struct lgKeyDataStr {
SDB *sdb;
NSSLOWKEYDBHandle *keyHandle;
SDBFind *searchHandles;
SECItem *id;
const CK_ATTRIBUTE *template;
CK_ULONG templ_count;
unsigned long classFlags;
PRBool strict;
} lgKeyData;
static PRBool
isSecretKey(NSSLOWKEYPrivateKey *privKey)
{
if (privKey->keyType == NSSLOWKEYRSAKey &&
privKey->u.rsa.publicExponent.len == 1 &&
privKey->u.rsa.publicExponent.data[0] == 0)
return PR_TRUE;
return PR_FALSE;
}
static SECStatus
lg_key_collect(DBT *key, DBT *data, void *arg)
{
lgKeyData *keyData;
NSSLOWKEYPrivateKey *privKey = NULL;
SECItem tmpDBKey;
SDB *sdb;
unsigned long classFlags;
keyData = (lgKeyData *)arg;
sdb = keyData->sdb;
classFlags = keyData->classFlags;
tmpDBKey.data = key->data;
tmpDBKey.len = key->size;
tmpDBKey.type = siBuffer;
PORT_Assert(keyData->keyHandle);
if (!keyData->strict && keyData->id) {
SECItem result;
PRBool haveMatch= PR_FALSE;
unsigned char hashKey[SHA1_LENGTH];
result.data = hashKey;
result.len = sizeof(hashKey);
if (keyData->id->len == 0) {
/* Make sure this isn't a LG_KEY */
privKey = nsslowkey_FindKeyByPublicKey(keyData->keyHandle,
&tmpDBKey, keyData->sdb/*->password*/);
if (privKey) {
/* turn off the unneeded class flags */
classFlags &= isSecretKey(privKey) ? ~(LG_PRIVATE|LG_PUBLIC) :
~LG_KEY;
haveMatch = (PRBool)
((classFlags & (LG_KEY|LG_PRIVATE|LG_PUBLIC)) != 0);
nsslowkey_DestroyPrivateKey(privKey);
}
} else {
SHA1_HashBuf( hashKey, key->data, key->size ); /* match id */
haveMatch = SECITEM_ItemsAreEqual(keyData->id,&result);
if (!haveMatch && ((unsigned char *)key->data)[0] == 0) {
/* This is a fix for backwards compatibility. The key
* database indexes private keys by the public key, and
* versions of NSS prior to 3.4 stored the public key as
* a signed integer. The public key is now treated as an
* unsigned integer, with no leading zero. In order to
* correctly compute the hash of an old key, it is necessary
* to fallback and detect the leading zero.
*/
SHA1_HashBuf(hashKey,
(unsigned char *)key->data + 1, key->size - 1);
haveMatch = SECITEM_ItemsAreEqual(keyData->id,&result);
}
}
if (haveMatch) {
if (classFlags & LG_PRIVATE) {
lg_addHandle(keyData->searchHandles,
lg_mkHandle(sdb,&tmpDBKey,LG_TOKEN_TYPE_PRIV));
}
if (classFlags & LG_PUBLIC) {
lg_addHandle(keyData->searchHandles,
lg_mkHandle(sdb,&tmpDBKey,LG_TOKEN_TYPE_PUB));
}
if (classFlags & LG_KEY) {
lg_addHandle(keyData->searchHandles,
lg_mkHandle(sdb,&tmpDBKey,LG_TOKEN_TYPE_KEY));
}
}
return SECSuccess;
}
privKey = nsslowkey_FindKeyByPublicKey(keyData->keyHandle, &tmpDBKey,
keyData->sdb/*->password*/);
if ( privKey == NULL ) {
goto loser;
}
if (isSecretKey(privKey)) {
if ((classFlags & LG_KEY) &&
lg_tokenMatch(keyData->sdb, &tmpDBKey, LG_TOKEN_TYPE_KEY,
keyData->template, keyData->templ_count)) {
lg_addHandle(keyData->searchHandles,
lg_mkHandle(keyData->sdb, &tmpDBKey, LG_TOKEN_TYPE_KEY));
}
} else {
if ((classFlags & LG_PRIVATE) &&
lg_tokenMatch(keyData->sdb, &tmpDBKey, LG_TOKEN_TYPE_PRIV,
keyData->template, keyData->templ_count)) {
lg_addHandle(keyData->searchHandles,
lg_mkHandle(keyData->sdb,&tmpDBKey,LG_TOKEN_TYPE_PRIV));
}
if ((classFlags & LG_PUBLIC) &&
lg_tokenMatch(keyData->sdb, &tmpDBKey, LG_TOKEN_TYPE_PUB,
keyData->template, keyData->templ_count)) {
lg_addHandle(keyData->searchHandles,
lg_mkHandle(keyData->sdb, &tmpDBKey,LG_TOKEN_TYPE_PUB));
}
}
loser:
if ( privKey ) {
nsslowkey_DestroyPrivateKey(privKey);
}
return(SECSuccess);
}
static void
lg_searchKeys(SDB *sdb, SECItem *key_id,
unsigned long classFlags, SDBFind *search, PRBool mustStrict,
const CK_ATTRIBUTE *pTemplate, CK_ULONG ulCount)
{
NSSLOWKEYDBHandle *keyHandle = NULL;
NSSLOWKEYPrivateKey *privKey;
lgKeyData keyData;
PRBool found = PR_FALSE;
keyHandle = lg_getKeyDB(sdb);
if (keyHandle == NULL) {
return;
}
if (key_id->data) {
privKey = nsslowkey_FindKeyByPublicKey(keyHandle, key_id, sdb);
if (privKey) {
if ((classFlags & LG_KEY) && isSecretKey(privKey)) {
lg_addHandle(search,
lg_mkHandle(sdb,key_id,LG_TOKEN_TYPE_KEY));
found = PR_TRUE;
}
if ((classFlags & LG_PRIVATE) && !isSecretKey(privKey)) {
lg_addHandle(search,
lg_mkHandle(sdb,key_id,LG_TOKEN_TYPE_PRIV));
found = PR_TRUE;
}
if ((classFlags & LG_PUBLIC) && !isSecretKey(privKey)) {
lg_addHandle(search,
lg_mkHandle(sdb,key_id,LG_TOKEN_TYPE_PUB));
found = PR_TRUE;
}
nsslowkey_DestroyPrivateKey(privKey);
}
/* don't do the traversal if we have an up to date db */
if (keyHandle->version != 3) {
goto loser;
}
/* don't do the traversal if it can't possibly be the correct id */
/* all soft token id's are SHA1_HASH_LEN's */
if (key_id->len != SHA1_LENGTH) {
goto loser;
}
if (found) {
/* if we already found some keys, don't do the traversal */
goto loser;
}
}
keyData.sdb = sdb;
keyData.keyHandle = keyHandle;
keyData.searchHandles = search;
keyData.id = key_id;
keyData.template = pTemplate;
keyData.templ_count = ulCount;
keyData.classFlags = classFlags;
keyData.strict = mustStrict ? mustStrict : LG_STRICT;
nsslowkey_TraverseKeys(keyHandle, lg_key_collect, &keyData);
loser:
return;
}
/*
* structure to collect certs into
*/
typedef struct lgCertDataStr {
SDB *sdb;
int cert_count;
int max_cert_count;
NSSLOWCERTCertificate **certs;
const CK_ATTRIBUTE *template;
CK_ULONG templ_count;
unsigned long classFlags;
PRBool strict;
} lgCertData;
/*
* collect all the certs from the traverse call.
*/
static SECStatus
lg_cert_collect(NSSLOWCERTCertificate *cert,void *arg)
{
lgCertData *cd = (lgCertData *)arg;
if (cert == NULL) {
return SECSuccess;
}
if (cd->certs == NULL) {
return SECFailure;
}
if (cd->strict) {
if ((cd->classFlags & LG_CERT) && !lg_tokenMatch(cd->sdb,
&cert->certKey, LG_TOKEN_TYPE_CERT, cd->template,cd->templ_count)) {
return SECSuccess;
}
if ((cd->classFlags & LG_TRUST) && !lg_tokenMatch(cd->sdb,
&cert->certKey, LG_TOKEN_TYPE_TRUST,
cd->template, cd->templ_count)) {
return SECSuccess;
}
}
/* allocate more space if we need it. This should only happen in
* the general traversal case */
if (cd->cert_count >= cd->max_cert_count) {
int size;
cd->max_cert_count += LG_SEARCH_BLOCK_SIZE;
size = cd->max_cert_count * sizeof (NSSLOWCERTCertificate *);
cd->certs = (NSSLOWCERTCertificate **)PORT_Realloc(cd->certs,size);
if (cd->certs == NULL) {
return SECFailure;
}
}
cd->certs[cd->cert_count++] = nsslowcert_DupCertificate(cert);
return SECSuccess;
}
/* provide impedence matching ... */
static SECStatus
lg_cert_collect2(NSSLOWCERTCertificate *cert, SECItem *dymmy, void *arg)
{
return lg_cert_collect(cert, arg);
}
static void
lg_searchSingleCert(lgCertData *certData,NSSLOWCERTCertificate *cert)
{
if (cert == NULL) {
return;
}
if (certData->strict &&
!lg_tokenMatch(certData->sdb, &cert->certKey, LG_TOKEN_TYPE_CERT,
certData->template,certData->templ_count)) {
nsslowcert_DestroyCertificate(cert);
return;
}
certData->certs = (NSSLOWCERTCertificate **)
PORT_Alloc(sizeof (NSSLOWCERTCertificate *));
if (certData->certs == NULL) {
nsslowcert_DestroyCertificate(cert);
return;
}
certData->certs[0] = cert;
certData->cert_count = 1;
}
static void
lg_CertSetupData(lgCertData *certData,int count)
{
certData->max_cert_count = count;
if (certData->max_cert_count <= 0) {
return;
}
certData->certs = (NSSLOWCERTCertificate **)
PORT_Alloc( count * sizeof(NSSLOWCERTCertificate *));
return;
}
static void
lg_searchCertsAndTrust(SDB *sdb, SECItem *derCert, SECItem *name,
SECItem *derSubject, NSSLOWCERTIssuerAndSN *issuerSN,
SECItem *email,
unsigned long classFlags, SDBFind *handles,
const CK_ATTRIBUTE *pTemplate, CK_LONG ulCount)
{
NSSLOWCERTCertDBHandle *certHandle = NULL;
lgCertData certData;
int i;
certHandle = lg_getCertDB(sdb);
if (certHandle == NULL) return;
certData.sdb = sdb;
certData.max_cert_count = 0;
certData.certs = NULL;
certData.cert_count = 0;
certData.template = pTemplate;
certData.templ_count = ulCount;
certData.classFlags = classFlags;
certData.strict = LG_STRICT;
/*
* Find the Cert.
*/
if (derCert->data != NULL) {
NSSLOWCERTCertificate *cert =
nsslowcert_FindCertByDERCert(certHandle,derCert);
lg_searchSingleCert(&certData,cert);
} else if (name->data != NULL) {
char *tmp_name = (char*)PORT_Alloc(name->len+1);
int count;
if (tmp_name == NULL) {
return;
}
PORT_Memcpy(tmp_name,name->data,name->len);
tmp_name[name->len] = 0;
count= nsslowcert_NumPermCertsForNickname(certHandle,tmp_name);
lg_CertSetupData(&certData,count);
nsslowcert_TraversePermCertsForNickname(certHandle,tmp_name,
lg_cert_collect, &certData);
PORT_Free(tmp_name);
} else if (derSubject->data != NULL) {
int count;
count = nsslowcert_NumPermCertsForSubject(certHandle,derSubject);
lg_CertSetupData(&certData,count);
nsslowcert_TraversePermCertsForSubject(certHandle,derSubject,
lg_cert_collect, &certData);
} else if ((issuerSN->derIssuer.data != NULL) &&
(issuerSN->serialNumber.data != NULL)) {
if (classFlags & LG_CERT) {
NSSLOWCERTCertificate *cert =
nsslowcert_FindCertByIssuerAndSN(certHandle,issuerSN);
lg_searchSingleCert(&certData,cert);
}
if (classFlags & LG_TRUST) {
NSSLOWCERTTrust *trust =
nsslowcert_FindTrustByIssuerAndSN(certHandle, issuerSN);
if (trust) {
lg_addHandle(handles,
lg_mkHandle(sdb,&trust->dbKey,LG_TOKEN_TYPE_TRUST));
nsslowcert_DestroyTrust(trust);
}
}
} else if (email->data != NULL) {
char *tmp_name = (char*)PORT_Alloc(email->len+1);
certDBEntrySMime *entry = NULL;
if (tmp_name == NULL) {
return;
}
PORT_Memcpy(tmp_name,email->data,email->len);
tmp_name[email->len] = 0;
entry = nsslowcert_ReadDBSMimeEntry(certHandle,tmp_name);
if (entry) {
int count;
SECItem *subjectName = &entry->subjectName;
count = nsslowcert_NumPermCertsForSubject(certHandle, subjectName);
lg_CertSetupData(&certData,count);
nsslowcert_TraversePermCertsForSubject(certHandle, subjectName,
lg_cert_collect, &certData);
nsslowcert_DestroyDBEntry((certDBEntry *)entry);
}
PORT_Free(tmp_name);
} else {
/* we aren't filtering the certs, we are working on all, so turn
* on the strict filters. */
certData.strict = PR_TRUE;
lg_CertSetupData(&certData,LG_SEARCH_BLOCK_SIZE);
nsslowcert_TraversePermCerts(certHandle, lg_cert_collect2, &certData);
}
/*
* build the handles
*/
for (i=0 ; i < certData.cert_count ; i++) {
NSSLOWCERTCertificate *cert = certData.certs[i];
/* if we filtered it would have been on the stuff above */
if (classFlags & LG_CERT) {
lg_addHandle(handles,
lg_mkHandle(sdb,&cert->certKey,LG_TOKEN_TYPE_CERT));
}
if ((classFlags & LG_TRUST) && nsslowcert_hasTrust(cert->trust)) {
lg_addHandle(handles,
lg_mkHandle(sdb,&cert->certKey,LG_TOKEN_TYPE_TRUST));
}
nsslowcert_DestroyCertificate(cert);
}
if (certData.certs) PORT_Free(certData.certs);
return;
}
static SECStatus
lg_smime_collect(SECItem *data, SECItem *key, certDBEntryType type, void *arg)
{
lgEntryData *smimeData;
SDB *sdb;
smimeData = (lgEntryData *)arg;
sdb = smimeData->sdb;
if (lg_tokenMatch(sdb, key, LG_TOKEN_TYPE_SMIME,
smimeData->template, smimeData->templ_count)) {
lg_addHandle(smimeData->searchHandles,
lg_mkHandle(sdb,key,LG_TOKEN_TYPE_SMIME));
}
return(SECSuccess);
}
static void
lg_searchSMime(SDB *sdb, SECItem *email, SDBFind *handles,
const CK_ATTRIBUTE *pTemplate, CK_LONG ulCount)
{
NSSLOWCERTCertDBHandle *certHandle = NULL;
certDBEntrySMime *entry;
certHandle = lg_getCertDB(sdb);
if (certHandle == NULL) return;
if (email->data != NULL) {
char *tmp_name = (char*)PORT_Alloc(email->len+1);
if (tmp_name == NULL) {
return;
}
PORT_Memcpy(tmp_name,email->data,email->len);
tmp_name[email->len] = 0;
entry = nsslowcert_ReadDBSMimeEntry(certHandle,tmp_name);
if (entry) {
SECItem emailKey;
emailKey.data = (unsigned char *)tmp_name;
emailKey.len = PORT_Strlen(tmp_name)+1;
emailKey.type = 0;
lg_addHandle(handles,
lg_mkHandle(sdb,&emailKey,LG_TOKEN_TYPE_SMIME));
nsslowcert_DestroyDBEntry((certDBEntry *)entry);
}
PORT_Free(tmp_name);
} else {
/* traverse */
lgEntryData smimeData;
/* traverse */
smimeData.sdb = sdb;
smimeData.searchHandles = handles;
smimeData.template = pTemplate;
smimeData.templ_count = ulCount;
nsslowcert_TraverseDBEntries(certHandle, certDBEntryTypeSMimeProfile,
lg_smime_collect, (void *)&smimeData);
}
return;
}
static CK_RV
lg_searchTokenList(SDB *sdb, SDBFind *search,
const CK_ATTRIBUTE *pTemplate, CK_LONG ulCount)
{
int i;
PRBool isKrl = PR_FALSE;
SECItem derCert = { siBuffer, NULL, 0 };
SECItem derSubject = { siBuffer, NULL, 0 };
SECItem name = { siBuffer, NULL, 0 };
SECItem email = { siBuffer, NULL, 0 };
SECItem key_id = { siBuffer, NULL, 0 };
SECItem cert_sha1_hash = { siBuffer, NULL, 0 };
SECItem cert_md5_hash = { siBuffer, NULL, 0 };
NSSLOWCERTIssuerAndSN issuerSN = {
{ siBuffer, NULL, 0 },
{ siBuffer, NULL, 0 }
};
SECItem *copy = NULL;
CK_CERTIFICATE_TYPE certType;
CK_OBJECT_CLASS objectClass;
CK_RV crv;
unsigned long classFlags =
LG_CERT|LG_TRUST|LG_PRIVATE|LG_PUBLIC|LG_KEY|LG_SMIME|LG_CRL;
if (lg_getCertDB(sdb) == NULL) {
classFlags = LG_PRIVATE|LG_KEY;
} else {
classFlags = LG_CERT|LG_TRUST|LG_PUBLIC|LG_SMIME|LG_CRL;
}
/*
* look for things to search on token objects for. If the right options
* are specified, we can use them as direct indeces into the database
* (rather than using linear searches. We can also use the attributes to
* limit the kinds of objects we are searching for. Later we can use this
* array to filter the remaining objects more finely.
*/
for (i=0 ;classFlags && i < (int)ulCount; i++) {
switch (pTemplate[i].type) {
case CKA_SUBJECT:
copy = &derSubject;
classFlags &= (LG_CERT|LG_PRIVATE|LG_PUBLIC|LG_SMIME|LG_CRL);
break;
case CKA_ISSUER:
copy = &issuerSN.derIssuer;
classFlags &= (LG_CERT|LG_TRUST);
break;
case CKA_SERIAL_NUMBER:
copy = &issuerSN.serialNumber;
classFlags &= (LG_CERT|LG_TRUST);
break;
case CKA_VALUE:
copy = &derCert;
classFlags &= (LG_CERT|LG_CRL|LG_SMIME);
break;
case CKA_LABEL:
copy = &name;
break;
case CKA_NETSCAPE_EMAIL:
copy = &email;
classFlags &= LG_SMIME|LG_CERT;
break;
case CKA_NETSCAPE_SMIME_TIMESTAMP:
classFlags &= LG_SMIME;
break;
case CKA_CLASS:
crv = lg_GetULongAttribute(CKA_CLASS,&pTemplate[i],1, &objectClass);
if (crv != CKR_OK) {
classFlags = 0;
break;;
}
switch (objectClass) {
case CKO_CERTIFICATE:
classFlags &= LG_CERT;
break;
case CKO_NETSCAPE_TRUST:
classFlags &= LG_TRUST;
break;
case CKO_NETSCAPE_CRL:
classFlags &= LG_CRL;
break;
case CKO_NETSCAPE_SMIME:
classFlags &= LG_SMIME;
break;
case CKO_PRIVATE_KEY:
classFlags &= LG_PRIVATE;
break;
case CKO_PUBLIC_KEY:
classFlags &= LG_PUBLIC;
break;
case CKO_SECRET_KEY:
classFlags &= LG_KEY;
break;
default:
classFlags = 0;
break;
}
break;
case CKA_PRIVATE:
if (pTemplate[i].ulValueLen != sizeof(CK_BBOOL)) {
classFlags = 0;
}
if (*((CK_BBOOL *)pTemplate[i].pValue) == CK_TRUE) {
classFlags &= (LG_PRIVATE|LG_KEY);
} else {
classFlags &= ~(LG_PRIVATE|LG_KEY);
}
break;
case CKA_SENSITIVE:
if (pTemplate[i].ulValueLen != sizeof(CK_BBOOL)) {
classFlags = 0;
}
if (*((CK_BBOOL *)pTemplate[i].pValue) == CK_TRUE) {
classFlags &= (LG_PRIVATE|LG_KEY);
} else {
classFlags = 0;
}
break;
case CKA_TOKEN:
if (pTemplate[i].ulValueLen != sizeof(CK_BBOOL)) {
classFlags = 0;
}
if (*((CK_BBOOL *)pTemplate[i].pValue) != CK_TRUE) {
classFlags = 0;
}
break;
case CKA_CERT_SHA1_HASH:
classFlags &= LG_TRUST;
copy = &cert_sha1_hash; break;
case CKA_CERT_MD5_HASH:
classFlags &= LG_TRUST;
copy = &cert_md5_hash; break;
case CKA_CERTIFICATE_TYPE:
crv = lg_GetULongAttribute(CKA_CLASS,&pTemplate[i],1,&certType);
if (crv != CKR_OK) {
classFlags = 0;
}
classFlags &= LG_CERT;
if (certType != CKC_X_509) {
classFlags = 0;
}
break;
case CKA_ID:
copy = &key_id;
classFlags &= (LG_CERT|LG_PRIVATE|LG_KEY|LG_PUBLIC);
break;
case CKA_NETSCAPE_KRL:
if (pTemplate[i].ulValueLen != sizeof(CK_BBOOL)) {
classFlags = 0;
}
classFlags &= LG_CRL;
isKrl = (PRBool)(*((CK_BBOOL *)pTemplate[i].pValue) == CK_TRUE);
break;
case CKA_MODIFIABLE:
break;
case CKA_KEY_TYPE:
case CKA_DERIVE:
classFlags &= LG_PUBLIC|LG_PRIVATE|LG_KEY;
break;
case CKA_VERIFY_RECOVER:
classFlags &= LG_PUBLIC;
break;
case CKA_SIGN_RECOVER:
classFlags &= LG_PRIVATE;
break;
case CKA_ENCRYPT:
case CKA_VERIFY:
case CKA_WRAP:
classFlags &= LG_PUBLIC|LG_KEY;
break;
case CKA_DECRYPT:
case CKA_SIGN:
case CKA_UNWRAP:
case CKA_ALWAYS_SENSITIVE:
case CKA_EXTRACTABLE:
case CKA_NEVER_EXTRACTABLE:
classFlags &= LG_PRIVATE|LG_KEY;
break;
/* can't be a certificate if it doesn't match one of the above
* attributes */
default:
classFlags = 0;
break;
}
if (copy) {
copy->data = (unsigned char*)pTemplate[i].pValue;
copy->len = pTemplate[i].ulValueLen;
}
copy = NULL;
}
/* certs */
if (classFlags & (LG_CERT|LG_TRUST)) {
lg_searchCertsAndTrust(sdb,&derCert,&name,&derSubject,
&issuerSN, &email,classFlags,search,
pTemplate, ulCount);
}
/* keys */
if (classFlags & (LG_PRIVATE|LG_PUBLIC|LG_KEY)) {
PRBool mustStrict = ((classFlags & LG_KEY) != 0) && (name.len != 0);
lg_searchKeys(sdb, &key_id, classFlags, search,
mustStrict, pTemplate, ulCount);
}
/* crl's */
if (classFlags & LG_CRL) {
lg_searchCrls(sdb, &derSubject, isKrl, classFlags, search,
pTemplate, ulCount);
}
/* Add S/MIME entry stuff */
if (classFlags & LG_SMIME) {
lg_searchSMime(sdb, &email, search, pTemplate, ulCount);
}
return CKR_OK;
}
/* lg_FindObjectsInit initializes a search for token and session objects
* that match a template. */
CK_RV lg_FindObjectsInit(SDB *sdb, const CK_ATTRIBUTE *pTemplate,
CK_ULONG ulCount, SDBFind **retSearch)
{
SDBFind *search;
CK_RV crv = CKR_OK;
*retSearch = NULL;
search = (SDBFind *)PORT_Alloc(sizeof(SDBFind));
if (search == NULL) {
crv = CKR_HOST_MEMORY;
goto loser;
}
search->handles = (CK_OBJECT_HANDLE *)
PORT_Alloc(sizeof(CK_OBJECT_HANDLE) * LG_SEARCH_BLOCK_SIZE);
if (search->handles == NULL) {
crv = CKR_HOST_MEMORY;
goto loser;
}
search->index = 0;
search->size = 0;
search->array_size = LG_SEARCH_BLOCK_SIZE;
/* FIXME - do we still need to get Login state? */
crv = lg_searchTokenList(sdb, search, pTemplate, ulCount);
if (crv != CKR_OK) {
goto loser;
}
*retSearch = search;
return CKR_OK;
loser:
if (search) {
lg_FreeSearch(search);
}
return crv;
}
/* lg_FindObjects continues a search for token and session objects
* that match a template, obtaining additional object handles. */
CK_RV lg_FindObjects(SDB *sdb, SDBFind *search,
CK_OBJECT_HANDLE *phObject,CK_ULONG ulMaxObjectCount,
CK_ULONG *pulObjectCount)
{
int transfer;
int left;
*pulObjectCount = 0;
left = search->size - search->index;
transfer = ((int)ulMaxObjectCount > left) ? left : ulMaxObjectCount;
if (transfer > 0) {
PORT_Memcpy(phObject,&search->handles[search->index],
transfer*sizeof(CK_OBJECT_HANDLE_PTR));
} else {
*phObject = CK_INVALID_HANDLE;
}
search->index += transfer;
*pulObjectCount = transfer;
return CKR_OK;
}
/* lg_FindObjectsFinal finishes a search for token and session objects. */
CK_RV lg_FindObjectsFinal(SDB* lgdb, SDBFind *search)
{
if (search != NULL) {
lg_FreeSearch(search);
}
return CKR_OK;
}

View File

@@ -0,0 +1,644 @@
/*
* NSS utility functions
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: lginit.c,v 1.1.2.1 2007-04-03 22:50:02 rrelyea%redhat.com Exp $ */
#include "lowkeyi.h"
#include "pcert.h"
#include "keydbi.h"
#include "lgdb.h"
typedef struct LGPrivateStr {
NSSLOWCERTCertDBHandle *certDB;
NSSLOWKEYDBHandle *keyDB;
PRLock *dbLock;
PLHashTable *hashTable;
} LGPrivate;
static char *
lg_certdb_name_cb(void *arg, int dbVersion)
{
const char *configdir = (const char *)arg;
const char *dbver;
char *smpname = NULL;
char *dbname = NULL;
switch (dbVersion) {
case 8:
dbver = "8";
break;
case 7:
dbver = "7";
break;
case 6:
dbver = "6";
break;
case 5:
dbver = "5";
break;
case 4:
default:
dbver = "";
break;
}
/* make sure we return something allocated with PORT_ so we have properly
* matched frees at the end */
smpname = PR_smprintf(CERT_DB_FMT, configdir, dbver);
if (smpname) {
dbname = PORT_Strdup(smpname);
PR_smprintf_free(smpname);
}
return dbname;
}
static char *
lg_keydb_name_cb(void *arg, int dbVersion)
{
const char *configdir = (const char *)arg;
const char *dbver;
char *smpname = NULL;
char *dbname = NULL;
switch (dbVersion) {
case 4:
dbver = "4";
break;
case 3:
dbver = "3";
break;
case 1:
dbver = "1";
break;
case 2:
default:
dbver = "";
break;
}
smpname = PR_smprintf(KEY_DB_FMT, configdir, dbver);
if (smpname) {
dbname = PORT_Strdup(smpname);
PR_smprintf_free(smpname);
}
return dbname;
}
const char *
lg_EvaluateConfigDir(const char *configdir,char **appName)
{
if (PORT_Strncmp(configdir, MULTIACCESS, sizeof(MULTIACCESS)-1) == 0) {
char *cdir;
*appName = PORT_Strdup(configdir+sizeof(MULTIACCESS)-1);
if (*appName == NULL) {
return configdir;
}
cdir = *appName;
while (*cdir && *cdir != ':') {
cdir++;
}
if (*cdir == ':') {
*cdir = 0;
cdir++;
}
configdir = cdir;
}
return configdir;
}
static int rdbmapflags(int flags);
static rdbfunc lg_rdbfunc = NULL;
static rdbstatusfunc lg_rdbstatusfunc = NULL;
/* NOTE: SHLIB_SUFFIX is defined on the command line */
#define RDBLIB SHLIB_PREFIX"rdb."SHLIB_SUFFIX
DB * rdbopen(const char *appName, const char *prefix,
const char *type, int flags, int *status)
{
PRLibrary *lib;
DB *db;
if (lg_rdbfunc) {
db = (*lg_rdbfunc)(appName,prefix,type,rdbmapflags(flags));
if (!db && status && lg_rdbstatusfunc) {
*status = (*lg_rdbstatusfunc)();
}
return db;
}
/*
* try to open the library.
*/
lib = PR_LoadLibrary(RDBLIB);
if (!lib) {
return NULL;
}
/* get the entry points */
lg_rdbstatusfunc = (rdbstatusfunc) PR_FindSymbol(lib,"rdbstatus");
lg_rdbfunc = (rdbfunc) PR_FindSymbol(lib,"rdbopen");
if (lg_rdbfunc) {
db = (*lg_rdbfunc)(appName,prefix,type,rdbmapflags(flags));
if (!db && status && lg_rdbstatusfunc) {
*status = (*lg_rdbstatusfunc)();
}
return db;
}
/* couldn't find the entry point, unload the library and fail */
PR_UnloadLibrary(lib);
return NULL;
}
/*
* the following data structures are from rdb.h.
*/
struct RDBStr {
DB db;
int (*xactstart)(DB *db);
int (*xactdone)(DB *db, PRBool abort);
int version;
int (*dbinitcomplete)(DB *db);
};
#define DB_RDB ((DBTYPE) 0xff)
#define RDB_RDONLY 1
#define RDB_RDWR 2
#define RDB_CREATE 4
static int
rdbmapflags(int flags) {
switch (flags) {
case NO_RDONLY:
return RDB_RDONLY;
case NO_RDWR:
return RDB_RDWR;
case NO_CREATE:
return RDB_CREATE;
default:
break;
}
return 0;
}
PRBool
db_IsRDB(DB *db)
{
return (PRBool) db->type == DB_RDB;
}
int
db_BeginTransaction(DB *db)
{
struct RDBStr *rdb = (struct RDBStr *)db;
if (db->type != DB_RDB) {
return 0;
}
return rdb->xactstart(db);
}
int
db_FinishTransaction(DB *db, PRBool abort)
{
struct RDBStr *rdb = (struct RDBStr *)db;
if (db->type != DB_RDB) {
return 0;
}
return rdb->xactdone(db, abort);
}
static DB *
lg_getRawDB(SDB *sdb)
{
NSSLOWCERTCertDBHandle *certDB;
NSSLOWKEYDBHandle *keyDB;
certDB = lg_getCertDB(sdb);
if (certDB) {
return certDB->permCertDB;
}
keyDB = lg_getKeyDB(sdb);
if (keyDB) {
return keyDB->db;
}
return NULL;
}
CK_RV
lg_Begin(SDB *sdb)
{
DB *db = lg_getRawDB(sdb);
int ret;
if (db == NULL) {
return CKR_GENERAL_ERROR; /* shouldn't happen */
}
ret = db_BeginTransaction(db);
if (ret != 0) {
return CKR_GENERAL_ERROR; /* could happen */
}
return CKR_OK;
}
CK_RV
lg_Commit(SDB *sdb)
{
DB *db = lg_getRawDB(sdb);
int ret;
if (db == NULL) {
return CKR_GENERAL_ERROR; /* shouldn't happen */
}
ret = db_FinishTransaction(db, PR_FALSE);
if (ret != 0) {
return CKR_GENERAL_ERROR; /* could happen */
}
return CKR_OK;
}
CK_RV
lg_Abort(SDB *sdb)
{
DB *db = lg_getRawDB(sdb);
int ret;
if (db == NULL) {
return CKR_GENERAL_ERROR; /* shouldn't happen */
}
ret = db_FinishTransaction(db, PR_TRUE);
if (ret != 0) {
return CKR_GENERAL_ERROR; /* could happen */
}
return CKR_OK;
}
int
db_InitComplete(DB *db)
{
struct RDBStr *rdb = (struct RDBStr *)db;
if (db->type != DB_RDB) {
return 0;
}
/* we should have added a version number to the RDBS structure. Since we
* didn't, we detect that we have and 'extended' structure if the rdbstatus
* func exists */
if (!lg_rdbstatusfunc) {
return 0;
}
return rdb->dbinitcomplete(db);
}
SECStatus
db_Copy(DB *dest,DB *src)
{
int ret;
DBT key,data;
ret = (*src->seq)(src, &key, &data, R_FIRST);
if (ret) {
return SECSuccess;
}
do {
(void)(*dest->put)(dest,&key,&data, R_NOOVERWRITE);
} while ( (*src->seq)(src, &key, &data, R_NEXT) == 0);
(void)(*dest->sync)(dest,0);
return SECSuccess;
}
static CK_RV
lg_OpenCertDB(const char * configdir, const char *prefix, PRBool readOnly,
NSSLOWCERTCertDBHandle **certdbPtr)
{
NSSLOWCERTCertDBHandle *certdb = NULL;
CK_RV crv = CKR_NETSCAPE_CERTDB_FAILED;
SECStatus rv;
char * name = NULL;
char * appName = NULL;
if (prefix == NULL) {
prefix = "";
}
configdir = lg_EvaluateConfigDir(configdir, &appName);
name = PR_smprintf("%s" PATH_SEPARATOR "%s",configdir,prefix);
if (name == NULL) goto loser;
certdb = (NSSLOWCERTCertDBHandle*)PORT_ZAlloc(sizeof(NSSLOWCERTCertDBHandle));
if (certdb == NULL)
goto loser;
certdb->ref = 1;
/* fix when we get the DB in */
rv = nsslowcert_OpenCertDB(certdb, readOnly, appName, prefix,
lg_certdb_name_cb, (void *)name, PR_FALSE);
if (rv == SECSuccess) {
crv = CKR_OK;
*certdbPtr = certdb;
certdb = NULL;
}
loser:
if (certdb) PR_Free(certdb);
if (name) PR_smprintf_free(name);
if (appName) PORT_Free(appName);
return crv;
}
static CK_RV
lg_OpenKeyDB(const char * configdir, const char *prefix, PRBool readOnly,
NSSLOWKEYDBHandle **keydbPtr)
{
NSSLOWKEYDBHandle *keydb;
char * name = NULL;
char * appName = NULL;
if (prefix == NULL) {
prefix = "";
}
configdir = lg_EvaluateConfigDir(configdir, &appName);
name = PR_smprintf("%s" PATH_SEPARATOR "%s",configdir,prefix);
if (name == NULL)
return CKR_HOST_MEMORY;
keydb = nsslowkey_OpenKeyDB(readOnly, appName, prefix,
lg_keydb_name_cb, (void *)name);
PR_smprintf_free(name);
if (appName) PORT_Free(appName);
if (keydb == NULL)
return CKR_NETSCAPE_KEYDB_FAILED;
*keydbPtr = keydb;
return CKR_OK;
}
/*
* Accessors for the private parts of the sdb structure.
*/
void
lg_DBLock(SDB *sdb)
{
LGPrivate *lgdb_p = (LGPrivate *)sdb->private;
PR_Lock(lgdb_p->dbLock);
}
void
lg_DBUnlock(SDB *sdb)
{
LGPrivate *lgdb_p = (LGPrivate *)sdb->private;
PR_Unlock(lgdb_p->dbLock);
}
PLHashTable *
lg_GetHashTable(SDB *sdb)
{
LGPrivate *lgdb_p = (LGPrivate *)sdb->private;
return lgdb_p->hashTable;
}
NSSLOWCERTCertDBHandle *
lg_getCertDB(SDB *sdb)
{
LGPrivate *lgdb_p = (LGPrivate *)sdb->private;
return lgdb_p->certDB;
}
NSSLOWKEYDBHandle *
lg_getKeyDB(SDB *sdb)
{
LGPrivate *lgdb_p = (LGPrivate *)sdb->private;
return lgdb_p->keyDB;
}
CK_RV
lg_Close(SDB *sdb)
{
LGPrivate *lgdb_p = (LGPrivate *)sdb->private;
if (lgdb_p) {
if (lgdb_p->certDB) {
nsslowcert_ClosePermCertDB(lgdb_p->certDB);
} else if (lgdb_p->keyDB) {
nsslowkey_CloseKeyDB(lgdb_p->keyDB);
}
if (lgdb_p->dbLock) {
PR_DestroyLock(lgdb_p->dbLock);
}
if (lgdb_p->hashTable) {
PL_HashTableDestroy(lgdb_p->hashTable);
}
PORT_Free(lgdb_p);
}
PORT_Free(sdb);
return CKR_OK;
}
static PLHashNumber
lg_HashNumber(const void *key)
{
return (PLHashNumber) key;
}
/*
* helper function to wrap a NSSLOWCERTCertDBHandle or a NSSLOWKEYDBHandle
* with and sdb structure.
*/
CK_RV
lg_init(SDB **pSdb, int flags, NSSLOWCERTCertDBHandle *certdbPtr,
NSSLOWKEYDBHandle *keydbPtr)
{
SDB *sdb = NULL;
LGPrivate *lgdb_p = NULL;
CK_RV error = CKR_HOST_MEMORY;
*pSdb = NULL;
sdb = (SDB *) PORT_Alloc(sizeof(SDB));
if (sdb == NULL) {
goto loser;
}
lgdb_p = (LGPrivate *) PORT_Alloc(sizeof(LGPrivate));
if (lgdb_p == NULL) {
goto loser;
}
/* invariant fields */
lgdb_p->certDB = certdbPtr;
lgdb_p->keyDB = keydbPtr;
lgdb_p->dbLock = PR_NewLock();
if (lgdb_p->dbLock == NULL) {
goto loser;
}
lgdb_p->hashTable = PL_NewHashTable(64, lg_HashNumber, PL_CompareValues,
SECITEM_HashCompare, NULL, 0);
if (lgdb_p->hashTable == NULL) {
goto loser;
}
sdb->sdb_type = SDB_LEGACY;
sdb->sdb_flags = flags;
sdb->private = lgdb_p;
sdb->sdb_FindObjectsInit = lg_FindObjectsInit;
sdb->sdb_FindObjects = lg_FindObjects;
sdb->sdb_FindObjectsFinal = lg_FindObjectsFinal;
sdb->sdb_GetAttributeValue = lg_GetAttributeValue;
sdb->sdb_SetAttributeValue = lg_SetAttributeValue;
sdb->sdb_CreateObject = lg_CreateObject;
sdb->sdb_DestroyObject = lg_DestroyObject;
sdb->sdb_GetPWEntry = lg_GetPWEntry;
sdb->sdb_PutPWEntry = lg_PutPWEntry;
sdb->sdb_Begin = lg_Begin;
sdb->sdb_Commit = lg_Commit;
sdb->sdb_Abort = lg_Abort;
sdb->sdb_Close = lg_Reset;
sdb->sdb_Close = lg_Close;
*pSdb = sdb;
return CKR_OK;
loser:
if (sdb) {
PORT_Free(sdb);
}
if (lgdb_p) {
if (lgdb_p->dbLock) {
PR_DestroyLock(lgdb_p->dbLock);
}
if (lgdb_p->hashTable) {
PL_HashTableDestroy(lgdb_p->hashTable);
}
PORT_Free(lgdb_p);
}
return error;
}
extern SECStatus secoid_Init(void); /* util *REALLY* needs
* to be a shared library */
/*
* OK there are now lots of options here, lets go through them all:
*
* configdir - base directory where all the cert, key, and module datbases live.
* certPrefix - prefix added to the beginning of the cert database example: "
* "https-server1-"
* keyPrefix - prefix added to the beginning of the key database example: "
* "https-server1-"
* secmodName - name of the security module database (usually "secmod.db").
* readOnly - Boolean: true if the databases are to be openned read only.
* nocertdb - Don't open the cert DB and key DB's, just initialize the
* Volatile certdb.
* nomoddb - Don't open the security module DB, just initialize the
* PKCS #11 module.
* forceOpen - Continue to force initializations even if the databases cannot
* be opened.
*/
CK_RV
legacy_Open(const char *configdir, const char *certPrefix,
const char *keyPrefix, int certVersion, int keyVersion,
int flags, SDB **certDB, SDB **keyDB)
{
CK_RV crv = CKR_OK;
PRBool readOnly = (flags == SDB_RDONLY)? PR_TRUE: PR_FALSE;
secoid_Init();
nsslowcert_InitLocks();
if (keyDB) *keyDB = NULL;
if (certDB) *certDB = NULL;
if (certDB) {
NSSLOWCERTCertDBHandle *certdbPtr;
crv = lg_OpenCertDB(configdir, certPrefix, readOnly, &certdbPtr);
if (crv != CKR_OK) {
goto loser;
}
crv = lg_init(certDB, flags, certdbPtr, NULL);
if (crv != CKR_OK) {
nsslowcert_ClosePermCertDB(certdbPtr);
goto loser;
}
}
if (keyDB) {
NSSLOWKEYDBHandle *keydbPtr;
crv = lg_OpenKeyDB(configdir, keyPrefix, readOnly, &keydbPtr);
if (crv != CKR_OK) {
goto loser;
}
crv = lg_init(keyDB, flags, NULL, keydbPtr);
if (crv != CKR_OK) {
nsslowkey_CloseKeyDB(keydbPtr);
goto loser;
}
if (certDB && *certDB) {
LGPrivate *lgdb_p = (LGPrivate *)(*certDB)->private;
lgdb_p->keyDB = keydbPtr;
}
}
loser:
if (crv != CKR_OK) {
if (keyDB && *keyDB) {
lg_Close(*keyDB);
*keyDB = NULL;
}
if (certDB && *certDB) {
lg_Close(*certDB);
*certDB = NULL;
}
}
return crv;
}
CK_RV
legacy_Shutdown(void)
{
nsslowcert_DestroyFreeLists();
nsslowcert_DestroyGlobalLocks();
}

View File

@@ -0,0 +1,424 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "lgdb.h"
#include "secerr.h"
#include "lgglue.h"
/*
* ******************** Attribute Utilities *******************************
*/
/*
* look up and attribute structure from a type and Object structure.
* The returned attribute is referenced and needs to be freed when
* it is no longer needed.
*/
const CK_ATTRIBUTE *
lg_FindAttribute(CK_ATTRIBUTE_TYPE type, const CK_ATTRIBUTE *templ,
CK_ULONG count )
{
int i;
for (i=0; i < count; i++) {
if (templ[i].type == type) {
return &templ[i];
}
}
return NULL;
}
/*
* return true if object has attribute
*/
PRBool
lg_hasAttribute(CK_ATTRIBUTE_TYPE type, const CK_ATTRIBUTE *templ,
CK_ULONG count )
{
if (lg_FindAttribute(type, templ, count) == NULL) {
return PR_FALSE;
}
return PR_TRUE;
}
/*
* copy an attribute into a SECItem. Secitem is allocated in the specified
* arena.
*/
CK_RV
lg_Attribute2SecItem(PLArenaPool *arena, CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item)
{
int len;
const CK_ATTRIBUTE *attribute;
attribute = lg_FindAttribute(type, templ, count);
if (attribute == NULL) return CKR_TEMPLATE_INCOMPLETE;
len = attribute->ulValueLen;
if (arena) {
item->data = (unsigned char *) PORT_ArenaAlloc(arena,len);
} else {
item->data = (unsigned char *) PORT_Alloc(len);
}
if (item->data == NULL) {
return CKR_HOST_MEMORY;
}
item->len = len;
PORT_Memcpy(item->data, attribute->pValue, len);
return CKR_OK;
}
/*
* copy an unsigned attribute into a SECItem. Secitem is allocated in
* the specified arena.
*/
CK_RV
lg_Attribute2SSecItem(PLArenaPool *arena, CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item)
{
const CK_ATTRIBUTE *attribute;
item->data = NULL;
attribute = lg_FindAttribute(type, templ, count);
if (attribute == NULL) return CKR_TEMPLATE_INCOMPLETE;
(void)SECITEM_AllocItem(arena, item, attribute->ulValueLen);
if (item->data == NULL) {
return CKR_HOST_MEMORY;
}
PORT_Memcpy(item->data, attribute->pValue, item->len);
return CKR_OK;
}
/*
* copy an unsigned attribute into a SECItem. Secitem is allocated in
* the specified arena.
*/
CK_RV
lg_PrivAttr2SSecItem(PLArenaPool *arena, CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item, SDB *sdbpw)
{
const CK_ATTRIBUTE *attribute;
SECItem epki, *dest = NULL;
SECStatus rv;
item->data = NULL;
attribute = lg_FindAttribute(type, templ, count);
if (attribute == NULL) return CKR_TEMPLATE_INCOMPLETE;
epki.data = attribute->pValue;
epki.len = attribute->ulValueLen;
rv = lg_util_decrypt(sdbpw, &epki, &dest);
if (rv != SECSuccess) {
return CKR_USER_NOT_LOGGED_IN;
}
(void)SECITEM_AllocItem(arena, item, dest->len);
if (item->data == NULL) {
SECITEM_FreeItem(dest, PR_TRUE);
return CKR_HOST_MEMORY;
}
PORT_Memcpy(item->data, dest->data, item->len);
SECITEM_FreeItem(dest, PR_TRUE);
return CKR_OK;
}
CK_RV
lg_PrivAttr2SecItem(PLArenaPool *arena, CK_ATTRIBUTE_TYPE type,
const CK_ATTRIBUTE *templ, CK_ULONG count,
SECItem *item, SDB *sdbpw)
{
return lg_PrivAttr2SSecItem(arena, type, templ, count, item, sdbpw);
}
/*
* this is only valid for CK_BBOOL type attributes. Return the state
* of that attribute.
*/
PRBool
lg_isTrue(CK_ATTRIBUTE_TYPE type, const CK_ATTRIBUTE *templ, CK_ULONG count)
{
const CK_ATTRIBUTE *attribute;
PRBool tok = PR_FALSE;
attribute=lg_FindAttribute(type, templ, count);
if (attribute == NULL) { return PR_FALSE; }
tok = (PRBool)(*(CK_BBOOL *)attribute->pValue);
return tok;
}
/*
* return a null terminated string from attribute 'type'. This string
* is allocated and needs to be freed with PORT_Free() When complete.
*/
char *
lg_getString(CK_ATTRIBUTE_TYPE type, const CK_ATTRIBUTE *templ, CK_ULONG count)
{
const CK_ATTRIBUTE *attribute;
char *label = NULL;
attribute = lg_FindAttribute(type, templ, count);
if (attribute == NULL) return NULL;
if (attribute->pValue != NULL) {
label = (char *) PORT_Alloc(attribute->ulValueLen+1);
if (label == NULL) {
return NULL;
}
PORT_Memcpy(label,attribute->pValue, attribute->ulValueLen);
label[attribute->ulValueLen] = 0;
}
return label;
}
CK_RV
lg_GetULongAttribute(CK_ATTRIBUTE_TYPE type, const CK_ATTRIBUTE *templ,
CK_ULONG count, CK_ULONG *longData)
{
const CK_ATTRIBUTE *attribute;
CK_ULONG value = 0;
const unsigned char *data;
int i;
attribute = lg_FindAttribute(type, templ, count);
if (attribute == NULL) return CKR_TEMPLATE_INCOMPLETE;
if (attribute->ulValueLen != sizeof(CK_ULONG)) {
return CKR_ATTRIBUTE_VALUE_INVALID;
}
data = (const unsigned char *)attribute->pValue;
for (i=0; i < 4; i++) {
value |= (CK_ULONG)(data[i]) << ((3-i)*8);
}
*longData = value;
return CKR_OK;
}
/*
* ******************** Object Utilities *******************************
*/
SECStatus
lg_deleteTokenKeyByHandle(SDB *sdb, CK_OBJECT_HANDLE handle)
{
SECItem *item;
PRBool rem;
PLHashTable *hashTable= lg_GetHashTable(sdb);
item = (SECItem *)PL_HashTableLookup(hashTable, (void *)handle);
rem = PL_HashTableRemove(hashTable,(void *)handle) ;
if (rem && item) {
SECITEM_FreeItem(item,PR_TRUE);
}
return rem ? SECSuccess : SECFailure;
}
/* must be called holding lg_DBLock(sdb) */
static SECStatus
lg_addTokenKeyByHandle(SDB *sdb, CK_OBJECT_HANDLE handle, SECItem *key)
{
PLHashEntry *entry;
SECItem *item;
PLHashTable *hashTable= lg_GetHashTable(sdb);
item = SECITEM_DupItem(key);
if (item == NULL) {
return SECFailure;
}
entry = PL_HashTableAdd(hashTable,(void *)handle,item);
if (entry == NULL) {
SECITEM_FreeItem(item,PR_TRUE);
return SECFailure;
}
return SECSuccess;
}
/* must be called holding lg_DBLock(sdb) */
const SECItem *
lg_lookupTokenKeyByHandle(SDB *sdb, CK_OBJECT_HANDLE handle)
{
PLHashTable *hashTable= lg_GetHashTable(sdb);
return (const SECItem *)PL_HashTableLookup(hashTable, (void *)handle);
}
static PRIntn
lg_freeHashItem(PLHashEntry* entry, PRIntn index, void *arg)
{
SECItem *item = (SECItem *)entry->value;
SECITEM_FreeItem(item, PR_TRUE);
return HT_ENUMERATE_NEXT;
}
CK_RV
LG_ClearTokenKeyHashTable(SDB *sdb)
{
PLHashTable *hashTable;
lg_DBLock(sdb);
hashTable= lg_GetHashTable(sdb);
PL_HashTableEnumerateEntries(hashTable, lg_freeHashItem, NULL);
lg_DBLock(sdb);
return CKR_OK;
}
/*
* handle Token Object stuff
*/
static void
lg_XORHash(unsigned char *key, unsigned char *dbkey, int len)
{
int i;
PORT_Memset(key, 0, 4);
for (i=0; i < len-4; i += 4) {
key[0] ^= dbkey[i];
key[1] ^= dbkey[i+1];
key[2] ^= dbkey[i+2];
key[3] ^= dbkey[i+3];
}
}
/* Make a token handle for an object and record it so we can find it again */
CK_OBJECT_HANDLE
lg_mkHandle(SDB *sdb, SECItem *dbKey, CK_OBJECT_HANDLE class)
{
unsigned char hashBuf[4];
CK_OBJECT_HANDLE handle;
const SECItem *key;
handle = class;
/* there is only one KRL, use a fixed handle for it */
if (handle != LG_TOKEN_KRL_HANDLE) {
lg_XORHash(hashBuf,dbKey->data,dbKey->len);
handle = (hashBuf[0] << 24) | (hashBuf[1] << 16) |
(hashBuf[2] << 8) | hashBuf[3];
handle = class | (handle & ~(LG_TOKEN_TYPE_MASK|LG_TOKEN_MASK));
/* we have a CRL who's handle has randomly matched the reserved KRL
* handle, increment it */
if (handle == LG_TOKEN_KRL_HANDLE) {
handle++;
}
}
lg_DBLock(sdb);
while ((key = lg_lookupTokenKeyByHandle(sdb,handle)) != NULL) {
if (SECITEM_ItemsAreEqual(key,dbKey)) {
lg_DBUnlock(sdb);
return handle;
}
handle++;
}
lg_addTokenKeyByHandle(sdb,handle,dbKey);
lg_DBUnlock(sdb);
return handle;
}
PRBool
lg_poisonHandle(SDB *sdb, SECItem *dbKey, CK_OBJECT_HANDLE class)
{
unsigned char hashBuf[4];
CK_OBJECT_HANDLE handle;
const SECItem *key;
handle = class;
/* there is only one KRL, use a fixed handle for it */
if (handle != LG_TOKEN_KRL_HANDLE) {
lg_XORHash(hashBuf,dbKey->data,dbKey->len);
handle = (hashBuf[0] << 24) | (hashBuf[1] << 16) |
(hashBuf[2] << 8) | hashBuf[3];
handle = class | (handle & ~(LG_TOKEN_TYPE_MASK|LG_TOKEN_MASK));
/* we have a CRL who's handle has randomly matched the reserved KRL
* handle, increment it */
if (handle == LG_TOKEN_KRL_HANDLE) {
handle++;
}
}
lg_DBLock(sdb);
while ((key = lg_lookupTokenKeyByHandle(sdb,handle)) != NULL) {
if (SECITEM_ItemsAreEqual(key,dbKey)) {
key->data[0] ^= 0x80;
lg_DBUnlock(sdb);
return PR_TRUE;
}
handle++;
}
lg_DBUnlock(sdb);
return PR_FALSE;
}
static LGEncryptFunc lg_encrypt_stub = NULL;
static LGDecryptFunc lg_decrypt_stub = NULL;
void
legacy_SetCryptFunctions(LGEncryptFunc enc, LGDecryptFunc dec)
{
lg_encrypt_stub = enc;
lg_decrypt_stub = dec;
}
SECStatus lg_util_encrypt(PLArenaPool *arena, SDB *sdb,
SECItem *plainText, SECItem **cipherText)
{
if (lg_encrypt_stub == NULL) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
return (*lg_encrypt_stub)(arena, sdb, plainText, cipherText);
}
SECStatus lg_util_decrypt(SDB *sdb, SECItem *cipherText, SECItem **plainText)
{
if (lg_decrypt_stub == NULL) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
return (*lg_decrypt_stub)(sdb, cipherText, plainText);
}

View File

@@ -0,0 +1,824 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Certificate handling code
*
* $Id: lowcert.c,v 1.1.2.2 2007-05-15 21:59:52 rrelyea%redhat.com Exp $
*/
#include "seccomon.h"
#include "secder.h"
#include "nssilock.h"
#include "lowkeyi.h"
#include "secasn1.h"
#include "secoid.h"
#include "secerr.h"
#include "pcert.h"
static const SEC_ASN1Template nsslowcert_SubjectPublicKeyInfoTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWCERTSubjectPublicKeyInfo) },
{ SEC_ASN1_INLINE, offsetof(NSSLOWCERTSubjectPublicKeyInfo,algorithm),
SECOID_AlgorithmIDTemplate },
{ SEC_ASN1_BIT_STRING,
offsetof(NSSLOWCERTSubjectPublicKeyInfo,subjectPublicKey), },
{ 0, }
};
static const SEC_ASN1Template nsslowcert_RSAPublicKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPublicKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey,u.rsa.modulus), },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey,u.rsa.publicExponent), },
{ 0, }
};
static const SEC_ASN1Template nsslowcert_DSAPublicKeyTemplate[] = {
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey,u.dsa.publicValue), },
{ 0, }
};
static const SEC_ASN1Template nsslowcert_DHPublicKeyTemplate[] = {
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPublicKey,u.dh.publicValue), },
{ 0, }
};
/*
* See bugzilla bug 125359
* Since NSS (via PKCS#11) wants to handle big integers as unsigned ints,
* all of the templates above that en/decode into integers must be converted
* from ASN.1's signed integer type. This is done by marking either the
* source or destination (encoding or decoding, respectively) type as
* siUnsignedInteger.
*/
static void
prepare_low_rsa_pub_key_for_asn1(NSSLOWKEYPublicKey *pubk)
{
pubk->u.rsa.modulus.type = siUnsignedInteger;
pubk->u.rsa.publicExponent.type = siUnsignedInteger;
}
static void
prepare_low_dsa_pub_key_for_asn1(NSSLOWKEYPublicKey *pubk)
{
pubk->u.dsa.publicValue.type = siUnsignedInteger;
pubk->u.dsa.params.prime.type = siUnsignedInteger;
pubk->u.dsa.params.subPrime.type = siUnsignedInteger;
pubk->u.dsa.params.base.type = siUnsignedInteger;
}
static void
prepare_low_dh_pub_key_for_asn1(NSSLOWKEYPublicKey *pubk)
{
pubk->u.dh.prime.type = siUnsignedInteger;
pubk->u.dh.base.type = siUnsignedInteger;
pubk->u.dh.publicValue.type = siUnsignedInteger;
}
/*
* simple cert decoder to avoid the cost of asn1 engine
*/
static unsigned char *
nsslowcert_dataStart(unsigned char *buf, unsigned int length,
unsigned int *data_length, PRBool includeTag,
unsigned char* rettag) {
unsigned char tag;
unsigned int used_length= 0;
tag = buf[used_length++];
if (rettag) {
*rettag = tag;
}
/* blow out when we come to the end */
if (tag == 0) {
return NULL;
}
*data_length = buf[used_length++];
if (*data_length&0x80) {
int len_count = *data_length & 0x7f;
*data_length = 0;
while (len_count-- > 0) {
*data_length = (*data_length << 8) | buf[used_length++];
}
}
if (*data_length > (length-used_length) ) {
*data_length = length-used_length;
return NULL;
}
if (includeTag) *data_length += used_length;
return (buf + (includeTag ? 0 : used_length));
}
static void SetTimeType(SECItem* item, unsigned char tagtype)
{
switch (tagtype) {
case SEC_ASN1_UTC_TIME:
item->type = siUTCTime;
break;
case SEC_ASN1_GENERALIZED_TIME:
item->type = siGeneralizedTime;
break;
default:
PORT_Assert(0);
break;
}
}
static int
nsslowcert_GetValidityFields(unsigned char *buf,int buf_length,
SECItem *notBefore, SECItem *notAfter)
{
unsigned char tagtype;
notBefore->data = nsslowcert_dataStart(buf,buf_length,
&notBefore->len,PR_FALSE, &tagtype);
if (notBefore->data == NULL) return SECFailure;
SetTimeType(notBefore, tagtype);
buf_length -= (notBefore->data-buf) + notBefore->len;
buf = notBefore->data + notBefore->len;
notAfter->data = nsslowcert_dataStart(buf,buf_length,
&notAfter->len,PR_FALSE, &tagtype);
if (notAfter->data == NULL) return SECFailure;
SetTimeType(notAfter, tagtype);
return SECSuccess;
}
static int
nsslowcert_GetCertFields(unsigned char *cert,int cert_length,
SECItem *issuer, SECItem *serial, SECItem *derSN, SECItem *subject,
SECItem *valid, SECItem *subjkey, SECItem *extensions)
{
unsigned char *buf;
unsigned int buf_length;
unsigned char *dummy;
unsigned int dummylen;
/* get past the signature wrap */
buf = nsslowcert_dataStart(cert,cert_length,&buf_length,PR_FALSE, NULL);
if (buf == NULL) return SECFailure;
/* get into the raw cert data */
buf = nsslowcert_dataStart(buf,buf_length,&buf_length,PR_FALSE, NULL);
if (buf == NULL) return SECFailure;
/* skip past any optional version number */
if ((buf[0] & 0xa0) == 0xa0) {
dummy = nsslowcert_dataStart(buf,buf_length,&dummylen,PR_FALSE, NULL);
if (dummy == NULL) return SECFailure;
buf_length -= (dummy-buf) + dummylen;
buf = dummy + dummylen;
}
/* serial number */
if (derSN) {
derSN->data=nsslowcert_dataStart(buf,buf_length,&derSN->len,PR_TRUE, NULL);
}
serial->data = nsslowcert_dataStart(buf,buf_length,&serial->len,PR_FALSE, NULL);
if (serial->data == NULL) return SECFailure;
buf_length -= (serial->data-buf) + serial->len;
buf = serial->data + serial->len;
/* skip the OID */
dummy = nsslowcert_dataStart(buf,buf_length,&dummylen,PR_FALSE, NULL);
if (dummy == NULL) return SECFailure;
buf_length -= (dummy-buf) + dummylen;
buf = dummy + dummylen;
/* issuer */
issuer->data = nsslowcert_dataStart(buf,buf_length,&issuer->len,PR_TRUE, NULL);
if (issuer->data == NULL) return SECFailure;
buf_length -= (issuer->data-buf) + issuer->len;
buf = issuer->data + issuer->len;
/* only wanted issuer/SN */
if (valid == NULL) {
return SECSuccess;
}
/* validity */
valid->data = nsslowcert_dataStart(buf,buf_length,&valid->len,PR_FALSE, NULL);
if (valid->data == NULL) return SECFailure;
buf_length -= (valid->data-buf) + valid->len;
buf = valid->data + valid->len;
/*subject */
subject->data=nsslowcert_dataStart(buf,buf_length,&subject->len,PR_TRUE, NULL);
if (subject->data == NULL) return SECFailure;
buf_length -= (subject->data-buf) + subject->len;
buf = subject->data + subject->len;
/* subject key info */
subjkey->data=nsslowcert_dataStart(buf,buf_length,&subjkey->len,PR_TRUE, NULL);
if (subjkey->data == NULL) return SECFailure;
buf_length -= (subjkey->data-buf) + subjkey->len;
buf = subjkey->data + subjkey->len;
extensions->data = NULL;
extensions->len = 0;
while (buf_length > 0) {
/* EXTENSIONS */
if (buf[0] == 0xa3) {
extensions->data = nsslowcert_dataStart(buf,buf_length,
&extensions->len, PR_FALSE, NULL);
break;
}
dummy = nsslowcert_dataStart(buf,buf_length,&dummylen,PR_FALSE,NULL);
if (dummy == NULL) return SECFailure;
buf_length -= (dummy - buf) + dummylen;
buf = dummy + dummylen;
}
return SECSuccess;
}
static SECStatus
nsslowcert_GetCertTimes(NSSLOWCERTCertificate *c, PRTime *notBefore, PRTime *notAfter)
{
int rv;
NSSLOWCERTValidity validity;
rv = nsslowcert_GetValidityFields(c->validity.data,c->validity.len,
&validity.notBefore,&validity.notAfter);
if (rv != SECSuccess) {
return rv;
}
/* convert DER not-before time */
rv = DER_DecodeTimeChoice(notBefore, &validity.notBefore);
if (rv) {
return(SECFailure);
}
/* convert DER not-after time */
rv = DER_DecodeTimeChoice(notAfter, &validity.notAfter);
if (rv) {
return(SECFailure);
}
return(SECSuccess);
}
/*
* is certa newer than certb? If one is expired, pick the other one.
*/
PRBool
nsslowcert_IsNewer(NSSLOWCERTCertificate *certa, NSSLOWCERTCertificate *certb)
{
PRTime notBeforeA, notAfterA, notBeforeB, notAfterB, now;
SECStatus rv;
PRBool newerbefore, newerafter;
rv = nsslowcert_GetCertTimes(certa, &notBeforeA, &notAfterA);
if ( rv != SECSuccess ) {
return(PR_FALSE);
}
rv = nsslowcert_GetCertTimes(certb, &notBeforeB, &notAfterB);
if ( rv != SECSuccess ) {
return(PR_TRUE);
}
newerbefore = PR_FALSE;
if ( LL_CMP(notBeforeA, >, notBeforeB) ) {
newerbefore = PR_TRUE;
}
newerafter = PR_FALSE;
if ( LL_CMP(notAfterA, >, notAfterB) ) {
newerafter = PR_TRUE;
}
if ( newerbefore && newerafter ) {
return(PR_TRUE);
}
if ( ( !newerbefore ) && ( !newerafter ) ) {
return(PR_FALSE);
}
/* get current time */
now = PR_Now();
if ( newerbefore ) {
/* cert A was issued after cert B, but expires sooner */
/* if A is expired, then pick B */
if ( LL_CMP(notAfterA, <, now ) ) {
return(PR_FALSE);
}
return(PR_TRUE);
} else {
/* cert B was issued after cert A, but expires sooner */
/* if B is expired, then pick A */
if ( LL_CMP(notAfterB, <, now ) ) {
return(PR_TRUE);
}
return(PR_FALSE);
}
}
#define SOFT_DEFAULT_CHUNKSIZE 2048
static SECStatus
nsslowcert_KeyFromIssuerAndSN(PRArenaPool *arena,
SECItem *issuer, SECItem *sn, SECItem *key)
{
unsigned int len = sn->len + issuer->len;
if (!arena) {
PORT_SetError(SEC_ERROR_INVALID_ARGS);
goto loser;
}
key->data = (unsigned char*)PORT_ArenaAlloc(arena, len);
if ( !key->data ) {
goto loser;
}
key->len = len;
/* copy the serialNumber */
PORT_Memcpy(key->data, sn->data, sn->len);
/* copy the issuer */
PORT_Memcpy(&key->data[sn->len], issuer->data, issuer->len);
return(SECSuccess);
loser:
return(SECFailure);
}
static SECStatus
nsslowcert_KeyFromIssuerAndSNStatic(unsigned char *space,
int spaceLen, SECItem *issuer, SECItem *sn, SECItem *key)
{
unsigned int len = sn->len + issuer->len;
key->data = pkcs11_allocStaticData(len, space, spaceLen);
if ( !key->data ) {
goto loser;
}
key->len = len;
/* copy the serialNumber */
PORT_Memcpy(key->data, sn->data, sn->len);
/* copy the issuer */
PORT_Memcpy(&key->data[sn->len], issuer->data, issuer->len);
return(SECSuccess);
loser:
return(SECFailure);
}
static char *
nsslowcert_EmailName(SECItem *derDN, char *space, unsigned int len)
{
unsigned char *buf;
unsigned int buf_length;
/* unwrap outer sequence */
buf=nsslowcert_dataStart(derDN->data,derDN->len,&buf_length,PR_FALSE,NULL);
if (buf == NULL) return NULL;
/* Walk each RDN */
while (buf_length > 0) {
unsigned char *rdn;
unsigned int rdn_length;
/* grab next rdn */
rdn=nsslowcert_dataStart(buf, buf_length, &rdn_length, PR_FALSE, NULL);
if (rdn == NULL) { return NULL; }
buf_length -= (rdn - buf) + rdn_length;
buf = rdn+rdn_length;
while (rdn_length > 0) {
unsigned char *ava;
unsigned int ava_length;
unsigned char *oid;
unsigned int oid_length;
unsigned char *name;
unsigned int name_length;
SECItem oidItem;
SECOidTag type;
/* unwrap the ava */
ava=nsslowcert_dataStart(rdn, rdn_length, &ava_length, PR_FALSE,
NULL);
if (ava == NULL) return NULL;
rdn_length -= (ava-rdn)+ava_length;
rdn = ava + ava_length;
oid=nsslowcert_dataStart(ava, ava_length, &oid_length, PR_FALSE,
NULL);
if (oid == NULL) { return NULL; }
ava_length -= (oid-ava)+oid_length;
ava = oid+oid_length;
name=nsslowcert_dataStart(ava, ava_length, &name_length, PR_FALSE,
NULL);
if (oid == NULL) { return NULL; }
ava_length -= (name-ava)+name_length;
ava = name+name_length;
oidItem.data = oid;
oidItem.len = oid_length;
type = SECOID_FindOIDTag(&oidItem);
if ((type == SEC_OID_PKCS9_EMAIL_ADDRESS) ||
(type == SEC_OID_RFC1274_MAIL)) {
/* Email is supposed to be IA5String, so no
* translation necessary */
char *emailAddr;
emailAddr = (char *)pkcs11_copyStaticData(name,name_length+1,
(unsigned char *)space,len);
if (emailAddr) {
emailAddr[name_length] = 0;
}
return emailAddr;
}
}
}
return NULL;
}
static char *
nsslowcert_EmailAltName(NSSLOWCERTCertificate *cert, char *space,
unsigned int len)
{
unsigned char *exts;
unsigned int exts_length;
/* unwrap the sequence */
exts = nsslowcert_dataStart(cert->extensions.data, cert->extensions.len,
&exts_length, PR_FALSE, NULL);
/* loop through extension */
while (exts && exts_length > 0) {
unsigned char * ext;
unsigned int ext_length;
unsigned char *oid;
unsigned int oid_length;
unsigned char *nameList;
unsigned int nameList_length;
SECItem oidItem;
SECOidTag type;
ext = nsslowcert_dataStart(exts, exts_length, &ext_length,
PR_FALSE, NULL);
if (ext == NULL) { break; }
exts_length -= (ext - exts) + ext_length;
exts = ext+ext_length;
oid=nsslowcert_dataStart(ext, ext_length, &oid_length, PR_FALSE, NULL);
if (oid == NULL) { break; }
ext_length -= (oid - ext) + oid_length;
ext = oid+oid_length;
oidItem.data = oid;
oidItem.len = oid_length;
type = SECOID_FindOIDTag(&oidItem);
/* get Alt Extension */
if (type != SEC_OID_X509_SUBJECT_ALT_NAME) {
continue;
}
/* skip passed the critical flag */
if (ext[0] == 0x01) { /* BOOLEAN */
unsigned char *dummy;
unsigned int dummy_length;
dummy = nsslowcert_dataStart(ext, ext_length, &dummy_length,
PR_FALSE, NULL);
if (dummy == NULL) { break; }
ext_length -= (dummy - ext) + dummy_length;
ext = dummy+dummy_length;
}
/* unwrap the name list */
nameList = nsslowcert_dataStart(ext, ext_length, &nameList_length,
PR_FALSE, NULL);
if (nameList == NULL) { break; }
ext_length -= (nameList - ext) + nameList_length;
ext = nameList+nameList_length;
nameList = nsslowcert_dataStart(nameList, nameList_length,
&nameList_length, PR_FALSE, NULL);
/* loop through the name list */
while (nameList && nameList_length > 0) {
unsigned char *thisName;
unsigned int thisName_length;
thisName = nsslowcert_dataStart(nameList, nameList_length,
&thisName_length, PR_FALSE, NULL);
if (thisName == NULL) { break; }
if (nameList[0] == 0xa2) { /* DNS Name */
SECItem dn;
char *emailAddr;
dn.data = thisName;
dn.len = thisName_length;
emailAddr = nsslowcert_EmailName(&dn, space, len);
if (emailAddr) {
return emailAddr;
}
}
if (nameList[0] == 0x81) { /* RFC 822name */
char *emailAddr;
emailAddr = (char *)pkcs11_copyStaticData(thisName,
thisName_length+1, (unsigned char *)space,len);
if (emailAddr) {
emailAddr[thisName_length] = 0;
}
return emailAddr;
}
nameList_length -= (thisName-nameList) + thisName_length;
nameList = thisName + thisName_length;
}
break;
}
return NULL;
}
static char *
nsslowcert_GetCertificateEmailAddress(NSSLOWCERTCertificate *cert)
{
char *emailAddr = NULL;
char *str;
emailAddr = nsslowcert_EmailName(&cert->derSubject,cert->emailAddrSpace,
sizeof(cert->emailAddrSpace));
/* couldn't find the email address in the DN, check the subject Alt name */
if (!emailAddr && cert->extensions.data) {
emailAddr = nsslowcert_EmailAltName(cert, cert->emailAddrSpace,
sizeof(cert->emailAddrSpace));
}
/* make it lower case */
str = emailAddr;
while ( str && *str ) {
*str = tolower( *str );
str++;
}
return emailAddr;
}
/*
* take a DER certificate and decode it into a certificate structure
*/
NSSLOWCERTCertificate *
nsslowcert_DecodeDERCertificate(SECItem *derSignedCert, char *nickname)
{
NSSLOWCERTCertificate *cert;
int rv;
/* allocate the certificate structure */
cert = nsslowcert_CreateCert();
if ( !cert ) {
goto loser;
}
/* point to passed in DER data */
cert->derCert = *derSignedCert;
cert->nickname = NULL;
cert->certKey.data = NULL;
cert->referenceCount = 1;
/* decode the certificate info */
rv = nsslowcert_GetCertFields(cert->derCert.data, cert->derCert.len,
&cert->derIssuer, &cert->serialNumber, &cert->derSN, &cert->derSubject,
&cert->validity, &cert->derSubjKeyInfo, &cert->extensions);
/* cert->subjectKeyID; x509v3 subject key identifier */
cert->subjectKeyID.data = NULL;
cert->subjectKeyID.len = 0;
cert->dbEntry = NULL;
cert ->trust = NULL;
cert ->dbhandle = NULL;
/* generate and save the database key for the cert */
rv = nsslowcert_KeyFromIssuerAndSNStatic(cert->certKeySpace,
sizeof(cert->certKeySpace), &cert->derIssuer,
&cert->serialNumber, &cert->certKey);
if ( rv ) {
goto loser;
}
/* set the nickname */
if ( nickname == NULL ) {
cert->nickname = NULL;
} else {
/* copy and install the nickname */
cert->nickname = pkcs11_copyNickname(nickname,cert->nicknameSpace,
sizeof(cert->nicknameSpace));
}
#ifdef FIXME
/* initialize the subjectKeyID */
rv = cert_GetKeyID(cert);
if ( rv != SECSuccess ) {
goto loser;
}
#endif
/* set the email address */
cert->emailAddr = nsslowcert_GetCertificateEmailAddress(cert);
cert->referenceCount = 1;
return(cert);
loser:
if (cert) {
nsslowcert_DestroyCertificate(cert);
}
return(0);
}
char *
nsslowcert_FixupEmailAddr(char *emailAddr)
{
char *retaddr;
char *str;
if ( emailAddr == NULL ) {
return(NULL);
}
/* copy the string */
str = retaddr = PORT_Strdup(emailAddr);
if ( str == NULL ) {
return(NULL);
}
/* make it lower case */
while ( *str ) {
*str = tolower( *str );
str++;
}
return(retaddr);
}
/*
* Generate a database key, based on serial number and issuer, from a
* DER certificate.
*/
SECStatus
nsslowcert_KeyFromDERCert(PRArenaPool *arena, SECItem *derCert, SECItem *key)
{
int rv;
NSSLOWCERTCertKey certkey;
PORT_Memset(&certkey, 0, sizeof(NSSLOWCERTCertKey));
rv = nsslowcert_GetCertFields(derCert->data, derCert->len,
&certkey.derIssuer, &certkey.serialNumber, NULL, NULL,
NULL, NULL, NULL);
if ( rv ) {
goto loser;
}
return(nsslowcert_KeyFromIssuerAndSN(arena, &certkey.derIssuer,
&certkey.serialNumber, key));
loser:
return(SECFailure);
}
NSSLOWKEYPublicKey *
nsslowcert_ExtractPublicKey(NSSLOWCERTCertificate *cert)
{
NSSLOWCERTSubjectPublicKeyInfo spki;
NSSLOWKEYPublicKey *pubk;
SECItem os;
SECStatus rv;
PRArenaPool *arena;
SECOidTag tag;
SECItem newDerSubjKeyInfo;
arena = PORT_NewArena (DER_DEFAULT_CHUNKSIZE);
if (arena == NULL)
return NULL;
pubk = (NSSLOWKEYPublicKey *)
PORT_ArenaZAlloc(arena, sizeof(NSSLOWKEYPublicKey));
if (pubk == NULL) {
PORT_FreeArena (arena, PR_FALSE);
return NULL;
}
pubk->arena = arena;
PORT_Memset(&spki,0,sizeof(spki));
/* copy the DER into the arena, since Quick DER returns data that points
into the DER input, which may get freed by the caller */
rv = SECITEM_CopyItem(arena, &newDerSubjKeyInfo, &cert->derSubjKeyInfo);
if ( rv != SECSuccess ) {
PORT_FreeArena (arena, PR_FALSE);
return NULL;
}
/* we haven't bothered decoding the spki struct yet, do it now */
rv = SEC_QuickDERDecodeItem(arena, &spki,
nsslowcert_SubjectPublicKeyInfoTemplate, &newDerSubjKeyInfo);
if (rv != SECSuccess) {
PORT_FreeArena (arena, PR_FALSE);
return NULL;
}
/* Convert bit string length from bits to bytes */
os = spki.subjectPublicKey;
DER_ConvertBitString (&os);
tag = SECOID_GetAlgorithmTag(&spki.algorithm);
switch ( tag ) {
case SEC_OID_X500_RSA_ENCRYPTION:
case SEC_OID_PKCS1_RSA_ENCRYPTION:
pubk->keyType = NSSLOWKEYRSAKey;
prepare_low_rsa_pub_key_for_asn1(pubk);
rv = SEC_QuickDERDecodeItem(arena, pubk,
nsslowcert_RSAPublicKeyTemplate, &os);
if (rv == SECSuccess)
return pubk;
break;
case SEC_OID_ANSIX9_DSA_SIGNATURE:
pubk->keyType = NSSLOWKEYDSAKey;
prepare_low_dsa_pub_key_for_asn1(pubk);
rv = SEC_QuickDERDecodeItem(arena, pubk,
nsslowcert_DSAPublicKeyTemplate, &os);
if (rv == SECSuccess) return pubk;
break;
case SEC_OID_X942_DIFFIE_HELMAN_KEY:
pubk->keyType = NSSLOWKEYDHKey;
prepare_low_dh_pub_key_for_asn1(pubk);
rv = SEC_QuickDERDecodeItem(arena, pubk,
nsslowcert_DHPublicKeyTemplate, &os);
if (rv == SECSuccess) return pubk;
break;
#ifdef NSS_ENABLE_ECC
case SEC_OID_ANSIX962_EC_PUBLIC_KEY:
pubk->keyType = NSSLOWKEYECKey;
/* Since PKCS#11 directly takes the DER encoding of EC params
* and public value, we don't need any decoding here.
*/
rv = SECITEM_CopyItem(arena, &pubk->u.ec.ecParams.DEREncoding,
&spki.algorithm.parameters);
if ( rv != SECSuccess )
break;
/* Fill out the rest of the ecParams structure
* based on the encoded params
*/
if (LGEC_FillParams(arena, &pubk->u.ec.ecParams.DEREncoding,
&pubk->u.ec.ecParams) != SECSuccess)
break;
rv = SECITEM_CopyItem(arena, &pubk->u.ec.publicValue, &os);
if (rv == SECSuccess) return pubk;
break;
#endif /* NSS_ENABLE_ECC */
default:
rv = SECFailure;
break;
}
nsslowkey_DestroyPublicKey (pubk);
return NULL;
}

View File

@@ -0,0 +1,462 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "lowkeyi.h"
#include "secoid.h"
#include "secitem.h"
#include "secder.h"
#include "secasn1.h"
#include "secerr.h"
static const SEC_ASN1Template nsslowkey_AttributeTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSSLOWKEYAttribute) },
{ SEC_ASN1_OBJECT_ID, offsetof(NSSLOWKEYAttribute, attrType) },
{ SEC_ASN1_SET_OF, offsetof(NSSLOWKEYAttribute, attrValue),
SEC_AnyTemplate },
{ 0 }
};
static const SEC_ASN1Template nsslowkey_SetOfAttributeTemplate[] = {
{ SEC_ASN1_SET_OF, 0, nsslowkey_AttributeTemplate },
};
/* ASN1 Templates for new decoder/encoder */
const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSSLOWKEYPrivateKeyInfo) },
{ SEC_ASN1_INTEGER,
offsetof(NSSLOWKEYPrivateKeyInfo,version) },
{ SEC_ASN1_INLINE,
offsetof(NSSLOWKEYPrivateKeyInfo,algorithm),
SECOID_AlgorithmIDTemplate },
{ SEC_ASN1_OCTET_STRING,
offsetof(NSSLOWKEYPrivateKeyInfo,privateKey) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0,
offsetof(NSSLOWKEYPrivateKeyInfo, attributes),
nsslowkey_SetOfAttributeTemplate },
{ 0 }
};
const SEC_ASN1Template nsslowkey_PQGParamsTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PQGParams) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,prime) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,subPrime) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,base) },
{ 0, }
};
const SEC_ASN1Template nsslowkey_RSAPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.version) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.modulus) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.publicExponent) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.privateExponent) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.prime1) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.prime2) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.exponent1) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.exponent2) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.coefficient) },
{ 0 }
};
const SEC_ASN1Template nsslowkey_DSAPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dsa.publicValue) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dsa.privateValue) },
{ 0, }
};
const SEC_ASN1Template nsslowkey_DSAPrivateKeyExportTemplate[] = {
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dsa.privateValue) },
};
const SEC_ASN1Template nsslowkey_DHPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.publicValue) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.privateValue) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.base) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.prime) },
{ 0, }
};
#ifdef NSS_ENABLE_ECC
/* XXX This is just a placeholder for later when we support
* generic curves and need full-blown support for parsing EC
* parameters. For now, we only support named curves in which
* EC params are simply encoded as an object ID and we don't
* use nsslowkey_ECParamsTemplate.
*/
const SEC_ASN1Template nsslowkey_ECParamsTemplate[] = {
{ SEC_ASN1_CHOICE, offsetof(ECParams,type), NULL, sizeof(ECParams) },
{ SEC_ASN1_OBJECT_ID, offsetof(ECParams,curveOID), NULL, ec_params_named },
{ 0, }
};
/* NOTE: The SECG specification allows the private key structure
* to contain curve parameters but recommends that they be stored
* in the PrivateKeyAlgorithmIdentifier field of the PrivateKeyInfo
* instead.
*/
const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.ec.version) },
{ SEC_ASN1_OCTET_STRING,
offsetof(NSSLOWKEYPrivateKey,u.ec.privateValue) },
/* XXX The following template works for now since we only
* support named curves for which the parameters are
* encoded as an object ID. When we support generic curves,
* we'll need to define nsslowkey_ECParamsTemplate
*/
#if 1
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC | 0,
offsetof(NSSLOWKEYPrivateKey,u.ec.ecParams.curveOID),
SEC_ObjectIDTemplate },
#else
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC | 0,
offsetof(NSSLOWKEYPrivateKey,u.ec.ecParams),
nsslowkey_ECParamsTemplate },
#endif
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC | 1,
offsetof(NSSLOWKEYPrivateKey,u.ec.publicValue),
SEC_BitStringTemplate },
{ 0, }
};
/*
* smaller version of EC_FillParams. In this code, we only need
* oid and DER data.
*/
SECStatus
LGEC_FillParams(PRArenaPool *arena, const SECItem *encodedParams,
ECParams *params)
{
SECOidTag tag;
SECItem oid = { siBuffer, NULL, 0};
#if EC_DEBUG
int i;
printf("Encoded params in EC_DecodeParams: ");
for (i = 0; i < encodedParams->len; i++) {
printf("%02x:", encodedParams->data[i]);
}
printf("\n");
#endif
oid.len = encodedParams->len - 2;
oid.data = encodedParams->data + 2;
if ((encodedParams->data[0] != SEC_ASN1_OBJECT_ID) ||
((tag = SECOID_FindOIDTag(&oid)) == SEC_OID_UNKNOWN)) {
PORT_SetError(SEC_ERROR_UNSUPPORTED_ELLIPTIC_CURVE);
return SECFailure;
}
params->arena = arena;
/* For named curves, fill out curveOID */
params->curveOID.len = oid.len;
params->curveOID.data = (unsigned char *) PORT_ArenaAlloc(arena, oid.len);
if (params->curveOID.data == NULL) {
return SECFailure;
}
memcpy(params->curveOID.data, oid.data, oid.len);
return SECSuccess;
}
/* Copy all of the fields from srcParams into dstParams
*/
SECStatus
LGEC_CopyParams(PRArenaPool *arena, ECParams *dstParams,
const ECParams *srcParams)
{
SECStatus rv = SECFailure;
dstParams->arena = arena;
rv = SECITEM_CopyItem(arena, &dstParams->DEREncoding,
&srcParams->DEREncoding);
if (rv != SECSuccess) {
goto loser;
}
rv =SECITEM_CopyItem(arena, &dstParams->curveOID,
&srcParams->curveOID);
if (rv != SECSuccess) {
goto loser;
}
return SECSuccess;
loser:
return SECFailure;
}
#endif /* NSS_ENABLE_ECC */
/*
* See bugzilla bug 125359
* Since NSS (via PKCS#11) wants to handle big integers as unsigned ints,
* all of the templates above that en/decode into integers must be converted
* from ASN.1's signed integer type. This is done by marking either the
* source or destination (encoding or decoding, respectively) type as
* siUnsignedInteger.
*/
void
prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.rsa.modulus.type = siUnsignedInteger;
key->u.rsa.publicExponent.type = siUnsignedInteger;
key->u.rsa.privateExponent.type = siUnsignedInteger;
key->u.rsa.prime1.type = siUnsignedInteger;
key->u.rsa.prime2.type = siUnsignedInteger;
key->u.rsa.exponent1.type = siUnsignedInteger;
key->u.rsa.exponent2.type = siUnsignedInteger;
key->u.rsa.coefficient.type = siUnsignedInteger;
}
void
prepare_low_pqg_params_for_asn1(PQGParams *params)
{
params->prime.type = siUnsignedInteger;
params->subPrime.type = siUnsignedInteger;
params->base.type = siUnsignedInteger;
}
void
prepare_low_dsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.dsa.publicValue.type = siUnsignedInteger;
key->u.dsa.privateValue.type = siUnsignedInteger;
key->u.dsa.params.prime.type = siUnsignedInteger;
key->u.dsa.params.subPrime.type = siUnsignedInteger;
key->u.dsa.params.base.type = siUnsignedInteger;
}
void
prepare_low_dsa_priv_key_export_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.dsa.privateValue.type = siUnsignedInteger;
}
void
prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.dh.prime.type = siUnsignedInteger;
key->u.dh.base.type = siUnsignedInteger;
key->u.dh.publicValue.type = siUnsignedInteger;
key->u.dh.privateValue.type = siUnsignedInteger;
}
#ifdef NSS_ENABLE_ECC
void
prepare_low_ecparams_for_asn1(ECParams *params)
{
params->DEREncoding.type = siUnsignedInteger;
params->curveOID.type = siUnsignedInteger;
}
void
prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.ec.version.type = siUnsignedInteger;
key->u.ec.ecParams.DEREncoding.type = siUnsignedInteger;
key->u.ec.ecParams.curveOID.type = siUnsignedInteger;
key->u.ec.privateValue.type = siUnsignedInteger;
key->u.ec.publicValue.type = siUnsignedInteger;
}
#endif /* NSS_ENABLE_ECC */
void
nsslowkey_DestroyPrivateKey(NSSLOWKEYPrivateKey *privk)
{
if (privk && privk->arena) {
PORT_FreeArena(privk->arena, PR_TRUE);
}
}
void
nsslowkey_DestroyPublicKey(NSSLOWKEYPublicKey *pubk)
{
if (pubk && pubk->arena) {
PORT_FreeArena(pubk->arena, PR_FALSE);
}
}
unsigned
nsslowkey_PublicModulusLen(NSSLOWKEYPublicKey *pubk)
{
unsigned char b0;
/* interpret modulus length as key strength... in
* fortezza that's the public key length */
switch (pubk->keyType) {
case NSSLOWKEYRSAKey:
b0 = pubk->u.rsa.modulus.data[0];
return b0 ? pubk->u.rsa.modulus.len : pubk->u.rsa.modulus.len - 1;
default:
break;
}
return 0;
}
unsigned
nsslowkey_PrivateModulusLen(NSSLOWKEYPrivateKey *privk)
{
unsigned char b0;
switch (privk->keyType) {
case NSSLOWKEYRSAKey:
b0 = privk->u.rsa.modulus.data[0];
return b0 ? privk->u.rsa.modulus.len : privk->u.rsa.modulus.len - 1;
default:
break;
}
return 0;
}
NSSLOWKEYPublicKey *
nsslowkey_ConvertToPublicKey(NSSLOWKEYPrivateKey *privk)
{
NSSLOWKEYPublicKey *pubk;
PLArenaPool *arena;
arena = PORT_NewArena (DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
PORT_SetError (SEC_ERROR_NO_MEMORY);
return NULL;
}
switch(privk->keyType) {
case NSSLOWKEYRSAKey:
case NSSLOWKEYNullKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof (NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
if (privk->keyType == NSSLOWKEYNullKey) return pubk;
rv = SECITEM_CopyItem(arena, &pubk->u.rsa.modulus,
&privk->u.rsa.modulus);
if (rv == SECSuccess) {
rv = SECITEM_CopyItem (arena, &pubk->u.rsa.publicExponent,
&privk->u.rsa.publicExponent);
if (rv == SECSuccess)
return pubk;
}
} else {
PORT_SetError (SEC_ERROR_NO_MEMORY);
}
break;
case NSSLOWKEYDSAKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.publicValue,
&privk->u.dsa.publicValue);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.params.prime,
&privk->u.dsa.params.prime);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.params.subPrime,
&privk->u.dsa.params.subPrime);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.params.base,
&privk->u.dsa.params.base);
if (rv == SECSuccess) return pubk;
}
break;
case NSSLOWKEYDHKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
rv = SECITEM_CopyItem(arena, &pubk->u.dh.publicValue,
&privk->u.dh.publicValue);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dh.prime,
&privk->u.dh.prime);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dh.base,
&privk->u.dh.base);
if (rv == SECSuccess) return pubk;
}
break;
#ifdef NSS_ENABLE_ECC
case NSSLOWKEYECKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
rv = SECITEM_CopyItem(arena, &pubk->u.ec.publicValue,
&privk->u.ec.publicValue);
if (rv != SECSuccess) break;
pubk->u.ec.ecParams.arena = arena;
/* Copy the rest of the params */
rv = LGEC_CopyParams(arena, &(pubk->u.ec.ecParams),
&(privk->u.ec.ecParams));
if (rv == SECSuccess) return pubk;
}
break;
#endif /* NSS_ENABLE_ECC */
/* No Fortezza in Low Key implementations (Fortezza keys aren't
* stored in our data base */
default:
break;
}
PORT_FreeArena (arena, PR_FALSE);
return NULL;
}

View File

@@ -0,0 +1,198 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: lowkeyi.h,v 1.1.2.1 2007-04-03 22:50:02 rrelyea%redhat.com Exp $ */
#ifndef _LOWKEYI_H_
#define _LOWKEYI_H_
#include "prtypes.h"
#include "seccomon.h"
#include "secoidt.h"
#include "pcertt.h"
#include "lowkeyti.h"
#include "sdb.h"
SEC_BEGIN_PROTOS
/*
* See bugzilla bug 125359
* Since NSS (via PKCS#11) wants to handle big integers as unsigned ints,
* all of the templates above that en/decode into integers must be converted
* from ASN.1's signed integer type. This is done by marking either the
* source or destination (encoding or decoding, respectively) type as
* siUnsignedInteger.
*/
extern void prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_pqg_params_for_asn1(PQGParams *params);
extern void prepare_low_dsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_dsa_priv_key_export_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
#ifdef NSS_ENABLE_ECC
extern void prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_ecparams_for_asn1(ECParams *params);
#endif /* NSS_ENABLE_ECC */
typedef char * (* NSSLOWKEYDBNameFunc)(void *arg, int dbVersion);
/*
** Open a key database.
*/
extern NSSLOWKEYDBHandle *nsslowkey_OpenKeyDB(PRBool readOnly,
const char *domain,
const char *prefix,
NSSLOWKEYDBNameFunc namecb,
void *cbarg);
/*
** Close the specified key database.
*/
extern void nsslowkey_CloseKeyDB(NSSLOWKEYDBHandle *handle);
/*
* Get the version number of the database
*/
extern int nsslowkey_GetKeyDBVersion(NSSLOWKEYDBHandle *handle);
/*
** Delete a key from the database
*/
extern SECStatus nsslowkey_DeleteKey(NSSLOWKEYDBHandle *handle,
const SECItem *pubkey);
/*
** Store a key in the database, indexed by its public key modulus.
** "pk" is the private key to store
** "f" is a the callback function for getting the password
** "arg" is the argument for the callback
*/
extern SECStatus nsslowkey_StoreKeyByPublicKey(NSSLOWKEYDBHandle *handle,
NSSLOWKEYPrivateKey *pk,
SECItem *pubKeyData,
char *nickname,
SDB *sdb);
/* does the key for this cert exist in the database filed by modulus */
extern PRBool nsslowkey_KeyForCertExists(NSSLOWKEYDBHandle *handle,
NSSLOWCERTCertificate *cert);
/* does a key with this ID already exist? */
extern PRBool nsslowkey_KeyForIDExists(NSSLOWKEYDBHandle *handle, SECItem *id);
/*
** Destroy a private key object.
** "key" the object
** "freeit" if PR_TRUE then free the object as well as its sub-objects
*/
extern void nsslowkey_DestroyPrivateKey(NSSLOWKEYPrivateKey *key);
/*
** Destroy a public key object.
** "key" the object
** "freeit" if PR_TRUE then free the object as well as its sub-objects
*/
extern void nsslowkey_DestroyPublicKey(NSSLOWKEYPublicKey *key);
/*
** Return the modulus length of "pubKey".
*/
extern unsigned int nsslowkey_PublicModulusLen(NSSLOWKEYPublicKey *pubKey);
/*
** Return the modulus length of "privKey".
*/
extern unsigned int nsslowkey_PrivateModulusLen(NSSLOWKEYPrivateKey *privKey);
/*
** Convert a low private key "privateKey" into a public low key
*/
extern NSSLOWKEYPublicKey
*nsslowkey_ConvertToPublicKey(NSSLOWKEYPrivateKey *privateKey);
SECStatus
nsslowkey_UpdateNickname(NSSLOWKEYDBHandle *handle,
NSSLOWKEYPrivateKey *privkey,
SECItem *pubKeyData,
char *nickname,
SDB *sdb);
/* Store key by modulus and specify an encryption algorithm to use.
* handle is the pointer to the key database,
* privkey is the private key to be stored,
* f and arg are the function and arguments to the callback
* to get a password,
* algorithm is the algorithm which the privKey is to be stored.
* A return of anything but SECSuccess indicates failure.
*/
extern SECStatus
nsslowkey_StoreKeyByPublicKeyAlg(NSSLOWKEYDBHandle *handle,
NSSLOWKEYPrivateKey *privkey,
SECItem *pubKeyData,
char *nickname,
SDB *sdb,
PRBool update);
/* Find key by modulus. This function is the inverse of store key
* by modulus. An attempt to locate the key with "modulus" is
* performed. If the key is found, the private key is returned,
* else NULL is returned.
* modulus is the modulus to locate
*/
extern NSSLOWKEYPrivateKey *
nsslowkey_FindKeyByPublicKey(NSSLOWKEYDBHandle *handle, SECItem *modulus,
SDB *sdb);
extern char *
nsslowkey_FindKeyNicknameByPublicKey(NSSLOWKEYDBHandle *handle,
SECItem *modulus, SDB *sdb);
#ifdef NSS_ENABLE_ECC
/*
* smaller version of EC_FillParams. In this code, we only need
* oid and DER data.
*/
SECStatus LGEC_FillParams(PRArenaPool *arena, const SECItem *encodedParams,
ECParams *params);
/* Copy all of the fields from srcParams into dstParams */
SECStatus LGEC_CopyParams(PRArenaPool *arena, ECParams *dstParams,
const ECParams *srcParams);
#endif
SEC_END_PROTOS
#endif /* _LOWKEYI_H_ */

View File

@@ -0,0 +1,161 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _LOWKEYTI_H_
#define _LOWKEYTI_H_ 1
#include "blapit.h"
#include "prtypes.h"
#include "plarena.h"
#include "secitem.h"
#include "secasn1t.h"
#include "secoidt.h"
/*
* a key in/for the data base
*/
struct NSSLOWKEYDBKeyStr {
PLArenaPool *arena;
int version;
char *nickname;
SECItem salt;
SECItem derPK;
};
typedef struct NSSLOWKEYDBKeyStr NSSLOWKEYDBKey;
typedef struct NSSLOWKEYDBHandleStr NSSLOWKEYDBHandle;
#ifdef NSS_USE_KEY4_DB
#define NSSLOWKEY_DB_FILE_VERSION 4
#else
#define NSSLOWKEY_DB_FILE_VERSION 3
#endif
#define NSSLOWKEY_VERSION 0 /* what we *create* */
/*
** Typedef for callback to get a password "key".
*/
extern const SEC_ASN1Template nsslowkey_PQGParamsTemplate[];
extern const SEC_ASN1Template nsslowkey_RSAPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyExportTemplate[];
extern const SEC_ASN1Template nsslowkey_DHPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_DHPrivateKeyExportTemplate[];
#ifdef NSS_ENABLE_ECC
#define NSSLOWKEY_EC_PRIVATE_KEY_VERSION 1 /* as per SECG 1 C.4 */
extern const SEC_ASN1Template nsslowkey_ECParamsTemplate[];
extern const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate[];
#endif /* NSS_ENABLE_ECC */
extern const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[];
extern const SEC_ASN1Template nsslowkey_EncryptedPrivateKeyInfoTemplate[];
/*
* PKCS #8 attributes
*/
struct NSSLOWKEYAttributeStr {
SECItem attrType;
SECItem *attrValue;
};
typedef struct NSSLOWKEYAttributeStr NSSLOWKEYAttribute;
/*
** A PKCS#8 private key info object
*/
struct NSSLOWKEYPrivateKeyInfoStr {
PLArenaPool *arena;
SECItem version;
SECAlgorithmID algorithm;
SECItem privateKey;
NSSLOWKEYAttribute **attributes;
};
typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo;
#define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
/*
** A PKCS#8 private key info object
*/
struct NSSLOWKEYEncryptedPrivateKeyInfoStr {
PLArenaPool *arena;
SECAlgorithmID algorithm;
SECItem encryptedData;
};
typedef struct NSSLOWKEYEncryptedPrivateKeyInfoStr NSSLOWKEYEncryptedPrivateKeyInfo;
typedef enum {
NSSLOWKEYNullKey = 0,
NSSLOWKEYRSAKey = 1,
NSSLOWKEYDSAKey = 2,
NSSLOWKEYDHKey = 4,
NSSLOWKEYECKey = 5
} NSSLOWKEYType;
/*
** An RSA public key object.
*/
struct NSSLOWKEYPublicKeyStr {
PLArenaPool *arena;
NSSLOWKEYType keyType ;
union {
RSAPublicKey rsa;
DSAPublicKey dsa;
DHPublicKey dh;
ECPublicKey ec;
} u;
};
typedef struct NSSLOWKEYPublicKeyStr NSSLOWKEYPublicKey;
/*
** Low Level private key object
** This is only used by the raw Crypto engines (crypto), keydb (keydb),
** and PKCS #11. Everyone else uses the high level key structure.
*/
struct NSSLOWKEYPrivateKeyStr {
PLArenaPool *arena;
NSSLOWKEYType keyType;
union {
RSAPrivateKey rsa;
DSAPrivateKey dsa;
DHPrivateKey dh;
ECPrivateKey ec;
} u;
};
typedef struct NSSLOWKEYPrivateKeyStr NSSLOWKEYPrivateKey;
#endif /* _LOWKEYTI_H_ */

View File

@@ -0,0 +1,68 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
CORE_DEPTH = ../../../..
MODULE = nss
REQUIRES = dbm
LIBRARY_NAME = lgdbm
LIBRARY_VERSION = 3
MAPFILE = $(OBJDIR)/lgdbm.def
DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\"
CSRCS = \
dbmshim.c \
keydb.c \
lgattr.c \
lgcreate.c \
lgdestroy.c \
lgfind.c \
lginit.c \
lgutil.c \
lowcert.c \
lowkey.c \
pcertdb.c \
pk11db.c \
$(NULL)
ifdef NSS_ENABLE_ECC
DEFINES += -DNSS_ENABLE_ECC
endif

View File

@@ -0,0 +1,261 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _PCERTDB_H_
#define _PCERTDB_H_
#include "plarena.h"
#include "prlong.h"
#include "pcertt.h"
#include "lowkeyti.h" /* for struct NSSLOWKEYPublicKeyStr */
SEC_BEGIN_PROTOS
/*
* initialize any global certificate locks
*/
SECStatus nsslowcert_InitLocks(void);
/*
** Add a DER encoded certificate to the permanent database.
** "derCert" is the DER encoded certificate.
** "nickname" is the nickname to use for the cert
** "trust" is the trust parameters for the cert
*/
SECStatus nsslowcert_AddPermCert(NSSLOWCERTCertDBHandle *handle,
NSSLOWCERTCertificate *cert,
char *nickname, NSSLOWCERTCertTrust *trust);
SECStatus nsslowcert_AddPermNickname(NSSLOWCERTCertDBHandle *dbhandle,
NSSLOWCERTCertificate *cert, char *nickname);
SECStatus nsslowcert_DeletePermCertificate(NSSLOWCERTCertificate *cert);
typedef SECStatus (PR_CALLBACK * PermCertCallback)(NSSLOWCERTCertificate *cert,
SECItem *k, void *pdata);
/*
** Traverse the entire permanent database, and pass the certs off to a
** user supplied function.
** "certfunc" is the user function to call for each certificate
** "udata" is the user's data, which is passed through to "certfunc"
*/
SECStatus
nsslowcert_TraversePermCerts(NSSLOWCERTCertDBHandle *handle,
PermCertCallback certfunc,
void *udata );
PRBool
nsslowcert_CertDBKeyConflict(SECItem *derCert, NSSLOWCERTCertDBHandle *handle);
certDBEntryRevocation *
nsslowcert_FindCrlByKey(NSSLOWCERTCertDBHandle *handle,
SECItem *crlKey, PRBool isKRL);
SECStatus
nsslowcert_DeletePermCRL(NSSLOWCERTCertDBHandle *handle,const SECItem *derName,
PRBool isKRL);
SECStatus
nsslowcert_AddCrl(NSSLOWCERTCertDBHandle *handle, SECItem *derCrl ,
SECItem *derKey, char *url, PRBool isKRL);
NSSLOWCERTCertDBHandle *nsslowcert_GetDefaultCertDB();
NSSLOWKEYPublicKey *nsslowcert_ExtractPublicKey(NSSLOWCERTCertificate *);
NSSLOWCERTCertificate *
nsslowcert_NewTempCertificate(NSSLOWCERTCertDBHandle *handle, SECItem *derCert,
char *nickname, PRBool isperm, PRBool copyDER);
NSSLOWCERTCertificate *
nsslowcert_DupCertificate(NSSLOWCERTCertificate *cert);
void nsslowcert_DestroyCertificate(NSSLOWCERTCertificate *cert);
void nsslowcert_DestroyTrust(NSSLOWCERTTrust *Trust);
/*
* Lookup a certificate in the databases without locking
* "certKey" is the database key to look for
*
* XXX - this should be internal, but pkcs 11 needs to call it during a
* traversal.
*/
NSSLOWCERTCertificate *
nsslowcert_FindCertByKey(NSSLOWCERTCertDBHandle *handle, const SECItem *certKey);
/*
* Lookup trust for a certificate in the databases without locking
* "certKey" is the database key to look for
*
* XXX - this should be internal, but pkcs 11 needs to call it during a
* traversal.
*/
NSSLOWCERTTrust *
nsslowcert_FindTrustByKey(NSSLOWCERTCertDBHandle *handle, const SECItem *certKey);
/*
** Generate a certificate key from the issuer and serialnumber, then look it
** up in the database. Return the cert if found.
** "issuerAndSN" is the issuer and serial number to look for
*/
extern NSSLOWCERTCertificate *
nsslowcert_FindCertByIssuerAndSN (NSSLOWCERTCertDBHandle *handle, NSSLOWCERTIssuerAndSN *issuerAndSN);
/*
** Generate a certificate key from the issuer and serialnumber, then look it
** up in the database. Return the cert if found.
** "issuerAndSN" is the issuer and serial number to look for
*/
extern NSSLOWCERTTrust *
nsslowcert_FindTrustByIssuerAndSN (NSSLOWCERTCertDBHandle *handle, NSSLOWCERTIssuerAndSN *issuerAndSN);
/*
** Find a certificate in the database by a DER encoded certificate
** "derCert" is the DER encoded certificate
*/
extern NSSLOWCERTCertificate *
nsslowcert_FindCertByDERCert(NSSLOWCERTCertDBHandle *handle, SECItem *derCert);
/* convert an email address to lower case */
char *nsslowcert_FixupEmailAddr(char *emailAddr);
/*
** Decode a DER encoded certificate into an NSSLOWCERTCertificate structure
** "derSignedCert" is the DER encoded signed certificate
** "copyDER" is true if the DER should be copied, false if the
** existing copy should be referenced
** "nickname" is the nickname to use in the database. If it is NULL
** then a temporary nickname is generated.
*/
extern NSSLOWCERTCertificate *
nsslowcert_DecodeDERCertificate (SECItem *derSignedCert, char *nickname);
SECStatus
nsslowcert_KeyFromDERCert(PRArenaPool *arena, SECItem *derCert, SECItem *key);
certDBEntrySMime *
nsslowcert_ReadDBSMimeEntry(NSSLOWCERTCertDBHandle *certHandle,
char *emailAddr);
void
nsslowcert_DestroyDBEntry(certDBEntry *entry);
SECStatus
nsslowcert_OpenCertDB(NSSLOWCERTCertDBHandle *handle, PRBool readOnly,
const char *domain, const char *prefix,
NSSLOWCERTDBNameFunc namecb, void *cbarg, PRBool openVolatile);
void
nsslowcert_ClosePermCertDB(NSSLOWCERTCertDBHandle *handle);
/*
* is certa newer than certb? If one is expired, pick the other one.
*/
PRBool
nsslowcert_IsNewer(NSSLOWCERTCertificate *certa, NSSLOWCERTCertificate *certb);
SECStatus
nsslowcert_TraverseDBEntries(NSSLOWCERTCertDBHandle *handle,
certDBEntryType type,
SECStatus (* callback)(SECItem *data, SECItem *key,
certDBEntryType type, void *pdata),
void *udata );
SECStatus
nsslowcert_TraversePermCertsForSubject(NSSLOWCERTCertDBHandle *handle,
SECItem *derSubject,
NSSLOWCERTCertCallback cb, void *cbarg);
int
nsslowcert_NumPermCertsForSubject(NSSLOWCERTCertDBHandle *handle,
SECItem *derSubject);
SECStatus
nsslowcert_TraversePermCertsForNickname(NSSLOWCERTCertDBHandle *handle,
char *nickname, NSSLOWCERTCertCallback cb, void *cbarg);
int
nsslowcert_NumPermCertsForNickname(NSSLOWCERTCertDBHandle *handle,
char *nickname);
SECStatus
nsslowcert_GetCertTrust(NSSLOWCERTCertificate *cert,
NSSLOWCERTCertTrust *trust);
SECStatus
nsslowcert_SaveSMimeProfile(NSSLOWCERTCertDBHandle *dbhandle, char *emailAddr,
SECItem *derSubject, SECItem *emailProfile, SECItem *profileTime);
/*
* Change the trust attributes of a certificate and make them permanent
* in the database.
*/
SECStatus
nsslowcert_ChangeCertTrust(NSSLOWCERTCertDBHandle *handle,
NSSLOWCERTCertificate *cert, NSSLOWCERTCertTrust *trust);
PRBool
nsslowcert_needDBVerify(NSSLOWCERTCertDBHandle *handle);
void
nsslowcert_setDBVerify(NSSLOWCERTCertDBHandle *handle, PRBool value);
PRBool
nsslowcert_hasTrust(NSSLOWCERTCertTrust *trust);
void
nsslowcert_DestroyFreeLists(void);
void
nsslowcert_DestroyGlobalLocks(void);
void
pkcs11_freeNickname(char *nickname, char *space);
char *
pkcs11_copyNickname(char *nickname, char *space, int spaceLen);
void
pkcs11_freeStaticData(unsigned char *data, unsigned char *space);
unsigned char *
pkcs11_allocStaticData(int datalen, unsigned char *space, int spaceLen);
unsigned char *
pkcs11_copyStaticData(unsigned char *data, int datalen, unsigned char *space,
int spaceLen);
NSSLOWCERTCertificate *
nsslowcert_CreateCert(void);
certDBEntry *
nsslowcert_DecodeAnyDBEntry(SECItem *dbData, const SECItem *dbKey,
certDBEntryType entryType, void *pdata);
SEC_END_PROTOS
#endif /* _PCERTDB_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,450 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* certt.h - public data structures for the certificate library
*
* $Id: pcertt.h,v 1.1.2.2 2007-05-15 21:59:52 rrelyea%redhat.com Exp $
*/
#ifndef _PCERTT_H_
#define _PCERTT_H_
#include "prclist.h"
#include "pkcs11t.h"
#include "seccomon.h"
#include "secoidt.h"
#include "plarena.h"
#include "prcvar.h"
#include "nssilock.h"
#include "prio.h"
#include "prmon.h"
/* Non-opaque objects */
typedef struct NSSLOWCERTCertDBHandleStr NSSLOWCERTCertDBHandle;
typedef struct NSSLOWCERTCertKeyStr NSSLOWCERTCertKey;
typedef struct NSSLOWCERTTrustStr NSSLOWCERTTrust;
typedef struct NSSLOWCERTCertTrustStr NSSLOWCERTCertTrust;
typedef struct NSSLOWCERTCertificateStr NSSLOWCERTCertificate;
typedef struct NSSLOWCERTCertificateListStr NSSLOWCERTCertificateList;
typedef struct NSSLOWCERTIssuerAndSNStr NSSLOWCERTIssuerAndSN;
typedef struct NSSLOWCERTSignedDataStr NSSLOWCERTSignedData;
typedef struct NSSLOWCERTSubjectPublicKeyInfoStr NSSLOWCERTSubjectPublicKeyInfo;
typedef struct NSSLOWCERTValidityStr NSSLOWCERTValidity;
/*
** An X.509 validity object
*/
struct NSSLOWCERTValidityStr {
PRArenaPool *arena;
SECItem notBefore;
SECItem notAfter;
};
/*
* A serial number and issuer name, which is used as a database key
*/
struct NSSLOWCERTCertKeyStr {
SECItem serialNumber;
SECItem derIssuer;
};
/*
** A signed data object. Used to implement the "signed" macro used
** in the X.500 specs.
*/
struct NSSLOWCERTSignedDataStr {
SECItem data;
SECAlgorithmID signatureAlgorithm;
SECItem signature;
};
/*
** An X.509 subject-public-key-info object
*/
struct NSSLOWCERTSubjectPublicKeyInfoStr {
PRArenaPool *arena;
SECAlgorithmID algorithm;
SECItem subjectPublicKey;
};
typedef struct _certDBEntryCert certDBEntryCert;
typedef struct _certDBEntryRevocation certDBEntryRevocation;
struct NSSLOWCERTCertTrustStr {
unsigned int sslFlags;
unsigned int emailFlags;
unsigned int objectSigningFlags;
};
/*
** PKCS11 Trust representation
*/
struct NSSLOWCERTTrustStr {
NSSLOWCERTTrust *next;
NSSLOWCERTCertDBHandle *dbhandle;
SECItem dbKey; /* database key for this cert */
certDBEntryCert *dbEntry; /* database entry struct */
NSSLOWCERTCertTrust *trust;
SECItem *derCert; /* original DER for the cert */
unsigned char dbKeySpace[512];
};
/*
** An X.509 certificate object (the unsigned form)
*/
struct NSSLOWCERTCertificateStr {
/* the arena is used to allocate any data structures that have the same
* lifetime as the cert. This is all stuff that hangs off of the cert
* structure, and is all freed at the same time. I is used when the
* cert is decoded, destroyed, and at some times when it changes
* state
*/
NSSLOWCERTCertificate *next;
NSSLOWCERTCertDBHandle *dbhandle;
SECItem derCert; /* original DER for the cert */
SECItem derIssuer; /* DER for issuer name */
SECItem derSN;
SECItem serialNumber;
SECItem derSubject; /* DER for subject name */
SECItem derSubjKeyInfo;
NSSLOWCERTSubjectPublicKeyInfo *subjectPublicKeyInfo;
SECItem certKey; /* database key for this cert */
SECItem validity;
certDBEntryCert *dbEntry; /* database entry struct */
SECItem subjectKeyID; /* x509v3 subject key identifier */
SECItem extensions;
char *nickname;
char *emailAddr;
NSSLOWCERTCertTrust *trust;
/* the reference count is modified whenever someone looks up, dups
* or destroys a certificate
*/
int referenceCount;
char nicknameSpace[200];
char emailAddrSpace[200];
unsigned char certKeySpace[512];
};
#define SEC_CERTIFICATE_VERSION_1 0 /* default created */
#define SEC_CERTIFICATE_VERSION_2 1 /* v2 */
#define SEC_CERTIFICATE_VERSION_3 2 /* v3 extensions */
#define SEC_CRL_VERSION_1 0 /* default */
#define SEC_CRL_VERSION_2 1 /* v2 extensions */
struct NSSLOWCERTIssuerAndSNStr {
SECItem derIssuer;
SECItem serialNumber;
};
typedef SECStatus (* NSSLOWCERTCertCallback)(NSSLOWCERTCertificate *cert, void *arg);
/* This is the typedef for the callback passed to nsslowcert_OpenCertDB() */
/* callback to return database name based on version number */
typedef char * (*NSSLOWCERTDBNameFunc)(void *arg, int dbVersion);
/* XXX Lisa thinks the template declarations belong in cert.h, not here? */
#include "secasn1t.h" /* way down here because I expect template stuff to
* move out of here anyway */
/*
* Certificate Database related definitions and data structures
*/
/* version number of certificate database */
#define CERT_DB_FILE_VERSION 8
#define CERT_DB_V7_FILE_VERSION 7
#define CERT_DB_CONTENT_VERSION 2
#define SEC_DB_ENTRY_HEADER_LEN 3
#define SEC_DB_KEY_HEADER_LEN 1
/* All database entries have this form:
*
* byte offset field
* ----------- -----
* 0 version
* 1 type
* 2 flags
*/
/* database entry types */
typedef enum {
certDBEntryTypeVersion = 0,
certDBEntryTypeCert = 1,
certDBEntryTypeNickname = 2,
certDBEntryTypeSubject = 3,
certDBEntryTypeRevocation = 4,
certDBEntryTypeKeyRevocation = 5,
certDBEntryTypeSMimeProfile = 6,
certDBEntryTypeContentVersion = 7,
certDBEntryTypeBlob = 8
} certDBEntryType;
typedef struct {
certDBEntryType type;
unsigned int version;
unsigned int flags;
PRArenaPool *arena;
} certDBEntryCommon;
/*
* Certificate entry:
*
* byte offset field
* ----------- -----
* 0 sslFlags-msb
* 1 sslFlags-lsb
* 2 emailFlags-msb
* 3 emailFlags-lsb
* 4 objectSigningFlags-msb
* 5 objectSigningFlags-lsb
* 6 derCert-len-msb
* 7 derCert-len-lsb
* 8 nickname-len-msb
* 9 nickname-len-lsb
* ... derCert
* ... nickname
*
* NOTE: the nickname string as stored in the database is null terminated,
* in other words, the last byte of the db entry is always 0
* if a nickname is present.
* NOTE: if nickname is not present, then nickname-len-msb and
* nickname-len-lsb will both be zero.
*/
struct _certDBEntryCert {
certDBEntryCommon common;
certDBEntryCert *next;
NSSLOWCERTCertTrust trust;
SECItem derCert;
char *nickname;
char nicknameSpace[200];
unsigned char derCertSpace[2048];
};
/*
* Certificate Nickname entry:
*
* byte offset field
* ----------- -----
* 0 subjectname-len-msb
* 1 subjectname-len-lsb
* 2... subjectname
*
* The database key for this type of entry is a nickname string
* The "subjectname" value is the DER encoded DN of the identity
* that matches this nickname.
*/
typedef struct {
certDBEntryCommon common;
char *nickname;
SECItem subjectName;
} certDBEntryNickname;
#define DB_NICKNAME_ENTRY_HEADER_LEN 2
/*
* Certificate Subject entry:
*
* byte offset field
* ----------- -----
* 0 ncerts-msb
* 1 ncerts-lsb
* 2 nickname-msb
* 3 nickname-lsb
* 4 emailAddr-msb
* 5 emailAddr-lsb
* ... nickname
* ... emailAddr
* ...+2*i certkey-len-msb
* ...+1+2*i certkey-len-lsb
* ...+2*ncerts+2*i keyid-len-msb
* ...+1+2*ncerts+2*i keyid-len-lsb
* ... certkeys
* ... keyids
*
* The database key for this type of entry is the DER encoded subject name
* The "certkey" value is an array of certificate database lookup keys that
* points to the database entries for the certificates that matche
* this subject.
*
*/
typedef struct _certDBEntrySubject {
certDBEntryCommon common;
SECItem derSubject;
unsigned int ncerts;
char *nickname;
SECItem *certKeys;
SECItem *keyIDs;
char **emailAddrs;
unsigned int nemailAddrs;
} certDBEntrySubject;
#define DB_SUBJECT_ENTRY_HEADER_LEN 6
/*
* Certificate SMIME profile entry:
*
* byte offset field
* ----------- -----
* 0 subjectname-len-msb
* 1 subjectname-len-lsb
* 2 smimeoptions-len-msb
* 3 smimeoptions-len-lsb
* 4 options-date-len-msb
* 5 options-date-len-lsb
* 6... subjectname
* ... smimeoptions
* ... options-date
*
* The database key for this type of entry is the email address string
* The "subjectname" value is the DER encoded DN of the identity
* that matches this nickname.
* The "smimeoptions" value is a string that represents the algorithm
* capabilities on the remote user.
* The "options-date" is the date that the smime options value was created.
* This is generally the signing time of the signed message that contained
* the options. It is a UTCTime value.
*/
typedef struct {
certDBEntryCommon common;
char *emailAddr;
SECItem subjectName;
SECItem smimeOptions;
SECItem optionsDate;
} certDBEntrySMime;
#define DB_SMIME_ENTRY_HEADER_LEN 6
/*
* Crl/krl entry:
*
* byte offset field
* ----------- -----
* 0 derCert-len-msb
* 1 derCert-len-lsb
* 2 url-len-msb
* 3 url-len-lsb
* ... derCert
* ... url
*
* NOTE: the url string as stored in the database is null terminated,
* in other words, the last byte of the db entry is always 0
* if a nickname is present.
* NOTE: if url is not present, then url-len-msb and
* url-len-lsb will both be zero.
*/
#define DB_CRL_ENTRY_HEADER_LEN 4
struct _certDBEntryRevocation {
certDBEntryCommon common;
SECItem derCrl;
char *url; /* where to load the crl from */
};
/*
* Database Version Entry:
*
* byte offset field
* ----------- -----
* only the low level header...
*
* The database key for this type of entry is the string "Version"
*/
typedef struct {
certDBEntryCommon common;
} certDBEntryVersion;
#define SEC_DB_VERSION_KEY "Version"
#define SEC_DB_VERSION_KEY_LEN sizeof(SEC_DB_VERSION_KEY)
/*
* Database Content Version Entry:
*
* byte offset field
* ----------- -----
* 0 contentVersion
*
* The database key for this type of entry is the string "ContentVersion"
*/
typedef struct {
certDBEntryCommon common;
char contentVersion;
} certDBEntryContentVersion;
#define SEC_DB_CONTENT_VERSION_KEY "ContentVersion"
#define SEC_DB_CONTENT_VERSION_KEY_LEN sizeof(SEC_DB_CONTENT_VERSION_KEY)
typedef union {
certDBEntryCommon common;
certDBEntryCert cert;
certDBEntryContentVersion content;
certDBEntryNickname nickname;
certDBEntryRevocation revocation;
certDBEntrySMime smime;
certDBEntrySubject subject;
certDBEntryVersion version;
} certDBEntry;
/* length of the fixed part of a database entry */
#define DBCERT_V4_HEADER_LEN 7
#define DB_CERT_V5_ENTRY_HEADER_LEN 7
#define DB_CERT_V6_ENTRY_HEADER_LEN 7
#define DB_CERT_ENTRY_HEADER_LEN 10
/* common flags for all types of certificates */
#define CERTDB_VALID_PEER (1<<0)
#define CERTDB_TRUSTED (1<<1)
#define CERTDB_SEND_WARN (1<<2)
#define CERTDB_VALID_CA (1<<3)
#define CERTDB_TRUSTED_CA (1<<4) /* trusted for issuing server certs */
#define CERTDB_NS_TRUSTED_CA (1<<5)
#define CERTDB_USER (1<<6)
#define CERTDB_TRUSTED_CLIENT_CA (1<<7) /* trusted for issuing client certs */
#define CERTDB_INVISIBLE_CA (1<<8) /* don't show in UI */
#define CERTDB_GOVT_APPROVED_CA (1<<9) /* can do strong crypto in export ver */
#define CERTDB_NOT_TRUSTED (1<<10) /* explicitly don't trust this cert */
#define CERTDB_TRUSTED_UNKNOWN (1<<11) /* accept trust from another source */
/* bits not affected by the CKO_NETSCAPE_TRUST object */
#define CERTDB_PRESERVE_TRUST_BITS (CERTDB_USER | CERTDB_VALID_PEER | \
CERTDB_NS_TRUSTED_CA | CERTDB_VALID_CA | CERTDB_INVISIBLE_CA | \
CERTDB_GOVT_APPROVED_CA)
#endif /* _PCERTT_H_ */

View File

@@ -0,0 +1,773 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* The following code handles the storage of PKCS 11 modules used by the
* NSS. This file is written to abstract away how the modules are
* stored so we can deside that later.
*/
#include "pk11pars.h"
#include "lgdb.h"
#include "mcom_db.h"
#include "secerr.h"
#define FREE_CLEAR(p) if (p) { PORT_Free(p); p = NULL; }
/* Construct a database key for a given module */
static SECStatus secmod_MakeKey(DBT *key, char * module) {
int len = 0;
char *commonName;
commonName = secmod_argGetParamValue("name",module);
if (commonName == NULL) {
commonName = secmod_argGetParamValue("library",module);
}
if (commonName == NULL) return SECFailure;
len = PORT_Strlen(commonName);
key->data = commonName;
key->size = len;
return SECSuccess;
}
/* free out constructed database key */
static void
secmod_FreeKey(DBT *key)
{
if (key->data) {
PORT_Free(key->data);
}
key->data = NULL;
key->size = 0;
}
typedef struct secmodDataStr secmodData;
typedef struct secmodSlotDataStr secmodSlotData;
struct secmodDataStr {
unsigned char major;
unsigned char minor;
unsigned char nameStart[2];
unsigned char slotOffset[2];
unsigned char internal;
unsigned char fips;
unsigned char ssl[8];
unsigned char trustOrder[4];
unsigned char cipherOrder[4];
unsigned char reserved1;
unsigned char isModuleDB;
unsigned char isModuleDBOnly;
unsigned char isCritical;
unsigned char reserved[4];
unsigned char names[6]; /* enough space for the length fields */
};
struct secmodSlotDataStr {
unsigned char slotID[4];
unsigned char defaultFlags[4];
unsigned char timeout[4];
unsigned char askpw;
unsigned char hasRootCerts;
unsigned char reserved[18]; /* this makes it a round 32 bytes */
};
#define SECMOD_DB_VERSION_MAJOR 0
#define SECMOD_DB_VERSION_MINOR 6
#define SECMOD_DB_EXT1_VERSION_MAJOR 0
#define SECMOD_DB_EXT1_VERSION_MINOR 6
#define SECMOD_DB_NOUI_VERSION_MAJOR 0
#define SECMOD_DB_NOUI_VERSION_MINOR 4
#define SECMOD_PUTSHORT(dest,src) \
(dest)[1] = (unsigned char) ((src)&0xff); \
(dest)[0] = (unsigned char) (((src) >> 8) & 0xff);
#define SECMOD_PUTLONG(dest,src) \
(dest)[3] = (unsigned char) ((src)&0xff); \
(dest)[2] = (unsigned char) (((src) >> 8) & 0xff); \
(dest)[1] = (unsigned char) (((src) >> 16) & 0xff); \
(dest)[0] = (unsigned char) (((src) >> 24) & 0xff);
#define SECMOD_GETSHORT(src) \
((unsigned short) (((src)[0] << 8) | (src)[1]))
#define SECMOD_GETLONG(src) \
((unsigned long) (( (unsigned long) (src)[0] << 24) | \
( (unsigned long) (src)[1] << 16) | \
( (unsigned long) (src)[2] << 8) | \
(unsigned long) (src)[3]))
/*
* build a data base entry from a module
*/
static SECStatus
secmod_EncodeData(DBT *data, char * module)
{
secmodData *encoded = NULL;
secmodSlotData *slot;
unsigned char *dataPtr;
unsigned short len, len2 = 0, len3 = 0;
int count = 0;
unsigned short offset;
int dataLen, i;
unsigned long order;
unsigned long ssl[2];
char *commonName = NULL , *dllName = NULL, *param = NULL, *nss = NULL;
char *slotParams, *ciphers;
PK11PreSlotInfo *slotInfo = NULL;
SECStatus rv = SECFailure;
rv = secmod_argParseModuleSpec(module,&dllName,&commonName,&param,&nss);
if (rv != SECSuccess) return rv;
rv = SECFailure;
if (commonName == NULL) {
/* set error */
goto loser;
}
len = PORT_Strlen(commonName);
if (dllName) {
len2 = PORT_Strlen(dllName);
}
if (param) {
len3 = PORT_Strlen(param);
}
slotParams = secmod_argGetParamValue("slotParams",nss);
slotInfo = secmod_argParseSlotInfo(NULL,slotParams,&count);
if (slotParams) PORT_Free(slotParams);
if (count && slotInfo == NULL) {
/* set error */
goto loser;
}
dataLen = sizeof(secmodData) + len + len2 + len3 + sizeof(unsigned short) +
count*sizeof(secmodSlotData);
data->data = (unsigned char *) PORT_ZAlloc(dataLen);
encoded = (secmodData *)data->data;
dataPtr = (unsigned char *) data->data;
data->size = dataLen;
if (encoded == NULL) {
/* set error */
goto loser;
}
encoded->major = SECMOD_DB_VERSION_MAJOR;
encoded->minor = SECMOD_DB_VERSION_MINOR;
encoded->internal = (unsigned char)
(secmod_argHasFlag("flags","internal",nss) ? 1 : 0);
encoded->fips = (unsigned char)
(secmod_argHasFlag("flags","FIPS",nss) ? 1 : 0);
encoded->isModuleDB = (unsigned char)
(secmod_argHasFlag("flags","isModuleDB",nss) ? 1 : 0);
encoded->isModuleDBOnly = (unsigned char)
(secmod_argHasFlag("flags","isModuleDBOnly",nss) ? 1 : 0);
encoded->isCritical = (unsigned char)
(secmod_argHasFlag("flags","critical",nss) ? 1 : 0);
order = secmod_argReadLong("trustOrder", nss, SECMOD_DEFAULT_TRUST_ORDER,
NULL);
SECMOD_PUTLONG(encoded->trustOrder,order);
order = secmod_argReadLong("cipherOrder", nss, SECMOD_DEFAULT_CIPHER_ORDER,
NULL);
SECMOD_PUTLONG(encoded->cipherOrder,order);
ciphers = secmod_argGetParamValue("ciphers",nss);
secmod_argSetNewCipherFlags(&ssl[0], ciphers);
SECMOD_PUTLONG(encoded->ssl,ssl[0]);
SECMOD_PUTLONG(&encoded->ssl[4],ssl[1]);
if (ciphers) PORT_Free(ciphers);
offset = (unsigned short) &(((secmodData *)0)->names[0]);
SECMOD_PUTSHORT(encoded->nameStart,offset);
offset = offset + len + len2 + len3 + 3*sizeof(unsigned short);
SECMOD_PUTSHORT(encoded->slotOffset,offset);
SECMOD_PUTSHORT(&dataPtr[offset],((unsigned short)count));
slot = (secmodSlotData *)(dataPtr+offset+sizeof(unsigned short));
offset = 0;
SECMOD_PUTSHORT(encoded->names,len);
offset += sizeof(unsigned short);
PORT_Memcpy(&encoded->names[offset],commonName,len);
offset += len;
SECMOD_PUTSHORT(&encoded->names[offset],len2);
offset += sizeof(unsigned short);
if (len2) PORT_Memcpy(&encoded->names[offset],dllName,len2);
offset += len2;
SECMOD_PUTSHORT(&encoded->names[offset],len3);
offset += sizeof(unsigned short);
if (len3) PORT_Memcpy(&encoded->names[offset],param,len3);
offset += len3;
if (count) {
for (i=0; i < count; i++) {
SECMOD_PUTLONG(slot[i].slotID, slotInfo[i].slotID);
SECMOD_PUTLONG(slot[i].defaultFlags,
slotInfo[i].defaultFlags);
SECMOD_PUTLONG(slot[i].timeout,slotInfo[i].timeout);
slot[i].askpw = slotInfo[i].askpw;
slot[i].hasRootCerts = slotInfo[i].hasRootCerts;
PORT_Memset(slot[i].reserved, 0, sizeof(slot[i].reserved));
}
}
rv = SECSuccess;
loser:
if (commonName) PORT_Free(commonName);
if (dllName) PORT_Free(dllName);
if (param) PORT_Free(param);
if (slotInfo) PORT_Free(slotInfo);
if (nss) PORT_Free(nss);
return rv;
}
static void
secmod_FreeData(DBT *data)
{
if (data->data) {
PORT_Free(data->data);
}
}
static void
secmod_FreeSlotStrings(char **slotStrings, int count)
{
int i;
for (i=0; i < count; i++) {
if (slotStrings[i]) {
PR_smprintf_free(slotStrings[i]);
slotStrings[i] = NULL;
}
}
}
/*
* build a module from the data base entry.
*/
static char *
secmod_DecodeData(char *defParams, DBT *data, PRBool *retInternal)
{
secmodData *encoded;
secmodSlotData *slots;
PLArenaPool *arena;
char *commonName = NULL;
char *dllName = NULL;
char *parameters = NULL;
char *nss;
char *moduleSpec;
char **slotStrings = NULL;
unsigned char *names;
unsigned long slotCount;
unsigned long ssl0 =0;
unsigned long ssl1 =0;
unsigned long slotID;
unsigned long defaultFlags;
unsigned long timeout;
unsigned long trustOrder =SECMOD_DEFAULT_TRUST_ORDER;
unsigned long cipherOrder =SECMOD_DEFAULT_CIPHER_ORDER;
unsigned short len;
unsigned short namesOffset = 0; /* start of the names block */
unsigned long namesRunningOffset; /* offset to name we are
* currently processing */
unsigned short slotOffset;
PRBool isOldVersion = PR_FALSE;
PRBool internal;
PRBool isFIPS;
PRBool isModuleDB =PR_FALSE;
PRBool isModuleDBOnly =PR_FALSE;
PRBool extended =PR_FALSE;
int i;
arena = PORT_NewArena(SEC_ASN1_DEFAULT_ARENA_SIZE);
if (arena == NULL)
return NULL;
#define CHECK_SIZE(x) \
if ((unsigned int) data->size < (unsigned int)(x)) goto db_loser
/* -------------------------------------------------------------
** Process the buffer header, which is the secmodData struct.
** It may be an old or new version. Check the length for each.
*/
CHECK_SIZE( offsetof(secmodData, trustOrder[0]) );
encoded = (secmodData *)data->data;
internal = (encoded->internal != 0) ? PR_TRUE: PR_FALSE;
isFIPS = (encoded->fips != 0) ? PR_TRUE: PR_FALSE;
if (retInternal)
*retInternal = internal;
if (internal) {
parameters = PORT_ArenaStrdup(arena,defParams);
if (parameters == NULL)
goto loser;
}
if (internal && (encoded->major == SECMOD_DB_NOUI_VERSION_MAJOR) &&
(encoded->minor <= SECMOD_DB_NOUI_VERSION_MINOR)) {
isOldVersion = PR_TRUE;
}
if ((encoded->major == SECMOD_DB_EXT1_VERSION_MAJOR) &&
(encoded->minor >= SECMOD_DB_EXT1_VERSION_MINOR)) {
CHECK_SIZE( sizeof(secmodData));
trustOrder = SECMOD_GETLONG(encoded->trustOrder);
cipherOrder = SECMOD_GETLONG(encoded->cipherOrder);
isModuleDB = (encoded->isModuleDB != 0) ? PR_TRUE: PR_FALSE;
isModuleDBOnly = (encoded->isModuleDBOnly != 0) ? PR_TRUE: PR_FALSE;
extended = PR_TRUE;
}
if (internal && !extended) {
trustOrder = 0;
cipherOrder = 100;
}
/* decode SSL cipher enable flags */
ssl0 = SECMOD_GETLONG(encoded->ssl);
ssl1 = SECMOD_GETLONG(encoded->ssl + 4);
slotOffset = SECMOD_GETSHORT(encoded->slotOffset);
namesOffset = SECMOD_GETSHORT(encoded->nameStart);
/*--------------------------------------------------------------
** Now process the variable length set of names.
** The names have this structure:
** struct {
** BYTE commonNameLen[ 2 ];
** BYTE commonName [ commonNameLen ];
** BTTE libNameLen [ 2 ];
** BYTE libName [ libNameLen ];
** If it is "extended" it also has these members:
** BYTE initStringLen[ 2 ];
** BYTE initString [ initStringLen ];
** }
*/
namesRunningOffset = namesOffset;
/* copy the module's common name */
CHECK_SIZE( namesRunningOffset + 2);
names = (unsigned char *)data->data;
len = SECMOD_GETSHORT(names+namesRunningOffset);
CHECK_SIZE( namesRunningOffset + 2 + len);
commonName = (char*)PORT_ArenaAlloc(arena,len+1);
if (commonName == NULL)
goto loser;
PORT_Memcpy(commonName, names + namesRunningOffset + 2, len);
commonName[len] = 0;
namesRunningOffset += len + 2;
/* copy the module's shared library file name. */
CHECK_SIZE( namesRunningOffset + 2);
len = SECMOD_GETSHORT(names + namesRunningOffset);
if (len) {
CHECK_SIZE( namesRunningOffset + 2 + len);
dllName = (char*)PORT_ArenaAlloc(arena,len + 1);
if (dllName == NULL)
goto loser;
PORT_Memcpy(dllName, names + namesRunningOffset + 2, len);
dllName[len] = 0;
}
namesRunningOffset += len + 2;
/* copy the module's initialization string, if present. */
if (!internal && extended) {
CHECK_SIZE( namesRunningOffset + 2);
len = SECMOD_GETSHORT(names+namesRunningOffset);
if (len) {
CHECK_SIZE( namesRunningOffset + 2 + len );
parameters = (char*)PORT_ArenaAlloc(arena,len + 1);
if (parameters == NULL)
goto loser;
PORT_Memcpy(parameters,names + namesRunningOffset + 2, len);
parameters[len] = 0;
}
namesRunningOffset += len + 2;
}
/*
* Consistency check: Make sure the slot and names blocks don't
* overlap. These blocks can occur in any order, so this check is made
* in 2 parts. First we check the case where the slot block starts
* after the name block. Later, when we have the slot block length,
* we check the case where slot block starts before the name block.
* NOTE: in most cases any overlap will likely be detected by invalid
* data read from the blocks, but it's better to find out sooner
* than later.
*/
if (slotOffset >= namesOffset) { /* slot block starts after name block */
if (slotOffset < namesRunningOffset) {
goto db_loser;
}
}
/* ------------------------------------------------------------------
** Part 3, process the slot table.
** This part has this structure:
** struct {
** BYTE slotCount [ 2 ];
** secmodSlotData [ slotCount ];
** {
*/
CHECK_SIZE( slotOffset + 2 );
slotCount = SECMOD_GETSHORT((unsigned char *)data->data + slotOffset);
/*
* Consistency check: Part 2. We now have the slot block length, we can
* check the case where the slotblock procedes the name block.
*/
if (slotOffset < namesOffset) { /* slot block starts before name block */
if (namesOffset < slotOffset + 2 + slotCount*sizeof(secmodSlotData)) {
goto db_loser;
}
}
CHECK_SIZE( (slotOffset + 2 + slotCount * sizeof(secmodSlotData)));
slots = (secmodSlotData *) ((unsigned char *)data->data + slotOffset + 2);
/* slotCount; */
slotStrings = (char **)PORT_ArenaZAlloc(arena, slotCount * sizeof(char *));
if (slotStrings == NULL)
goto loser;
for (i=0; i < (int) slotCount; i++, slots++) {
PRBool hasRootCerts =PR_FALSE;
PRBool hasRootTrust =PR_FALSE;
slotID = SECMOD_GETLONG(slots->slotID);
defaultFlags = SECMOD_GETLONG(slots->defaultFlags);
timeout = SECMOD_GETLONG(slots->timeout);
hasRootCerts = slots->hasRootCerts;
if (isOldVersion && internal && (slotID != 2)) {
unsigned long internalFlags=
secmod_argSlotFlags("slotFlags",SECMOD_SLOT_FLAGS);
defaultFlags |= internalFlags;
}
if (hasRootCerts && !extended) {
trustOrder = 100;
}
slotStrings[i] = secmod_mkSlotString(slotID, defaultFlags, timeout,
(unsigned char)slots->askpw,
hasRootCerts, hasRootTrust);
if (slotStrings[i] == NULL) {
secmod_FreeSlotStrings(slotStrings,i);
goto loser;
}
}
nss = secmod_mkNSS(slotStrings, slotCount, internal, isFIPS, isModuleDB,
isModuleDBOnly, internal, trustOrder, cipherOrder,
ssl0, ssl1);
secmod_FreeSlotStrings(slotStrings,slotCount);
/* it's permissible (and normal) for nss to be NULL. it simply means
* there are no NSS specific parameters in the database */
moduleSpec = secmod_mkNewModuleSpec(dllName,commonName,parameters,nss);
PR_smprintf_free(nss);
PORT_FreeArena(arena,PR_TRUE);
return moduleSpec;
db_loser:
PORT_SetError(SEC_ERROR_BAD_DATABASE);
loser:
PORT_FreeArena(arena,PR_TRUE);
return NULL;
}
static DB *
secmod_OpenDB(const char *appName, const char *filename, const char *dbName,
PRBool readOnly, PRBool update)
{
DB *pkcs11db = NULL;
if (appName) {
char *secname = PORT_Strdup(filename);
int len = strlen(secname);
int status = RDB_FAIL;
if (len >= 3 && PORT_Strcmp(&secname[len-3],".db") == 0) {
secname[len-3] = 0;
}
pkcs11db=
rdbopen(appName, "", secname, readOnly ? NO_RDONLY:NO_RDWR, NULL);
if (update && !pkcs11db) {
DB *updatedb;
pkcs11db = rdbopen(appName, "", secname, NO_CREATE, &status);
if (!pkcs11db) {
if (status == RDB_RETRY) {
pkcs11db= rdbopen(appName, "", secname,
readOnly ? NO_RDONLY:NO_RDWR, NULL);
}
PORT_Free(secname);
return pkcs11db;
}
updatedb = dbopen(dbName, NO_RDONLY, 0600, DB_HASH, 0);
if (updatedb) {
db_Copy(pkcs11db,updatedb);
(*updatedb->close)(updatedb);
} else {
(*pkcs11db->close)(pkcs11db);
PORT_Free(secname);
return NULL;
}
}
PORT_Free(secname);
return pkcs11db;
}
/* I'm sure we should do more checks here sometime... */
pkcs11db = dbopen(dbName, readOnly ? NO_RDONLY : NO_RDWR, 0600, DB_HASH, 0);
/* didn't exist? create it */
if (pkcs11db == NULL) {
if (readOnly)
return NULL;
pkcs11db = dbopen( dbName, NO_CREATE, 0600, DB_HASH, 0 );
if (pkcs11db)
(* pkcs11db->sync)(pkcs11db, 0);
}
return pkcs11db;
}
static void
secmod_CloseDB(DB *pkcs11db)
{
(*pkcs11db->close)(pkcs11db);
}
static char *
secmod_addEscape(const char *string, char quote)
{
char *newString = 0;
int escapes = 0, size = 0;
const char *src;
char *dest;
for (src=string; *src ; src++) {
if ((*src == quote) || (*src == '\\')) escapes++;
size++;
}
newString = PORT_ZAlloc(escapes+size+1);
if (newString == NULL) {
return NULL;
}
for (src=string, dest=newString; *src; src++,dest++) {
if ((*src == '\\') || (*src == quote)) {
*dest++ = '\\';
}
*dest = *src;
}
return newString;
}
SECStatus legacy_AddSecmodDB(const char *appName, const char *filename,
const char *dbname, char *module, PRBool rw);
#define SECMOD_STEP 10
#define SFTK_DEFAULT_INTERNAL_INIT "library= name=\"NSS Internal PKCS #11 Module\" parameters=\"%s\" NSS=\"Flags=internal,critical trustOrder=75 cipherOrder=100 slotParams=(1={%s askpw=any timeout=30})\""
/*
* Read all the existing modules in
*/
char **
legacy_ReadSecmodDB(const char *appName, const char *filename,
const char *dbname, char *params, PRBool rw)
{
DBT key,data;
int ret;
DB *pkcs11db = NULL;
char **moduleList = NULL, **newModuleList = NULL;
int moduleCount = 1;
int useCount = SECMOD_STEP;
moduleList = (char **) PORT_ZAlloc(useCount*sizeof(char **));
if (moduleList == NULL) return NULL;
pkcs11db = secmod_OpenDB(appName,filename,dbname,PR_TRUE,rw);
if (pkcs11db == NULL) goto done;
/* read and parse the file or data base */
ret = (*pkcs11db->seq)(pkcs11db, &key, &data, R_FIRST);
if (ret) goto done;
do {
char *moduleString;
PRBool internal = PR_FALSE;
if ((moduleCount+1) >= useCount) {
useCount += SECMOD_STEP;
newModuleList =
(char **)PORT_Realloc(moduleList,useCount*sizeof(char *));
if (newModuleList == NULL) goto done;
moduleList = newModuleList;
PORT_Memset(&moduleList[moduleCount+1],0,
sizeof(char *)*SECMOD_STEP);
}
moduleString = secmod_DecodeData(params,&data,&internal);
if (internal) {
moduleList[0] = moduleString;
} else {
moduleList[moduleCount] = moduleString;
moduleCount++;
}
} while ( (*pkcs11db->seq)(pkcs11db, &key, &data, R_NEXT) == 0);
done:
if (!moduleList[0]) {
char * newparams = secmod_addEscape(params,'"');
if (newparams) {
moduleList[0] = PR_smprintf(SFTK_DEFAULT_INTERNAL_INIT,newparams,
SECMOD_SLOT_FLAGS);
PORT_Free(newparams);
}
}
/* deal with trust cert db here */
if (pkcs11db) {
secmod_CloseDB(pkcs11db);
} else if (moduleList[0] && rw) {
legacy_AddSecmodDB(appName,filename,dbname,moduleList[0], rw) ;
}
if (!moduleList[0]) {
PORT_Free(moduleList);
moduleList = NULL;
}
return moduleList;
}
SECStatus
legacy_ReleaseSecmodDBData(const char *appName, const char *filename,
const char *dbname, char **moduleSpecList, PRBool rw)
{
if (moduleSpecList) {
char **index;
for(index = moduleSpecList; *index; index++) {
PR_smprintf_free(*index);
}
PORT_Free(moduleSpecList);
}
return SECSuccess;
}
/*
* Delete a module from the Data Base
*/
SECStatus
legacy_DeleteSecmodDB(const char *appName, const char *filename,
const char *dbname, char *args, PRBool rw)
{
DBT key;
SECStatus rv = SECFailure;
DB *pkcs11db = NULL;
int ret;
if (!rw) return SECFailure;
/* make sure we have a db handle */
pkcs11db = secmod_OpenDB(appName,filename,dbname,PR_FALSE,PR_FALSE);
if (pkcs11db == NULL) {
return SECFailure;
}
rv = secmod_MakeKey(&key,args);
if (rv != SECSuccess) goto done;
rv = SECFailure;
ret = (*pkcs11db->del)(pkcs11db, &key, 0);
secmod_FreeKey(&key);
if (ret != 0) goto done;
ret = (*pkcs11db->sync)(pkcs11db, 0);
if (ret == 0) rv = SECSuccess;
done:
secmod_CloseDB(pkcs11db);
return rv;
}
/*
* Add a module to the Data base
*/
SECStatus
legacy_AddSecmodDB(const char *appName, const char *filename,
const char *dbname, char *module, PRBool rw)
{
DBT key,data;
SECStatus rv = SECFailure;
DB *pkcs11db = NULL;
int ret;
if (!rw) return SECFailure;
/* make sure we have a db handle */
pkcs11db = secmod_OpenDB(appName,filename,dbname,PR_FALSE,PR_FALSE);
if (pkcs11db == NULL) {
return SECFailure;
}
rv = secmod_MakeKey(&key,module);
if (rv != SECSuccess) goto done;
rv = secmod_EncodeData(&data,module);
if (rv != SECSuccess) {
secmod_FreeKey(&key);
goto done;
}
rv = SECFailure;
ret = (*pkcs11db->put)(pkcs11db, &key, &data, 0);
secmod_FreeKey(&key);
secmod_FreeData(&data);
if (ret != 0) goto done;
ret = (*pkcs11db->sync)(pkcs11db, 0);
if (ret == 0) rv = SECSuccess;
done:
secmod_CloseDB(pkcs11db);
return rv;
}

View File

@@ -0,0 +1,341 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* The following code handles the storage of PKCS 11 modules used by the
* NSS. This file is written to abstract away how the modules are
* stored so we can deside that later.
*/
#include "sftkdb.h"
#include "sdb.h"
#include "prsystem.h"
#include "prprf.h"
#include "lgglue.h"
#include "secerr.h"
static LGOpenFunc legacy_glue_open = NULL;
static LGReadSecmodFunc legacy_glue_readSecmod = NULL;
static LGReleaseSecmodFunc legacy_glue_releaseSecmod = NULL;
static LGDeleteSecmodFunc legacy_glue_deleteSecmod = NULL;
static LGAddSecmodFunc legacy_glue_addSecmod = NULL;
static LGShutdownFunc legacy_glue_shutdown = NULL;
/*
* The following 3 functions duplicate the work done by bl_LoadLibrary.
* We should make bl_LoadLibrary a global and replace the call to
* sftkdb_LoadLibrary(const char *libname) with it.
*/
#ifdef XP_UNIX
#include <unistd.h>
#define LG_MAX_LINKS 20
static char *
sftkdb_resolvePath(const char *orig)
{
int count = 0;
int len =0;
int ret = -1;
char *resolved = NULL;
char *source = NULL;
len = 1025; /* MAX PATH +1*/
if (strlen(orig)+1 > len) {
/* PATH TOO LONG */
return NULL;
}
resolved = PORT_Alloc(len);
if (!resolved) {
return NULL;
}
source = PORT_Alloc(len);
if (!source) {
goto loser;
}
PORT_Strcpy(source, orig);
/* Walk down all the links */
while ( count++ < LG_MAX_LINKS) {
char *tmp;
/* swap our previous sorce out with resolved */
/* read it */
ret = readlink(source, resolved, len-1);
if (ret < 0) {
break;
}
resolved[ret] = 0;
tmp = source; source = resolved; resolved = tmp;
}
if (count > 1) {
ret = 0;
}
loser:
if (resolved) {
PORT_Free(resolved);
}
if (ret < 0) {
if (source) {
PORT_Free(source);
source = NULL;
}
}
return source;
}
#endif
static PRLibrary *
sftkdb_LoadFromPath(const char *path, const char *libname)
{
char *c;
int pathLen, nameLen, fullPathLen;
char *fullPathName = NULL;
PRLibSpec libSpec;
PRLibrary *lib = NULL;
/* strip of our parent's library name */
c = strrchr(path, PR_GetDirectorySeparator());
if (!c) {
return NULL; /* invalid path */
}
pathLen = (c-path)+1;
nameLen = strlen(libname);
fullPathLen = pathLen + nameLen +1;
fullPathName = (char *)PORT_Alloc(fullPathLen);
if (fullPathName == NULL) {
return NULL; /* memory allocation error */
}
PORT_Memcpy(fullPathName, path, pathLen);
PORT_Memcpy(fullPathName+pathLen, libname, nameLen);
fullPathName[fullPathLen-1] = 0;
libSpec.type = PR_LibSpec_Pathname;
libSpec.value.pathname = fullPathName;
lib = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL);
PORT_Free(fullPathName);
return lib;
}
static PRLibrary *
sftkdb_LoadLibrary(const char *libname)
{
PRLibrary *lib = NULL;
PRFuncPtr fn_addr;
char *parentLibPath = NULL;
fn_addr = (PRFuncPtr) &sftkdb_LoadLibrary;
parentLibPath = PR_GetLibraryFilePathname(SOFTOKEN_LIB_NAME, fn_addr);
if (!parentLibPath) {
goto done;
}
lib = sftkdb_LoadFromPath(parentLibPath, libname);
#ifdef XP_UNIX
/* handle symbolic link case */
if (!lib) {
char *trueParentLibPath = sftkdb_resolvePath(parentLibPath);
if (!trueParentLibPath) {
goto done;
}
lib = sftkdb_LoadFromPath(trueParentLibPath, libname);
PORT_Free(trueParentLibPath);
}
#endif
PORT_Free(parentLibPath);
done:
/* still couldn't load it, try the generic path */
if (!lib) {
PRLibSpec libSpec;
libSpec.type = PR_LibSpec_Pathname;
libSpec.value.pathname = libname;
lib = PR_LoadLibraryWithFlags(libSpec, PR_LD_NOW | PR_LD_LOCAL);
}
return lib;
}
static PRLibrary *legacy_glue_lib = NULL;
static SECStatus
sftkdbLoad_Legacy()
{
PRLibrary *lib = NULL;
LGSetCryptFunc setCryptFunction = NULL;
if (legacy_glue_lib) {
return SECSuccess;
}
lib = sftkdb_LoadLibrary(SHLIB_PREFIX"lgdbm"SHLIB_VERSION"."SHLIB_SUFFIX);
if (lib == NULL) {
return SECFailure;
}
legacy_glue_open = (LGOpenFunc)PR_FindFunctionSymbol(lib, "legacy_Open");
legacy_glue_readSecmod = (LGReadSecmodFunc) PR_FindFunctionSymbol(lib,
"legacy_ReadSecmodDB");
legacy_glue_releaseSecmod = (LGReleaseSecmodFunc) PR_FindFunctionSymbol(lib,
"legacy_ReleaseSecmodDBData");
legacy_glue_deleteSecmod = (LGDeleteSecmodFunc) PR_FindFunctionSymbol(lib,
"legacy_DeleteSecmodDB");
legacy_glue_addSecmod = (LGAddSecmodFunc)PR_FindFunctionSymbol(lib,
"legacy_AddSecmodDB");
legacy_glue_shutdown = (LGShutdownFunc) PR_FindFunctionSymbol(lib,
"legacy_Shutdown");
setCryptFunction = (LGSetCryptFunc) PR_FindFunctionSymbol(lib,
"legacy_SetCryptFunctions");
if (!legacy_glue_open || !legacy_glue_readSecmod ||
!legacy_glue_releaseSecmod || !legacy_glue_deleteSecmod ||
!legacy_glue_addSecmod || !setCryptFunction) {
PR_UnloadLibrary(lib);
return SECFailure;
}
setCryptFunction(sftkdb_encrypt_stub,sftkdb_decrypt_stub);
legacy_glue_lib = lib;
return SECSuccess;
}
CK_RV
sftkdbCall_open(const char *dir, const char *certPrefix, const char *keyPrefix,
int certVersion, int keyVersion, int flags,
SDB **certDB, SDB **keyDB)
{
SECStatus rv;
rv = sftkdbLoad_Legacy();
if (rv != SECSuccess) {
return CKR_GENERAL_ERROR;
}
if (!legacy_glue_open) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
return (*legacy_glue_open)(dir, certPrefix, keyPrefix,
certVersion, keyVersion,
flags, certDB, keyDB);
}
char **
sftkdbCall_ReadSecmodDB(const char *appName, const char *filename,
const char *dbname, char *params, PRBool rw)
{
SECStatus rv;
rv = sftkdbLoad_Legacy();
if (rv != SECSuccess) {
return NULL;
}
if (!legacy_glue_readSecmod) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return NULL;
}
return (*legacy_glue_readSecmod)(appName, filename, dbname, params, rw);
}
SECStatus
sftkdbCall_ReleaseSecmodDBData(const char *appName,
const char *filename, const char *dbname,
char **moduleSpecList, PRBool rw)
{
SECStatus rv;
rv = sftkdbLoad_Legacy();
if (rv != SECSuccess) {
return rv;
}
if (!legacy_glue_releaseSecmod) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
return (*legacy_glue_releaseSecmod)(appName, filename, dbname,
moduleSpecList, rw);
}
SECStatus
sftkdbCall_DeleteSecmodDB(const char *appName,
const char *filename, const char *dbname,
char *args, PRBool rw)
{
SECStatus rv;
rv = sftkdbLoad_Legacy();
if (rv != SECSuccess) {
return rv;
}
if (!legacy_glue_deleteSecmod) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
return (*legacy_glue_deleteSecmod)(appName, filename, dbname, args, rw);
}
SECStatus
sftkdbCall_AddSecmodDB(const char *appName,
const char *filename, const char *dbname,
char *module, PRBool rw)
{
SECStatus rv;
rv = sftkdbLoad_Legacy();
if (rv != SECSuccess) {
return rv;
}
if (!legacy_glue_addSecmod) {
PORT_SetError(SEC_ERROR_LIBRARY_FAILURE);
return SECFailure;
}
return (*legacy_glue_addSecmod)(appName, filename, dbname, module, rw);
}
CK_RV
sftkdbCall_Shutdown(void)
{
CK_RV crv = CKR_OK;
if (legacy_glue_lib) {
return CKR_OK;
}
if (legacy_glue_shutdown) {
crv = (*legacy_glue_shutdown)();
}
PR_UnloadLibrary(legacy_glue_lib);
legacy_glue_lib = NULL;
legacy_glue_open = NULL;
legacy_glue_readSecmod = NULL;
legacy_glue_releaseSecmod = NULL;
legacy_glue_deleteSecmod = NULL;
legacy_glue_addSecmod = NULL;
return crv;
}

View File

@@ -0,0 +1,92 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* This code defines the glue layer between softoken and the legacy DB library
*/
#include "sdb.h"
/*
* function prototypes for the callbacks into softoken from the legacyDB
*/
typedef SECStatus (*LGEncryptFunc)(PRArenaPool *arena, SDB *sdb,
SECItem *plainText, SECItem **cipherText);
typedef SECStatus (*LGDecryptFunc)(SDB *sdb, SECItem *cipherText,
SECItem **plainText);
/*
* function prototypes for the exported functions.
*/
typedef CK_RV (*LGOpenFunc) (const char *dir, const char *certPrefix,
const char *keyPrefix,
int certVersion, int keyVersion, int flags,
SDB **certDB, SDB **keyDB);
typedef char ** (*LGReadSecmodFunc)(const char *appName,
const char *filename,
const char *dbname, char *params, PRBool rw);
typedef SECStatus (*LGReleaseSecmodFunc)(const char *appName,
const char *filename,
const char *dbname, char **params, PRBool rw);
typedef SECStatus (*LGDeleteSecmodFunc)(const char *appName,
const char *filename,
const char *dbname, char *params, PRBool rw);
typedef SECStatus (*LGAddSecmodFunc)(const char *appName,
const char *filename,
const char *dbname, char *params, PRBool rw);
typedef SECStatus (*LGShutdownFunc)(void);
typedef void (*LGSetCryptFunc)(LGEncryptFunc, LGDecryptFunc);
/*
* Softoken Glue Functions
*/
CK_RV sftkdbCall_open(const char *dir, const char *certPrefix,
const char *keyPrefix,
int certVersion, int keyVersion, int flags,
SDB **certDB, SDB **keyDB);
char ** sftkdbCall_ReadSecmodDB(const char *appName, const char *filename,
const char *dbname, char *params, PRBool rw);
SECStatus sftkdbCall_ReleaseSecmodDBData(const char *appName,
const char *filename, const char *dbname,
char **moduleSpecList, PRBool rw);
SECStatus sftkdbCall_DeleteSecmodDB(const char *appName,
const char *filename, const char *dbname,
char *args, PRBool rw);
SECStatus sftkdbCall_AddSecmodDB(const char *appName,
const char *filename, const char *dbname,
char *module, PRBool rw);
CK_RV sftkdbCall_Shutdown(void);

View File

@@ -0,0 +1,517 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "lowkeyi.h"
#include "secoid.h"
#include "secitem.h"
#include "secder.h"
#include "base64.h"
#include "secasn1.h"
#include "secerr.h"
#ifdef NSS_ENABLE_ECC
#include "softoken.h"
#endif
const SEC_ASN1Template nsslowkey_AttributeTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSSLOWKEYAttribute) },
{ SEC_ASN1_OBJECT_ID, offsetof(NSSLOWKEYAttribute, attrType) },
{ SEC_ASN1_SET_OF, offsetof(NSSLOWKEYAttribute, attrValue),
SEC_AnyTemplate },
{ 0 }
};
const SEC_ASN1Template nsslowkey_SetOfAttributeTemplate[] = {
{ SEC_ASN1_SET_OF, 0, nsslowkey_AttributeTemplate },
};
/* ASN1 Templates for new decoder/encoder */
const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[] = {
{ SEC_ASN1_SEQUENCE,
0, NULL, sizeof(NSSLOWKEYPrivateKeyInfo) },
{ SEC_ASN1_INTEGER,
offsetof(NSSLOWKEYPrivateKeyInfo,version) },
{ SEC_ASN1_INLINE,
offsetof(NSSLOWKEYPrivateKeyInfo,algorithm),
SECOID_AlgorithmIDTemplate },
{ SEC_ASN1_OCTET_STRING,
offsetof(NSSLOWKEYPrivateKeyInfo,privateKey) },
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED | SEC_ASN1_CONTEXT_SPECIFIC | 0,
offsetof(NSSLOWKEYPrivateKeyInfo, attributes),
nsslowkey_SetOfAttributeTemplate },
{ 0 }
};
const SEC_ASN1Template nsslowkey_PQGParamsTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(PQGParams) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,prime) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,subPrime) },
{ SEC_ASN1_INTEGER, offsetof(PQGParams,base) },
{ 0, }
};
const SEC_ASN1Template nsslowkey_RSAPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.version) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.modulus) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.publicExponent) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.privateExponent) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.prime1) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.prime2) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.exponent1) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.exponent2) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.rsa.coefficient) },
{ 0 }
};
const SEC_ASN1Template nsslowkey_DSAPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dsa.publicValue) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dsa.privateValue) },
{ 0, }
};
const SEC_ASN1Template nsslowkey_DSAPrivateKeyExportTemplate[] = {
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dsa.privateValue) },
};
const SEC_ASN1Template nsslowkey_DHPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.publicValue) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.privateValue) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.base) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.dh.prime) },
{ 0, }
};
#ifdef NSS_ENABLE_ECC
/* XXX This is just a placeholder for later when we support
* generic curves and need full-blown support for parsing EC
* parameters. For now, we only support named curves in which
* EC params are simply encoded as an object ID and we don't
* use nsslowkey_ECParamsTemplate.
*/
const SEC_ASN1Template nsslowkey_ECParamsTemplate[] = {
{ SEC_ASN1_CHOICE, offsetof(ECParams,type), NULL, sizeof(ECParams) },
{ SEC_ASN1_OBJECT_ID, offsetof(ECParams,curveOID), NULL, ec_params_named },
{ 0, }
};
/* NOTE: The SECG specification allows the private key structure
* to contain curve parameters but recommends that they be stored
* in the PrivateKeyAlgorithmIdentifier field of the PrivateKeyInfo
* instead.
*/
const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate[] = {
{ SEC_ASN1_SEQUENCE, 0, NULL, sizeof(NSSLOWKEYPrivateKey) },
{ SEC_ASN1_INTEGER, offsetof(NSSLOWKEYPrivateKey,u.ec.version) },
{ SEC_ASN1_OCTET_STRING,
offsetof(NSSLOWKEYPrivateKey,u.ec.privateValue) },
/* XXX The following template works for now since we only
* support named curves for which the parameters are
* encoded as an object ID. When we support generic curves,
* we'll need to define nsslowkey_ECParamsTemplate
*/
#if 1
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC | 0,
offsetof(NSSLOWKEYPrivateKey,u.ec.ecParams.curveOID),
SEC_ObjectIDTemplate },
#else
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC | 0,
offsetof(NSSLOWKEYPrivateKey,u.ec.ecParams),
nsslowkey_ECParamsTemplate },
#endif
{ SEC_ASN1_OPTIONAL | SEC_ASN1_CONSTRUCTED |
SEC_ASN1_EXPLICIT | SEC_ASN1_CONTEXT_SPECIFIC | 1,
offsetof(NSSLOWKEYPrivateKey,u.ec.publicValue),
SEC_BitStringTemplate },
{ 0, }
};
#endif /* NSS_ENABLE_ECC */
/*
* See bugzilla bug 125359
* Since NSS (via PKCS#11) wants to handle big integers as unsigned ints,
* all of the templates above that en/decode into integers must be converted
* from ASN.1's signed integer type. This is done by marking either the
* source or destination (encoding or decoding, respectively) type as
* siUnsignedInteger.
*/
void
prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.rsa.modulus.type = siUnsignedInteger;
key->u.rsa.publicExponent.type = siUnsignedInteger;
key->u.rsa.privateExponent.type = siUnsignedInteger;
key->u.rsa.prime1.type = siUnsignedInteger;
key->u.rsa.prime2.type = siUnsignedInteger;
key->u.rsa.exponent1.type = siUnsignedInteger;
key->u.rsa.exponent2.type = siUnsignedInteger;
key->u.rsa.coefficient.type = siUnsignedInteger;
}
void
prepare_low_pqg_params_for_asn1(PQGParams *params)
{
params->prime.type = siUnsignedInteger;
params->subPrime.type = siUnsignedInteger;
params->base.type = siUnsignedInteger;
}
void
prepare_low_dsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.dsa.publicValue.type = siUnsignedInteger;
key->u.dsa.privateValue.type = siUnsignedInteger;
key->u.dsa.params.prime.type = siUnsignedInteger;
key->u.dsa.params.subPrime.type = siUnsignedInteger;
key->u.dsa.params.base.type = siUnsignedInteger;
}
void
prepare_low_dsa_priv_key_export_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.dsa.privateValue.type = siUnsignedInteger;
}
void
prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.dh.prime.type = siUnsignedInteger;
key->u.dh.base.type = siUnsignedInteger;
key->u.dh.publicValue.type = siUnsignedInteger;
key->u.dh.privateValue.type = siUnsignedInteger;
}
#ifdef NSS_ENABLE_ECC
void
prepare_low_ecparams_for_asn1(ECParams *params)
{
params->DEREncoding.type = siUnsignedInteger;
params->curveOID.type = siUnsignedInteger;
}
void
prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key)
{
key->u.ec.version.type = siUnsignedInteger;
key->u.ec.ecParams.DEREncoding.type = siUnsignedInteger;
key->u.ec.ecParams.curveOID.type = siUnsignedInteger;
key->u.ec.privateValue.type = siUnsignedInteger;
key->u.ec.publicValue.type = siUnsignedInteger;
}
#endif /* NSS_ENABLE_ECC */
void
nsslowkey_DestroyPrivateKey(NSSLOWKEYPrivateKey *privk)
{
if (privk && privk->arena) {
PORT_FreeArena(privk->arena, PR_TRUE);
}
}
void
nsslowkey_DestroyPublicKey(NSSLOWKEYPublicKey *pubk)
{
if (pubk && pubk->arena) {
PORT_FreeArena(pubk->arena, PR_FALSE);
}
}
unsigned
nsslowkey_PublicModulusLen(NSSLOWKEYPublicKey *pubk)
{
unsigned char b0;
/* interpret modulus length as key strength... in
* fortezza that's the public key length */
switch (pubk->keyType) {
case NSSLOWKEYRSAKey:
b0 = pubk->u.rsa.modulus.data[0];
return b0 ? pubk->u.rsa.modulus.len : pubk->u.rsa.modulus.len - 1;
default:
break;
}
return 0;
}
unsigned
nsslowkey_PrivateModulusLen(NSSLOWKEYPrivateKey *privk)
{
unsigned char b0;
switch (privk->keyType) {
case NSSLOWKEYRSAKey:
b0 = privk->u.rsa.modulus.data[0];
return b0 ? privk->u.rsa.modulus.len : privk->u.rsa.modulus.len - 1;
default:
break;
}
return 0;
}
NSSLOWKEYPublicKey *
nsslowkey_ConvertToPublicKey(NSSLOWKEYPrivateKey *privk)
{
NSSLOWKEYPublicKey *pubk;
PLArenaPool *arena;
arena = PORT_NewArena (DER_DEFAULT_CHUNKSIZE);
if (arena == NULL) {
PORT_SetError (SEC_ERROR_NO_MEMORY);
return NULL;
}
switch(privk->keyType) {
case NSSLOWKEYRSAKey:
case NSSLOWKEYNullKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof (NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
if (privk->keyType == NSSLOWKEYNullKey) return pubk;
rv = SECITEM_CopyItem(arena, &pubk->u.rsa.modulus,
&privk->u.rsa.modulus);
if (rv == SECSuccess) {
rv = SECITEM_CopyItem (arena, &pubk->u.rsa.publicExponent,
&privk->u.rsa.publicExponent);
if (rv == SECSuccess)
return pubk;
}
} else {
PORT_SetError (SEC_ERROR_NO_MEMORY);
}
break;
case NSSLOWKEYDSAKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.publicValue,
&privk->u.dsa.publicValue);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.params.prime,
&privk->u.dsa.params.prime);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.params.subPrime,
&privk->u.dsa.params.subPrime);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dsa.params.base,
&privk->u.dsa.params.base);
if (rv == SECSuccess) return pubk;
}
break;
case NSSLOWKEYDHKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
rv = SECITEM_CopyItem(arena, &pubk->u.dh.publicValue,
&privk->u.dh.publicValue);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dh.prime,
&privk->u.dh.prime);
if (rv != SECSuccess) break;
rv = SECITEM_CopyItem(arena, &pubk->u.dh.base,
&privk->u.dh.base);
if (rv == SECSuccess) return pubk;
}
break;
#ifdef NSS_ENABLE_ECC
case NSSLOWKEYECKey:
pubk = (NSSLOWKEYPublicKey *)PORT_ArenaZAlloc(arena,
sizeof(NSSLOWKEYPublicKey));
if (pubk != NULL) {
SECStatus rv;
pubk->arena = arena;
pubk->keyType = privk->keyType;
rv = SECITEM_CopyItem(arena, &pubk->u.ec.publicValue,
&privk->u.ec.publicValue);
if (rv != SECSuccess) break;
pubk->u.ec.ecParams.arena = arena;
/* Copy the rest of the params */
rv = EC_CopyParams(arena, &(pubk->u.ec.ecParams),
&(privk->u.ec.ecParams));
if (rv == SECSuccess) return pubk;
}
break;
#endif /* NSS_ENABLE_ECC */
/* No Fortezza in Low Key implementations (Fortezza keys aren't
* stored in our data base */
default:
break;
}
PORT_FreeArena (arena, PR_FALSE);
return NULL;
}
NSSLOWKEYPrivateKey *
nsslowkey_CopyPrivateKey(NSSLOWKEYPrivateKey *privKey)
{
NSSLOWKEYPrivateKey *returnKey = NULL;
SECStatus rv = SECFailure;
PLArenaPool *poolp;
if(!privKey) {
return NULL;
}
poolp = PORT_NewArena(DER_DEFAULT_CHUNKSIZE);
if(!poolp) {
return NULL;
}
returnKey = (NSSLOWKEYPrivateKey*)PORT_ArenaZAlloc(poolp, sizeof(NSSLOWKEYPrivateKey));
if(!returnKey) {
rv = SECFailure;
goto loser;
}
returnKey->keyType = privKey->keyType;
returnKey->arena = poolp;
switch(privKey->keyType) {
case NSSLOWKEYRSAKey:
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.modulus),
&(privKey->u.rsa.modulus));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.version),
&(privKey->u.rsa.version));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.publicExponent),
&(privKey->u.rsa.publicExponent));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.privateExponent),
&(privKey->u.rsa.privateExponent));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.prime1),
&(privKey->u.rsa.prime1));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.prime2),
&(privKey->u.rsa.prime2));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.exponent1),
&(privKey->u.rsa.exponent1));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.exponent2),
&(privKey->u.rsa.exponent2));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.rsa.coefficient),
&(privKey->u.rsa.coefficient));
if(rv != SECSuccess) break;
break;
case NSSLOWKEYDSAKey:
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dsa.publicValue),
&(privKey->u.dsa.publicValue));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dsa.privateValue),
&(privKey->u.dsa.privateValue));
if(rv != SECSuccess) break;
returnKey->u.dsa.params.arena = poolp;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dsa.params.prime),
&(privKey->u.dsa.params.prime));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dsa.params.subPrime),
&(privKey->u.dsa.params.subPrime));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dsa.params.base),
&(privKey->u.dsa.params.base));
if(rv != SECSuccess) break;
break;
case NSSLOWKEYDHKey:
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dh.publicValue),
&(privKey->u.dh.publicValue));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dh.privateValue),
&(privKey->u.dh.privateValue));
if(rv != SECSuccess) break;
returnKey->u.dsa.params.arena = poolp;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dh.prime),
&(privKey->u.dh.prime));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.dh.base),
&(privKey->u.dh.base));
if(rv != SECSuccess) break;
break;
#ifdef NSS_ENABLE_ECC
case NSSLOWKEYECKey:
rv = SECITEM_CopyItem(poolp, &(returnKey->u.ec.version),
&(privKey->u.ec.version));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.ec.publicValue),
&(privKey->u.ec.publicValue));
if(rv != SECSuccess) break;
rv = SECITEM_CopyItem(poolp, &(returnKey->u.ec.privateValue),
&(privKey->u.ec.privateValue));
if(rv != SECSuccess) break;
returnKey->u.ec.ecParams.arena = poolp;
/* Copy the rest of the params */
rv = EC_CopyParams(poolp, &(returnKey->u.ec.ecParams),
&(privKey->u.ec.ecParams));
if (rv != SECSuccess) break;
break;
#endif /* NSS_ENABLE_ECC */
default:
rv = SECFailure;
}
loser:
if(rv != SECSuccess) {
PORT_FreeArena(poolp, PR_TRUE);
returnKey = NULL;
}
return returnKey;
}

View File

@@ -0,0 +1,108 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: lowkeyi.h,v 1.10.70.3 2007-02-28 20:44:54 rrelyea%redhat.com Exp $ */
#ifndef _LOWKEYI_H_
#define _LOWKEYI_H_
#include "prtypes.h"
#include "seccomon.h"
#include "secoidt.h"
#include "lowkeyti.h"
SEC_BEGIN_PROTOS
/*
* See bugzilla bug 125359
* Since NSS (via PKCS#11) wants to handle big integers as unsigned ints,
* all of the templates above that en/decode into integers must be converted
* from ASN.1's signed integer type. This is done by marking either the
* source or destination (encoding or decoding, respectively) type as
* siUnsignedInteger.
*/
extern void prepare_low_rsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_pqg_params_for_asn1(PQGParams *params);
extern void prepare_low_dsa_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_dsa_priv_key_export_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_dh_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
#ifdef NSS_ENABLE_ECC
extern void prepare_low_ec_priv_key_for_asn1(NSSLOWKEYPrivateKey *key);
extern void prepare_low_ecparams_for_asn1(ECParams *params);
#endif /* NSS_ENABLE_ECC */
/*
** Destroy a private key object.
** "key" the object
** "freeit" if PR_TRUE then free the object as well as its sub-objects
*/
extern void nsslowkey_DestroyPrivateKey(NSSLOWKEYPrivateKey *key);
/*
** Destroy a public key object.
** "key" the object
** "freeit" if PR_TRUE then free the object as well as its sub-objects
*/
extern void nsslowkey_DestroyPublicKey(NSSLOWKEYPublicKey *key);
/*
** Return the modulus length of "pubKey".
*/
extern unsigned int nsslowkey_PublicModulusLen(NSSLOWKEYPublicKey *pubKey);
/*
** Return the modulus length of "privKey".
*/
extern unsigned int nsslowkey_PrivateModulusLen(NSSLOWKEYPrivateKey *privKey);
/*
** Convert a low private key "privateKey" into a public low key
*/
extern NSSLOWKEYPublicKey
*nsslowkey_ConvertToPublicKey(NSSLOWKEYPrivateKey *privateKey);
/* Make a copy of a low private key in it's own arena.
* a return of NULL indicates an error.
*/
extern NSSLOWKEYPrivateKey *
nsslowkey_CopyPrivateKey(NSSLOWKEYPrivateKey *privKey);
SEC_END_PROTOS
#endif /* _LOWKEYI_H_ */

View File

@@ -0,0 +1,127 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Vipul Gupta <vipul.gupta@sun.com>, Sun Microsystems Laboratories
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _LOWKEYTI_H_
#define _LOWKEYTI_H_ 1
#include "blapit.h"
#include "prtypes.h"
#include "plarena.h"
#include "secitem.h"
#include "secasn1t.h"
#include "secoidt.h"
/*
** Typedef for callback to get a password "key".
*/
extern const SEC_ASN1Template nsslowkey_PQGParamsTemplate[];
extern const SEC_ASN1Template nsslowkey_RSAPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_DSAPrivateKeyExportTemplate[];
extern const SEC_ASN1Template nsslowkey_DHPrivateKeyTemplate[];
extern const SEC_ASN1Template nsslowkey_DHPrivateKeyExportTemplate[];
#ifdef NSS_ENABLE_ECC
#define NSSLOWKEY_EC_PRIVATE_KEY_VERSION 1 /* as per SECG 1 C.4 */
extern const SEC_ASN1Template nsslowkey_ECParamsTemplate[];
extern const SEC_ASN1Template nsslowkey_ECPrivateKeyTemplate[];
#endif /* NSS_ENABLE_ECC */
extern const SEC_ASN1Template nsslowkey_PrivateKeyInfoTemplate[];
extern const SEC_ASN1Template nsslowkey_EncryptedPrivateKeyInfoTemplate[];
/*
* PKCS #8 attributes
*/
struct NSSLOWKEYAttributeStr {
SECItem attrType;
SECItem *attrValue;
};
typedef struct NSSLOWKEYAttributeStr NSSLOWKEYAttribute;
/*
** A PKCS#8 private key info object
*/
struct NSSLOWKEYPrivateKeyInfoStr {
PLArenaPool *arena;
SECItem version;
SECAlgorithmID algorithm;
SECItem privateKey;
NSSLOWKEYAttribute **attributes;
};
typedef struct NSSLOWKEYPrivateKeyInfoStr NSSLOWKEYPrivateKeyInfo;
#define NSSLOWKEY_PRIVATE_KEY_INFO_VERSION 0 /* what we *create* */
typedef enum {
NSSLOWKEYNullKey = 0,
NSSLOWKEYRSAKey = 1,
NSSLOWKEYDSAKey = 2,
NSSLOWKEYDHKey = 4,
NSSLOWKEYECKey = 5
} NSSLOWKEYType;
/*
** An RSA public key object.
*/
struct NSSLOWKEYPublicKeyStr {
PLArenaPool *arena;
NSSLOWKEYType keyType ;
union {
RSAPublicKey rsa;
DSAPublicKey dsa;
DHPublicKey dh;
ECPublicKey ec;
} u;
};
typedef struct NSSLOWKEYPublicKeyStr NSSLOWKEYPublicKey;
/*
** Low Level private key object
** This is only used by the raw Crypto engines (crypto), keydb (keydb),
** and PKCS #11. Everyone else uses the high level key structure.
*/
struct NSSLOWKEYPrivateKeyStr {
PLArenaPool *arena;
NSSLOWKEYType keyType;
union {
RSAPrivateKey rsa;
DSAPrivateKey dsa;
DHPrivateKey dh;
ECPrivateKey ec;
} u;
};
typedef struct NSSLOWKEYPrivateKeyStr NSSLOWKEYPrivateKey;
#endif /* _LOWKEYTI_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,135 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _SECPKCS5_H_
#define _SECPKCS5_H_
#include "plarena.h"
#include "secitem.h"
#include "seccomon.h"
#include "secoidt.h"
#include "hasht.h"
typedef SECItem * (* SEC_PKCS5GetPBEPassword)(void *arg);
/* used for V2 PKCS 12 Draft Spec */
typedef enum {
pbeBitGenIDNull = 0,
pbeBitGenCipherKey = 0x01,
pbeBitGenCipherIV = 0x02,
pbeBitGenIntegrityKey = 0x03
} PBEBitGenID;
typedef enum {
NSSPKCS5_PBKDF1 = 0,
NSSPKCS5_PBKDF2 = 1,
NSSPKCS5_PKCS12_V2 = 2
} NSSPKCS5PBEType;
typedef struct NSSPKCS5PBEParameterStr NSSPKCS5PBEParameter;
struct NSSPKCS5PBEParameterStr {
PRArenaPool *poolp;
SECItem salt; /* octet string */
SECItem iteration; /* integer */
/* used locally */
int iter;
int keyLen;
int ivLen;
HASH_HashType hashType;
NSSPKCS5PBEType pbeType;
PBEBitGenID keyID;
SECOidTag encAlg;
PRBool is2KeyDES;
};
SEC_BEGIN_PROTOS
/* Create a PKCS5 Algorithm ID
* The algorithm ID is set up using the PKCS #5 parameter structure
* algorithm is the PBE algorithm ID for the desired algorithm
* pbe is a pbe param block with all the info needed to create the
* algorithm id.
* If an error occurs or the algorithm specified is not supported
* or is not a password based encryption algorithm, NULL is returned.
* Otherwise, a pointer to the algorithm id is returned.
*/
extern SECAlgorithmID *
nsspkcs5_CreateAlgorithmID(PRArenaPool *arena, SECOidTag algorithm,
NSSPKCS5PBEParameter *pbe);
/*
* Convert an Algorithm ID to a PBE Param.
* NOTE: this does not suppport PKCS 5 v2 because it's only used for the
* keyDB which only support PKCS 5 v1, PFX, and PKCS 12.
*/
NSSPKCS5PBEParameter *
nsspkcs5_AlgidToParam(SECAlgorithmID *algid);
/*
* Convert an Algorithm ID to a PBE Param.
* NOTE: this does not suppport PKCS 5 v2 because it's only used for the
* keyDB which only support PKCS 5 v1, PFX, and PKCS 12.
*/
NSSPKCS5PBEParameter *
nsspkcs5_NewParam(SECOidTag alg, SECItem *salt, int iterator);
/* Encrypt/Decrypt data using password based encryption.
* algid is the PBE algorithm identifier,
* pwitem is the password,
* src is the source for encryption/decryption,
* encrypt is PR_TRUE for encryption, PR_FALSE for decryption.
* The key and iv are generated based upon PKCS #5 then the src
* is either encrypted or decrypted. If an error occurs, NULL
* is returned, otherwise the ciphered contents is returned.
*/
extern SECItem *
nsspkcs5_CipherData(NSSPKCS5PBEParameter *, SECItem *pwitem,
SECItem *src, PRBool encrypt, PRBool *update);
extern SECItem *
nsspkcs5_ComputeKeyAndIV(NSSPKCS5PBEParameter *, SECItem *pwitem,
SECItem *iv, PRBool faulty3DES);
/* Destroys PBE parameter */
extern void
nsspkcs5_DestroyPBEParameter(NSSPKCS5PBEParameter *param);
SEC_END_PROTOS
#endif

View File

@@ -0,0 +1,98 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
CORE_DEPTH = ../../..
MODULE = nss
DIRS = legacydb
REQUIRES = dbm
LIBRARY_NAME = softokn
LIBRARY_VERSION = 3
MAPFILE = $(OBJDIR)/softokn.def
DEFINES += -DSHLIB_SUFFIX=\"$(DLL_SUFFIX)\" -DSHLIB_PREFIX=\"$(DLL_PREFIX)\" -DSOFTOKEN_LIB_NAME=\"$(notdir $(SHARED_LIBRARY))\" -DSHLIB_VERSION=\"$(LIBRARY_VERSION)\"
EXPORTS = \
pkcs11.h \
pkcs11f.h \
pkcs11p.h \
pkcs11t.h \
pkcs11n.h \
pkcs11u.h \
sdb.h \
sftkdbt.h \
$(NULL)
PRIVATE_EXPORTS = \
lgglue.h \
pk11pars.h \
pkcs11ni.h \
softoken.h \
softoknt.h \
softkver.h \
$(NULL)
CSRCS = \
ecdecode.c \
fipsaudt.c \
fipstest.c \
fipstokn.c \
lgglue.c \
lowkey.c \
lowpbe.c \
padbuf.c \
pkcs11.c \
pkcs11c.c \
pkcs11u.c \
rsawrapr.c \
sdb.c \
sftkdb.c \
sftkpars.c \
softkver.c \
tlsprf.c \
$(NULL)
ifdef NSS_ENABLE_ECC
DEFINES += -DNSS_ENABLE_ECC
endif
ifdef SQLITE_UNSAFE_THREADS
DEFINES += -DSQLITE_UNSAFE_THREADS
endif

View File

@@ -0,0 +1,80 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "blapit.h"
#include "secport.h"
#include "secerr.h"
/*
* Prepare a buffer for DES encryption, growing to the appropriate boundary,
* filling with the appropriate padding.
*
* NOTE: If arena is non-NULL, we re-allocate from there, otherwise
* we assume (and use) XP memory (re)allocation.
*/
unsigned char *
DES_PadBuffer(PRArenaPool *arena, unsigned char *inbuf, unsigned int inlen,
unsigned int *outlen)
{
unsigned char *outbuf;
unsigned int des_len;
unsigned int i;
unsigned char des_pad_len;
/*
* We need from 1 to DES_KEY_LENGTH bytes -- we *always* grow.
* The extra bytes contain the value of the length of the padding:
* if we have 2 bytes of padding, then the padding is "0x02, 0x02".
*/
des_len = (inlen + DES_KEY_LENGTH) & ~(DES_KEY_LENGTH - 1);
if (arena != NULL) {
outbuf = (unsigned char*)PORT_ArenaGrow (arena, inbuf, inlen, des_len);
} else {
outbuf = (unsigned char*)PORT_Realloc (inbuf, des_len);
}
if (outbuf == NULL) {
PORT_SetError (SEC_ERROR_NO_MEMORY);
return NULL;
}
des_pad_len = des_len - inlen;
for (i = inlen; i < des_len; i++)
outbuf[i] = des_pad_len;
*outlen = des_len;
return outbuf;
}

View File

@@ -0,0 +1,871 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* The following handles the loading, unloading and management of
* various PCKS #11 modules
*/
/*
* this header file contains routines for parsing PKCS #11 module spec
* strings. It contains 'C' code and should only be included in one module.
* Currently it is included in both softoken and the wrapper.
*/
#include <ctype.h>
#include "pkcs11.h"
#include "seccomon.h"
#include "prprf.h"
#include "secmodt.h"
#include "pk11init.h"
#define SECMOD_ARG_LIBRARY_PARAMETER "library="
#define SECMOD_ARG_NAME_PARAMETER "name="
#define SECMOD_ARG_MODULE_PARAMETER "parameters="
#define SECMOD_ARG_NSS_PARAMETER "NSS="
#define SECMOD_ARG_FORTEZZA_FLAG "FORTEZZA"
#define SECMOD_ARG_ESCAPE '\\'
struct secmodargSlotFlagTable {
char *name;
int len;
unsigned long value;
};
#define SECMOD_DEFAULT_CIPHER_ORDER 0
#define SECMOD_DEFAULT_TRUST_ORDER 50
#define SECMOD_ARG_ENTRY(arg,flag) \
{ #arg , sizeof(#arg)-1, flag }
static struct secmodargSlotFlagTable secmod_argSlotFlagTable[] = {
SECMOD_ARG_ENTRY(RSA,SECMOD_RSA_FLAG),
SECMOD_ARG_ENTRY(DSA,SECMOD_RSA_FLAG),
SECMOD_ARG_ENTRY(RC2,SECMOD_RC4_FLAG),
SECMOD_ARG_ENTRY(RC4,SECMOD_RC2_FLAG),
SECMOD_ARG_ENTRY(DES,SECMOD_DES_FLAG),
SECMOD_ARG_ENTRY(DH,SECMOD_DH_FLAG),
SECMOD_ARG_ENTRY(FORTEZZA,SECMOD_FORTEZZA_FLAG),
SECMOD_ARG_ENTRY(RC5,SECMOD_RC5_FLAG),
SECMOD_ARG_ENTRY(SHA1,SECMOD_SHA1_FLAG),
SECMOD_ARG_ENTRY(MD5,SECMOD_MD5_FLAG),
SECMOD_ARG_ENTRY(MD2,SECMOD_MD2_FLAG),
SECMOD_ARG_ENTRY(SSL,SECMOD_SSL_FLAG),
SECMOD_ARG_ENTRY(TLS,SECMOD_TLS_FLAG),
SECMOD_ARG_ENTRY(AES,SECMOD_AES_FLAG),
SECMOD_ARG_ENTRY(Camellia,SECMOD_CAMELLIA_FLAG),
SECMOD_ARG_ENTRY(PublicCerts,SECMOD_FRIENDLY_FLAG),
SECMOD_ARG_ENTRY(RANDOM,SECMOD_RANDOM_FLAG),
};
#define SECMOD_HANDLE_STRING_ARG(param,target,value,command) \
if (PORT_Strncasecmp(param,value,sizeof(value)-1) == 0) { \
param += sizeof(value)-1; \
if (target) PORT_Free(target); \
target = secmod_argFetchValue(param,&next); \
param += next; \
command ;\
} else
#define SECMOD_HANDLE_FINAL_ARG(param) \
{ param = secmod_argSkipParameter(param); } param = secmod_argStrip(param);
static int secmod_argSlotFlagTableSize =
sizeof(secmod_argSlotFlagTable)/sizeof(secmod_argSlotFlagTable[0]);
static PRBool secmod_argGetPair(char c) {
switch (c) {
case '\'': return c;
case '\"': return c;
case '<': return '>';
case '{': return '}';
case '[': return ']';
case '(': return ')';
default: break;
}
return ' ';
}
static PRBool secmod_argIsBlank(char c) {
return isspace(c);
}
static PRBool secmod_argIsEscape(char c) {
return c == '\\';
}
static PRBool secmod_argIsQuote(char c) {
switch (c) {
case '\'':
case '\"':
case '<':
case '{': /* } end curly to keep vi bracket matching working */
case '(': /* ) */
case '[': /* ] */ return PR_TRUE;
default: break;
}
return PR_FALSE;
}
static PRBool secmod_argHasChar(char *v, char c)
{
for ( ;*v; v++) {
if (*v == c) return PR_TRUE;
}
return PR_FALSE;
}
static PRBool secmod_argHasBlanks(char *v)
{
for ( ;*v; v++) {
if (secmod_argIsBlank(*v)) return PR_TRUE;
}
return PR_FALSE;
}
static char *secmod_argStrip(char *c) {
while (*c && secmod_argIsBlank(*c)) c++;
return c;
}
static char *
secmod_argFindEnd(char *string) {
char endChar = ' ';
PRBool lastEscape = PR_FALSE;
if (secmod_argIsQuote(*string)) {
endChar = secmod_argGetPair(*string);
string++;
}
for (;*string; string++) {
if (lastEscape) {
lastEscape = PR_FALSE;
continue;
}
if (secmod_argIsEscape(*string) && !lastEscape) {
lastEscape = PR_TRUE;
continue;
}
if ((endChar == ' ') && secmod_argIsBlank(*string)) break;
if (*string == endChar) {
break;
}
}
return string;
}
static char *
secmod_argFetchValue(char *string, int *pcount)
{
char *end = secmod_argFindEnd(string);
char *retString, *copyString;
PRBool lastEscape = PR_FALSE;
int len;
len = end - string;
if (len == 0) {
*pcount = 0;
return NULL;
}
copyString = retString = (char *)PORT_Alloc(len+1);
if (*end) len++;
*pcount = len;
if (retString == NULL) return NULL;
if (secmod_argIsQuote(*string)) string++;
for (; string < end; string++) {
if (secmod_argIsEscape(*string) && !lastEscape) {
lastEscape = PR_TRUE;
continue;
}
lastEscape = PR_FALSE;
*copyString++ = *string;
}
*copyString = 0;
return retString;
}
static char *
secmod_argSkipParameter(char *string)
{
char *end;
/* look for the end of the <name>= */
for (;*string; string++) {
if (*string == '=') { string++; break; }
if (secmod_argIsBlank(*string)) return(string);
}
end = secmod_argFindEnd(string);
if (*end) end++;
return end;
}
static SECStatus
secmod_argParseModuleSpec(char *modulespec, char **lib, char **mod,
char **parameters, char **nss)
{
int next;
modulespec = secmod_argStrip(modulespec);
*lib = *mod = *parameters = *nss = 0;
while (*modulespec) {
SECMOD_HANDLE_STRING_ARG(modulespec,*lib,SECMOD_ARG_LIBRARY_PARAMETER,;)
SECMOD_HANDLE_STRING_ARG(modulespec,*mod,SECMOD_ARG_NAME_PARAMETER,;)
SECMOD_HANDLE_STRING_ARG(modulespec,*parameters,
SECMOD_ARG_MODULE_PARAMETER,;)
SECMOD_HANDLE_STRING_ARG(modulespec,*nss,SECMOD_ARG_NSS_PARAMETER,;)
SECMOD_HANDLE_FINAL_ARG(modulespec)
}
return SECSuccess;
}
static char *
secmod_argGetParamValue(char *paramName,char *parameters)
{
char searchValue[256];
int paramLen = strlen(paramName);
char *returnValue = NULL;
int next;
if ((parameters == NULL) || (*parameters == 0)) return NULL;
PORT_Assert(paramLen+2 < sizeof(searchValue));
PORT_Strcpy(searchValue,paramName);
PORT_Strcat(searchValue,"=");
while (*parameters) {
if (PORT_Strncasecmp(parameters,searchValue,paramLen+1) == 0) {
parameters += paramLen+1;
returnValue = secmod_argFetchValue(parameters,&next);
break;
} else {
parameters = secmod_argSkipParameter(parameters);
}
parameters = secmod_argStrip(parameters);
}
return returnValue;
}
static char *
secmod_argNextFlag(char *flags)
{
for (; *flags ; flags++) {
if (*flags == ',') {
flags++;
break;
}
}
return flags;
}
static PRBool
secmod_argHasFlag(char *label, char *flag, char *parameters)
{
char *flags,*index;
int len = strlen(flag);
PRBool found = PR_FALSE;
flags = secmod_argGetParamValue(label,parameters);
if (flags == NULL) return PR_FALSE;
for (index=flags; *index; index=secmod_argNextFlag(index)) {
if (PORT_Strncasecmp(index,flag,len) == 0) {
found=PR_TRUE;
break;
}
}
PORT_Free(flags);
return found;
}
static void
secmod_argSetNewCipherFlags(unsigned long *newCiphers,char *cipherList)
{
newCiphers[0] = newCiphers[1] = 0;
if ((cipherList == NULL) || (*cipherList == 0)) return;
for (;*cipherList; cipherList=secmod_argNextFlag(cipherList)) {
if (PORT_Strncasecmp(cipherList,SECMOD_ARG_FORTEZZA_FLAG,
sizeof(SECMOD_ARG_FORTEZZA_FLAG)-1) == 0) {
newCiphers[0] |= SECMOD_FORTEZZA_FLAG;
}
/* add additional flags here as necessary */
/* direct bit mapping escape */
if (*cipherList == 0) {
if (cipherList[1] == 'l') {
newCiphers[1] |= atoi(&cipherList[2]);
} else {
newCiphers[0] |= atoi(&cipherList[2]);
}
}
}
}
/*
* decode a number. handle octal (leading '0'), hex (leading '0x') or decimal
*/
static long
secmod_argDecodeNumber(char *num)
{
int radix = 10;
unsigned long value = 0;
long retValue = 0;
int sign = 1;
int digit;
if (num == NULL) return retValue;
num = secmod_argStrip(num);
if (*num == '-') {
sign = -1;
num++;
}
if (*num == '0') {
radix = 8;
num++;
if ((*num == 'x') || (*num == 'X')) {
radix = 16;
num++;
}
}
for ( ;*num; num++ ) {
if (isdigit(*num)) {
digit = *num - '0';
} else if ((*num >= 'a') && (*num <= 'f')) {
digit = *num - 'a' + 10;
} else if ((*num >= 'A') && (*num <= 'F')) {
digit = *num - 'A' + 10;
} else {
break;
}
if (digit >= radix) break;
value = value*radix + digit;
}
retValue = ((int) value) * sign;
return retValue;
}
static long
secmod_argReadLong(char *label,char *params, long defValue, PRBool *isdefault)
{
char *value;
long retValue;
if (isdefault) *isdefault = PR_FALSE;
value = secmod_argGetParamValue(label,params);
if (value == NULL) {
if (isdefault) *isdefault = PR_TRUE;
return defValue;
}
retValue = secmod_argDecodeNumber(value);
if (value) PORT_Free(value);
return retValue;
}
static unsigned long
secmod_argSlotFlags(char *label,char *params)
{
char *flags,*index;
unsigned long retValue = 0;
int i;
PRBool all = PR_FALSE;
flags = secmod_argGetParamValue(label,params);
if (flags == NULL) return 0;
if (PORT_Strcasecmp(flags,"all") == 0) all = PR_TRUE;
for (index=flags; *index; index=secmod_argNextFlag(index)) {
for (i=0; i < secmod_argSlotFlagTableSize; i++) {
if (all || (PORT_Strncasecmp(index, secmod_argSlotFlagTable[i].name,
secmod_argSlotFlagTable[i].len) == 0)) {
retValue |= secmod_argSlotFlagTable[i].value;
}
}
}
PORT_Free(flags);
return retValue;
}
static void
secmod_argDecodeSingleSlotInfo(char *name, char *params,
PK11PreSlotInfo *slotInfo)
{
char *askpw;
slotInfo->slotID=secmod_argDecodeNumber(name);
slotInfo->defaultFlags=secmod_argSlotFlags("slotFlags",params);
slotInfo->timeout=secmod_argReadLong("timeout",params, 0, NULL);
askpw = secmod_argGetParamValue("askpw",params);
slotInfo->askpw = 0;
if (askpw) {
if (PORT_Strcasecmp(askpw,"every") == 0) {
slotInfo->askpw = -1;
} else if (PORT_Strcasecmp(askpw,"timeout") == 0) {
slotInfo->askpw = 1;
}
PORT_Free(askpw);
slotInfo->defaultFlags |= PK11_OWN_PW_DEFAULTS;
}
slotInfo->hasRootCerts = secmod_argHasFlag("rootFlags", "hasRootCerts",
params);
slotInfo->hasRootTrust = secmod_argHasFlag("rootFlags", "hasRootTrust",
params);
}
static char *
secmod_argGetName(char *inString, int *next)
{
char *name=NULL;
char *string;
int len;
/* look for the end of the <name>= */
for (string = inString;*string; string++) {
if (*string == '=') { break; }
if (secmod_argIsBlank(*string)) break;
}
len = string - inString;
*next = len;
if (*string == '=') (*next) += 1;
if (len > 0) {
name = PORT_Alloc(len+1);
PORT_Strncpy(name,inString,len);
name[len] = 0;
}
return name;
}
static PK11PreSlotInfo *
secmod_argParseSlotInfo(PRArenaPool *arena, char *slotParams, int *retCount)
{
char *slotIndex;
PK11PreSlotInfo *slotInfo = NULL;
int i=0,count = 0,next;
*retCount = 0;
if ((slotParams == NULL) || (*slotParams == 0)) return NULL;
/* first count the number of slots */
for (slotIndex = secmod_argStrip(slotParams); *slotIndex;
slotIndex = secmod_argStrip(secmod_argSkipParameter(slotIndex))) {
count++;
}
/* get the data structures */
if (arena) {
slotInfo = (PK11PreSlotInfo *)
PORT_ArenaAlloc(arena,count*sizeof(PK11PreSlotInfo));
PORT_Memset(slotInfo,0,count*sizeof(PK11PreSlotInfo));
} else {
slotInfo = (PK11PreSlotInfo *)
PORT_ZAlloc(count*sizeof(PK11PreSlotInfo));
}
if (slotInfo == NULL) return NULL;
for (slotIndex = secmod_argStrip(slotParams), i = 0;
*slotIndex && i < count ; ) {
char *name;
name = secmod_argGetName(slotIndex,&next);
slotIndex += next;
if (!secmod_argIsBlank(*slotIndex)) {
char *args = secmod_argFetchValue(slotIndex,&next);
slotIndex += next;
if (args) {
secmod_argDecodeSingleSlotInfo(name,args,&slotInfo[i]);
i++;
PORT_Free(args);
}
}
if (name) PORT_Free(name);
slotIndex = secmod_argStrip(slotIndex);
}
*retCount = i;
return slotInfo;
}
static char *secmod_nullString = "";
static char *
secmod_formatValue(PRArenaPool *arena, char *value, char quote)
{
char *vp,*vp2,*retval;
int size = 0, escapes = 0;
for (vp=value; *vp ;vp++) {
if ((*vp == quote) || (*vp == SECMOD_ARG_ESCAPE)) escapes++;
size++;
}
if (arena) {
retval = PORT_ArenaZAlloc(arena,size+escapes+1);
} else {
retval = PORT_ZAlloc(size+escapes+1);
}
if (retval == NULL) return NULL;
vp2 = retval;
for (vp=value; *vp; vp++) {
if ((*vp == quote) || (*vp == SECMOD_ARG_ESCAPE))
*vp2++ = SECMOD_ARG_ESCAPE;
*vp2++ = *vp;
}
return retval;
}
static char *secmod_formatPair(char *name,char *value, char quote)
{
char openQuote = quote;
char closeQuote = secmod_argGetPair(quote);
char *newValue = NULL;
char *returnValue;
PRBool need_quote = PR_FALSE;
if (!value || (*value == 0)) return secmod_nullString;
if (secmod_argHasBlanks(value) || secmod_argIsQuote(value[0]))
need_quote=PR_TRUE;
if ((need_quote && secmod_argHasChar(value,closeQuote))
|| secmod_argHasChar(value,SECMOD_ARG_ESCAPE)) {
value = newValue = secmod_formatValue(NULL, value,quote);
if (newValue == NULL) return secmod_nullString;
}
if (need_quote) {
returnValue = PR_smprintf("%s=%c%s%c",name,openQuote,value,closeQuote);
} else {
returnValue = PR_smprintf("%s=%s",name,value);
}
if (returnValue == NULL) returnValue = secmod_nullString;
if (newValue) PORT_Free(newValue);
return returnValue;
}
static char *secmod_formatIntPair(char *name, unsigned long value,
unsigned long def)
{
char *returnValue;
if (value == def) return secmod_nullString;
returnValue = PR_smprintf("%s=%d",name,value);
return returnValue;
}
static void
secmod_freePair(char *pair)
{
if (pair && pair != secmod_nullString) {
PR_smprintf_free(pair);
}
}
#define MAX_FLAG_SIZE sizeof("internal")+sizeof("FIPS")+sizeof("moduleDB")+\
sizeof("moduleDBOnly")+sizeof("critical")
static char *
secmod_mkNSSFlags(PRBool internal, PRBool isFIPS,
PRBool isModuleDB, PRBool isModuleDBOnly, PRBool isCritical)
{
char *flags = (char *)PORT_ZAlloc(MAX_FLAG_SIZE);
PRBool first = PR_TRUE;
PORT_Memset(flags,0,MAX_FLAG_SIZE);
if (internal) {
PORT_Strcat(flags,"internal");
first = PR_FALSE;
}
if (isFIPS) {
if (!first) PORT_Strcat(flags,",");
PORT_Strcat(flags,"FIPS");
first = PR_FALSE;
}
if (isModuleDB) {
if (!first) PORT_Strcat(flags,",");
PORT_Strcat(flags,"moduleDB");
first = PR_FALSE;
}
if (isModuleDBOnly) {
if (!first) PORT_Strcat(flags,",");
PORT_Strcat(flags,"moduleDBOnly");
first = PR_FALSE;
}
if (isCritical) {
if (!first) PORT_Strcat(flags,",");
PORT_Strcat(flags,"critical");
first = PR_FALSE;
}
return flags;
}
static char *
secmod_mkCipherFlags(unsigned long ssl0, unsigned long ssl1)
{
char *cipher = NULL;
int i;
for (i=0; i < sizeof(ssl0)*8; i++) {
if (ssl0 & (1<<i)) {
char *string;
if ((1<<i) == SECMOD_FORTEZZA_FLAG) {
string = PR_smprintf("%s","FORTEZZA");
} else {
string = PR_smprintf("0h0x%08x",1<<i);
}
if (cipher) {
char *tmp;
tmp = PR_smprintf("%s,%s",cipher,string);
PR_smprintf_free(cipher);
PR_smprintf_free(string);
cipher = tmp;
} else {
cipher = string;
}
}
}
for (i=0; i < sizeof(ssl0)*8; i++) {
if (ssl1 & (1<<i)) {
if (cipher) {
char *tmp;
tmp = PR_smprintf("%s,0l0x%08x",cipher,1<<i);
PR_smprintf_free(cipher);
cipher = tmp;
} else {
cipher = PR_smprintf("0l0x%08x",1<<i);
}
}
}
return cipher;
}
static char *
secmod_mkSlotFlags(unsigned long defaultFlags)
{
char *flags=NULL;
int i,j;
for (i=0; i < sizeof(defaultFlags)*8; i++) {
if (defaultFlags & (1<<i)) {
char *string = NULL;
for (j=0; j < secmod_argSlotFlagTableSize; j++) {
if (secmod_argSlotFlagTable[j].value == ( 1UL << i )) {
string = secmod_argSlotFlagTable[j].name;
break;
}
}
if (string) {
if (flags) {
char *tmp;
tmp = PR_smprintf("%s,%s",flags,string);
PR_smprintf_free(flags);
flags = tmp;
} else {
flags = PR_smprintf("%s",string);
}
}
}
}
return flags;
}
#define SECMOD_MAX_ROOT_FLAG_SIZE sizeof("hasRootCerts")+sizeof("hasRootTrust")
static char *
secmod_mkRootFlags(PRBool hasRootCerts, PRBool hasRootTrust)
{
char *flags= (char *)PORT_ZAlloc(SECMOD_MAX_ROOT_FLAG_SIZE);
PRBool first = PR_TRUE;
PORT_Memset(flags,0,SECMOD_MAX_ROOT_FLAG_SIZE);
if (hasRootCerts) {
PORT_Strcat(flags,"hasRootCerts");
first = PR_FALSE;
}
if (hasRootTrust) {
if (!first) PORT_Strcat(flags,",");
PORT_Strcat(flags,"hasRootTrust");
first = PR_FALSE;
}
return flags;
}
static char *
secmod_mkSlotString(unsigned long slotID, unsigned long defaultFlags,
unsigned long timeout, unsigned char askpw_in,
PRBool hasRootCerts, PRBool hasRootTrust) {
char *askpw,*flags,*rootFlags,*slotString;
char *flagPair,*rootFlagsPair;
switch (askpw_in) {
case 0xff:
askpw = "every";
break;
case 1:
askpw = "timeout";
break;
default:
askpw = "any";
break;
}
flags = secmod_mkSlotFlags(defaultFlags);
rootFlags = secmod_mkRootFlags(hasRootCerts,hasRootTrust);
flagPair=secmod_formatPair("slotFlags",flags,'\'');
rootFlagsPair=secmod_formatPair("rootFlags",rootFlags,'\'');
if (flags) PR_smprintf_free(flags);
if (rootFlags) PORT_Free(rootFlags);
if (defaultFlags & PK11_OWN_PW_DEFAULTS) {
slotString = PR_smprintf("0x%08lx=[%s askpw=%s timeout=%d %s]",
(PRUint32)slotID,flagPair,askpw,timeout,
rootFlagsPair);
} else {
slotString = PR_smprintf("0x%08lx=[%s %s]",
(PRUint32)slotID,flagPair,rootFlagsPair);
}
secmod_freePair(flagPair);
secmod_freePair(rootFlagsPair);
return slotString;
}
static char *
secmod_mkNSS(char **slotStrings, int slotCount, PRBool internal, PRBool isFIPS,
PRBool isModuleDB, PRBool isModuleDBOnly, PRBool isCritical,
unsigned long trustOrder, unsigned long cipherOrder,
unsigned long ssl0, unsigned long ssl1) {
int slotLen, i;
char *slotParams, *ciphers, *nss, *nssFlags, *tmp;
char *trustOrderPair,*cipherOrderPair,*slotPair,*cipherPair,*flagPair;
/* now let's build up the string
* first the slot infos
*/
slotLen=0;
for (i=0; i < (int)slotCount; i++) {
slotLen += PORT_Strlen(slotStrings[i])+1;
}
slotLen += 1; /* space for the final NULL */
slotParams = (char *)PORT_ZAlloc(slotLen);
PORT_Memset(slotParams,0,slotLen);
for (i=0; i < (int)slotCount; i++) {
PORT_Strcat(slotParams,slotStrings[i]);
PORT_Strcat(slotParams," ");
PR_smprintf_free(slotStrings[i]);
slotStrings[i]=NULL;
}
/*
* now the NSS structure
*/
nssFlags = secmod_mkNSSFlags(internal,isFIPS,isModuleDB,isModuleDBOnly,
isCritical);
/* for now only the internal module is critical */
ciphers = secmod_mkCipherFlags(ssl0, ssl1);
trustOrderPair=secmod_formatIntPair("trustOrder",trustOrder,
SECMOD_DEFAULT_TRUST_ORDER);
cipherOrderPair=secmod_formatIntPair("cipherOrder",cipherOrder,
SECMOD_DEFAULT_CIPHER_ORDER);
slotPair=secmod_formatPair("slotParams",slotParams,'{'); /* } */
if (slotParams) PORT_Free(slotParams);
cipherPair=secmod_formatPair("ciphers",ciphers,'\'');
if (ciphers) PR_smprintf_free(ciphers);
flagPair=secmod_formatPair("Flags",nssFlags,'\'');
if (nssFlags) PORT_Free(nssFlags);
nss = PR_smprintf("%s %s %s %s %s",trustOrderPair,
cipherOrderPair,slotPair,cipherPair,flagPair);
secmod_freePair(trustOrderPair);
secmod_freePair(cipherOrderPair);
secmod_freePair(slotPair);
secmod_freePair(cipherPair);
secmod_freePair(flagPair);
tmp = secmod_argStrip(nss);
if (*tmp == '\0') {
PR_smprintf_free(nss);
nss = NULL;
}
return nss;
}
static char *
secmod_mkNewModuleSpec(char *dllName, char *commonName, char *parameters,
char *NSS) {
char *moduleSpec;
char *lib,*name,*param,*nss;
/*
* now the final spec
*/
lib = secmod_formatPair("library",dllName,'\"');
name = secmod_formatPair("name",commonName,'\"');
param = secmod_formatPair("parameters",parameters,'\"');
nss = secmod_formatPair("NSS",NSS,'\"');
moduleSpec = PR_smprintf("%s %s %s %s", lib,name,param,nss);
secmod_freePair(lib);
secmod_freePair(name);
secmod_freePair(param);
secmod_freePair(nss);
return (moduleSpec);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,323 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* RSA Labs
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
* is granted provided that it is identified as "RSA Security In.c Public-Key
* Cryptography Standards (PKCS)" in all material mentioning or referencing
* this document.
*
* The latest version of this header can be found at:
* http://www.rsalabs.com/pkcs/pkcs-11/index.html
*/
#ifndef _PKCS11_H_
#define _PKCS11_H_ 1
#ifdef __cplusplus
extern "C" {
#endif
/* Before including this file (pkcs11.h) (or pkcs11t.h by
* itself), 6 platform-specific macros must be defined. These
* macros are described below, and typical definitions for them
* are also given. Be advised that these definitions can depend
* on both the platform and the compiler used (and possibly also
* on whether a PKCS #11 library is linked statically or
* dynamically).
*
* In addition to defining these 6 macros, the packing convention
* for PKCS #11 structures should be set. The PKCS #11
* convention on packing is that structures should be 1-byte
* aligned.
*
* In a Win32 environment, this might be done by using the
* following preprocessor directive before including pkcs11.h
* or pkcs11t.h:
*
* #pragma pack(push, cryptoki, 1)
*
* and using the following preprocessor directive after including
* pkcs11.h or pkcs11t.h:
*
* #pragma pack(pop, cryptoki)
*
* In a Win16 environment, this might be done by using the
* following preprocessor directive before including pkcs11.h
* or pkcs11t.h:
*
* #pragma pack(1)
*
* In a UNIX environment, you're on your own here. You might
* not need to do anything.
*
*
* Now for the macros:
*
*
* 1. CK_PTR: The indirection string for making a pointer to an
* object. It can be used like this:
*
* typedef CK_BYTE CK_PTR CK_BYTE_PTR;
*
* In a Win32 environment, it might be defined by
*
* #define CK_PTR *
*
* In a Win16 environment, it might be defined by
*
* #define CK_PTR far *
*
* In a UNIX environment, it might be defined by
*
* #define CK_PTR *
*
*
* 2. CK_DEFINE_FUNCTION(returnType, name): A macro which makes
* an exportable PKCS #11 library function definition out of a
* return type and a function name. It should be used in the
* following fashion to define the exposed PKCS #11 functions in
* a PKCS #11 library:
*
* CK_DEFINE_FUNCTION(CK_RV, C_Initialize)(
* CK_VOID_PTR pReserved
* )
* {
* ...
* }
*
* For defining a function in a Win32 PKCS #11 .dll, it might be
* defined by
*
* #define CK_DEFINE_FUNCTION(returnType, name) \
* returnType __declspec(dllexport) name
*
* For defining a function in a Win16 PKCS #11 .dll, it might be
* defined by
*
* #define CK_DEFINE_FUNCTION(returnType, name) \
* returnType __export _far _pascal name
*
* In a UNIX environment, it might be defined by
*
* #define CK_DEFINE_FUNCTION(returnType, name) \
* returnType name
*
*
* 3. CK_DECLARE_FUNCTION(returnType, name): A macro which makes
* an importable PKCS #11 library function declaration out of a
* return type and a function name. It should be used in the
* following fashion:
*
* extern CK_DECLARE_FUNCTION(CK_RV, C_Initialize)(
* CK_VOID_PTR pReserved
* );
*
* For declaring a function in a Win32 PKCS #11 .dll, it might
* be defined by
*
* #define CK_DECLARE_FUNCTION(returnType, name) \
* returnType __declspec(dllimport) name
*
* For declaring a function in a Win16 PKCS #11 .dll, it might
* be defined by
*
* #define CK_DECLARE_FUNCTION(returnType, name) \
* returnType __export _far _pascal name
*
* In a UNIX environment, it might be defined by
*
* #define CK_DECLARE_FUNCTION(returnType, name) \
* returnType name
*
*
* 4. CK_DECLARE_FUNCTION_POINTER(returnType, name): A macro
* which makes a PKCS #11 API function pointer declaration or
* function pointer type declaration out of a return type and a
* function name. It should be used in the following fashion:
*
* // Define funcPtr to be a pointer to a PKCS #11 API function
* // taking arguments args and returning CK_RV.
* CK_DECLARE_FUNCTION_POINTER(CK_RV, funcPtr)(args);
*
* or
*
* // Define funcPtrType to be the type of a pointer to a
* // PKCS #11 API function taking arguments args and returning
* // CK_RV, and then define funcPtr to be a variable of type
* // funcPtrType.
* typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, funcPtrType)(args);
* funcPtrType funcPtr;
*
* For accessing functions in a Win32 PKCS #11 .dll, in might be
* defined by
*
* #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
* returnType __declspec(dllimport) (* name)
*
* For accessing functions in a Win16 PKCS #11 .dll, it might be
* defined by
*
* #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
* returnType __export _far _pascal (* name)
*
* In a UNIX environment, it might be defined by
*
* #define CK_DECLARE_FUNCTION_POINTER(returnType, name) \
* returnType (* name)
*
*
* 5. CK_CALLBACK_FUNCTION(returnType, name): A macro which makes
* a function pointer type for an application callback out of
* a return type for the callback and a name for the callback.
* It should be used in the following fashion:
*
* CK_CALLBACK_FUNCTION(CK_RV, myCallback)(args);
*
* to declare a function pointer, myCallback, to a callback
* which takes arguments args and returns a CK_RV. It can also
* be used like this:
*
* typedef CK_CALLBACK_FUNCTION(CK_RV, myCallbackType)(args);
* myCallbackType myCallback;
*
* In a Win32 environment, it might be defined by
*
* #define CK_CALLBACK_FUNCTION(returnType, name) \
* returnType (* name)
*
* In a Win16 environment, it might be defined by
*
* #define CK_CALLBACK_FUNCTION(returnType, name) \
* returnType _far _pascal (* name)
*
* In a UNIX environment, it might be defined by
*
* #define CK_CALLBACK_FUNCTION(returnType, name) \
* returnType (* name)
*
*
* 6. NULL_PTR: This macro is the value of a NULL pointer.
*
* In any ANSI/ISO C environment (and in many others as well),
* this should be defined by
*
* #ifndef NULL_PTR
* #define NULL_PTR 0
* #endif
*/
/* All the various PKCS #11 types and #define'd values are in the
* file pkcs11t.h. */
#include "pkcs11t.h"
#define __PASTE(x,y) x##y
/* packing defines */
#include "pkcs11p.h"
/* ==============================================================
* Define the "extern" form of all the entry points.
* ==============================================================
*/
#define CK_NEED_ARG_LIST 1
#define CK_PKCS11_FUNCTION_INFO(name) \
CK_DECLARE_FUNCTION(CK_RV, name)
/* pkcs11f.h has all the information about the PKCS #11
* function prototypes. */
#include "pkcs11f.h"
#undef CK_NEED_ARG_LIST
#undef CK_PKCS11_FUNCTION_INFO
/* ==============================================================
* Define the typedef form of all the entry points. That is, for
* each PKCS #11 function C_XXX, define a type CK_C_XXX which is
* a pointer to that kind of function.
* ==============================================================
*/
#define CK_NEED_ARG_LIST 1
#define CK_PKCS11_FUNCTION_INFO(name) \
typedef CK_DECLARE_FUNCTION_POINTER(CK_RV, __PASTE(CK_,name))
/* pkcs11f.h has all the information about the PKCS #11
* function prototypes. */
#include "pkcs11f.h"
#undef CK_NEED_ARG_LIST
#undef CK_PKCS11_FUNCTION_INFO
/* ==============================================================
* Define structed vector of entry points. A CK_FUNCTION_LIST
* contains a CK_VERSION indicating a library's PKCS #11 version
* and then a whole slew of function pointers to the routines in
* the library. This type was declared, but not defined, in
* pkcs11t.h.
* ==============================================================
*/
#define CK_PKCS11_FUNCTION_INFO(name) \
__PASTE(CK_,name) name;
struct CK_FUNCTION_LIST {
CK_VERSION version; /* PKCS #11 version */
/* Pile all the function pointers into the CK_FUNCTION_LIST. */
/* pkcs11f.h has all the information about the PKCS #11
* function prototypes. */
#include "pkcs11f.h"
};
#undef CK_PKCS11_FUNCTION_INFO
#undef __PASTE
/* unpack */
#include "pkcs11u.h"
#ifdef __cplusplus
}
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,937 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* RSA Security INC.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
* is granted provided that it is identified as "RSA Security In.c Public-Key
* Cryptography Standards (PKCS)" in all material mentioning or referencing
* this document.
*/
/* This function contains pretty much everything about all the */
/* PKCS #11 function prototypes. Because this information is */
/* used for more than just declaring function prototypes, the */
/* order of the functions appearing herein is important, and */
/* should not be altered. */
/* General-purpose */
/* C_Initialize initializes the PKCS #11 library. */
CK_PKCS11_FUNCTION_INFO(C_Initialize)
#ifdef CK_NEED_ARG_LIST
(
CK_VOID_PTR pInitArgs /* if this is not NULL_PTR, it gets
* cast to CK_C_INITIALIZE_ARGS_PTR
* and dereferenced */
);
#endif
/* C_Finalize indicates that an application is done with the
* PKCS #11 library. */
CK_PKCS11_FUNCTION_INFO(C_Finalize)
#ifdef CK_NEED_ARG_LIST
(
CK_VOID_PTR pReserved /* reserved. Should be NULL_PTR */
);
#endif
/* C_GetInfo returns general information about PKCS #11. */
CK_PKCS11_FUNCTION_INFO(C_GetInfo)
#ifdef CK_NEED_ARG_LIST
(
CK_INFO_PTR pInfo /* location that receives information */
);
#endif
/* C_GetFunctionList returns the function list. */
CK_PKCS11_FUNCTION_INFO(C_GetFunctionList)
#ifdef CK_NEED_ARG_LIST
(
CK_FUNCTION_LIST_PTR_PTR ppFunctionList /* receives pointer to
* function list */
);
#endif
/* Slot and token management */
/* C_GetSlotList obtains a list of slots in the system. */
CK_PKCS11_FUNCTION_INFO(C_GetSlotList)
#ifdef CK_NEED_ARG_LIST
(
CK_BBOOL tokenPresent, /* only slots with tokens? */
CK_SLOT_ID_PTR pSlotList, /* receives array of slot IDs */
CK_ULONG_PTR pulCount /* receives number of slots */
);
#endif
/* C_GetSlotInfo obtains information about a particular slot in
* the system. */
CK_PKCS11_FUNCTION_INFO(C_GetSlotInfo)
#ifdef CK_NEED_ARG_LIST
(
CK_SLOT_ID slotID, /* the ID of the slot */
CK_SLOT_INFO_PTR pInfo /* receives the slot information */
);
#endif
/* C_GetTokenInfo obtains information about a particular token
* in the system. */
CK_PKCS11_FUNCTION_INFO(C_GetTokenInfo)
#ifdef CK_NEED_ARG_LIST
(
CK_SLOT_ID slotID, /* ID of the token's slot */
CK_TOKEN_INFO_PTR pInfo /* receives the token information */
);
#endif
/* C_GetMechanismList obtains a list of mechanism types
* supported by a token. */
CK_PKCS11_FUNCTION_INFO(C_GetMechanismList)
#ifdef CK_NEED_ARG_LIST
(
CK_SLOT_ID slotID, /* ID of token's slot */
CK_MECHANISM_TYPE_PTR pMechanismList, /* gets mech. array */
CK_ULONG_PTR pulCount /* gets # of mechs. */
);
#endif
/* C_GetMechanismInfo obtains information about a particular
* mechanism possibly supported by a token. */
CK_PKCS11_FUNCTION_INFO(C_GetMechanismInfo)
#ifdef CK_NEED_ARG_LIST
(
CK_SLOT_ID slotID, /* ID of the token's slot */
CK_MECHANISM_TYPE type, /* type of mechanism */
CK_MECHANISM_INFO_PTR pInfo /* receives mechanism info */
);
#endif
/* C_InitToken initializes a token. */
CK_PKCS11_FUNCTION_INFO(C_InitToken)
#ifdef CK_NEED_ARG_LIST
/* pLabel changed from CK_CHAR_PTR to CK_UTF8CHAR_PTR for v2.10 */
(
CK_SLOT_ID slotID, /* ID of the token's slot */
CK_UTF8CHAR_PTR pPin, /* the SO's initial PIN */
CK_ULONG ulPinLen, /* length in bytes of the PIN */
CK_UTF8CHAR_PTR pLabel /* 32-byte token label (blank padded) */
);
#endif
/* C_InitPIN initializes the normal user's PIN. */
CK_PKCS11_FUNCTION_INFO(C_InitPIN)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_UTF8CHAR_PTR pPin, /* the normal user's PIN */
CK_ULONG ulPinLen /* length in bytes of the PIN */
);
#endif
/* C_SetPIN modifies the PIN of the user who is logged in. */
CK_PKCS11_FUNCTION_INFO(C_SetPIN)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_UTF8CHAR_PTR pOldPin, /* the old PIN */
CK_ULONG ulOldLen, /* length of the old PIN */
CK_UTF8CHAR_PTR pNewPin, /* the new PIN */
CK_ULONG ulNewLen /* length of the new PIN */
);
#endif
/* Session management */
/* C_OpenSession opens a session between an application and a
* token. */
CK_PKCS11_FUNCTION_INFO(C_OpenSession)
#ifdef CK_NEED_ARG_LIST
(
CK_SLOT_ID slotID, /* the slot's ID */
CK_FLAGS flags, /* from CK_SESSION_INFO */
CK_VOID_PTR pApplication, /* passed to callback */
CK_NOTIFY Notify, /* callback function */
CK_SESSION_HANDLE_PTR phSession /* gets session handle */
);
#endif
/* C_CloseSession closes a session between an application and a
* token. */
CK_PKCS11_FUNCTION_INFO(C_CloseSession)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession /* the session's handle */
);
#endif
/* C_CloseAllSessions closes all sessions with a token. */
CK_PKCS11_FUNCTION_INFO(C_CloseAllSessions)
#ifdef CK_NEED_ARG_LIST
(
CK_SLOT_ID slotID /* the token's slot */
);
#endif
/* C_GetSessionInfo obtains information about the session. */
CK_PKCS11_FUNCTION_INFO(C_GetSessionInfo)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_SESSION_INFO_PTR pInfo /* receives session info */
);
#endif
/* C_GetOperationState obtains the state of the cryptographic operation
* in a session. */
CK_PKCS11_FUNCTION_INFO(C_GetOperationState)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pOperationState, /* gets state */
CK_ULONG_PTR pulOperationStateLen /* gets state length */
);
#endif
/* C_SetOperationState restores the state of the cryptographic
* operation in a session. */
CK_PKCS11_FUNCTION_INFO(C_SetOperationState)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pOperationState, /* holds state */
CK_ULONG ulOperationStateLen, /* holds state length */
CK_OBJECT_HANDLE hEncryptionKey, /* en/decryption key */
CK_OBJECT_HANDLE hAuthenticationKey /* sign/verify key */
);
#endif
/* C_Login logs a user into a token. */
CK_PKCS11_FUNCTION_INFO(C_Login)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_USER_TYPE userType, /* the user type */
CK_UTF8CHAR_PTR pPin, /* the user's PIN */
CK_ULONG ulPinLen /* the length of the PIN */
);
#endif
/* C_Logout logs a user out from a token. */
CK_PKCS11_FUNCTION_INFO(C_Logout)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession /* the session's handle */
);
#endif
/* Object management */
/* C_CreateObject creates a new object. */
CK_PKCS11_FUNCTION_INFO(C_CreateObject)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_ATTRIBUTE_PTR pTemplate, /* the object's template */
CK_ULONG ulCount, /* attributes in template */
CK_OBJECT_HANDLE_PTR phObject /* gets new object's handle. */
);
#endif
/* C_CopyObject copies an object, creating a new object for the
* copy. */
CK_PKCS11_FUNCTION_INFO(C_CopyObject)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_OBJECT_HANDLE hObject, /* the object's handle */
CK_ATTRIBUTE_PTR pTemplate, /* template for new object */
CK_ULONG ulCount, /* attributes in template */
CK_OBJECT_HANDLE_PTR phNewObject /* receives handle of copy */
);
#endif
/* C_DestroyObject destroys an object. */
CK_PKCS11_FUNCTION_INFO(C_DestroyObject)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_OBJECT_HANDLE hObject /* the object's handle */
);
#endif
/* C_GetObjectSize gets the size of an object in bytes. */
CK_PKCS11_FUNCTION_INFO(C_GetObjectSize)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_OBJECT_HANDLE hObject, /* the object's handle */
CK_ULONG_PTR pulSize /* receives size of object */
);
#endif
/* C_GetAttributeValue obtains the value of one or more object
* attributes. */
CK_PKCS11_FUNCTION_INFO(C_GetAttributeValue)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_OBJECT_HANDLE hObject, /* the object's handle */
CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs; gets vals */
CK_ULONG ulCount /* attributes in template */
);
#endif
/* C_SetAttributeValue modifies the value of one or more object
* attributes */
CK_PKCS11_FUNCTION_INFO(C_SetAttributeValue)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_OBJECT_HANDLE hObject, /* the object's handle */
CK_ATTRIBUTE_PTR pTemplate, /* specifies attrs and values */
CK_ULONG ulCount /* attributes in template */
);
#endif
/* C_FindObjectsInit initializes a search for token and session
* objects that match a template. */
CK_PKCS11_FUNCTION_INFO(C_FindObjectsInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_ATTRIBUTE_PTR pTemplate, /* attribute values to match */
CK_ULONG ulCount /* attrs in search template */
);
#endif
/* C_FindObjects continues a search for token and session
* objects that match a template, obtaining additional object
* handles. */
CK_PKCS11_FUNCTION_INFO(C_FindObjects)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_OBJECT_HANDLE_PTR phObject, /* gets obj. handles */
CK_ULONG ulMaxObjectCount, /* max handles to get */
CK_ULONG_PTR pulObjectCount /* actual # returned */
);
#endif
/* C_FindObjectsFinal finishes a search for token and session
* objects. */
CK_PKCS11_FUNCTION_INFO(C_FindObjectsFinal)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession /* the session's handle */
);
#endif
/* Encryption and decryption */
/* C_EncryptInit initializes an encryption operation. */
CK_PKCS11_FUNCTION_INFO(C_EncryptInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the encryption mechanism */
CK_OBJECT_HANDLE hKey /* handle of encryption key */
);
#endif
/* C_Encrypt encrypts single-part data. */
CK_PKCS11_FUNCTION_INFO(C_Encrypt)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pData, /* the plaintext data */
CK_ULONG ulDataLen, /* bytes of plaintext */
CK_BYTE_PTR pEncryptedData, /* gets ciphertext */
CK_ULONG_PTR pulEncryptedDataLen /* gets c-text size */
);
#endif
/* C_EncryptUpdate continues a multiple-part encryption
* operation. */
CK_PKCS11_FUNCTION_INFO(C_EncryptUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pPart, /* the plaintext data */
CK_ULONG ulPartLen, /* plaintext data len */
CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
CK_ULONG_PTR pulEncryptedPartLen /* gets c-text size */
);
#endif
/* C_EncryptFinal finishes a multiple-part encryption
* operation. */
CK_PKCS11_FUNCTION_INFO(C_EncryptFinal)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session handle */
CK_BYTE_PTR pLastEncryptedPart, /* last c-text */
CK_ULONG_PTR pulLastEncryptedPartLen /* gets last size */
);
#endif
/* C_DecryptInit initializes a decryption operation. */
CK_PKCS11_FUNCTION_INFO(C_DecryptInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the decryption mechanism */
CK_OBJECT_HANDLE hKey /* handle of decryption key */
);
#endif
/* C_Decrypt decrypts encrypted data in a single part. */
CK_PKCS11_FUNCTION_INFO(C_Decrypt)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pEncryptedData, /* ciphertext */
CK_ULONG ulEncryptedDataLen, /* ciphertext length */
CK_BYTE_PTR pData, /* gets plaintext */
CK_ULONG_PTR pulDataLen /* gets p-text size */
);
#endif
/* C_DecryptUpdate continues a multiple-part decryption
* operation. */
CK_PKCS11_FUNCTION_INFO(C_DecryptUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pEncryptedPart, /* encrypted data */
CK_ULONG ulEncryptedPartLen, /* input length */
CK_BYTE_PTR pPart, /* gets plaintext */
CK_ULONG_PTR pulPartLen /* p-text size */
);
#endif
/* C_DecryptFinal finishes a multiple-part decryption
* operation. */
CK_PKCS11_FUNCTION_INFO(C_DecryptFinal)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pLastPart, /* gets plaintext */
CK_ULONG_PTR pulLastPartLen /* p-text size */
);
#endif
/* Message digesting */
/* C_DigestInit initializes a message-digesting operation. */
CK_PKCS11_FUNCTION_INFO(C_DigestInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism /* the digesting mechanism */
);
#endif
/* C_Digest digests data in a single part. */
CK_PKCS11_FUNCTION_INFO(C_Digest)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pData, /* data to be digested */
CK_ULONG ulDataLen, /* bytes of data to digest */
CK_BYTE_PTR pDigest, /* gets the message digest */
CK_ULONG_PTR pulDigestLen /* gets digest length */
);
#endif
/* C_DigestUpdate continues a multiple-part message-digesting
* operation. */
CK_PKCS11_FUNCTION_INFO(C_DigestUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pPart, /* data to be digested */
CK_ULONG ulPartLen /* bytes of data to be digested */
);
#endif
/* C_DigestKey continues a multi-part message-digesting
* operation, by digesting the value of a secret key as part of
* the data already digested. */
CK_PKCS11_FUNCTION_INFO(C_DigestKey)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_OBJECT_HANDLE hKey /* secret key to digest */
);
#endif
/* C_DigestFinal finishes a multiple-part message-digesting
* operation. */
CK_PKCS11_FUNCTION_INFO(C_DigestFinal)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pDigest, /* gets the message digest */
CK_ULONG_PTR pulDigestLen /* gets byte count of digest */
);
#endif
/* Signing and MACing */
/* C_SignInit initializes a signature (private key encryption)
* operation, where the signature is (will be) an appendix to
* the data, and plaintext cannot be recovered from the
*signature. */
CK_PKCS11_FUNCTION_INFO(C_SignInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
CK_OBJECT_HANDLE hKey /* handle of signature key */
);
#endif
/* C_Sign signs (encrypts with private key) data in a single
* part, where the signature is (will be) an appendix to the
* data, and plaintext cannot be recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_Sign)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pData, /* the data to sign */
CK_ULONG ulDataLen, /* count of bytes to sign */
CK_BYTE_PTR pSignature, /* gets the signature */
CK_ULONG_PTR pulSignatureLen /* gets signature length */
);
#endif
/* C_SignUpdate continues a multiple-part signature operation,
* where the signature is (will be) an appendix to the data,
* and plaintext cannot be recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_SignUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pPart, /* the data to sign */
CK_ULONG ulPartLen /* count of bytes to sign */
);
#endif
/* C_SignFinal finishes a multiple-part signature operation,
* returning the signature. */
CK_PKCS11_FUNCTION_INFO(C_SignFinal)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pSignature, /* gets the signature */
CK_ULONG_PTR pulSignatureLen /* gets signature length */
);
#endif
/* C_SignRecoverInit initializes a signature operation, where
* the data can be recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_SignRecoverInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the signature mechanism */
CK_OBJECT_HANDLE hKey /* handle of the signature key */
);
#endif
/* C_SignRecover signs data in a single operation, where the
* data can be recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_SignRecover)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pData, /* the data to sign */
CK_ULONG ulDataLen, /* count of bytes to sign */
CK_BYTE_PTR pSignature, /* gets the signature */
CK_ULONG_PTR pulSignatureLen /* gets signature length */
);
#endif
/* Verifying signatures and MACs */
/* C_VerifyInit initializes a verification operation, where the
* signature is an appendix to the data, and plaintext cannot
* cannot be recovered from the signature (e.g. DSA). */
CK_PKCS11_FUNCTION_INFO(C_VerifyInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
CK_OBJECT_HANDLE hKey /* verification key */
);
#endif
/* C_Verify verifies a signature in a single-part operation,
* where the signature is an appendix to the data, and plaintext
* cannot be recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_Verify)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pData, /* signed data */
CK_ULONG ulDataLen, /* length of signed data */
CK_BYTE_PTR pSignature, /* signature */
CK_ULONG ulSignatureLen /* signature length*/
);
#endif
/* C_VerifyUpdate continues a multiple-part verification
* operation, where the signature is an appendix to the data,
* and plaintext cannot be recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_VerifyUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pPart, /* signed data */
CK_ULONG ulPartLen /* length of signed data */
);
#endif
/* C_VerifyFinal finishes a multiple-part verification
* operation, checking the signature. */
CK_PKCS11_FUNCTION_INFO(C_VerifyFinal)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pSignature, /* signature to verify */
CK_ULONG ulSignatureLen /* signature length */
);
#endif
/* C_VerifyRecoverInit initializes a signature verification
* operation, where the data is recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_VerifyRecoverInit)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the verification mechanism */
CK_OBJECT_HANDLE hKey /* verification key */
);
#endif
/* C_VerifyRecover verifies a signature in a single-part
* operation, where the data is recovered from the signature. */
CK_PKCS11_FUNCTION_INFO(C_VerifyRecover)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pSignature, /* signature to verify */
CK_ULONG ulSignatureLen, /* signature length */
CK_BYTE_PTR pData, /* gets signed data */
CK_ULONG_PTR pulDataLen /* gets signed data len */
);
#endif
/* Dual-function cryptographic operations */
/* C_DigestEncryptUpdate continues a multiple-part digesting
* and encryption operation. */
CK_PKCS11_FUNCTION_INFO(C_DigestEncryptUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pPart, /* the plaintext data */
CK_ULONG ulPartLen, /* plaintext length */
CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
);
#endif
/* C_DecryptDigestUpdate continues a multiple-part decryption and
* digesting operation. */
CK_PKCS11_FUNCTION_INFO(C_DecryptDigestUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pEncryptedPart, /* ciphertext */
CK_ULONG ulEncryptedPartLen, /* ciphertext length */
CK_BYTE_PTR pPart, /* gets plaintext */
CK_ULONG_PTR pulPartLen /* gets plaintext len */
);
#endif
/* C_SignEncryptUpdate continues a multiple-part signing and
* encryption operation. */
CK_PKCS11_FUNCTION_INFO(C_SignEncryptUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pPart, /* the plaintext data */
CK_ULONG ulPartLen, /* plaintext length */
CK_BYTE_PTR pEncryptedPart, /* gets ciphertext */
CK_ULONG_PTR pulEncryptedPartLen /* gets c-text length */
);
#endif
/* C_DecryptVerifyUpdate continues a multiple-part decryption and
* verify operation. */
CK_PKCS11_FUNCTION_INFO(C_DecryptVerifyUpdate)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_BYTE_PTR pEncryptedPart, /* ciphertext */
CK_ULONG ulEncryptedPartLen, /* ciphertext length */
CK_BYTE_PTR pPart, /* gets plaintext */
CK_ULONG_PTR pulPartLen /* gets p-text length */
);
#endif
/* Key management */
/* C_GenerateKey generates a secret key, creating a new key
* object. */
CK_PKCS11_FUNCTION_INFO(C_GenerateKey)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* key generation mech. */
CK_ATTRIBUTE_PTR pTemplate, /* template for new key */
CK_ULONG ulCount, /* # of attrs in template */
CK_OBJECT_HANDLE_PTR phKey /* gets handle of new key */
);
#endif
/* C_GenerateKeyPair generates a public-key/private-key pair,
* creating new key objects. */
CK_PKCS11_FUNCTION_INFO(C_GenerateKeyPair)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session
* handle */
CK_MECHANISM_PTR pMechanism, /* key-gen
* mech. */
CK_ATTRIBUTE_PTR pPublicKeyTemplate, /* template
* for pub.
* key */
CK_ULONG ulPublicKeyAttributeCount, /* # pub.
* attrs. */
CK_ATTRIBUTE_PTR pPrivateKeyTemplate, /* template
* for priv.
* key */
CK_ULONG ulPrivateKeyAttributeCount, /* # priv.
* attrs. */
CK_OBJECT_HANDLE_PTR phPublicKey, /* gets pub.
* key
* handle */
CK_OBJECT_HANDLE_PTR phPrivateKey /* gets
* priv. key
* handle */
);
#endif
/* C_WrapKey wraps (i.e., encrypts) a key. */
CK_PKCS11_FUNCTION_INFO(C_WrapKey)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_MECHANISM_PTR pMechanism, /* the wrapping mechanism */
CK_OBJECT_HANDLE hWrappingKey, /* wrapping key */
CK_OBJECT_HANDLE hKey, /* key to be wrapped */
CK_BYTE_PTR pWrappedKey, /* gets wrapped key */
CK_ULONG_PTR pulWrappedKeyLen /* gets wrapped key size */
);
#endif
/* C_UnwrapKey unwraps (decrypts) a wrapped key, creating a new
* key object. */
CK_PKCS11_FUNCTION_INFO(C_UnwrapKey)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_MECHANISM_PTR pMechanism, /* unwrapping mech. */
CK_OBJECT_HANDLE hUnwrappingKey, /* unwrapping key */
CK_BYTE_PTR pWrappedKey, /* the wrapped key */
CK_ULONG ulWrappedKeyLen, /* wrapped key len */
CK_ATTRIBUTE_PTR pTemplate, /* new key template */
CK_ULONG ulAttributeCount, /* template length */
CK_OBJECT_HANDLE_PTR phKey /* gets new handle */
);
#endif
/* C_DeriveKey derives a key from a base key, creating a new key
* object. */
CK_PKCS11_FUNCTION_INFO(C_DeriveKey)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* session's handle */
CK_MECHANISM_PTR pMechanism, /* key deriv. mech. */
CK_OBJECT_HANDLE hBaseKey, /* base key */
CK_ATTRIBUTE_PTR pTemplate, /* new key template */
CK_ULONG ulAttributeCount, /* template length */
CK_OBJECT_HANDLE_PTR phKey /* gets new handle */
);
#endif
/* Random number generation */
/* C_SeedRandom mixes additional seed material into the token's
* random number generator. */
CK_PKCS11_FUNCTION_INFO(C_SeedRandom)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR pSeed, /* the seed material */
CK_ULONG ulSeedLen /* length of seed material */
);
#endif
/* C_GenerateRandom generates random data. */
CK_PKCS11_FUNCTION_INFO(C_GenerateRandom)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession, /* the session's handle */
CK_BYTE_PTR RandomData, /* receives the random data */
CK_ULONG ulRandomLen /* # of bytes to generate */
);
#endif
/* Parallel function management */
/* C_GetFunctionStatus is a legacy function; it obtains an
* updated status of a function running in parallel with an
* application. */
CK_PKCS11_FUNCTION_INFO(C_GetFunctionStatus)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession /* the session's handle */
);
#endif
/* C_CancelFunction is a legacy function; it cancels a function
* running in parallel. */
CK_PKCS11_FUNCTION_INFO(C_CancelFunction)
#ifdef CK_NEED_ARG_LIST
(
CK_SESSION_HANDLE hSession /* the session's handle */
);
#endif
/* Functions added in for PKCS #11 Version 2.01 or later */
/* C_WaitForSlotEvent waits for a slot event (token insertion,
* removal, etc.) to occur. */
CK_PKCS11_FUNCTION_INFO(C_WaitForSlotEvent)
#ifdef CK_NEED_ARG_LIST
(
CK_FLAGS flags, /* blocking/nonblocking flag */
CK_SLOT_ID_PTR pSlot, /* location that receives the slot ID */
CK_VOID_PTR pRserved /* reserved. Should be NULL_PTR */
);
#endif

View File

@@ -0,0 +1,687 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Internal data structures and functions used by pkcs11.c
*/
#ifndef _PKCS11I_H_
#define _PKCS11I_H_ 1
#include "nssilock.h"
#include "seccomon.h"
#include "secoidt.h"
#include "lowkeyti.h"
#include "pkcs11t.h"
#include "sftkdbt.h"
/*
* Configuration Defines
*
* The following defines affect the space verse speed trade offs of
* the PKCS #11 module. For the most part the current settings are optimized
* for web servers, where we want faster speed and lower lock contention at
* the expense of space.
*/
/*
* The attribute allocation strategy is static allocation:
* Attributes are pre-allocated as part of the session object and used from
* the object array.
*/
#define MAX_OBJS_ATTRS 45 /* number of attributes to preallocate in
* the object (must me the absolute max) */
#define ATTR_SPACE 50 /* Maximum size of attribute data before extra
* data needs to be allocated. This is set to
* enough space to hold an SSL MASTER secret */
#define NSC_STRICT PR_FALSE /* forces the code to do strict template
* matching when doing C_FindObject on token
* objects. This will slow down search in
* NSS. */
/* default search block allocations and increments */
#define NSC_CERT_BLOCK_SIZE 50
#define NSC_SEARCH_BLOCK_SIZE 5
#define NSC_SLOT_LIST_BLOCK_SIZE 10
#define NSC_FIPS_MODULE 1
#define NSC_NON_FIPS_MODULE 0
/* these are data base storage hashes, not cryptographic hashes.. The define
* the effective size of the various object hash tables */
/* clients care more about memory usage than lookup performance on
* cyrptographic objects. Clients also have less objects around to play with
*
* we eventually should make this configurable at runtime! Especially now that
* NSS is a shared library.
*/
#define SPACE_ATTRIBUTE_HASH_SIZE 32
#define SPACE_SESSION_OBJECT_HASH_SIZE 32
#define SPACE_SESSION_HASH_SIZE 32
#define TIME_ATTRIBUTE_HASH_SIZE 32
#define TIME_SESSION_OBJECT_HASH_SIZE 1024
#define TIME_SESSION_HASH_SIZE 1024
#define MAX_OBJECT_LIST_SIZE 800
/* how many objects to keep on the free list
* before we start freeing them */
#define MAX_KEY_LEN 256 /* maximum symmetric key length in bytes */
#define MULTIACCESS "multiaccess:"
/*
* LOG2_BUCKETS_PER_SESSION_LOCK must be a prime number.
* With SESSION_HASH_SIZE=1024, LOG2 can be 9, 5, 1, or 0.
* With SESSION_HASH_SIZE=4096, LOG2 can be 11, 9, 5, 1, or 0.
*
* HASH_SIZE LOG2_BUCKETS_PER BUCKETS_PER_LOCK NUMBER_OF_BUCKETS
* 1024 9 512 2
* 1024 5 32 32
* 1024 1 2 512
* 1024 0 1 1024
* 4096 11 2048 2
* 4096 9 512 8
* 4096 5 32 128
* 4096 1 2 2048
* 4096 0 1 4096
*/
#define LOG2_BUCKETS_PER_SESSION_LOCK 1
#define BUCKETS_PER_SESSION_LOCK (1 << (LOG2_BUCKETS_PER_SESSION_LOCK))
/* NOSPREAD sessionID to hash table index macro has been slower. */
/* define typedefs, double as forward declarations as well */
typedef struct SFTKAttributeStr SFTKAttribute;
typedef struct SFTKObjectListStr SFTKObjectList;
typedef struct SFTKObjectFreeListStr SFTKObjectFreeList;
typedef struct SFTKObjectListElementStr SFTKObjectListElement;
typedef struct SFTKObjectStr SFTKObject;
typedef struct SFTKSessionObjectStr SFTKSessionObject;
typedef struct SFTKTokenObjectStr SFTKTokenObject;
typedef struct SFTKSessionStr SFTKSession;
typedef struct SFTKSlotStr SFTKSlot;
typedef struct SFTKSessionContextStr SFTKSessionContext;
typedef struct SFTKSearchResultsStr SFTKSearchResults;
typedef struct SFTKHashVerifyInfoStr SFTKHashVerifyInfo;
typedef struct SFTKHashSignInfoStr SFTKHashSignInfo;
typedef struct SFTKSSLMACInfoStr SFTKSSLMACInfo;
/* define function pointer typdefs for pointer tables */
typedef void (*SFTKDestroy)(void *, PRBool);
typedef void (*SFTKBegin)(void *);
typedef SECStatus (*SFTKCipher)(void *,void *,unsigned int *,unsigned int,
void *, unsigned int);
typedef SECStatus (*SFTKVerify)(void *,void *,unsigned int,void *,unsigned int);
typedef void (*SFTKHash)(void *,void *,unsigned int);
typedef void (*SFTKEnd)(void *,void *,unsigned int *,unsigned int);
typedef void (*SFTKFree)(void *);
/* Value to tell if an attribute is modifiable or not.
* NEVER: attribute is only set on creation.
* ONCOPY: attribute is set on creation and can only be changed on copy.
* SENSITIVE: attribute can only be changed to TRUE.
* ALWAYS: attribute can always be changed.
*/
typedef enum {
SFTK_NEVER = 0,
SFTK_ONCOPY = 1,
SFTK_SENSITIVE = 2,
SFTK_ALWAYS = 3
} SFTKModifyType;
/*
* Free Status Enum... tell us more information when we think we're
* deleting an object.
*/
typedef enum {
SFTK_DestroyFailure,
SFTK_Destroyed,
SFTK_Busy
} SFTKFreeStatus;
/*
* attribute values of an object.
*/
struct SFTKAttributeStr {
SFTKAttribute *next;
SFTKAttribute *prev;
PRBool freeAttr;
PRBool freeData;
/*must be called handle to make sftkqueue_find work */
CK_ATTRIBUTE_TYPE handle;
CK_ATTRIBUTE attrib;
unsigned char space[ATTR_SPACE];
};
/*
* doubly link list of objects
*/
struct SFTKObjectListStr {
SFTKObjectList *next;
SFTKObjectList *prev;
SFTKObject *parent;
};
struct SFTKObjectFreeListStr {
SFTKObject *head;
PZLock *lock;
int count;
};
/*
* PKCS 11 crypto object structure
*/
struct SFTKObjectStr {
SFTKObject *next;
SFTKObject *prev;
CK_OBJECT_CLASS objclass;
CK_OBJECT_HANDLE handle;
int refCount;
PZLock *refLock;
SFTKSlot *slot;
void *objectInfo;
SFTKFree infoFree;
};
struct SFTKTokenObjectStr {
SFTKObject obj;
SECItem dbKey;
};
struct SFTKSessionObjectStr {
SFTKObject obj;
SFTKObjectList sessionList;
PZLock *attributeLock;
SFTKSession *session;
PRBool wasDerived;
int nextAttr;
SFTKAttribute attrList[MAX_OBJS_ATTRS];
PRBool optimizeSpace;
unsigned int hashSize;
SFTKAttribute *head[1];
};
/*
* struct to deal with a temparary list of objects
*/
struct SFTKObjectListElementStr {
SFTKObjectListElement *next;
SFTKObject *object;
};
/*
* Area to hold Search results
*/
struct SFTKSearchResultsStr {
CK_OBJECT_HANDLE *handles;
int size;
int index;
int array_size;
};
/*
* the universal crypto/hash/sign/verify context structure
*/
typedef enum {
SFTK_ENCRYPT,
SFTK_DECRYPT,
SFTK_HASH,
SFTK_SIGN,
SFTK_SIGN_RECOVER,
SFTK_VERIFY,
SFTK_VERIFY_RECOVER
} SFTKContextType;
#define SFTK_MAX_BLOCK_SIZE 16
/* currently SHA512 is the biggest hash length */
#define SFTK_MAX_MAC_LENGTH 64
#define SFTK_INVALID_MAC_SIZE 0xffffffff
struct SFTKSessionContextStr {
SFTKContextType type;
PRBool multi; /* is multipart */
PRBool doPad; /* use PKCS padding for block ciphers */
unsigned int blockSize; /* blocksize for padding */
unsigned int padDataLength; /* length of the valid data in padbuf */
unsigned char padBuf[SFTK_MAX_BLOCK_SIZE];
unsigned char macBuf[SFTK_MAX_BLOCK_SIZE];
CK_ULONG macSize; /* size of a general block cipher mac*/
void *cipherInfo;
void *hashInfo;
unsigned int cipherInfoLen;
CK_MECHANISM_TYPE currentMech;
SFTKCipher update;
SFTKHash hashUpdate;
SFTKEnd end;
SFTKDestroy destroy;
SFTKDestroy hashdestroy;
SFTKVerify verify;
unsigned int maxLen;
SFTKObject *key;
};
/*
* Sessions (have objects)
*/
struct SFTKSessionStr {
SFTKSession *next;
SFTKSession *prev;
CK_SESSION_HANDLE handle;
int refCount;
PZLock *objectLock;
int objectIDCount;
CK_SESSION_INFO info;
CK_NOTIFY notify;
CK_VOID_PTR appData;
SFTKSlot *slot;
SFTKSearchResults *search;
SFTKSessionContext *enc_context;
SFTKSessionContext *hash_context;
SFTKSessionContext *sign_context;
SFTKObjectList *objects[1];
};
/*
* slots (have sessions and objects)
*
* The array of sessionLock's protect the session hash table (head[])
* as well as the reference count of session objects in that bucket
* (head[]->refCount), objectLock protects all elements of the slot's
* object hash tables (sessObjHashTable[] and tokObjHashTable), and
* sessionObjectHandleCount.
* slotLock protects the remaining protected elements:
* password, isLoggedIn, ssoLoggedIn, and sessionCount,
* and pwCheckLock serializes the key database password checks in
* NSC_SetPIN and NSC_Login.
*
* Each of the fields below has the following lifetime as commented
* next to the fields:
* invariant - This value is set when the slot is first created and
* never changed until it is destroyed.
* per load - This value is set when the slot is first created, or
* when the slot is used to open another directory. Between open and close
* this field does not change.
* variable - This value changes through the normal process of slot operation.
* - reset. The value of this variable is cleared during an open/close
* cycles.
* - preserved. The value of this variable is preserved over open/close
* cycles.
*/
struct SFTKSlotStr {
CK_SLOT_ID slotID; /* invariant */
PZLock *slotLock; /* invariant */
PZLock **sessionLock; /* invariant */
unsigned int numSessionLocks; /* invariant */
unsigned long sessionLockMask; /* invariant */
PZLock *objectLock; /* invariant */
PRLock *pwCheckLock; /* invariant */
PRBool present; /* variable -set */
PRBool hasTokens; /* per load */
PRBool isLoggedIn; /* variable - reset */
PRBool ssoLoggedIn; /* variable - reset */
PRBool needLogin; /* per load */
PRBool DB_loaded; /* per load */
PRBool readOnly; /* per load */
PRBool optimizeSpace; /* invariant */
SFTKDBHandle *certDB; /* per load */
SFTKDBHandle *keyDB; /* per load */
int minimumPinLen; /* per load */
PRInt32 sessionIDCount; /* atomically incremented */
/* (preserved) */
int sessionIDConflict; /* not protected by a lock */
/* (preserved) */
int sessionCount; /* variable - reset */
PRInt32 rwSessionCount; /* set by atomic operations */
/* (reset) */
int sessionObjectHandleCount;/* variable - perserved */
int index; /* invariant */
PLHashTable *tokObjHashTable; /* invariant */
SFTKObject **sessObjHashTable; /* variable - reset */
unsigned int sessObjHashSize; /* invariant */
SFTKSession **head; /* variable -reset */
unsigned int sessHashSize; /* invariant */
char tokDescription[33]; /* per load */
char slotDescription[64]; /* invariant */
};
/*
* special joint operations Contexts
*/
struct SFTKHashVerifyInfoStr {
SECOidTag hashOid;
NSSLOWKEYPublicKey *key;
};
struct SFTKHashSignInfoStr {
SECOidTag hashOid;
NSSLOWKEYPrivateKey *key;
};
/* context for the Final SSLMAC message */
struct SFTKSSLMACInfoStr {
void *hashContext;
SFTKBegin begin;
SFTKHash update;
SFTKEnd end;
CK_ULONG macSize;
int padSize;
unsigned char key[MAX_KEY_LEN];
unsigned int keySize;
};
/*
* session handle modifiers
*/
#define SFTK_SESSION_SLOT_MASK 0xff000000L
/*
* object handle modifiers
*/
#define SFTK_TOKEN_MASK 0x80000000L
#define SFTK_TOKEN_MAGIC 0x80000000L
#define SFTK_TOKEN_TYPE_MASK 0x70000000L
/* keydb (high bit == 0) */
#define SFTK_TOKEN_TYPE_PRIV 0x10000000L
#define SFTK_TOKEN_TYPE_PUB 0x20000000L
#define SFTK_TOKEN_TYPE_KEY 0x30000000L
/* certdb (high bit == 1) */
#define SFTK_TOKEN_TYPE_TRUST 0x40000000L
#define SFTK_TOKEN_TYPE_CRL 0x50000000L
#define SFTK_TOKEN_TYPE_SMIME 0x60000000L
#define SFTK_TOKEN_TYPE_CERT 0x70000000L
#define SFTK_TOKEN_KRL_HANDLE (SFTK_TOKEN_MAGIC|SFTK_TOKEN_TYPE_CRL|1)
/* how big (in bytes) a password/pin we can deal with */
#define SFTK_MAX_PIN 255
/* minimum password/pin length (in Unicode characters) in FIPS mode */
#define FIPS_MIN_PIN 7
/* slot ID's */
#define NETSCAPE_SLOT_ID 1
#define PRIVATE_KEY_SLOT_ID 2
#define FIPS_SLOT_ID 3
/* slot helper macros */
#define sftk_SlotFromSession(sp) ((sp)->slot)
#define sftk_isToken(id) (((id) & SFTK_TOKEN_MASK) == SFTK_TOKEN_MAGIC)
/* the session hash multiplier (see bug 201081) */
#define SHMULTIPLIER 1791398085
/* queueing helper macros */
#define sftk_hash(value,size) \
((PRUint32)((value) * SHMULTIPLIER) & (size-1))
#define sftkqueue_add(element,id,head,hash_size) \
{ int tmp = sftk_hash(id,hash_size); \
(element)->next = (head)[tmp]; \
(element)->prev = NULL; \
if ((head)[tmp]) (head)[tmp]->prev = (element); \
(head)[tmp] = (element); }
#define sftkqueue_find(element,id,head,hash_size) \
for( (element) = (head)[sftk_hash(id,hash_size)]; (element) != NULL; \
(element) = (element)->next) { \
if ((element)->handle == (id)) { break; } }
#define sftkqueue_is_queued(element,id,head,hash_size) \
( ((element)->next) || ((element)->prev) || \
((head)[sftk_hash(id,hash_size)] == (element)) )
#define sftkqueue_delete(element,id,head,hash_size) \
if ((element)->next) (element)->next->prev = (element)->prev; \
if ((element)->prev) (element)->prev->next = (element)->next; \
else (head)[sftk_hash(id,hash_size)] = ((element)->next); \
(element)->next = NULL; \
(element)->prev = NULL; \
#define sftkqueue_init_element(element) \
(element)->prev = NULL;
#define sftkqueue_add2(element, id, index, head) \
{ \
(element)->next = (head)[index]; \
if ((head)[index]) \
(head)[index]->prev = (element); \
(head)[index] = (element); \
}
#define sftkqueue_find2(element, id, index, head) \
for ( (element) = (head)[index]; \
(element) != NULL; \
(element) = (element)->next) { \
if ((element)->handle == (id)) { break; } \
}
#define sftkqueue_delete2(element, id, index, head) \
if ((element)->next) (element)->next->prev = (element)->prev; \
if ((element)->prev) (element)->prev->next = (element)->next; \
else (head)[index] = ((element)->next);
#define sftkqueue_clear_deleted_element(element) \
(element)->next = NULL; \
(element)->prev = NULL; \
/* sessionID (handle) is used to determine session lock bucket */
#ifdef NOSPREAD
/* NOSPREAD: (ID>>L2LPB) & (perbucket-1) */
#define SFTK_SESSION_LOCK(slot,handle) \
((slot)->sessionLock[((handle) >> LOG2_BUCKETS_PER_SESSION_LOCK) \
& (slot)->sessionLockMask])
#else
/* SPREAD: ID & (perbucket-1) */
#define SFTK_SESSION_LOCK(slot,handle) \
((slot)->sessionLock[(handle) & (slot)->sessionLockMask])
#endif
/* expand an attribute & secitem structures out */
#define sftk_attr_expand(ap) (ap)->type,(ap)->pValue,(ap)->ulValueLen
#define sftk_item_expand(ip) (ip)->data,(ip)->len
typedef struct sftk_token_parametersStr {
CK_SLOT_ID slotID;
char *configdir;
char *certPrefix;
char *keyPrefix;
char *tokdes;
char *slotdes;
int minPW;
PRBool readOnly;
PRBool noCertDB;
PRBool noKeyDB;
PRBool forceOpen;
PRBool pwRequired;
PRBool optimizeSpace;
} sftk_token_parameters;
typedef struct sftk_parametersStr {
char *configdir;
char *secmodName;
char *man;
char *libdes;
PRBool readOnly;
PRBool noModDB;
PRBool noCertDB;
PRBool forceOpen;
PRBool pwRequired;
PRBool optimizeSpace;
sftk_token_parameters *tokens;
int token_count;
} sftk_parameters;
/* machine dependent path stuff used by dbinit.c and pk11db.c */
#ifdef macintosh
#define PATH_SEPARATOR ":"
#define SECMOD_DB "Security Modules"
#define CERT_DB_FMT "%sCertificates%s"
#define KEY_DB_FMT "%sKey Database%s"
#else
#define PATH_SEPARATOR "/"
#define SECMOD_DB "secmod.db"
#define CERT_DB_FMT "%scert%s.db"
#define KEY_DB_FMT "%skey%s.db"
#endif
SEC_BEGIN_PROTOS
/* shared functions between pkcs11.c and fipstokn.c */
extern PRBool nsf_init;
extern CK_RV nsc_CommonInitialize(CK_VOID_PTR pReserved, PRBool isFIPS);
extern CK_RV nsc_CommonFinalize(CK_VOID_PTR pReserved, PRBool isFIPS);
extern CK_RV nsc_CommonGetSlotList(CK_BBOOL tokPresent,
CK_SLOT_ID_PTR pSlotList, CK_ULONG_PTR pulCount, int moduleIndex);
/* slot initialization, reinit, shutdown and destruction */
extern CK_RV SFTK_SlotInit(char *configdir,
sftk_token_parameters *params, int moduleIndex);
extern CK_RV SFTK_SlotReInit(SFTKSlot *slot, char *configdir,
sftk_token_parameters *params, int moduleIndex);
extern CK_RV SFTK_DestroySlotData(SFTKSlot *slot);
extern CK_RV SFTK_ShutdownSlot(SFTKSlot *slot);
/* internal utility functions used by pkcs11.c */
extern SFTKAttribute *sftk_FindAttribute(SFTKObject *object,
CK_ATTRIBUTE_TYPE type);
extern void sftk_FreeAttribute(SFTKAttribute *attribute);
extern CK_RV sftk_AddAttributeType(SFTKObject *object, CK_ATTRIBUTE_TYPE type,
void *valPtr,
CK_ULONG length);
extern CK_RV sftk_Attribute2SecItem(PLArenaPool *arena, SECItem *item,
SFTKObject *object, CK_ATTRIBUTE_TYPE type);
extern unsigned int sftk_GetLengthInBits(unsigned char *buf,
unsigned int bufLen);
extern CK_RV sftk_ConstrainAttribute(SFTKObject *object,
CK_ATTRIBUTE_TYPE type, int minLength, int maxLength, int minMultiple);
extern PRBool sftk_hasAttribute(SFTKObject *object, CK_ATTRIBUTE_TYPE type);
extern PRBool sftk_isTrue(SFTKObject *object, CK_ATTRIBUTE_TYPE type);
extern void sftk_DeleteAttributeType(SFTKObject *object,
CK_ATTRIBUTE_TYPE type);
extern CK_RV sftk_Attribute2SecItem(PLArenaPool *arena, SECItem *item,
SFTKObject *object, CK_ATTRIBUTE_TYPE type);
extern CK_RV sftk_Attribute2SSecItem(PLArenaPool *arena, SECItem *item,
SFTKObject *object,
CK_ATTRIBUTE_TYPE type);
extern SFTKModifyType sftk_modifyType(CK_ATTRIBUTE_TYPE type,
CK_OBJECT_CLASS inClass);
extern PRBool sftk_isSensitive(CK_ATTRIBUTE_TYPE type, CK_OBJECT_CLASS inClass);
extern char *sftk_getString(SFTKObject *object, CK_ATTRIBUTE_TYPE type);
extern void sftk_nullAttribute(SFTKObject *object,CK_ATTRIBUTE_TYPE type);
extern CK_RV sftk_GetULongAttribute(SFTKObject *object, CK_ATTRIBUTE_TYPE type,
CK_ULONG *longData);
extern CK_RV sftk_forceAttribute(SFTKObject *object, CK_ATTRIBUTE_TYPE type,
void *value, unsigned int len);
extern CK_RV sftk_defaultAttribute(SFTKObject *object, CK_ATTRIBUTE_TYPE type,
void *value, unsigned int len);
extern unsigned int sftk_MapTrust(CK_TRUST trust, PRBool clientAuth);
extern SFTKObject *sftk_NewObject(SFTKSlot *slot);
extern CK_RV sftk_CopyObject(SFTKObject *destObject, SFTKObject *srcObject);
extern SFTKFreeStatus sftk_FreeObject(SFTKObject *object);
extern CK_RV sftk_DeleteObject(SFTKSession *session, SFTKObject *object);
extern void sftk_ReferenceObject(SFTKObject *object);
extern SFTKObject *sftk_ObjectFromHandle(CK_OBJECT_HANDLE handle,
SFTKSession *session);
extern void sftk_AddSlotObject(SFTKSlot *slot, SFTKObject *object);
extern void sftk_AddObject(SFTKSession *session, SFTKObject *object);
/* clear out all the existing object ID to database key mappings.
* used to reinit a token */
extern CK_RV SFTK_ClearTokenKeyHashTable(SFTKSlot *slot);
extern CK_RV sftk_searchObjectList(SFTKSearchResults *search,
SFTKObject **head, unsigned int size,
PZLock *lock, CK_ATTRIBUTE_PTR inTemplate,
int count, PRBool isLoggedIn);
extern SFTKObjectListElement *sftk_FreeObjectListElement(
SFTKObjectListElement *objectList);
extern void sftk_FreeObjectList(SFTKObjectListElement *objectList);
extern void sftk_FreeSearch(SFTKSearchResults *search);
extern CK_RV sftk_handleObject(SFTKObject *object, SFTKSession *session);
extern SFTKSlot *sftk_SlotFromID(CK_SLOT_ID slotID, PRBool all);
extern SFTKSlot *sftk_SlotFromSessionHandle(CK_SESSION_HANDLE handle);
extern SFTKSession *sftk_SessionFromHandle(CK_SESSION_HANDLE handle);
extern void sftk_FreeSession(SFTKSession *session);
extern SFTKSession *sftk_NewSession(CK_SLOT_ID slotID, CK_NOTIFY notify,
CK_VOID_PTR pApplication, CK_FLAGS flags);
extern void sftk_update_state(SFTKSlot *slot,SFTKSession *session);
extern void sftk_update_all_states(SFTKSlot *slot);
extern void sftk_FreeContext(SFTKSessionContext *context);
extern void sftk_InitFreeLists(void);
extern void sftk_CleanupFreeLists(void);
extern NSSLOWKEYPublicKey *sftk_GetPubKey(SFTKObject *object,
CK_KEY_TYPE key_type, CK_RV *crvp);
extern NSSLOWKEYPrivateKey *sftk_GetPrivKey(SFTKObject *object,
CK_KEY_TYPE key_type, CK_RV *crvp);
extern void sftk_FormatDESKey(unsigned char *key, int length);
extern PRBool sftk_CheckDESKey(unsigned char *key);
extern PRBool sftk_IsWeakKey(unsigned char *key,CK_KEY_TYPE key_type);
/* mechanism allows this operation */
extern CK_RV sftk_MechAllowsOperation(CK_MECHANISM_TYPE type, CK_ATTRIBUTE_TYPE op);
/* helper function which calls nsslowkey_FindKeyByPublicKey after safely
* acquiring a reference to the keydb from the slot */
NSSLOWKEYPrivateKey *sftk_FindKeyByPublicKey(SFTKSlot *slot, SECItem *dbKey);
/*
* narrow objects
*/
SFTKSessionObject * sftk_narrowToSessionObject(SFTKObject *);
SFTKTokenObject * sftk_narrowToTokenObject(SFTKObject *);
/*
* token object utilities
*/
void sftk_addHandle(SFTKSearchResults *search, CK_OBJECT_HANDLE handle);
PRBool sftk_poisonHandle(SFTKSlot *slot, SECItem *dbkey,
CK_OBJECT_HANDLE handle);
SFTKObject * sftk_NewTokenObject(SFTKSlot *slot, SECItem *dbKey,
CK_OBJECT_HANDLE handle);
SFTKTokenObject *sftk_convertSessionToToken(SFTKObject *so);
/****************************************
* implement TLS Pseudo Random Function (PRF)
*/
extern CK_RV
sftk_TLSPRFInit(SFTKSessionContext *context,
SFTKObject * key,
CK_KEY_TYPE key_type);
SEC_END_PROTOS
#endif /* _PKCS11I_H_ */

View File

@@ -0,0 +1,281 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Dr Stephen Henson <stephen.henson@gemplus.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _PKCS11N_H_
#define _PKCS11N_H_
#ifdef DEBUG
static const char CKT_CVS_ID[] = "@(#) $RCSfile: pkcs11n.h,v $ $Revision: 1.15.22.1 $ $Date: 2007-05-17 01:08:18 $";
#endif /* DEBUG */
/*
* pkcs11n.h
*
* This file contains the NSS-specific type definitions for Cryptoki
* (PKCS#11).
*/
/*
* NSSCK_VENDOR_NSS
*
* Cryptoki reserves the high half of all the number spaces for
* vendor-defined use. I'd like to keep all of our NSS-
* specific values together, but not in the oh-so-obvious
* 0x80000001, 0x80000002, etc. area. So I've picked an offset,
* and constructed values for the beginnings of our spaces.
*
* Note that some "historical" Netscape values don't fall within
* this range.
*/
#define NSSCK_VENDOR_NSS 0x4E534350 /* NSCP */
/*
* NSS-defined object classes
*
*/
#define CKO_NSS (CKO_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
#define CKO_NSS_CRL (CKO_NSS + 1)
#define CKO_NSS_SMIME (CKO_NSS + 2)
#define CKO_NSS_TRUST (CKO_NSS + 3)
#define CKO_NSS_BUILTIN_ROOT_LIST (CKO_NSS + 4)
#define CKO_NSS_NEWSLOT (CKO_NSS + 5)
#define CKO_NSS_DELSLOT (CKO_NSS + 6)
/*
* NSS-defined key types
*
*/
#define CKK_NSS (CKK_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
#define CKK_NSS_PKCS8 (CKK_NSS + 1)
/*
* NSS-defined certificate types
*
*/
#define CKC_NSS (CKC_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
/*
* NSS-defined object attributes
*
*/
#define CKA_NSS (CKA_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
#define CKA_NSS_URL (CKA_NSS + 1)
#define CKA_NSS_EMAIL (CKA_NSS + 2)
#define CKA_NSS_SMIME_INFO (CKA_NSS + 3)
#define CKA_NSS_SMIME_TIMESTAMP (CKA_NSS + 4)
#define CKA_NSS_PKCS8_SALT (CKA_NSS + 5)
#define CKA_NSS_PASSWORD_CHECK (CKA_NSS + 6)
#define CKA_NSS_EXPIRES (CKA_NSS + 7)
#define CKA_NSS_KRL (CKA_NSS + 8)
#define CKA_NSS_PQG_COUNTER (CKA_NSS + 20)
#define CKA_NSS_PQG_SEED (CKA_NSS + 21)
#define CKA_NSS_PQG_H (CKA_NSS + 22)
#define CKA_NSS_PQG_SEED_BITS (CKA_NSS + 23)
#define CKA_NSS_MODULE_SPEC (CKA_NSS + 24)
#define CKA_NSS_OVERRIDE_EXTENSIONS (CKA_NSS + 25)
/*
* Trust attributes:
*
* If trust goes standard, these probably will too. So I'll
* put them all in one place.
*/
#define CKA_TRUST (CKA_NSS + 0x2000)
/* "Usage" key information */
#define CKA_TRUST_DIGITAL_SIGNATURE (CKA_TRUST + 1)
#define CKA_TRUST_NON_REPUDIATION (CKA_TRUST + 2)
#define CKA_TRUST_KEY_ENCIPHERMENT (CKA_TRUST + 3)
#define CKA_TRUST_DATA_ENCIPHERMENT (CKA_TRUST + 4)
#define CKA_TRUST_KEY_AGREEMENT (CKA_TRUST + 5)
#define CKA_TRUST_KEY_CERT_SIGN (CKA_TRUST + 6)
#define CKA_TRUST_CRL_SIGN (CKA_TRUST + 7)
/* "Purpose" trust information */
#define CKA_TRUST_SERVER_AUTH (CKA_TRUST + 8)
#define CKA_TRUST_CLIENT_AUTH (CKA_TRUST + 9)
#define CKA_TRUST_CODE_SIGNING (CKA_TRUST + 10)
#define CKA_TRUST_EMAIL_PROTECTION (CKA_TRUST + 11)
#define CKA_TRUST_IPSEC_END_SYSTEM (CKA_TRUST + 12)
#define CKA_TRUST_IPSEC_TUNNEL (CKA_TRUST + 13)
#define CKA_TRUST_IPSEC_USER (CKA_TRUST + 14)
#define CKA_TRUST_TIME_STAMPING (CKA_TRUST + 15)
#define CKA_TRUST_STEP_UP_APPROVED (CKA_TRUST + 16)
#define CKA_CERT_SHA1_HASH (CKA_TRUST + 100)
#define CKA_CERT_MD5_HASH (CKA_TRUST + 101)
/* NSS trust stuff */
/* XXX fgmr new ones here-- step-up, etc. */
/* HISTORICAL: define used to pass in the database key for DSA private keys */
#define CKA_NETSCAPE_DB 0xD5A0DB00L
#define CKA_NETSCAPE_TRUST 0x80000001L
/*
* NSS-defined crypto mechanisms
*
*/
#define CKM_NSS (CKM_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
#define CKM_NSS_AES_KEY_WRAP (CKM_NSS + 1)
#define CKM_NSS_AES_KEY_WRAP_PAD (CKM_NSS + 2)
/*
* HISTORICAL:
* Do not attempt to use these. They are only used by NETSCAPE's internal
* PKCS #11 interface. Most of these are place holders for other mechanism
* and will change in the future.
*/
#define CKM_NETSCAPE_PBE_SHA1_DES_CBC 0x80000002L
#define CKM_NETSCAPE_PBE_SHA1_TRIPLE_DES_CBC 0x80000003L
#define CKM_NETSCAPE_PBE_SHA1_40_BIT_RC2_CBC 0x80000004L
#define CKM_NETSCAPE_PBE_SHA1_128_BIT_RC2_CBC 0x80000005L
#define CKM_NETSCAPE_PBE_SHA1_40_BIT_RC4 0x80000006L
#define CKM_NETSCAPE_PBE_SHA1_128_BIT_RC4 0x80000007L
#define CKM_NETSCAPE_PBE_SHA1_FAULTY_3DES_CBC 0x80000008L
#define CKM_NETSCAPE_PBE_SHA1_HMAC_KEY_GEN 0x80000009L
#define CKM_NETSCAPE_PBE_MD5_HMAC_KEY_GEN 0x8000000aL
#define CKM_NETSCAPE_PBE_MD2_HMAC_KEY_GEN 0x8000000bL
#define CKM_TLS_PRF_GENERAL 0x80000373L
/*
* NSS-defined return values
*
*/
#define CKR_NSS (CKM_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
#define CKR_NSS_CERTDB_FAILED (CKR_NSS + 1)
#define CKR_NSS_KEYDB_FAILED (CKR_NSS + 2)
/*
* Trust info
*
* This isn't part of the Cryptoki standard (yet), so I'm putting
* all the definitions here. Some of this would move to nssckt.h
* if trust info were made part of the standard. In view of this
* possibility, I'm putting my (NSS) values in the NSS
* vendor space, like everything else.
*/
typedef CK_ULONG CK_TRUST;
/* The following trust types are defined: */
#define CKT_VENDOR_DEFINED 0x80000000
#define CKT_NSS (CKT_VENDOR_DEFINED|NSSCK_VENDOR_NSS)
/* If trust goes standard, these'll probably drop out of vendor space. */
#define CKT_NSS_TRUSTED (CKT_NSS + 1)
#define CKT_NSS_TRUSTED_DELEGATOR (CKT_NSS + 2)
#define CKT_NSS_UNTRUSTED (CKT_NSS + 3)
#define CKT_NSS_MUST_VERIFY (CKT_NSS + 4)
#define CKT_NSS_TRUST_UNKNOWN (CKT_NSS + 5) /* default */
/*
* These may well remain NSS-specific; I'm only using them
* to cache resolution data.
*/
#define CKT_NSS_VALID (CKT_NSS + 10)
#define CKT_NSS_VALID_DELEGATOR (CKT_NSS + 11)
/* don't leave old programs in a lurch just yet, give them the old NETSCAPE
* synonym */
#define CKO_NETSCAPE_CRL CKO_NSS_CRL
#define CKO_NETSCAPE_SMIME CKO_NSS_SMIME
#define CKO_NETSCAPE_TRUST CKO_NSS_TRUST
#define CKO_NETSCAPE_BUILTIN_ROOT_LIST CKO_NSS_BUILTIN_ROOT_LIST
#define CKO_NETSCAPE_NEWSLOT CKO_NSS_NEWSLOT
#define CKO_NETSCAPE_DELSLOT CKO_NSS_DELSLOT
#define CKK_NETSCAPE_PKCS8 CKK_NSS_PKCS8
#define CKA_NETSCAPE_URL CKA_NSS_URL
#define CKA_NETSCAPE_EMAIL CKA_NSS_EMAIL
#define CKA_NETSCAPE_SMIME_INFO CKA_NSS_SMIME_INFO
#define CKA_NETSCAPE_SMIME_TIMESTAMP CKA_NSS_SMIME_TIMESTAMP
#define CKA_NETSCAPE_PKCS8_SALT CKA_NSS_PKCS8_SALT
#define CKA_NETSCAPE_PASSWORD_CHECK CKA_NSS_PASSWORD_CHECK
#define CKA_NETSCAPE_EXPIRES CKA_NSS_EXPIRES
#define CKA_NETSCAPE_KRL CKA_NSS_KRL
#define CKA_NETSCAPE_PQG_COUNTER CKA_NSS_PQG_COUNTER
#define CKA_NETSCAPE_PQG_SEED CKA_NSS_PQG_SEED
#define CKA_NETSCAPE_PQG_H CKA_NSS_PQG_H
#define CKA_NETSCAPE_PQG_SEED_BITS CKA_NSS_PQG_SEED_BITS
#define CKA_NETSCAPE_MODULE_SPEC CKA_NSS_MODULE_SPEC
#define CKM_NETSCAPE_AES_KEY_WRAP CKM_NSS_AES_KEY_WRAP
#define CKM_NETSCAPE_AES_KEY_WRAP_PAD CKM_NSS_AES_KEY_WRAP_PAD
#define CKR_NETSCAPE_CERTDB_FAILED CKR_NSS_CERTDB_FAILED
#define CKR_NETSCAPE_KEYDB_FAILED CKR_NSS_KEYDB_FAILED
#define CKT_NETSCAPE_TRUSTED CKT_NSS_TRUSTED
#define CKT_NETSCAPE_TRUSTED_DELEGATOR CKT_NSS_TRUSTED_DELEGATOR
#define CKT_NETSCAPE_UNTRUSTED CKT_NSS_UNTRUSTED
#define CKT_NETSCAPE_MUST_VERIFY CKT_NSS_MUST_VERIFY
#define CKT_NETSCAPE_TRUST_UNKNOWN CKT_NSS_TRUST_UNKNOWN
#define CKT_NETSCAPE_VALID CKT_NSS_VALID
#define CKT_NETSCAPE_VALID_DELEGATOR CKT_NSS_VALID_DELEGATOR
/*
* These are not really PKCS #11 values specifically. They are the 'loadable'
* module spec NSS uses. The are available for others to use as well, but not
* part of the formal PKCS #11 spec.
*
* The function 'FIND' returns an array of PKCS #11 initialization strings
* The function 'ADD' takes a PKCS #11 initialization string and stores it.
* The function 'DEL' takes a 'name= library=' value and deletes the associated
* string.
* The function 'RELEASE' frees the array returned by 'FIND'
*/
#define SECMOD_MODULE_DB_FUNCTION_FIND 0
#define SECMOD_MODULE_DB_FUNCTION_ADD 1
#define SECMOD_MODULE_DB_FUNCTION_DEL 2
#define SECMOD_MODULE_DB_FUNCTION_RELEASE 3
typedef char ** (PR_CALLBACK *SECMODModuleDBFunc)(unsigned long function,
char *parameters, void *moduleSpec);
/* softoken slot ID's */
#define SFTK_MIN_USER_SLOT_ID 4
#define SFTK_MAX_USER_SLOT_ID 100
#define SFTK_MIN_FIPS_USER_SLOT_ID 101
#define SFTK_MAX_FIPS_USER_SLOT_ID 127
#endif /* _PKCS11N_H_ */

View File

@@ -0,0 +1,52 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Red Hat, Inc.
* Portions created by the Initial Developer are Copyright (C) 2005
* the Initial Developer. All Rights Reserved.
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _PKCS11NI_H_
#define _PKCS11NI_H_
/*
* pkcs11ni.h
*
* This file contains softoken private exports for NSS
*/
/* softoken slot ID's */
#define SFTK_MIN_USER_SLOT_ID 4
#define SFTK_MAX_USER_SLOT_ID 100
#define SFTK_MIN_FIPS_USER_SLOT_ID 101
#define SFTK_MAX_FIPS_USER_SLOT_ID 127
#endif /* _PKCS11NI_H_ */

View File

@@ -0,0 +1,54 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
* is granted provided that it is identified as "RSA Security Inc. Public-Key
* Cryptography Standards (PKCS)" in all material mentioning or referencing
* this document.
*/
/* these data types are platform/implementation dependent. */
/*
* Packing was removed from the shipped RSA header files, even
* though it's still needed. put in a central file to help merging..
*/
#if defined(_WIN32)
#ifdef _MSC_VER
#pragma warning(disable:4103)
#endif
#pragma pack(push, cryptoki, 1)
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,52 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Copyright (C) 1994-1999 RSA Security Inc. Licence to copy this document
* is granted provided that it is identified as "RSA Security Inc. Public-Key
* Cryptography Standards (PKCS)" in all material mentioning or referencing
* this document.
*/
/*
* reset any packing set by pkcs11p.h
*/
#if defined (_WIN32)
#ifdef _MSC_VER
#pragma warning(disable:4103)
#endif
#pragma pack(pop, cryptoki)
#endif

View File

@@ -0,0 +1,917 @@
/*
* PKCS#1 encoding and decoding functions.
* This file is believed to contain no code licensed from other parties.
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: rsawrapr.c,v 1.11 2006-10-23 21:24:38 wtchang%redhat.com Exp $ */
#include "blapi.h"
#include "softoken.h"
#include "sechash.h"
#include "lowkeyi.h"
#include "secerr.h"
#define RSA_BLOCK_MIN_PAD_LEN 8
#define RSA_BLOCK_FIRST_OCTET 0x00
#define RSA_BLOCK_PRIVATE0_PAD_OCTET 0x00
#define RSA_BLOCK_PRIVATE_PAD_OCTET 0xff
#define RSA_BLOCK_AFTER_PAD_OCTET 0x00
#define OAEP_SALT_LEN 8
#define OAEP_PAD_LEN 8
#define OAEP_PAD_OCTET 0x00
#define FLAT_BUFSIZE 512 /* bytes to hold flattened SHA1Context. */
static SHA1Context *
SHA1_CloneContext(SHA1Context *original)
{
SHA1Context * clone = NULL;
unsigned char *pBuf;
int sha1ContextSize = SHA1_FlattenSize(original);
SECStatus frv;
unsigned char buf[FLAT_BUFSIZE];
PORT_Assert(sizeof buf >= sha1ContextSize);
if (sizeof buf >= sha1ContextSize) {
pBuf = buf;
} else {
pBuf = PORT_Alloc(sha1ContextSize);
if (!pBuf)
goto done;
}
frv = SHA1_Flatten(original, pBuf);
if (frv == SECSuccess) {
clone = SHA1_Resurrect(pBuf, NULL);
memset(pBuf, 0, sha1ContextSize);
}
done:
if (pBuf != buf)
PORT_Free(pBuf);
return clone;
}
/*
* Modify data by XORing it with a special hash of salt.
*/
static SECStatus
oaep_xor_with_h1(unsigned char *data, unsigned int datalen,
unsigned char *salt, unsigned int saltlen)
{
SHA1Context *sha1cx;
unsigned char *dp, *dataend;
unsigned char end_octet;
sha1cx = SHA1_NewContext();
if (sha1cx == NULL) {
return SECFailure;
}
/*
* Get a hash of salt started; we will use it several times,
* adding in a different end octet (x00, x01, x02, ...).
*/
SHA1_Begin (sha1cx);
SHA1_Update (sha1cx, salt, saltlen);
end_octet = 0;
dp = data;
dataend = data + datalen;
while (dp < dataend) {
SHA1Context *sha1cx_h1;
unsigned int sha1len, sha1off;
unsigned char sha1[SHA1_LENGTH];
/*
* Create hash of (salt || end_octet)
*/
sha1cx_h1 = SHA1_CloneContext (sha1cx);
SHA1_Update (sha1cx_h1, &end_octet, 1);
SHA1_End (sha1cx_h1, sha1, &sha1len, sizeof(sha1));
SHA1_DestroyContext (sha1cx_h1, PR_TRUE);
PORT_Assert (sha1len == SHA1_LENGTH);
/*
* XOR that hash with the data.
* When we have fewer than SHA1_LENGTH octets of data
* left to xor, use just the low-order ones of the hash.
*/
sha1off = 0;
if ((dataend - dp) < SHA1_LENGTH)
sha1off = SHA1_LENGTH - (dataend - dp);
while (sha1off < SHA1_LENGTH)
*dp++ ^= sha1[sha1off++];
/*
* Bump for next hash chunk.
*/
end_octet++;
}
SHA1_DestroyContext (sha1cx, PR_TRUE);
return SECSuccess;
}
/*
* Modify salt by XORing it with a special hash of data.
*/
static SECStatus
oaep_xor_with_h2(unsigned char *salt, unsigned int saltlen,
unsigned char *data, unsigned int datalen)
{
unsigned char sha1[SHA1_LENGTH];
unsigned char *psalt, *psha1, *saltend;
SECStatus rv;
/*
* Create a hash of data.
*/
rv = SHA1_HashBuf (sha1, data, datalen);
if (rv != SECSuccess) {
return rv;
}
/*
* XOR the low-order octets of that hash with salt.
*/
PORT_Assert (saltlen <= SHA1_LENGTH);
saltend = salt + saltlen;
psalt = salt;
psha1 = sha1 + SHA1_LENGTH - saltlen;
while (psalt < saltend) {
*psalt++ ^= *psha1++;
}
return SECSuccess;
}
/*
* Format one block of data for public/private key encryption using
* the rules defined in PKCS #1.
*/
static unsigned char *
rsa_FormatOneBlock(unsigned modulusLen, RSA_BlockType blockType,
SECItem *data)
{
unsigned char *block;
unsigned char *bp;
int padLen;
int i;
SECStatus rv;
block = (unsigned char *) PORT_Alloc(modulusLen);
if (block == NULL)
return NULL;
bp = block;
/*
* All RSA blocks start with two octets:
* 0x00 || BlockType
*/
*bp++ = RSA_BLOCK_FIRST_OCTET;
*bp++ = (unsigned char) blockType;
switch (blockType) {
/*
* Blocks intended for private-key operation.
*/
case RSA_BlockPrivate0: /* essentially unused */
case RSA_BlockPrivate: /* preferred method */
/*
* 0x00 || BT || Pad || 0x00 || ActualData
* 1 1 padLen 1 data->len
* Pad is either all 0x00 or all 0xff bytes, depending on blockType.
*/
padLen = modulusLen - data->len - 3;
PORT_Assert (padLen >= RSA_BLOCK_MIN_PAD_LEN);
if (padLen < RSA_BLOCK_MIN_PAD_LEN) {
PORT_Free (block);
return NULL;
}
PORT_Memset (bp,
blockType == RSA_BlockPrivate0
? RSA_BLOCK_PRIVATE0_PAD_OCTET
: RSA_BLOCK_PRIVATE_PAD_OCTET,
padLen);
bp += padLen;
*bp++ = RSA_BLOCK_AFTER_PAD_OCTET;
PORT_Memcpy (bp, data->data, data->len);
break;
/*
* Blocks intended for public-key operation.
*/
case RSA_BlockPublic:
/*
* 0x00 || BT || Pad || 0x00 || ActualData
* 1 1 padLen 1 data->len
* Pad is all non-zero random bytes.
*/
padLen = modulusLen - data->len - 3;
PORT_Assert (padLen >= RSA_BLOCK_MIN_PAD_LEN);
if (padLen < RSA_BLOCK_MIN_PAD_LEN) {
PORT_Free (block);
return NULL;
}
for (i = 0; i < padLen; i++) {
/* Pad with non-zero random data. */
do {
rv = RNG_GenerateGlobalRandomBytes(bp + i, 1);
} while (rv == SECSuccess && bp[i] == RSA_BLOCK_AFTER_PAD_OCTET);
if (rv != SECSuccess) {
sftk_fatalError = PR_TRUE;
PORT_Free (block);
return NULL;
}
}
bp += padLen;
*bp++ = RSA_BLOCK_AFTER_PAD_OCTET;
PORT_Memcpy (bp, data->data, data->len);
break;
/*
* Blocks intended for public-key operation, using
* Optimal Asymmetric Encryption Padding (OAEP).
*/
case RSA_BlockOAEP:
/*
* 0x00 || BT || Modified2(Salt) || Modified1(PaddedData)
* 1 1 OAEP_SALT_LEN OAEP_PAD_LEN + data->len [+ N]
*
* where:
* PaddedData is "Pad1 || ActualData [|| Pad2]"
* Salt is random data.
* Pad1 is all zeros.
* Pad2, if present, is random data.
* (The "modified" fields are all the same length as the original
* unmodified values; they are just xor'd with other values.)
*
* Modified1 is an XOR of PaddedData with a special octet
* string constructed of iterated hashing of Salt (see below).
* Modified2 is an XOR of Salt with the low-order octets of
* the hash of Modified1 (see farther below ;-).
*
* Whew!
*/
/*
* Salt
*/
rv = RNG_GenerateGlobalRandomBytes(bp, OAEP_SALT_LEN);
if (rv != SECSuccess) {
sftk_fatalError = PR_TRUE;
PORT_Free (block);
return NULL;
}
bp += OAEP_SALT_LEN;
/*
* Pad1
*/
PORT_Memset (bp, OAEP_PAD_OCTET, OAEP_PAD_LEN);
bp += OAEP_PAD_LEN;
/*
* Data
*/
PORT_Memcpy (bp, data->data, data->len);
bp += data->len;
/*
* Pad2
*/
if (bp < (block + modulusLen)) {
rv = RNG_GenerateGlobalRandomBytes(bp, block - bp + modulusLen);
if (rv != SECSuccess) {
sftk_fatalError = PR_TRUE;
PORT_Free (block);
return NULL;
}
}
/*
* Now we have the following:
* 0x00 || BT || Salt || PaddedData
* (From this point on, "Pad1 || Data [|| Pad2]" is treated
* as the one entity PaddedData.)
*
* We need to turn PaddedData into Modified1.
*/
if (oaep_xor_with_h1(block + 2 + OAEP_SALT_LEN,
modulusLen - 2 - OAEP_SALT_LEN,
block + 2, OAEP_SALT_LEN) != SECSuccess) {
PORT_Free (block);
return NULL;
}
/*
* Now we have:
* 0x00 || BT || Salt || Modified1(PaddedData)
*
* The remaining task is to turn Salt into Modified2.
*/
if (oaep_xor_with_h2(block + 2, OAEP_SALT_LEN,
block + 2 + OAEP_SALT_LEN,
modulusLen - 2 - OAEP_SALT_LEN) != SECSuccess) {
PORT_Free (block);
return NULL;
}
break;
default:
PORT_Assert (0);
PORT_Free (block);
return NULL;
}
return block;
}
static SECStatus
rsa_FormatBlock(SECItem *result, unsigned modulusLen,
RSA_BlockType blockType, SECItem *data)
{
/*
* XXX For now assume that the data length fits in a single
* XXX encryption block; the ASSERTs below force this.
* XXX To fix it, each case will have to loop over chunks whose
* XXX lengths satisfy the assertions, until all data is handled.
* XXX (Unless RSA has more to say about how to handle data
* XXX which does not fit in a single encryption block?)
* XXX And I do not know what the result is supposed to be,
* XXX so the interface to this function may need to change
* XXX to allow for returning multiple blocks, if they are
* XXX not wanted simply concatenated one after the other.
*/
switch (blockType) {
case RSA_BlockPrivate0:
case RSA_BlockPrivate:
case RSA_BlockPublic:
/*
* 0x00 || BT || Pad || 0x00 || ActualData
*
* The "3" below is the first octet + the second octet + the 0x00
* octet that always comes just before the ActualData.
*/
PORT_Assert (data->len <= (modulusLen - (3 + RSA_BLOCK_MIN_PAD_LEN)));
result->data = rsa_FormatOneBlock(modulusLen, blockType, data);
if (result->data == NULL) {
result->len = 0;
return SECFailure;
}
result->len = modulusLen;
break;
case RSA_BlockOAEP:
/*
* 0x00 || BT || M1(Salt) || M2(Pad1||ActualData[||Pad2])
*
* The "2" below is the first octet + the second octet.
* (The other fields do not contain the clear values, but are
* the same length as the clear values.)
*/
PORT_Assert (data->len <= (modulusLen - (2 + OAEP_SALT_LEN
+ OAEP_PAD_LEN)));
result->data = rsa_FormatOneBlock(modulusLen, blockType, data);
if (result->data == NULL) {
result->len = 0;
return SECFailure;
}
result->len = modulusLen;
break;
case RSA_BlockRaw:
/*
* Pad || ActualData
* Pad is zeros. The application is responsible for recovering
* the actual data.
*/
if (data->len > modulusLen ) {
return SECFailure;
}
result->data = (unsigned char*)PORT_ZAlloc(modulusLen);
result->len = modulusLen;
PORT_Memcpy(result->data+(modulusLen-data->len),data->data,data->len);
break;
default:
PORT_Assert (0);
result->data = NULL;
result->len = 0;
return SECFailure;
}
return SECSuccess;
}
/* XXX Doesn't set error code */
SECStatus
RSA_Sign(NSSLOWKEYPrivateKey *key,
unsigned char * output,
unsigned int * output_len,
unsigned int maxOutputLen,
unsigned char * input,
unsigned int input_len)
{
SECStatus rv = SECSuccess;
unsigned int modulus_len = nsslowkey_PrivateModulusLen(key);
SECItem formatted;
SECItem unformatted;
if (maxOutputLen < modulus_len)
return SECFailure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
return SECFailure;
unformatted.len = input_len;
unformatted.data = input;
formatted.data = NULL;
rv = rsa_FormatBlock(&formatted, modulus_len, RSA_BlockPrivate,
&unformatted);
if (rv != SECSuccess)
goto done;
rv = RSA_PrivateKeyOpDoubleChecked(&key->u.rsa, output, formatted.data);
if (rv != SECSuccess && PORT_GetError() == SEC_ERROR_LIBRARY_FAILURE) {
sftk_fatalError = PR_TRUE;
}
*output_len = modulus_len;
goto done;
done:
if (formatted.data != NULL)
PORT_ZFree(formatted.data, modulus_len);
return rv;
}
/* XXX Doesn't set error code */
SECStatus
RSA_CheckSign(NSSLOWKEYPublicKey *key,
unsigned char * sign,
unsigned int sign_len,
unsigned char * hash,
unsigned int hash_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PublicModulusLen(key);
unsigned int i;
unsigned char * buffer;
modulus_len = nsslowkey_PublicModulusLen(key);
if (sign_len != modulus_len)
goto failure;
/*
* 0x00 || BT || Pad || 0x00 || ActualData
*
* The "3" below is the first octet + the second octet + the 0x00
* octet that always comes just before the ActualData.
*/
if (hash_len > modulus_len - (3 + RSA_BLOCK_MIN_PAD_LEN))
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
buffer = (unsigned char *)PORT_Alloc(modulus_len + 1);
if (!buffer)
goto failure;
rv = RSA_PublicKeyOp(&key->u.rsa, buffer, sign);
if (rv != SECSuccess)
goto loser;
/*
* check the padding that was used
*/
if (buffer[0] != 0 || buffer[1] != 1)
goto loser;
for (i = 2; i < modulus_len - hash_len - 1; i++) {
if (buffer[i] != 0xff)
goto loser;
}
if (buffer[i] != 0)
goto loser;
/*
* make sure we get the same results
*/
if (PORT_Memcmp(buffer + modulus_len - hash_len, hash, hash_len) != 0)
goto loser;
PORT_Free(buffer);
return SECSuccess;
loser:
PORT_Free(buffer);
failure:
return SECFailure;
}
/* XXX Doesn't set error code */
SECStatus
RSA_CheckSignRecover(NSSLOWKEYPublicKey *key,
unsigned char * data,
unsigned int * data_len,
unsigned int max_output_len,
unsigned char * sign,
unsigned int sign_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PublicModulusLen(key);
unsigned int i;
unsigned char * buffer;
if (sign_len != modulus_len)
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
buffer = (unsigned char *)PORT_Alloc(modulus_len + 1);
if (!buffer)
goto failure;
rv = RSA_PublicKeyOp(&key->u.rsa, buffer, sign);
if (rv != SECSuccess)
goto loser;
*data_len = 0;
/*
* check the padding that was used
*/
if (buffer[0] != 0 || buffer[1] != 1)
goto loser;
for (i = 2; i < modulus_len; i++) {
if (buffer[i] == 0) {
*data_len = modulus_len - i - 1;
break;
}
if (buffer[i] != 0xff)
goto loser;
}
if (*data_len == 0)
goto loser;
if (*data_len > max_output_len)
goto loser;
/*
* make sure we get the same results
*/
PORT_Memcpy(data,buffer + modulus_len - *data_len, *data_len);
PORT_Free(buffer);
return SECSuccess;
loser:
PORT_Free(buffer);
failure:
return SECFailure;
}
/* XXX Doesn't set error code */
SECStatus
RSA_EncryptBlock(NSSLOWKEYPublicKey *key,
unsigned char * output,
unsigned int * output_len,
unsigned int max_output_len,
unsigned char * input,
unsigned int input_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PublicModulusLen(key);
SECItem formatted;
SECItem unformatted;
formatted.data = NULL;
if (max_output_len < modulus_len)
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
unformatted.len = input_len;
unformatted.data = input;
formatted.data = NULL;
rv = rsa_FormatBlock(&formatted, modulus_len, RSA_BlockPublic,
&unformatted);
if (rv != SECSuccess)
goto failure;
rv = RSA_PublicKeyOp(&key->u.rsa, output, formatted.data);
if (rv != SECSuccess)
goto failure;
PORT_ZFree(formatted.data, modulus_len);
*output_len = modulus_len;
return SECSuccess;
failure:
if (formatted.data != NULL)
PORT_ZFree(formatted.data, modulus_len);
return SECFailure;
}
/* XXX Doesn't set error code */
SECStatus
RSA_DecryptBlock(NSSLOWKEYPrivateKey *key,
unsigned char * output,
unsigned int * output_len,
unsigned int max_output_len,
unsigned char * input,
unsigned int input_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PrivateModulusLen(key);
unsigned int i;
unsigned char * buffer;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
if (input_len != modulus_len)
goto failure;
buffer = (unsigned char *)PORT_Alloc(modulus_len + 1);
if (!buffer)
goto failure;
rv = RSA_PrivateKeyOp(&key->u.rsa, buffer, input);
if (rv != SECSuccess) {
if (PORT_GetError() == SEC_ERROR_LIBRARY_FAILURE) {
sftk_fatalError = PR_TRUE;
}
goto loser;
}
if (buffer[0] != 0 || buffer[1] != 2)
goto loser;
*output_len = 0;
for (i = 2; i < modulus_len; i++) {
if (buffer[i] == 0) {
*output_len = modulus_len - i - 1;
break;
}
}
if (*output_len == 0)
goto loser;
if (*output_len > max_output_len)
goto loser;
PORT_Memcpy(output, buffer + modulus_len - *output_len, *output_len);
PORT_Free(buffer);
return SECSuccess;
loser:
PORT_Free(buffer);
failure:
return SECFailure;
}
/* XXX Doesn't set error code */
/*
* added to make pkcs #11 happy
* RAW is RSA_X_509
*/
SECStatus
RSA_SignRaw(NSSLOWKEYPrivateKey *key,
unsigned char * output,
unsigned int * output_len,
unsigned int maxOutputLen,
unsigned char * input,
unsigned int input_len)
{
SECStatus rv = SECSuccess;
unsigned int modulus_len = nsslowkey_PrivateModulusLen(key);
SECItem formatted;
SECItem unformatted;
if (maxOutputLen < modulus_len)
return SECFailure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
return SECFailure;
unformatted.len = input_len;
unformatted.data = input;
formatted.data = NULL;
rv = rsa_FormatBlock(&formatted, modulus_len, RSA_BlockRaw, &unformatted);
if (rv != SECSuccess)
goto done;
rv = RSA_PrivateKeyOpDoubleChecked(&key->u.rsa, output, formatted.data);
if (rv != SECSuccess && PORT_GetError() == SEC_ERROR_LIBRARY_FAILURE) {
sftk_fatalError = PR_TRUE;
}
*output_len = modulus_len;
done:
if (formatted.data != NULL)
PORT_ZFree(formatted.data, modulus_len);
return rv;
}
/* XXX Doesn't set error code */
SECStatus
RSA_CheckSignRaw(NSSLOWKEYPublicKey *key,
unsigned char * sign,
unsigned int sign_len,
unsigned char * hash,
unsigned int hash_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PublicModulusLen(key);
unsigned char * buffer;
if (sign_len != modulus_len)
goto failure;
if (hash_len > modulus_len)
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
buffer = (unsigned char *)PORT_Alloc(modulus_len + 1);
if (!buffer)
goto failure;
rv = RSA_PublicKeyOp(&key->u.rsa, buffer, sign);
if (rv != SECSuccess)
goto loser;
/*
* make sure we get the same results
*/
/* NOTE: should we verify the leading zeros? */
if (PORT_Memcmp(buffer + (modulus_len-hash_len), hash, hash_len) != 0)
goto loser;
PORT_Free(buffer);
return SECSuccess;
loser:
PORT_Free(buffer);
failure:
return SECFailure;
}
/* XXX Doesn't set error code */
SECStatus
RSA_CheckSignRecoverRaw(NSSLOWKEYPublicKey *key,
unsigned char * data,
unsigned int * data_len,
unsigned int max_output_len,
unsigned char * sign,
unsigned int sign_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PublicModulusLen(key);
if (sign_len != modulus_len)
goto failure;
if (max_output_len < modulus_len)
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
rv = RSA_PublicKeyOp(&key->u.rsa, data, sign);
if (rv != SECSuccess)
goto failure;
*data_len = modulus_len;
return SECSuccess;
failure:
return SECFailure;
}
/* XXX Doesn't set error code */
SECStatus
RSA_EncryptRaw(NSSLOWKEYPublicKey *key,
unsigned char * output,
unsigned int * output_len,
unsigned int max_output_len,
unsigned char * input,
unsigned int input_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PublicModulusLen(key);
SECItem formatted;
SECItem unformatted;
formatted.data = NULL;
if (max_output_len < modulus_len)
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
unformatted.len = input_len;
unformatted.data = input;
formatted.data = NULL;
rv = rsa_FormatBlock(&formatted, modulus_len, RSA_BlockRaw, &unformatted);
if (rv != SECSuccess)
goto failure;
rv = RSA_PublicKeyOp(&key->u.rsa, output, formatted.data);
if (rv != SECSuccess)
goto failure;
PORT_ZFree(formatted.data, modulus_len);
*output_len = modulus_len;
return SECSuccess;
failure:
if (formatted.data != NULL)
PORT_ZFree(formatted.data, modulus_len);
return SECFailure;
}
/* XXX Doesn't set error code */
SECStatus
RSA_DecryptRaw(NSSLOWKEYPrivateKey *key,
unsigned char * output,
unsigned int * output_len,
unsigned int max_output_len,
unsigned char * input,
unsigned int input_len)
{
SECStatus rv;
unsigned int modulus_len = nsslowkey_PrivateModulusLen(key);
if (modulus_len <= 0)
goto failure;
if (modulus_len > max_output_len)
goto failure;
PORT_Assert(key->keyType == NSSLOWKEYRSAKey);
if (key->keyType != NSSLOWKEYRSAKey)
goto failure;
if (input_len != modulus_len)
goto failure;
rv = RSA_PrivateKeyOp(&key->u.rsa, output, input);
if (rv != SECSuccess) {
if (PORT_GetError() == SEC_ERROR_LIBRARY_FAILURE) {
sftk_fatalError = PR_TRUE;
}
goto failure;
}
*output_len = modulus_len;
return SECSuccess;
failure:
return SECFailure;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,115 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Red Hat, Inc.
*
* The Initial Developer of the Original Code is
* Red Hat, Inc.
* Portions created by the Initial Developer are Copyright (C) 2005
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Robert Relyea (rrelyea@redhat.com)
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* This file implements PKCS 11 on top of our existing security modules
*
* For more information about PKCS 11 See PKCS 11 Token Inteface Standard.
* This implementation has two slots:
* slot 1 is our generic crypto support. It does not require login.
* It supports Public Key ops, and all they bulk ciphers and hashes.
* It can also support Private Key ops for imported Private keys. It does
* not have any token storage.
* slot 2 is our private key support. It requires a login before use. It
* can store Private Keys and Certs as token objects. Currently only private
* keys and their associated Certificates are saved on the token.
*
* In this implementation, session objects are only visible to the session
* that created or generated them.
*/
/*
* the following data structures should be moved to a 'rdb.h'.
*/
#ifndef _SDB_H
#define _SDB_H 1
#include "pkcs11t.h"
#include "secitem.h"
#include "sftkdbt.h"
#include <sqlite3.h>
#define STATIC_CMD_SIZE 2048
typedef struct SDBFindStr SDBFind;
typedef struct SDBStr SDB;
typedef struct SDBPasswordEntryStr SDBPasswordEntry;
struct SDBStr {
void *private;
int version;
SDBType sdb_type;
int sdb_flags;
void *app_private;
CK_RV (*sdb_FindObjectsInit)(SDB *sdb, const CK_ATTRIBUTE *template,
CK_ULONG count, SDBFind **find);
CK_RV (*sdb_FindObjects)(SDB *sdb, SDBFind *find, CK_OBJECT_HANDLE *ids,
CK_ULONG arraySize, CK_ULONG *count);
CK_RV (*sdb_FindObjectsFinal)(SDB *sdb, SDBFind *find);
CK_RV (*sdb_GetAttributeValue)(SDB *sdb, CK_OBJECT_HANDLE object,
CK_ATTRIBUTE *template, CK_ULONG count);
CK_RV (*sdb_SetAttributeValue)(SDB *sdb, CK_OBJECT_HANDLE object,
const CK_ATTRIBUTE *template, CK_ULONG count);
CK_RV (*sdb_CreateObject)(SDB *sdb, CK_OBJECT_HANDLE *object,
const CK_ATTRIBUTE *template, CK_ULONG count);
CK_RV (*sdb_DestroyObject)(SDB *sdb, CK_OBJECT_HANDLE object);
CK_RV (*sdb_GetPWEntry)(SDB *sdb, SDBPasswordEntry *entry);
CK_RV (*sdb_PutPWEntry)(SDB *sdb, SDBPasswordEntry *entry);
CK_RV (*sdb_Begin)(SDB *sdb);
CK_RV (*sdb_Commit)(SDB *sdb);
CK_RV (*sdb_Abort)(SDB *sdb);
CK_RV (*sdb_Reset)(SDB *sdb);
CK_RV (*sdb_Close)(SDB *sdb);
};
struct SDBPasswordEntryStr {
SECItem salt;
SECItem value;
unsigned char data[128];
};
CK_RV s_open(const char *directory, const char *certPrefix,
const char *keyPrefix,
int cert_version, int key_version,
int flags, SDB **certdb, SDB **keydb, int *newInit);
CK_RV s_shutdown();
/* flags */
#define SDB_RDONLY 1
#define SDB_RDWR 2
#define SDB_CREATE 4
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,89 @@
/*
* license
*/
#include "sftkdbt.h"
#include "sdb.h"
#include "pkcs11i.h"
#include "pkcs11t.h"
/* raw database stuff */
CK_RV sftkdb_write(SFTKDBHandle *handle, SFTKObject *,CK_OBJECT_HANDLE *);
CK_RV sftkdb_FindObjectsInit(SFTKDBHandle *sdb, const CK_ATTRIBUTE *template,
CK_ULONG count, SDBFind **find);
CK_RV sftkdb_FindObjects(SFTKDBHandle *sdb, SDBFind *find,
CK_OBJECT_HANDLE *ids, int arraySize, CK_ULONG *count);
CK_RV sftkdb_FindObjectsFinal(SFTKDBHandle *sdb, SDBFind *find);
CK_RV sftkdb_GetAttributeValue(SFTKDBHandle *handle,
CK_OBJECT_HANDLE object_id, CK_ATTRIBUTE *template, CK_ULONG count);
CK_RV sftkdb_SetAttributeValue(SFTKDBHandle *handle,
CK_OBJECT_HANDLE object_id, const CK_ATTRIBUTE *template,
CK_ULONG count);
CK_RV sftkdb_DestroyObject(SFTKDBHandle *handle, CK_OBJECT_HANDLE object_id);
CK_RV sftkdb_closeDB(SFTKDBHandle *handle);
/* secmod.db functions */
char ** sftkdb_ReadSecmodDB(SDBType dbType, const char *appName,
const char *filename, const char *dbname,
char *params, PRBool rw);
SECStatus sftkdb_ReleaseSecmodDBData(SDBType dbType, const char *appName,
const char *filename, const char *dbname,
char **moduleSpecList, PRBool rw);
SECStatus sftkdb_DeleteSecmodDB(SDBType dbType, const char *appName,
const char *filename, const char *dbname,
char *args, PRBool rw);
SECStatus sftkdb_AddSecmodDB(SDBType dbType, const char *appName,
const char *filename, const char *dbname,
char *module, PRBool rw);
/* keydb functions */
SECStatus sftkdb_PWIsInitialized(SFTKDBHandle *keydb);
SECStatus sftkdb_CheckPassword(SFTKDBHandle *keydb, const char *pw);
SECStatus sftkdb_PWCached(SFTKDBHandle *keydb);
SECStatus sftkdb_HasPasswordSet(SFTKDBHandle *keydb);
SECStatus sftkdb_ResetKeyDB(SFTKDBHandle *keydb);
SECStatus sftkdb_ChangePassword(SFTKDBHandle *keydb, char *oldPin, char *newPin);
SECStatus sftkdb_ClearPassword(SFTKDBHandle *keydb);
/* Utility functions */
/*
* OK there are now lots of options here, lets go through them all:
*
* configdir - base directory where all the cert, key, and module datbases live.
* certPrefix - prefix added to the beginning of the cert database example: "
* "https-server1-"
* keyPrefix - prefix added to the beginning of the key database example: "
* "https-server1-"
* secmodName - name of the security module database (usually "secmod.db").
* readOnly - Boolean: true if the databases are to be openned read only.
* nocertdb - Don't open the cert DB and key DB's, just initialize the
* Volatile certdb.
* nomoddb - Don't open the security module DB, just initialize the
* PKCS #11 module.
* forceOpen - Continue to force initializations even if the databases cannot
* be opened.
*/
CK_RV sftk_DBInit(const char *configdir, const char *certPrefix,
const char *keyPrefix, PRBool readOnly, PRBool noCertDB,
PRBool noKeyDB, PRBool forceOpen,
SFTKDBHandle **certDB, SFTKDBHandle **keyDB);
CK_RV sftkdb_Shutdown(void);
SFTKDBHandle *sftk_getCertDB(SFTKSlot *slot);
SFTKDBHandle *sftk_getKeyDB(SFTKSlot *slot);
SFTKDBHandle *sftk_getDBForObject(SFTKSlot *slot, CK_OBJECT_HANDLE objectID);
void sftk_freeDB(SFTKDBHandle *certHandle);
/*
* for lgglue, stubs to encrypt and decrypt password entries
*/
SECStatus sftkdb_encrypt_stub(PRArenaPool *arena, SDB *sdb, SECItem *plainText,
SECItem **cipherText);
SECStatus sftkdb_decrypt_stub(SDB *sdb, SECItem *cipherText,
SECItem **plainText);

View File

@@ -0,0 +1,17 @@
/*
* license
*/
#ifndef SFTKDBT_H
#define SFTKDBT_H 1
typedef struct SFTKDBHandleStr SFTKDBHandle;
typedef enum {
SDB_SQL,
SDB_EXTERN,
SDB_LEGACY,
SDB_MULTIACCESS
} SDBType;
#endif

View File

@@ -0,0 +1,616 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* The following code handles the storage of PKCS 11 modules used by the
* NSS. This file is written to abstract away how the modules are
* stored so we can deside that later.
*/
#include "sftkpars.h"
#include "pkcs11i.h"
#include "sdb.h"
#include "prprf.h"
#include "prenv.h"
/*
* this file contains routines for parsing PKCS #11 module spec
* strings.
*/
#define SFTK_HANDLE_STRING_ARG(param,target,value,command) \
if (PORT_Strncasecmp(param,value,sizeof(value)-1) == 0) { \
param += sizeof(value)-1; \
target = sftk_argFetchValue(param,&next); \
param += next; \
command ;\
} else
#define SFTK_HANDLE_FINAL_ARG(param) \
{ param = sftk_argSkipParameter(param); } param = sftk_argStrip(param);
static PRBool sftk_argGetPair(char c) {
switch (c) {
case '\'': return c;
case '\"': return c;
case '<': return '>';
case '{': return '}';
case '[': return ']';
case '(': return ')';
default: break;
}
return ' ';
}
static PRBool sftk_argIsBlank(char c) {
return isspace(c);
}
static PRBool sftk_argIsEscape(char c) {
return c == '\\';
}
static PRBool sftk_argIsQuote(char c) {
switch (c) {
case '\'':
case '\"':
case '<':
case '{': /* } end curly to keep vi bracket matching working */
case '(': /* ) */
case '[': /* ] */ return PR_TRUE;
default: break;
}
return PR_FALSE;
}
char *sftk_argStrip(char *c) {
while (*c && sftk_argIsBlank(*c)) c++;
return c;
}
static char *
sftk_argFindEnd(char *string) {
char endChar = ' ';
PRBool lastEscape = PR_FALSE;
if (sftk_argIsQuote(*string)) {
endChar = sftk_argGetPair(*string);
string++;
}
for (;*string; string++) {
if (lastEscape) {
lastEscape = PR_FALSE;
continue;
}
if (sftk_argIsEscape(*string) && !lastEscape) {
lastEscape = PR_TRUE;
continue;
}
if ((endChar == ' ') && sftk_argIsBlank(*string)) break;
if (*string == endChar) {
break;
}
}
return string;
}
char *
sftk_argFetchValue(char *string, int *pcount)
{
char *end = sftk_argFindEnd(string);
char *retString, *copyString;
PRBool lastEscape = PR_FALSE;
int len;
len = end - string;
if (len == 0) {
*pcount = 0;
return NULL;
}
copyString = retString = (char *)PORT_Alloc(len+1);
if (*end) len++;
*pcount = len;
if (retString == NULL) return NULL;
if (sftk_argIsQuote(*string)) string++;
for (; string < end; string++) {
if (sftk_argIsEscape(*string) && !lastEscape) {
lastEscape = PR_TRUE;
continue;
}
lastEscape = PR_FALSE;
*copyString++ = *string;
}
*copyString = 0;
return retString;
}
static char *
sftk_argSkipParameter(char *string)
{
char *end;
/* look for the end of the <name>= */
for (;*string; string++) {
if (*string == '=') { string++; break; }
if (sftk_argIsBlank(*string)) return(string);
}
end = sftk_argFindEnd(string);
if (*end) end++;
return end;
}
char *
sftk_argGetParamValue(char *paramName,char *parameters)
{
char searchValue[256];
int paramLen = strlen(paramName);
char *returnValue = NULL;
int next;
if ((parameters == NULL) || (*parameters == 0)) return NULL;
PORT_Assert(paramLen+2 < sizeof(searchValue));
PORT_Strcpy(searchValue,paramName);
PORT_Strcat(searchValue,"=");
while (*parameters) {
if (PORT_Strncasecmp(parameters,searchValue,paramLen+1) == 0) {
parameters += paramLen+1;
returnValue = sftk_argFetchValue(parameters,&next);
break;
} else {
parameters = sftk_argSkipParameter(parameters);
}
parameters = sftk_argStrip(parameters);
}
return returnValue;
}
static char *
sftk_argNextFlag(char *flags)
{
for (; *flags ; flags++) {
if (*flags == ',') {
flags++;
break;
}
}
return flags;
}
static PRBool
sftk_argHasFlag(char *label, char *flag, char *parameters)
{
char *flags,*index;
int len = strlen(flag);
PRBool found = PR_FALSE;
flags = sftk_argGetParamValue(label,parameters);
if (flags == NULL) return PR_FALSE;
for (index=flags; *index; index=sftk_argNextFlag(index)) {
if (PORT_Strncasecmp(index,flag,len) == 0) {
found=PR_TRUE;
break;
}
}
PORT_Free(flags);
return found;
}
/*
* decode a number. handle octal (leading '0'), hex (leading '0x') or decimal
*/
static long
sftk_argDecodeNumber(char *num)
{
int radix = 10;
unsigned long value = 0;
long retValue = 0;
int sign = 1;
int digit;
if (num == NULL) return retValue;
num = sftk_argStrip(num);
if (*num == '-') {
sign = -1;
num++;
}
if (*num == '0') {
radix = 8;
num++;
if ((*num == 'x') || (*num == 'X')) {
radix = 16;
num++;
}
}
for ( ;*num; num++ ) {
if (isdigit(*num)) {
digit = *num - '0';
} else if ((*num >= 'a') && (*num <= 'f')) {
digit = *num - 'a' + 10;
} else if ((*num >= 'A') && (*num <= 'F')) {
digit = *num - 'A' + 10;
} else {
break;
}
if (digit >= radix) break;
value = value*radix + digit;
}
retValue = ((int) value) * sign;
return retValue;
}
static char *
sftk_argGetName(char *inString, int *next)
{
char *name=NULL;
char *string;
int len;
/* look for the end of the <name>= */
for (string = inString;*string; string++) {
if (*string == '=') { break; }
if (sftk_argIsBlank(*string)) break;
}
len = string - inString;
*next = len;
if (*string == '=') (*next) += 1;
if (len > 0) {
name = PORT_Alloc(len+1);
PORT_Strncpy(name,inString,len);
name[len] = 0;
}
return name;
}
#define FREE_CLEAR(p) if (p) { PORT_Free(p); p = NULL; }
static void
sftk_parseTokenFlags(char *tmp, sftk_token_parameters *parsed) {
parsed->readOnly = sftk_argHasFlag("flags","readOnly",tmp);
parsed->noCertDB = sftk_argHasFlag("flags","noCertDB",tmp);
parsed->noKeyDB = sftk_argHasFlag("flags","noKeyDB",tmp);
parsed->forceOpen = sftk_argHasFlag("flags","forceOpen",tmp);
parsed->pwRequired = sftk_argHasFlag("flags","passwordRequired",tmp);
parsed->optimizeSpace = sftk_argHasFlag("flags","optimizeSpace",tmp);
return;
}
static void
sftk_parseFlags(char *tmp, sftk_parameters *parsed) {
parsed->noModDB = sftk_argHasFlag("flags","noModDB",tmp);
parsed->readOnly = sftk_argHasFlag("flags","readOnly",tmp);
/* keep legacy interface working */
parsed->noCertDB = sftk_argHasFlag("flags","noCertDB",tmp);
parsed->forceOpen = sftk_argHasFlag("flags","forceOpen",tmp);
parsed->pwRequired = sftk_argHasFlag("flags","passwordRequired",tmp);
parsed->optimizeSpace = sftk_argHasFlag("flags","optimizeSpace",tmp);
return;
}
static CK_RV
sftk_parseTokenParameters(char *param, sftk_token_parameters *parsed)
{
int next;
char *tmp;
char *index;
index = sftk_argStrip(param);
while (*index) {
SFTK_HANDLE_STRING_ARG(index,parsed->configdir,"configDir=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->certPrefix,"certPrefix=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->keyPrefix,"keyPrefix=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->tokdes,"tokenDescription=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->slotdes,"slotDescription=",;)
SFTK_HANDLE_STRING_ARG(index,tmp,"minPWLen=",
if(tmp) { parsed->minPW=atoi(tmp); PORT_Free(tmp); })
SFTK_HANDLE_STRING_ARG(index,tmp,"flags=",
if(tmp) { sftk_parseTokenFlags(param,parsed); PORT_Free(tmp); })
SFTK_HANDLE_FINAL_ARG(index)
}
return CKR_OK;
}
static void
sftk_parseTokens(char *tokenParams, sftk_parameters *parsed)
{
char *tokenIndex;
sftk_token_parameters *tokens = NULL;
int i=0,count = 0,next;
if ((tokenParams == NULL) || (*tokenParams == 0)) return;
/* first count the number of slots */
for (tokenIndex = sftk_argStrip(tokenParams); *tokenIndex;
tokenIndex = sftk_argStrip(sftk_argSkipParameter(tokenIndex))) {
count++;
}
/* get the data structures */
tokens = (sftk_token_parameters *)
PORT_ZAlloc(count*sizeof(sftk_token_parameters));
if (tokens == NULL) return;
for (tokenIndex = sftk_argStrip(tokenParams), i = 0;
*tokenIndex && i < count ; i++ ) {
char *name;
name = sftk_argGetName(tokenIndex,&next);
tokenIndex += next;
tokens[i].slotID = sftk_argDecodeNumber(name);
tokens[i].readOnly = PR_FALSE;
tokens[i].noCertDB = PR_FALSE;
tokens[i].noKeyDB = PR_FALSE;
if (!sftk_argIsBlank(*tokenIndex)) {
char *args = sftk_argFetchValue(tokenIndex,&next);
tokenIndex += next;
if (args) {
sftk_parseTokenParameters(args,&tokens[i]);
PORT_Free(args);
}
}
if (name) PORT_Free(name);
tokenIndex = sftk_argStrip(tokenIndex);
}
parsed->token_count = i;
parsed->tokens = tokens;
return;
}
CK_RV
sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS)
{
int next;
char *tmp;
char *index;
char *certPrefix = NULL, *keyPrefix = NULL;
char *tokdes = NULL, *ptokdes = NULL;
char *slotdes = NULL, *pslotdes = NULL;
char *fslotdes = NULL, *fpslotdes = NULL;
char *minPW = NULL;
index = sftk_argStrip(param);
PORT_Memset(parsed, 0, sizeof(sftk_parameters));
while (*index) {
SFTK_HANDLE_STRING_ARG(index,parsed->configdir,"configDir=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->secmodName,"secmod=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->man,"manufacturerID=",;)
SFTK_HANDLE_STRING_ARG(index,parsed->libdes,"libraryDescription=",;)
/* constructed values, used so legacy interfaces still work */
SFTK_HANDLE_STRING_ARG(index,certPrefix,"certPrefix=",;)
SFTK_HANDLE_STRING_ARG(index,keyPrefix,"keyPrefix=",;)
SFTK_HANDLE_STRING_ARG(index,tokdes,"cryptoTokenDescription=",;)
SFTK_HANDLE_STRING_ARG(index,ptokdes,"dbTokenDescription=",;)
SFTK_HANDLE_STRING_ARG(index,slotdes,"cryptoSlotDescription=",;)
SFTK_HANDLE_STRING_ARG(index,pslotdes,"dbSlotDescription=",;)
SFTK_HANDLE_STRING_ARG(index,fslotdes,"FIPSSlotDescription=",;)
SFTK_HANDLE_STRING_ARG(index,fpslotdes,"FIPSTokenDescription=",;)
SFTK_HANDLE_STRING_ARG(index,minPW,"minPWLen=",;)
SFTK_HANDLE_STRING_ARG(index,tmp,"flags=",
if(tmp) { sftk_parseFlags(param,parsed); PORT_Free(tmp); })
SFTK_HANDLE_STRING_ARG(index,tmp,"tokens=",
if(tmp) { sftk_parseTokens(tmp,parsed); PORT_Free(tmp); })
SFTK_HANDLE_FINAL_ARG(index)
}
if (parsed->tokens == NULL) {
int count = isFIPS ? 1 : 2;
int index = count-1;
sftk_token_parameters *tokens = NULL;
tokens = (sftk_token_parameters *)
PORT_ZAlloc(count*sizeof(sftk_token_parameters));
if (tokens == NULL) {
goto loser;
}
parsed->tokens = tokens;
parsed->token_count = count;
tokens[index].slotID = isFIPS ? FIPS_SLOT_ID : PRIVATE_KEY_SLOT_ID;
tokens[index].certPrefix = certPrefix;
tokens[index].keyPrefix = keyPrefix;
tokens[index].minPW = minPW ? atoi(minPW) : 0;
tokens[index].readOnly = parsed->readOnly;
tokens[index].noCertDB = parsed->noCertDB;
tokens[index].noKeyDB = parsed->noCertDB;
tokens[index].forceOpen = parsed->forceOpen;
tokens[index].pwRequired = parsed->pwRequired;
tokens[index].optimizeSpace = parsed->optimizeSpace;
tokens[0].optimizeSpace = parsed->optimizeSpace;
certPrefix = NULL;
keyPrefix = NULL;
if (isFIPS) {
tokens[index].tokdes = fslotdes;
tokens[index].slotdes = fpslotdes;
fslotdes = NULL;
fpslotdes = NULL;
} else {
tokens[index].tokdes = ptokdes;
tokens[index].slotdes = pslotdes;
tokens[0].slotID = NETSCAPE_SLOT_ID;
tokens[0].tokdes = tokdes;
tokens[0].slotdes = slotdes;
tokens[0].noCertDB = PR_TRUE;
tokens[0].noKeyDB = PR_TRUE;
ptokdes = NULL;
pslotdes = NULL;
tokdes = NULL;
slotdes = NULL;
}
}
loser:
FREE_CLEAR(certPrefix);
FREE_CLEAR(keyPrefix);
FREE_CLEAR(tokdes);
FREE_CLEAR(ptokdes);
FREE_CLEAR(slotdes);
FREE_CLEAR(pslotdes);
FREE_CLEAR(fslotdes);
FREE_CLEAR(fpslotdes);
FREE_CLEAR(minPW);
return CKR_OK;
}
void
sftk_freeParams(sftk_parameters *params)
{
int i;
for (i=0; i < params->token_count; i++) {
FREE_CLEAR(params->tokens[i].configdir);
FREE_CLEAR(params->tokens[i].certPrefix);
FREE_CLEAR(params->tokens[i].keyPrefix);
FREE_CLEAR(params->tokens[i].tokdes);
FREE_CLEAR(params->tokens[i].slotdes);
}
FREE_CLEAR(params->configdir);
FREE_CLEAR(params->secmodName);
FREE_CLEAR(params->man);
FREE_CLEAR(params->libdes);
FREE_CLEAR(params->tokens);
}
#define SQLDB "sql:"
#define EXTERNDB "extern:"
#define LEGACY "dbm:"
const char *
sftk_EvaluateConfigDir(const char *configdir, SDBType *dbType, char **appName)
{
*appName = NULL;
*dbType = SDB_LEGACY;
if (PORT_Strncmp(configdir, MULTIACCESS, sizeof(MULTIACCESS)-1) == 0) {
char *cdir;
*dbType = SDB_MULTIACCESS;
*appName = PORT_Strdup(configdir+sizeof(MULTIACCESS)-1);
if (*appName == NULL) {
return configdir;
}
cdir = *appName;
while (*cdir && *cdir != ':') {
cdir++;
}
if (*cdir == ':') {
*cdir = 0;
cdir++;
}
configdir = cdir;
} else if (PORT_Strncmp(configdir, SQLDB, sizeof(SQLDB)-1) == 0) {
*dbType = SDB_SQL;
configdir = configdir + sizeof(SQLDB) -1;
} else if (PORT_Strncmp(configdir, EXTERNDB, sizeof(EXTERNDB)-1) == 0) {
*dbType = SDB_EXTERN;
configdir = configdir + sizeof(EXTERNDB) -1;
} else if (PORT_Strncmp(configdir, LEGACY, sizeof(LEGACY)-1) == 0) {
*dbType = SDB_LEGACY;
configdir = configdir + sizeof(LEGACY) -1;
} else {
/* look up the default from the environment */
char *defaultType = PR_GetEnv("NSS_DEFAULT_DB_TYPE");
if (defaultType == NULL) {
/* none specified, go with the legacy */
return configdir;
}
if (PORT_Strncmp(defaultType, SQLDB, sizeof(SQLDB)-2) == 0) {
*dbType = SDB_SQL;
} else if (PORT_Strncmp(defaultType,EXTERNDB,sizeof(EXTERNDB)-2)==0) {
*dbType = SDB_EXTERN;
} else if (PORT_Strncmp(defaultType, LEGACY, sizeof(LEGACY)-2) == 0) {
*dbType = SDB_LEGACY;
}
}
return configdir;
}
char *
sftk_getSecmodName(char *param, SDBType *dbType, char **appName,
char **filename, PRBool *rw)
{
int next;
char *configdir = NULL;
char *secmodName = NULL;
char *value = NULL;
char *save_params = param;
const char *lconfigdir;
param = sftk_argStrip(param);
while (*param) {
SFTK_HANDLE_STRING_ARG(param,configdir,"configDir=",;)
SFTK_HANDLE_STRING_ARG(param,secmodName,"secmod=",;)
SFTK_HANDLE_FINAL_ARG(param)
}
*rw = PR_TRUE;
if (sftk_argHasFlag("flags","readOnly",save_params) ||
sftk_argHasFlag("flags","noModDB",save_params)) *rw = PR_FALSE;
if (!secmodName || *secmodName == '\0') {
if (secmodName) PORT_Free(secmodName);
secmodName = PORT_Strdup(SECMOD_DB);
}
*filename = secmodName;
lconfigdir = sftk_EvaluateConfigDir(configdir, dbType, appName);
/* only use the renamed secmod for legacy databases */
if ((*dbType != SDB_LEGACY) && (*dbType != SDB_MULTIACCESS)) {
secmodName="pkcs11.txt";
}
if (lconfigdir) {
value = PR_smprintf("%s" PATH_SEPARATOR "%s",lconfigdir,secmodName);
} else {
value = PR_smprintf("%s",secmodName);
}
if (configdir) PORT_Free(configdir);
return value;
}

View File

@@ -0,0 +1,17 @@
/*
* license
*/
#include "pkcs11i.h"
#include "sftkdbt.h"
/* parsing functions */
char * sftk_argFetchValue(char *string, int *pcount);
char * sftk_getSecmodName(char *param, SDBType *dbType, char **appName, char **filename,PRBool *rw);
char *sftk_argStrip(char *c);
CK_RV sftk_parseParameters(char *param, sftk_parameters *parsed, PRBool isFIPS);
void sftk_freeParams(sftk_parameters *params);
const char *sftk_EvaluateConfigDir(const char *configdir, SDBType *dbType, char **app);
char * sftk_argGetParamValue(char *paramName,char *parameters);

View File

@@ -0,0 +1,56 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* Library identity and versioning */
#include "softkver.h"
#if defined(DEBUG)
#define _DEBUG_STRING " (debug)"
#else
#define _DEBUG_STRING ""
#endif
/*
* Version information for the 'ident' and 'what commands
*
* NOTE: the first component of the concatenated rcsid string
* must not end in a '$' to prevent rcs keyword substitution.
*/
const char __nss_softokn_rcsid[] = "$Header: NSS " SOFTOKEN_VERSION _DEBUG_STRING
" " __DATE__ " " __TIME__ " $";
const char __nss_softokn_sccsid[] = "@(#)NSS " SOFTOKEN_VERSION _DEBUG_STRING
" " __DATE__ " " __TIME__;

View File

@@ -0,0 +1,66 @@
/*
* Softoken version numbers
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef _SOFTKVER_H_
#define _SOFTKVER_H_
#ifdef NSS_ENABLE_ECC
#ifdef NSS_ECC_MORE_THAN_SUITE_B
#define SOFTOKEN_ECC_STRING " Extended ECC"
#else
#define SOFTOKEN_ECC_STRING " Basic ECC"
#endif
#else
#define SOFTOKEN_ECC_STRING ""
#endif
/*
* Softoken's major version, minor version, patch level, and whether
* this is a beta release.
*
* The format of the version string should be
* "<major version>.<minor version>[.<patch level>][ <ECC>][ <Beta>]"
*/
#define SOFTOKEN_VERSION "3.12" SOFTOKEN_ECC_STRING " Beta"
#define SOFTOKEN_VMAJOR 3
#define SOFTOKEN_VMINOR 12
#define SOFTOKEN_VPATCH 0
#define SOFTOKEN_BETA PR_TRUE
#endif /* _SOFTKVER_H_ */

View File

@@ -0,0 +1,263 @@
/*
* softoken.h - private data structures and prototypes for the softoken lib
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: softoken.h,v 1.14.2.1 2007-04-03 22:50:01 rrelyea%redhat.com Exp $ */
#ifndef _SOFTOKEN_H_
#define _SOFTOKEN_H_
#include "blapi.h"
#include "lowkeyti.h"
#include "softoknt.h"
#include "secoidt.h"
#include "pkcs11t.h" /* CK_RV Required for sftk_fipsPowerUpSelfTest(). */
SEC_BEGIN_PROTOS
/*
** RSA encryption/decryption. When encrypting/decrypting the output
** buffer must be at least the size of the public key modulus.
*/
/*
** Format some data into a PKCS#1 encryption block, preparing the
** data for RSA encryption.
** "result" where the formatted block is stored (memory is allocated)
** "modulusLen" the size of the formatted block
** "blockType" what block type to use (SEC_RSABlock*)
** "data" the data to format
*/
extern SECStatus RSA_FormatBlock(SECItem *result,
unsigned int modulusLen,
RSA_BlockType blockType,
SECItem *data);
/*
** Similar, but just returns a pointer to the allocated memory, *and*
** will *only* format one block, even if we (in the future) modify
** RSA_FormatBlock() to loop over multiples of modulusLen.
*/
extern unsigned char *RSA_FormatOneBlock(unsigned int modulusLen,
RSA_BlockType blockType,
SECItem *data);
/*
* convenience wrappers for doing single RSA operations. They create the
* RSA context internally and take care of the formatting
* requirements. Blinding happens automagically within RSA_Sign and
* RSA_DecryptBlock.
*/
extern
SECStatus RSA_Sign(NSSLOWKEYPrivateKey *key, unsigned char *output,
unsigned int *outputLen, unsigned int maxOutputLen,
unsigned char *input, unsigned int inputLen);
extern
SECStatus RSA_HashSign(SECOidTag hashOid,
NSSLOWKEYPrivateKey *key, unsigned char *sig,
unsigned int *sigLen, unsigned int maxLen,
unsigned char *hash, unsigned int hashLen);
extern
SECStatus RSA_CheckSign(NSSLOWKEYPublicKey *key, unsigned char *sign,
unsigned int signLength, unsigned char *hash,
unsigned int hashLength);
extern
SECStatus RSA_HashCheckSign(SECOidTag hashOid,
NSSLOWKEYPublicKey *key, unsigned char *sig,
unsigned int sigLen, unsigned char *digest,
unsigned int digestLen);
extern
SECStatus RSA_CheckSignRecover(NSSLOWKEYPublicKey *key, unsigned char *data,
unsigned int *data_len,unsigned int max_output_len,
unsigned char *sign, unsigned int sign_len);
extern
SECStatus RSA_EncryptBlock(NSSLOWKEYPublicKey *key, unsigned char *output,
unsigned int *outputLen, unsigned int maxOutputLen,
unsigned char *input, unsigned int inputLen);
extern
SECStatus RSA_DecryptBlock(NSSLOWKEYPrivateKey *key, unsigned char *output,
unsigned int *outputLen, unsigned int maxOutputLen,
unsigned char *input, unsigned int inputLen);
/*
* added to make pkcs #11 happy
* RAW is RSA_X_509
*/
extern
SECStatus RSA_SignRaw( NSSLOWKEYPrivateKey *key, unsigned char *output,
unsigned int *output_len, unsigned int maxOutputLen,
unsigned char *input, unsigned int input_len);
extern
SECStatus RSA_CheckSignRaw( NSSLOWKEYPublicKey *key, unsigned char *sign,
unsigned int sign_len, unsigned char *hash,
unsigned int hash_len);
extern
SECStatus RSA_CheckSignRecoverRaw( NSSLOWKEYPublicKey *key, unsigned char *data,
unsigned int *data_len, unsigned int max_output_len,
unsigned char *sign, unsigned int sign_len);
extern
SECStatus RSA_EncryptRaw( NSSLOWKEYPublicKey *key, unsigned char *output,
unsigned int *output_len,
unsigned int max_output_len,
unsigned char *input, unsigned int input_len);
extern
SECStatus RSA_DecryptRaw(NSSLOWKEYPrivateKey *key, unsigned char *output,
unsigned int *output_len,
unsigned int max_output_len,
unsigned char *input, unsigned int input_len);
#ifdef NSS_ENABLE_ECC
/*
** pepare an ECParam structure from DEREncoded params
*/
extern SECStatus EC_FillParams(PRArenaPool *arena,
const SECItem *encodedParams, ECParams *params);
extern SECStatus EC_DecodeParams(const SECItem *encodedParams,
ECParams **ecparams);
extern SECStatus EC_CopyParams(PRArenaPool *arena, ECParams *dstParams,
const ECParams *srcParams);
#endif
/*
** Prepare a buffer for DES encryption, growing to the appropriate boundary,
** filling with the appropriate padding.
** We add from 1 to DES_KEY_LENGTH bytes -- we *always* grow.
** The extra bytes contain the value of the length of the padding:
** if we have 2 bytes of padding, then the padding is "0x02, 0x02".
**
** NOTE: If arena is non-NULL, we re-allocate from there, otherwise
** we assume (and use) PR memory (re)allocation.
** Maybe this belongs in util?
*/
extern unsigned char * DES_PadBuffer(PRArenaPool *arena, unsigned char *inbuf,
unsigned int inlen, unsigned int *outlen);
/****************************************/
/*
** Power-Up selftests required for FIPS and invoked only
** under PKCS #11 FIPS mode.
*/
extern CK_RV sftk_fipsPowerUpSelfTest( void );
/*
** make known fixed PKCS #11 key types to their sizes in bytes
*/
unsigned long sftk_MapKeySize(CK_KEY_TYPE keyType);
/*
** FIPS 140-2 auditing
*/
extern PRBool sftk_audit_enabled;
extern void sftk_LogAuditMessage(NSSAuditSeverity severity, const char *msg);
extern void sftk_AuditCreateObject(CK_SESSION_HANDLE hSession,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount,
CK_OBJECT_HANDLE_PTR phObject, CK_RV rv);
extern void sftk_AuditCopyObject(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount,
CK_OBJECT_HANDLE_PTR phNewObject, CK_RV rv);
extern void sftk_AuditDestroyObject(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_RV rv);
extern void sftk_AuditGetObjectSize(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize,
CK_RV rv);
extern void sftk_AuditGetAttributeValue(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount, CK_RV rv);
extern void sftk_AuditSetAttributeValue(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate,
CK_ULONG ulCount, CK_RV rv);
extern void sftk_AuditCryptInit(const char *opName,
CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
CK_OBJECT_HANDLE hKey, CK_RV rv);
extern void sftk_AuditGenerateKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount,
CK_OBJECT_HANDLE_PTR phKey, CK_RV rv);
extern void sftk_AuditGenerateKeyPair(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
CK_ATTRIBUTE_PTR pPublicKeyTemplate,
CK_ULONG ulPublicKeyAttributeCount,
CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
CK_ULONG ulPrivateKeyAttributeCount,
CK_OBJECT_HANDLE_PTR phPublicKey,
CK_OBJECT_HANDLE_PTR phPrivateKey, CK_RV rv);
extern void sftk_AuditWrapKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey,
CK_BYTE_PTR pWrappedKey,
CK_ULONG_PTR pulWrappedKeyLen, CK_RV rv);
extern void sftk_AuditUnwrapKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
CK_OBJECT_HANDLE hUnwrappingKey,
CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount,
CK_OBJECT_HANDLE_PTR phKey, CK_RV rv);
extern void sftk_AuditDeriveKey(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
CK_OBJECT_HANDLE hBaseKey,
CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount,
CK_OBJECT_HANDLE_PTR phKey, CK_RV rv);
extern void sftk_AuditDigestKey(CK_SESSION_HANDLE hSession,
CK_OBJECT_HANDLE hKey, CK_RV rv);
/*
** FIPS 140-2 Error state
*/
extern PRBool sftk_fatalError;
SEC_END_PROTOS
#endif /* _SOFTOKEN_H_ */

View File

@@ -0,0 +1,61 @@
;+#
;+# ***** BEGIN LICENSE BLOCK *****
;+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
;+#
;+# The contents of this file are subject to the Mozilla Public License Version
;+# 1.1 (the "License"); you may not use this file except in compliance with
;+# the License. You may obtain a copy of the License at
;+# http://www.mozilla.org/MPL/
;+#
;+# Software distributed under the License is distributed on an "AS IS" basis,
;+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
;+# for the specific language governing rights and limitations under the
;+# License.
;+#
;+# The Original Code is the Netscape security libraries.
;+#
;+# The Initial Developer of the Original Code is
;+# Netscape Communications Corporation.
;+# Portions created by the Initial Developer are Copyright (C) 2000
;+# the Initial Developer. All Rights Reserved.
;+#
;+# Contributor(s):
;+# Dr Stephen Henson <stephen.henson@gemplus.com>
;+#
;+# Alternatively, the contents of this file may be used under the terms of
;+# either the GNU General Public License Version 2 or later (the "GPL"), or
;+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
;+# in which case the provisions of the GPL or the LGPL are applicable instead
;+# of those above. If you wish to allow use of your version of this file only
;+# under the terms of either the GPL or the LGPL, and not to allow others to
;+# use your version of this file under the terms of the MPL, indicate your
;+# decision by deleting the provisions above and replace them with the notice
;+# and other provisions required by the GPL or the LGPL. If you do not delete
;+# the provisions above, a recipient may use your version of this file under
;+# the terms of any one of the MPL, the GPL or the LGPL.
;+#
;+# ***** END LICENSE BLOCK *****
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+NSS_3.4 { # NSS 3.4 release
;+ global:
LIBRARY softokn3 ;-
EXPORTS ;-
C_GetFunctionList; Make this function like a real PKCS #11 module as well
FC_GetFunctionList;
NSC_GetFunctionList;
NSC_ModuleDBFunc;
;+ local:
;+ *;
;+};

View File

@@ -0,0 +1,100 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "softkver.h"
#include <winver.h>
#define MY_LIBNAME "softokn"
#define MY_FILEDESCRIPTION "NSS PKCS #11 Library"
#define STRINGIZE(x) #x
#define STRINGIZE2(x) STRINGIZE(x)
#define SOFTOKEN_VMAJOR_STR STRINGIZE2(SOFTOKEN_VMAJOR)
#ifdef _DEBUG
#define MY_DEBUG_STR " (debug)"
#define MY_FILEFLAGS_1 VS_FF_DEBUG
#else
#define MY_DEBUG_STR ""
#define MY_FILEFLAGS_1 0x0L
#endif
#if SOFTOKEN_BETA
#define MY_FILEFLAGS_2 MY_FILEFLAGS_1|VS_FF_PRERELEASE
#else
#define MY_FILEFLAGS_2 MY_FILEFLAGS_1
#endif
#ifdef WINNT
#define MY_FILEOS VOS_NT_WINDOWS32
#else
#define MY_FILEOS VOS__WINDOWS32
#endif
#define MY_INTERNAL_NAME MY_LIBNAME SOFTOKEN_VMAJOR_STR
/////////////////////////////////////////////////////////////////////////////
//
// Version-information resource
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION SOFTOKEN_VMAJOR,SOFTOKEN_VMINOR,SOFTOKEN_VPATCH,0
PRODUCTVERSION SOFTOKEN_VMAJOR,SOFTOKEN_VMINOR,SOFTOKEN_VPATCH,0
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS MY_FILEFLAGS_2
FILEOS MY_FILEOS
FILETYPE VFT_DLL
FILESUBTYPE 0x0L // not used
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904B0" // Lang=US English, CharSet=Unicode
BEGIN
VALUE "CompanyName", "Mozilla Foundation\0"
VALUE "FileDescription", MY_FILEDESCRIPTION MY_DEBUG_STR "\0"
VALUE "FileVersion", SOFTOKEN_VERSION "\0"
VALUE "InternalName", MY_INTERNAL_NAME "\0"
VALUE "OriginalFilename", MY_INTERNAL_NAME ".dll\0"
VALUE "ProductName", "Network Security Services\0"
VALUE "ProductVersion", SOFTOKEN_VERSION "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

View File

@@ -0,0 +1,73 @@
/*
* softoknt.h - public data structures for the software token library
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: softoknt.h,v 1.4 2006-05-05 20:02:47 wtchang%redhat.com Exp $ */
#ifndef _SOFTOKNT_H_
#define _SOFTOKNT_H_
/*
* RSA block types
*
* The actual values are important -- they are fixed, *not* arbitrary.
* The explicit value assignments are not needed (because C would give
* us those same values anyway) but are included as a reminder...
*/
typedef enum {
RSA_BlockPrivate0 = 0, /* unused, really */
RSA_BlockPrivate = 1, /* pad for a private-key operation */
RSA_BlockPublic = 2, /* pad for a public-key operation */
RSA_BlockOAEP = 3, /* use OAEP padding */
/* XXX is this only for a public-key
operation? If so, add "Public" */
RSA_BlockRaw = 4, /* simply justify the block appropriately */
RSA_BlockTotal
} RSA_BlockType;
#define NSS_SOFTOKEN_DEFAULT_CHUNKSIZE 2048
/*
* FIPS 140-2 auditing
*/
typedef enum {
NSS_AUDIT_ERROR = 3, /* errors */
NSS_AUDIT_WARNING = 2, /* warning messages */
NSS_AUDIT_INFO = 1 /* informational messages */
} NSSAuditSeverity;
#endif /* _SOFTOKNT_H_ */

View File

@@ -0,0 +1,215 @@
/* tlsprf.c - TLS Pseudo Random Function (PRF) implementation
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is the Netscape security libraries.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1994-2000
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* $Id: tlsprf.c,v 1.6 2005-08-06 09:27:28 nelsonb%netscape.com Exp $ */
#include "pkcs11i.h"
#include "blapi.h"
#define SFTK_OFFSETOF(str, memb) ((PRPtrdiff)(&(((str *)0)->memb)))
static void sftk_TLSPRFNull(void *data, PRBool freeit)
{
return;
}
typedef struct {
PRUint32 cxSize; /* size of allocated block, in bytes. */
PRUint32 cxBufSize; /* sizeof buffer at cxBufPtr. */
unsigned char *cxBufPtr; /* points to real buffer, may be cxBuf. */
PRUint32 cxKeyLen; /* bytes of cxBufPtr containing key. */
PRUint32 cxDataLen; /* bytes of cxBufPtr containing data. */
SECStatus cxRv; /* records failure of void functions. */
PRBool cxIsFIPS; /* true if conforming to FIPS 198. */
unsigned char cxBuf[512]; /* actual size may be larger than 512. */
} TLSPRFContext;
static void
sftk_TLSPRFHashUpdate(TLSPRFContext *cx, const unsigned char *data,
unsigned int data_len)
{
PRUint32 bytesUsed = cx->cxKeyLen + cx->cxDataLen;
if (cx->cxRv != SECSuccess) /* function has previously failed. */
return;
if (bytesUsed + data_len > cx->cxBufSize) {
/* We don't use realloc here because
** (a) realloc doesn't zero out the old block, and
** (b) if realloc fails, we lose the old block.
*/
PRUint32 newBufSize = bytesUsed + data_len + 512;
unsigned char * newBuf = (unsigned char *)PORT_Alloc(newBufSize);
if (!newBuf) {
cx->cxRv = SECFailure;
return;
}
PORT_Memcpy(newBuf, cx->cxBufPtr, bytesUsed);
if (cx->cxBufPtr != cx->cxBuf) {
PORT_ZFree(cx->cxBufPtr, bytesUsed);
}
cx->cxBufPtr = newBuf;
cx->cxBufSize = newBufSize;
}
PORT_Memcpy(cx->cxBufPtr + bytesUsed, data, data_len);
cx->cxDataLen += data_len;
}
static void
sftk_TLSPRFEnd(TLSPRFContext *ctx, unsigned char *hashout,
unsigned int *pDigestLen, unsigned int maxDigestLen)
{
*pDigestLen = 0; /* tells Verify that no data has been input yet. */
}
/* Compute the PRF values from the data previously input. */
static SECStatus
sftk_TLSPRFUpdate(TLSPRFContext *cx,
unsigned char *sig, /* output goes here. */
unsigned int * sigLen, /* how much output. */
unsigned int maxLen, /* output buffer size */
unsigned char *hash, /* unused. */
unsigned int hashLen) /* unused. */
{
SECStatus rv;
SECItem sigItem;
SECItem seedItem;
SECItem secretItem;
if (cx->cxRv != SECSuccess)
return cx->cxRv;
secretItem.data = cx->cxBufPtr;
secretItem.len = cx->cxKeyLen;
seedItem.data = cx->cxBufPtr + cx->cxKeyLen;
seedItem.len = cx->cxDataLen;
sigItem.data = sig;
sigItem.len = maxLen;
rv = TLS_PRF(&secretItem, NULL, &seedItem, &sigItem, cx->cxIsFIPS);
if (rv == SECSuccess && sigLen != NULL)
*sigLen = sigItem.len;
return rv;
}
static SECStatus
sftk_TLSPRFVerify(TLSPRFContext *cx,
unsigned char *sig, /* input, for comparison. */
unsigned int sigLen, /* length of sig. */
unsigned char *hash, /* data to be verified. */
unsigned int hashLen) /* size of hash data. */
{
unsigned char * tmp = (unsigned char *)PORT_Alloc(sigLen);
unsigned int tmpLen = sigLen;
SECStatus rv;
if (!tmp)
return SECFailure;
if (hashLen) {
/* hashLen is non-zero when the user does a one-step verify.
** In this case, none of the data has been input yet.
*/
sftk_TLSPRFHashUpdate(cx, hash, hashLen);
}
rv = sftk_TLSPRFUpdate(cx, tmp, &tmpLen, sigLen, NULL, 0);
if (rv == SECSuccess) {
rv = (SECStatus)(1 - !PORT_Memcmp(tmp, sig, sigLen));
}
PORT_ZFree(tmp, sigLen);
return rv;
}
static void
sftk_TLSPRFHashDestroy(TLSPRFContext *cx, PRBool freeit)
{
if (freeit) {
if (cx->cxBufPtr != cx->cxBuf)
PORT_ZFree(cx->cxBufPtr, cx->cxBufSize);
PORT_ZFree(cx, cx->cxSize);
}
}
CK_RV
sftk_TLSPRFInit(SFTKSessionContext *context,
SFTKObject * key,
CK_KEY_TYPE key_type)
{
SFTKAttribute * keyVal;
TLSPRFContext * prf_cx;
CK_RV crv = CKR_HOST_MEMORY;
PRUint32 keySize;
PRUint32 blockSize;
if (key_type != CKK_GENERIC_SECRET)
return CKR_KEY_TYPE_INCONSISTENT; /* CKR_KEY_FUNCTION_NOT_PERMITTED */
context->multi = PR_TRUE;
keyVal = sftk_FindAttribute(key, CKA_VALUE);
keySize = (!keyVal) ? 0 : keyVal->attrib.ulValueLen;
blockSize = keySize + sizeof(TLSPRFContext);
prf_cx = (TLSPRFContext *)PORT_Alloc(blockSize);
if (!prf_cx)
goto done;
prf_cx->cxSize = blockSize;
prf_cx->cxKeyLen = keySize;
prf_cx->cxDataLen = 0;
prf_cx->cxBufSize = blockSize - SFTK_OFFSETOF(TLSPRFContext, cxBuf);
prf_cx->cxRv = SECSuccess;
prf_cx->cxIsFIPS = (key->slot->slotID == FIPS_SLOT_ID);
prf_cx->cxBufPtr = prf_cx->cxBuf;
if (keySize)
PORT_Memcpy(prf_cx->cxBufPtr, keyVal->attrib.pValue, keySize);
context->hashInfo = (void *) prf_cx;
context->cipherInfo = (void *) prf_cx;
context->hashUpdate = (SFTKHash) sftk_TLSPRFHashUpdate;
context->end = (SFTKEnd) sftk_TLSPRFEnd;
context->update = (SFTKCipher) sftk_TLSPRFUpdate;
context->verify = (SFTKVerify) sftk_TLSPRFVerify;
context->destroy = (SFTKDestroy) sftk_TLSPRFNull;
context->hashdestroy = (SFTKDestroy) sftk_TLSPRFHashDestroy;
crv = CKR_OK;
done:
if (keyVal)
sftk_FreeAttribute(keyVal);
return crv;
}

View File

@@ -0,0 +1,80 @@
#! gmake
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
#######################################################################
# (1) Include initial platform-independent assignments (MANDATORY). #
#######################################################################
include manifest.mn
#######################################################################
# (2) Include "global" configuration information. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/config.mk
#######################################################################
# (3) Include "component" configuration information. (OPTIONAL) #
#######################################################################
#######################################################################
# (4) Include "local" platform-dependent assignments (OPTIONAL). #
#######################################################################
-include config.mk
#######################################################################
# (5) Execute "global" rules. (OPTIONAL) #
#######################################################################
include $(CORE_DEPTH)/coreconf/rules.mk
#######################################################################
# (6) Execute "component" rules. (OPTIONAL) #
#######################################################################
#######################################################################
# (7) Execute "local" rules. (OPTIONAL). #
#######################################################################
export:: private_export

View File

@@ -0,0 +1,57 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
# can't do this in manifest.mn because OS_TARGET isn't defined there.
ifeq (,$(filter-out WIN%,$(OS_TARGET)))
# don't want the 32 in the shared library name
SHARED_LIBRARY = $(OBJDIR)/$(DLL_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION).$(DLL_SUFFIX)
IMPORT_LIBRARY = $(OBJDIR)/$(IMPORT_LIB_PREFIX)$(LIBRARY_NAME)$(LIBRARY_VERSION)$(IMPORT_LIB_SUFFIX)
#RES = $(OBJDIR)/$(LIBRARY_NAME).res
#RESNAME = $(LIBRARY_NAME).rc
endif
ifeq ($(OS_TARGET),SunOS)
# The -R '$ORIGIN' linker option instructs this library to search for its
# dependencies in the same directory where it resides.
MKSHLIB += -R '$$ORIGIN'
OS_LIBS += -lbsm
endif

View File

@@ -0,0 +1,63 @@
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is the Netscape security libraries.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1994-2000
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
CORE_DEPTH = ../../..
MODULE = nss
LIBRARY_NAME = sqlite
LIBRARY_VERSION = 3
MAPFILE = $(OBJDIR)/sqlite.def
DEFINES += -DTHREADSAFE=1
EXPORTS = \
$(NULL)
PRIVATE_EXPORTS = \
sqlite3.h \
$(NULL)
CSRCS = \
sqlite3.c \
$(NULL)
# only add module debugging in opt builds if DEBUG_PKCS11 is set
ifdef DEBUG_PKCS11
DEFINES += -DDEBUG_MODULE
endif

View File

@@ -0,0 +1,141 @@
;+#
;+#
;+# OK, this file is meant to support SUN, LINUX, AIX and WINDOWS
;+# 1. For all unix platforms, the string ";-" means "remove this line"
;+# 2. For all unix platforms, the string " DATA " will be removed from any
;+# line on which it occurs.
;+# 3. Lines containing ";+" will have ";+" removed on SUN and LINUX.
;+# On AIX, lines containing ";+" will be removed.
;+# 4. For all unix platforms, the string ";;" will thave the ";;" removed.
;+# 5. For all unix platforms, after the above processing has taken place,
;+# all characters after the first ";" on the line will be removed.
;+# And for AIX, the first ";" will also be removed.
;+# This file is passed directly to windows. Since ';' is a comment, all UNIX
;+# directives are hidden behind ";", ";+", and ";-"
;+SQLITE_3 {
;+ global:
LIBRARY sqlite3 ;-
EXPORTS ;-
sqlite3_aggregate_context;
sqlite3_aggregate_count;
sqlite3_apis;
sqlite3_auto_extension;
sqlite3_bind_blob;
sqlite3_bind_double;
sqlite3_bind_int;
sqlite3_bind_int64;
sqlite3_bind_null;
sqlite3_bind_parameter_count;
sqlite3_bind_parameter_index;
sqlite3_bind_parameter_name;
sqlite3_bind_text;
sqlite3_bind_text16;
sqlite3_bind_value;
sqlite3_busy_handler;
sqlite3_busy_timeout;
sqlite3_changes;
sqlite3_clear_bindings;
sqlite3_close;
sqlite3_collation_needed;
sqlite3_collation_needed16;
sqlite3_column_blob;
sqlite3_column_bytes;
sqlite3_column_bytes16;
sqlite3_column_count;
sqlite3_column_decltype;
sqlite3_column_decltype16;
sqlite3_column_double;
sqlite3_column_int;
sqlite3_column_int64;
sqlite3_column_name;
sqlite3_column_name16;
sqlite3_column_text;
sqlite3_column_text16;
sqlite3_column_type;
sqlite3_column_value;
sqlite3_commit_hook;
sqlite3_complete;
sqlite3_complete16;
sqlite3_create_collation;
sqlite3_create_collation16;
sqlite3_create_function;
sqlite3_create_function16;
sqlite3_create_module;
sqlite3_data_count;
sqlite3_db_handle;
sqlite3_declare_vtab;
sqlite3_enable_load_extension;
sqlite3_enable_shared_cache;
sqlite3_errcode;
sqlite3_errmsg;
sqlite3_errmsg16;
sqlite3_exec;
sqlite3_expired;
sqlite3_extended_result_codes;
sqlite3_finalize;
sqlite3_free;
sqlite3_free_table;
sqlite3_get_autocommit;
sqlite3_get_auxdata;
sqlite3_get_table;
sqlite3_global_recover;
sqlite3_interrupt;
sqlite3_last_insert_rowid;
sqlite3_libversion;
sqlite3_libversion_number;
sqlite3_load_extension;
sqlite3_malloc;
sqlite3_mprintf;
sqlite3_open;
sqlite3_open16;
sqlite3_overload_function;
sqlite3_prepare;
sqlite3_prepare16;
sqlite3_prepare16_v2;
sqlite3_prepare_v2;
sqlite3_profile;
sqlite3_progress_handler;
sqlite3_realloc;
sqlite3_reset;
sqlite3_reset_auto_extension;
sqlite3_result_blob;
sqlite3_result_double;
sqlite3_result_error;
sqlite3_result_error16;
sqlite3_result_int;
sqlite3_result_int64;
sqlite3_result_null;
sqlite3_result_text;
sqlite3_result_text16;
sqlite3_result_text16be;
sqlite3_result_text16le;
sqlite3_result_value;
sqlite3_rollback_hook;
sqlite3_set_authorizer;
sqlite3_set_auxdata;
sqlite3_sleep;
sqlite3_snprintf;
sqlite3_step;
sqlite3_thread_cleanup;
sqlite3_total_changes;
sqlite3_trace;
sqlite3_transfer_bindings;
sqlite3_update_hook;
sqlite3_user_data;
sqlite3_value_blob;
sqlite3_value_bytes;
sqlite3_value_bytes16;
sqlite3_value_double;
sqlite3_value_int;
sqlite3_value_int64;
sqlite3_value_numeric_type;
sqlite3_value_text;
sqlite3_value_text16;
sqlite3_value_text16be;
sqlite3_value_text16le;
sqlite3_value_type;
sqlite3_version;
sqlite3_vmprintf;
;+ local:
;+ *;
;+};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,26 +0,0 @@
#
## hostname: fx-linux-tbox
## uname: Linux fx-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
#
export CFLAGS="-gstabs+"
export CXXFLAGS="-gstabs+"
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options PROFILE_GEN_SCRIPT=@TOPSRCDIR@/build/profile_pageloader.pl
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
mk_add_options MOZ_MAKE_FLAGS="-j1"
ac_add_options --enable-application=browser
ac_add_options --enable-update-channel=release
ac_add_options --enable-update-packaging
# Don't add explicit optimize flags here, set them in configure.in, see bug 407794.
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --enable-official-branding
CC=/tools/gcc/bin/gcc
CXX=/tools/gcc/bin/g++

View File

@@ -1,268 +0,0 @@
#
## hostname: fx-linux-tbox
## uname: Linux fx-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{CVS_RSH} = "ssh";
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
# To ensure Talkback client builds properly on some Linux boxen where LANG
# is set to "en_US.UTF-8" by default, override that setting here by setting
# it to "en_US.iso885915" (the setting on ocean). Proper fix is to update
# where xrestool is called in the build system so that 'LANG=C' in its
# environment, according to bryner.
$ENV{LANG} = "en_US.iso885915";
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
$BuildAdministrator = 'build@mozilla.org';
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
#- You'll need to change these to suit your machine's needs
$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "Firefox";
$VendorName = 'Mozilla';
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
$RegxpcomTest = 1;
$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
$LayoutPerformanceTest = 0; # Tp
$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
$StartupPerformanceTest = 0; # Ts
$TestsPhoneHome = 0; # Should test report back to server?
$GraphNameOverride = 'fx-linux-tbox';
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
#$pageload_server = "spider"; # localhost
$pageload_server = "pageload.build.mozilla.org";
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
#$Make = 'gmake'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
#$blat = 'c:/nstools/bin/blat';
#$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
#$moz_cvsroot = $ENV{CVSROOT};
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = 'obj-fx-trunk';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'FIREFOX_3_0_19_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'firefox-bin';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
$build_hour = 4;
$package_creation_path = "/browser/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
$ftp_path = "/home/ftp/pub/firefox/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly";
$tbox_ftp_path = "/home/ftp/pub/firefox/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds";
# CONFIG: $milestone = "firefox%version%";
$milestone = "firefox3.0.19";
$notify_list = 'build-announce@mozilla.org';
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$push_raw_xpis = 0;
$update_pushinfo = 0;
$update_package = 1;
$update_product = "Firefox";
$update_version = "trunk";
$update_platform = "Linux_x86-gcc3";
$update_hash = "sha1";
$update_filehost = 'ftp.mozilla.org';
$update_ver_file = 'browser/config/version.txt';
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'ffxbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_ffx';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/home/cltbld/.ssh/ffxbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';
# Do not build XForms
$BuildXForms = 0;

View File

@@ -1,26 +0,0 @@
#
## hostname: bm-xserve08.build.mozilla.org
## uname: Darwin bm-xserve08.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
#
# symbols for breakpad
export CFLAGS="-g -gfull"
export CXXFLAGS="-g -gfull"
. $topsrcdir/build/macosx/universal/mozconfig
mk_add_options MOZ_MAKE_FLAGS="-j1"
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
mk_add_options MOZ_CO_PROJECT="browser"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../build/universal
ac_add_options --enable-application=browser
ac_add_options --enable-update-channel=release
# Don't add explicit optimize flags here, set them in configure.in, see bug 407794.
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --enable-update-packaging
ac_add_options --enable-official-branding
ac_add_app_options ppc --enable-prebinding

View File

@@ -1,267 +0,0 @@
#
## hostname: bm-xserve08.build.mozilla.org
## uname: Darwin bm-xserve08.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{NO_EM_RESTART} = "1";
$ENV{DYLD_NO_FIX_PREBINDING} = "1";
$ENV{LD_PREBIND_ALLOW_OVERLAP} = "1";
$ENV{CVS_RSH} = "ssh";
$MacUniversalBinary = 1;
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
$BuildAdministrator = 'build@mozilla.org';
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = 'Firefox';
$VendorName = "Mozilla";
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
$RegxpcomTest = 1;
$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
$LayoutPerformanceTest = 0; # Tp
$LayoutPerformanceLocalTest = 0; # Tp2
$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
$XULWindowOpenTest = 0; # Txul
$StartupPerformanceTest = 0; # Ts
$TestsPhoneHome = 0; # Should test report back to server?
$GraphNameOverride = 'xserve08.build.mozilla.org_Fx-Trunk';
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
#$pageload_server = "spider"; # localhost
$pageload_server = "pageload.build.mozilla.org"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
$AliveTestTimeout = 10;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
$LayoutPerformanceTestTimeout = 300; # entire test, seconds
$LayoutPerformanceLocalTestTimeout = 180; # entire test, seconds
$DHTMLPerformanceTestTimeout = 180; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
#$Make = 'gmake'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
#$blat = 'c:/nstools/bin/blat';
#$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = '../build/universal';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'FIREFOX_3_0_19_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'firefox-bin';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
$build_hour = "4";
$package_creation_path = "/browser/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
$ftp_path = "/home/ftp/pub/firefox/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly";
$tbox_ftp_path = "/home/ftp/pub/firefox/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds";
# CONFIG: $milestone = 'firefox%version%';
$milestone = 'firefox3.0.19';
$notify_list = "build-announce\@mozilla.org";
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$push_raw_xpis = 0;
$update_package = 1;
$update_product = "Firefox";
$update_version = "trunk";
$update_platform = "Darwin_Universal-gcc3";
$update_hash = "sha1";
$update_filehost = "ftp.mozilla.org";
$update_ver_file = 'browser/config/version.txt';
$update_pushinfo = 0;
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'ffxbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_ffx';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/Users/cltbld/.ssh/ffxbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';
# Do not build XForms
$BuildXForms = 0;

View File

@@ -1,22 +0,0 @@
#
## hostname: fx-win32-tbox
## uname: MINGW32_NT-5.2 FX-WIN32-TBOX 1.0.11(0.46/3/2) 2007-01-12 12:05 i686 Msys
#
export CFLAGS="-GL -wd4624 -wd4952"
export CXXFLAGS="-GL -wd4624 -wd4952"
export LDFLAGS="-LTCG"
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_MAKE_FLAGS="-j1"
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
mk_add_options PROFILE_GEN_SCRIPT='$(PYTHON) $(MOZ_OBJDIR)/_profile/pgo/profileserver.py'
ac_add_options --enable-application=browser
ac_add_options --enable-update-channel=release
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --enable-update-packaging
ac_add_options --enable-official-branding
ac_add_options --enable-jemalloc
ac_add_options --with-crashreporter-enable-percent=10

View File

@@ -1,267 +0,0 @@
#
## hostname: fx-win32-tbox
## uname: MINGW32_NT-5.2 FX-WIN32-TBOX 1.0.11(0.46/3/2) 2007-01-12 12:05 i686 Msys
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{NO_EM_RESTART} = '1';
$ENV{CVS_RSH} = "ssh";
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
# Both these two variables are for source server support
$ENV{PDBSTR_PATH} = 'C:\\Program Files\\Debugging Tools for Windows\\sdk\\srcsrv\\pdbstr.exe';
$ENV{SRCSRV_ROOT} = ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot';
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
$BuildAdministrator = 'build@mozilla.org';
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "Firefox";
$VendorName = "Mozilla";
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
$RegxpcomTest = 1;
$AliveTest = 1;
$JavaTest = 0;
$ViewerTest = 0;
$BloatTest = 0; # warren memory bloat test
$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
$DomToTextConversionTest = 0;
$XpcomGlueTest = 0;
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
$MailBloatTest = 0;
$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
$LayoutPerformanceTest = 0; # Tp
$DHTMLPerformanceTest = 0; # Tdhtml
$QATest = 0;
$XULWindowOpenTest = 0; # Txul
$StartupPerformanceTest = 0; # Ts
$NeckoUnitTest = 0;
$RenderPerformanceTest = 0; # Tgfx
$TestsPhoneHome = 0; # Should test report back to server?
$GraphNameOverride = 'fx-win32-tbox';
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
$pageload_server = "pageload.build.mozilla.org"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 30;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
$LayoutPerformanceTestTimeout = 800; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 20; # seconds
#$XULWindowOpenTestTimeout = 90; # seconds
#$NeckoUnitTestTimeout = 30; # seconds
$RenderPerformanceTestTimeout = 1800; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
$Make = 'make'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
$blat = '/d/mozilla-build/blat261/full/blat';
#$use_blat = 1;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = 'obj-fx-trunk';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
#$BuildTree = 'MozillaTest';
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'FIREFOX_3_0_19_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'firefox.exe';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
$ProfiledBuild = 1;
# Release build options
$ReleaseBuild = 1;
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
$build_hour = "4";
$package_creation_path = "/browser/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
$ftp_path = "/home/ftp/pub/firefox/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly";
$tbox_ftp_path = "/home/ftp/pub/firefox/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds";
# CONFIG: $milestone = 'firefox%version%';
$milestone = 'firefox3.0.19';
$notify_list = 'build-announce@mozilla.org';
$stub_installer = 0;
$sea_installer = 1;
$archive = 1;
$push_raw_xpis = 0;
$update_package = 1;
$update_product = "Firefox";
$update_version = "trunk";
$update_platform = "WINNT_x86-msvc";
$update_hash = "sha1";
$update_filehost = "ftp.mozilla.org";
$update_ver_file = 'browser/config/version.txt';
$update_pushinfo = 0;
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'ffxbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_ffx';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/c/Documents and Settings/cltbld/.ssh/ffxbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';
# Do not build XForms
$BuildXForms = 0;

View File

@@ -1 +0,0 @@
Clobbering to force nightly due to nightly bustage from bug 428672.

View File

@@ -1,25 +0,0 @@
#
## hostname: tb-linux-tbox
## uname: Linux tb-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 athlon i386 GNU/Linux
#
# symbols for breakpad
export CFLAGS="-gstabs+"
export CXXFLAGS="-gstabs+"
mk_add_options MOZ_CO_PROJECT=mail
mk_add_options MOZ_MAKE_FLAGS=-j1
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
ac_add_options --enable-application=mail
ac_add_options --enable-update-channel=beta
ac_add_options --disable-debug
ac_add_options --enable-update-packaging
# Add explicit optimize flags in configure.in, not here - see bug 407794
ac_add_options --enable-optimize
ac_add_options --disable-tests
ac_add_options --disable-shared
ac_add_options --enable-static
CC=/tools/gcc-4.1.1/bin/gcc
CXX=/tools/gcc-4.1.1/bin/g++

View File

@@ -1,225 +0,0 @@
#
## hostname: tb-linux-tbox
## uname: Linux tbnewref-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 athlon i386 GNU/Linux
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{CVS_RSH} = "ssh";
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
$BuildDepend = 0; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "Thunderbird";
#$VendorName = "";
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
#$RegxpcomTest = 1;
#$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
#$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
#$LayoutPerformanceTest = 0; # Tp
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
#$StartupPerformanceTest = 0; # Ts
$TestsPhoneHome = 0; # Should test report back to server?
#$results_server = "axolotl.mozilla.org"; # was tegu
#$pageload_server = "spider"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 15;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 60; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
#$Make = 'gmake'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
#$blat = 'c:/nstools/bin/blat';
#$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = 'obj-tb-trunk';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'THUNDERBIRD_3_0a2_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'thunderbird-bin';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# allow override of timezone value (for win32 POSIX::strftime)
#$Timezone = '';
# Release build options
$ReleaseBuild = 1;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
$shiptalkback = 0;
$build_hour = "3";
$package_creation_path = "/mail/installer";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
#$ReleaseGroup = "thunderbird";
$ftp_path = "/home/ftp/pub/thunderbird/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly";
$tbox_ftp_path = "/home/ftp/pub/thunderbird/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/tinderbox-builds";
# CONFIG: $milestone = 'thunderbird%version%';
$milestone = 'thunderbird3.0a2';
$notify_list = "build-announce\@mozilla.org";
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$update_package = 1;
$update_product = "Thunderbird";
$update_version = "trunk";
$update_platform = "Linux_x86-gcc3";
$update_hash = "sha1";
$update_filehost = "ftp.mozilla.org";
$update_ver_file = "mail/config/version.txt";
$update_pushinfo = 0;
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'tbirdbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_tbrd';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/home/cltbld/.ssh/tbirdbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = 'bzip2';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = 'base64';

View File

@@ -1 +0,0 @@
Clobbering to force nightly due to nightly bustage from bug 428672.

View File

@@ -1,28 +0,0 @@
#
## hostname: bm-xserve07.build.mozilla.org
## uname: Darwin bm-xserve07.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
#
# symbols for breakpad
export CFLAGS="-g -gfull"
export CXXFLAGS="-g -gfull"
. $topsrcdir/build/macosx/universal/mozconfig
# Make flags
mk_add_options MOZ_CO_PROJECT=mail
mk_add_options MOZ_MAKE_FLAGS="-j1"
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../build/universal
# Configure flags
ac_add_options --enable-application=mail
ac_add_options --enable-update-channel=beta
# Add explicit optimize flags in configure.in, not here - see bug 407794
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --disable-tests
ac_add_options --enable-static
ac_add_options --disable-shared
ac_add_options --enable-update-packaging

View File

@@ -1,262 +0,0 @@
#
## hostname: bm-xserve07.build.mozilla.org
## uname: Darwin bm-xserve07.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
# $ENV{NO_EM_RESTART} = "1";
# $ENV{DYLD_NO_FIX_PREBINDING} = "1";
# $ENV{LD_PREBIND_ALLOW_OVERLAP} = "1";
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
$MacUniversalBinary = 1;
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
$BuildAdministrator = 'build@mozilla.org';
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "Thunderbird";
#$VendorName = 'Mozilla';
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
$RegxpcomTest = 1;
$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
#$LayoutPerformanceTest = 0; # Tp
#$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
#$StartupPerformanceTest = 0; # Ts
$TestsPhoneHome = 0; # Should test report back to server?
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
#$pageload_server = "spider"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
#$Make = 'gmake'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
#$blat = 'c:/nstools/bin/blat';
#$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
#$moz_cvsroot = $ENV{CVSROOT};
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = '../build/universal';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
#$BuildTree = 'MozillaTest';
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'THUNDERBIRD_3_0a2_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'thunderbird-bin';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
$build_hour = "3";
$package_creation_path = "/mail/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$mac_bundle_path = "/mail/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
#$ReleaseGroup = "thunderbird";
$ftp_path = "/home/ftp/pub/thunderbird/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly";
$tbox_ftp_path = "/home/ftp/pub/thunderbird/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/tinderbox-builds";
# CONFIG: $milestone = 'thunderbird%version%';
$milestone = 'thunderbird3.0a2';
$notify_list = "build-announce\@mozilla.org";
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$push_raw_xpis = 0;
$update_package = 1;
$update_product = "Thunderbird";
$update_version = "trunk";
$update_platform = "Darwin_Universal-gcc3";
$update_hash = "sha1";
$update_filehost = "ftp.mozilla.org";
$update_ver_file = "mail/config/version.txt";
$update_pushinfo = 0;
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'tbirdbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_tbrd';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/Users/cltbld/.ssh/tbirdbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';

View File

@@ -1 +0,0 @@
Clobbering to force nightly due to nightly bustage from bug 428672.

View File

@@ -1,22 +0,0 @@
#
## hostname: tbnewref-win32-tbox
## MINGW32_NT-5.2 TBNEWREF-WIN32- 1.0.11(0.46/3/2) 2007-01-12 12:05 i686 Msys
#
mk_add_options MOZ_CO_PROJECT=mail
mk_add_options MOZ_DEBUG_SYMBOLS=1
mk_add_options MOZ_MAKE_FLAGS=-j1
mk_add_options MOZ_CO_MODULE="mozilla/tools/update-packaging"
ac_add_options --enable-application=mail
ac_add_options --enable-update-channel=beta
ac_add_options --disable-debug
# Add explicit optimize flags in configure.in, not here - see bug 407794
ac_add_options --enable-optimize
ac_add_options --disable-tests
ac_add_options --disable-shared
ac_add_options --enable-static
ac_add_options --enable-update-packaging
export WIN32_REDIST_DIR="/d/msvs8/VC/redist/x86/Microsoft.VC80.CRT"

View File

@@ -1,235 +0,0 @@
#
## hostname: tbnewref-win32-tbox
## MINGW32_NT-5.2 TBNEWREF-WIN32- 1.0.11(0.46/3/2) 2007-01-12 12:05 i686 Msys
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{CVSROOT}=":ext:tbirdbld\@cvs.mozilla.org:/cvsroot";
$ENV{MOZ_INSTALLER_USE_7ZIP}="1";
$ENV{MOZ_PACKAGE_MSI} = 0;
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
# Both these two variables are for source server support
$ENV{PDBSTR_PATH} = 'C:\\Program Files\\Debugging Tools for Windows\\sdk\\srcsrv\\pdbstr.exe';
$ENV{SRCSRV_ROOT} = ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot';
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
$BuildDepend = 0; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "Thunderbird";
#$VendorName = '';
$RunMozillaTests = 1; # Allow turning off of all tests if needed.
#$RegxpcomTest = 1;
#$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
#$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
#$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
#$LayoutPerformanceTest = 0; # Tp
#$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
#$StartupPerformanceTest = 0; # Ts
$TestsPhoneHome = 0; # Should test report back to server?
#$results_server = "axolotl.mozilla.org"; # was tegu
#$pageload_server = "spider"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
$Make = 'make'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
$blat = '/d/mozilla-build/blat261/full/blat';
$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = 'obj-tb-trunk';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'THUNDERBIRD_3_0a2_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'thunderbird.exe';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
$shiptalkback = 0;
$ReleaseToLatest = 0;
$ReleaseToDated = 1;
$build_hour = "3";
$package_creation_path = "/mail/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
#$ReleaseGroup = "thunderbird";
$ftp_path = "/home/ftp/pub/thunderbird/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/nightly";
$tbox_ftp_path = "/home/ftp/pub/thunderbird/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/thunderbird/tinderbox-builds";
# CONFIG: $milestone = 'thunderbird%version%';
$milestone = 'thunderbird3.0a2';
$notify_list = "build-announce\@mozilla.org";
$stub_installer = 0;
$sea_installer = 1;
$archive = 1;
$push_raw_xpis = 1;
$update_package = 1;
$update_product = "Thunderbird";
$update_version = "trunk";
$update_ver_file = "mail/config/version.txt";
$update_platform = "WINNT_x86-msvc";
$update_hash = "sha1";
$update_filehost = "ftp.mozilla.org";
$update_pushinfo = 0;
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'dm-symbolpush01.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'tbirdbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_tbrd';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/c/Documents and Settings/cltbld/.ssh/tbirdbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';

View File

@@ -1 +0,0 @@
Clobbering to fix up checkout issues

View File

@@ -1,17 +0,0 @@
#
## hostname: xr-linux-tbox
## uname: Linux xr-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
#
export MOZILLA_OFFICIAL=1
export JAVA_HOME=/tools/jdk
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options MOZ_CO_PROJECT=xulrunner
mk_add_options MOZ_MAKE_FLAGS="-j3"
ac_add_options --enable-application=xulrunner
ac_add_options --disable-tests
CC=/tools/gcc-4.1.1/bin/gcc
CXX=/tools/gcc-4.1.1/bin/g++

View File

@@ -1,262 +0,0 @@
#
## hostname: xr-linux-tbox
## uname: Linux xr-linux-tbox.build.mozilla.org 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686 i686 i386 GNU/Linux
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
$BuildAdministrator = "build\@mozilla.org";
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$ConfigureOnly = 0; # Configure, but do not build.
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
$BuildSDK = 1; # Build the SDK
# Only used when $BuildLocales = 1
%WGetFiles = (); # Pull files from the web, URL => Location
#$WGetTimeout = 360; # Wget timeout, in seconds
#$BuildLocalesArgs = ""; # Extra attributes to add to the makefile command
# which builds the "installers-<locale>" target.
# Typically used to set ZIP_IN and WIN32_INSTALLER_IN
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "XULRunner";
$VendorName = 'Mozilla';
$RunMozillaTests = 0; # Allow turning off of all tests if needed.
#$RegxpcomTest = 1;
#$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
#$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
#$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
#$LayoutPerformanceTest = 0; # Tp
#$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
#$StartupPerformanceTest = 0; # Ts
#@CompareLocaleDirs = (); # Run compare-locales test on these directories
# ("network","dom","toolkit","security/manager");
#$CompareLocalesAviary = 0; # Should the compare-locales commands use the
# aviary directory structure?
#$TestsPhoneHome = 0; # Should test report back to server?
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
#$pageload_server = "spider"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
#$Make = 'gmake'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
#$blat = 'c:/nstools/bin/blat';
#$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
#$moz_cvsroot = $ENV{CVSROOT};
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = 'obj-xulrunner';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'FIREFOX_3_0_17_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'xulrunner-bin';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
#$LocaleProduct = "browser";
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
#$build_hour = "8";
$package_creation_path = "/xulrunner/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
#$ssh_key = "$ENV{HOME}/.ssh/xrbld_dsa";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
$ReleaseGroup = "xulrunner";
$ftp_path = "/home/ftp/pub/xulrunner/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly";
$tbox_ftp_path = "/home/ftp/pub/xulrunner/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/xulrunner/tinderbox-builds";
# CONFIG: $milestone = "xulrunner%version%";
$milestone = "xulrunner1.9.0.17";
$notify_list = "build-announce\@mozilla.org";
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$push_raw_xpis = 0;
$crashreporter_buildsymbols = 0;
$crashreporter_pushsymbols = 0;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'stage-old.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'xrbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_xr';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/home/cltbld/.ssh/xrbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';

View File

@@ -1 +0,0 @@
CLOBBERing to disable zipwriter from bug 379633

View File

@@ -1,20 +0,0 @@
#
## hostname: bm-xserve09.build.mozilla.org
## uname: Darwin bm-xserve09.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
#
. $topsrcdir/build/macosx/universal/mozconfig
export MOZILLA_OFFICIAL=1
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options MOZ_CO_PROJECT=xulrunner
mk_add_options MOZ_MAKE_FLAGS="-j8"
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../build/universal
ac_add_options --enable-application=xulrunner
ac_add_options --disable-tests
ac_add_options --enable-svg
ac_add_options --enable-canvas
ac_add_app_options ppc --enable-prebinding

View File

@@ -1,268 +0,0 @@
#
## hostname: bm-xserve09.build.mozilla.org
## uname: Darwin bm-xserve09.build.mozilla.org 8.8.4 Darwin Kernel Version 8.8.4: Sun Oct 29 15:26:54 PST 2006; root:xnu-792.16.4.obj~1/RELEASE_I386 i386 i386
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$MacUniversalBinary = 1;
$ENV{CHOWN_ROOT} = "/builds/tinderbox/bin/chown_root";
$ENV{REVERT_ROOT} = "/builds/tinderbox/bin/revert_root";
$ENV{CHOWN_REVERT} = $ENV{REVERT_ROOT};
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
$BuildAdministrator = "build\@mozilla.org";
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$ConfigureOnly = 0; # Configure, but do not build.
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
$BuildSDK = 1; # Build the SDK
# Only used when $BuildLocales = 1
%WGetFiles = (); # Pull files from the web, URL => Location
#$WGetTimeout = 360; # Wget timeout, in seconds
#$BuildLocalesArgs = ""; # Extra attributes to add to the makefile command
# which builds the "installers-<locale>" target.
# Typically used to set ZIP_IN and WIN32_INSTALLER_IN
# Tests
$CleanProfile = 1;
#$ResetHomeDirForTests = 1;
$ProductName = "XULRunner";
$VendorName = 'Mozilla';
$RunMozillaTests = 0; # Allow turning off of all tests if needed.
#$RegxpcomTest = 1;
#$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
#$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
#$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
#$LayoutPerformanceTest = 0; # Tp
#$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
#$StartupPerformanceTest = 0; # Ts
#@CompareLocaleDirs = (); # Run compare-locales test on these directories
# ("network","dom","toolkit","security/manager");
#$CompareLocalesAviary = 0; # Should the compare-locales commands use the
# aviary directory structure?
#$TestsPhoneHome = 0; # Should test report back to server?
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
#$pageload_server = "spider"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
#$Make = 'gmake'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
#$blat = 'c:/nstools/bin/blat';
#$use_blat = 0;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
# sharing bm-xserve09 with T'bird build, do all CVS pulls with that key
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = '../build/universal';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'FIREFOX_3_0_17_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'xulrunner-bin';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
#$LocaleProduct = "browser";
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
#$build_hour = "8";
$package_creation_path = "/xulrunner/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
#$ssh_key = "$ENV{HOME}/.ssh/xrbld_dsa";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
$ReleaseGroup = "xulrunner";
$ftp_path = "/home/ftp/pub/xulrunner/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly";
$tbox_ftp_path = "/home/ftp/pub/xulrunner/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/xulrunner/tinderbox-builds";
# CONFIG: $milestone = 'xulrunner%version%';
$milestone = 'xulrunner1.9.0.17';
$notify_list = "build-announce\@mozilla.org";
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$push_raw_xpis = 0;
$crashreporter_buildsymbols = 0;
$crashreporter_pushsymbols = 0;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'stage-old.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'xrbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_xr';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/Users/cltbld/.ssh/xrbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';

View File

@@ -1 +0,0 @@
Preemptive clobber for /README.txt merge conflict.

View File

@@ -1,18 +0,0 @@
#
# hostname: fxexp-win32-tbox
# uname: CYGWIN_NT-5.2 fxexp-win32-tbox 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin
#
export MOZILLA_OFFICIAL
export JAVA_HOME=/d/jdk1.5.0_10
mk_add_options MOZILLA_OFFICIAL=1
mk_add_options MOZ_CO_PROJECT=xulrunner
mk_add_options MOZ_MAKE_FLAGS="-j2"
ac_add_options --enable-application=xulrunner
ac_add_options --enable-jemalloc
ac_add_options --disable-tests
ac_add_options --enable-svg
ac_add_options --enable-canvas
ac_add_options --disable-installer

View File

@@ -1,255 +0,0 @@
#
# hostname: fxexp-win32-tbox
# uname: CYGWIN_NT-5.2 fxexp-win32-tbox 1.5.19(0.150/4/2) 2006-01-20 13:28 i686 Cygwin
#
#- tinder-config.pl - Tinderbox configuration file.
#- Uncomment the variables you need to set.
#- The default values are the same as the commented variables.
$ENV{NO_EM_RESTART} = "1";
$ENV{MOZ_INSTALLER_USE_7ZIP} = "1";
$ENV{CVS_RSH} = "ssh";
$ENV{MOZ_CRASHREPORTER_NO_REPORT} = '1';
# Both these two variables are for source server support
$ENV{PDBSTR_PATH} = 'C:\\Program Files\\Debugging Tools for Windows\\sdk\\srcsrv\\pdbstr.exe';
$ENV{SRCSRV_ROOT} = ':pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot';
# $ENV{MOZ_PACKAGE_MSI}
#-----------------------------------------------------------------------------
# Default: 0
# Values: 0 | 1
# Purpose: Controls whether a MSI package is made.
# Requires: Windows and a local MakeMSI installation.
#$ENV{MOZ_PACKAGE_MSI} = 0;
# $ENV{MOZ_SYMBOLS_TRANSFER_TYPE}
#-----------------------------------------------------------------------------
# Default: scp
# Values: scp | rsync
# Purpose: Use scp or rsync to transfer symbols to the Talkback server.
# Requires: The selected type requires the command be available both locally
# and on the Talkback server.
#$ENV{MOZ_SYMBOLS_TRANSFER_TYPE} = "scp";
#- PLEASE FILL THIS IN WITH YOUR PROPER EMAIL ADDRESS
#$BuildAdministrator = "$ENV{USER}\@$ENV{HOST}";
#$BuildAdministrator = ($ENV{USER} || "cltbld") . "\@" . ($ENV{HOST} || "dhcp");
$BuildAdministrator = 'build@mozilla.org';
#- You'll need to change these to suit your machine's needs
#$DisplayServer = ':0.0';
#- Default values of command-line opts
#-
#$BuildDepend = 1; # Depend or Clobber
#$BuildDebug = 0; # Debug or Opt (Darwin)
#$ReportStatus = 1; # Send results to server, or not
#$ReportFinalStatus = 1; # Finer control over $ReportStatus.
$UseTimeStamp = 0; # Use the CVS 'pull-by-timestamp' option, or not
#$BuildOnce = 0; # Build once, don't send results to server
#$TestOnly = 0; # Only run tests, don't pull/build
#$BuildEmbed = 0; # After building seamonkey, go build embed app.
#$SkipMozilla = 0; # Use to debug post-mozilla.pl scripts.
#$BuildLocales = 0; # Do l10n packaging?
$BuildSDK = 1; # Build the SDK
# Tests
#$CleanProfile = 0;
#$ResetHomeDirForTests = 1;
$ProductName = "XULRunner";
$VendorName = 'Mozilla';
$RunMozillaTests = 0; # Allow turning off of all tests if needed.
#$RegxpcomTest = 1;
#$AliveTest = 1;
#$JavaTest = 0;
#$ViewerTest = 0;
#$BloatTest = 0; # warren memory bloat test
#$BloatTest2 = 0; # dbaron memory bloat test, require tracemalloc
#$DomToTextConversionTest = 0;
#$XpcomGlueTest = 0;
#$CodesizeTest = 0; # Z, require mozilla/tools/codesighs
#$EmbedCodesizeTest = 0; # mZ, require mozilla/tools/codesigns
#$MailBloatTest = 0;
#$EmbedTest = 0; # Assumes you wanted $BuildEmbed=1
#$LayoutPerformanceTest = 0; # Tp
#$DHTMLPerformanceTest = 0; # Tdhtml
#$QATest = 0;
#$XULWindowOpenTest = 0; # Txul
#$StartupPerformanceTest = 0; # Ts
#$TestsPhoneHome = 0; # Should test report back to server?
# $results_server
#----------------------------------------------------------------------------
# Server on which test results will be accessible. This was originally tegu,
# then became axolotl. Once we moved services from axolotl, it was time
# to give this service its own hostname to make future transitions easier.
# - cmp@mozilla.org
#$results_server = "build-graphs.mozilla.org";
#$pageload_server = "spider"; # localhost
#
# Timeouts, values are in seconds.
#
#$CVSCheckoutTimeout = 3600;
#$CreateProfileTimeout = 45;
#$RegxpcomTestTimeout = 120;
#$AliveTestTimeout = 45;
#$ViewerTestTimeout = 45;
#$EmbedTestTimeout = 45;
#$BloatTestTimeout = 120; # seconds
#$MailBloatTestTimeout = 120; # seconds
#$JavaTestTimeout = 45;
#$DomTestTimeout = 45; # seconds
#$XpcomGlueTestTimeout = 15;
#$CodesizeTestTimeout = 900; # seconds
#$CodesizeTestType = "auto"; # {"auto"|"base"}
#$LayoutPerformanceTestTimeout = 1200; # entire test, seconds
#$DHTMLPerformanceTestTimeout = 1200; # entire test, seconds
#$QATestTimeout = 1200; # entire test, seconds
#$LayoutPerformanceTestPageTimeout = 30000; # each page, ms
#$StartupPerformanceTestTimeout = 15; # seconds
#$XULWindowOpenTestTimeout = 150; # seconds
#$MozConfigFileName = 'mozconfig';
#$UseMozillaProfile = 1;
#$MozProfileName = 'default';
#- Set these to what makes sense for your system
$Make = 'make'; # Must be GNU make
#$MakeOverrides = '';
#$mail = '/bin/mail';
#$CVS = 'cvs -q';
#$CVSCO = 'checkout -P';
# win32 usually doesn't have /bin/mail
$blat = '/d/mozilla-build/blat261/full/blat';
$use_blat = 1;
# Set moz_cvsroot to something like:
# :pserver:$ENV{USER}%netscape.com\@cvs.mozilla.org:/cvsroot
# :pserver:anonymous\@cvs-mirror.mozilla.org:/cvsroot
#
# Note that win32 may not need \@, depends on ' or ".
# :pserver:$ENV{USER}%netscape.com@cvs.mozilla.org:/cvsroot
#$moz_cvsroot = $ENV{CVSROOT};
# CONFIG: $moz_cvsroot = '%mozillaCvsroot%';
$moz_cvsroot = 'cltbld@cvs.mozilla.org:/cvsroot';
#- Set these proper values for your tinderbox server
#$Tinderbox_server = 'tinderbox-daemon@tinderbox.mozilla.org';
# Allow for non-client builds, e.g. camino.
#$moz_client_mk = 'client.mk';
#- Set if you want to build in a separate object tree
$ObjDir = 'obj-xulrunner';
# Extra build name, if needed.
$BuildNameExtra = 'Release';
# User comment, eg. ip address for dhcp builds.
# ex: $UserComment = "ip = 208.12.36.108";
#$UserComment = 0;
#-
#- The rest should not need to be changed
#-
#- Minimum wait period from start of build to start of next build in minutes.
#$BuildSleep = 10;
#- Until you get the script working. When it works,
#- change to the tree you're actually building
# CONFIG: $BuildTree = '%buildTree%';
$BuildTree = 'MozillaRelease';
#$BuildName = '';
# CONFIG: $BuildTag = '%productTag%_RELEASE';
$BuildTag = 'FIREFOX_3_0_17_RELEASE';
#$BuildConfigDir = 'mozilla/config';
#$Topsrcdir = 'mozilla';
$BinaryName = 'xulrunner.exe';
#
# For embedding app, use:
#$EmbedBinaryName = 'TestGtkEmbed';
#$EmbedDistDir = 'dist/bin'
#$ShellOverride = ''; # Only used if the default shell is too stupid
#$ConfigureArgs = '';
#$ConfigureEnvArgs = '';
#$Compiler = 'gcc';
#$NSPRArgs = '';
#$ShellOverride = '';
# Release build options
$ReleaseBuild = 1;
$shiptalkback = 0;
$ReleaseToLatest = 0; # Push the release to latest-<milestone>?
$ReleaseToDated = 1; # Push the release to YYYY-MM-DD-HH-<milestone>?
#$build_hour = "8";
$package_creation_path = "/xulrunner/installer";
# needs setting for mac + talkback: $mac_bundle_path = "/browser/app";
$ssh_version = "2";
# CONFIG: $ssh_user = "%sshUser%";
$ssh_user = "cltbld";
#$ssh_key = "'$ENV{HOME}/.ssh/xrbld_dsa'";
# CONFIG: $ssh_server = "%sshServer%";
$ssh_server = "stage-old.mozilla.org";
$ReleaseGroup = "xulrunner";
$ftp_path = "/home/ftp/pub/xulrunner/nightly";
$url_path = "http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly";
$tbox_ftp_path = "/home/ftp/pub/xulrunner/tinderbox-builds";
$tbox_url_path = "http://ftp.mozilla.org/pub/mozilla.org/xulrunner/tinderbox-builds";
# CONFIG: $milestone = 'xulrunner%version%';
$milestone = 'xulrunner1.9.0.17';
$notify_list = 'build-announce@mozilla.org';
$stub_installer = 0;
$sea_installer = 0;
$archive = 1;
$push_raw_xpis = 0;
$crashreporter_buildsymbols = 1;
$crashreporter_pushsymbols = 1;
# CONFIG: $ENV{'SYMBOL_SERVER_HOST'} = '%symbolServer%';
$ENV{'SYMBOL_SERVER_HOST'} = 'stage-old.mozilla.org';
# CONFIG: $ENV{'SYMBOL_SERVER_USER'} = '%symbolServerUser%';
$ENV{'SYMBOL_SERVER_USER'} = 'xrbld';
# CONFIG: $ENV{'SYMBOL_SERVER_PATH'} = '%symbolServerPath%';
$ENV{'SYMBOL_SERVER_PATH'} = '/mnt/netapp/breakpad/symbols_xr';
# CONFIG: $ENV{'SYMBOL_SERVER_SSH_KEY'} = '%symbolServerKey%';
$ENV{'SYMBOL_SERVER_SSH_KEY'} = '/c/Documents and Settings/cltbld/.ssh/xrbld_dsa';
# Reboot the OS at the end of build-and-test cycle. This is primarily
# intended for Win9x, which can't last more than a few cycles before
# locking up (and testing would be suspect even after a couple of cycles).
# Right now, there is only code to force the reboot for Win9x, so even
# setting this to 1, will not have an effect on other platforms. Setting
# up win9x to automatically logon and begin running tinderbox is left
# as an exercise to the reader.
#$RebootSystem = 0;
# LogCompression specifies the type of compression used on the log file.
# Valid options are 'gzip', and 'bzip2'. Please make sure the binaries
# for 'gzip' or 'bzip2' are in the user's path before setting this
# option.
#$LogCompression = '';
# LogEncoding specifies the encoding format used for the logs. Valid
# options are 'base64', and 'uuencode'. If $LogCompression is set above,
# this needs to be set to 'base64' or 'uuencode' to ensure that the
# binary data is transferred properly.
#$LogEncoding = '';
# Prevent Extension Manager from spawning child processes during tests
# - processes that tbox scripts cannot kill.
#$ENV{NO_EM_RESTART} = '1';