RFR JDK-8006182

Vincent Ryan vincent.x.ryan at oracle.com
Fri Feb 15 15:56:50 UTC 2013


Hello Mark,

Your changes look fine to me. Just a few minor comments:

- PKCS10.java l.296:
  the commented line seems better than the 2 proceeding lines

- keytool/Main.java l.358, SignatureFile.java l.35:
  superfluous line



On 14 Feb 2013, at 13:24, Mark Sheppard wrote:

> Hi,
>   as part of a refactoring of the jdk codebase to use the base64 capabilities of java.util.Base64,  the following modifications,
> as per the webrev,
> 
> http://cr.openjdk.java.net/~chegar/8006182/webrev.00/
> 
> have been made to complete task JDK-8006182.
> 
> Could you oblige and review these changes, please?
> 
> Description:
> jdk8 has java.util.Base64 to define a standard API for base64 encoding/decoding. It would be good to investigate whether this API could be used in the security components, providers and regression tests.
> 
> In the main this work involved replacing the sun.misc.BASE64Encoder and sun.misc.BASE64Decoder with the
> corresponding Mime Base64 Encoder/Decoder  (as per rfc2045) from the java.util.Base64 class.
> This is a like for like replacement.
> As such, sun.misc.BASE64Encoder maps to the encoder returned by java.util.Base64.getMimeEncoder()
> sun.misc.BASE64Decoder maps to the decoder returned by java.util.Base64.getMimeDecoder()
> 
> However a couple of items worth noting:
> 
> In the jarsigner  (Main.java) the standard Base64 encoder (rfc 4648), java.util.Base64.getEncoder(), has been used to replace the JarBASE64Encoder, which was a package private extension of BASE64Encoder, which avoids writing newline to the encoded data.
> 
> In the keytool (Main.java), methods such as dumpCert, printCert. printCRL, and so on, write a Base64 encoding to an OutputStream, typically std out.
> This is achieved in the BASE64Encoder, by passing the OutputStream to methods such as encodeBuffer().
> 
> A couple of options exist to do this under the new Base64 utilities, which include:
> 
> * using a Mime Encoder encodeToString() and  output to the stream via println()
> 
> * use the wrap capabilities of the Base64.Encoder:
>    - define a package private class, which extends FilterOutputStream (e.g. NoCloseWrapperOutputStream) and, overrides close() to do nothing
>    - inject the OutputStream,  passed to the keytool method, into the NoCloseWrapperOutputStreamwapper,
>    - wrap() the NoCloseWrapperOutputStreamwrapper in the Mime Encoder, which will in turn return an encapsulating OutputStream;
>    - write the data buffer to be encoded to the encoder's OutputStream;
>    - close the encoder's OutputStream, which completes the base64 encoding;
>    - append a newline to the initial OutputStream.
> 
> pragmatics and the simplest thing that works, went for the first option.
> 
> regards
> Mark
> 
> 
> 
> 
> 
> 




More information about the security-dev mailing list