summaryrefslogtreecommitdiff
path: root/ChangeLog-ssl-nio
blob: f15d93cac5f420e276bdf9a1854c8e62a2775f07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
2006-07-18  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/ClientHandshake.java
	(implHandleInput, implHandleOutput): fix PSK exchange handling.
	(ClientDHGen.full): new field.
	(ClientDHGen.implRun): run full key exchange if `full' is true.
	(ClientDHGen.serverKey): new method.
	(RSAGen.full): new field.
	(RSAGen.implRun): run full key exchange if `full' is true.
	* gnu/javax/net/ssl/provider/ClientDHE_PSKParameters.java
	(params): slice the buffer.
	* gnu/javax/net/ssl/provider/ServerDHE_PSKParameters.java
	(<init>): use `dhParams,' not `buffer.'
	(params): slice the buffer.
	* gnu/javax/net/ssl/provider/ServerKeyExchange.java (length):
	handle case where parameters or signature are null.
	* gnu/javax/net/ssl/provider/ClientRSA_PSKParameters.java
	(version): removed.
	(<init>): don't take version argument.
	(<init>): don't take version argument; take buffer argument.
	(secret): pass TLS_1 to EncryptedPreMasterSecret constructor.
	* gnu/javax/net/ssl/provider/CipherSuite.java (isResolved): new
	field.
	(<init>, <init>): set `isResolved.'
	(resolve): add PSK cipher suite detection.
	(isResolved): new method.
	* gnu/javax/net/ssl/provider/ServerHandshake.java (serverKey): new
	field.
	(chooseSuites): choose NONE key exchanges, too; omit unresolved
	cipher suites.
	(implHandleInput, implHandleOutput): fix PSK handling.
	(checkKeyExchange): update for NONE and PSK exchanges.
	(CertLoader.implRun): grab our private key here.
	(RSAKeyExchange.implRun): initialize RSA cipher with our private
	key.
	(RSA_PSKExchange.implRun): likewise.
	* gnu/javax/net/ssl/provider/ExchangeKeys.java (<init>): duplicate
	and order the buffer; handle null argument.
	* gnu/javax/net/ssl/provider/ClientKeyExchange.java
	(exchangeKeys): handle NONE exchange.
	* gnu/javax/net/ssl/provider/SSLContextImpl.java (engineInit):
	handle PSK key managers properly.
	* gnu/javax/net/ssl/provider/SSLEngineImpl.java (<init>): remove
	debug logging.
	* gnu/javax/net/ssl/provider/ServerDHParams.java (<init>):
	duplicate and order the buffer.
	* gnu/javax/crypto/RSACipherImpl.java (doFinal): allow short
	input.
	(rsaDecrypt): ensure there's a leading zero.
	* gnu/javax/net/ssl/provider/EmptyExchangeKeys.java: new file.

2006-07-14  Casey Marshall  <csm@gnu.org>

	* gnu/java/net/protocol/http/HTTPConnection.java (getSocket):
	enable TLSv1.1.
	* gnu/java/security/action/GetPropertyAction.java: implement
	PrivilegedAction<String>.
	(run): return String.

2006-07-14  Casey Marshall  <csm@gnu.org>

	* gnu/classpath/debug/Component.java (SSL_DELEGATED_TASK): new
	constant.
	* gnu/classpath/debug/SystemLogger.java (getSystemLogger): new
	class method.
	* gnu/javax/crypto/RSACipherImpl.java (logger): make instance of
	SystemLogger.
	(doFinal): use `EME_PKCS1_V1_5' to pad/unpad.
	* gnu/javax/net/ssl/AbstractSessionContext.java (getSession): new
	method.
	* gnu/javax/net/ssl/PreSharedKeyManager.java: new file.
	* gnu/javax/net/ssl/PreSharedKeyManagerParameters.java: new file.
	* gnu/javax/net/ssl/provider/AbstractHandshake.java: move
	delegated task classes to the end.
	(handleInput): don't stop processing current input if tasks are
	scheduled.
	(DHE_PSKGen): new class.
	* gnu/javax/net/ssl/provider/CertificateStatusRequest.java
	(buffer): make non-final.
	(<init>): new "builder" constructor.
	(buffer): new method.
	* gnu/javax/net/ssl/provider/CertificateURL.java (buffer): make
	non-final.
	(<init>): new "builder" constructor.
	(buffer): new method.
	(URLAndOptionalHash): implement Builder.
	(URLAndOptionalHash.<init>): set buffer order to BIG_ENDIAN.
	(URLAndOptionalHash.<init>, URLAndOptionalHash.<init>): new
	"builder" constructors.
	(URLAndOptionalHash.buffer): new method.
	* gnu/javax/net/ssl/provider/CipherSuite.java: replace
	DIFFIE_HELLMAN with qualified algorithm.
	(TLS_PSK_WITH_RC4_128_SHA, TLS_PSK_WITH_3DES_EDE_CBC_SHA,
	TLS_PSK_WITH_AES_128_CBC_SHA, TLS_PSK_WITH_AES_256_CBC_SHA,
	TLS_DHE_PSK_WITH_RC4_128_SHA, TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA,
	TLS_DHE_PSK_WITH_AES_128_CBC_SHA,
	TLS_DHE_PSK_WITH_AES_256_CBC_SHA,
	TLS_RSA_PSK_WITH_RC4_128_SHA, TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA,
	TLS_RSA_PSK_WITH_AES_128_CBC_SHA,
	TLS_RSA_PSK_WITH_AES_256_CBC_SHA): new constants.
	* gnu/javax/net/ssl/provider/ClientDHE_PSKParameters.java: new
	file.
	* gnu/javax/net/ssl/provider/ClientHandshake.java
	(maxFragmentLengthSent, truncatedHMacSent, sentVersion): new
	fields.
	(implHandleInput): handle hello extensions; handle PSK key
	exchange.
	(implHandleOutput): send extensions if configured; handle PSK key
	exchange.
	(enableExtensions, maxFragmentLength, truncatedHMac,
	getPSKIdentity): new methods.
	(RSAGen.implRun): use the protocol version we sent in the
	generated secret, not the agreed version.
	* gnu/javax/net/ssl/provider/ClientHello.java: remove unused
	imports.
	(disableExtensions): new field.
	(length): use `disableExtensions' field.
	(extensions): fix telling if there are extensions.
	* gnu/javax/net/ssl/provider/ClientHelloBuilder.java
	(setExtensions): fix.
	(setDisableExtensions): new method.
	* gnu/javax/net/ssl/provider/ClientKeyExchange.java
	(exchangeKeys): handle PSK exchange.
	* gnu/javax/net/ssl/provider/ClientPSKParameters.java: new file.
	* gnu/javax/net/ssl/provider/ClientRSA_PSKParameters.java: new
	file.
	* gnu/javax/net/ssl/provider/EncryptedPreMasterSecret.java
	(toString): include hexdump output.
	* gnu/javax/net/ssl/provider/Extension.java: implement Builder.
	(buffer): mark non-final.
	(<init>): make public.
	(<init>): new "builder" constructor.
	(length): include length of the extension type.
	(buffer): new method.
	(Value): implement Builder.
	* gnu/javax/net/ssl/provider/ExtensionList.java: implement
	Builder.
	(<init>): new "builder" constructor.
	(get): fix.
	(length): return total length, including length field.
	* gnu/javax/net/ssl/provider/InputSecurityParameters.java
	(decrypt): handle stream ciphers (with no padding) properly.
	* gnu/javax/net/ssl/provider/Jessie.java (<init>): add JessiePSK
	key manager factory.
	* gnu/javax/net/ssl/provider/KeyExchangeAlgorithm.java
	(DIFFIE_HELLMAN): removed.
	(DH_DSS, DH_RSA, DH_anon, DHE_DSS, DHE_RSA, PSK, DHE_PSK,
	RSA_PSK): new enum constants.
	* gnu/javax/net/ssl/provider/MaxFragmentLength.java (buffer): new
	method.
	* gnu/javax/net/ssl/provider/OutputSecurityParameters.java
	(encrypt): don't use `doFinal.'
	* gnu/javax/net/ssl/provider/PreSharedKeyManagerFactoryImpl.java:
	new file.
	* gnu/javax/net/ssl/provider/SSLContextImpl.java (pskManager): new
	field.
	(engineInit): initialize PSK manager, if specified.
	* gnu/javax/net/ssl/provider/SSLEngineImpl.java (unwrap): debug
	logging; don't log warnings on closure alerts.
	* gnu/javax/net/ssl/provider/SSLSocketImpl.java
	(SocketOutputStream.write): throw an exception if the handshake
	threw one in another thread; clear the output buffer after writing
	the record.
	(doHandshake): fix this; capture exceptions thrown here, for other
	threads.
	* gnu/javax/net/ssl/provider/ServerDHE_PSKParameters.java: new
	file.
	* gnu/javax/net/ssl/provider/ServerDHParams.java (algorithm): mark
	deprecated (it's difficult to support this properly).
	* gnu/javax/net/ssl/provider/ServerHandshake.java
	(chooseSuites): select suites based on key exchange algorithm.
	(implHandleInput): handle key exchange better; handle PSK
	exchange.
	(implHandleOutput): likewise.
	(CertLoader.implRun): just use key exchange name directly.
	(RSA_PSKExchange): new class.
	* gnu/javax/net/ssl/provider/ServerKeyExchange.java (params):
	handle PSK exchange algorithms.
	(signature): likewise.
	* gnu/javax/net/ssl/provider/ServerNameList.java
	(buffer): make non-final.
	(<init>): new "builder" constructor.
	(buffer): new method.
	(ServerName.buffer): make non-final.
	(ServerName.<init>): new "builder" constructor.
	(ServerName.length): return total length, including type and
	length fields.
	(ServerName.buffer): new method.
	* gnu/javax/net/ssl/provider/ServerPSKParameters.java: new file.
	* gnu/javax/net/ssl/provider/ServerRSA_PSKParameters.java: new
	file.
	* gnu/javax/net/ssl/provider/TruncatedHMAC.java (buffer): new
	method.
	* gnu/javax/net/ssl/provider/TrustedAuthorities.java (<init>): set
	buffer order to BIG_ENDIAN.
	(buffer): new method.
	* gnu/javax/net/ssl/provider/UnresolvedExtensionValue.java
	(buffer): new method.
	* gnu/javax/net/ssl/provider/Util.java (wrapBuffer, wrapBuffer):
	new methods.
	(WrappedBuffer): new class.
	* gnu/javax/net/ssl/provider/X509KeyManagerFactory.java
	(getAliases): add RSA_PSK.

2006-07-12  Casey Marshall  <csm@gnu.org>

	* gnu/javax/security/auth/callback/CertificateCallback.java: new
	file.

2006-07-12  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/AbstractHandshake.java
	(engine, inParams, outParams, tasks, serverRandom, clientRandom,
	compression): new fields.
	(<init>): take an SSLEngineImpl parameter; init `tasks.'
	(handleInput): return NEED_TASK if we have tasks.
	(getInputParams, getOutputParams): implement here; mark final.
	(getTask): new method.
	(checkKeyExchange): new method.
	(reallocateBuffer): use `compact.'
	(diffieHellmanPhase1, diffieHellmanPhase2): removed.
	(DHPhase, CertVerifier): new classes.
	(generateMasterSecret): add asserts.
	(setupSecurityParameters): new method.
	* gnu/javax/net/ssl/provider/Certificate.java (certificates): fix
	reading multiple certificates.
	* gnu/javax/net/ssl/provider/ClientCertificateTypeList.java:
	implement Iterable<ClientCertificateType>.
	(iterator): new method.
	* gnu/javax/net/ssl/provider/ClientDiffieHellmanPublic.java: make
	public; implement Builder.
	(<init>): make public.
	(<init>): new constructor.
	(wrap): new method.
	(buffer): new method.
	(publicValue): make public; use `rewind.'
	(setPublicValue): use `Util.trim;' use `rewind.'
	(length): return proper length.
	* gnu/javax/net/ssl/provider/ClientHandshake.java: new file.
	* gnu/javax/net/ssl/provider/ClientKeyExchange.java: remove unused
	imports; make public, non-final.
	(buffer): make protected, non-final.
	(suite, version): make protected.
	(<init>): make public.
	(length): return 0 for NONE key exchange algorithm.
	* gnu/javax/net/ssl/provider/ClientKeyExchangeBuilder.java: new
	file.
	* gnu/javax/net/ssl/provider/DelegatedTask.java: new file.
	* gnu/javax/net/ssl/provider/DiffieHellman.java (getParams): use
	AccessController instead of Util.
	* gnu/javax/net/ssl/provider/EncryptedPreMasterSecret.java: make
	public; implement Builder.
	(<init>): make public.
	(<init>): new constructor.
	(buffer): new method.
	(encryptedSecret): make public; fix SSLv3 handling.
	(setEncryptedSecret): make public; rewind the buffer after putting
	the value.
	(length): fix length computation.
	* gnu/javax/net/ssl/provider/ExchangeKeys.java: make public.
	(buffer): make protected, non-final.
	(<init>): made public; don't check null.
	* gnu/javax/net/ssl/provider/Jessie.java (<init>): add "SSL" alias.
	* gnu/javax/net/ssl/provider/ServerHandshake.java: clean up unused
	imports.
	(engine, compression, clientRandom, serverRandom, clientSessionID,
	inParams, outParams, keyAgreement): moved to superclass.
	(genDH, certVerifier, certLoader, keyExchangeTask): new fields.
	(<init>): pass engine to superclass constructor.
	(implHandleInput): throw `AlertException' when it makes sense; run
	long-running tasks as delegated tasks; return NEED_TASK if we
	scheduled a delegated task.
	(implHandleOutput): generate keys for continued sessions; run
	long-running tasks as delegated tasks; return NEED_TASK if we
	scheduled a delegated task.
	(status): also return NEED_TASK as appropriate.
	(getInputParams, getOutputParams): removed.
	(checkKeyExchange): new method.
	(genDiffieHellman): removed.
	(signParams): throw exceptions.
	(CertLoader, GenDH, RSAKeyExchange): new classes.
	* gnu/javax/net/ssl/provider/SSLContextImpl.java
	(engineGetServerSocketFactory): implement.
	(engineGetSocketFactory): implement.
	(defaultRandom): use AccessController instead of Util.
	* gnu/javax/net/ssl/provider/SSLEngineImpl.java (<init>): use
	`defaultSuites.'
	(defaultSuites): new method.
	(startHandshake): start client handshake in client mode.
	(getDelegatedTask): implement.
	(unwrap, wrap): send alert if we catch an AlertException during
	handshaking.
	* gnu/javax/net/ssl/provider/SSLServerSocketFactoryImpl.java: new
	file.
	* gnu/javax/net/ssl/provider/SSLServerSocketImpl.java: new file.
	* gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.java: new file.
	* gnu/javax/net/ssl/provider/SSLSocketImpl.java: new file.
	* gnu/javax/net/ssl/provider/X509TrustManagerFactory.java
	(sep, JSSE_CERTS, CA_CERTS, engineInit): use AccessController, not
	Util.
	(checkTrusted): don't require revocation checking.
	* java/util/Collections.java (CheckedMap.entrySet): casting hack.
	* java/util/concurrent/CopyOnWriteArrayList.java: new file.

2006-07-09  Casey Marshall  <csm@gnu.org>

	* gnu/java/io/ByteBufferOutputStream.java (write): new method.
	(buffer): use flip() and slice() to get the buffer.
	(toString): new method.
	* gnu/java/security/Engine.java: merge mwringe's case-insensitive
	algorithm name patch.
	* gnu/javax/crypto/jce/GnuCrypto.java (<init>): qualify
	PrivilegedAction.
	* gnu/javax/crypto/key/dh/GnuDHPrivateKey.java (toString): new
	method.
	* gnu/javax/crypto/key/dh/GnuDHPublicKey.java (toString): new
	method.
	* java/security/Security.java: qualify generic types.

2006-07-09  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/AbstractSessionContext.java (newInstance):
	return `AbstractSessionContext.'
	(getSession): check if the session is null.
	* gnu/javax/net/ssl/Session.java (packetBufferSize): removed.
	(<init>): initialize `applicationBufferSize.'
	(getPacketBufferSize): return application buffer size, plus 2048.
	* gnu/javax/net/ssl/provider/AbstractHandshake.java (PAD1, PAD2):
	new constants.
	(handleInput): implement; call `implHandleOutput,' and hash
	messages as they are consumed.
	(implHandleInput): new abstract method.
	(handleOutput): fix hashing of produced bytes.
	(status, handleV2Hello): new abstract methods.
	(pollHandshake): don't hash the input here; add logging.
	(hasMessage): add logging.
	(reallocateBuffer): shift the existing contents down in the
	buffer, if it is, on the whole, large enough for new input.
	(genV2CertificateVerify): renamed...
	(genV3CertificateVerify): to this, which is correct.
	(generateKeys): fix PRF setup; generate an IV for 1.1; add
	logging.
	(generateFinished): add logging; update with correct padding.
	(generateMasterSecret): add logging; fix PRF initialization.
	* gnu/javax/net/ssl/provider/CipherSuite.java (mac): use mac
	algorithm name "HMac-SHA1".
	* gnu/javax/net/ssl/provider/ClientHello.java: make extendable.
	* gnu/javax/net/ssl/provider/ClientHelloBuilder.java: new file.
	* gnu/javax/net/ssl/provider/ClientHelloV2.java (<init>): order
	the input buffer BIG_ENDIAN.
	(cipherSpecs): made public; use qualified return type.
	* gnu/javax/net/ssl/provider/Debug.java: new file.
	* gnu/javax/net/ssl/provider/Extension.java (<init>): order the
	input buffer BIG_ENDIAN.
	(length): return the total length, including the length field.
	(toString): add prefix to value.
	* gnu/javax/net/ssl/provider/ExtensionList.java (<init>): order
	the input buffer BIG_ENDIAN.
	* gnu/javax/net/ssl/provider/InputSecurityParameters.java
	(logger): new constant.
	(suite): new field.
	(<init>): also take a `CipherSuite' argument.
	(decrypt): use `update,' not `doFinal' for decryption; add debug
	logging; fix mac computation; fix copying fragment to output.
	(cipherSuite): return `suite' field.
	* gnu/javax/net/ssl/provider/Jessie.java (<init>): add
	"TLSv1.1-RSA" signature.
	* gnu/javax/net/ssl/provider/OutputSecurityParameters.java
	(logger): new constant.
	(suite): new field.
	(<init>): take additional `CipherSuite' argument.
	(encrypt): add debug logging; fix mac computation; various little
	fixes.
	(suite): new method.
	* gnu/javax/net/ssl/provider/ProtocolVersion.java (forName): also
	recognize "TLSv1.1".
	* gnu/javax/net/ssl/provider/Random.java (copy): fix copying the
	internal buffer.
	* gnu/javax/net/ssl/provider/Record.java (<init>): order the input
	buffer BIG_ENDIAN.
	(toString): include length in output.
	* gnu/javax/net/ssl/provider/SSLContextImpl.java (serverContext,
	clientContext): declare both as `AbstractSessionContext.'
	* gnu/javax/net/ssl/provider/SSLEngineImpl.java (logger): make an
	instance of `SystemLogger.'
	(mode): declare as a Mode.
	(Mode): new enum.
	(<init>): add logging; initialize `enabledProtocols' and
	`enabledSuites.'
	(beginHandshake): debug logging; handle Mode enum.
	(closeOutbound): prepare `lastAlert' to carry the close alert.
	(isInboundDone, isOutboundDone): implement.
	(setUseClientMode): use Mode enum.
	(unwrap): fix V2 hello handling; optimize calls when the cipher
	suite is TLS_NULL_WITH_NULL_NULL; add debug logging; handle closue
	alerts properly; fix record length reporting.
	(wrap): set `outClosed' if we are sending a closure alert here;
	delay changing output security params until we emit the change
	notification; optimize initial handshake; fix input buffer
	consumption; handle end of handshake.
	* gnu/javax/net/ssl/provider/SSLRSASignatureImpl.java: new file.
	* gnu/javax/net/ssl/provider/ServerDHParams.java (buffer): set
	position to 0 in the buffer we return.
	* gnu/javax/net/ssl/provider/ServerHandshake.java (version,
	suite): removed.
	(chooseSuite): make non-static; only choose a cipher suite that we
	have a compatible certificate for.
	(chooseCompression): use properties to enable/disable zlib.
	(doHash): say no if we are handling a V2 hello.
	(handleInput): rename to...
	(implHandleInput): this; only handle a single handshake message in
	this method (handleInput from the superclass will call us
	repeatedly to drain the input buffer); various other fixes.
	(implHandleOutput): debug logging; temporarily disable packing
	more than one handshake per record; various little fixes.
	(status, handleV2Hello): new methods.
	(genDiffieHellman): use static parameters from the DiffieHellman
	class.
	(signParams): use correct signature algorithm.
	* gnu/javax/net/ssl/provider/ServerHello.java (totalLength):
	removed.
	(disableExtensions): new field.
	(length): don't query extensions if `disableExtensions' is true.
	* gnu/javax/net/ssl/provider/ServerHelloBuilder.java
	(setDisableExtensions): new method.
	* gnu/javax/net/ssl/provider/ServerNameList.java: various parsing
	fixes.
	* gnu/javax/net/ssl/provider/SessionImpl.java (<init>): new
	constructor.
	(setApplicationBufferSize): new method.
	(setPacketBufferSize): new method.
	* gnu/javax/net/ssl/provider/SignatureAlgorithm.java
	(getAlgorithm): new method.
	* gnu/javax/net/ssl/provider/Util.java: make public; mark
	security-sensitive methods deprecated.
	* gnu/javax/net/ssl/provider/X509KeyManagerFactory.java
	(chooseAliases): handle DSA; handle unrecognized signature
	algorithms.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* jessie-tests/testCertificate.java: update for Builder
	interface and API changes.
	* jesasie-tests/testServerHello.java: likewise.
	* jessie-tests/testServerKeyExchange.java: likewise.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* gnu/javax/crypto/key/GnuPBEKey.java: new file.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/AbstractHandshake.java: implement
	numerous "common" methods in server and client handshakes.
	* gnu/javax/net/ssl/provider/AlertException.java: made public; add
	cause constructors.
	* gnu/javax/net/ssl/provider/Builder.java: new file.
	* gnu/javax/net/ssl/provider/Certificate.java: make subclassable.
	* gnu/javax/net/ssl/provider/CertificateBuilder.java: new file.
	* gnu/javax/net/ssl/provider/CertificateRequest.java: make
	subclassable.
	* gnu/javax/net/ssl/provider/CertificateRequestBuilder.java: new
	file.
	* gnu/javax/net/ssl/provider/CipherSuite.java: remove dependence
	on protocol version.
	* gnu/javax/net/ssl/provider/ClientHello.java (hasExtensions): new
	method.
	* gnu/javax/net/ssl/provider/ClientHelloV2.java (cipherSpecs):
	genericize collections.
	* gnu/javax/net/ssl/provider/ClientKeyExchange.java: make version
	argument explicit, instead of implied by the cipher suite.
	* gnu/javax/net/ssl/provider/Constructed.java: expand JavaDocs.
	* gnu/javax/net/ssl/provider/Finished.java: accept TLS 1.1 version
	numbers, too.
	* gnu/javax/net/ssl/provider/Handshake.java: make version
	explicit, instead of implied by the cipher suite.
	* gnu/javax/net/ssl/provider/InputSecurityParameters.java: made
	public.
	(suite): removed.
	(session): new field (replaces/encapsulates `suite').
	(<init>): made public; take a SessionImpl, not a CipherSuite.
	(decrypt, decrypt, decrypt): add support for growable buffers AND
	a fixed-size array of buffers (we use the former internally; the
	latter is used to implement the scatter/gather model of
	SSLEngine.
	* gnu/javax/net/ssl/provider/Jessie.java: update algorithms.
	* gnu/javax/net/ssl/provider/MacAlgorithm.java: just specify
	NULL/MD5/SHA, not version-specific algorithms.
	* gnu/javax/net/ssl/provider/OutputSecurityParameters.java:
	replace suite with session; support scatter/gather operation.
	* gnu/javax/net/ssl/provider/ProtocolVersion.java: implement
	Comparable<ProtocolVersion>.
	* gnu/javax/net/ssl/provider/Random.java: implement Builder.
	(buffer): new method.
	* gnu/javax/net/ssl/provider/SSLContextImpl.java: new file.
	* gnu/javax/net/ssl/provider/SSLEngineImpl.java: numerous changes;
	largely implemented now.
	* gnu/javax/net/ssl/provider/SSLv3HMacMD5Impl.java: new file.
	* gnu/javax/net/ssl/provider/SSLv3HMacSHAImpl.java: new file.
	* gnu/javax/net/ssl/provider/ServerDHParams.java: implement
	Builder.
	(<init>): new constructor that takes known parameters.
	(buffer): new method.
	* gnu/javax/net/ssl/provider/ServerHandshake.java: numerous
	changes; largely implemented now.
	* gnu/javax/net/ssl/provider/ServerHello.java: make subclassable.
	* gnu/javax/net/ssl/provider/ServerHelloBuilder.java: new file.
	* gnu/javax/net/ssl/provider/ServerKeyExchange.java: make
	subclassable.
	* gnu/javax/net/ssl/provider/ServerKeyExchangeBuilder.java: new
	file.
	* gnu/javax/net/ssl/provider/SessionImpl.java: expanded.
	* gnu/javax/net/ssl/provider/Signature.java: implement Builder.
	(<init>): new method, that takes a pre-computed signature.
	(buffer): new method.
	* gnu/javax/net/ssl/provider/SimpleSessionContext.java: new file.
	* gnu/javax/net/ssl/provider/X509KeyManagerFactory.java:
	genericize Collections usage.
	(Manager): extend X509ExtendedKeyManager; genericize fields.
	(Manager.chooseEngineClientAlias): new method.
	(Manager.chooseEngineServerAlias): new method.
	* gnu/javax/net/ssl/provider/X509TrustManagerFactory.java (sep):
	new constant; use it instead of constantly calling getProperty.
	(init): genericize lists.
	(Manager.trusted): removed.
	(Manager.anchors): new field (replacement for above).
	(<init>): handle changes to fields.
	(getAcceptedIssuers): use `anchors.toArray().'
	(checkTrusted): use a PKIX CertPathVerifier.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/AbstractSessionContext.java: renamed from
	`SessionStore.' Implement SessionContext.
	* gnu/javax/net/ssl/PrivateCredentials.java: genericize
	collections.
	* gnu/javax/net/ssl/Session.java (packetBufferSize): new field.
	(values): genericize.
	(random): make transient.
	(truncatedMac, context): new fields.
	(getLocalPrincipal, getPacketBufferSize, getPeerPrincipal)
	(getSessionContext): implement.
	(isTruncatedMac): new method.
	(repair, privateData, setPrivateData): new abstract methods.
	(PrivateData.serialVersionUID): new constant.
	* gnu/javax/net/ssl/SessionStore.java: renamed to
	`AbstractSessionContext.'

2006-06-28  Casey Marshall  <csm@gnu.org>

	* gnu/java/security/Requires.java: new annotation.
	* gnu/java/security/action/GetSecurityPropertyAction.java:
	implement PrivilegedAction<String>.
	(run): return String.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* gnu/java/io/ByteBufferOutputStream.java: new file.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* gnu/classpath/debug/SystemLogger.java: extend Logger.
	(SYSTEM): declare as instance of SystemLogger; set it to such an
	instance.
	(<clinit>): removed debug lines.
	(<init>): new method.
	(logv): new method.

2006-06-28  Casey Marshall  <csm@gnu.org>

	* java/security/Signature.java (update): new method.
	* java/security/SignatureSpi.java (engineUpdate): new method.

2006-06-10  Casey Marshall  <csm@gnu.org>

	* jessie-tests/testClientHello.java: update for extensions
	changes.
	* jessie-tests/testExtensionList.java: likewise.
	* jessie-tests/testServerHello.java: likewise.

2006-06-10  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/ServerHello.java (extensions): return
	an ExtensionList.
	(setExtensionsLength): set the length in the buffer.
	(toString): print out individual extensions.
	* gnu/javax/net/ssl/provider/Extension.java (valueBytes): new
	method.
	(valueBuffer): new method.
	(value): return an Extenion.Value.
	(toString): print out extension value.
	(Value): new abstract inner class.
	* gnu/javax/net/ssl/provider/ClientHello.java (extensions): return
	an ExtensionList.
	(setExtensionListLength): set the length in the buffer.
	(toString): print out extensions.
	* gnu/javax/net/ssl/provider/ServerHandshake.java
	(chooseSuite, chooseCompression): use generics and foreach loops.
	* gnu/javax/net/ssl/provider/ExtensionList.java: new class.
	* gnu/javax/net/ssl/provider/MaxFragmentLength.java: new class.
	* gnu/javax/net/ssl/provider/CertificateURL.java: new class.
	* gnu/javax/net/ssl/provider/UnresolvedExtensionValue.java: new
	class. 
	* gnu/javax/net/ssl/provider/TruncatedHMAC.java: new class.
	* gnu/javax/net/ssl/provider/ServerNameList.java: new class.
	* gnu/javax/net/ssl/provider/TrustedAuthorities.java: new class.
	* gnu/javax/net/ssl/provider/CertificateStatusType.java: new
	class. 
	* gnu/javax/net/ssl/provider/CertificateStatusRequest.java: new
	class.

2006-06-05  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/Extension.java: add Javadoc.
	(length): return the length of the extension value.
	(setLength, setType, setValue, setValue): new methods.
	* gnu/javax/net/ssl/provider/ExtensionList.java: new file.
	* jessie-tests/run-tests.sh: add testExtensionList.
	* jessie-tests/testExtensionList.java: new file.

2006-06-05  Casey Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/CipherSuiteList.java: implement
	Iterable<CipherSuite>.
	(iterator): new method.
	* gnu/javax/net/ssl/provider/CompressionMethodList.java: implement
	Iterable<CompressionMethod>.
	(iterator): new method.
	* gnu/javax/net/ssl/provider/X500PrincipalList.java: implement
	Iterable<X500Principal>.
	(iterator): new method.

2006-06-05  C. Scott Marshall  <csm@gnu.org>

	* java/security/MessageDigest.java (update): new method.
	* java/security/MessageDigestSpi.java (engineUpdate): new method.

2006-06-03  C. Scott Marshall  <csm@gnu.org>

	* gnu/javax/net/ssl/provider/ServerHelloDone.java: made public.
	* jessie-tests/run-tests.sh: add `testServerHelloDone.'
	* jessie-tests/testServerHelloDone.java: new test.