summary refs log tree commit diff
path: root/crypto
diff options
context:
space:
mode:
authorOren Novotny <oren@novotny.org>2014-08-27 11:03:47 -0400
committerOren Novotny <oren@novotny.org>2014-08-27 11:03:47 -0400
commitfd055e94dd68802ad5c317238a15ac787720fbf1 (patch)
tree78b170b78f85510739a60dfb0017a00b2196b81d /crypto
parentFix remaining compile errors (diff)
downloadBouncyCastle.NET-ed25519-fd055e94dd68802ad5c317238a15ac787720fbf1.tar.xz
Add unit test files
Diffstat (limited to 'crypto')
-rw-r--r--crypto/doc/crypto.xml3493
-rw-r--r--crypto/test/src/asn1/test/AllTests.cs2
-rw-r--r--crypto/test/src/cms/test/AllTests.cs2
-rw-r--r--crypto/test/src/crypto/io/test/AllTests.cs2
-rw-r--r--crypto/test/src/crypto/test/AllTests.cs7
-rw-r--r--crypto/test/src/math/ec/test/AllTests.cs2
-rw-r--r--crypto/test/src/math/test/AllTests.cs2
-rw-r--r--crypto/test/src/ocsp/test/AllTests.cs2
-rw-r--r--crypto/test/src/openpgp/examples/test/AllTests.cs2
-rw-r--r--crypto/test/src/openssl/test/AllTests.cs2
-rw-r--r--crypto/test/src/security/test/SecureRandomTest.cs2
-rw-r--r--crypto/test/src/tsp/test/AllTests.cs2
-rw-r--r--crypto/test/src/util/io/pem/test/AllTests.cs2
13 files changed, 2999 insertions, 523 deletions
diff --git a/crypto/doc/crypto.xml b/crypto/doc/crypto.xml
index f1cf2f391..03a699341 100644
--- a/crypto/doc/crypto.xml
+++ b/crypto/doc/crypto.xml
@@ -1045,6 +1045,11 @@
               unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
             </pre>
         </member>
+        <member name="F:Org.BouncyCastle.Asn1.Cms.CmsObjectIdentifiers.id_ri">
+            The other Revocation Info arc
+            id-ri OBJECT IDENTIFIER ::= { iso(1) identified-organization(3)
+                                              dod(6) internet(1) security(5) mechanisms(5) pkix(7) ri(16) }
+        </member>
         <member name="T:Org.BouncyCastle.Asn1.Cms.CompressedData">
             RFC 3274 - CMS Compressed Data.
             <pre>
@@ -1439,6 +1444,29 @@
                oriValue ANY DEFINED BY oriType }
             </pre>
         </member>
+        <member name="M:Org.BouncyCastle.Asn1.Cms.OtherRevocationInfoFormat.GetInstance(Org.BouncyCastle.Asn1.Asn1TaggedObject,System.Boolean)">
+             return a OtherRevocationInfoFormat object from a tagged object.
+            
+             @param obj the tagged object holding the object we want.
+             @param explicit true if the object is meant to be explicitly
+                          tagged false otherwise.
+             @exception IllegalArgumentException if the object held by the
+                      tagged object cannot be converted.
+        </member>
+        <member name="M:Org.BouncyCastle.Asn1.Cms.OtherRevocationInfoFormat.GetInstance(System.Object)">
+             return a OtherRevocationInfoFormat object from the given object.
+            
+             @param obj the object we want converted.
+             @exception IllegalArgumentException if the object cannot be converted.
+        </member>
+        <member name="M:Org.BouncyCastle.Asn1.Cms.OtherRevocationInfoFormat.ToAsn1Object">
+            Produce an object suitable for an ASN1OutputStream.
+            <pre>
+            OtherRevocationInfoFormat ::= SEQUENCE {
+                 otherRevInfoFormat OBJECT IDENTIFIER,
+                 otherRevInfo ANY DEFINED BY otherRevInfoFormat }
+            </pre>
+        </member>
         <member name="M:Org.BouncyCastle.Asn1.Cms.PasswordRecipientInfo.GetInstance(Org.BouncyCastle.Asn1.Asn1TaggedObject,System.Boolean)">
              return a PasswordRecipientInfo object from a tagged object.
             
@@ -1544,6 +1572,14 @@
              SubjectKeyIdentifier ::= OCTET STRING
              </pre>
         </member>
+        <member name="M:Org.BouncyCastle.Asn1.Cms.ScvpReqRes.ToAsn1Object">
+            <pre>
+               ScvpReqRes ::= SEQUENCE {
+               request  [0] EXPLICIT ContentInfo OPTIONAL,
+               response     ContentInfo }
+            </pre>
+            @return  the ASN.1 primitive representation.
+        </member>
         <member name="T:Org.BouncyCastle.Asn1.Cms.SignedData">
             a signed data object.
         </member>
@@ -2304,13 +2340,6 @@
         <member name="M:Org.BouncyCastle.Asn1.DerUniversalString.#ctor(System.Byte[])">
             basic constructor - byte encoded string.
         </member>
-        <member name="T:Org.BouncyCastle.Asn1.DerUnknownTag">
-            We insert one of these when we find a tag we don't recognise.
-        </member>
-        <member name="M:Org.BouncyCastle.Asn1.DerUnknownTag.#ctor(System.Int32,System.Byte[])">
-            @param tag the tag value.
-            @param data the contents octets.
-        </member>
         <member name="T:Org.BouncyCastle.Asn1.DerUtcTime">
             UTC time object.
         </member>
@@ -3285,7 +3314,7 @@
              namingAuthorityUrl, or by a combination of them. For example, the text string
              can contain the name of the authority, the country and the name of the title
              register. The URL-option refers to a web page which contains lists with
-             �officially� registered professions (text and possibly OID) as well as
+             officially registered professions (text and possibly OID) as well as
              further information on these professions. Object identifiers for the
              component namingAuthorityId are grouped under the OID-branch
              id-isis-at-namingAuthorities and must be applied for.</li>
@@ -3910,7 +3939,7 @@
               </pre>
         </member>
         <member name="T:Org.BouncyCastle.Asn1.Nist.NistNamedCurves">
-            Utility class for fetching curves using their NIST names as published in FIPS-PUB 186-2
+            Utility class for fetching curves using their NIST names as published in FIPS-PUB 186-3
         </member>
         <member name="M:Org.BouncyCastle.Asn1.Nist.NistNamedCurves.GetByOid(Org.BouncyCastle.Asn1.DerObjectIdentifier)">
              return the X9ECParameters object for the named curve represented by
@@ -4797,6 +4826,17 @@
         <member name="P:Org.BouncyCastle.Asn1.X509.CertificatePair.Reverse">
             @return Returns the reverse.
         </member>
+        <member name="M:Org.BouncyCastle.Asn1.X509.CertificatePolicies.#ctor(Org.BouncyCastle.Asn1.X509.PolicyInformation)">
+            Construct a CertificatePolicies object containing one PolicyInformation.
+            
+            @param name the name to be contained.
+        </member>
+        <member name="M:Org.BouncyCastle.Asn1.X509.CertificatePolicies.ToAsn1Object">
+            Produce an object suitable for an ASN1OutputStream.
+            <pre>
+            CertificatePolicies ::= SEQUENCE SIZE {1..MAX} OF PolicyInformation
+            </pre>
+        </member>
         <member name="T:Org.BouncyCastle.Asn1.X509.CertPolicyID">
              CertPolicyId, used in the CertificatePolicies and PolicyMappings
              X509V3 Extensions.
@@ -5283,21 +5323,20 @@
         <member name="M:Org.BouncyCastle.Asn1.X509.NoticeReference.#ctor(System.String,System.Collections.IList)">
              Creates a new <code>NoticeReference</code> instance.
             
-             @param orgName a <code>string</code> value
-             @param numbers a <code>ArrayList</code> value
+             @param organization a <code>String</code> value
+             @param numbers a <code>Vector</code> value
         </member>
-        <member name="M:Org.BouncyCastle.Asn1.X509.NoticeReference.#ctor(System.String,Org.BouncyCastle.Asn1.Asn1Sequence)">
+        <member name="M:Org.BouncyCastle.Asn1.X509.NoticeReference.#ctor(System.String,Org.BouncyCastle.Asn1.Asn1EncodableVector)">
              Creates a new <code>NoticeReference</code> instance.
             
-             @param orgName a <code>string</code> value
-             @param numbers an <code>Asn1Sequence</code> value
+             @param organization a <code>String</code> value
+             @param noticeNumbers an <code>ASN1EncodableVector</code> value
         </member>
-        <member name="M:Org.BouncyCastle.Asn1.X509.NoticeReference.#ctor(System.Int32,System.String,Org.BouncyCastle.Asn1.Asn1Sequence)">
+        <member name="M:Org.BouncyCastle.Asn1.X509.NoticeReference.#ctor(Org.BouncyCastle.Asn1.X509.DisplayText,Org.BouncyCastle.Asn1.Asn1EncodableVector)">
              Creates a new <code>NoticeReference</code> instance.
             
-             @param displayTextType an <code>int</code> value
-             @param orgName a <code>string</code> value
-             @param numbers an <code>Asn1Sequence</code> value
+             @param organization displayText
+             @param noticeNumbers an <code>ASN1EncodableVector</code> value
         </member>
         <member name="M:Org.BouncyCastle.Asn1.X509.NoticeReference.#ctor(Org.BouncyCastle.Asn1.Asn1Sequence)">
              Creates a new <code>NoticeReference</code> instance.
@@ -6784,6 +6823,34 @@
             lightweight Java environment don't support classes like
             StringTokenizer.
         </member>
+        <member name="T:Org.BouncyCastle.Asn1.X9.ECNamedCurveTable">
+            A general class that reads all X9.62 style EC curve tables.
+        </member>
+        <member name="M:Org.BouncyCastle.Asn1.X9.ECNamedCurveTable.GetByName(System.String)">
+             return a X9ECParameters object representing the passed in named
+             curve. The routine returns null if the curve is not present.
+            
+             @param name the name of the curve requested
+             @return an X9ECParameters object or null if the curve is not available.
+        </member>
+        <member name="M:Org.BouncyCastle.Asn1.X9.ECNamedCurveTable.GetOid(System.String)">
+             return the object identifier signified by the passed in name. Null
+             if there is no object identifier associated with name.
+            
+             @return the object identifier associated with name, if present.
+        </member>
+        <member name="M:Org.BouncyCastle.Asn1.X9.ECNamedCurveTable.GetByOid(Org.BouncyCastle.Asn1.DerObjectIdentifier)">
+             return a X9ECParameters object representing the passed in named
+             curve.
+            
+             @param oid the object id of the curve requested
+             @return an X9ECParameters object or null if the curve is not available.
+        </member>
+        <member name="P:Org.BouncyCastle.Asn1.X9.ECNamedCurveTable.Names">
+             return an enumeration of the names of the available curves.
+            
+             @return an enumeration of the names of the available curves.
+        </member>
         <member name="T:Org.BouncyCastle.Asn1.X9.KeySpecificInfo">
             ASN.1 def for Diffie-Hellman key exchange KeySpecificInfo structure. See
             RFC 2631, or X9.42, for further details.
@@ -6914,6 +6981,15 @@
             <code>F<sub>2</sub></code>.
             @param primeP The prime <code>p</code> defining the prime field.
         </member>
+        <member name="M:Org.BouncyCastle.Asn1.X9.X9FieldID.#ctor(System.Int32,System.Int32)">
+            Constructor for elliptic curves over binary fields
+            <code>F<sub>2<sup>m</sup></sub></code>.
+            @param m  The exponent <code>m</code> of
+            <code>F<sub>2<sup>m</sup></sub></code>.
+            @param k1 The integer <code>k1</code> where <code>x<sup>m</sup> +
+            x<sup>k1</sup> + 1</code>
+            represents the reduction polynomial <code>f(z)</code>.
+        </member>
         <member name="M:Org.BouncyCastle.Asn1.X9.X9FieldID.#ctor(System.Int32,System.Int32,System.Int32,System.Int32)">
             Constructor for elliptic curves over binary fields
             <code>F<sub>2<sup>m</sup></sub></code>.
@@ -6938,9 +7014,6 @@
              }
             </pre>
         </member>
-        <member name="F:Org.BouncyCastle.Asn1.X9.X9ObjectIdentifiers.AnsiX942">
-            X9.42
-        </member>
         <member name="F:Org.BouncyCastle.Asn1.X9.X9ObjectIdentifiers.IdDsaWithSha1">
             id-dsa-with-sha1 OBJECT IDENTIFIER ::=  { iso(1) member-body(2)
                   us(840) x9-57 (10040) x9cm(4) 3 }
@@ -6948,6 +7021,9 @@
         <member name="F:Org.BouncyCastle.Asn1.X9.X9ObjectIdentifiers.X9x63Scheme">
             X9.63
         </member>
+        <member name="F:Org.BouncyCastle.Asn1.X9.X9ObjectIdentifiers.ansi_x9_42">
+            X9.42
+        </member>
         <member name="T:Org.BouncyCastle.Bcpg.ArmoredInputStream">
             reader for Base64 armored objects - read the headers and then start returning
             bytes when the data is reached. An IOException is thrown if the CRC check
@@ -7007,7 +7083,7 @@
             @param hashAlgorithm
         </member>
         <member name="M:Org.BouncyCastle.Bcpg.ArmoredOutputStream.Dispose(System.Boolean)">
-            <b>Note</b>: Dispose does nor Dispose the underlying stream. So it is possible to write
+            <b>Note</b>: close does nor close the underlying stream. So it is possible to write
             multiple objects using armoring to a single stream.
         </member>
         <member name="T:Org.BouncyCastle.Bcpg.Attr.ImageAttrib">
@@ -8465,6 +8541,21 @@
             An <code>ISet</code> of <code>DerObjectIdentifier</code> objects.
             </summary>
         </member>
+        <member name="M:Org.BouncyCastle.Cms.OriginatorInformation.GetCertificates">
+             Return the certificates stored in the underlying OriginatorInfo object.
+            
+             @return a Store of X509CertificateHolder objects.
+        </member>
+        <member name="M:Org.BouncyCastle.Cms.OriginatorInformation.GetCrls">
+             Return the CRLs stored in the underlying OriginatorInfo object.
+            
+             @return a Store of X509CRLHolder objects.
+        </member>
+        <member name="M:Org.BouncyCastle.Cms.OriginatorInformation.ToAsn1Structure">
+             Return the underlying ASN.1 object defining this SignerInformation object.
+            
+             @return a OriginatorInfo.
+        </member>
         <member name="T:Org.BouncyCastle.Cms.PasswordRecipientInformation">
             the RecipientInfo class for a recipient who has been sent a message
             encrypted using a password.
@@ -8640,6 +8731,9 @@
         <member name="M:Org.BouncyCastle.Crypto.IBasicAgreement.Init(Org.BouncyCastle.Crypto.ICipherParameters)">
             initialise the agreement engine.
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.IBasicAgreement.GetFieldSize">
+            return the field size for the agreement algorithm in bytes.
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.IBasicAgreement.CalculateAgreement(Org.BouncyCastle.Crypto.ICipherParameters)">
             given a public key from a given party calculate the next
             message in the agreement sequence.
@@ -8648,6 +8742,9 @@
             given a short term public key from a given party calculate the next
             message in the agreement sequence.
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Agreement.DHStandardGroups">
+            <summary>Standard Diffie-Hellman groups from various IETF specifications.</summary>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Agreement.ECDHBasicAgreement">
              P1363 7.2.1 ECSVDP-DH
             
@@ -9063,6 +9160,26 @@
             
              @return the algorithm name
         </member>
