How to properly use Bouncy Castle's OAEPEncoding for RSA (Lightweight API)
I've been playing around with Bouncy Castle's implementation of RSA (Lightweight API) and got the basics figured out. Looking at their [spec](http://www.bouncycastle.org/specifications.html) for JCE provider implementation I noticed that different padding schemes can be used with RSA. From what I understand, by default null padding is used. So I began exploring OAEP padding, particularly `OAEPWithSHA512AndMGF1Padding`. Searching with Google wasn't very helpful so I began digging through BC's source code and found [`org.bouncycastle.jce.provider.JCERSACipher`](http://grepcode.com/file/repo1.maven.org/maven2/org.bouncycastle/bcprov-jdk16/1.44/org/bouncycastle/jce/provider/JCERSACipher.java) class. But looking at `initFromSpec` quickly gave me a headache... Specifically, I don't understand what the last two parameters that can be passed to the `OAEPEncoding` constructor are. According to BC's API the [`OAEPEncoding`](http://www.bouncycastle.org/docs/docs1.6/index.html) constructor that allows four parameters accepts `Digest mgf1Hash` and `byte[] encodingParams` as the last two arguments. This stumped me because I have no idea how to get a hold of an instance of the mask generation algorithm nor do I understand the purpose behind the byte array referred to as `encodingParams`. What should be the values of `arg3` and `arg4` in the code below?

    RSABlindedEngine rsa = new RSABlindedEngine();
    SHA512Diges sha512 = new SHA512Digest();
    Digest arg3 = ???;
    byte[] arg4 = ???;
    AsymmetricBlockCipher cipher = new OAEPEncoding(rsa, sha512, arg3, arg4);
How to properly use Bouncy Castle's OAEPEncoding for RSA (Lightweight API)
===

I've been playing around with Bouncy Castle's implementation of RSA (Lightweight API) and got the basics figured out. Looking at their [spec](http://www.bouncycastle.org/specifications.html) for JCE provider implementation I noticed that different padding schemes can be used with RSA. From what I understand, by default null padding is used. So I began exploring OAEP padding, particularly `OAEPWithSHA512AndMGF1Padding`. Searching with Google wasn't very helpful so I began digging through BC's source code and found [`org.bouncycastle.jce.provider.JCERSACipher`](http://grepcode.com/file/repo1.maven.org/maven2/org.bouncycastle/bcprov-jdk16/1.44/org/bouncycastle/jce/provider/JCERSACipher.java) class. But looking at `initFromSpec` quickly gave me a headache... Specifically, I don't understand what the last two parameters that can be passed to the `OAEPEncoding` constructor are. According to BC's API the [`OAEPEncoding`](http://www.bouncycastle.org/docs/docs1.6/index.html) constructor that allows four parameters accepts `Digest mgf1Hash` and `byte[] encodingParams` as the last two arguments. This stumped me because I have no idea how to get a hold of an instance of the mask generation algorithm nor do I understand the purpose behind the byte array referred to as `encodingParams`. What should be the values of `arg3` and `arg4` in the code below?

    RSABlindedEngine rsa = new RSABlindedEngine();
    SHA512Diges sha512 = new SHA512Digest();
    Digest arg3 = ???;
    byte[] arg4 = ???;
    AsymmetricBlockCipher cipher = new OAEPEncoding(rsa, sha512, arg3, arg4);