+        <member name="M:Org.BouncyCastle.Utilities.IMemoable.Copy">
+            <summary>
+            Produce a copy of this object with its configuration and in its current state.
+            </summary>
+            <remarks>
+            The returned object may be used simply to store the state, or may be used as a similar object
+            starting from the copied state.
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Utilities.IMemoable.Reset(Org.BouncyCastle.Utilities.IMemoable)">
+            <summary>
+            Restore a copied object state into this object.
+            </summary>
+            <remarks>
+            Implementations of this method <em>should</em> try to avoid or minimise memory allocation to perform the reset.
+            </remarks>
+            <param name="other">an object originally {@link #copy() copied} from an object of the same type as this instance.</param>
+            <exception cref="T:System.InvalidCastException">if the provided object is not of the correct type.</exception>
+            <exception cref="T:Org.BouncyCastle.Utilities.MemoableResetException">if the <b>other</b> parameter is in some other way invalid.</exception>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Digests.Gost3411Digest">
             implementation of GOST R 34.11-94
         </member>
@@ -9218,7 +9335,7 @@
              implementation of SHA-1 as outlined in "Handbook of Applied Cryptography", pages 346 - 349.
             
              It is interesting to ponder why the, apart from the extra IV, the other difference here from MD5
-             is the "endienness" of the word processing!
+             is the "endianness" of the word processing!
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Digests.Sha1Digest.#ctor(Org.BouncyCastle.Crypto.Digests.Sha1Digest)">
             Copy constructor.  This will copy the state of the provided
@@ -9286,6 +9403,19 @@
         <member name="M:Org.BouncyCastle.Crypto.Digests.Sha384Digest.Reset">
             reset the chaining variables
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Digests.Sha3Digest">
+            <summary>
+            Implementation of SHA-3 based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+            </summary>
+            <remarks>
+            Following the naming conventions used in the C source code to enable easy review of the implementation.
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.Sha3Digest.GetByteLength">
+             Return the size of block that the compression function is applied to in bytes.
+            
+             @return internal byte length of a block.
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Digests.Sha512Digest">
              Draft FIPS 180-2 implementation of SHA-512. <b>Note:</b> As this is
              based on a draft this implementation is subject to change.
@@ -9305,6 +9435,19 @@
         <member name="M:Org.BouncyCastle.Crypto.Digests.Sha512Digest.Reset">
             reset the chaining variables
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Digests.Sha512tDigest">
+            FIPS 180-4 implementation of SHA-512/t
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.Sha512tDigest.#ctor(System.Int32)">
+            Standard constructor
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.Sha512tDigest.#ctor(Org.BouncyCastle.Crypto.Digests.Sha512tDigest)">
+            Copy constructor.  This will copy the state of the provided
+            message digest.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.Sha512tDigest.Reset">
+            reset the chaining variables
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Digests.ShortenedDigest">
             Wrapper class that reduces the output length of a particular digest to
             only the first n bytes of the digest function.
@@ -9316,6 +9459,235 @@
              @param length length in bytes of the output of doFinal.
              @exception ArgumentException if baseDigest is null, or length is greater than baseDigest.GetDigestSize().
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Digests.SkeinDigest">
+            <summary>
+            Implementation of the Skein parameterised hash function in 256, 512 and 1024 bit block sizes,
+            based on the <see cref="T:Org.BouncyCastle.Crypto.Engines.ThreefishEngine">Threefish</see> tweakable block cipher.
+            </summary>
+            <remarks>
+            This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+            competition in October 2010.
+            <p/>
+            Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+            Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+            </remarks>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Digests.SkeinEngine"/>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinDigest.SKEIN_256">
+            <summary>
+            256 bit block size - Skein-256
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinDigest.SKEIN_512">
+            <summary>
+            512 bit block size - Skein-512
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinDigest.SKEIN_1024">
+            <summary>
+            1024 bit block size - Skein-1024
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinDigest.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Constructs a Skein digest with an internal state size and output size.
+            </summary>
+            <param name="stateSizeBits">the internal state size in bits - one of <see cref="F:Org.BouncyCastle.Crypto.Digests.SkeinDigest.SKEIN_256"/> <see cref="F:Org.BouncyCastle.Crypto.Digests.SkeinDigest.SKEIN_512"/> or
+                                  <see cref="F:Org.BouncyCastle.Crypto.Digests.SkeinDigest.SKEIN_1024"/>.</param>
+            <param name="digestSizeBits">the output/digest size to produce in bits, which must be an integral number of
+                                 bytes.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinDigest.Init(Org.BouncyCastle.Crypto.Parameters.SkeinParameters)">
+            <summary>
+            Optionally initialises the Skein digest with the provided parameters.
+            </summary>
+            See <see cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"></see> for details on the parameterisation of the Skein hash function.
+            <param name="parameters">the parameters to apply to this engine, or <code>null</code> to use no parameters.</param>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Digests.SkeinEngine">
+            <summary>
+            Implementation of the Skein family of parameterised hash functions in 256, 512 and 1024 bit block
+            sizes, based on the <see cref="T:Org.BouncyCastle.Crypto.Engines.ThreefishEngine">Threefish</see> tweakable block cipher.
+            </summary>
+            <remarks>
+            This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+            competition in October 2010.
+            <p/>
+            Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+            Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+            <p/>
+            This implementation is the basis for <see cref="T:Org.BouncyCastle.Crypto.Digests.SkeinDigest"/> and <see cref="T:Org.BouncyCastle.Crypto.Macs.SkeinMac"/>, implementing the
+            parameter based configuration system that allows Skein to be adapted to multiple applications. <br/>
+            Initialising the engine with <see cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/> allows standard and arbitrary parameters to
+            be applied during the Skein hash function.
+            <p/>
+            Implemented:
+            <ul>
+            <li>256, 512 and 1024 bit internal states.</li>
+            <li>Full 96 bit input length.</li>
+            <li>Parameters defined in the Skein specification, and arbitrary other pre and post message
+            parameters.</li>
+            <li>Arbitrary output size in 1 byte intervals.</li>
+            </ul>
+            <p/>
+            Not implemented:
+            <ul>
+            <li>Sub-byte length input (bit padding).</li>
+            <li>Tree hashing.</li>
+            </ul>
+            </remarks>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.SKEIN_256">
+            <summary>
+            256 bit block size - Skein-256
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.SKEIN_512">
+            <summary>
+            512 bit block size - Skein-512
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.SKEIN_1024">
+            <summary>
+            1024 bit block size - Skein-1024
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.PARAM_TYPE_KEY">
+            The parameter type for the Skein key.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.PARAM_TYPE_CONFIG">
+            The parameter type for the Skein configuration block.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.PARAM_TYPE_MESSAGE">
+            The parameter type for the message.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.PARAM_TYPE_OUTPUT">
+            The parameter type for the output transformation.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.INITIAL_STATES">
+            Precalculated UBI(CFG) states for common state/output combinations without key or other
+            pre-message params.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.threefish">
+            Underlying Threefish tweakable block cipher
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.outputSizeBytes">
+            Size of the digest output, in bytes
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.chain">
+            The current chaining/state value
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.initialState">
+            The initial state value
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.key">
+            The (optional) key parameter
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.preMessageParameters">
+            Parameters to apply prior to the message
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.postMessageParameters">
+            Parameters to apply after the message, but prior to output
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.ubi">
+            The current UBI operation
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.singleByte">
+            Buffer for single byte update method
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinEngine.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Constructs a Skein digest with an internal state size and output size.
+            </summary>
+            <param name="blockSizeBits">the internal state size in bits - one of <see cref="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.SKEIN_256"/> <see cref="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.SKEIN_512"/> or
+                                  <see cref="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.SKEIN_1024"/>.</param>
+            <param name="outputSizeBits">the output/digest size to produce in bits, which must be an integral number of
+                                 bytes.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinEngine.#ctor(Org.BouncyCastle.Crypto.Digests.SkeinEngine)">
+            <summary>
+            Creates a SkeinEngine as an exact copy of an existing instance.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinEngine.Init(Org.BouncyCastle.Crypto.Parameters.SkeinParameters)">
+            <summary>
+            Initialises the Skein engine with the provided parameters. See <see cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/> for
+            details on the parameterisation of the Skein hash function.
+            </summary>
+            <param name="parameters">the parameters to apply to this engine, or <code>null</code> to use no parameters.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinEngine.CreateInitialState">
+            Calculate the initial (pre message block) chaining state.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinEngine.Reset">
+            <summary>
+            Reset the engine to the initial state (with the key and any pre-message parameters , ready to
+            accept message input.
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UbiTweak.LOW_RANGE">
+            Point at which position might overflow long, so switch to add with carry logic
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UbiTweak.T1_FINAL">
+            Bit 127 = final
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UbiTweak.T1_FIRST">
+            Bit 126 = first
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UbiTweak.tweak">
+            UBI uses a 128 bit tweak
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UbiTweak.extendedPosition">
+            Whether 64 bit position exceeded
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UbiTweak.AdvancePosition(System.Int32)">
+            Advances the position in the tweak by the specified value.
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UBI">
+            The Unique Block Iteration chaining mode.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UBI.currentBlock">
+            Buffer for the current block of message data
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UBI.currentOffset">
+            Offset into the current message block
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Digests.SkeinEngine.UBI.message">
+            Buffer for message words for feedback into encrypted block
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Digests.SM3Digest">
+            <summary>
+            Implementation of Chinese SM3 digest as described at
+            http://tools.ietf.org/html/draft-shen-sm3-hash-00
+            and at .... ( Chinese PDF )
+            </summary>
+            <remarks>
+            The specification says "process a bit stream",
+            but this is written to process bytes in blocks of 4,
+            meaning this will process 32-bit word groups.
+            But so do also most other digest specifications,
+            including the SHA-256 which was a origin for
+            this specification.
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SM3Digest.#ctor">
+            <summary>
+            Standard constructor
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SM3Digest.#ctor(Org.BouncyCastle.Crypto.Digests.SM3Digest)">
+            <summary>
+            Copy constructor.  This will copy the state of the provided
+            message digest.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Digests.SM3Digest.Reset">
+            <summary>
+            reset the chaining variables
+            </summary>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Digests.TigerDigest">
             implementation of Tiger based on:
             <a href="http://www.cs.technion.ac.il/~biham/Reports/Tiger">
@@ -9343,6 +9715,25 @@
         <member name="M:Org.BouncyCastle.Crypto.Digests.WhirlpoolDigest.Reset">
             Reset the chaining variables
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.EC.CustomNamedCurves.GetByOid(Org.BouncyCastle.Asn1.DerObjectIdentifier)">
+             return the X9ECParameters object for the named curve represented by
+             the passed in object identifier. Null if the curve isn't present.
+            
+             @param oid an object identifier representing a named curve, if present.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.EC.CustomNamedCurves.GetOid(System.String)">
+             return the object identifier signified by the passed in name. Null
+             if there is no object identifier associated with name.
+            
+             @return the object identifier associated with name, if present.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.EC.CustomNamedCurves.GetName(Org.BouncyCastle.Asn1.DerObjectIdentifier)">
+            return the named curve name represented by the given object identifier.
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.EC.CustomNamedCurves.Names">
+            returns an enumeration containing the name strings for curves
+            contained in this structure.
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Encodings.ISO9796d1Encoding">
             ISO 9796-1 padding. Note in the light of recent results you should
             only use this with RSA (rather than the "simpler" Rabin keys) and you
@@ -9396,7 +9787,7 @@
         <member name="T:Org.BouncyCastle.Crypto.Encodings.OaepEncoding">
             Optimal Asymmetric Encryption Padding (OAEP) - see PKCS 1 V 2.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Encodings.OaepEncoding.decodeBlock(System.Byte[],System.Int32,System.Int32)">
+        <member name="M:Org.BouncyCastle.Crypto.Encodings.OaepEncoding.DecodeBlock(System.Byte[],System.Int32,System.Int32)">
             @exception InvalidCipherTextException if the decrypted block turns out to
             be badly formatted.
         </member>
@@ -9418,6 +9809,40 @@
             Basic constructor.
             @param cipher
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding.#ctor(Org.BouncyCastle.Crypto.IAsymmetricBlockCipher,System.Int32)">
+            Constructor for decryption with a fixed plaintext length.
+            
+            @param cipher The cipher to use for cryptographic operation.
+            @param pLen Length of the expected plaintext.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding.#ctor(Org.BouncyCastle.Crypto.IAsymmetricBlockCipher,System.Byte[])">
+            Constructor for decryption with a fixed plaintext length and a fallback
+            value that is returned, if the padding is incorrect.
+            
+            @param cipher
+                       The cipher to use for cryptographic operation.
+            @param fallback
+                       The fallback value, we don't to a arraycopy here.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding.CheckPkcs1Encoding(System.Byte[],System.Int32)">
+            Checks if the argument is a correctly PKCS#1.5 encoded Plaintext
+            for encryption.
+            
+            @param encoded The Plaintext.
+            @param pLen Expected length of the plaintext.
+            @return Either 0, if the encoding is correct, or -1, if it is incorrect.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding.DecodeBlockOrRandom(System.Byte[],System.Int32,System.Int32)">
+            Decode PKCS#1.5 encoding, and return a random value if the padding is not correct.
+            
+            @param in The encrypted block.
+            @param inOff Offset in the encrypted block.
+            @param inLen Length of the encrypted block.
+            @param pLen Length of the desired output.
+            @return The plaintext without padding, or a random value if the padding was incorrect.
+            
+            @throws InvalidCipherTextException
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Encodings.Pkcs1Encoding.DecodeBlock(System.Byte[],System.Int32,System.Int32)">
             @exception InvalidCipherTextException if the decrypted block is not in Pkcs1 format.
         </member>
@@ -9759,6 +10184,97 @@
              @param D    the 96-127 bits of the ciphertext block
              @param result the resulting plaintext
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Engines.ChaChaEngine">
+            <summary>
+            Implementation of Daniel J. Bernstein's ChaCha stream cipher.
+            </summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Engines.Salsa20Engine">
+            <summary>
+            Implementation of Daniel J. Bernstein's Salsa20 stream cipher, Snuffle 2005
+            </summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.IStreamCipher">
+            <summary>The interface stream ciphers conform to.</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
+            <summary>Initialise the cipher.</summary>
+            <param name="forEncryption">If true the cipher is initialised for encryption,
+            if false for decryption.</param>
+            <param name="parameters">The key and other data required by the cipher.</param>
+            <exception cref="T:System.ArgumentException">
+            If the parameters argument is inappropriate.
+            </exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.ReturnByte(System.Byte)">
+            <summary>encrypt/decrypt a single byte returning the result.</summary>
+            <param name="input">the byte to be processed.</param>
+            <returns>the result of processing the input byte.</returns>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.ProcessBytes(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)">
+            <summary>
+            Process a block of bytes from <c>input</c> putting the result into <c>output</c>.
+            </summary>
+            <param name="input">The input byte array.</param>
+            <param name="inOff">
+            The offset into <c>input</c> where the data to be processed starts.
+            </param>
+            <param name="length">The number of bytes to be processed.</param>
+            <param name="output">The output buffer the processed bytes go into.</param>
+            <param name="outOff">
+            The offset into <c>output</c> the processed data starts at.
+            </param>
+            <exception cref="T:Org.BouncyCastle.Crypto.DataLengthException">If the output buffer is too small.</exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.Reset">
+            <summary>
+            Reset the cipher to the same state as it was after the last init (if there was one).
+            </summary>
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.IStreamCipher.AlgorithmName">
+            <summary>The name of the algorithm this cipher implements.</summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.Salsa20Engine.StateSize">
+            Constants 
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.Salsa20Engine.#ctor">
+            <summary>
+            Creates a 20 round Salsa20 engine.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.Salsa20Engine.#ctor(System.Int32)">
+            <summary>
+            Creates a Salsa20 engine with a specific number of rounds.
+            </summary>
+            <param name="rounds">the number of rounds (must be an even number).</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.Salsa20Engine.R(System.UInt32,System.Int32)">
+             Rotate left
+            
+             @param   x   value to rotate
+             @param   y   amount to rotate x
+            
+             @return  rotated x
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ChaChaEngine.#ctor">
+            <summary>
+            Creates a 20 rounds ChaCha engine.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ChaChaEngine.#ctor(System.Int32)">
+            <summary>
+            Creates a ChaCha engine with a specific number of rounds.
+            </summary>
+            <param name="rounds">the number of rounds (must be an even number).</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ChaChaEngine.ChachaCore(System.Int32,System.UInt32[],System.UInt32[])">
+            <summary>
+            ChacCha function.
+            </summary>
+            <param name="rounds">The number of ChaCha rounds to execute</param>
+            <param name="input">The input words.</param>
+            <param name="x">The ChaCha state to modify.</param>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Engines.DesEdeEngine">
             <remarks>A class that provides a basic DESede (or Triple DES) engine.</remarks>
         </member>
@@ -9938,46 +10454,6 @@
              http://www.ecrypt.eu.org/stream/hcp3.html
              </p>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.IStreamCipher">
-            <summary>The interface stream ciphers conform to.</summary>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
-            <summary>Initialise the cipher.</summary>
-            <param name="forEncryption">If true the cipher is initialised for encryption,
-            if false for decryption.</param>
-            <param name="parameters">The key and other data required by the cipher.</param>
-            <exception cref="T:System.ArgumentException">
-            If the parameters argument is inappropriate.
-            </exception>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.ReturnByte(System.Byte)">
-            <summary>encrypt/decrypt a single byte returning the result.</summary>
-            <param name="input">the byte to be processed.</param>
-            <returns>the result of processing the input byte.</returns>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.ProcessBytes(System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32)">
-            <summary>
-            Process a block of bytes from <c>input</c> putting the result into <c>output</c>.
-            </summary>
-            <param name="input">The input byte array.</param>
-            <param name="inOff">
-            The offset into <c>input</c> where the data to be processed starts.
-            </param>
-            <param name="length">The number of bytes to be processed.</param>
-            <param name="output">The output buffer the processed bytes go into.</param>
-            <param name="outOff">
-            The offset into <c>output</c> the processed data starts at.
-            </param>
-            <exception cref="T:Org.BouncyCastle.Crypto.DataLengthException">If the output buffer is too small.</exception>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.IStreamCipher.Reset">
-            <summary>
-            Reset the cipher to the same state as it was after the last init (if there was one).
-            </summary>
-        </member>
-        <member name="P:Org.BouncyCastle.Crypto.IStreamCipher.AlgorithmName">
-            <summary>The name of the algorithm this cipher implements.</summary>
-        </member>
         <member name="M:Org.BouncyCastle.Crypto.Engines.HC128Engine.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
              Initialise a HC-128 cipher.
             
@@ -10010,6 +10486,73 @@
              @throws ArgumentException if the params argument is
                                               inappropriate (ie. the key is not 256 bit long).
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Engines.IdeaEngine">
+            A class that provides a basic International Data Encryption Algorithm (IDEA) engine.
+            <p>
+            This implementation is based on the "HOWTO: INTERNATIONAL DATA ENCRYPTION ALGORITHM"
+            implementation summary by Fauzan Mirza (F.U.Mirza@sheffield.ac.uk). (baring 1 typo at the
+            end of the mulinv function!).
+            </p>
+            <p>
+            It can be found at ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/idea/
+            </p>
+            <p>
+            Note 1: This algorithm is patented in the USA, Japan, and Europe including
+            at least Austria, France, Germany, Italy, Netherlands, Spain, Sweden, Switzerland
+            and the United Kingdom. Non-commercial use is free, however any commercial
+            products are liable for royalties. Please see
+            <a href="http://www.mediacrypt.com">www.mediacrypt.com</a> for
+            further details. This announcement has been included at the request of
+            the patent holders.
+            </p>
+            <p>
+            Note 2: Due to the requests concerning the above, this algorithm is now only
+            included in the extended assembly. It is not included in the default distributions.
+            </p>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.#ctor">
+            standard constructor.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
+             initialise an IDEA cipher.
+            
+             @param forEncryption whether or not we are for encryption.
+             @param parameters the parameters required to set up the cipher.
+             @exception ArgumentException if the parameters argument is
+             inappropriate.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.Mul(System.Int32,System.Int32)">
+             return x = x * y where the multiplication is done modulo
+             65537 (0x10001) (as defined in the IDEA specification) and
+             a zero input is taken to be 65536 (0x10000).
+            
+             @param x the x value
+             @param y the y value
+             @return x = x * y
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.ExpandKey(System.Byte[])">
+            The following function is used to expand the user key to the encryption
+            subkey. The first 16 bytes are the user key, and the rest of the subkey
+            is calculated by rotating the previous 16 bytes by 25 bits to the left,
+            and so on until the subkey is completed.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.MulInv(System.Int32)">
+            This function computes multiplicative inverse using Euclid's Greatest
+            Common Divisor algorithm. Zero and one are self inverse.
+            <p>
+            i.e. x * MulInv(x) == 1 (modulo BASE)
+            </p>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.AddInv(System.Int32)">
+            Return the additive inverse of x.
+            <p>
+            i.e. x + AddInv(x) == 0
+            </p>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.IdeaEngine.InvertKey(System.Int32[])">
+            The function to invert the encryption subkey to the decryption subkey.
+            It also involves the multiplicative inverse and the additive inverse functions.
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Engines.IesEngine">
             support class for constructing intergrated encryption ciphers
             for doing basic message exchanges on top of key agreement ciphers
@@ -10550,20 +11093,6 @@
              @return the result of the RSA process.
              @exception DataLengthException the input block is too large.
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Engines.Salsa20Engine">
-            Implementation of Daniel J. Bernstein's Salsa20 stream cipher, Snuffle 2005
-        </member>
-        <member name="F:Org.BouncyCastle.Crypto.Engines.Salsa20Engine.StateSize">
-            Constants 
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.Engines.Salsa20Engine.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
-             initialise a Salsa20 cipher.
-            
-             @param forEncryption whether or not we are for encryption.
-             @param params the parameters required to set up the cipher.
-             @exception ArgumentException if the params argument is
-             inappropriate.
-        </member>
         <member name="T:Org.BouncyCastle.Crypto.Engines.SeedEngine">
             Implementation of the SEED algorithm as described in RFC 4009
         </member>
@@ -10720,6 +11249,159 @@
             
              @param  key  the key to be used
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Engines.ThreefishEngine">
+            <summary>
+            Implementation of the Threefish tweakable large block cipher in 256, 512 and 1024 bit block
+            sizes.
+            </summary>
+            <remarks>
+            This is the 1.3 version of Threefish defined in the Skein hash function submission to the NIST
+            SHA-3 competition in October 2010.
+            <p/>
+            Threefish was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+            Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+            <p/>
+            This implementation inlines all round functions, unrolls 8 rounds, and uses 1.2k of static tables
+            to speed up key schedule injection. <br/>
+            2 x block size state is retained by each cipher instance.
+            </remarks>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BLOCKSIZE_256">
+            <summary>
+            256 bit block size - Threefish-256
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BLOCKSIZE_512">
+            <summary>
+            512 bit block size - Threefish-512
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BLOCKSIZE_1024">
+            <summary>
+            1024 bit block size - Threefish-1024
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.TWEAK_SIZE_BYTES">
+            Size of the tweak in bytes (always 128 bit/16 bytes)
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.ROUNDS_256">
+            Rounds in Threefish-256
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.ROUNDS_512">
+            Rounds in Threefish-512
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.ROUNDS_1024">
+            Rounds in Threefish-1024
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.MAX_ROUNDS">
+            Max rounds of any of the variants
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.C_240">
+            Key schedule parity constant
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.blocksizeBytes">
+            Block size in bytes
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.blocksizeWords">
+            Block size in 64 bit words
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.currentBlock">
+            Buffer for byte oriented processBytes to call internal word API
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.t">
+            Tweak bytes (2 byte t1,t2, calculated t3 and repeat of t1,t2 for modulo free lookup
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.kw">
+            Key schedule words
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.cipher">
+            The internal cipher implementation (varies by blocksize)
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.#ctor(System.Int32)">
+            <summary>
+            Constructs a new Threefish cipher, with a specified block size.
+            </summary>
+            <param name="blocksizeBits">the block size in bits, one of <see cref="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BLOCKSIZE_256"/>, <see cref="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BLOCKSIZE_512"/>,
+                                 <see cref="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BLOCKSIZE_1024"/> .</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
+            <summary>
+            Initialise the engine.
+            </summary>
+            <param name="forEncryption">Initialise for encryption if true, for decryption if false.</param>
+            <param name="parameters">an instance of <see cref="T:Org.BouncyCastle.Crypto.Parameters.TweakableBlockCipherParameters"/> or <see cref="T:Org.BouncyCastle.Crypto.Parameters.KeyParameter"/> (to
+                          use a 0 tweak)</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Init(System.Boolean,System.UInt64[],System.UInt64[])">
+            <summary>
+            Initialise the engine, specifying the key and tweak directly.
+            </summary>
+            <param name="forEncryption">the cipher mode.</param>
+            <param name="key">the words of the key, or <code>null</code> to use the current key.</param>
+            <param name="tweak">the 2 word (128 bit) tweak, or <code>null</code> to use the current tweak.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.ProcessBlock(System.UInt64[],System.UInt64[])">
+            <summary>
+            Process a block of data represented as 64 bit words.
+            </summary>
+            <returns>the number of 8 byte words processed (which will be the same as the block size).</returns>
+            <param name="inWords">a block sized buffer of words to process.</param>
+            <param name="outWords">a block sized buffer of words to receive the output of the operation.</param>
+            <exception cref="T:Org.BouncyCastle.Crypto.DataLengthException">if either the input or output is not block sized</exception>
+            <exception cref="T:System.InvalidOperationException">if this engine is not initialised</exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.BytesToWord(System.Byte[],System.Int32)">
+            <summary>
+            Read a single 64 bit word from input in LSB first order.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.WordToBytes(System.UInt64,System.Byte[],System.Int32)">
+            <summary>
+            Write a 64 bit word to output in LSB first order.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.RotlXor(System.UInt64,System.Int32,System.UInt64)">
+            Rotate left + xor part of the mix operation.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.XorRotr(System.UInt64,System.Int32,System.UInt64)">
+            Rotate xor + rotate right part of the unmix operation.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.ThreefishCipher.t">
+            The extended + repeated tweak words
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.ThreefishCipher.kw">
+            The extended + repeated key words
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish256Cipher.ROTATION_0_0">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish256Cipher.ROTATION_0_1">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish512Cipher.ROTATION_0_0">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish512Cipher.ROTATION_0_1">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish512Cipher.ROTATION_0_2">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish512Cipher.ROTATION_0_3">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish1024Cipher.ROTATION_0_0">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish1024Cipher.ROTATION_0_1">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish1024Cipher.ROTATION_0_2">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Engines.ThreefishEngine.Threefish1024Cipher.ROTATION_0_3">
+            Mix rotation constants defined in Skein 1.3 specification
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Engines.TwofishEngine">
              A class that provides Twofish encryption operations.
             
@@ -10785,6 +11467,21 @@
             @exception ArgumentException
                if the params argument is inappropriate.
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Engines.XSalsa20Engine">
+            <summary>
+            Implementation of Daniel J. Bernstein's XSalsa20 stream cipher - Salsa20 with an extended nonce.
+            </summary>
+            <remarks>
+            XSalsa20 requires a 256 bit key, and a 192 bit nonce.
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Engines.XSalsa20Engine.SetKey(System.Byte[],System.Byte[])">
+            <summary>
+            XSalsa20 key generation: process 256 bit input key and 128 bits of the input nonce
+            using a core Salsa20 function without input addition to produce 256 bit working key
+            and use that with the remaining 64 bits of nonce to initialize a standard Salsa20 engine state.
+            </summary>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Engines.XteaEngine">
             An XTEA engine.
         </member>
@@ -10874,13 +11571,13 @@
             Note: can take a while...</p>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Generators.DsaKeyPairGenerator">
-                 * a DSA key pair generator.
-                 *
-                 * This Generates DSA keys in line with the method described
-            	 * in <i>FIPS 186-3 B.1 FFC Key Pair Generation</i>.
+             a DSA key pair generator.
+            
+             This Generates DSA keys in line with the method described
+             in <i>FIPS 186-3 B.1 FFC Key Pair Generation</i>.
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Generators.DsaParametersGenerator">
-            Generate suitable parameters for DSA, in line with FIPS 186-2.
+            Generate suitable parameters for DSA, in line with FIPS 186-2, or FIPS 186-3.
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Generators.DsaParametersGenerator.Init(System.Int32,System.Int32,Org.BouncyCastle.Security.SecureRandom)">
              initialise the key generator.
@@ -10889,6 +11586,14 @@
              @param certainty measure of robustness of prime (for FIPS 186-2 compliance this should be at least 80).
              @param random random byte source.
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Generators.DsaParametersGenerator.Init(Org.BouncyCastle.Crypto.Parameters.DsaParameterGenerationParameters)">
+             Initialise the key generator for DSA 2.
+             <p>
+                 Use this init method if you need to generate parameters for DSA 2 keys.
+             </p>
+            
+             @param params  DSA 2 key generation parameters.
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Generators.DsaParametersGenerator.GenerateParameters">
             which Generates the p and g values from the given parameters,
             returning the DsaParameters object.
@@ -10900,7 +11605,7 @@
             <i>FIPS 186-3 A.1 Generation of the FFC Primes p and q</i>.
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Generators.ECKeyPairGenerator.GenerateKeyPair">
-            Given the domain parameters this routine Generates an EC key
+            Given the domain parameters this routine generates an EC key
             pair in accordance with X9.62 section 5.2.1 pages 26, 27.
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Generators.ElGamalKeyPairGenerator">
@@ -10992,7 +11697,7 @@
                         the ArrayList to be permuted
              @param rand
                         the source of Randomness for permutation
-             @return a new ArrayList with the permuted elements.
+             @return a new IList with the permuted elements.
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Generators.NaccacheSternKeyPairGenerator.findFirstPrimes(System.Int32)">
              Finds the first 'count' primes starting with 3
@@ -11240,6 +11945,57 @@
              @param keySize the size of the key we want (in bits)
              @return a KeyParameter object.
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator">
+            <summary>
+            Generates keys for the Poly1305 MAC.
+            </summary>
+            <remarks>
+            Poly1305 keys are 256 bit keys consisting of a 128 bit secret key used for the underlying block
+            cipher followed by a 128 bit {@code r} value used for the polynomial portion of the Mac. <br/>
+            The {@code r} value has a specific format with some bits required to be cleared, resulting in an
+            effective 106 bit key. <br/>
+            A separately generated 256 bit key can be modified to fit the Poly1305 key format by using the
+            {@link #clamp(byte[])} method to clear the required bits.
+            </remarks>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Macs.Poly1305"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator.engineInit(Org.BouncyCastle.Crypto.KeyGenerationParameters)">
+            <summary>
+            Initialises the key generator.
+            </summary>
+            <remarks>
+            Poly1305 keys are always 256 bits, so the key length in the provided parameters is ignored.
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator.engineGenerateKey">
+            <summary>
+            Generates a 256 bit key in the format required for Poly1305 - e.g.
+            <code>k[0] ... k[15], r[0] ... r[15]</code> with the required bits in <code>r</code> cleared
+            as per <see cref="M:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator.Clamp(System.Byte[])"/>.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator.Clamp(System.Byte[])">
+            <summary>
+            Modifies an existing 32 byte key value to comply with the requirements of the Poly1305 key by
+            clearing required bits in the <code>r</code> (second 16 bytes) portion of the key.<br/>
+            Specifically:
+            <ul>
+            <li>r[3], r[7], r[11], r[15] have top four bits clear (i.e., are {0, 1, . . . , 15})</li>
+            <li>r[4], r[8], r[12] have bottom two bits clear (i.e., are in {0, 4, 8, . . . , 252})</li>
+            </ul>
+            </summary>
+            <param name="key">a 32 byte key value <code>k[0] ... k[15], r[0] ... r[15]</code></param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator.CheckKey(System.Byte[])">
+            <summary>
+            Checks a 32 byte key for compliance with the Poly1305 key requirements, e.g.
+            <code>k[0] ... k[15], r[0] ... r[15]</code> with the required bits in <code>r</code> cleared
+            as per <see cref="M:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator.Clamp(System.Byte[])"/>.
+            </summary>
+            <param name="key">Key.</param>
+            <exception cref="T:System.ArgumentException">if the key is of the wrong length, or has invalid bits set
+                      in the <code>r</code> portion of the key.</exception>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Generators.RsaBlindingFactorGenerator">
             Generate a random factor suitable for use with RSA blind signatures
             as outlined in Chaum's blinding and unblinding as outlined in
@@ -11258,6 +12014,12 @@
         <member name="T:Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator">
             an RSA key pair generator.
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Generators.RsaKeyPairGenerator.ChooseRandomPrime(System.Int32,Org.BouncyCastle.Math.BigInteger)">
+            <summary>Choose a random prime value for use with RSA</summary>
+            <param name="bitlength">the bit-length of the returned prime</param>
+            <param name="e">the RSA public exponent</param>
+            <returns>a prime p, with (p-1) relatively prime to e</returns>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.IDsa">
             interface for classes implementing the Digital Signature Algorithm
         </member>
@@ -11595,6 +12357,42 @@
         <member name="M:Org.BouncyCastle.Crypto.Macs.CMac.Reset">
             Reset the mac generator.
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Macs.GMac">
+            <summary>
+            The GMAC specialisation of Galois/Counter mode (GCM) detailed in NIST Special Publication
+            800-38D.
+            </summary>
+            <remarks>
+            GMac is an invocation of the GCM mode where no data is encrypted (i.e. all input data to the Mac
+            is processed as additional authenticated data with the underlying GCM block cipher).
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.GMac.#ctor(Org.BouncyCastle.Crypto.Modes.GcmBlockCipher)">
+            <summary>
+            Creates a GMAC based on the operation of a block cipher in GCM mode.
+            </summary>
+            <remarks>
+            This will produce an authentication code the length of the block size of the cipher.
+            </remarks>
+            <param name="cipher">the cipher to be used in GCM mode to generate the MAC.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.GMac.#ctor(Org.BouncyCastle.Crypto.Modes.GcmBlockCipher,System.Int32)">
+            <summary>
+            Creates a GMAC based on the operation of a 128 bit block cipher in GCM mode.
+            </summary>
+            <remarks>
+            This will produce an authentication code the length of the block size of the cipher.
+            </remarks>
+            <param name="cipher">the cipher to be used in GCM mode to generate the MAC.</param>
+            <param name="macSizeBits">the mac size to generate, in bits. Must be a multiple of 8, between 32 and 128 (inclusive).
+            Sizes less than 96 are not recommended, but are supported for specialized applications.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.GMac.Init(Org.BouncyCastle.Crypto.ICipherParameters)">
+            <summary>
+            Initialises the GMAC - requires a <see cref="T:Org.BouncyCastle.Crypto.Parameters.ParametersWithIV"/> 
+            providing a <see cref="T:Org.BouncyCastle.Crypto.Parameters.KeyParameter"/> and a nonce.
+            </summary>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Macs.Gost28147Mac">
             implementation of GOST 28147-89 MAC
         </member>
@@ -11657,6 +12455,159 @@
         <member name="M:Org.BouncyCastle.Crypto.Macs.ISO9797Alg3Mac.Reset">
             Reset the mac generator.
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Macs.Poly1305">
+            <summary>
+            Poly1305 message authentication code, designed by D. J. Bernstein.
+            </summary>
+            <remarks>
+            Poly1305 computes a 128-bit (16 bytes) authenticator, using a 128 bit nonce and a 256 bit key
+            consisting of a 128 bit key applied to an underlying cipher, and a 128 bit key (with 106
+            effective key bits) used in the authenticator.
+            
+            The polynomial calculation in this implementation is adapted from the public domain <a href="https://github.com/floodyberry/poly1305-donna">poly1305-donna-unrolled</a> C implementation
+            by Andrew M (@floodyberry).
+            </remarks>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Generators.Poly1305KeyGenerator"/>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.r0">
+            Polynomial key 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.r1">
+            Polynomial key 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.r2">
+            Polynomial key 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.r3">
+            Polynomial key 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.r4">
+            Polynomial key 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.s1">
+            Precomputed 5 * r[1..4] 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.s2">
+            Precomputed 5 * r[1..4] 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.s3">
+            Precomputed 5 * r[1..4] 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.s4">
+            Precomputed 5 * r[1..4] 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.k0">
+            Encrypted nonce 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.k1">
+            Encrypted nonce 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.k2">
+            Encrypted nonce 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.k3">
+            Encrypted nonce 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.currentBlock">
+            Current block of buffered input 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.currentBlockOffset">
+            Current offset in input buffer 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.h0">
+            Polynomial accumulator 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.h1">
+            Polynomial accumulator 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.h2">
+            Polynomial accumulator 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.h3">
+            Polynomial accumulator 
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.Poly1305.h4">
+            Polynomial accumulator 
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.Poly1305.#ctor">
+            Constructs a Poly1305 MAC, where the key passed to init() will be used directly.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.Poly1305.#ctor(Org.BouncyCastle.Crypto.IBlockCipher)">
+            Constructs a Poly1305 MAC, using a 128 bit block cipher.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.Poly1305.Init(Org.BouncyCastle.Crypto.ICipherParameters)">
+            <summary>
+            Initialises the Poly1305 MAC.
+            </summary>
+            <param name="parameters">a {@link ParametersWithIV} containing a 128 bit nonce and a {@link KeyParameter} with
+                     a 256 bit key complying to the {@link Poly1305KeyGenerator Poly1305 key format}.</param>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Macs.SipHash">
+            <summary>
+            Implementation of SipHash as specified in "SipHash: a fast short-input PRF", by Jean-Philippe
+            Aumasson and Daniel J. Bernstein (https://131002.net/siphash/siphash.pdf).
+            </summary>
+            <remarks>
+            "SipHash is a family of PRFs SipHash-c-d where the integer parameters c and d are the number of
+            compression rounds and the number of finalization rounds. A compression round is identical to a
+            finalization round and this round function is called SipRound. Given a 128-bit key k and a
+            (possibly empty) byte string m, SipHash-c-d returns a 64-bit value..."
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.SipHash.#ctor">
+            <summary>SipHash-2-4</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.SipHash.#ctor(System.Int32,System.Int32)">
+            <summary>SipHash-c-d</summary>
+            <param name="c">the number of compression rounds</param>
+            <param name="d">the number of finalization rounds</param>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Macs.SkeinMac">
+            <summary>
+            Implementation of the Skein parameterised MAC function in 256, 512 and 1024 bit block sizes,
+            based on the <see cref="T:Org.BouncyCastle.Crypto.Engines.ThreefishEngine">Threefish</see> tweakable block cipher.
+            </summary>
+            <remarks>
+            This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+            competition in October 2010.
+            <p/>
+            Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+            Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+            </remarks>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Digests.SkeinEngine"/>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.SkeinMac.SKEIN_256">
+            <summary>
+            256 bit block size - Skein-256
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.SkeinMac.SKEIN_512">
+            <summary>
+            512 bit block size - Skein-512
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Macs.SkeinMac.SKEIN_1024">
+            <summary>
+            1024 bit block size - Skein-1024
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.SkeinMac.#ctor(System.Int32,System.Int32)">
+            <summary>
+            Constructs a Skein MAC with an internal state size and output size.
+            </summary>
+            <param name="stateSizeBits">the internal state size in bits - one of <see cref="F:Org.BouncyCastle.Crypto.Macs.SkeinMac.SKEIN_256"/> <see cref="F:Org.BouncyCastle.Crypto.Macs.SkeinMac.SKEIN_512"/> or
+                                  <see cref="F:Org.BouncyCastle.Crypto.Macs.SkeinMac.SKEIN_1024"/>.</param>
+            <param name="digestSizeBits">the output/MAC size to produce in bits, which must be an integral number of
+                                 bytes.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Macs.SkeinMac.Init(Org.BouncyCastle.Crypto.ICipherParameters)">
+            <summary>
+            Optionally initialises the Skein digest with the provided parameters.
+            </summary>
+            See <see cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"></see> for details on the parameterisation of the Skein hash function.
+            <param name="parameters">the parameters to apply to this engine, or <code>null</code> to use no parameters.</param>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.MaxBytesExceededException">
             <summary>
             This exception is thrown whenever a cipher requires a change of key, iv
@@ -11738,11 +12689,11 @@
              @return the name of the underlying algorithm followed by "/CBC".
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Modes.CcmBlockCipher">
-                * Implements the Counter with Cipher Block Chaining mode (CCM) detailed in
-                * NIST Special Publication 800-38C.
-                * <p>
-                * <b>Note</b>: this mode is a packet mode - it needs all the data up front.
-            	* </p>
+            Implements the Counter with Cipher Block Chaining mode (CCM) detailed in
+            NIST Special Publication 800-38C.
+            <p>
+            <b>Note</b>: this mode is a packet mode - it needs all the data up front.
+            </p>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher">
             <summary>
@@ -11750,6 +12701,9 @@
             and optional associated data.</summary>
             <see cref="T:Org.BouncyCastle.Crypto.Parameters.AeadParameters"/>
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher.GetUnderlyingCipher">
+            <summary>The block cipher underlying this algorithm.</summary>
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
             <summary>Initialise the cipher.</summary>
             <remarks>Parameter can either be an AeadParameters or a ParametersWithIV object.</remarks>
@@ -11759,6 +12713,18 @@
         <member name="M:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher.GetBlockSize">
             <returns>The block size for this cipher, in bytes.</returns>
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher.ProcessAadByte(System.Byte)">
+            <summary>Add a single byte to the associated data check.</summary>
+            <remarks>If the implementation supports it, this will be an online operation and will not retain the associated data.</remarks>
+            <param name="input">The byte to be processed.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher.ProcessAadBytes(System.Byte[],System.Int32,System.Int32)">
+            <summary>Add a sequence of bytes to the associated data check.</summary>
+            <remarks>If the implementation supports it, this will be an online operation and will not retain the associated data.</remarks>
+            <param name="inBytes">The input byte array.</param>
+            <param name="inOff">The offset into the input array where the data to be processed starts.</param>
+            <param name="len">The number of bytes to be processed.</param>
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher.ProcessByte(System.Byte,System.Byte[],System.Int32)">
              Encrypt/decrypt a single byte.
             
@@ -11994,6 +12960,12 @@
             NIST Special Publication 800-38D.
             </summary>
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Modes.GcmBlockCipher.Init(System.Boolean,Org.BouncyCastle.Crypto.ICipherParameters)">
+            <remarks>
+            MAC sizes from 32 bits to 128 bits (must be a multiple of 8) are supported. The default is 128 bits.
+            Sizes less than 96 are not recommended, but are supported for specialized applications.
+            </remarks>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Modes.GOfbBlockCipher">
             implements the GOST 28147 OFB counter mode (GCTR).
         </member>
@@ -12046,6 +13018,19 @@
              @return the name of the underlying algorithm followed by "/GCTR"
              and the block size in bits
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Modes.OcbBlockCipher">
+            An implementation of <a href="http://tools.ietf.org/html/rfc7253">RFC 7253 on The OCB
+            Authenticated-Encryption Algorithm</a>, licensed per:
+            
+            <blockquote><p><a href="http://www.cs.ucdavis.edu/~rogaway/ocb/license1.pdf">License for
+            Open-Source Software Implementations of OCB</a> (Jan 9, 2013) - 'License 1'<br/>
+            Under this license, you are authorized to make, use, and distribute open-source software
+            implementations of OCB. This license terminates for you if you sue someone over their open-source
+            software implementation of OCB claiming that you have a patent covering their implementation.
+            </p><p>
+            This is a non-binding summary of a legal document (the link above). The parameters of the license
+            are specified in the license document and that document is controlling.</p></blockquote>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Modes.OfbBlockCipher">
             implements a Output-FeedBack (OFB) mode on top of a simple cipher.
         </member>
@@ -12443,6 +13428,13 @@
              <returns> the name of the algorithm the cipher implements.
              </returns>
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.AeadParameters.#ctor(Org.BouncyCastle.Crypto.Parameters.KeyParameter,System.Int32,System.Byte[])">
+             Base constructor.
+            
+             @param key key to be used by underlying cipher
+             @param macSize macSize in bits
+             @param nonce nonce to be used
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Parameters.AeadParameters.#ctor(Org.BouncyCastle.Crypto.Parameters.KeyParameter,System.Int32,System.Byte[],System.Byte[])">
              Base constructor.
             
@@ -12495,6 +13487,23 @@
         <member name="P:Org.BouncyCastle.Crypto.Parameters.DHParameters.L">
             <summary>The bitlength of the private value.</summary>
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.DsaParameterGenerationParameters.#ctor(System.Int32,System.Int32,System.Int32,Org.BouncyCastle.Security.SecureRandom)">
+             Construct without a usage index, this will do a random construction of G.
+            
+             @param L desired length of prime P in bits (the effective key size).
+             @param N desired length of prime Q in bits.
+             @param certainty certainty level for prime number generation.
+             @param random the source of randomness to use.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.DsaParameterGenerationParameters.#ctor(System.Int32,System.Int32,System.Int32,Org.BouncyCastle.Security.SecureRandom,System.Int32)">
+             Construct for a specific usage index - this has the effect of using verifiable canonical generation of G.
+            
+             @param L desired length of prime P in bits (the effective key size).
+             @param N desired length of prime Q in bits.
+             @param certainty certainty level for prime number generation.
+             @param random the source of randomness to use.
+             @param usageIndex a valid usage index.
+        </member>
         <member name="P:Org.BouncyCastle.Crypto.Parameters.ElGamalParameters.G">
             return the generator - g
         </member>
@@ -12607,6 +13616,185 @@
         <member name="T:Org.BouncyCastle.Crypto.Parameters.ParametersWithSalt">
             <summary> Cipher parameters with a fixed salt value associated with them.</summary>
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters">
+            <summary>
+            Parameters for the Skein hash function - a series of byte[] strings identified by integer tags.
+            </summary>
+            <remarks>
+            Parameterised Skein can be used for:
+            <ul> 
+            <li>MAC generation, by providing a <see cref="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetKey(System.Byte[])">key</see>.</li>
+            <li>Randomised hashing, by providing a <see cref="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetNonce(System.Byte[])">nonce</see>.</li>
+            <li>A hash function for digital signatures, associating a
+            <see cref="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetPublicKey(System.Byte[])">public key</see> with the message digest.</li>
+            <li>A key derivation function, by providing a
+            <see cref="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetKeyIdentifier(System.Byte[])">key identifier</see>.</li>
+            <li>Personalised hashing, by providing a
+            <see cref="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetPersonalisation(System.DateTime,System.String,System.String)">recommended format</see> or
+            <see cref="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetPersonalisation(System.Byte[])">arbitrary</see> personalisation string.</li>
+            </ul>
+            </remarks>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Digests.SkeinEngine"/>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Digests.SkeinDigest"/>
+            <seealso cref="T:Org.BouncyCastle.Crypto.Macs.SkeinMac"/>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY">
+            <summary>
+            The parameter type for a secret key, supporting MAC or KDF functions: 0
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_CONFIG">
+            <summary>
+            The parameter type for the Skein configuration block: 4
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_PERSONALISATION">
+            <summary>
+            The parameter type for a personalisation string: 8
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_PUBLIC_KEY">
+            <summary>
+            The parameter type for a public key: 12
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY_IDENTIFIER">
+            <summary>
+            The parameter type for a key identifier string: 16
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_NONCE">
+            <summary>
+            The parameter type for a nonce: 20
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_MESSAGE">
+            <summary>
+            The parameter type for the message: 48
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_OUTPUT">
+            <summary>
+            The parameter type for the output transformation: 63
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.GetParameters">
+            <summary>
+            Obtains a map of type (int) to value (byte[]) for the parameters tracked in this object.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.GetKey">
+            <summary>
+            Obtains the value of the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY">key parameter</see>, or <code>null</code> if not
+            set.
+            </summary>
+            <returns>The key.</returns>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.GetPersonalisation">
+            <summary>
+            Obtains the value of the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_PERSONALISATION">personalisation parameter</see>, or
+            <code>null</code> if not set.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.GetPublicKey">
+            <summary>
+            Obtains the value of the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_PUBLIC_KEY">public key parameter</see>, or
+            <code>null</code> if not set.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.GetKeyIdentifier">
+            <summary>
+            Obtains the value of the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY_IDENTIFIER">key identifier parameter</see>, or
+            <code>null</code> if not set.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.GetNonce">
+            <summary>
+            Obtains the value of the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_NONCE">nonce parameter</see>, or <code>null</code> if
+            not set.
+            </summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder">
+            <summary>
+            A builder for <see cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/>.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.Set(System.Int32,System.Byte[])">
+            <summary>
+            Sets a parameters to apply to the Skein hash function.
+            </summary>
+            <remarks>
+            Parameter types must be in the range 0,5..62, and cannot use the value 48
+            (reserved for message body).
+            <p/>
+            Parameters with type &lt; 48 are processed before
+            the message content, parameters with type &gt; 48
+            are processed after the message and prior to output.
+            </remarks>
+            <param name="type">the type of the parameter, in the range 5..62.</param>
+            <param name="value">the byte sequence of the parameter.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetKey(System.Byte[])">
+            <summary>
+            Sets the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY"/> parameter.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetPersonalisation(System.Byte[])">
+            <summary>
+            Sets the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_PERSONALISATION"/> parameter.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetPersonalisation(System.DateTime,System.String,System.String)">
+            <summary>
+            Implements the recommended personalisation format for Skein defined in Section 4.11 of
+            the Skein 1.3 specification.
+            </summary>
+            <remarks>
+            The format is <code>YYYYMMDD email@address distinguisher</code>, encoded to a byte
+            sequence using UTF-8 encoding.
+            </remarks>
+            <param name="date">the date the personalised application of the Skein was defined.</param>
+            <param name="emailAddress">the email address of the creation of the personalised application.</param>
+            <param name="distinguisher">an arbitrary personalisation string distinguishing the application.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetPublicKey(System.Byte[])">
+            <summary>
+            Sets the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY_IDENTIFIER"/> parameter.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetKeyIdentifier(System.Byte[])">
+            <summary>
+            Sets the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_KEY_IDENTIFIER"/> parameter.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.SetNonce(System.Byte[])">
+            <summary>
+            Sets the <see cref="F:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.PARAM_TYPE_NONCE"/> parameter.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Parameters.SkeinParameters.Builder.Build">
+            <summary>
+            Constructs a new <see cref="T:Org.BouncyCastle.Crypto.Parameters.SkeinParameters"/> instance with the parameters provided to this
+            builder.
+            </summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Parameters.TweakableBlockCipherParameters">
+            <summary>
+            Parameters for tweakable block ciphers.
+            </summary>
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Parameters.TweakableBlockCipherParameters.Key">
+            <summary>
+            Gets the key.
+            </summary>
+            <value>the key to use, or <code>null</code> to use the current key.</value>
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Parameters.TweakableBlockCipherParameters.Tweak">
+            <summary>
+            Gets the tweak value.
+            </summary>
+            <value>The tweak to use, or <code>null</code> to use the current tweak.</value>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Prng.DigestRandomGenerator">
             Random generation based on the digest with counter. Calling AddSeedMaterial will
             always increase the entropy of the hash.
@@ -12723,6 +13911,14 @@
             The Digital Signature Algorithm - as described in "Handbook of Applied
             Cryptography", pages 452 - 453.
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.DsaSigner.#ctor">
+            Default configuration, random K values.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.DsaSigner.#ctor(Org.BouncyCastle.Crypto.Signers.IDsaKCalculator)">
+             Configuration with an alternate, possibly deterministic calculator of K.
+            
+             @param kCalculator a K value calculator.
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Signers.DsaSigner.GenerateSignature(System.Byte[])">
              Generate a signature for the given message using the key we were
              initialised with. For conventional DSA the message should be a SHA-1
@@ -12738,6 +13934,14 @@
         <member name="T:Org.BouncyCastle.Crypto.Signers.ECDsaSigner">
             EC-DSA as described in X9.62
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.ECDsaSigner.#ctor">
+            Default configuration, random K values.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.ECDsaSigner.#ctor(Org.BouncyCastle.Crypto.Signers.IDsaKCalculator)">
+             Configuration with an alternate, possibly deterministic calculator of K.
+            
+             @param kCalculator a K value calculator.
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Signers.ECDsaSigner.GenerateSignature(System.Byte[])">
              Generate a signature for the given message using the key we were
              initialised with. For conventional DSA the message should be a SHA-1
@@ -12843,6 +14047,40 @@
             the passed in message for standard Gost3410 the message should be a
             Gost3411 hash of the real message to be verified.
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Signers.HMacDsaKCalculator">
+            A deterministic K calculator based on the algorithm in section 3.2 of RFC 6979.
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Signers.IDsaKCalculator">
+            Interface define calculators of K values for DSA/ECDSA.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.IDsaKCalculator.Init(Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Security.SecureRandom)">
+             Non-deterministic initialiser.
+            
+             @param n the order of the DSA group.
+             @param random a source of randomness.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.IDsaKCalculator.Init(Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.BigInteger,System.Byte[])">
+             Deterministic initialiser.
+            
+             @param n the order of the DSA group.
+             @param d the DSA private value.
+             @param message the message being signed.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.IDsaKCalculator.NextK">
+             Return the next valid value of K.
+            
+             @return a K value.
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Signers.IDsaKCalculator.IsDeterministic">
+             Return true if this calculator is deterministic, false otherwise.
+            
+             @return true if deterministic, otherwise false.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Signers.HMacDsaKCalculator.#ctor(Org.BouncyCastle.Crypto.IDigest)">
+             Base constructor.
+            
+             @param digest digest to build the HMAC on.
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Signers.Iso9796d2PssSigner">
             <summary> ISO9796-2 - mechanism using a hash function with recovery (scheme 2 and 3).
             <p>
@@ -13100,36 +14338,507 @@
             
              @return the name of the algorithm we are wrapping.
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.AlertDescription">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAgreementCredentials.GenerateAgreement(Org.BouncyCastle.Crypto.AsymmetricKeyParameter)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.AbstractTlsAgreementCredentials.GenerateAgreement(Org.BouncyCastle.Crypto.AsymmetricKeyParameter)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsCipherFactory.CreateCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.AbstractTlsCipherFactory.CreateCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.ShouldUseGmtUnixTime">
             <summary>
-            RFC 2246 7.2
+            draft-mathewson-no-gmtunixtime-00 2. "If existing users of a TLS implementation may rely on
+            gmt_unix_time containing the current time, we recommend that implementors MAY provide the
+            ability to set gmt_unix_time as an option only, off by default."
             </summary>
+            <returns>
+            <code>true</code> if the current time should be used in the gmt_unix_time field of
+            Random, or <code>false</code> if gmt_unix_time should contain a cryptographically
+            random value.
+            </returns>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.AlertLevel">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.NotifySecureRenegotiation(System.Boolean)">
+            <summary>
+            Report whether the server supports secure renegotiation
+            </summary>
+            <remarks>
+            The protocol handler automatically processes the relevant extensions
+            </remarks>
+            <param name="secureRenegotiation">
+            A <see cref="T:System.Boolean"/>, true if the server supports secure renegotiation
+            </param>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.GetCompression">
+            <summary>
+            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCompression"/> to handle record compression.
+            </summary>
+            <returns>A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCompression"/></returns>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.GetCipher">
+            <summary>
+            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCipher"/> to use for encryption/decryption.
+            </summary>
+            <returns>A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCipher"/></returns>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.NotifyAlertRaised(System.Byte,System.Byte,System.String,System.Exception)">
+            <summary>This method will be called when an alert is raised by the protocol.</summary>
+            <param name="alertLevel"><see cref="T:Org.BouncyCastle.Crypto.Tls.AlertLevel"/></param>
+            <param name="alertDescription"><see cref="T:Org.BouncyCastle.Crypto.Tls.AlertDescription"/></param>
+            <param name="message">A human-readable message explaining what caused this alert. May be null.</param>
+            <param name="cause">The <c>Exception</c> that caused this alert to be raised. May be null.</param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.NotifyAlertReceived(System.Byte,System.Byte)">
+            <summary>This method will be called when an alert is received from the remote peer.</summary>
+            <param name="alertLevel"><see cref="T:Org.BouncyCastle.Crypto.Tls.AlertLevel"/></param>
+            <param name="alertDescription"><see cref="T:Org.BouncyCastle.Crypto.Tls.AlertDescription"/></param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsPeer.NotifyHandshakeComplete">
+            <summary>Notifies the peer that the handshake has been successfully completed.</summary>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.Init(Org.BouncyCastle.Crypto.Tls.TlsClientContext)">
+            <summary>
+            Called at the start of a new TLS session, before any other methods.
+            </summary>
+            <param name="context">
+            A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler"/>
+            </param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetSessionToResume">
+            <summary>Return the session this client wants to resume, if any.</summary>
+            <remarks>Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.</remarks>
+            <returns>
+            A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsSession"/> representing the resumable session to be used for this connection,
+            or null to use a new session.
+            </returns>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCipherSuites">
+            <summary>
+            Get the list of cipher suites that this client supports.
+            </summary>
+            <returns>
+            An array of <see cref="T:Org.BouncyCastle.Crypto.Tls.CipherSuite"/> values, each specifying a supported cipher suite.
+            </returns>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCompressionMethods">
             <summary>
-            RFC 2246 7.2
+            Get the list of compression methods that this client supports.
+            </summary>
+            <returns>
+            An array of <see cref="T:Org.BouncyCastle.Crypto.Tls.CompressionMethod"/> values, each specifying a supported compression method.
+            </returns>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetClientExtensions">
+            <summary>
+            Get the (optional) table of client extensions to be included in (extended) client hello.
+            </summary>
+            <returns>
+            A <see cref="T:System.Collections.IDictionary"/> (Int32 -&gt; byte[]). May be null.
+            </returns>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifyServerVersion(Org.BouncyCastle.Crypto.Tls.ProtocolVersion)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySessionID(System.Byte[])">
+            <summary>
+            Notifies the client of the session_id sent in the ServerHello.
             </summary>
+            <param name="sessionID">An array of <see cref="T:System.Byte"/></param>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.AlwaysValidVerifyer">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySelectedCipherSuite(System.Int32)">
+            <summary>
+            Report the cipher suite that was selected by the server.
+            </summary>
             <remarks>
-            A certificate verifyer, that will always return true.
-            <pre>
-            DO NOT USE THIS FILE UNLESS YOU KNOW EXACTLY WHAT YOU ARE DOING.
-            </pre>
+            The protocol handler validates this value against the offered cipher suites
+            <seealso cref="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCipherSuites"/>
+            </remarks>
+            <param name="selectedCipherSuite">
+            A <see cref="T:Org.BouncyCastle.Crypto.Tls.CipherSuite"/>
+            </param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySelectedCompressionMethod(System.Byte)">
+            <summary>
+            Report the compression method that was selected by the server.
+            </summary>
+            <remarks>
+            The protocol handler validates this value against the offered compression methods
+            <seealso cref="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCompressionMethods"/>
+            </remarks>
+            <param name="selectedCompressionMethod">
+            A <see cref="T:Org.BouncyCastle.Crypto.Tls.CompressionMethod"/>
+            </param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.ProcessServerExtensions(System.Collections.IDictionary)">
+            <summary>
+            Report the extensions from an extended server hello.
+            </summary>
+            <remarks>
+            Will only be called if we returned a non-null result from <see cref="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetClientExtensions"/>.
+            </remarks>
+            <param name="serverExtensions">
+            A <see cref="T:System.Collections.IDictionary"/>  (Int32 -&gt; byte[])
+            </param>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.ProcessServerSupplementalData(System.Collections.IList)">
+            <param name="serverSupplementalData">A <see cref="T:System.Collections.IList">list</see> of <see cref="T:Org.BouncyCastle.Crypto.Tls.SupplementalDataEntry"/></param>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetKeyExchange">
+            <summary>
+            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange"/> to negotiate the key exchange
+            part of the protocol.
+            </summary>
+            <returns>
+            A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange"/>
+            </returns>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetAuthentication">
+            <summary>
+            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsAuthentication"/> to handle authentication
+            part of the protocol.
+            </summary>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetClientSupplementalData">
+            <returns>A <see cref="T:System.Collections.IList">list</see> of <see cref="T:Org.BouncyCastle.Crypto.Tls.SupplementalDataEntry"/></returns>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifyNewSessionTicket(Org.BouncyCastle.Crypto.Tls.NewSessionTicket)">
+            <summary>RFC 5077 3.3. NewSessionTicket Handshake Message</summary>
+            <remarks>
+            This method will be called (only) when a NewSessionTicket handshake message is received. The
+            ticket is opaque to the client and clients MUST NOT examine the ticket under the assumption
+            that it complies with e.g. <i>RFC 5077 4. Recommended Ticket Construction</i>.
+            </remarks>
+            <param name="newSessionTicket">The <see cref="T:Org.BouncyCastle.Crypto.Tls.NewSessionTicket">ticket</see></param>
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.AbstractTlsClient.ClientHelloRecordLayerVersion">
+            RFC 5246 E.1. "TLS clients that wish to negotiate with older servers MAY send any value
+            {03,XX} as the record layer version number. Typical values would be {03,00}, the lowest
+            version number supported by the client, and the value of ClientHello.client_version. No
+            single value will guarantee interoperability with all old servers, but this is a complex
+            topic beyond the scope of this document."
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsContext.ExportKeyingMaterial(System.String,System.Byte[],System.Int32)">
+             Export keying material according to RFC 5705: "Keying Material Exporters for TLS".
+            
+             @param asciiLabel    indicates which application will use the exported keys.
+             @param context_value allows the application using the exporter to mix its own data with the TLS PRF for
+                                  the exporter output.
+             @param length        the number of bytes to generate
+             @return a pseudorandom bit string of 'length' bytes generated from the master_secret.
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsContext.ResumableSession">
+            Used to get the resumable session, if any, used by this connection. Only available after the
+            handshake has successfully completed.
+            
+            @return A {@link TlsSession} representing the resumable session used by this connection, or
+                    null if no resumable session available.
+            @see TlsPeer#NotifyHandshakeComplete()
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsEncryptionCredentials.DecryptPreMasterSecret(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.AbstractTlsEncryptionCredentials.DecryptPreMasterSecret(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange">
+            <summary>
+            A generic interface for key exchange implementations in (D)TLS.
+            </summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.SkipServerCredentials">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessServerCredentials(Org.BouncyCastle.Crypto.Tls.TlsCredentials)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessServerCertificate(Org.BouncyCastle.Crypto.Tls.Certificate)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.GenerateServerKeyExchange">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.SkipServerKeyExchange">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessServerKeyExchange(System.IO.Stream)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ValidateCertificateRequest(Org.BouncyCastle.Crypto.Tls.CertificateRequest)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.SkipClientCredentials">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessClientCredentials(Org.BouncyCastle.Crypto.Tls.TlsCredentials)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessClientCertificate(Org.BouncyCastle.Crypto.Tls.Certificate)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.GenerateClientKeyExchange(System.IO.Stream)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessClientKeyExchange(System.IO.Stream)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.GeneratePremasterSecret">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.NotifyClientVersion(Org.BouncyCastle.Crypto.Tls.ProtocolVersion)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.NotifyOfferedCipherSuites(System.Int32[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.NotifyOfferedCompressionMethods(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.ProcessClientExtensions(System.Collections.IDictionary)">
+            <param name="clientExtensions">A <see cref="T:System.Collections.IDictionary"/> (Int32 -&gt; byte[]). Will never be null.</param>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetServerVersion">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetSelectedCipherSuite">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetSelectedCompressionMethod">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetServerExtensions">
+            <summary>
+            Get the (optional) table of server extensions to be included in (extended) server hello.
+            </summary>
+            <returns>
+            A <see cref="T:System.Collections.IDictionary"/> (Int32 -&gt; byte[]). May be null.
+            </returns>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetServerSupplementalData">
+            <returns>
+            A <see cref="T:System.Collections.IList"/> (<see cref="T:Org.BouncyCastle.Crypto.Tls.SupplementalDataEntry"/>). May be null.
+            </returns>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetCredentials">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetCertificateStatus">
+            <remarks>
+            This method will be called (only) if the server included an extension of type
+            "status_request" with empty "extension_data" in the extended server hello. See <i>RFC 3546
+            3.6. Certificate Status Request</i>. If a non-null <see cref="T:Org.BouncyCastle.Crypto.Tls.CertificateStatus"/> is returned, it
+            is sent to the client as a handshake message of type "certificate_status".
             </remarks>
+            <returns>A <see cref="T:Org.BouncyCastle.Crypto.Tls.CertificateStatus"/> to be sent to the client (or null for none).</returns>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetKeyExchange">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetCertificateRequest">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.ICertificateVerifyer">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.ProcessClientSupplementalData(System.Collections.IList)">
+            <param name="clientSupplementalData"><see cref="T:System.Collections.IList"/> (<see cref="T:Org.BouncyCastle.Crypto.Tls.SupplementalDataEntry"/>)</param>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.NotifyClientCertificate(Org.BouncyCastle.Crypto.Tls.Certificate)">
+            <summary>
+            Called by the protocol handler to report the client certificate, only if <c>GetCertificateRequest</c>
+            returned non-null.
+            </summary>
+            <remarks>Note: this method is responsible for certificate verification and validation.</remarks>
+            <param name="clientCertificate">the effective client certificate (may be an empty chain).</param>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServer.GetNewSessionTicket">
+            <summary>RFC 5077 3.3. NewSessionTicket Handshake Message.</summary>
             <remarks>
-            This should be implemented by any class which can find out, if a given
-            certificate chain is being accepted by an client.
+            This method will be called (only) if a NewSessionTicket extension was sent by the server. See
+            <i>RFC 5077 4. Recommended Ticket Construction</i> for recommended format and protection.
             </remarks>
+            <returns>The <see cref="T:Org.BouncyCastle.Crypto.Tls.NewSessionTicket">ticket</see>)</returns>
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsSignerCredentials.GenerateCertificateSignature(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.AbstractTlsSignerCredentials.GenerateCertificateSignature(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.ICertificateVerifyer.IsValid(Org.BouncyCastle.Asn1.X509.X509CertificateStructure[])">
-            <param name="certs">The certs, which are part of the chain.</param>
-            <returns>True, if the chain is accepted, false otherwise</returns>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.AlertDescription">
+            <summary>
+            RFC 5246 7.2
+            </summary>
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.close_notify">
+            This message notifies the recipient that the sender will not send any more messages on this
+            connection. Note that as of TLS 1.1, failure to properly close a connection no longer
+            requires that a session not be resumed. This is a change from TLS 1.0 ("The session becomes
+            unresumable if any connection is terminated without proper close_notify messages with level
+            equal to warning.") to conform with widespread implementation practice.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.unexpected_message">
+            An inappropriate message was received. This alert is always fatal and should never be
+            observed in communication between proper implementations.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.bad_record_mac">
+            This alert is returned if a record is received with an incorrect MAC. This alert also MUST be
+            returned if an alert is sent because a TLSCiphertext decrypted in an invalid way: either it
+            wasn't an even multiple of the block length, or its padding values, when checked, weren't
+            correct. This message is always fatal and should never be observed in communication between
+            proper implementations (except when messages were corrupted in the network).
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.decryption_failed">
+            This alert was used in some earlier versions of TLS, and may have permitted certain attacks
+            against the CBC mode [CBCATT]. It MUST NOT be sent by compliant implementations.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.record_overflow">
+            A TLSCiphertext record was received that had a length more than 2^14+2048 bytes, or a record
+            decrypted to a TLSCompressed record with more than 2^14+1024 bytes. This message is always
+            fatal and should never be observed in communication between proper implementations (except
+            when messages were corrupted in the network).
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.decompression_failure">
+            The decompression function received improper input (e.g., data that would expand to excessive
+            length). This message is always fatal and should never be observed in communication between
+            proper implementations.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.handshake_failure">
+            Reception of a handshake_failure alert message indicates that the sender was unable to
+            negotiate an acceptable set of security parameters given the options available. This is a
+            fatal error.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.no_certificate">
+            This alert was used in SSLv3 but not any version of TLS. It MUST NOT be sent by compliant
+            implementations.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.bad_certificate">
+            A certificate was corrupt, contained signatures that did not verify correctly, etc.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.unsupported_certificate">
+            A certificate was of an unsupported type.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.certificate_revoked">
+            A certificate was revoked by its signer.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.certificate_expired">
+            A certificate has expired or is not currently valid.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.certificate_unknown">
+            Some other (unspecified) issue arose in processing the certificate, rendering it
+            unacceptable.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.illegal_parameter">
+            A field in the handshake was out of range or inconsistent with other fields. This message is
+            always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.unknown_ca">
+            A valid certificate chain or partial chain was received, but the certificate was not accepted
+            because the CA certificate could not be located or couldn't be matched with a known, trusted
+            CA. This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.access_denied">
+            A valid certificate was received, but when access control was applied, the sender decided not
+            to proceed with negotiation. This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.decode_error">
+            A message could not be decoded because some field was out of the specified range or the
+            length of the message was incorrect. This message is always fatal and should never be
+            observed in communication between proper implementations (except when messages were corrupted
+            in the network).
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.decrypt_error">
+            A handshake cryptographic operation failed, including being unable to correctly verify a
+            signature or validate a Finished message. This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.export_restriction">
+            This alert was used in some earlier versions of TLS. It MUST NOT be sent by compliant
+            implementations.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.protocol_version">
+            The protocol version the client has attempted to negotiate is recognized but not supported.
+            (For example, old protocol versions might be avoided for security reasons.) This message is
+            always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.insufficient_security">
+            Returned instead of handshake_failure when a negotiation has failed specifically because the
+            server requires ciphers more secure than those supported by the client. This message is
+            always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.internal_error">
+            An internal error unrelated to the peer or the correctness of the protocol (such as a memory
+            allocation failure) makes it impossible to continue. This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.user_canceled">
+            This handshake is being canceled for some reason unrelated to a protocol failure. If the user
+            cancels an operation after the handshake is complete, just closing the connection by sending
+            a close_notify is more appropriate. This alert should be followed by a close_notify. This
+            message is generally a warning.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.no_renegotiation">
+            Sent by the client in response to a hello request or by the server in response to a client
+            hello after initial handshaking. Either of these would normally lead to renegotiation; when
+            that is not appropriate, the recipient should respond with this alert. At that point, the
+            original requester can decide whether to proceed with the connection. One case where this
+            would be appropriate is where a server has spawned a process to satisfy a request; the
+            process might receive security parameters (key length, authentication, etc.) at startup, and
+            it might be difficult to communicate changes to these parameters after that point. This
+            message is always a warning.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.unsupported_extension">
+            Sent by clients that receive an extended server hello containing an extension that they did
+            not put in the corresponding client hello. This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.certificate_unobtainable">
+            This alert is sent by servers who are unable to retrieve a certificate chain from the URL
+            supplied by the client (see Section 3.3). This message MAY be fatal - for example if client
+            authentication is required by the server for the handshake to continue and the server is
+            unable to retrieve the certificate chain, it may send a fatal alert.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.unrecognized_name">
+            This alert is sent by servers that receive a server_name extension request, but do not
+            recognize the server name. This message MAY be fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.bad_certificate_status_response">
+            This alert is sent by clients that receive an invalid certificate status response (see
+            Section 3.6). This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.bad_certificate_hash_value">
+            This alert is sent by servers when a certificate hash does not match a client provided
+            certificate_hash. This message is always fatal.
+        </member>
+        <member name="F:Org.BouncyCastle.Crypto.Tls.AlertDescription.unknown_psk_identity">
+            If the server does not recognize the PSK identity, it MAY respond with an
+            "unknown_psk_identity" alert message.
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.AlertLevel">
+            <summary>
+            RFC 5246 7.2
+            </summary>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.AlwaysValidVerifyer.IsValid(Org.BouncyCastle.Asn1.X509.X509CertificateStructure[])">
-            <summary>Return true.</summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.BulkCipherAlgorithm">
+            <summary>RFC 2246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.ByteQueue">
             <remarks>
@@ -13139,7 +14848,7 @@
             </p>
             </remarks>
         </member>
-        <member name="F:Org.BouncyCastle.Crypto.Tls.ByteQueue.InitBufSize">
+        <member name="F:Org.BouncyCastle.Crypto.Tls.ByteQueue.DefaultCapacity">
             The initial size for our buffer.
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.ByteQueue.NextTwoPow(System.Int32)">
@@ -13175,216 +14884,273 @@
             <summary>The number of bytes which are available in this buffer.</summary>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.Certificate">
-            A representation for a certificate chain.
+             Parsing and encoding of a <i>Certificate</i> struct from RFC 4346.
+             <p/>
+             <pre>
+             opaque ASN.1Cert&lt;2^24-1&gt;;
+            
+             struct {
+                 ASN.1Cert certificate_list&lt;0..2^24-1&gt;;
+             } Certificate;
+             </pre>
+            
+             @see Org.BouncyCastle.Asn1.X509.X509CertificateStructure
         </member>
-        <member name="F:Org.BouncyCastle.Crypto.Tls.Certificate.certs">
+        <member name="F:Org.BouncyCastle.Crypto.Tls.Certificate.mCertificateList">
             The certificates.
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.Certificate.GetCertificateList">
+            @return an array of {@link org.bouncycastle.asn1.x509.Certificate} representing a certificate
+                    chain.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.Certificate.Encode(System.IO.Stream)">
+             Encode this {@link Certificate} to a {@link Stream}.
+            
+             @param output the {@link Stream} to encode to.
+             @throws IOException
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.Certificate.Parse(System.IO.Stream)">
-             Parse the ServerCertificate message.
+             Parse a {@link Certificate} from a {@link Stream}.
             
-             @param inStr The stream where to parse from.
-             @return A Certificate object with the certs, the server has sended.
-             @throws IOException If something goes wrong during parsing.
+             @param input the {@link Stream} to parse from.
+             @return a {@link Certificate} object.
+             @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.Certificate.Encode(System.IO.Stream)">
-             Encodes version of the ClientCertificate message
+        <member name="P:Org.BouncyCastle.Crypto.Tls.Certificate.IsEmpty">
+            @return <code>true</code> if this certificate chain contains no certificates, or
+                    <code>false</code> otherwise.
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.CertificateRequest">
+             Parsing and encoding of a <i>CertificateRequest</i> struct from RFC 4346.
+             <p/>
+             <pre>
+             struct {
+                 ClientCertificateType certificate_types&lt;1..2^8-1&gt;;
+                 DistinguishedName certificate_authorities&lt;3..2^16-1&gt;
+             } CertificateRequest;
+             </pre>
+            
+             @see ClientCertificateType
+             @see X509Name
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateRequest.#ctor(System.Byte[],System.Collections.IList,System.Collections.IList)">
+            @param certificateTypes       see {@link ClientCertificateType} for valid constants.
+            @param certificateAuthorities an {@link IList} of {@link X509Name}.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateRequest.Encode(System.IO.Stream)">
+             Encode this {@link CertificateRequest} to a {@link Stream}.
             
-             @param outStr stream to write the message to
-             @throws IOException If something goes wrong
+             @param output the {@link Stream} to encode to.
+             @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.Certificate.#ctor(Org.BouncyCastle.Asn1.X509.X509CertificateStructure[])">
-             Private constructor from a cert array.
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateRequest.Parse(Org.BouncyCastle.Crypto.Tls.TlsContext,System.IO.Stream)">
+            Parse a {@link CertificateRequest} from a {@link Stream}.
             
-             @param certs The certs the chain should contain.
+            @param context
+                       the {@link TlsContext} of the current connection.
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link CertificateRequest} object.
+            @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.Certificate.GetCerts">
-            <returns>An array which contains the certs, this chain contains.</returns>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.CertificateRequest.CertificateTypes">
+            @return an array of certificate types
+            @see {@link ClientCertificateType}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.CertificateRequest.SupportedSignatureAlgorithms">
+            @return an {@link IList} of {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
         </member>
         <member name="P:Org.BouncyCastle.Crypto.Tls.CertificateRequest.CertificateAuthorities">
-            <returns>A <see cref="T:System.Collections.IList"/> of X509Name</returns>
+            @return an {@link IList} of {@link X509Name}
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateStatus.Encode(System.IO.Stream)">
+            Encode this {@link CertificateStatus} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateStatus.Parse(System.IO.Stream)">
+            Parse a {@link CertificateStatus} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link CertificateStatus} object.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateStatusRequest.Encode(System.IO.Stream)">
+            Encode this {@link CertificateStatusRequest} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateStatusRequest.Parse(System.IO.Stream)">
+            Parse a {@link CertificateStatusRequest} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link CertificateStatusRequest} object.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateUrl.#ctor(System.Byte,System.Collections.IList)">
+            @param type
+                       see {@link CertChainType} for valid constants.
+            @param urlAndHashList
+                       a {@link IList} of {@link UrlAndHash}.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateUrl.Encode(System.IO.Stream)">
+             Encode this {@link CertificateUrl} to a {@link Stream}.
+            
+             @param output the {@link Stream} to encode to.
+             @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.CertificateUrl.parse(Org.BouncyCastle.Crypto.Tls.TlsContext,System.IO.Stream)">
+            Parse a {@link CertificateUrl} from a {@link Stream}.
+            
+            @param context
+                       the {@link TlsContext} of the current connection.
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link CertificateUrl} object.
+            @throws IOException
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.CertificateUrl.Type">
+            @return {@link CertChainType}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.CertificateUrl.UrlAndHashList">
+            @return an {@link IList} of {@link UrlAndHash} 
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsCipher.EncodePlaintext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsCipher.DecodeCiphertext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.Chacha20Poly1305.#ctor(Org.BouncyCastle.Crypto.Tls.TlsContext)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.Chacha20Poly1305.EncodePlaintext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.Chacha20Poly1305.DecodeCiphertext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.Chacha20Poly1305.GetAdditionalData(System.Int64,System.Byte,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.CipherSuite">
             <summary>
             RFC 2246 A.5
             </summary>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.ClientCertificateType">
-            <summary>
-            RFC 2246 7.4.4
-            </summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.CipherType">
+            <summary>RFC 2246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.CombinedHash">
-            <remarks>A combined hash, which implements md5(m) || sha1(m).</remarks>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.CombinedHash.GetByteLength">
-            <seealso cref="M:Org.BouncyCastle.Crypto.IDigest.GetByteLength"/>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.CombinedHash.GetDigestSize">
-            <seealso cref="M:Org.BouncyCastle.Crypto.IDigest.GetDigestSize"/>
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.CombinedHash.Update(System.Byte)">
-            <seealso cref="M:Org.BouncyCastle.Crypto.IDigest.Update(System.Byte)"/>
+            A combined hash, which implements md5(m) || sha1(m).
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.CombinedHash.BlockUpdate(System.Byte[],System.Int32,System.Int32)">
-            <seealso cref="M:Org.BouncyCastle.Crypto.IDigest.BlockUpdate(System.Byte[],System.Int32,System.Int32)"/>
+            @see org.bouncycastle.crypto.Digest#update(byte[], int, int)
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.CombinedHash.DoFinal(System.Byte[],System.Int32)">
-            <seealso cref="M:Org.BouncyCastle.Crypto.IDigest.DoFinal(System.Byte[],System.Int32)"/>
+            @see org.bouncycastle.crypto.Digest#doFinal(byte[], int)
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.CombinedHash.Reset">
-            <seealso cref="M:Org.BouncyCastle.Crypto.IDigest.Reset"/>
-        </member>
-        <member name="P:Org.BouncyCastle.Crypto.Tls.CombinedHash.AlgorithmName">
-            <seealso cref="P:Org.BouncyCastle.Crypto.IDigest.AlgorithmName"/>
+            @see org.bouncycastle.crypto.Digest#reset()
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.CompressionMethod">
             <summary>
             RFC 2246 6.1
             </summary>
         </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.ConnectionEnd">
+            <summary>RFC 2246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
+        </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.ContentType">
-            <summary>
             RFC 2246 6.2.1
-            </summary>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAgreementCredentials.GenerateAgreement(Org.BouncyCastle.Crypto.AsymmetricKeyParameter)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsAgreementCredentials.GenerateAgreement(Org.BouncyCastle.Crypto.AsymmetricKeyParameter)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsCipherFactory.CreateCipher(Org.BouncyCastle.Crypto.Tls.TlsClientContext,Org.BouncyCastle.Crypto.Tls.EncryptionAlgorithm,Org.BouncyCastle.Crypto.Tls.DigestAlgorithm)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateAesCipher(Org.BouncyCastle.Crypto.Tls.TlsClientContext,System.Int32,Org.BouncyCastle.Crypto.Tls.DigestAlgorithm)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateAESCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateDesEdeCipher(Org.BouncyCastle.Crypto.Tls.TlsClientContext,System.Int32,Org.BouncyCastle.Crypto.Tls.DigestAlgorithm)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateCamelliaCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateDigest(Org.BouncyCastle.Crypto.Tls.DigestAlgorithm)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateChaCha20Poly1305(Org.BouncyCastle.Crypto.Tls.TlsContext)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.Init(Org.BouncyCastle.Crypto.Tls.TlsClientContext)">
-            <summary>
-            Called at the start of a new TLS session, before any other methods.
-            </summary>
-            <param name="context">
-            A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler"/>
-            </param>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateCipher_Aes_Ccm(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCipherSuites">
-            <summary>
-            Get the list of cipher suites that this client supports.
-            </summary>
-            <returns>
-            An array of <see cref="T:Org.BouncyCastle.Crypto.Tls.CipherSuite"/>, each specifying a supported cipher suite.
-            </returns>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateCipher_Aes_Gcm(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCompressionMethods">
-            <summary>
-            Get the list of compression methods that this client supports.
-            </summary>
-            <returns>
-            An array of <see cref="T:Org.BouncyCastle.Crypto.Tls.CompressionMethod"/>, each specifying a supported compression method.
-            </returns>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateCipher_Camellia_Gcm(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetClientExtensions">
-            <summary>
-            Get the (optional) table of client extensions to be included in (extended) client hello.
-            </summary>
-            <returns>
-            A <see cref="T:System.Collections.IDictionary"/> (<see cref="T:Org.BouncyCastle.Crypto.Tls.ExtensionType"/> -&gt; byte[]). May be null.
-            </returns>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateDesEdeCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySessionID(System.Byte[])">
-            <summary>
-            Reports the session ID once it has been determined.
-            </summary>
-            <param name="sessionID">
-            A <see cref="T:System.Byte"/>
-            </param>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateNullCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySelectedCipherSuite(Org.BouncyCastle.Crypto.Tls.CipherSuite)">
-            <summary>
-            Report the cipher suite that was selected by the server.
-            </summary>
-            <remarks>
-            The protocol handler validates this value against the offered cipher suites
-            <seealso cref="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCipherSuites"/>
-            </remarks>
-            <param name="selectedCipherSuite">
-            A <see cref="T:Org.BouncyCastle.Crypto.Tls.CipherSuite"/>
-            </param>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateRC4Cipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySelectedCompressionMethod(Org.BouncyCastle.Crypto.Tls.CompressionMethod)">
-            <summary>
-            Report the compression method that was selected by the server.
-            </summary>
-            <remarks>
-            The protocol handler validates this value against the offered compression methods
-            <seealso cref="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCompressionMethods"/>
-            </remarks>
-            <param name="selectedCompressionMethod">
-            A <see cref="T:Org.BouncyCastle.Crypto.Tls.CompressionMethod"/>
-            </param>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateSalsa20Cipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32,System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.NotifySecureRenegotiation(System.Boolean)">
-            <summary>
-            Report whether the server supports secure renegotiation
-            </summary>
-            <remarks>
-            The protocol handler automatically processes the relevant extensions
-            </remarks>
-            <param name="secureRenegotiation">
-            A <see cref="T:System.Boolean"/>, true if the server supports secure renegotiation
-            </param>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateSeedCipher(Org.BouncyCastle.Crypto.Tls.TlsContext,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.ProcessServerExtensions(System.Collections.IDictionary)">
-            <summary>
-            Report the extensions from an extended server hello.
-            </summary>
-            <remarks>
-            Will only be called if we returned a non-null result from <see cref="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetClientExtensions"/>.
-            </remarks>
-            <param name="serverExtensions">
-            A <see cref="T:System.Collections.IDictionary"/>  (<see cref="T:Org.BouncyCastle.Crypto.Tls.ExtensionType"/> -&gt; byte[])
-            </param>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsCipherFactory.CreateHMacDigest(System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetKeyExchange">
-            <summary>
-            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange"/> to negotiate the key exchange
-            part of the protocol.
-            </summary>
-            <returns>
-            A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange"/>
-            </returns>
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsEncryptionCredentials.DecryptPreMasterSecret(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetAuthentication">
-            <summary>
-            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsAuthentication"/> to handle authentication
-            part of the protocol.
-            </summary>
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DefaultTlsSignerCredentials.GenerateCertificateSignature(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCompression">
-            <summary>
-            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCompression"/> to handle record compression.
-            </summary>
-            <exception cref="T:System.IO.IOException"/>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.DeferredHash">
+            Buffers input until the hash algorithm is determined.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClient.GetCipher">
-            <summary>
-            Return an implementation of <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCipher"/> to use for encryption/decryption.
-            </summary>
-            <returns>
-            A <see cref="T:Org.BouncyCastle.Crypto.Tls.TlsCipher"/>
-            </returns>
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DigitallySigned.Encode(System.IO.Stream)">
+            Encode this {@link DigitallySigned} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsSignerCredentials.GenerateCertificateSignature(System.Byte[])">
-            <exception cref="T:System.IO.IOException"></exception>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.DigitallySigned.Parse(Org.BouncyCastle.Crypto.Tls.TlsContext,System.IO.Stream)">
+            Parse a {@link DigitallySigned} from a {@link Stream}.
+            
+            @param context
+                       the {@link TlsContext} of the current connection.
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link DigitallySigned} object.
+            @throws IOException
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.DigitallySigned.Algorithm">
+            @return a {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.ECBasisType">
+            <summary>RFC 4492 5.4. (Errata ID: 2389)</summary>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.ECCurveType">
             <summary>
@@ -13407,21 +15173,201 @@
             RFC 4492 5.1.2
             </summary>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.ExtensionType">
-            <summary>
-            RFC 4366 2.3
-            </summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.EncryptionAlgorithm">
+            <summary>RFC 2246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.HandshakeType">
-            <summary>
-            RFC 2246 7.4
-            </summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.ExporterLabel">
+            <summary>RFC 5705</summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.HashAlgorithm">
+            <summary>RFC 5246 7.4.1.4.1</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.HeartbeatExtension.Encode(System.IO.Stream)">
+            Encode this {@link HeartbeatExtension} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.HeartbeatExtension.Parse(System.IO.Stream)">
+            Parse a {@link HeartbeatExtension} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link HeartbeatExtension} object.
+            @throws IOException
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.LegacyTlsAuthentication">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.HeartbeatMessage.Encode(Org.BouncyCastle.Crypto.Tls.TlsContext,System.IO.Stream)">
+            Encode this {@link HeartbeatMessage} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.HeartbeatMessage.Parse(System.IO.Stream)">
+            Parse a {@link HeartbeatMessage} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link HeartbeatMessage} object.
+            @throws IOException
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.KeyExchangeAlgorithm">
+            <summary>RFC 2246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.MacAlgorithm">
+            <summary>RFC 2246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.NamedCurve">
             <summary>
-            A temporary class to wrap old CertificateVerifyer stuff for new TlsAuthentication.
+            RFC 4492 5.1.1
+            The named curves defined here are those specified in SEC 2 [13]. Note that many of
+            these curves are also recommended in ANSI X9.62 [7] and FIPS 186-2 [11]. Values 0xFE00
+            through 0xFEFF are reserved for private use. Values 0xFF01 and 0xFF02 indicate that the
+            client supports arbitrary prime and characteristic-2 curves, respectively (the curve
+            parameters must be encoded explicitly in ECParameters).
             </summary>
         </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.NewSessionTicket.Encode(System.IO.Stream)">
+             Encode this {@link NewSessionTicket} to a {@link Stream}.
+            
+             @param output the {@link Stream} to encode to.
+             @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.NewSessionTicket.Parse(System.IO.Stream)">
+             Parse a {@link NewSessionTicket} from a {@link Stream}.
+            
+             @param input the {@link Stream} to parse from.
+             @return a {@link NewSessionTicket} object.
+             @throws IOException
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.OcspStatusRequest">
+            RFC 3546 3.6
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.OcspStatusRequest.#ctor(System.Collections.IList,Org.BouncyCastle.Asn1.X509.X509Extensions)">
+            @param responderIDList
+                       an {@link IList} of {@link ResponderID}, specifying the list of trusted OCSP
+                       responders. An empty list has the special meaning that the responders are
+                       implicitly known to the server - e.g., by prior arrangement.
+            @param requestExtensions
+                       OCSP request extensions. A null value means that there are no extensions.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.OcspStatusRequest.Encode(System.IO.Stream)">
+            Encode this {@link OcspStatusRequest} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.OcspStatusRequest.Parse(System.IO.Stream)">
+            Parse a {@link OcspStatusRequest} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return an {@link OcspStatusRequest} object.
+            @throws IOException
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.OcspStatusRequest.ResponderIDList">
+            @return an {@link IList} of {@link ResponderID}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.OcspStatusRequest.RequestExtensions">
+            @return OCSP request extensions
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.PrfAlgorithm">
+            <summary>RFC 5246</summary>
+            <remarks>
+            Note that the values here are implementation-specific and arbitrary. It is recommended not to
+            depend on the particular values (e.g. serialization).
+            </remarks>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ProtocolVersion.Get(System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"/>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.RecordStream">
+            <summary>An implementation of the TLS 1.0/1.1/1.2 record layer, allowing downgrade to SSLv3.</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.RecordStream.SetRestrictReadVersion(System.Boolean)">
+            RFC 5246 E.1. "Earlier versions of the TLS specification were not fully clear on what the
+            record layer version number (TLSPlaintext.version) should contain when sending ClientHello
+            (i.e., before it is known which version of the protocol will be employed). Thus, TLS servers
+            compliant with this specification MUST accept any value {03,XX} as the record layer version
+            number for ClientHello."
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.SecurityParameters.Entity">
+            @return {@link ConnectionEnd}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.SecurityParameters.CipherSuite">
+            @return {@link CipherSuite}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.SecurityParameters.CompressionAlgorithm">
+            @return {@link CompressionMethod}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.SecurityParameters.PrfAlgorithm">
+            @return {@link PRFAlgorithm}
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerDHParams.Encode(System.IO.Stream)">
+            Encode this {@link ServerDHParams} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerDHParams.Parse(System.IO.Stream)">
+            Parse a {@link ServerDHParams} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link ServerDHParams} object.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerName.Encode(System.IO.Stream)">
+            Encode this {@link ServerName} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerName.Parse(System.IO.Stream)">
+            Parse a {@link ServerName} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link ServerName} object.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerNameList.#ctor(System.Collections.IList)">
+            @param serverNameList an {@link IList} of {@link ServerName}.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerNameList.Encode(System.IO.Stream)">
+            Encode this {@link ServerNameList} to a {@link Stream}.
+            
+            @param output
+                       the {@link Stream} to encode to.
+            @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.ServerNameList.Parse(System.IO.Stream)">
+            Parse a {@link ServerNameList} from a {@link Stream}.
+            
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link ServerNameList} object.
+            @throws IOException
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.ServerNameList.ServerNames">
+            @return an {@link IList} of {@link ServerName}.
+        </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAuthentication.NotifyServerCertificate(Org.BouncyCastle.Crypto.Tls.Certificate)">
             <summary>
             Called by the protocol handler to report the server certificate.
@@ -13445,23 +15391,34 @@
             </returns>
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.LegacyTlsClient">
-            <summary>
-            A temporary class to use LegacyTlsAuthentication 
-            </summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.SignatureAlgorithm">
+            RFC 5246 7.4.1.4.1 (in RFC 2246, there were no specific values assigned)
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.NamedCurve">
-            <summary>
-            RFC 4492 5.1.1
-            The named curves defined here are those specified in SEC 2 [13]. Note that many of
-            these curves are also recommended in ANSI X9.62 [7] and FIPS 186-2 [11]. Values 0xFE00
-            through 0xFEFF are reserved for private use. Values 0xFF01 and 0xFF02 indicate that the
-            client supports arbitrary prime and characteristic-2 curves, respectively (the curve
-            parameters must be encoded explicitly in ECParameters).
-            </summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.SignatureAndHashAlgorithm">
+            RFC 5246 7.4.1.4.1
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.RecordStream">
-            <remarks>An implementation of the TLS 1.0 record layer.</remarks>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.SignatureAndHashAlgorithm.#ctor(System.Byte,System.Byte)">
+            @param hash      {@link HashAlgorithm}
+            @param signature {@link SignatureAlgorithm}
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.SignatureAndHashAlgorithm.Encode(System.IO.Stream)">
+             Encode this {@link SignatureAndHashAlgorithm} to a {@link Stream}.
+            
+             @param output the {@link Stream} to encode to.
+             @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.SignatureAndHashAlgorithm.Parse(System.IO.Stream)">
+             Parse a {@link SignatureAndHashAlgorithm} from a {@link Stream}.
+            
+             @param input the {@link Stream} to parse from.
+             @return a {@link SignatureAndHashAlgorithm} object.
+             @throws IOException
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.SignatureAndHashAlgorithm.Hash">
+            @return {@link HashAlgorithm}
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.SignatureAndHashAlgorithm.Signature">
+            @return {@link SignatureAlgorithm}
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.Ssl3Mac">
             HMAC implementation based on original internet draft for HMAC (RFC 2104)
@@ -13479,184 +15436,304 @@
         <member name="M:Org.BouncyCastle.Crypto.Tls.Ssl3Mac.Reset">
             Reset the mac generator.
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsBlockCipher">
-            <summary>
-            A generic TLS 1.0 block cipher. This can be used for AES or 3DES for example.
-            </summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.SupplementalDataType">
+            <summary>RFC 4680</summary>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsCipher.EncodePlaintext(Org.BouncyCastle.Crypto.Tls.ContentType,System.Byte[],System.Int32,System.Int32)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAeadCipher.#ctor(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher,Org.BouncyCastle.Crypto.Modes.IAeadBlockCipher,System.Int32,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsCipher.DecodeCiphertext(Org.BouncyCastle.Crypto.Tls.ContentType,System.Byte[],System.Int32,System.Int32)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAeadCipher.EncodePlaintext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
             <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsDHKeyExchange">
-            <summary>
-            TLS 1.0 DH key exchange.
-            </summary>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAeadCipher.DecodeCiphertext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsAeadCipher.GetAdditionalData(System.Int64,System.Byte,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsBlockCipher">
             <summary>
-            A generic interface for key exchange implementations in TLS 1.0.
+            A generic TLS 1.0-1.2 / SSLv3 block cipher. This can be used for AES or 3DES for example.
             </summary>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.SkipServerCertificate">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsBlockCipher.#ctor(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.IBlockCipher,Org.BouncyCastle.Crypto.IBlockCipher,Org.BouncyCastle.Crypto.IDigest,Org.BouncyCastle.Crypto.IDigest,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessServerCertificate(Org.BouncyCastle.Crypto.Tls.Certificate)">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsBlockCipher.DecodeCiphertext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.SkipServerKeyExchange">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.ProcessChangeCipherSpec(System.Byte[],System.Int32,System.Int32)">
+             This method is called, when a change cipher spec message is received.
+            
+             @throws IOException If the message has an invalid content or the handshake is not in the correct
+             state.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessServerKeyExchange(System.IO.Stream)">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.ReadApplicationData(System.Byte[],System.Int32,System.Int32)">
+             Read data from the network. The method will return immediately, if there is still some data
+             left in the buffer, or block until some application data has been read from the network.
+            
+             @param buf    The buffer where the data will be copied to.
+             @param offset The position where the data will be placed in the buffer.
+             @param len    The maximum number of bytes to read.
+             @return The number of bytes read.
+             @throws IOException If something goes wrong during reading data.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ValidateCertificateRequest(Org.BouncyCastle.Crypto.Tls.CertificateRequest)">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.WriteData(System.Byte[],System.Int32,System.Int32)">
+             Send some application data to the remote system.
+             <p/>
+             The method will handle fragmentation internally.
+            
+             @param buf    The buffer with the data.
+             @param offset The position in the buffer where the data is placed.
+             @param len    The length of the data.
+             @throws IOException If something goes wrong during sending.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.SkipClientCredentials">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.FailWithError(System.Byte,System.Byte,System.String,System.Exception)">
+            Terminate this connection with an alert. Can be used for normal closure too.
+            
+            @param alertLevel
+                       See {@link AlertLevel} for values.
+            @param alertDescription
+                       See {@link AlertDescription} for values.
+            @throws IOException
+                        If alert was fatal.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.ProcessClientCredentials(Org.BouncyCastle.Crypto.Tls.TlsCredentials)">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.Close">
+             Closes this connection.
+            
+             @throws IOException If something goes wrong during closing.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.GenerateClientKeyExchange(System.IO.Stream)">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.AssertEmpty(System.IO.MemoryStream)">
+             Make sure the InputStream 'buf' now empty. Fail otherwise.
+            
+             @param buf The InputStream to check.
+             @throws IOException If 'buf' is not empty.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsKeyExchange.GeneratePremasterSecret">
-            <exception cref="T:System.IO.IOException"/>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocol.GetCurrentPrfHash(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.Tls.TlsHandshakeHash,System.Byte[])">
+            'sender' only relevant to SSLv3
+        </member>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsProtocol.Stream">
+            <summary>The secure bidirectional stream for this connection</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsClientProtocol.Connect(Org.BouncyCastle.Crypto.Tls.TlsClient)">
+             Initiates a TLS handshake in the role of client
+            
+             @param tlsClient The {@link TlsClient} to use for the handshake.
+             @throws IOException If handshake was not successful.
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsDHKeyExchange">
+            <summary>(D)TLS DH key exchange.</summary>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.TlsECDheKeyExchange">
-            ECDHE key exchange (see RFC 4492)
+            <summary>(D)TLS ECDHE key exchange (see RFC 4492).</summary>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.TlsECDHKeyExchange">
-            ECDH key exchange (see RFC 4492)
+            <summary>(D)TLS ECDH key exchange (see RFC 4492).</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.AddHeartbeatExtension(System.Collections.IDictionary,Org.BouncyCastle.Crypto.Tls.HeartbeatExtension)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.AddMaxFragmentLengthExtension(System.Collections.IDictionary,System.Byte)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.AddServerNameExtension(System.Collections.IDictionary,Org.BouncyCastle.Crypto.Tls.ServerNameList)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.AddStatusRequestExtension(System.Collections.IDictionary,Org.BouncyCastle.Crypto.Tls.CertificateStatusRequest)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.GetHeartbeatExtension(System.Collections.IDictionary)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.GetMaxFragmentLengthExtension(System.Collections.IDictionary)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.GetServerNameExtension(System.Collections.IDictionary)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.GetStatusRequestExtension(System.Collections.IDictionary)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.HasEncryptThenMacExtension(System.Collections.IDictionary)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.HasTruncatedHMacExtension(System.Collections.IDictionary)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.CreateHeartbeatExtension(Org.BouncyCastle.Crypto.Tls.HeartbeatExtension)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.CreateMaxFragmentLengthExtension(System.Byte)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.CreateServerNameExtension(Org.BouncyCastle.Crypto.Tls.ServerNameList)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.CreateStatusRequestExtension(Org.BouncyCastle.Crypto.Tls.CertificateStatusRequest)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadEmptyExtensionData(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadEncryptThenMacExtension(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadHeartbeatExtension(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadMaxFragmentLengthExtension(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadServerNameExtension(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadStatusRequestExtension(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsExtensionsUtilities.ReadTruncatedHMacExtension(System.Byte[])">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.TlsMac">
-            <remarks>
-            A generic TLS MAC implementation, which can be used with any kind of
-            IDigest to act as an HMAC.
-            </remarks>
+            <summary>
+            A generic TLS MAC implementation, acting as an HMAC based on some underlying Digest.
+            </summary>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsMac.#ctor(Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Int32,System.Int32)">
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsMac.#ctor(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.IDigest,System.Byte[],System.Int32,System.Int32)">
              Generate a new instance of an TlsMac.
             
-             @param digest    The digest to use.
-             @param key_block A byte-array where the key for this mac is located.
-             @param offset    The number of bytes to skip, before the key starts in the buffer.
-             @param len       The length of the key.
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsMac.GetMacSecret">
-            @return the MAC write secret
+             @param context the TLS client context
+             @param digest  The digest to use.
+             @param key     A byte-array where the key for this MAC is located.
+             @param keyOff  The number of bytes to skip, before the key starts in the buffer.
+             @param keyLen  The length of the key.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsMac.IncSequenceNumber">
-            Increment the current write sequence number
-        </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsMac.CalculateMac(Org.BouncyCastle.Crypto.Tls.ContentType,System.Byte[],System.Int32,System.Int32)">
-             Calculate the mac for some given data.
-             <p/>
-             TlsMac will keep track of the sequence number internally.
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsMac.CalculateMac(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+             Calculate the MAC for some given data.
             
              @param type    The message type of the message.
              @param message A byte-buffer containing the message.
              @param offset  The number of bytes to skip, before the message starts.
-             @param len     The length of the message.
-             @return A new byte-buffer containing the mac value.
+             @param length  The length of the message.
+             @return A new byte-buffer containing the MAC value.
         </member>
-        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsMac.SequenceNumber">
-            @return the current write sequence number
+        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsMac.MacSecret">
+            @return the MAC write secret
         </member>
         <member name="P:Org.BouncyCastle.Crypto.Tls.TlsMac.Size">
-            @return The Keysize of the mac.
+            @return The output length of this MAC.
         </member>
         <member name="T:Org.BouncyCastle.Crypto.Tls.TlsNullCipher">
             <summary>
-            A NULL cipher suite, for use during handshake.
+            A NULL CipherSuite, with optional MAC.
             </summary>
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler">
-            <remarks>An implementation of all high level protocols in TLS 1.0.</remarks>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsNullCipher.#ctor(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.IDigest,Org.BouncyCastle.Crypto.IDigest)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.#ctor(System.IO.Stream,System.IO.Stream)">
-            <remarks>Both streams can be the same object</remarks>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsNullCipher.EncodePlaintext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsNullCipher.DecodeCiphertext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
         <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.#ctor(System.IO.Stream,System.IO.Stream,Org.BouncyCastle.Security.SecureRandom)">
             <remarks>Both streams can be the same object</remarks>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.ProcessChangeCipherSpec">
-             This method is called, when a change cipher spec message is received.
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsPskKeyExchange">
+            <summary>(D)TLS PSK key exchange (RFC 4279).</summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsRsaKeyExchange">
+            <summary>(D)TLS and SSLv3 RSA key exchange.</summary>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsRsaUtilities.GenerateEncryptedPreMasterSecret(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.Parameters.RsaKeyParameters,System.IO.Stream)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsServerProtocol.Accept(Org.BouncyCastle.Crypto.Tls.TlsServer)">
+             Receives a TLS handshake in the role of server
             
-             @throws IOException If the message has an invalid content or the
-                                 handshake is not in the correct state.
+             @param mTlsServer
+             @throws IOException If handshake was not successful.
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsSrpKeyExchange">
+            <summary>(D)TLS SRP key exchange (RFC 5054).</summary>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsSRTPUtils">
+            RFC 5764 DTLS Extension to Establish Keys for SRTP.
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsStreamCipher.#ctor(Org.BouncyCastle.Crypto.Tls.TlsContext,Org.BouncyCastle.Crypto.IStreamCipher,Org.BouncyCastle.Crypto.IStreamCipher,Org.BouncyCastle.Crypto.IDigest,Org.BouncyCastle.Crypto.IDigest,System.Int32,System.Boolean)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsStreamCipher.DecodeCiphertext(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.Connect(Org.BouncyCastle.Crypto.Tls.ICertificateVerifyer)">
-            <summary>Connects to the remote system.</summary>
-            <param name="verifyer">Will be used when a certificate is received to verify
-            that this certificate is accepted by the client.</param>
-            <exception cref="T:System.IO.IOException">If handshake was not successful</exception>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsStreamCipher.CheckMac(System.Int64,System.Byte,System.Byte[],System.Int32,System.Int32,System.Byte[],System.Int32,System.Int32)">
+            <exception cref="T:System.IO.IOException"></exception>
+        </member>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsUtilities">
+            <remarks>Some helper functions for MicroTLS.</remarks>
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.ReadApplicationData(System.Byte[],System.Int32,System.Int32)">
-             Read data from the network. The method will return immediately, if there is
-             still some data left in the buffer, or block until some application
-             data has been read from the network.
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsUtilities.AddSignatureAlgorithmsExtension(System.Collections.IDictionary,System.Collections.IList)">
+             Add a 'signature_algorithms' extension to existing extensions.
             
-             @param buf    The buffer where the data will be copied to.
-             @param offset The position where the data will be placed in the buffer.
-             @param len    The maximum number of bytes to read.
-             @return The number of bytes read.
-             @throws IOException If something goes wrong during reading data.
+             @param extensions                   A {@link Hashtable} to add the extension to.
+             @param supportedSignatureAlgorithms {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+             @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.WriteData(System.Byte[],System.Int32,System.Int32)">
-             Send some application data to the remote system.
-             <p/>
-             The method will handle fragmentation internally.
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsUtilities.GetSignatureAlgorithmsExtension(System.Collections.IDictionary)">
+             Get a 'signature_algorithms' extension from extensions.
             
-             @param buf    The buffer with the data.
-             @param offset The position in the buffer where the data is placed.
-             @param len    The length of the data.
-             @throws IOException If something goes wrong during sending.
+             @param extensions A {@link Hashtable} to get the extension from, if it is present.
+             @return A {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}, or null.
+             @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.FailWithError(Org.BouncyCastle.Crypto.Tls.AlertLevel,Org.BouncyCastle.Crypto.Tls.AlertDescription)">
-             Terminate this connection with an alert.
-             <p/>
-             Can be used for normal closure too.
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsUtilities.CreateSignatureAlgorithmsExtension(System.Collections.IList)">
+             Create a 'signature_algorithms' extension value.
+            
+             @param supportedSignatureAlgorithms A {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+             @return A byte array suitable for use as an extension value.
+             @throws IOException
+        </member>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsUtilities.ReadSignatureAlgorithmsExtension(System.Byte[])">
+             Read 'signature_algorithms' extension data.
             
-             @param alertLevel       The level of the alert, an be AlertLevel.fatal or AL_warning.
-             @param alertDescription The exact alert message.
-             @throws IOException If alert was fatal.
+             @param extensionData The extension data.
+             @return A {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+             @throws IOException
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.Close">
-            <summary>Closes this connection</summary>
-            <exception cref="T:System.IO.IOException">If something goes wrong during closing.</exception>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.UrlAndHash">
+            RFC 6066 5.
         </member>
-        <member name="M:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.AssertEmpty(System.IO.MemoryStream)">
-             Make sure the Stream is now empty. Fail otherwise.
+        <member name="M:Org.BouncyCastle.Crypto.Tls.UrlAndHash.Encode(System.IO.Stream)">
+             Encode this {@link UrlAndHash} to a {@link Stream}.
             
-             @param is The Stream to check.
-             @throws IOException If is is not empty.
+             @param output the {@link Stream} to encode to.
+             @throws IOException
         </member>
-        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.OutputStream">
-            <summary>A Stream which can be used to send data.</summary>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.UrlAndHash.Parse(Org.BouncyCastle.Crypto.Tls.TlsContext,System.IO.Stream)">
+            Parse a {@link UrlAndHash} from a {@link Stream}.
+            
+            @param context
+                       the {@link TlsContext} of the current connection.
+            @param input
+                       the {@link Stream} to parse from.
+            @return a {@link UrlAndHash} object.
+            @throws IOException
         </member>
-        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.InputStream">
-            <summary>A Stream which can be used to read data.</summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.UserMappingType">
+            <remarks>RFC 4681</remarks>
         </member>
-        <member name="P:Org.BouncyCastle.Crypto.Tls.TlsProtocolHandler.Stream">
-            <summary>The secure bidirectional stream for this connection</summary>
+        <member name="T:Org.BouncyCastle.Crypto.Tls.UseSrtpData">
+            RFC 5764 4.1.1
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsRsaKeyExchange">
-            <summary>
-            TLS 1.0 RSA key exchange.
-            </summary>
+        <member name="M:Org.BouncyCastle.Crypto.Tls.UseSrtpData.#ctor(System.Int32[],System.Byte[])">
+            @param protectionProfiles see {@link SrtpProtectionProfile} for valid constants.
+            @param mki                valid lengths from 0 to 255.
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsSrpKeyExchange">
-            <summary>
-            TLS 1.1 SRP key exchange.
-            </summary>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.UseSrtpData.ProtectionProfiles">
+            @return see {@link SrtpProtectionProfile} for valid constants.
         </member>
-        <member name="T:Org.BouncyCastle.Crypto.Tls.TlsUtilities">
-            <remarks>Some helper fuctions for MicroTLS.</remarks>
+        <member name="P:Org.BouncyCastle.Crypto.Tls.UseSrtpData.Mki">
+            @return valid lengths from 0 to 255.
         </member>
         <member name="M:Org.BouncyCastle.Math.BigInteger.AddMagnitudes(System.Int32[],System.Int32[])">
             return a = a + b - b preserved.
@@ -13688,7 +15765,6 @@
              @param a    First number to calculate gcd for
              @param b    Second number to calculate gcd for
              @param u1Out      the return object for the u1 value
-             @param u2Out      the return object for the u2 value
              @return     The greatest common divisor of a and b
         </member>
         <member name="M:Org.BouncyCastle.Math.BigInteger.Square(System.Int32[],System.Int32[])">
@@ -13700,7 +15776,7 @@
         <member name="M:Org.BouncyCastle.Math.BigInteger.GetMQuote">
             Calculate mQuote = -m^(-1) mod b with b = 2^32 (32 = word size)
         </member>
-        <member name="M:Org.BouncyCastle.Math.BigInteger.MultiplyMonty(System.Int32[],System.Int32[],System.Int32[],System.Int32[],System.Int64)">
+        <member name="M:Org.BouncyCastle.Math.BigInteger.MultiplyMonty(System.Int32[],System.Int32[],System.Int32[],System.Int32[],System.UInt32,System.Boolean)">
             Montgomery multiplication: a = x * y * R^(-1) mod m
             <br/>
             Based algorithm 14.36 of Handbook of Applied Cryptography.
@@ -13978,12 +16054,377 @@
         <member name="T:Org.BouncyCastle.Math.EC.ECCurve">
             <remarks>Base class for an elliptic curve.</remarks>
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.ECCurveBase.DecodePoint(System.Byte[])">
+        <member name="M:Org.BouncyCastle.Math.EC.ECCurve.SetPreCompInfo(Org.BouncyCastle.Math.EC.ECPoint,System.String,Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
+            Adds <code>PreCompInfo</code> for a point on this curve, under a given name. Used by
+            <code>ECMultiplier</code>s to save the precomputation for this <code>ECPoint</code> for use
+            by subsequent multiplication.
+            
+            @param point
+                       The <code>ECPoint</code> to store precomputations for.
+            @param name
+                       A <code>String</code> used to index precomputations of different types.
+            @param preCompInfo
+                       The values precomputed by the <code>ECMultiplier</code>.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECCurve.NormalizeAll(Org.BouncyCastle.Math.EC.ECPoint[])">
+            Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+            coordinates reflect those of the equivalent point in an affine coordinate system. Where more
+            than one point is to be normalized, this method will generally be more efficient than
+            normalizing each point separately.
+            
+            @param points
+                       An array of points that will be updated in place with their normalized versions,
+                       where necessary
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECCurve.GetMultiplier">
+            Sets the default <code>ECMultiplier</code>, unless already set. 
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECCurve.DecodePoint(System.Byte[])">
             Decode a point on this curve from its ASN.1 encoding. The different
             encodings are taken account of, including point compression for
             <code>F<sub>p</sub></code> (X9.62 s 4.2.1 pg 17).
             @return The decoded point.
         </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Djb.Curve25519FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="T:Org.BouncyCastle.Math.EC.ECPoint">
+            base class for points on elliptic curves.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECPoint.Normalize">
+            Normalization ensures that any projective coordinate is 1, and therefore that the x, y
+            coordinates reflect those of the equivalent point in an affine coordinate system.
+            
+            @return a new ECPoint instance representing the same point, but with normalized coordinates
+        </member>
+        <member name="P:Org.BouncyCastle.Math.EC.ECPoint.X">
+            Normalizes this point, and then returns the affine x-coordinate.
+            
+            Note: normalization can be expensive, this method is deprecated in favour
+            of caller-controlled normalization.
+        </member>
+        <member name="P:Org.BouncyCastle.Math.EC.ECPoint.Y">
+            Normalizes this point, and then returns the affine y-coordinate.
+            
+            Note: normalization can be expensive, this method is deprecated in favour
+            of caller-controlled normalization.
+        </member>
+        <member name="P:Org.BouncyCastle.Math.EC.ECPoint.AffineXCoord">
+            Returns the affine x-coordinate after checking that this point is normalized.
+            
+            @return The affine x-coordinate of this point
+            @throws IllegalStateException if the point is not normalized
+        </member>
+        <member name="P:Org.BouncyCastle.Math.EC.ECPoint.AffineYCoord">
+            Returns the affine y-coordinate after checking that this point is normalized
+            
+            @return The affine y-coordinate of this point
+            @throws IllegalStateException if the point is not normalized
+        </member>
+        <member name="P:Org.BouncyCastle.Math.EC.ECPoint.XCoord">
+            Returns the x-coordinate.
+            
+            Caution: depending on the curve's coordinate system, this may not be the same value as in an
+            affine coordinate system; use Normalize() to get a point where the coordinates have their
+            affine values, or use AffineXCoord if you expect the point to already have been normalized.
+            
+            @return the x-coordinate of this point
+        </member>
+        <member name="P:Org.BouncyCastle.Math.EC.ECPoint.YCoord">
+            Returns the y-coordinate.
+            
+            Caution: depending on the curve's coordinate system, this may not be the same value as in an
+            affine coordinate system; use Normalize() to get a point where the coordinates have their
+            affine values, or use AffineYCoord if you expect the point to already have been normalized.
+            
+            @return the y-coordinate of this point
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECPointBase.GetEncoded(System.Boolean)">
+            return the field element encoded with point compression. (S 4.3.6)
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECPointBase.Multiply(Org.BouncyCastle.Math.BigInteger)">
+            Multiplies this <code>ECPoint</code> by the given number.
+            @param k The multiplicator.
+            @return <code>k * this</code>.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Djb.Curve25519Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve the curve to use
+            @param x affine x co-ordinate
+            @param y affine y co-ordinate
+            
+            @deprecated Use ECCurve.CreatePoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Djb.Curve25519Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve the curve to use
+            @param x affine x co-ordinate
+            @param y affine y co-ordinate
+            @param withCompression if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP192K1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP192K1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP192K1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP192R1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP192R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP192R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP224K1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP224K1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP224K1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP224R1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP224R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP224R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP256K1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP256K1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP256K1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP256R1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP256R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP256R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP384R1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP384R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP384R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP521R1FieldElement.Sqrt">
+            return a sqrt root - the routine verifies that the calculation returns the right value - if
+            none exists it returns null.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP521R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
+            Create a point which encodes with point compression.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            
+            @deprecated Use ECCurve.createPoint to construct points
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Custom.Sec.SecP521R1Point.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
+            Create a point that encodes with or without point compresion.
+            
+            @param curve
+                       the curve to use
+            @param x
+                       affine x co-ordinate
+            @param y
+                       affine y co-ordinate
+            @param withCompression
+                       if true encode with point compression
+            
+            @deprecated per-point compression property will be removed, refer
+                        {@link #getEncoded(bool)}
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.ECAlgorithms.ReferenceMultiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
+            Simple shift-and-add multiplication. Serves as reference implementation
+            to verify (possibly faster) implementations, and for very small scalars.
+            
+            @param p
+                       The point to multiply.
+            @param k
+                       The multiplier.
+            @return The result of the point multiplication <code>kP</code>.
+        </member>
         <member name="T:Org.BouncyCastle.Math.EC.FpCurve">
             Elliptic curve over Fp
         </member>
@@ -14014,13 +16455,7 @@
             x<sup>k3</sup> + x<sup>k2</sup> + x<sup>k1</sup> + 1</code>
             represents the reduction polynomial <code>f(z)</code>.<br/>
         </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mCurve.n">
-            The order of the base point of the curve.
-        </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mCurve.h">
-            The cofactor of the curve.
-        </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mCurve.infinity">
+        <member name="F:Org.BouncyCastle.Math.EC.F2mCurve.m_infinity">
             The point at infinity on this curve.
         </member>
         <member name="F:Org.BouncyCastle.Math.EC.F2mCurve.mu">
@@ -14059,8 +16494,8 @@
             @param b The coefficient <code>b</code> in the Weierstrass equation
             for non-supersingular elliptic curves over
             <code>F<sub>2<sup>m</sup></sub></code>.
-            @param n The order of the main subgroup of the elliptic curve.
-            @param h The cofactor of the elliptic curve, i.e.
+            @param order The order of the main subgroup of the elliptic curve.
+            @param cofactor The cofactor of the elliptic curve, i.e.
             <code>#E<sub>a</sub>(F<sub>2<sup>m</sup></sub>) = h * n</code>.
         </member>
         <member name="M:Org.BouncyCastle.Math.EC.F2mCurve.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.BigInteger)">
@@ -14102,8 +16537,8 @@
             @param b The coefficient <code>b</code> in the Weierstrass equation
             for non-supersingular elliptic curves over
             <code>F<sub>2<sup>m</sup></sub></code>.
-            @param n The order of the main subgroup of the elliptic curve.
-            @param h The cofactor of the elliptic curve, i.e.
+            @param order The order of the main subgroup of the elliptic curve.
+            @param cofactor The cofactor of the elliptic curve, i.e.
             <code>#E<sub>a</sub>(F<sub>2<sup>m</sup></sub>) = h * n</code>.
         </member>
         <member name="M:Org.BouncyCastle.Math.EC.F2mCurve.GetMu">
@@ -14117,7 +16552,7 @@
             <code>s<sub>1</sub></code> used for partial modular reduction for
             Koblitz curves.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.F2mCurve.solveQuadradicEquation(Org.BouncyCastle.Math.EC.ECFieldElement)">
+        <member name="M:Org.BouncyCastle.Math.EC.F2mCurve.SolveQuadradicEquation(Org.BouncyCastle.Math.EC.ECFieldElement)">
              Solves a quadratic equation <code>z<sup>2</sup> + z = beta</code>(X9.62
              D.1.6) The other solution is <code>z + 1</code>.
             
@@ -14169,31 +16604,8 @@
         <member name="F:Org.BouncyCastle.Math.EC.F2mFieldElement.m">
             The exponent <code>m</code> of <code>F<sub>2<sup>m</sup></sub></code>.
         </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mFieldElement.k1">
-            Tpb: The integer <code>k</code> where <code>x<sup>m</sup> +
-            x<sup>k</sup> + 1</code> represents the reduction polynomial
-            <code>f(z)</code>.<br/>
-            Ppb: The integer <code>k1</code> where <code>x<sup>m</sup> +
-            x<sup>k3</sup> + x<sup>k2</sup> + x<sup>k1</sup> + 1</code>
-            represents the reduction polynomial <code>f(z)</code>.<br/>
-        </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mFieldElement.k2">
-            Tpb: Always set to <code>0</code><br/>
-            Ppb: The integer <code>k2</code> where <code>x<sup>m</sup> +
-            x<sup>k3</sup> + x<sup>k2</sup> + x<sup>k1</sup> + 1</code>
-            represents the reduction polynomial <code>f(z)</code>.<br/>
-        </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mFieldElement.k3">
-            Tpb: Always set to <code>0</code><br/>
-            Ppb: The integer <code>k3</code> where <code>x<sup>m</sup> +
-            x<sup>k3</sup> + x<sup>k2</sup> + x<sup>k1</sup> + 1</code>
-            represents the reduction polynomial <code>f(z)</code>.<br/>
-        </member>
         <member name="F:Org.BouncyCastle.Math.EC.F2mFieldElement.x">
-            The <code>IntArray</code> holding the bits.
-        </member>
-        <member name="F:Org.BouncyCastle.Math.EC.F2mFieldElement.t">
-            The number of <code>int</code>s required to hold <code>m</code> bits.
+            The <code>LongArray</code> holding the bits.
         </member>
         <member name="M:Org.BouncyCastle.Math.EC.F2mFieldElement.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,Org.BouncyCastle.Math.BigInteger)">
             Constructor for Ppb.
@@ -14262,48 +16674,24 @@
             x<sup>k3</sup> + x<sup>k2</sup> + x<sup>k1</sup> + 1</code>
             represents the reduction polynomial <code>f(z)</code>.<br/>
         </member>
-        <member name="T:Org.BouncyCastle.Math.EC.ECPoint">
-            base class for points on elliptic curves.
-        </member>
-        <member name="M:Org.BouncyCastle.Math.EC.ECPoint.SetPreCompInfo(Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
-            Sets the <code>PreCompInfo</code>. Used by <code>ECMultiplier</code>s
-            to save the precomputation for this <code>ECPoint</code> to store the
-            precomputation result for use by subsequent multiplication.
-            @param preCompInfo The values precomputed by the
-            <code>ECMultiplier</code>.
-        </member>
-        <member name="M:Org.BouncyCastle.Math.EC.ECPoint.AssertECMultiplier">
-            Sets the appropriate <code>ECMultiplier</code>, unless already set. 
-        </member>
-        <member name="M:Org.BouncyCastle.Math.EC.ECPointBase.GetEncoded">
-            return the field element encoded with point compression. (S 4.3.6)
-        </member>
-        <member name="M:Org.BouncyCastle.Math.EC.ECPointBase.Multiply(Org.BouncyCastle.Math.BigInteger)">
-            Multiplies this <code>ECPoint</code> by the given number.
-            @param k The multiplicator.
-            @return <code>k * this</code>.
-        </member>
         <member name="T:Org.BouncyCastle.Math.EC.FpPoint">
             Elliptic curve points over Fp
         </member>
         <member name="M:Org.BouncyCastle.Math.EC.FpPoint.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement)">
-             Create a point which encodes with point compression.
+             Create a point which encodes without point compression.
             
              @param curve the curve to use
              @param x affine x co-ordinate
              @param y affine y co-ordinate
         </member>
         <member name="M:Org.BouncyCastle.Math.EC.FpPoint.#ctor(Org.BouncyCastle.Math.EC.ECCurve,Org.BouncyCastle.Math.EC.ECFieldElement,Org.BouncyCastle.Math.EC.ECFieldElement,System.Boolean)">
-             Create a point that encodes with or without point compresion.
+             Create a point that encodes with or without point compression.
             
              @param curve the curve to use
              @param x affine x co-ordinate
              @param y affine y co-ordinate
              @param withCompression if true encode with point compression
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.FpPoint.AssertECMultiplier">
-            Sets the default <code>ECMultiplier</code>, unless already set. 
-        </member>
         <member name="T:Org.BouncyCastle.Math.EC.F2mPoint">
             Elliptic curve points over F2m
         </member>
@@ -14346,85 +16734,117 @@
             <code>this</code>.
             @return <code>this - b</code>
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.F2mPoint.AssertECMultiplier">
-            Sets the appropriate <code>ECMultiplier</code>, unless already set. 
-        </member>
         <member name="T:Org.BouncyCastle.Math.EC.Multiplier.ECMultiplier">
             Interface for classes encapsulating a point multiplication algorithm
             for <code>ECPoint</code>s.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.ECMultiplier.Multiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.ECMultiplier.Multiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
             Multiplies the <code>ECPoint p</code> by <code>k</code>, i.e.
             <code>p</code> is added <code>k</code> times to itself.
             @param p The <code>ECPoint</code> to be multiplied.
-            @param k The factor by which <code>p</code> i multiplied.
+            @param k The factor by which <code>p</code> is multiplied.
             @return <code>p</code> multiplied by <code>k</code>.
         </member>
-        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.FpNafMultiplier">
-            Class implementing the NAF (Non-Adjacent Form) multiplication algorithm.
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.DoubleAddMultiplier.MultiplyPositive(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
+            Joye's double-add algorithm.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.FpNafMultiplier.Multiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
-            D.3.2 pg 101
-            @see org.bouncycastle.math.ec.multiplier.ECMultiplier#multiply(org.bouncycastle.math.ec.ECPoint, java.math.BigInteger)
+        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.FixedPointPreCompInfo">
+            Class holding precomputation data for fixed-point multiplications.
         </member>
         <member name="T:Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo">
             Interface for classes storing precomputation data for multiplication
             algorithms. Used as a Memento (see GOF patterns) for
             <code>WNafMultiplier</code>.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.ReferenceMultiplier.Multiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
-            Simple shift-and-add multiplication. Serves as reference implementation
-            to verify (possibly faster) implementations in
-            {@link org.bouncycastle.math.ec.ECPoint ECPoint}.
-            
-            @param p The point to multiply.
-            @param k The factor by which to multiply.
-            @return The result of the point multiplication <code>k * p</code>.
+        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.FixedPointPreCompInfo.m_preComp">
+            Array holding the precomputed <code>ECPoint</code>s used for a fixed
+            point multiplication.
+        </member>
+        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.FixedPointPreCompInfo.m_width">
+            The width used for the precomputation. If a larger width precomputation
+            is already available this may be larger than was requested, so calling
+            code should refer to the actual width.
+        </member>
+        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.MixedNafR2LMultiplier">
+            Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left) using
+            mixed coordinates.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.MixedNafR2LMultiplier.#ctor">
+            By default, addition will be done in Jacobian coordinates, and doubling will be done in
+            Modified Jacobian coordinates (independent of the original coordinate system of each point).
         </member>
-        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.WNafMultiplier">
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.MontgomeryLadderMultiplier.MultiplyPositive(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
+            Montgomery ladder.
+        </member>
+        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.NafL2RMultiplier">
+            Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (left-to-right).
+        </member>
+        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.NafR2LMultiplier">
+            Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left).
+        </member>
+        <member name="T:Org.BouncyCastle.Math.EC.Multiplier.WNafL2RMultiplier">
             Class implementing the WNAF (Window Non-Adjacent Form) multiplication
             algorithm.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafMultiplier.WindowNaf(System.SByte,Org.BouncyCastle.Math.BigInteger)">
-            Computes the Window NAF (non-adjacent Form) of an integer.
-            @param width The width <code>w</code> of the Window NAF. The width is
-            defined as the minimal number <code>w</code>, such that for any
-            <code>w</code> consecutive digits in the resulting representation, at
-            most one is non-zero.
-            @param k The integer of which the Window NAF is computed.
-            @return The Window NAF of the given width, such that the following holds:
-            <code>k = &#8722;<sub>i=0</sub><sup>l-1</sup> k<sub>i</sub>2<sup>i</sup>
-            </code>, where the <code>k<sub>i</sub></code> denote the elements of the
-            returned <code>sbyte[]</code>.
-        </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafMultiplier.Multiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafL2RMultiplier.MultiplyPositive(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
             Multiplies <code>this</code> by an integer <code>k</code> using the
             Window NAF method.
             @param k The integer by which <code>this</code> is multiplied.
             @return A new <code>ECPoint</code> which equals <code>this</code>
             multiplied by <code>k</code>.
         </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafL2RMultiplier.GetWindowSize(System.Int32)">
+            Determine window width to use for a scalar multiplication of the given size.
+            
+            @param bits the bit-length of the scalar to multiply by
+            @return the window size to use
+        </member>
         <member name="T:Org.BouncyCastle.Math.EC.Multiplier.WNafPreCompInfo">
             Class holding precomputation data for the WNAF (Window Non-Adjacent Form)
             algorithm.
         </member>
-        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WNafPreCompInfo.preComp">
-            Array holding the precomputed <code>ECPoint</code>s used for the Window
-            NAF multiplication in <code>
-            {@link org.bouncycastle.math.ec.multiplier.WNafMultiplier.multiply()
-            WNafMultiplier.multiply()}</code>.
+        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WNafPreCompInfo.m_preComp">
+            Array holding the precomputed <code>ECPoint</code>s used for a Window
+            NAF multiplication.
+        </member>
+        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WNafPreCompInfo.m_preCompNeg">
+            Array holding the negations of the precomputed <code>ECPoint</code>s used
+            for a Window NAF multiplication.
         </member>
-        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WNafPreCompInfo.twiceP">
-            Holds an <code>ECPoint</code> representing twice(this). Used for the
-            Window NAF multiplication in <code>
-            {@link org.bouncycastle.math.ec.multiplier.WNafMultiplier.multiply()
-            WNafMultiplier.multiply()}</code>.
+        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WNafPreCompInfo.m_twice">
+            Holds an <code>ECPoint</code> representing Twice(this). Used for the
+            Window NAF multiplication to create or extend the precomputed values.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafUtilities.GenerateWindowNaf(System.Int32,Org.BouncyCastle.Math.BigInteger)">
+            Computes the Window NAF (non-adjacent Form) of an integer.
+            @param width The width <code>w</code> of the Window NAF. The width is
+            defined as the minimal number <code>w</code>, such that for any
+            <code>w</code> consecutive digits in the resulting representation, at
+            most one is non-zero.
+            @param k The integer of which the Window NAF is computed.
+            @return The Window NAF of the given width, such that the following holds:
+            <code>k = &amp;sum;<sub>i=0</sub><sup>l-1</sup> k<sub>i</sub>2<sup>i</sup>
+            </code>, where the <code>k<sub>i</sub></code> denote the elements of the
+            returned <code>byte[]</code>.
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafUtilities.GetWindowSize(System.Int32)">
+            Determine window width to use for a scalar multiplication of the given size.
+            
+            @param bits the bit-length of the scalar to multiply by
+            @return the window size to use
+        </member>
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WNafUtilities.GetWindowSize(System.Int32,System.Int32[])">
+            Determine window width to use for a scalar multiplication of the given size.
+            
+            @param bits the bit-length of the scalar to multiply by
+            @param windowSizeCutoffs a monotonically increasing list of bit sizes at which to increment the window width
+            @return the window size to use
         </member>
         <member name="T:Org.BouncyCastle.Math.EC.Multiplier.WTauNafMultiplier">
             Class implementing the WTNAF (Window
             <code>&#964;</code>-adic Non-Adjacent Form) algorithm.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WTauNafMultiplier.Multiply(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.EC.Multiplier.PreCompInfo)">
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WTauNafMultiplier.MultiplyPositive(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
             Multiplies a {@link org.bouncycastle.math.ec.F2mPoint F2mPoint}
             by <code>k</code> using the reduced <code>&#964;</code>-adic NAF (RTNAF)
             method.
@@ -14455,24 +16875,17 @@
             Class holding precomputation data for the WTNAF (Window
             <code>&#964;</code>-adic Non-Adjacent Form) algorithm.
         </member>
-        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WTauNafPreCompInfo.preComp">
+        <member name="F:Org.BouncyCastle.Math.EC.Multiplier.WTauNafPreCompInfo.m_preComp">
             Array holding the precomputed <code>F2mPoint</code>s used for the
             WTNAF multiplication in <code>
             {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
             WTauNafMultiplier.multiply()}</code>.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WTauNafPreCompInfo.#ctor(Org.BouncyCastle.Math.EC.F2mPoint[])">
-            Constructor for <code>WTauNafPreCompInfo</code>
-            @param preComp Array holding the precomputed <code>F2mPoint</code>s
-            used for the WTNAF multiplication in <code>
-            {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
-            WTauNafMultiplier.multiply()}</code>.
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.ZSignedDigitL2RMultiplier.MultiplyPositive(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
+            'Zeroless' Signed Digit Left-to-Right.
         </member>
-        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.WTauNafPreCompInfo.GetPreComp">
-            @return the array holding the precomputed <code>F2mPoint</code>s
-            used for the WTNAF multiplication in <code>
-            {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
-            WTauNafMultiplier.multiply()}</code>.
+        <member name="M:Org.BouncyCastle.Math.EC.Multiplier.ZSignedDigitR2LMultiplier.MultiplyPositive(Org.BouncyCastle.Math.EC.ECPoint,Org.BouncyCastle.Math.BigInteger)">
+            'Zeroless' Signed Digit Right-to-Left.
         </member>
         <member name="T:Org.BouncyCastle.Ocsp.BasicOcspResp">
             <remarks>
@@ -15430,6 +17843,9 @@
         <member name="P:Org.BouncyCastle.Bcpg.OpenPgp.PgpSecretKey.IsMasterKey">
             <summary>True, if this is a master key.</summary>
         </member>
+        <member name="P:Org.BouncyCastle.Bcpg.OpenPgp.PgpSecretKey.IsPrivateKeyEmpty">
+            <summary>Detect if the Secret Key's Private Key is empty or not</summary>
+        </member>
         <member name="P:Org.BouncyCastle.Bcpg.OpenPgp.PgpSecretKey.KeyEncryptionAlgorithm">
             <summary>The algorithm the key is encrypted with.</summary>
         </member>
@@ -16911,7 +19327,7 @@
             <param name="certStores">a List containing only X509Store objects. These
             are used to search for certificates.</param>
             <returns>a Collection of all found <see cref="T:Org.BouncyCastle.X509.X509Certificate"/> or
-            org.bouncycastle.x509.X509AttributeCertificate objects.
+            <see cref="T:Org.BouncyCastle.X509.IX509AttributeCertificate"/> objects.
             May be empty but never <code>null</code>.</returns>
             <exception cref="T:System.Exception"></exception>
         </member>
@@ -17797,6 +20213,17 @@
             <param name="b">second array</param>
             <returns>true if arrays equal, false otherwise.</returns>
         </member>
+        <member name="M:Org.BouncyCastle.Utilities.Arrays.CopyOfRange(System.Byte[],System.Int32,System.Int32)">
+             Make a copy of a range of bytes from the passed in data array. The range can
+             extend beyond the end of the input array, in which case the return array will
+             be padded with zeroes.
+            
+             @param data the array from which the data is to be copied.
+             @param from the start index at which the copying should take place.
+             @param to the final index of the range (exclusive).
+            
+             @return a new byte array containing the range given.
+        </member>
         <member name="T:Org.BouncyCastle.Utilities.BigIntegers">
             BigInteger utilities.
         </member>
@@ -17806,6 +20233,13 @@
              @param value value to be converted.
              @return a byte array without a leading zero byte if present in the signed encoding.
         </member>
+        <member name="M:Org.BouncyCastle.Utilities.BigIntegers.AsUnsignedByteArray(System.Int32,Org.BouncyCastle.Math.BigInteger)">
+             Return the passed in value as an unsigned byte array of specified length, zero-extended as necessary.
+            
+             @param length desired length of result array.
+             @param n value to be converted.
+             @return a byte array of specified length, with leading zeroes as necessary given the size of n.
+        </member>
         <member name="M:Org.BouncyCastle.Utilities.BigIntegers.CreateRandomInRange(Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Math.BigInteger,Org.BouncyCastle.Security.SecureRandom)">
             Return a random BigInteger not less than 'min' and not greater than 'max'
             
@@ -17839,6 +20273,11 @@
             
              @return a byte array containing the base 64 encoded data.
         </member>
+        <member name="M:Org.BouncyCastle.Utilities.Encoders.Base64.Encode(System.Byte[],System.Int32,System.Int32)">
+             encode the input data producing a base 64 encoded byte array.
+            
+             @return a byte array containing the base 64 encoded data.
+        </member>
         <member name="M:Org.BouncyCastle.Utilities.Encoders.Base64.Encode(System.Byte[],System.IO.Stream)">
              Encode the byte data to base 64 writing it to the given output stream.
             
@@ -18137,6 +20576,18 @@
             <returns>The number of bytes actually transferred, if not greater than <c>limit</c></returns>
             <exception cref="T:System.IO.IOException"></exception>
         </member>
+        <member name="T:Org.BouncyCastle.Utilities.MemoableResetException">
+            Exception to be thrown on a failure to reset an object implementing Memoable.
+            <p>
+            The exception extends InvalidCastException to enable users to have a single handling case,
+            only introducing specific handling of this one if required.
+            </p>
+        </member>
+        <member name="M:Org.BouncyCastle.Utilities.MemoableResetException.#ctor(System.String)">
+             Basic Constructor.
+            
+             @param msg message to be associated with this exception.
+        </member>
         <member name="M:Org.BouncyCastle.Utilities.Net.IPAddress.IsValid(System.String)">
              Validate the given IPv4 or IPv6 address.
             
diff --git a/crypto/test/src/asn1/test/AllTests.cs b/crypto/test/src/asn1/test/AllTests.cs
index a1ae8fd48..d219ef93f 100644
--- a/crypto/test/src/asn1/test/AllTests.cs
+++ b/crypto/test/src/asn1/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -30,3 +31,4 @@ namespace Org.BouncyCastle.Asn1.Tests
         }
     }
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/cms/test/AllTests.cs b/crypto/test/src/cms/test/AllTests.cs
index 1ce3b7c8d..1b1e6947b 100644
--- a/crypto/test/src/cms/test/AllTests.cs
+++ b/crypto/test/src/cms/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -33,3 +34,4 @@ namespace Org.BouncyCastle.Cms.Tests
         }
     }
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/crypto/io/test/AllTests.cs b/crypto/test/src/crypto/io/test/AllTests.cs
index 0296a2dc0..4d34fa6d4 100644
--- a/crypto/test/src/crypto/io/test/AllTests.cs
+++ b/crypto/test/src/crypto/io/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -25,3 +26,4 @@ namespace Org.BouncyCastle.Crypto.IO.Tests
 		}
 	}
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/crypto/test/AllTests.cs b/crypto/test/src/crypto/test/AllTests.cs
index 1cb1b965d..03afe69cd 100644
--- a/crypto/test/src/crypto/test/AllTests.cs
+++ b/crypto/test/src/crypto/test/AllTests.cs
@@ -1,6 +1,8 @@
 using System;
 
+#if !LIB
 using NUnit.Core;
+#endif
 using NUnit.Framework;
 
 using Org.BouncyCastle.Utilities.Test;
@@ -10,6 +12,7 @@ namespace Org.BouncyCastle.Crypto.Tests
 	[TestFixture]
 	public class AllTests
 	{
+#if !LIB
 		[Suite]
 		public static TestSuite Suite
 		{
@@ -21,6 +24,7 @@ namespace Org.BouncyCastle.Crypto.Tests
 				return suite;
 			}
 		}
+#endif
 
 		[Test]
 		public void TestCrypto()
@@ -35,7 +39,7 @@ namespace Org.BouncyCastle.Crypto.Tests
 				}
 			}
 		}
-
+#if !LIB
         public static void Main(
 			string[] args)
         {
@@ -43,5 +47,6 @@ namespace Org.BouncyCastle.Crypto.Tests
             EventListener el = new NullListener();
             Suite.Run(el);
         }
+#endif
 	}
 }
diff --git a/crypto/test/src/math/ec/test/AllTests.cs b/crypto/test/src/math/ec/test/AllTests.cs
index d4c7dc768..54ccd8fd8 100644
--- a/crypto/test/src/math/ec/test/AllTests.cs
+++ b/crypto/test/src/math/ec/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -26,3 +27,4 @@ namespace Org.BouncyCastle.Math.EC.Tests
         }
     }
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/math/test/AllTests.cs b/crypto/test/src/math/test/AllTests.cs
index 6f2b50140..4af8952e3 100644
--- a/crypto/test/src/math/test/AllTests.cs
+++ b/crypto/test/src/math/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -25,3 +26,4 @@ namespace Org.BouncyCastle.Math.Tests
         }
     }
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/ocsp/test/AllTests.cs b/crypto/test/src/ocsp/test/AllTests.cs
index 2b30e3ad4..d7393c22c 100644
--- a/crypto/test/src/ocsp/test/AllTests.cs
+++ b/crypto/test/src/ocsp/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -27,3 +28,4 @@ namespace Org.BouncyCastle.Ocsp.Tests
 		}
 	}
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/openpgp/examples/test/AllTests.cs b/crypto/test/src/openpgp/examples/test/AllTests.cs
index 180d2fa80..a066ff3d0 100644
--- a/crypto/test/src/openpgp/examples/test/AllTests.cs
+++ b/crypto/test/src/openpgp/examples/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 using System.IO;
 
@@ -401,3 +402,4 @@ namespace Org.BouncyCastle.Bcpg.OpenPgp.Examples.Tests
 
 	}
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/openssl/test/AllTests.cs b/crypto/test/src/openssl/test/AllTests.cs
index 921208179..954fcb391 100644
--- a/crypto/test/src/openssl/test/AllTests.cs
+++ b/crypto/test/src/openssl/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 using System.IO;
 using System.Text;
@@ -131,3 +132,4 @@ namespace Org.BouncyCastle.OpenSsl.Tests
         }
 	}
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/security/test/SecureRandomTest.cs b/crypto/test/src/security/test/SecureRandomTest.cs
index 12e4b9a47..0a7ac88c4 100644
--- a/crypto/test/src/security/test/SecureRandomTest.cs
+++ b/crypto/test/src/security/test/SecureRandomTest.cs
@@ -9,7 +9,7 @@ namespace Org.BouncyCastle.Security.Tests
 	[TestFixture]
 	public class SecureRandomTest
 	{
-#if !NETCF_1_0
+#if !NETCF_1_0 && !PCL
 		[Test]
 		public void TestCryptoApi()
 		{
diff --git a/crypto/test/src/tsp/test/AllTests.cs b/crypto/test/src/tsp/test/AllTests.cs
index 66dc9c480..c58ff22b7 100644
--- a/crypto/test/src/tsp/test/AllTests.cs
+++ b/crypto/test/src/tsp/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 
 using NUnit.Core;
@@ -30,3 +31,4 @@ namespace Org.BouncyCastle.Tsp.Tests
         }
     }
 }
+#endif
\ No newline at end of file
diff --git a/crypto/test/src/util/io/pem/test/AllTests.cs b/crypto/test/src/util/io/pem/test/AllTests.cs
index b44949383..3dd8322cb 100644
--- a/crypto/test/src/util/io/pem/test/AllTests.cs
+++ b/crypto/test/src/util/io/pem/test/AllTests.cs
@@ -1,3 +1,4 @@
+#if !LIB
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -75,3 +76,4 @@ namespace Org.BouncyCastle.Utilities.IO.Pem.Tests
         }
 	}
 }
+#endif
\ No newline at end of file