diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0b5d88b1..1ddec122 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,9 +5,11 @@
## Releases
+* 29.03.2016 [3.0.3]:
+ New: Support for Exchange 2013 SP1 CU12 and 2016 CU1
* 27.02.2016 [3.0.2]:
Fix: Updated to MimeKit 1.2.21 (Fix to not enforce 7bit encoding of the body: https://github.com/jstedfast/MimeKit/issues/224)
- Fix: Now using system variable for Program Files Folder install location instead of hard-coded `C:\Program Files`.
+ Fix: Now using system variable for Program Files Folder install location instead of hard-coded `C:\Program Files`
* 17.01.2016 [3.0.1]:
New: Switched to MimeKit implementation for DKIM signer
New: Better handling of private key reading and generation. Now using OpenSSL format
diff --git a/Src/Configuration.DkimSigner/Constants.cs b/Src/Configuration.DkimSigner/Constants.cs
index 37d124a9..d843d92b 100644
--- a/Src/Configuration.DkimSigner/Constants.cs
+++ b/Src/Configuration.DkimSigner/Constants.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace Configuration.DkimSigner
{
diff --git a/Src/Configuration.DkimSigner/Properties/AssemblyInfo.cs b/Src/Configuration.DkimSigner/Properties/AssemblyInfo.cs
index 03781a99..c87e4a53 100644
--- a/Src/Configuration.DkimSigner/Properties/AssemblyInfo.cs
+++ b/Src/Configuration.DkimSigner/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("3.0.2")]
-[assembly: AssemblyFileVersion("3.0.2")]
+[assembly: AssemblyVersion("3.0.3")]
+[assembly: AssemblyFileVersion("3.0.3")]
diff --git a/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.exe b/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.exe
index e3a84923..c0462567 100644
Binary files a/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.exe and b/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.exe differ
diff --git a/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.pdb b/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.pdb
index c1ceb1c9..290eb9b8 100644
Binary files a/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.pdb and b/Src/Configuration.DkimSigner/bin/Release/Configuration.DkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/Properties/AssemblyInfo.cs b/Src/Exchange.DkimSigner/Properties/AssemblyInfo.cs
index 4b71ec64..b21e85cf 100644
--- a/Src/Exchange.DkimSigner/Properties/AssemblyInfo.cs
+++ b/Src/Exchange.DkimSigner/Properties/AssemblyInfo.cs
@@ -21,7 +21,7 @@
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("FA0D7628-702A-445B-9C78-887874B212BA")]
-[assembly: AssemblyVersion("3.0.2")]
+[assembly: AssemblyVersion("3.0.3")]
[assembly: CLSCompliant(false)]
[assembly: NeutralResourcesLanguage("en-US")]
-[assembly: AssemblyFileVersionAttribute("3.0.2")]
+[assembly: AssemblyFileVersionAttribute("3.0.3")]
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.dll
index 1a98a30f..3e6977d0 100755
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.pdb
index 6881c74b..38742235 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2007 SP3/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.dll
index 38d281f6..4718e577 100755
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.pdb
index a7a6bad5..85fe90f5 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP1/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.dll
index e4d79f32..b85a3451 100755
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.pdb
index 791af417..1e468fe5 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP2/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.dll
index 4b87a345..fc36af2e 100755
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.pdb
index ed8e0489..ff20a725 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2010 SP3/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.dll
index 6ed419ec..a6840118 100755
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.pdb
index ce270d21..90bac44d 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2010/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.dll
index 1ab444e1..ceec789e 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.pdb
index ad8dad87..9afb1794 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU1/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.dll
index b6ff6a7c..04927385 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.pdb
index eade0572..804fed41 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU2/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.dll
index 72e4e20b..432791d0 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.pdb
index 65e5f6fd..243194f3 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 CU3/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.dll
index 4a227838..0214440e 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.pdb
index b93b7069..f8dd1701 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU10/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.dll
index d888e00b..60954279 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.pdb
index fe27bc1e..58f34ee4 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU11/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/BouncyCastle.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/BouncyCastle.dll
new file mode 100644
index 00000000..17e4744b
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/BouncyCastle.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/BouncyCastle.xml b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/BouncyCastle.xml
new file mode 100644
index 00000000..d27354a2
--- /dev/null
+++ b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/BouncyCastle.xml
@@ -0,0 +1,24206 @@
+
+
+
+ BouncyCastle
+
+
+
+ Base class for both the compress and decompress classes.
+ Holds common arrays, and static data.
+
+ @author Keiron Liddle
+
+
+ An input stream that decompresses from the BZip2 format (with the file
+ header chars) to be read as any other stream.
+
+ @author Keiron Liddle
+
+ NB: note this class has been modified to read the leading BZ from the
+ start of the BZIP2 stream to make it compatible with other PGP programs.
+
+
+ An output stream that compresses into the BZip2 format (with the file
+ header chars) into another stream.
+
+ @author Keiron Liddle
+
+ TODO: Update to BZip2 1.0.1
+ NB: note this class has been modified to add a leading BZ to the
+ start of the BZIP2 stream to make it compatible with other PGP programs.
+
+
+
+ modified by Oliver Merkel, 010128
+
+
+
+ A simple class the hold and calculate the CRC for sanity checking
+ of the data.
+
+ @author Keiron Liddle
+
+
+ Return the DER encoding of the object, null if the DER encoding can not be made.
+
+ @return a DER byte array, null otherwise.
+
+
+ a general purpose ASN.1 decoder - note: this class differs from the
+ others in that it returns null after it has read the last object in
+ the stream. If an ASN.1 Null is encountered a Der/BER Null object is
+ returned.
+
+
+ Create an ASN1InputStream where no DER object will be longer than limit.
+
+ @param input stream containing ASN.1 encoded data.
+ @param limit maximum size of a DER encoded object.
+
+
+ Create an ASN1InputStream based on the input byte array. The length of DER objects in
+ the stream is automatically limited to the length of the input array.
+
+ @param input array containing ASN.1 encoded data.
+
+
+ build an object given its tag and the number of bytes to construct it from.
+
+
+ A Null object.
+
+
+ Create a base ASN.1 object from a byte array.
+ The byte array to parse.
+ The base ASN.1 object represented by the byte array.
+ If there is a problem parsing the data.
+
+
+ Read a base ASN.1 object from a stream.
+ The stream to parse.
+ The base ASN.1 object represented by the byte array.
+ If there is a problem parsing the data.
+
+
+ return an Octet string from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return an Octet string from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ @param string the octets making up the octet string.
+
+
+ return an Asn1Sequence from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an ASN1 sequence from a tagged object. There is a special
+ case here, if an object appears to have been explicitly tagged on
+ reading but we were expecting it to be implicitly tagged in the
+ normal course of events it indicates that we lost the surrounding
+ sequence - so we need to add it back (this will happen if the tagged
+ object is a sequence that contains other sequences). If you are
+ dealing with implicitly tagged sequences you really should
+ be using this method.
+
+ @param obj the tagged object.
+ @param explicitly true if the object is meant to be explicitly tagged,
+ false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return the object at the sequence position indicated by index.
+
+ @param index the sequence number (starting at zero) of the object
+ @return the object at the sequence position indicated by index.
+
+
+ return an ASN1Set from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an ASN1 set from a tagged object. There is a special
+ case here, if an object appears to have been explicitly tagged on
+ reading but we were expecting it to be implicitly tagged in the
+ normal course of events it indicates that we lost the surrounding
+ set - so we need to add it back (this will happen if the tagged
+ object is a sequence that contains other sequences). If you are
+ dealing with implicitly tagged sets you really should
+ be using this method.
+
+ @param obj the tagged object.
+ @param explicitly true if the object is meant to be explicitly tagged
+ false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return the object at the set position indicated by index.
+
+ @param index the set number (starting at zero) of the object
+ @return the object at the set position indicated by index.
+
+
+ ASN.1 TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param explicitly true if the object is explicitly tagged.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ return whether or not the object may be explicitly tagged.
+
+ Note: if the object has been read from an input stream, the only
+ time you can be sure if isExplicit is returning the true state of
+ affairs is if it returns false. An implicitly tagged object may appear
+ to be explicitly tagged, so you need to understand the context under
+ which the reading was done as well, see GetObject below.
+
+
+ return whatever was following the tag.
+
+ Note: tagged objects are generally context dependent if you're
+ trying to extract a tagged object you should be going via the
+ appropriate GetInstance method.
+
+
+ Return the object held in this tagged object as a parser assuming it has
+ the type of the passed in tag. If the object doesn't have a parser
+ associated with it, the base object is returned.
+
+
+ A BER Null object.
+
+
+ convert a vector of octet strings into a single byte string
+
+
+ The octets making up the octet string.
+
+
+ return the DER octets that make up this string.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing a vector of objects.
+
+
+ create an empty sequence
+
+
+ create a set containing one object
+
+
+ create a set containing a vector of objects.
+
+
+ BER TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param explicitly true if an explicitly tagged object.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ create an implicitly tagged object that contains a zero
+ length sequence.
+
+
+ Class representing the DER-type External
+
+
+ Creates a new instance of DerExternal
+ See X.690 for more informations about the meaning of these parameters
+ @param directReference The direct reference or null
if not set.
+ @param indirectReference The indirect reference or null
if not set.
+ @param dataValueDescriptor The data value descriptor or null
if not set.
+ @param externalData The external data in its encoded form.
+
+
+ Creates a new instance of DerExternal.
+ See X.690 for more informations about the meaning of these parameters
+ @param directReference The direct reference or null
if not set.
+ @param indirectReference The indirect reference or null
if not set.
+ @param dataValueDescriptor The data value descriptor or null
if not set.
+ @param encoding The encoding to be used for the external data
+ @param externalData The external data
+
+
+ The encoding of the content. Valid values are
+
+ 0
single-ASN1-type
+ 1
OCTET STRING
+ 2
BIT STRING
+
+
+
+ Base class for an application specific object
+
+
+ Return the enclosed object assuming explicit tagging.
+
+ @return the resulting object
+ @throws IOException if reconstruction fails.
+
+
+ Return the enclosed object assuming implicit tagging.
+
+ @param derTagNo the type tag that should be applied to the object's contents.
+ @return the resulting object
+ @throws IOException if reconstruction fails.
+
+
+ Der BMPString object.
+
+
+ return a BMP string from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a BMP string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor
+
+
+ return a Bit string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Bit string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ @param data the octets making up the bit string.
+ @param padBits the number of extra bits at the end of the string.
+
+
+ Return the octets contained in this BIT STRING, checking that this BIT STRING really
+ does represent an octet aligned string. Only use this method when the standard you are
+ following dictates that the BIT STRING will be octet aligned.
+
+ @return a copy of the octet aligned data.
+
+
+ @return the value of the bit string as an int (truncating if necessary)
+
+
+ return a bool from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a DerBoolean from the passed in bool.
+
+
+ return a Boolean from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return an integer from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Enumerated from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ Generalized time object.
+
+
+ return a generalized time from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Generalized Time object from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ The correct format for this is YYYYMMDDHHMMSS[.f]Z, or without the Z
+ for local time, or Z+-HHMM on the end, for difference between local
+ time and UTC time. The fractional second amount f must consist of at
+ least one number with trailing zeroes removed.
+
+ @param time the time string.
+ @exception ArgumentException if string is an illegal format.
+
+
+ base constructor from a local time object
+
+
+ Return the time.
+ @return The time string as it appeared in the encoded object.
+
+
+ return the time - always in the form of
+ YYYYMMDDhhmmssGMT(+hh:mm|-hh:mm).
+
+ Normally in a certificate we would expect "Z" rather than "GMT",
+ however adding the "GMT" means we can just use:
+
+ dateF = new SimpleDateFormat("yyyyMMddHHmmssz");
+
+ To read in the time and Get a date which is compatible with our local
+ time zone.
+
+
+ return a Graphic String from the passed in object
+
+ @param obj a DerGraphicString or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return a DerGraphicString instance, or null.
+
+
+ return a Graphic String 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 tagged object cannot
+ be converted.
+ @return a DerGraphicString instance, or null.
+
+
+ basic constructor - with bytes.
+ @param string the byte encoding of the characters making up the string.
+
+
+ Der IA5String object - this is an ascii string.
+
+
+ return a IA5 string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an IA5 string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - with bytes.
+
+
+ basic constructor - without validation.
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in an IA5String.
+
+
+ return true if the passed in String can be represented without
+ loss as an IA5String, false otherwise.
+
+ @return true if in printable set, false otherwise.
+
+
+ return an integer from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Integer from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ in some cases positive values Get crammed into a space,
+ that's not quite big enough...
+
+
+ A Null object.
+
+
+ Der NumericString object - this is an ascii string of characters {0,1,2,3,4,5,6,7,8,9, }.
+
+
+ return a Numeric string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Numeric string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - with bytes.
+
+
+ basic constructor - without validation..
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in a NumericString.
+
+
+ Return true if the string can be represented as a NumericString ('0'..'9', ' ')
+
+ @param str string to validate.
+ @return true if numeric, fale otherwise.
+
+
+ return an Oid from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an object Identifier from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ Return true if this oid is an extension of the passed in branch, stem.
+ @param stem the arc or branch that is a possible parent.
+ @return true if the branch is on the passed in stem, false otherwise.
+
+
+ The octets making up the octet string.
+
+
+ Der PrintableString object.
+
+
+ return a printable string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Printable string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor - this does not validate the string
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in a PrintableString.
+
+
+ return true if the passed in String can be represented without
+ loss as a PrintableString, false otherwise.
+
+ @return true if in printable set, false otherwise.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing a vector of objects.
+
+
+ A Der encoded set object
+
+
+ create an empty set
+
+
+ @param obj - a single object that makes up the set.
+
+
+ @param v - a vector of objects making up the set.
+
+
+ Der T61String (also the teletex string) - 8-bit characters
+
+
+ return a T61 string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an T61 string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - with bytes.
+
+
+ basic constructor - with string.
+
+
+ DER TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param explicitly true if an explicitly tagged object.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ create an implicitly tagged object that contains a zero
+ length sequence.
+
+
+ UTC time object.
+
+
+ return an UTC Time from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an UTC Time from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ The correct format for this is YYMMDDHHMMSSZ (it used to be that seconds were
+ never encoded. When you're creating one of these objects from scratch, that's
+ what you want to use, otherwise we'll try to deal with whatever Gets read from
+ the input stream... (this is why the input format is different from the GetTime()
+ method output).
+
+ @param time the time string.
+
+
+ base constructor from a DateTime object
+
+
+ return the time as a date based on whatever a 2 digit year will return. For
+ standardised processing use ToAdjustedDateTime().
+
+ @return the resulting date
+ @exception ParseException if the date string cannot be parsed.
+
+
+ return the time as an adjusted date
+ in the range of 1950 - 2049.
+
+ @return a date in the range of 1950 to 2049.
+ @exception ParseException if the date string cannot be parsed.
+
+
+ return the time - always in the form of
+ YYMMDDhhmmssGMT(+hh:mm|-hh:mm).
+
+ Normally in a certificate we would expect "Z" rather than "GMT",
+ however adding the "GMT" means we can just use:
+
+ dateF = new SimpleDateFormat("yyMMddHHmmssz");
+
+ To read in the time and Get a date which is compatible with our local
+ time zone.
+
+ Note: In some cases, due to the local date processing, this
+ may lead to unexpected results. If you want to stick the normal
+ convention of 1950 to 2049 use the GetAdjustedTime() method.
+
+
+
+ Return a time string as an adjusted date with a 4 digit year.
+ This goes in the range of 1950 - 2049.
+
+
+
+ Der UTF8String object.
+
+
+ return an UTF8 string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an UTF8 string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor
+
+
+ Der UniversalString object.
+
+
+ return a Universal string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Universal string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ return a Videotex String from the passed in object
+
+ @param obj a DERVideotexString or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return a DERVideotexString instance, or null.
+
+
+ return a Videotex String 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 tagged object cannot
+ be converted.
+ @return a DERVideotexString instance, or null.
+
+
+ basic constructor - with bytes.
+ @param string the byte encoding of the characters making up the string.
+
+
+ Der VisibleString object.
+
+
+ return a Visible string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Visible string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor
+
+
+ Marker interface for CHOICE objects - if you implement this in a roll-your-own
+ object, any attempt to tag the object implicitly will convert the tag to an
+ explicit one as the encoding rules require.
+
+ If you use this interface your class should also implement the getInstance
+ pattern which takes a tag object and the tagging mode used.
+
+
+
+ basic interface for Der string objects.
+
+
+ class for breaking up an Oid into it's component tokens, ala
+ java.util.StringTokenizer. We need this class as some of the
+ lightweight Java environment don't support classes like
+ StringTokenizer.
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+
+ CAKeyUpdAnnContent ::= SEQUENCE {
+ oldWithNew CmpCertificate, -- old pub signed with new priv
+ newWithOld CmpCertificate, -- new pub signed with old priv
+ newWithNew CmpCertificate -- new pub signed with new priv
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertConfirmContent ::= SEQUENCE OF CertStatus
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertOrEncCert ::= CHOICE {
+ certificate [0] CMPCertificate,
+ encryptedCert [1] EncryptedValue
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertRepMessage ::= SEQUENCE {
+ caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
+ OPTIONAL,
+ response SEQUENCE OF CertResponse
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertResponse ::= SEQUENCE {
+ certReqId INTEGER,
+ -- to match this response with corresponding request (a value
+ -- of -1 is to be used if certReqId is not specified in the
+ -- corresponding request)
+ status PKIStatusInfo,
+ certifiedKeyPair CertifiedKeyPair OPTIONAL,
+ rspInfo OCTET STRING OPTIONAL
+ -- analogous to the id-regInfo-utf8Pairs string defined
+ -- for regInfo in CertReqMsg [CRMF]
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertStatus ::= SEQUENCE {
+ certHash OCTET STRING,
+ -- the hash of the certificate, using the same hash algorithm
+ -- as is used to create and verify the certificate signature
+ certReqId INTEGER,
+ -- to match this confirmation with the corresponding req/rep
+ statusInfo PKIStatusInfo OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertifiedKeyPair ::= SEQUENCE {
+ certOrEncCert CertOrEncCert,
+ privateKey [0] EncryptedValue OPTIONAL,
+ -- see [CRMF] for comment on encoding
+ publicationInfo [1] PKIPublicationInfo OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ Challenge ::= SEQUENCE {
+ owf AlgorithmIdentifier OPTIONAL,
+
+ -- MUST be present in the first Challenge; MAY be omitted in
+ -- any subsequent Challenge in POPODecKeyChallContent (if
+ -- omitted, then the owf used in the immediately preceding
+ -- Challenge is to be used).
+
+ witness OCTET STRING,
+ -- the result of applying the one-way function (owf) to a
+ -- randomly-generated INTEGER, A. [Note that a different
+ -- INTEGER MUST be used for each Challenge.]
+ challenge OCTET STRING
+ -- the encryption (under the public key for which the cert.
+ -- request is being made) of Rand, where Rand is specified as
+ -- Rand ::= SEQUENCE {
+ -- int INTEGER,
+ -- - the randomly-generated INTEGER A (above)
+ -- sender GeneralName
+ -- - the sender's name (as included in PKIHeader)
+ -- }
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Note: the addition of attribute certificates is a BC extension.
+
+
+
+ CMPCertificate ::= CHOICE {
+ x509v3PKCert Certificate
+ x509v2AttrCert [1] AttributeCertificate
+ }
+
+ Note: the addition of attribute certificates is a BC extension.
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CrlAnnContent ::= SEQUENCE OF CertificateList
+
+ @return a basic ASN.1 object representation.
+
+
+
+ ErrorMsgContent ::= SEQUENCE {
+ pKIStatusInfo PKIStatusInfo,
+ errorCode INTEGER OPTIONAL,
+ -- implementation-specific error codes
+ errorDetails PKIFreeText OPTIONAL
+ -- implementation-specific error details
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ GenMsgContent ::= SEQUENCE OF InfoTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+
+ GenRepContent ::= SEQUENCE OF InfoTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+ Example InfoTypeAndValue contents include, but are not limited
+ to, the following (un-comment in this ASN.1 module and use as
+ appropriate for a given environment):
+
+ id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1}
+ CAProtEncCertValue ::= CMPCertificate
+ id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2}
+ SignKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier
+ id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3}
+ EncKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier
+ id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4}
+ PreferredSymmAlgValue ::= AlgorithmIdentifier
+ id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5}
+ CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent
+ id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6}
+ CurrentCRLValue ::= CertificateList
+ id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7}
+ UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER
+ id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10}
+ KeyPairParamReqValue ::= OBJECT IDENTIFIER
+ id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11}
+ KeyPairParamRepValue ::= AlgorithmIdentifer
+ id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12}
+ RevPassphraseValue ::= EncryptedValue
+ id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13}
+ ImplicitConfirmValue ::= NULL
+ id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14}
+ ConfirmWaitTimeValue ::= GeneralizedTime
+ id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15}
+ OrigPKIMessageValue ::= PKIMessages
+ id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16}
+ SuppLangTagsValue ::= SEQUENCE OF UTF8String
+
+ where
+
+ id-pkix OBJECT IDENTIFIER ::= {
+ iso(1) identified-organization(3)
+ dod(6) internet(1) security(5) mechanisms(5) pkix(7)}
+ and
+ id-it OBJECT IDENTIFIER ::= {id-pkix 4}
+
+
+
+
+ InfoTypeAndValue ::= SEQUENCE {
+ infoType OBJECT IDENTIFIER,
+ infoValue ANY DEFINED BY infoType OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ KeyRecRepContent ::= SEQUENCE {
+ status PKIStatusInfo,
+ newSigCert [0] CMPCertificate OPTIONAL,
+ caCerts [1] SEQUENCE SIZE (1..MAX) OF
+ CMPCertificate OPTIONAL,
+ keyPairHist [2] SEQUENCE SIZE (1..MAX) OF
+ CertifiedKeyPair OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ OobCertHash ::= SEQUENCE {
+ hashAlg [0] AlgorithmIdentifier OPTIONAL,
+ certId [1] CertId OPTIONAL,
+ hashVal BIT STRING
+ -- hashVal is calculated over the Der encoding of the
+ -- self-signed certificate with the identifier certID.
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PkiBody.
+ @param type one of the TYPE_* constants
+ @param content message content
+
+
+
+ PkiBody ::= CHOICE { -- message-specific body elements
+ ir [0] CertReqMessages, --Initialization Request
+ ip [1] CertRepMessage, --Initialization Response
+ cr [2] CertReqMessages, --Certification Request
+ cp [3] CertRepMessage, --Certification Response
+ p10cr [4] CertificationRequest, --imported from [PKCS10]
+ popdecc [5] POPODecKeyChallContent, --pop Challenge
+ popdecr [6] POPODecKeyRespContent, --pop Response
+ kur [7] CertReqMessages, --Key Update Request
+ kup [8] CertRepMessage, --Key Update Response
+ krr [9] CertReqMessages, --Key Recovery Request
+ krp [10] KeyRecRepContent, --Key Recovery Response
+ rr [11] RevReqContent, --Revocation Request
+ rp [12] RevRepContent, --Revocation Response
+ ccr [13] CertReqMessages, --Cross-Cert. Request
+ ccp [14] CertRepMessage, --Cross-Cert. Response
+ ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann.
+ cann [16] CertAnnContent, --Certificate Ann.
+ rann [17] RevAnnContent, --Revocation Ann.
+ crlann [18] CRLAnnContent, --CRL Announcement
+ pkiconf [19] PKIConfirmContent, --Confirmation
+ nested [20] NestedMessageContent, --Nested Message
+ genm [21] GenMsgContent, --General Message
+ genp [22] GenRepContent, --General Response
+ error [23] ErrorMsgContent, --Error Message
+ certConf [24] CertConfirmContent, --Certificate confirm
+ pollReq [25] PollReqContent, --Polling request
+ pollRep [26] PollRepContent --Polling response
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiConfirmContent ::= NULL
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PKIFailureInfo ::= BIT STRING {
+ badAlg (0),
+ -- unrecognized or unsupported Algorithm Identifier
+ badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
+ badRequest (2),
+ -- transaction not permitted or supported
+ badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
+ badCertId (4), -- no certificate could be found matching the provided criteria
+ badDataFormat (5),
+ -- the data submitted has the wrong format
+ wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
+ incorrectData (7), -- the requester's data is incorrect (for notary services)
+ missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
+ badPOP (9) -- the proof-of-possession failed
+ certRevoked (10),
+ certConfirmed (11),
+ wrongIntegrity (12),
+ badRecipientNonce (13),
+ timeNotAvailable (14),
+ -- the TSA's time source is not available
+ unacceptedPolicy (15),
+ -- the requested TSA policy is not supported by the TSA
+ unacceptedExtension (16),
+ -- the requested extension is not supported by the TSA
+ addInfoNotAvailable (17)
+ -- the additional information requested could not be understood
+ -- or is not available
+ badSenderNonce (18),
+ badCertTemplate (19),
+ signerNotTrusted (20),
+ transactionIdInUse (21),
+ unsupportedVersion (22),
+ notAuthorized (23),
+ systemUnavail (24),
+ systemFailure (25),
+ -- the request cannot be handled due to system failure
+ duplicateCertReq (26)
+
+
+
+ Basic constructor.
+
+
+ Return the number of string elements present.
+
+ @return number of elements present.
+
+
+ Return the UTF8STRING at index.
+
+ @param index index of the string of interest
+ @return the string at index.
+
+
+
+ PkiFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
+
+
+
+ Value for a "null" recipient or sender.
+
+
+
+ PkiHeader ::= SEQUENCE {
+ pvno INTEGER { cmp1999(1), cmp2000(2) },
+ sender GeneralName,
+ -- identifies the sender
+ recipient GeneralName,
+ -- identifies the intended recipient
+ messageTime [0] GeneralizedTime OPTIONAL,
+ -- time of production of this message (used when sender
+ -- believes that the transport will be "suitable"; i.e.,
+ -- that the time will still be meaningful upon receipt)
+ protectionAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used for calculation of protection bits
+ senderKID [2] KeyIdentifier OPTIONAL,
+ recipKID [3] KeyIdentifier OPTIONAL,
+ -- to identify specific keys used for protection
+ transactionID [4] OCTET STRING OPTIONAL,
+ -- identifies the transaction; i.e., this will be the same in
+ -- corresponding request, response, certConf, and PKIConf
+ -- messages
+ senderNonce [5] OCTET STRING OPTIONAL,
+ recipNonce [6] OCTET STRING OPTIONAL,
+ -- nonces used to provide replay protection, senderNonce
+ -- is inserted by the creator of this message; recipNonce
+ -- is a nonce previously inserted in a related message by
+ -- the intended recipient of this message
+ freeText [7] PKIFreeText OPTIONAL,
+ -- this may be used to indicate context-specific instructions
+ -- (this field is intended for human consumption)
+ generalInfo [8] SEQUENCE SIZE (1..MAX) OF
+ InfoTypeAndValue OPTIONAL
+ -- this may be used to convey context-specific information
+ -- (this field not primarily intended for human consumption)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PKIHeader ::= SEQUENCE {
+ pvno INTEGER { cmp1999(1), cmp2000(2) },
+ sender GeneralName,
+ -- identifies the sender
+ recipient GeneralName,
+ -- identifies the intended recipient
+ messageTime [0] GeneralizedTime OPTIONAL,
+ -- time of production of this message (used when sender
+ -- believes that the transport will be "suitable"; i.e.,
+ -- that the time will still be meaningful upon receipt)
+ protectionAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used for calculation of protection bits
+ senderKID [2] KeyIdentifier OPTIONAL,
+ recipKID [3] KeyIdentifier OPTIONAL,
+ -- to identify specific keys used for protection
+ transactionID [4] OCTET STRING OPTIONAL,
+ -- identifies the transaction; i.e., this will be the same in
+ -- corresponding request, response, certConf, and PKIConf
+ -- messages
+ senderNonce [5] OCTET STRING OPTIONAL,
+ recipNonce [6] OCTET STRING OPTIONAL,
+ -- nonces used to provide replay protection, senderNonce
+ -- is inserted by the creator of this message; recipNonce
+ -- is a nonce previously inserted in a related message by
+ -- the intended recipient of this message
+ freeText [7] PKIFreeText OPTIONAL,
+ -- this may be used to indicate context-specific instructions
+ -- (this field is intended for human consumption)
+ generalInfo [8] SEQUENCE SIZE (1..MAX) OF
+ InfoTypeAndValue OPTIONAL
+ -- this may be used to convey context-specific information
+ -- (this field not primarily intended for human consumption)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PkiMessage.
+
+ @param header message header
+ @param body message body
+ @param protection message protection (may be null)
+ @param extraCerts extra certificates (may be null)
+
+
+
+ PkiMessage ::= SEQUENCE {
+ header PKIHeader,
+ body PKIBody,
+ protection [0] PKIProtection OPTIONAL,
+ extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
+ OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiMessages ::= SEQUENCE SIZE (1..MAX) OF PkiMessage
+
+ @return a basic ASN.1 object representation.
+
+
+ @param status
+
+
+ @param status
+ @param statusString
+
+
+
+ PkiStatusInfo ::= SEQUENCE {
+ status PKIStatus, (INTEGER)
+ statusString PkiFreeText OPTIONAL,
+ failInfo PkiFailureInfo OPTIONAL (BIT STRING)
+ }
+
+ PKIStatus:
+ granted (0), -- you got exactly what you asked for
+ grantedWithMods (1), -- you got something like what you asked for
+ rejection (2), -- you don't get it, more information elsewhere in the message
+ waiting (3), -- the request body part has not yet been processed, expect to hear more later
+ revocationWarning (4), -- this message contains a warning that a revocation is imminent
+ revocationNotification (5), -- notification that a revocation has occurred
+ keyUpdateWarning (6) -- update already done for the oldCertId specified in CertReqMsg
+
+ PkiFailureInfo:
+ badAlg (0), -- unrecognized or unsupported Algorithm Identifier
+ badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
+ badRequest (2), -- transaction not permitted or supported
+ badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
+ badCertId (4), -- no certificate could be found matching the provided criteria
+ badDataFormat (5), -- the data submitted has the wrong format
+ wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
+ incorrectData (7), -- the requester's data is incorrect (for notary services)
+ missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
+ badPOP (9) -- the proof-of-possession failed
+
+
+
+
+
+ PbmParameter ::= SEQUENCE {
+ salt OCTET STRING,
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this string to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ owf AlgorithmIdentifier,
+ -- AlgId for a One-Way Function (SHA-1 recommended)
+ iterationCount INTEGER,
+ -- number of times the OWF is applied
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this integer to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ mac AlgorithmIdentifier
+ -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
+ } -- or HMAC [RFC2104, RFC2202])
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PollRepContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER,
+ checkAfter INTEGER, -- time in seconds
+ reason PKIFreeText OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PollReqContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoDecKeyChallContent ::= SEQUENCE OF Challenge
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoDecKeyRespContent ::= SEQUENCE OF INTEGER
+
+ @return a basic ASN.1 object representation.
+
+
+
+ ProtectedPart ::= SEQUENCE {
+ header PKIHeader,
+ body PKIBody
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevAnnContent ::= SEQUENCE {
+ status PKIStatus,
+ certId CertId,
+ willBeRevokedAt GeneralizedTime,
+ badSinceDate GeneralizedTime,
+ crlDetails Extensions OPTIONAL
+ -- extra CRL details (e.g., crl number, reason, location, etc.)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevDetails ::= SEQUENCE {
+ certDetails CertTemplate,
+ -- allows requester to specify as much as they can about
+ -- the cert. for which revocation is requested
+ -- (e.g., for cases in which serialNumber is not available)
+ crlEntryDetails Extensions OPTIONAL
+ -- requested crlEntryExtensions
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevRepContent ::= SEQUENCE {
+ status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
+ -- in same order as was sent in RevReqContent
+ revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL,
+ -- IDs for which revocation was requested
+ -- (same order as status)
+ crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL
+ -- the resulting CRLs (there may be more than one)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevReqContent ::= SEQUENCE OF RevDetails
+
+ @return a basic ASN.1 object representation.
+
+
+ return an Attribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attribute ::= SEQUENCE {
+ attrType OBJECT IDENTIFIER,
+ attrValues SET OF AttributeValue
+ }
+
+
+
+ Return the first attribute matching the given OBJECT IDENTIFIER
+
+
+ Return all the attributes matching the OBJECT IDENTIFIER oid. The vector will be
+ empty if there are no attributes of the required type present.
+
+ @param oid type of attribute required.
+ @return a vector of all the attributes found of type oid.
+
+
+ Return a new table with the passed in attribute added.
+
+ @param attrType
+ @param attrValue
+ @return
+
+
+
+ Attributes ::=
+ SET SIZE(1..MAX) OF Attribute -- according to RFC 5652
+
+ @return
+
+
+ return an AuthEnvelopedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @throws ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an AuthEnvelopedData object from the given object.
+
+ @param obj the object we want converted.
+ @throws ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthEnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ authEncryptedContentInfo EncryptedContentInfo,
+ authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+ AuthEnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ authEncryptedContentInfo EncryptedContentInfo,
+ authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
+
+
+
+ return an AuthenticatedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @throws ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an AuthenticatedData object from the given object.
+
+ @param obj the object we want converted.
+ @throws ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthenticatedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithm,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ encapContentInfo EncapsulatedContentInfo,
+ authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
+
+ AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ MessageAuthenticationCode ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthenticatedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithm,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ encapContentInfo EncapsulatedContentInfo,
+ authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
+
+ AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ MessageAuthenticationCode ::= OCTET STRING
+
+
+
+ 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) }
+
+
+ RFC 3274 - CMS Compressed Data.
+
+ CompressedData ::= Sequence {
+ version CMSVersion,
+ compressionAlgorithm CompressionAlgorithmIdentifier,
+ encapContentInfo EncapsulatedContentInfo
+ }
+
+
+
+ return a CompressedData object from a tagged object.
+
+ @param ato the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a CompressedData object from the given object.
+
+ @param _obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ RFC 3274 - CMS Compressed Data.
+
+ CompressedData ::= SEQUENCE {
+ version CMSVersion,
+ compressionAlgorithm CompressionAlgorithmIdentifier,
+ encapContentInfo EncapsulatedContentInfo
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= Sequence {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ return an EncryptedContentInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EncryptedContentInfo ::= Sequence {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+
+
+
+ EncryptedContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+
+
+
+ EncryptedData ::= SEQUENCE {
+ version CMSVersion,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ return an EnvelopedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an EnvelopedData object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EnvelopedData ::= Sequence {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL
+ }
+
+
+
+ return a KekIdentifier object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a KekIdentifier object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KekIdentifier ::= Sequence {
+ keyIdentifier OCTET STRING,
+ date GeneralizedTime OPTIONAL,
+ other OtherKeyAttribute OPTIONAL
+ }
+
+
+
+ return a KekRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a KekRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KekRecipientInfo ::= Sequence {
+ version CMSVersion, -- always set to 4
+ kekID KekIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+ return an KeyAgreeRecipientIdentifier object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an KeyAgreeRecipientIdentifier object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeyAgreeRecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ rKeyId [0] IMPLICIT RecipientKeyIdentifier
+ }
+
+
+
+ return a KeyAgreeRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a KeyAgreeRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ * Produce an object suitable for an Asn1OutputStream.
+ *
+ * KeyAgreeRecipientInfo ::= Sequence {
+ * version CMSVersion, -- always set to 3
+ * originator [0] EXPLICIT OriginatorIdentifierOrKey,
+ * ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
+ * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ * recipientEncryptedKeys RecipientEncryptedKeys
+ * }
+ *
+ * UserKeyingMaterial ::= OCTET STRING
+ *
+
+
+ return a KeyTransRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeyTransRecipientInfo ::= Sequence {
+ version CMSVersion, -- always set to 0 or 2
+ rid RecipientIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+
+ MetaData ::= SEQUENCE {
+ hashProtected BOOLEAN,
+ fileName UTF8String OPTIONAL,
+ mediaType IA5String OPTIONAL,
+ otherMetaData Attributes OPTIONAL
+ }
+
+ @return
+
+
+ return an OriginatorIdentifierOrKey object from a tagged object.
+
+ @param o the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an OriginatorIdentifierOrKey object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorIdentifierOrKey ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier,
+ originatorKey [1] OriginatorPublicKey
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ return an OriginatorInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an OriginatorInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorInfo ::= Sequence {
+ certs [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL
+ }
+
+
+
+ return an OriginatorPublicKey object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an OriginatorPublicKey object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorPublicKey ::= Sequence {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING
+ }
+
+
+
+ return an OtherKeyAttribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherKeyAttribute ::= Sequence {
+ keyAttrId OBJECT IDENTIFIER,
+ keyAttr ANY DEFINED BY keyAttrId OPTIONAL
+ }
+
+
+
+ return a OtherRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a OtherRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherRecipientInfo ::= Sequence {
+ oriType OBJECT IDENTIFIER,
+ oriValue ANY DEFINED BY oriType }
+
+
+
+ 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.
+
+
+ return a OtherRevocationInfoFormat object from the given object.
+
+ @param obj the object we want converted.
+ @exception IllegalArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an ASN1OutputStream.
+
+ OtherRevocationInfoFormat ::= SEQUENCE {
+ otherRevInfoFormat OBJECT IDENTIFIER,
+ otherRevInfo ANY DEFINED BY otherRevInfoFormat }
+
+
+
+ return a PasswordRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a PasswordRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ PasswordRecipientInfo ::= Sequence {
+ version CMSVersion, -- Always set to 0
+ keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier
+ OPTIONAL,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey }
+
+
+
+ return an RecipientEncryptedKey object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a RecipientEncryptedKey object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientEncryptedKey ::= SEQUENCE {
+ rid KeyAgreeRecipientIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+ return a RecipientIdentifier object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientInfo ::= CHOICE {
+ ktri KeyTransRecipientInfo,
+ kari [1] KeyAgreeRecipientInfo,
+ kekri [2] KekRecipientInfo,
+ pwri [3] PasswordRecipientInfo,
+ ori [4] OtherRecipientInfo }
+
+
+
+ return a RecipientKeyIdentifier object from a tagged object.
+
+ @param _ato the tagged object holding the object we want.
+ @param _explicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a RecipientKeyIdentifier object from the given object.
+
+ @param _obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientKeyIdentifier ::= Sequence {
+ subjectKeyIdentifier SubjectKeyIdentifier,
+ date GeneralizedTime OPTIONAL,
+ other OtherKeyAttribute OPTIONAL
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+
+ ScvpReqRes ::= SEQUENCE {
+ request [0] EXPLICIT ContentInfo OPTIONAL,
+ response ContentInfo }
+
+ @return the ASN.1 primitive representation.
+
+
+ a signed data object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignedData ::= Sequence {
+ version CMSVersion,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encapContentInfo EncapsulatedContentInfo,
+ certificates [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+ }
+
+
+
+
+ SignedData ::= SEQUENCE {
+ version CMSVersion,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encapContentInfo EncapsulatedContentInfo,
+ certificates [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+ }
+
+
+
+ return a SignerIdentifier object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerInfo ::= Sequence {
+ version Version,
+ SignerIdentifier sid,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
+ }
+
+ EncryptedDigest ::= OCTET STRING
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+ DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+
+
+ creates a time object from a given date - if the date is between 1950
+ and 2049 a UTCTime object is Generated, otherwise a GeneralizedTime
+ is used.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Time ::= CHOICE {
+ utcTime UTCTime,
+ generalTime GeneralizedTime }
+
+
+
+
+ TimeStampAndCRL ::= SEQUENCE {
+ timeStamp TimeStampToken, -- according to RFC 3161
+ crl CertificateList OPTIONAL -- according to RFC 5280
+ }
+
+ @return
+
+
+
+ TimeStampTokenEvidence ::=
+ SEQUENCE SIZE(1..MAX) OF TimeStampAndCrl
+
+ @return
+
+
+
+ TimeStampedData ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ dataUri IA5String OPTIONAL,
+ metaData MetaData OPTIONAL,
+ content OCTET STRING OPTIONAL,
+ temporalEvidence Evidence
+ }
+
+ @return
+
+
+ return an AuthEnvelopedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @throws ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an AuthEnvelopedData object from the given object.
+
+ @param obj the object we want converted.
+ @throws ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ MQVuserKeyingMaterial ::= SEQUENCE {
+ ephemeralPublicKey OriginatorPublicKey,
+ addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL }
+
+
+
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY DEFINED BY type }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertId ::= SEQUENCE {
+ issuer GeneralName,
+ serialNumber INTEGER }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertReqMessages ::= SEQUENCE SIZE (1..MAX) OF CertReqMsg
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new CertReqMsg.
+ @param certReq CertRequest
+ @param popo may be null
+ @param regInfo may be null
+
+
+
+ CertReqMsg ::= SEQUENCE {
+ certReq CertRequest,
+ pop ProofOfPossession OPTIONAL,
+ -- content depends upon key type
+ regInfo SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertRequest ::= SEQUENCE {
+ certReqId INTEGER, -- ID for matching request and reply
+ certTemplate CertTemplate, -- Selected fields of cert to be issued
+ controls Controls OPTIONAL } -- Attributes affecting issuance
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertTemplate ::= SEQUENCE {
+ version [0] Version OPTIONAL,
+ serialNumber [1] INTEGER OPTIONAL,
+ signingAlg [2] AlgorithmIdentifier OPTIONAL,
+ issuer [3] Name OPTIONAL,
+ validity [4] OptionalValidity OPTIONAL,
+ subject [5] Name OPTIONAL,
+ publicKey [6] SubjectPublicKeyInfo OPTIONAL,
+ issuerUID [7] UniqueIdentifier OPTIONAL,
+ subjectUID [8] UniqueIdentifier OPTIONAL,
+ extensions [9] Extensions OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ Sets the X.509 version. Note: for X509v3, use 2 here.
+
+
+ Sets the issuer unique ID (deprecated in X.509v3)
+
+
+ Sets the subject unique ID (deprecated in X.509v3)
+
+
+
+ CertTemplate ::= SEQUENCE {
+ version [0] Version OPTIONAL,
+ serialNumber [1] INTEGER OPTIONAL,
+ signingAlg [2] AlgorithmIdentifier OPTIONAL,
+ issuer [3] Name OPTIONAL,
+ validity [4] OptionalValidity OPTIONAL,
+ subject [5] Name OPTIONAL,
+ publicKey [6] SubjectPublicKeyInfo OPTIONAL,
+ issuerUID [7] UniqueIdentifier OPTIONAL,
+ subjectUID [8] UniqueIdentifier OPTIONAL,
+ extensions [9] Extensions OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ Controls ::= SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+
+ EncKeyWithID ::= SEQUENCE {
+ privateKey PrivateKeyInfo,
+ identifier CHOICE {
+ string UTF8String,
+ generalName GeneralName
+ } OPTIONAL
+ }
+
+ @return
+
+
+
+ EncryptedKey ::= CHOICE {
+ encryptedValue EncryptedValue, -- deprecated
+ envelopedData [0] EnvelopedData }
+ -- The encrypted private key MUST be placed in the envelopedData
+ -- encryptedContentInfo encryptedContent OCTET STRING.
+
+
+
+
+ EncryptedValue ::= SEQUENCE {
+ intendedAlg [0] AlgorithmIdentifier OPTIONAL,
+ -- the intended algorithm for which the value will be used
+ symmAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- the symmetric algorithm used to encrypt the value
+ encSymmKey [2] BIT STRING OPTIONAL,
+ -- the (encrypted) symmetric key used to encrypt the value
+ keyAlg [3] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used to encrypt the symmetric key
+ valueHint [4] OCTET STRING OPTIONAL,
+ -- a brief description or identifier of the encValue content
+ -- (may be meaningful only to the sending entity, and used only
+ -- if EncryptedValue might be re-examined by the sending entity
+ -- in the future)
+ encValue BIT STRING }
+ -- the encrypted value itself
+
+ @return a basic ASN.1 object representation.
+
+
+
+ OptionalValidity ::= SEQUENCE {
+ notBefore [0] Time OPTIONAL,
+ notAfter [1] Time OPTIONAL } --at least one MUST be present
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiArchiveOptions ::= CHOICE {
+ encryptedPrivKey [0] EncryptedKey,
+ -- the actual value of the private key
+ keyGenParameters [1] KeyGenParameters,
+ -- parameters which allow the private key to be re-generated
+ archiveRemGenPrivKey [2] BOOLEAN }
+ -- set to TRUE if sender wishes receiver to archive the private
+ -- key of a key pair that the receiver generates in response to
+ -- this request; set to FALSE if no archival is desired.
+
+
+
+
+ PkiPublicationInfo ::= SEQUENCE {
+ action INTEGER {
+ dontPublish (0),
+ pleasePublish (1) },
+ pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL }
+ -- pubInfos MUST NOT be present if action is "dontPublish"
+ -- (if action is "pleasePublish" and pubInfos is omitted,
+ -- "dontCare" is assumed)
+
+ @return a basic ASN.1 object representation.
+
+
+ Password-based MAC value for use with POPOSigningKeyInput.
+
+
+ Creates a new PKMACValue.
+ @param params parameters for password-based MAC
+ @param value MAC of the DER-encoded SubjectPublicKeyInfo
+
+
+ Creates a new PKMACValue.
+ @param aid CMPObjectIdentifiers.passwordBasedMAC, with PBMParameter
+ @param value MAC of the DER-encoded SubjectPublicKeyInfo
+
+
+
+ PKMACValue ::= SEQUENCE {
+ algId AlgorithmIdentifier,
+ -- algorithm value shall be PasswordBasedMac 1.2.840.113533.7.66.13
+ -- parameter value is PBMParameter
+ value BIT STRING }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoPrivKey ::= CHOICE {
+ thisMessage [0] BIT STRING, -- Deprecated
+ -- possession is proven in this message (which contains the private
+ -- key itself (encrypted for the CA))
+ subsequentMessage [1] SubsequentMessage,
+ -- possession will be proven in a subsequent message
+ dhMAC [2] BIT STRING, -- Deprecated
+ agreeMAC [3] PKMACValue,
+ encryptedKey [4] EnvelopedData }
+
+
+
+ Creates a new Proof of Possession object for a signing key.
+ @param poposkIn the PopoSigningKeyInput structure, or null if the
+ CertTemplate includes both subject and publicKey values.
+ @param aid the AlgorithmIdentifier used to sign the proof of possession.
+ @param signature a signature over the DER-encoded value of poposkIn,
+ or the DER-encoded value of certReq if poposkIn is null.
+
+
+
+ PopoSigningKey ::= SEQUENCE {
+ poposkInput [0] PopoSigningKeyInput OPTIONAL,
+ algorithmIdentifier AlgorithmIdentifier,
+ signature BIT STRING }
+ -- The signature (using "algorithmIdentifier") is on the
+ -- DER-encoded value of poposkInput. NOTE: If the CertReqMsg
+ -- certReq CertTemplate contains the subject and publicKey values,
+ -- then poposkInput MUST be omitted and the signature MUST be
+ -- computed on the DER-encoded value of CertReqMsg certReq. If
+ -- the CertReqMsg certReq CertTemplate does not contain the public
+ -- key and subject values, then poposkInput MUST be present and
+ -- MUST be signed. This strategy ensures that the public key is
+ -- not present in both the poposkInput and CertReqMsg certReq
+ -- CertTemplate fields.
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PopoSigningKeyInput with sender name as authInfo.
+
+
+ Creates a new PopoSigningKeyInput using password-based MAC.
+
+
+ Returns the sender field, or null if authInfo is publicKeyMac
+
+
+ Returns the publicKeyMac field, or null if authInfo is sender
+
+
+
+ PopoSigningKeyInput ::= SEQUENCE {
+ authInfo CHOICE {
+ sender [0] GeneralName,
+ -- used only if an authenticated identity has been
+ -- established for the sender (e.g., a DN from a
+ -- previously-issued and currently-valid certificate
+ publicKeyMac PKMacValue },
+ -- used if no authenticated GeneralName currently exists for
+ -- the sender; publicKeyMac contains a password-based MAC
+ -- on the DER-encoded value of publicKey
+ publicKey SubjectPublicKeyInfo } -- from CertTemplate
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a ProofOfPossession with type raVerified.
+
+
+ Creates a ProofOfPossession for a signing key.
+
+
+ Creates a ProofOfPossession for key encipherment or agreement.
+ @param type one of TYPE_KEY_ENCIPHERMENT or TYPE_KEY_AGREEMENT
+
+
+
+ ProofOfPossession ::= CHOICE {
+ raVerified [0] NULL,
+ -- used if the RA has already verified that the requester is in
+ -- possession of the private key
+ signature [1] PopoSigningKey,
+ keyEncipherment [2] PopoPrivKey,
+ keyAgreement [3] PopoPrivKey }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ SinglePubInfo ::= SEQUENCE {
+ pubMethod INTEGER {
+ dontCare (0),
+ x500 (1),
+ web (2),
+ ldap (3) },
+ pubLocation GeneralName OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ table of the available named parameters for GOST 3410-2001.
+
+
+ return the ECDomainParameters object for the given OID, null if it
+ isn't present.
+
+ @param oid an object identifier representing a named parameters, if present.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+
+ Gost28147-89-Parameters ::=
+ SEQUENCE {
+ iv Gost28147-89-IV,
+ encryptionParamSet OBJECT IDENTIFIER
+ }
+
+ Gost28147-89-IV ::= OCTET STRING (SIZE (8))
+
+
+
+ table of the available named parameters for GOST 3410-94.
+
+
+ return the GOST3410ParamSetParameters object for the given OID, null if it
+ isn't present.
+
+ @param oid an object identifier representing a named parameters, if present.
+
+
+ returns an enumeration containing the name strings for parameters
+ contained in this structure.
+
+
+
+ RFC 3126: 4.3.1 Certificate Values Attribute Definition
+
+ CertificateValues ::= SEQUENCE OF Certificate
+
+
+
+
+
+ CommitmentTypeIndication ::= SEQUENCE {
+ commitmentTypeId CommitmentTypeIdentifier,
+ commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF
+ CommitmentTypeQualifier OPTIONAL }
+
+
+
+ Commitment type qualifiers, used in the Commitment-Type-Indication attribute (RFC3126).
+
+
+ CommitmentTypeQualifier ::= SEQUENCE {
+ commitmentTypeIdentifier CommitmentTypeIdentifier,
+ qualifier ANY DEFINED BY commitmentTypeIdentifier OPTIONAL }
+
+
+
+ Creates a new CommitmentTypeQualifier
instance.
+
+ @param commitmentTypeIdentifier a CommitmentTypeIdentifier
value
+
+
+ Creates a new CommitmentTypeQualifier
instance.
+
+ @param commitmentTypeIdentifier a CommitmentTypeIdentifier
value
+ @param qualifier the qualifier, defined by the above field.
+
+
+ Creates a new CommitmentTypeQualifier
instance.
+
+ @param as CommitmentTypeQualifier
structure
+ encoded as an Asn1Sequence.
+
+
+ Returns a DER-encodable representation of this instance.
+
+ @return a Asn1Object
value
+
+
+
+ RFC 3126: 4.2.1 Complete Certificate Refs Attribute Definition
+
+ CompleteCertificateRefs ::= SEQUENCE OF OtherCertID
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlIdentifier ::= SEQUENCE
+ {
+ crlissuer Name,
+ crlIssuedTime UTCTime,
+ crlNumber INTEGER OPTIONAL
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CRLListID ::= SEQUENCE
+ {
+ crls SEQUENCE OF CrlValidatedID
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlOcspRef ::= SEQUENCE {
+ crlids [0] CRLListID OPTIONAL,
+ ocspids [1] OcspListID OPTIONAL,
+ otherRev [2] OtherRevRefs OPTIONAL
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlValidatedID ::= SEQUENCE {
+ crlHash OtherHash,
+ crlIdentifier CrlIdentifier OPTIONAL}
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspIdentifier ::= SEQUENCE {
+ ocspResponderID ResponderID,
+ -- As in OCSP response data
+ producedAt GeneralizedTime
+ -- As in OCSP response data
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspListID ::= SEQUENCE {
+ ocspResponses SEQUENCE OF OcspResponsesID
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspResponsesID ::= SEQUENCE {
+ ocspIdentifier OcspIdentifier,
+ ocspRepHash OtherHash OPTIONAL
+ }
+
+
+
+
+
+
+ OtherCertID ::= SEQUENCE {
+ otherCertHash OtherHash,
+ issuerSerial IssuerSerial OPTIONAL
+ }
+
+
+
+
+
+
+ OtherHash ::= CHOICE {
+ sha1Hash OtherHashValue, -- This contains a SHA-1 hash
+ otherHash OtherHashAlgAndValue
+ }
+
+ OtherHashValue ::= OCTET STRING
+
+
+
+
+
+ Summary description for OtherHashAlgAndValue.
+
+
+
+ OtherHashAlgAndValue ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashValue OtherHashValue
+ }
+
+ OtherHashValue ::= OCTET STRING
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OtherRevRefs ::= SEQUENCE
+ {
+ otherRevRefType OtherRevRefType,
+ otherRevRefs ANY DEFINED BY otherRevRefType
+ }
+
+ OtherRevRefType ::= OBJECT IDENTIFIER
+
+
+
+
+
+ RFC 3126: 4.3.2 Revocation Values Attribute Definition
+
+ OtherRevVals ::= SEQUENCE
+ {
+ otherRevValType OtherRevValType,
+ otherRevVals ANY DEFINED BY otherRevValType
+ }
+
+ OtherRevValType ::= OBJECT IDENTIFIER
+
+
+
+
+
+
+ OtherSigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF OtherCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+
+
+
+
+ RFC 5126: 6.3.4. revocation-values Attribute Definition
+
+ RevocationValues ::= SEQUENCE {
+ crlVals [0] SEQUENCE OF CertificateList OPTIONAL,
+ ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
+ otherRevVals [2] OtherRevVals OPTIONAL
+ }
+
+
+
+
+
+
+ SigPolicyQualifierInfo ::= SEQUENCE {
+ sigPolicyQualifierId SigPolicyQualifierId,
+ sigQualifier ANY DEFINED BY sigPolicyQualifierId
+ }
+
+ SigPolicyQualifierId ::= OBJECT IDENTIFIER
+
+
+
+
+
+
+ SignaturePolicyId ::= SEQUENCE {
+ sigPolicyIdentifier SigPolicyId,
+ sigPolicyHash SigPolicyHash,
+ sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL
+ }
+
+ SigPolicyId ::= OBJECT IDENTIFIER
+
+ SigPolicyHash ::= OtherHashAlgAndValue
+
+
+
+
+
+
+ SignaturePolicyIdentifier ::= CHOICE {
+ SignaturePolicyId SignaturePolicyId,
+ SignaturePolicyImplied SignaturePolicyImplied
+ }
+
+ SignaturePolicyImplied ::= NULL
+
+
+
+
+
+
+ SignerAttribute ::= SEQUENCE OF CHOICE {
+ claimedAttributes [0] ClaimedAttributes,
+ certifiedAttributes [1] CertifiedAttributes }
+
+ ClaimedAttributes ::= SEQUENCE OF Attribute
+ CertifiedAttributes ::= AttributeCertificate -- as defined in RFC 3281: see clause 4.1.
+
+
+
+ Signer-Location attribute (RFC3126).
+
+
+ SignerLocation ::= SEQUENCE {
+ countryName [0] DirectoryString OPTIONAL,
+ localityName [1] DirectoryString OPTIONAL,
+ postalAddress [2] PostalAddress OPTIONAL }
+
+ PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
+
+
+
+
+ SignerLocation ::= SEQUENCE {
+ countryName [0] DirectoryString OPTIONAL,
+ localityName [1] DirectoryString OPTIONAL,
+ postalAddress [2] PostalAddress OPTIONAL }
+
+ PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
+
+ DirectoryString ::= CHOICE {
+ teletexString TeletexString (SIZE (1..MAX)),
+ printableString PrintableString (SIZE (1..MAX)),
+ universalString UniversalString (SIZE (1..MAX)),
+ utf8String UTF8String (SIZE (1.. MAX)),
+ bmpString BMPString (SIZE (1..MAX)) }
+
+
+
+ constructor
+
+
+
+ ContentHints ::= SEQUENCE {
+ contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL,
+ contentType ContentType }
+
+
+
+ Create from OCTET STRING whose octets represent the identifier.
+
+
+ Create from byte array representing the identifier.
+
+
+ The definition of ContentIdentifier is
+
+ ContentIdentifier ::= OCTET STRING
+
+ id-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 7 }
+
+
+ constructor
+
+
+
+ EssCertID ::= SEQUENCE {
+ certHash Hash,
+ issuerSerial IssuerSerial OPTIONAL }
+
+
+
+
+ EssCertIDv2 ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier
+ DEFAULT {algorithm id-sha256},
+ certHash Hash,
+ issuerSerial IssuerSerial OPTIONAL
+ }
+
+ Hash ::= OCTET STRING
+
+ IssuerSerial ::= SEQUENCE {
+ issuer GeneralNames,
+ serialNumber CertificateSerialNumber
+ }
+
+
+
+ constructor
+
+
+
+ OtherCertID ::= SEQUENCE {
+ otherCertHash OtherHash,
+ issuerSerial IssuerSerial OPTIONAL }
+
+ OtherHash ::= CHOICE {
+ sha1Hash OCTET STRING,
+ otherHash OtherHashAlgAndValue }
+
+ OtherHashAlgAndValue ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashValue OCTET STRING }
+
+
+
+
+ constructors
+
+
+ The definition of OtherSigningCertificate is
+
+ OtherSigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF OtherCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-ets-otherSigCert OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 19 }
+
+
+ constructors
+
+
+ The definition of SigningCertificate is
+
+ SigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF EssCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 12 }
+
+
+ The definition of SigningCertificateV2 is
+
+ SigningCertificateV2 ::= SEQUENCE {
+ certs SEQUENCE OF EssCertIDv2,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-signingCertificateV2 OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 47 }
+
+
+ The CscaMasterList object. This object can be wrapped in a
+ CMSSignedData to be published in LDAP.
+
+
+ CscaMasterList ::= SEQUENCE {
+ version CscaMasterListVersion,
+ certList SET OF Certificate }
+
+ CscaMasterListVersion :: INTEGER {v0(0)}
+
+
+
+ The DataGroupHash object.
+
+ DataGroupHash ::= SEQUENCE {
+ dataGroupNumber DataGroupNumber,
+ dataGroupHashValue OCTET STRING }
+
+ DataGroupNumber ::= INTEGER {
+ dataGroup1 (1),
+ dataGroup1 (2),
+ dataGroup1 (3),
+ dataGroup1 (4),
+ dataGroup1 (5),
+ dataGroup1 (6),
+ dataGroup1 (7),
+ dataGroup1 (8),
+ dataGroup1 (9),
+ dataGroup1 (10),
+ dataGroup1 (11),
+ dataGroup1 (12),
+ dataGroup1 (13),
+ dataGroup1 (14),
+ dataGroup1 (15),
+ dataGroup1 (16) }
+
+
+
+
+ The LDSSecurityObject object (V1.8).
+
+ LDSSecurityObject ::= SEQUENCE {
+ version LDSSecurityObjectVersion,
+ hashAlgorithm DigestAlgorithmIdentifier,
+ dataGroupHashValues SEQUENCE SIZE (2..ub-DataGroups) OF DataHashGroup,
+ ldsVersionInfo LDSVersionInfo OPTIONAL
+ -- if present, version MUST be v1 }
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier,
+
+ LDSSecurityObjectVersion :: INTEGER {V0(0)}
+
+
+
+
+ LDSVersionInfo ::= SEQUENCE {
+ ldsVersion PRINTABLE STRING
+ unicodeVersion PRINTABLE STRING
+ }
+
+ @return
+
+
+ The id-isismtt-cp-accredited OID indicates that the certificate is a
+ qualified certificate according to Directive 1999/93/EC of the European
+ Parliament and of the Council of 13 December 1999 on a Community
+ Framework for Electronic Signatures, which additionally conforms the
+ special requirements of the SigG and has been issued by an accredited CA.
+
+
+ Certificate extensionDate of certificate generation
+
+
+ DateOfCertGenSyntax ::= GeneralizedTime
+
+
+
+ Attribute to indicate that the certificate holder may sign in the name of
+ a third person. May also be used as extension in a certificate.
+
+
+ Attribute to indicate admissions to certain professions. May be used as
+ attribute in attribute certificate or as extension in a certificate
+
+
+ Monetary limit for transactions. The QcEuMonetaryLimit QC statement MUST
+ be used in new certificates in place of the extension/attribute
+ MonetaryLimit since January 1, 2004. For the sake of backward
+ compatibility with certificates already in use, SigG conforming
+ components MUST support MonetaryLimit (as well as QcEuLimitValue).
+
+
+ A declaration of majority. May be used as attribute in attribute
+ certificate or as extension in a certificate
+
+
+
+ Serial number of the smart card containing the corresponding private key
+
+
+ ICCSNSyntax ::= OCTET STRING (SIZE(8..20))
+
+
+
+
+ Reference for a file of a smartcard that stores the public key of this
+ certificate and that is used as �security anchor�.
+
+
+ PKReferenceSyntax ::= OCTET STRING (SIZE(20))
+
+
+
+ Some other restriction regarding the usage of this certificate. May be
+ used as attribute in attribute certificate or as extension in a
+ certificate.
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.Restriction
+
+
+
+ (Single)Request extension: Clients may include this extension in a
+ (single) Request to request the responder to send the certificate in the
+ response message along with the status information. Besides the LDAP
+ service, this extension provides another mechanism for the distribution
+ of certificates, which MAY optionally be provided by certificate
+ repositories.
+
+
+ RetrieveIfAllowed ::= BOOLEAN
+
+
+
+ SingleOCSPResponse extension: The certificate requested by the client by
+ inserting the RetrieveIfAllowed extension in the request, will be
+ returned in this extension.
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.Ocsp.RequestedCertificate
+
+
+ Base ObjectIdentifier for naming authorities
+
+
+ SingleOCSPResponse extension: Date, when certificate has been published
+ in the directory and status information has become available. Currently,
+ accrediting authorities enforce that SigG-conforming OCSP servers include
+ this extension in the responses.
+
+
+ CertInDirSince ::= GeneralizedTime
+
+
+
+ Hash of a certificate in OCSP.
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.Ocsp.CertHash
+
+
+
+ NameAtBirth ::= DirectoryString(SIZE(1..64)
+
+
+ Used in
+ {@link Org.BouncyCastle.Asn1.X509.SubjectDirectoryAttributes SubjectDirectoryAttributes}
+
+
+ Some other information of non-restrictive nature regarding the usage of
+ this certificate. May be used as attribute in atribute certificate or as
+ extension in a certificate.
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdditionalInformationSyntax
+
+
+ Indicates that an attribute certificate exists, which limits the
+ usability of this public key certificate. Whenever verifying a signature
+ with the help of this certificate, the content of the corresponding
+ attribute certificate should be concerned. This extension MUST be
+ included in a PKC, if a corresponding attribute certificate (having the
+ PKC as base certificate) contains some attribute that restricts the
+ usability of the PKC too. Attribute certificates with restricting content
+ MUST always be included in the signed document.
+
+
+ LiabilityLimitationFlagSyntax ::= BOOLEAN
+
+
+
+ ISIS-MTT PROFILE: The responder may include this extension in a response to
+ send the hash of the requested certificate to the responder. This hash is
+ cryptographically bound to the certificate and serves as evidence that the
+ certificate is known to the responder (i.e. it has been issued and is present
+ in the directory). Hence, this extension is a means to provide a positive
+ statement of availability as described in T8.[8]. As explained in T13.[1],
+ clients may rely on this information to be able to validate signatures after
+ the expiry of the corresponding certificate. Hence, clients MUST support this
+ extension. If a positive statement of availability is to be delivered, this
+ extension syntax and OID MUST be used.
+
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type CertHash:
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param hashAlgorithm The hash algorithm identifier.
+ @param certificateHash The hash of the whole DER encoding of the certificate.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+ @return an Asn1Object
+
+
+ ISIS-MTT-Optional: The certificate requested by the client by inserting the
+ RetrieveIfAllowed extension in the request, will be returned in this
+ extension.
+
+ ISIS-MTT-SigG: The signature act allows publishing certificates only then,
+ when the certificate owner gives his isExplicit permission. Accordingly, there
+ may be �nondownloadable� certificates, about which the responder must provide
+ status information, but MUST NOT include them in the response. Clients may
+ get therefore the following three kind of answers on a single request
+ including the RetrieveIfAllowed extension:
+
+ - a) the responder supports the extension and is allowed to publish the
+ certificate: RequestedCertificate returned including the requested
+ certificate
+ - b) the responder supports the extension but is NOT allowed to publish
+ the certificate: RequestedCertificate returned including an empty OCTET
+ STRING
+ - c) the responder does not support the extension: RequestedCertificate is
+ not included in the response
+
+ Clients requesting RetrieveIfAllowed MUST be able to handle these cases. If
+ any of the OCTET STRING options is used, it MUST contain the DER encoding of
+ the requested certificate.
+
+
+ RequestedCertificate ::= CHOICE {
+ Certificate Certificate,
+ publicKeyCertificate [0] EXPLICIT OCTET STRING,
+ attributeCertificate [1] EXPLICIT OCTET STRING
+ }
+
+
+
+ Constructor from a given details.
+
+ Only one parameter can be given. All other must be null
.
+
+ @param certificate Given as Certificate
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ RequestedCertificate ::= CHOICE {
+ Certificate Certificate,
+ publicKeyCertificate [0] EXPLICIT OCTET STRING,
+ attributeCertificate [1] EXPLICIT OCTET STRING
+ }
+
+
+ @return an Asn1Object
+
+
+ Some other information of non-restrictive nature regarding the usage of this
+ certificate.
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+
+ Constructor from a given details.
+
+ @param information The describtion of the information.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+ @return an Asn1Object
+
+
+ Attribute to indicate admissions to certain professions.
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+
+ ISIS-MTT PROFILE: The relatively complex structure of AdmissionSyntax
+ supports the following concepts and requirements:
+
+ - External institutions (e.g. professional associations, chambers, unions,
+ administrative bodies, companies, etc.), which are responsible for granting
+ and verifying professional admissions, are indicated by means of the data
+ field admissionAuthority. An admission authority is indicated by a
+ GeneralName object. Here an X.501 directory name (distinguished name) can be
+ indicated in the field directoryName, a URL address can be indicated in the
+ field uniformResourceIdentifier, and an object identifier can be indicated in
+ the field registeredId.
+ - The names of authorities which are responsible for the administration of
+ title registers are indicated in the data field namingAuthority. The name of
+ the authority can be identified by an object identifier in the field
+ namingAuthorityId, by means of a text string in the field
+ namingAuthorityText, by means of a URL address in the field
+ 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
+ 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.
+ - See http://www.teletrust.de/anwend.asp?Id=30200&Sprache=E_&HomePG=0
+ for an application form and http://www.teletrust.de/links.asp?id=30220,11
+ for an overview of registered naming authorities.
+ - By means of the data type ProfessionInfo certain professions,
+ specializations, disciplines, fields of activity, etc. are identified. A
+ profession is represented by one or more text strings, resp. profession OIDs
+ in the fields professionItems and professionOIDs and by a registration number
+ in the field registrationNumber. An indication in text form must always be
+ present, whereas the other indications are optional. The component
+ addProfessionInfo may contain additional applicationspecific information in
+ DER-encoded form.
+
+
+ By means of different namingAuthority-OIDs or profession OIDs hierarchies of
+ professions, specializations, disciplines, fields of activity, etc. can be
+ expressed. The issuing admission authority should always be indicated (field
+ admissionAuthority), whenever a registration number is presented. Still,
+ information on admissions can be given without indicating an admission or a
+ naming authority by the exclusive use of the component professionItems. In
+ this case the certification authority is responsible for the verification of
+ the admission information.
+
+
+
+ This attribute is single-valued. Still, several admissions can be captured in
+ the sequence structure of the component contentsOfAdmissions of
+ AdmissionSyntax or in the component professionInfos of Admissions. The
+ component admissionAuthority of AdmissionSyntax serves as default value for
+ the component admissionAuthority of Admissions. Within the latter component
+ the default value can be overwritten, in case that another authority is
+ responsible. The component namingAuthority of Admissions serves as a default
+ value for the component namingAuthority of ProfessionInfo. Within the latter
+ component the default value can be overwritten, in case that another naming
+ authority needs to be recorded.
+
+ The length of the string objects is limited to 128 characters. It is
+ recommended to indicate a namingAuthorityURL in all issued attribute
+ certificates. If a namingAuthorityURL is indicated, the field professionItems
+ of ProfessionInfo should contain only registered titles. If the field
+ professionOIDs exists, it has to contain the OIDs of the professions listed
+ in professionItems in the same order. In general, the field professionInfos
+ should contain only one entry, unless the admissions that are to be listed
+ are logically connected (e.g. they have been issued under the same admission
+ number).
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.Admissions
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from given details.
+
+ @param admissionAuthority The admission authority.
+ @param contentsOfAdmissions The admissions.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ @return Returns the admissionAuthority if present, null otherwise.
+
+
+ @return Returns the contentsOfAdmissions.
+
+
+ An Admissions structure.
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ Parameter professionInfos
is mandatory.
+
+ @param admissionAuthority The admission authority.
+ @param namingAuthority The naming authority.
+ @param professionInfos The profession infos.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+
+ @return an Asn1Object
+
+
+ A declaration of majority.
+
+
+ DeclarationOfMajoritySyntax ::= CHOICE
+ {
+ notYoungerThan [0] IMPLICIT INTEGER,
+ fullAgeAtCountry [1] IMPLICIT SEQUENCE
+ {
+ fullAge BOOLEAN DEFAULT TRUE,
+ country PrintableString (SIZE(2))
+ }
+ dateOfBirth [2] IMPLICIT GeneralizedTime
+ }
+
+
+ fullAgeAtCountry indicates the majority of the owner with respect to the laws
+ of a specific country.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ DeclarationOfMajoritySyntax ::= CHOICE
+ {
+ notYoungerThan [0] IMPLICIT INTEGER,
+ fullAgeAtCountry [1] IMPLICIT SEQUENCE
+ {
+ fullAge BOOLEAN DEFAULT TRUE,
+ country PrintableString (SIZE(2))
+ }
+ dateOfBirth [2] IMPLICIT GeneralizedTime
+ }
+
+
+ @return an Asn1Object
+
+
+ @return notYoungerThan if that's what we are, -1 otherwise
+
+
+ Monetary limit for transactions. The QcEuMonetaryLimit QC statement MUST be
+ used in new certificates in place of the extension/attribute MonetaryLimit
+ since January 1, 2004. For the sake of backward compatibility with
+ certificates already in use, components SHOULD support MonetaryLimit (as well
+ as QcEuLimitValue).
+
+ Indicates a monetary limit within which the certificate holder is authorized
+ to act. (This value DOES NOT express a limit on the liability of the
+ certification authority).
+
+
+ MonetaryLimitSyntax ::= SEQUENCE
+ {
+ currency PrintableString (SIZE(3)),
+ amount INTEGER,
+ exponent INTEGER
+ }
+
+
+ currency must be the ISO code.
+
+ value = amount�10*exponent
+
+
+ Constructor from a given details.
+
+
+ value = amount�10^exponent
+
+ @param currency The currency. Must be the ISO code.
+ @param amount The amount
+ @param exponent The exponent
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ MonetaryLimitSyntax ::= SEQUENCE
+ {
+ currency PrintableString (SIZE(3)),
+ amount INTEGER,
+ exponent INTEGER
+ }
+
+
+ @return an Asn1Object
+
+
+ Names of authorities which are responsible for the administration of title
+ registers.
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+
+
+
+ Profession OIDs should always be defined under the OID branch of the
+ responsible naming authority. At the time of this writing, the work group
+ �Recht, Wirtschaft, Steuern� (�Law, Economy, Taxes�) is registered as the
+ first naming authority under the OID id-isismtt-at-namingAuthorities.
+
+
+ Constructor from Asn1Sequence.
+
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ @return Returns the namingAuthorityID.
+
+
+ @return Returns the namingAuthorityText.
+
+
+ @return Returns the namingAuthorityUrl.
+
+
+ Constructor from given details.
+
+ All parameters can be combined.
+
+ @param namingAuthorityID ObjectIdentifier for naming authority.
+ @param namingAuthorityUrl URL for naming authority.
+ @param namingAuthorityText Textual representation of naming authority.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ Attribute to indicate that the certificate holder may sign in the name of a
+ third person.
+
+ ISIS-MTT PROFILE: The corresponding ProcurationSyntax contains either the
+ name of the person who is represented (subcomponent thirdPerson) or a
+ reference to his/her base certificate (in the component signingFor,
+ subcomponent certRef), furthermore the optional components country and
+ typeSubstitution to indicate the country whose laws apply, and respectively
+ the type of procuration (e.g. manager, procuration, custody).
+
+
+ ISIS-MTT PROFILE: The GeneralName MUST be of type directoryName and MAY only
+ contain: - RFC3039 attributes, except pseudonym (countryName, commonName,
+ surname, givenName, serialNumber, organizationName, organizationalUnitName,
+ stateOrProvincename, localityName, postalAddress) and - SubjectDirectoryName
+ attributes (title, dateOfBirth, placeOfBirth, gender, countryOfCitizenship,
+ countryOfResidence and NameAtBirth).
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+
+ Either generalName
or certRef
MUST be
+ null
.
+
+ @param country The country code whose laws apply.
+ @param typeOfSubstitution The type of procuration.
+ @param certRef Reference to certificate of the person who is represented.
+
+
+ Constructor from a given details.
+
+
+ Either generalName
or certRef
MUST be
+ null
.
+
+ @param country The country code whose laws apply.
+ @param typeOfSubstitution The type of procuration.
+ @param thirdPerson The GeneralName of the person who is represented.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+ @return an Asn1Object
+
+
+ Professions, specializations, disciplines, fields of activity, etc.
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+
+
+ Rechtsanw�ltin
+
+
+ Rechtsanwalt
+
+
+ Rechtsbeistand
+
+
+ Steuerberaterin
+
+
+ Steuerberater
+
+
+ Steuerbevollm�chtigte
+
+
+ Steuerbevollm�chtigter
+
+
+ Notarin
+
+
+ Notar
+
+
+ Notarvertreterin
+
+
+ Notarvertreter
+
+
+ Notariatsverwalterin
+
+
+ Notariatsverwalter
+
+
+ Wirtschaftspr�ferin
+
+
+ Wirtschaftspr�fer
+
+
+ Vereidigte Buchpr�ferin
+
+
+ Vereidigter Buchpr�fer
+
+
+ Patentanw�ltin
+
+
+ Patentanwalt
+
+
+ Constructor from Asn1Sequence.
+
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from given details.
+
+ professionItems
is mandatory, all other parameters are
+ optional.
+
+ @param namingAuthority The naming authority.
+ @param professionItems Directory strings of the profession.
+ @param professionOids DERObjectIdentfier objects for the
+ profession.
+ @param registrationNumber Registration number.
+ @param addProfessionInfo Additional infos in encoded form.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ @return Returns the addProfessionInfo.
+
+
+ @return Returns the namingAuthority.
+
+
+ @return Returns the professionItems.
+
+
+ @return Returns the professionOids.
+
+
+ @return Returns the registrationNumber.
+
+
+ Some other restriction regarding the usage of this certificate.
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+
+ Constructor from DirectoryString.
+
+ The DirectoryString is of type RestrictionSyntax:
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+ @param restriction A IAsn1String.
+
+
+ Constructor from a given details.
+
+ @param restriction The description of the restriction.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+
+ @return an Asn1Object
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ cast5CBCParameters ::= Sequence {
+ iv OCTET STRING DEFAULT 0,
+ -- Initialization vector
+ keyLength Integer
+ -- Key length, in bits
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ IDEA-CBCPar ::= Sequence {
+ iv OCTET STRING OPTIONAL -- exactly 8 octets
+ }
+
+
+
+ The NetscapeCertType object.
+
+ NetscapeCertType ::= BIT STRING {
+ SSLClient (0),
+ SSLServer (1),
+ S/MIME (2),
+ Object Signing (3),
+ Reserved (4),
+ SSL CA (5),
+ S/MIME CA (6),
+ Object Signing CA (7) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (X509NetscapeCertType.sslCA | X509NetscapeCertType.smimeCA)
+
+
+ This is designed to parse
+ the PublicKeyAndChallenge created by the KEYGEN tag included by
+ Mozilla based browsers.
+
+ PublicKeyAndChallenge ::= SEQUENCE {
+ spki SubjectPublicKeyInfo,
+ challenge IA5STRING
+ }
+
+
+
+
+ Utility class for fetching curves using their NIST names as published in FIPS-PUB 186-3
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ From RFC 3657
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ BasicOcspResponse ::= Sequence {
+ tbsResponseData ResponseData,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT Sequence OF Certificate OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CertID ::= Sequence {
+ hashAlgorithm AlgorithmIdentifier,
+ issuerNameHash OCTET STRING, -- Hash of Issuer's DN
+ issuerKeyHash OCTET STRING, -- Hash of Issuers public key
+ serialNumber CertificateSerialNumber }
+
+
+
+ create a CertStatus object with a tag of zero.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CertStatus ::= CHOICE {
+ good [0] IMPLICIT Null,
+ revoked [1] IMPLICIT RevokedInfo,
+ unknown [2] IMPLICIT UnknownInfo }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CrlID ::= Sequence {
+ crlUrl [0] EXPLICIT IA5String OPTIONAL,
+ crlNum [1] EXPLICIT Integer OPTIONAL,
+ crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OcspRequest ::= Sequence {
+ tbsRequest TBSRequest,
+ optionalSignature [0] EXPLICIT Signature OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OcspResponse ::= Sequence {
+ responseStatus OcspResponseStatus,
+ responseBytes [0] EXPLICIT ResponseBytes OPTIONAL }
+
+
+
+ The OcspResponseStatus enumeration.
+
+ OcspResponseStatus ::= Enumerated {
+ successful (0), --Response has valid confirmations
+ malformedRequest (1), --Illegal confirmation request
+ internalError (2), --Internal error in issuer
+ tryLater (3), --Try again later
+ --(4) is not used
+ sigRequired (5), --Must sign the request
+ unauthorized (6) --Request unauthorized
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Request ::= Sequence {
+ reqCert CertID,
+ singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponderID ::= CHOICE {
+ byName [1] Name,
+ byKey [2] KeyHash }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponseBytes ::= Sequence {
+ responseType OBJECT IDENTIFIER,
+ response OCTET STRING }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponseData ::= Sequence {
+ version [0] EXPLICIT Version DEFAULT v1,
+ responderID ResponderID,
+ producedAt GeneralizedTime,
+ responses Sequence OF SingleResponse,
+ responseExtensions [1] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RevokedInfo ::= Sequence {
+ revocationTime GeneralizedTime,
+ revocationReason [0] EXPLICIT CRLReason OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ServiceLocator ::= Sequence {
+ issuer Name,
+ locator AuthorityInfoAccessSyntax OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Signature ::= Sequence {
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT Sequence OF Certificate OPTIONAL}
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SingleResponse ::= Sequence {
+ certID CertID,
+ certStatus CertStatus,
+ thisUpdate GeneralizedTime,
+ nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL,
+ singleExtensions [1] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ TBSRequest ::= Sequence {
+ version [0] EXPLICIT Version DEFAULT v1,
+ requestorName [1] EXPLICIT GeneralName OPTIONAL,
+ requestList Sequence OF Request,
+ requestExtensions [2] EXPLICIT Extensions OPTIONAL }
+
+
+
+ return an Attribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attr ::= Sequence {
+ attrType OBJECT IDENTIFIER,
+ attrValues Set OF AttributeValue
+ }
+
+
+
+ Pkcs10 Certfication request object.
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+
+
+ Pkcs10 CertificationRequestInfo object.
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= Sequence {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ The EncryptedData object.
+
+ EncryptedData ::= Sequence {
+ version Version,
+ encryptedContentInfo EncryptedContentInfo
+ }
+
+
+ EncryptedContentInfo ::= Sequence {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+ EncryptedContent ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EncryptedPrivateKeyInfo ::= Sequence {
+ encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}},
+ encryptedData EncryptedData
+ }
+
+ EncryptedData ::= OCTET STRING
+
+ KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
+ ... -- For local profiles
+ }
+
+
+
+
+ MacData ::= SEQUENCE {
+ mac DigestInfo,
+ macSalt OCTET STRING,
+ iterations INTEGER DEFAULT 1
+ -- Note: The default is for historic reasons and its use is deprecated. A
+ -- higher value, like 1024 is recommended.
+
+ @return the basic DERObject construction.
+
+
+ the infamous Pfx from Pkcs12
+
+
+ write out an RSA private key with its associated information
+ as described in Pkcs8.
+
+ PrivateKeyInfo ::= Sequence {
+ version Version,
+ privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
+ privateKey PrivateKey,
+ attributes [0] IMPLICIT Attributes OPTIONAL
+ }
+ Version ::= Integer {v1(0)} (v1,...)
+
+ PrivateKey ::= OCTET STRING
+
+ Attributes ::= Set OF Attr
+
+
+
+ The default version
+
+
+
+ RSAES-OAEP-params ::= SEQUENCE {
+ hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
+ maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
+ pSourceAlgorithm [2] PKCS1PSourceAlgorithms DEFAULT pSpecifiedEmpty
+ }
+
+ OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-sha1 PARAMETERS NULL }|
+ { OID id-sha256 PARAMETERS NULL }|
+ { OID id-sha384 PARAMETERS NULL }|
+ { OID id-sha512 PARAMETERS NULL },
+ ... -- Allows for future expansion --
+ }
+ PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ ... -- Allows for future expansion --
+ }
+ PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-pSpecified PARAMETERS OCTET STRING },
+ ... -- Allows for future expansion --
+ }
+
+ @return the asn1 primitive representing the parameters.
+
+
+ This outputs the key in Pkcs1v2 format.
+
+ RsaPrivateKey ::= Sequence {
+ version Version,
+ modulus Integer, -- n
+ publicExponent Integer, -- e
+ privateExponent Integer, -- d
+ prime1 Integer, -- p
+ prime2 Integer, -- q
+ exponent1 Integer, -- d mod (p-1)
+ exponent2 Integer, -- d mod (q-1)
+ coefficient Integer -- (inverse of q) mod p
+ }
+
+ Version ::= Integer
+
+ This routine is written to output Pkcs1 version 0, private keys.
+
+
+ The default version
+
+
+
+ RSASSA-PSS-params ::= SEQUENCE {
+ hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
+ maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
+ saltLength [2] INTEGER DEFAULT 20,
+ trailerField [3] TrailerField DEFAULT trailerFieldBC
+ }
+
+ OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-sha1 PARAMETERS NULL }|
+ { OID id-sha256 PARAMETERS NULL }|
+ { OID id-sha384 PARAMETERS NULL }|
+ { OID id-sha512 PARAMETERS NULL },
+ ... -- Allows for future expansion --
+ }
+
+ PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ ... -- Allows for future expansion --
+ }
+
+ TrailerField ::= INTEGER { trailerFieldBC(1) }
+
+ @return the asn1 primitive representing the parameters.
+
+
+ a Pkcs#7 signed data object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignedData ::= Sequence {
+ version Version,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ contentInfo ContentInfo,
+ certificates
+ [0] IMPLICIT ExtendedCertificatesAndCertificates
+ OPTIONAL,
+ crls
+ [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos }
+
+
+
+ a Pkcs#7 signer info object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerInfo ::= Sequence {
+ version Version,
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
+ }
+
+ EncryptedDigest ::= OCTET STRING
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+ DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+
+
+ the elliptic curve private key object from SEC 1
+
+
+ ECPrivateKey ::= SEQUENCE {
+ version INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1),
+ privateKey OCTET STRING,
+ parameters [0] Parameters OPTIONAL,
+ publicKey [1] BIT STRING OPTIONAL }
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ EllipticCurve OBJECT IDENTIFIER ::= {
+ iso(1) identified-organization(3) certicom(132) curve(0)
+ }
+
+
+ Handler class for dealing with S/MIME Capabilities
+
+
+ general preferences
+
+
+ encryption algorithms preferences
+
+
+ return an Attr object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ returns an ArrayList with 0 or more objects of all the capabilities
+ matching the passed in capability Oid. If the Oid passed is null the
+ entire set is returned.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SMIMECapabilities ::= Sequence OF SMIMECapability
+
+
+
+ general preferences
+
+
+ encryption algorithms preferences
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SMIMECapability ::= Sequence {
+ capabilityID OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY capabilityID OPTIONAL
+ }
+
+
+
+ Handler for creating a vector S/MIME Capabilities
+
+
+ The SmimeEncryptionKeyPreference object.
+
+ SmimeEncryptionKeyPreference ::= CHOICE {
+ issuerAndSerialNumber [0] IssuerAndSerialNumber,
+ receipentKeyId [1] RecipientKeyIdentifier,
+ subjectAltKeyIdentifier [2] SubjectKeyIdentifier
+ }
+
+
+
+ @param sKeyId the subjectKeyIdentifier value (normally the X.509 one)
+
+
+ elliptic curves defined in "ECC Brainpool Standard Curves and Curve Generation"
+ http://www.ecc-brainpool.org/download/draft_pkix_additional_ecc_dp.txt
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+
+ Accuracy ::= SEQUENCE {
+ seconds INTEGER OPTIONAL,
+ millis [0] INTEGER (1..999) OPTIONAL,
+ micros [1] INTEGER (1..999) OPTIONAL
+ }
+
+
+
+ @param o
+ @return a MessageImprint object.
+
+
+
+ MessageImprint ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashedMessage OCTET STRING }
+
+
+
+
+
+ TstInfo ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ policy TSAPolicyId,
+ messageImprint MessageImprint,
+ -- MUST have the same value as the similar field in
+ -- TimeStampReq
+ serialNumber INTEGER,
+ -- Time-Stamping users MUST be ready to accommodate integers
+ -- up to 160 bits.
+ genTime GeneralizedTime,
+ accuracy Accuracy OPTIONAL,
+ ordering BOOLEAN DEFAULT FALSE,
+ nonce INTEGER OPTIONAL,
+ -- MUST be present if the similar field was present
+ -- in TimeStampReq. In that case it MUST have the same value.
+ tsa [0] GeneralName OPTIONAL,
+ extensions [1] IMPLICIT Extensions OPTIONAL }
+
+
+
+
+
+ TimeStampReq ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ messageImprint MessageImprint,
+ --a hash algorithm OID and the hash value of the data to be
+ --time-stamped
+ reqPolicy TSAPolicyId OPTIONAL,
+ nonce INTEGER OPTIONAL,
+ certReq BOOLEAN DEFAULT FALSE,
+ extensions [0] IMPLICIT Extensions OPTIONAL
+ }
+
+
+
+
+ TimeStampResp ::= SEQUENCE {
+ status PkiStatusInfo,
+ timeStampToken TimeStampToken OPTIONAL }
+
+
+
+ dump a Der object as a formatted string with indentation
+
+ @param obj the Asn1Object to be dumped out.
+
+
+ dump out a DER object as a formatted string, in non-verbose mode
+
+ @param obj the Asn1Encodable to be dumped out.
+ @return the resulting string.
+
+
+ Dump out the object as a string
+
+ @param obj the Asn1Encodable to be dumped out.
+ @param verbose if true, dump out the contents of octet and bit strings.
+ @return the resulting string.
+
+
+
+ DirectoryString ::= CHOICE {
+ teletexString TeletexString (SIZE (1..MAX)),
+ printableString PrintableString (SIZE (1..MAX)),
+ universalString UniversalString (SIZE (1..MAX)),
+ utf8String UTF8String (SIZE (1..MAX)),
+ bmpString BMPString (SIZE (1..MAX)) }
+
+
+
+ The AccessDescription object.
+
+ AccessDescription ::= SEQUENCE {
+ accessMethod OBJECT IDENTIFIER,
+ accessLocation GeneralName }
+
+
+
+ create an AccessDescription with the oid and location provided.
+
+
+
+ @return the access method.
+
+
+
+ @return the access location
+
+
+
+ Return the OID in the Algorithm entry of this identifier.
+
+
+
+
+ Return the parameters structure in the Parameters entry of this identifier.
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AlgorithmIdentifier ::= Sequence {
+ algorithm OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY algorithm OPTIONAL }
+
+
+
+
+ Don't use this one if you are trying to be RFC 3281 compliant.
+ Use it for v1 attribute certificates only.
+
+ Our GeneralNames structure
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttCertIssuer ::= CHOICE {
+ v1Form GeneralNames, -- MUST NOT be used in this
+ -- profile
+ v2Form [0] V2Form -- v2 only
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttCertValidityPeriod ::= Sequence {
+ notBeforeTime GeneralizedTime,
+ notAfterTime GeneralizedTime
+ }
+
+
+
+ return an Attr object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attr ::= Sequence {
+ attrType OBJECT IDENTIFIER,
+ attrValues Set OF AttributeValue
+ }
+
+
+
+ @param obj
+ @return
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttributeCertificate ::= Sequence {
+ acinfo AttributeCertificateInfo,
+ signatureAlgorithm AlgorithmIdentifier,
+ signatureValue BIT STRING
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttributeCertificateInfo ::= Sequence {
+ version AttCertVersion -- version is v2,
+ holder Holder,
+ issuer AttCertIssuer,
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attrCertValidityPeriod AttCertValidityPeriod,
+ attributes Sequence OF Attr,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+ }
+
+ AttCertVersion ::= Integer { v2(1) }
+
+
+
+ The AuthorityInformationAccess object.
+
+ id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
+
+ AuthorityInfoAccessSyntax ::=
+ Sequence SIZE (1..MAX) OF AccessDescription
+ AccessDescription ::= Sequence {
+ accessMethod OBJECT IDENTIFIER,
+ accessLocation GeneralName }
+
+ id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
+ id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
+ id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
+
+
+
+ create an AuthorityInformationAccess with the oid and location provided.
+
+
+ The AuthorityKeyIdentifier object.
+
+ id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
+
+ AuthorityKeyIdentifier ::= Sequence {
+ keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL,
+ authorityCertIssuer [1] IMPLICIT GeneralNames OPTIONAL,
+ authorityCertSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL }
+
+ KeyIdentifier ::= OCTET STRING
+
+
+
+
+ *
+ * Calulates the keyidentifier using a SHA1 hash over the BIT STRING
+ * from SubjectPublicKeyInfo as defined in RFC2459.
+ *
+ * Example of making a AuthorityKeyIdentifier:
+ *
+ * SubjectPublicKeyInfo apki = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(
+ * publicKey.getEncoded()).readObject());
+ * AuthorityKeyIdentifier aki = new AuthorityKeyIdentifier(apki);
+ *
+ *
+ *
+
+
+ create an AuthorityKeyIdentifier with the GeneralNames tag and
+ the serial number provided as well.
+
+
+ create an AuthorityKeyIdentifier with the GeneralNames tag and
+ the serial number provided.
+
+
+ create an AuthorityKeyIdentifier with a precomputed key identifier
+
+
+ create an AuthorityKeyIdentifier with a precomupted key identifier
+ and the GeneralNames tag and the serial number provided as well.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+ create a cA=true object for the given path length constraint.
+
+ @param pathLenConstraint
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ BasicConstraints := Sequence {
+ cA Boolean DEFAULT FALSE,
+ pathLenConstraint Integer (0..MAX) OPTIONAL
+ }
+
+
+
+ Return the distribution points making up the sequence.
+
+ @return DistributionPoint[]
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CrlDistPoint ::= Sequence SIZE {1..MAX} OF DistributionPoint
+
+
+
+ The CRLNumber object.
+
+ CRLNumber::= Integer(0..MAX)
+
+
+
+ The CRLReason enumeration.
+
+ CRLReason ::= Enumerated {
+ unspecified (0),
+ keyCompromise (1),
+ cACompromise (2),
+ affiliationChanged (3),
+ superseded (4),
+ cessationOfOperation (5),
+ certificateHold (6),
+ removeFromCRL (8),
+ privilegeWithdrawn (9),
+ aACompromise (10)
+ }
+
+
+
+ CertPolicyId, used in the CertificatePolicies and PolicyMappings
+ X509V3 Extensions.
+
+
+ CertPolicyId ::= OBJECT IDENTIFIER
+
+
+
+ PKIX RFC-2459
+
+ The X.509 v2 CRL syntax is as follows. For signature calculation,
+ the data that is to be signed is ASN.1 Der encoded.
+
+
+ CertificateList ::= Sequence {
+ tbsCertList TbsCertList,
+ signatureAlgorithm AlgorithmIdentifier,
+ signatureValue BIT STRING }
+
+
+
+ This class helps to support crossCerfificatePairs in a LDAP directory
+ according RFC 2587
+
+
+ crossCertificatePairATTRIBUTE::={
+ WITH SYNTAX CertificatePair
+ EQUALITY MATCHING RULE certificatePairExactMatch
+ ID joint-iso-ccitt(2) ds(5) attributeType(4) crossCertificatePair(40)}
+
+
+ The forward elements of the crossCertificatePair attribute of a
+ CA's directory entry shall be used to store all, except self-issued
+ certificates issued to this CA. Optionally, the reverse elements of the
+ crossCertificatePair attribute, of a CA's directory entry may contain a
+ subset of certificates issued by this CA to other CAs. When both the forward
+ and the reverse elements are present in a single attribute value, issuer name
+ in one certificate shall match the subject name in the other and vice versa,
+ and the subject public key in one certificate shall be capable of verifying
+ the digital signature on the other certificate and vice versa.
+
+ When a reverse element is present, the forward element value and the reverse
+ element value need not be stored in the same attribute value; in other words,
+ they can be stored in either a single attribute value or two attribute
+ values.
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type CertificatePair:
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param forward Certificates issued to this CA.
+ @param reverse Certificates issued by this CA to other CAs.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+ @return a DERObject
+
+
+ @return Returns the forward.
+
+
+ @return Returns the reverse.
+
+
+ Construct a CertificatePolicies object containing one PolicyInformation.
+
+ @param name the name to be contained.
+
+
+ Produce an object suitable for an ASN1OutputStream.
+
+ CertificatePolicies ::= SEQUENCE SIZE {1..MAX} OF PolicyInformation
+
+
+
+ The DigestInfo object.
+
+ DigestInfo::=Sequence{
+ digestAlgorithm AlgorithmIdentifier,
+ digest OCTET STRING }
+
+
+
+ DisplayText
class, used in
+ CertificatePolicies
X509 V3 extensions (in policy qualifiers).
+
+ It stores a string in a chosen encoding.
+
+ DisplayText ::= CHOICE {
+ ia5String IA5String (SIZE (1..200)),
+ visibleString VisibleString (SIZE (1..200)),
+ bmpString BMPString (SIZE (1..200)),
+ utf8String UTF8String (SIZE (1..200)) }
+
+ @see PolicyQualifierInfo
+ @see PolicyInformation
+
+
+ Constant corresponding to ia5String encoding.
+
+
+
+ Constant corresponding to bmpString encoding.
+
+
+
+ Constant corresponding to utf8String encoding.
+
+
+
+ Constant corresponding to visibleString encoding.
+
+
+
+ Describe constant DisplayTextMaximumSize
here.
+
+
+
+ Creates a new DisplayText
instance.
+
+ @param type the desired encoding type for the text.
+ @param text the text to store. Strings longer than 200
+ characters are truncated.
+
+
+ Creates a new DisplayText
instance.
+
+ @param text the text to encapsulate. Strings longer than 200
+ characters are truncated.
+
+
+ Creates a new DisplayText
instance.
+ Useful when reading back a DisplayText
class
+ from it's Asn1Encodable form.
+
+ @param contents an Asn1Encodable
instance.
+
+
+ Returns the stored string
object.
+
+ @return the stored text as a string
.
+
+
+ The DistributionPoint object.
+
+ DistributionPoint ::= Sequence {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ reasons [1] ReasonFlags OPTIONAL,
+ cRLIssuer [2] GeneralNames OPTIONAL
+ }
+
+
+
+ The DistributionPointName object.
+
+ DistributionPointName ::= CHOICE {
+ fullName [0] GeneralNames,
+ nameRelativeToCRLIssuer [1] RDN
+ }
+
+
+
+ The extendedKeyUsage object.
+
+ extendedKeyUsage ::= Sequence SIZE (1..MAX) OF KeyPurposeId
+
+
+
+ Returns all extended key usages.
+ The returned ArrayList contains DerObjectIdentifier instances.
+ @return An ArrayList with all key purposes.
+
+
+ The GeneralName object.
+
+ GeneralName ::= CHOICE {
+ otherName [0] OtherName,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER}
+
+ OtherName ::= Sequence {
+ type-id OBJECT IDENTIFIER,
+ value [0] EXPLICIT ANY DEFINED BY type-id }
+
+ EDIPartyName ::= Sequence {
+ nameAssigner [0] DirectoryString OPTIONAL,
+ partyName [1] DirectoryString }
+
+
+
+ When the subjectAltName extension contains an Internet mail address,
+ the address MUST be included as an rfc822Name. The format of an
+ rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822].
+
+ When the subjectAltName extension contains a domain name service
+ label, the domain name MUST be stored in the dNSName (an IA5String).
+ The name MUST be in the "preferred name syntax," as specified by RFC
+ 1034 [RFC 1034].
+
+ When the subjectAltName extension contains a URI, the name MUST be
+ stored in the uniformResourceIdentifier (an IA5String). The name MUST
+ be a non-relative URL, and MUST follow the URL syntax and encoding
+ rules specified in [RFC 1738]. The name must include both a scheme
+ (e.g., "http" or "ftp") and a scheme-specific-part. The scheme-
+ specific-part must include a fully qualified domain name or IP
+ address as the host.
+
+ When the subjectAltName extension contains a iPAddress, the address
+ MUST be stored in the octet string in "network byte order," as
+ specified in RFC 791 [RFC 791]. The least significant bit (LSB) of
+ each octet is the LSB of the corresponding byte in the network
+ address. For IP Version 4, as specified in RFC 791, the octet string
+ MUST contain exactly four octets. For IP Version 6, as specified in
+ RFC 1883, the octet string MUST contain exactly sixteen octets [RFC
+ 1883].
+
+
+ Create a GeneralName for the given tag from the passed in string.
+
+ This constructor can handle:
+
+ - rfc822Name
+ - iPAddress
+ - directoryName
+ - dNSName
+ - uniformResourceIdentifier
+ - registeredID
+
+ For x400Address, otherName and ediPartyName there is no common string
+ format defined.
+
+ Note: A directory name can be encoded in different ways into a byte
+ representation. Be aware of this if the byte representation is used for
+ comparing results.
+
+
+ @param tag tag number
+ @param name string representation of name
+ @throws ArgumentException if the string encoding is not correct or
+ not supported.
+
+
+ Construct a GeneralNames object containing one GeneralName.
+ The name to be contained.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ GeneralNames ::= Sequence SIZE {1..MAX} OF GeneralName
+
+
+
+ Class for containing a restriction object subtrees in NameConstraints. See
+ RFC 3280.
+
+
+
+ GeneralSubtree ::= SEQUENCE
+ {
+ baseName GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.NameConstraints
+
+
+
+ Constructor from a given details.
+
+ According RFC 3280, the minimum and maximum fields are not used with any
+ name forms, thus minimum MUST be zero, and maximum MUST be absent.
+
+ If minimum is null
, zero is assumed, if
+ maximum is null
, maximum is absent.
+
+ @param baseName
+ A restriction.
+ @param minimum
+ Minimum
+
+ @param maximum
+ Maximum
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ GeneralSubtree ::= SEQUENCE
+ {
+ baseName GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+ }
+
+
+ @return a DERObject
+
+
+ The Holder object.
+
+ For an v2 attribute certificate this is:
+
+
+ Holder ::= SEQUENCE {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+ For an v1 attribute certificate this is:
+
+
+ subject CHOICE {
+ baseCertificateID [0] IssuerSerial,
+ -- associated with a Public Key Certificate
+ subjectName [1] GeneralNames },
+ -- associated with a name
+
+
+
+
+ Constructor for a holder for an v1 attribute certificate.
+
+ @param tagObj The ASN.1 tagged holder object.
+
+
+ Constructor for a holder for an v2 attribute certificate. *
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructs a holder from a IssuerSerial.
+ @param baseCertificateID The IssuerSerial.
+ @param version The version of the attribute certificate.
+
+
+ Returns 1 for v2 attribute certificates or 0 for v1 attribute
+ certificates.
+ @return The version of the attribute certificate.
+
+
+ Constructs a holder with an entityName for v2 attribute certificates or
+ with a subjectName for v1 attribute certificates.
+
+ @param entityName The entity or subject name.
+
+
+ Constructs a holder with an entityName for v2 attribute certificates or
+ with a subjectName for v1 attribute certificates.
+
+ @param entityName The entity or subject name.
+ @param version The version of the attribute certificate.
+
+
+ Constructs a holder from an object digest info.
+
+ @param objectDigestInfo The object digest info object.
+
+
+ Returns the entityName for an v2 attribute certificate or the subjectName
+ for an v1 attribute certificate.
+
+ @return The entityname or subjectname.
+
+
+ The Holder object.
+
+ Holder ::= Sequence {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+ Implementation of IetfAttrSyntax
as specified by RFC3281.
+
+
+
+
+
+
+
+
+ IetfAttrSyntax ::= Sequence {
+ policyAuthority [0] GeneralNames OPTIONAL,
+ values Sequence OF CHOICE {
+ octets OCTET STRING,
+ oid OBJECT IDENTIFIER,
+ string UTF8String
+ }
+ }
+
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ IssuerSerial ::= Sequence {
+ issuer GeneralNames,
+ serial CertificateSerialNumber,
+ issuerUid UniqueIdentifier OPTIONAL
+ }
+
+
+
+
+ IssuingDistributionPoint ::= SEQUENCE {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
+ onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
+ onlySomeReasons [3] ReasonFlags OPTIONAL,
+ indirectCRL [4] BOOLEAN DEFAULT FALSE,
+ onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
+
+
+
+ Constructor from given details.
+
+ @param distributionPoint
+ May contain an URI as pointer to most current CRL.
+ @param onlyContainsUserCerts Covers revocation information for end certificates.
+ @param onlyContainsCACerts Covers revocation information for CA certificates.
+
+ @param onlySomeReasons
+ Which revocation reasons does this point cover.
+ @param indirectCRL
+ If true
then the CRL contains revocation
+ information about certificates ssued by other CAs.
+ @param onlyContainsAttributeCerts Covers revocation information for attribute certificates.
+
+
+ Constructor from Asn1Sequence
+
+
+ @return Returns the distributionPoint.
+
+
+ @return Returns the onlySomeReasons.
+
+
+ The KeyPurposeID object.
+
+ KeyPurposeID ::= OBJECT IDENTIFIER
+
+
+
+ The KeyUsage object.
+
+ id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
+
+ KeyUsage ::= BIT STRING {
+ digitalSignature (0),
+ nonRepudiation (1),
+ keyEncipherment (2),
+ dataEncipherment (3),
+ keyAgreement (4),
+ keyCertSign (5),
+ cRLSign (6),
+ encipherOnly (7),
+ decipherOnly (8) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (KeyUsage.keyEncipherment | KeyUsage.dataEncipherment)
+
+
+ Constructor from a given details.
+
+ permitted and excluded are Vectors of GeneralSubtree objects.
+
+ @param permitted Permitted subtrees
+ @param excluded Excluded subtrees
+
+
+ NoticeReference
class, used in
+ CertificatePolicies
X509 V3 extensions
+ (in policy qualifiers).
+
+
+ NoticeReference ::= Sequence {
+ organization DisplayText,
+ noticeNumbers Sequence OF Integer }
+
+
+
+ @see PolicyQualifierInfo
+ @see PolicyInformation
+
+
+ Creates a new NoticeReference
instance.
+
+ @param organization a String
value
+ @param numbers a Vector
value
+
+
+ Creates a new NoticeReference
instance.
+
+ @param organization a String
value
+ @param noticeNumbers an ASN1EncodableVector
value
+
+
+ Creates a new NoticeReference
instance.
+
+ @param organization displayText
+ @param noticeNumbers an ASN1EncodableVector
value
+
+
+ Creates a new NoticeReference
instance.
+ Useful for reconstructing a NoticeReference
+ instance from its encodable/encoded form.
+
+ @param as an Asn1Sequence
value obtained from either
+ calling @{link ToAsn1Object()} for a NoticeReference
+ instance or from parsing it from a Der-encoded stream.
+
+
+ Describe ToAsn1Object
method here.
+
+ @return a Asn1Object
value
+
+
+ ObjectDigestInfo ASN.1 structure used in v2 attribute certificates.
+
+
+
+ ObjectDigestInfo ::= SEQUENCE {
+ digestedObjectType ENUMERATED {
+ publicKey (0),
+ publicKeyCert (1),
+ otherObjectTypes (2) },
+ -- otherObjectTypes MUST NOT
+ -- be used in this profile
+ otherObjectTypeID OBJECT IDENTIFIER OPTIONAL,
+ digestAlgorithm AlgorithmIdentifier,
+ objectDigest BIT STRING
+ }
+
+
+
+
+
+ The public key is hashed.
+
+
+ The public key certificate is hashed.
+
+
+ An other object is hashed.
+
+
+ Constructor from given details.
+
+ If digestedObjectType
is not {@link #publicKeyCert} or
+ {@link #publicKey} otherObjectTypeID
must be given,
+ otherwise it is ignored.
+
+ @param digestedObjectType The digest object type.
+ @param otherObjectTypeID The object type ID for
+ otherObjectDigest
.
+ @param digestAlgorithm The algorithm identifier for the hash.
+ @param objectDigest The hash value.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+
+ ObjectDigestInfo ::= SEQUENCE {
+ digestedObjectType ENUMERATED {
+ publicKey (0),
+ publicKeyCert (1),
+ otherObjectTypes (2) },
+ -- otherObjectTypes MUST NOT
+ -- be used in this profile
+ otherObjectTypeID OBJECT IDENTIFIER OPTIONAL,
+ digestAlgorithm AlgorithmIdentifier,
+ objectDigest BIT STRING
+ }
+
+
+
+
+ PolicyMappings V3 extension, described in RFC3280.
+
+ PolicyMappings ::= Sequence SIZE (1..MAX) OF Sequence {
+ issuerDomainPolicy CertPolicyId,
+ subjectDomainPolicy CertPolicyId }
+
+
+ @see RFC 3280, section 4.2.1.6
+
+
+ Creates a new PolicyMappings
instance.
+
+ @param seq an Asn1Sequence
constructed as specified
+ in RFC 3280
+
+
+ Creates a new PolicyMappings
instance.
+
+ @param mappings a HashMap
value that maps
+ string
oids
+ to other string
oids.
+
+
+ PolicyQualifierId, used in the CertificatePolicies
+ X509V3 extension.
+
+
+ id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
+ id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
+ id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
+ PolicyQualifierId ::=
+ OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
+
+
+
+ Policy qualifiers, used in the X509V3 CertificatePolicies
+ extension.
+
+
+ PolicyQualifierInfo ::= Sequence {
+ policyQualifierId PolicyQualifierId,
+ qualifier ANY DEFINED BY policyQualifierId }
+
+
+
+ Creates a new PolicyQualifierInfo
instance.
+
+ @param policyQualifierId a PolicyQualifierId
value
+ @param qualifier the qualifier, defined by the above field.
+
+
+ Creates a new PolicyQualifierInfo
containing a
+ cPSuri qualifier.
+
+ @param cps the CPS (certification practice statement) uri as a
+ string
.
+
+
+ Creates a new PolicyQualifierInfo
instance.
+
+ @param as PolicyQualifierInfo
X509 structure
+ encoded as an Asn1Sequence.
+
+
+ Returns a Der-encodable representation of this instance.
+
+ @return a Asn1Object
value
+
+
+
+
+ PrivateKeyUsagePeriod ::= SEQUENCE
+ {
+ notBefore [0] GeneralizedTime OPTIONAL,
+ notAfter [1] GeneralizedTime OPTIONAL }
+
+
+
+
+ This outputs the key in Pkcs1v2 format.
+
+ RSAPublicKey ::= Sequence {
+ modulus Integer, -- n
+ publicExponent Integer, -- e
+ }
+
+
+
+ The ReasonFlags object.
+
+ ReasonFlags ::= BIT STRING {
+ unused(0),
+ keyCompromise(1),
+ cACompromise(2),
+ affiliationChanged(3),
+ superseded(4),
+ cessationOfOperation(5),
+ certficateHold(6)
+ }
+
+
+
+ @param reasons - the bitwise OR of the Key Reason flags giving the
+ allowed uses for the key.
+
+
+ Implementation of the RoleSyntax object as specified by the RFC3281.
+
+
+ RoleSyntax ::= SEQUENCE {
+ roleAuthority [0] GeneralNames OPTIONAL,
+ roleName [1] GeneralName
+ }
+
+
+
+ RoleSyntax factory method.
+ @param obj the object used to construct an instance of
+ RoleSyntax
. It must be an instance of RoleSyntax
+
or Asn1Sequence
.
+ @return the instance of RoleSyntax
built from the
+ supplied object.
+ @throws java.lang.ArgumentException if the object passed
+ to the factory is not an instance of RoleSyntax
or
+ Asn1Sequence
.
+
+
+ Constructor.
+ @param roleAuthority the role authority of this RoleSyntax.
+ @param roleName the role name of this RoleSyntax.
+
+
+ Constructor. Invoking this constructor is the same as invoking
+ new RoleSyntax(null, roleName)
.
+ @param roleName the role name of this RoleSyntax.
+
+
+ Utility constructor. Takes a string
argument representing
+ the role name, builds a GeneralName
to hold the role name
+ and calls the constructor that takes a GeneralName
.
+ @param roleName
+
+
+ Constructor that builds an instance of RoleSyntax
by
+ extracting the encoded elements from the Asn1Sequence
+ object supplied.
+ @param seq an instance of Asn1Sequence
that holds
+ the encoded elements used to build this RoleSyntax
.
+
+
+ Gets the role authority of this RoleSyntax.
+ @return an instance of GeneralNames
holding the
+ role authority of this RoleSyntax.
+
+
+ Gets the role name of this RoleSyntax.
+ @return an instance of GeneralName
holding the
+ role name of this RoleSyntax.
+
+
+ Gets the role name as a java.lang.string
object.
+ @return the role name of this RoleSyntax represented as a
+ string
object.
+
+
+ Gets the role authority as a string[]
object.
+ @return the role authority of this RoleSyntax represented as a
+ string[]
array.
+
+
+ Implementation of the method ToAsn1Object
as
+ required by the superclass ASN1Encodable
.
+
+
+ RoleSyntax ::= SEQUENCE {
+ roleAuthority [0] GeneralNames OPTIONAL,
+ roleName [1] GeneralName
+ }
+
+
+
+ This extension may contain further X.500 attributes of the subject. See also
+ RFC 3039.
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @see org.bouncycastle.asn1.x509.X509Name for AttributeType ObjectIdentifiers.
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type SubjectDirectoryAttributes:
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @param seq
+ The ASN.1 sequence.
+
+
+ Constructor from an ArrayList of attributes.
+
+ The ArrayList consists of attributes of type {@link Attribute Attribute}
+
+ @param attributes The attributes.
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @return a DERObject
+
+
+ @return Returns the attributes.
+
+
+ The SubjectKeyIdentifier object.
+
+ SubjectKeyIdentifier::= OCTET STRING
+
+
+
+ Calculates the keyIdentifier using a SHA1 hash over the BIT STRING
+ from SubjectPublicKeyInfo as defined in RFC3280.
+
+ @param spki the subject public key info.
+
+
+ Return a RFC 3280 type 1 key identifier. As in:
+
+ (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the
+ value of the BIT STRING subjectPublicKey (excluding the tag,
+ length, and number of unused bits).
+
+ @param keyInfo the key info object containing the subjectPublicKey field.
+ @return the key identifier.
+
+
+ Return a RFC 3280 type 2 key identifier. As in:
+
+ (2) The keyIdentifier is composed of a four bit type field with
+ the value 0100 followed by the least significant 60 bits of the
+ SHA-1 hash of the value of the BIT STRING subjectPublicKey.
+
+ @param keyInfo the key info object containing the subjectPublicKey field.
+ @return the key identifier.
+
+
+ The object that contains the public key stored in a certficate.
+
+ The GetEncoded() method in the public keys in the JCE produces a DER
+ encoded one of these.
+
+
+ for when the public key is an encoded object - if the bitstring
+ can't be decoded this routine raises an IOException.
+
+ @exception IOException - if the bit string doesn't represent a Der
+ encoded object.
+
+
+ for when the public key is raw bits...
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SubjectPublicKeyInfo ::= Sequence {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING }
+
+
+
+ PKIX RFC-2459 - TbsCertList object.
+
+ TbsCertList ::= Sequence {
+ version Version OPTIONAL,
+ -- if present, shall be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates Sequence OF Sequence {
+ userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL
+ -- if present, shall be v2
+ } OPTIONAL,
+ crlExtensions [0] EXPLICIT Extensions OPTIONAL
+ -- if present, shall be v2
+ }
+
+
+
+ The TbsCertificate object.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ extensions [ 3 ] Extensions OPTIONAL
+ }
+
+
+ Note: issuerUniqueID and subjectUniqueID are both deprecated by the IETF. This class
+ will parse them, but you really shouldn't be creating new ones.
+
+
+ Target structure used in target information extension for attribute
+ certificates from RFC 3281.
+
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+
+
+ The targetCert field is currently not supported and must not be used
+ according to RFC 3281.
+
+
+ Creates an instance of a Target from the given object.
+
+ obj
can be a Target or a {@link Asn1TaggedObject}
+
+ @param obj The object.
+ @return A Target instance.
+ @throws ArgumentException if the given object cannot be
+ interpreted as Target.
+
+
+ Constructor from Asn1TaggedObject.
+
+ @param tagObj The tagged object.
+ @throws ArgumentException if the encoding is wrong.
+
+
+ Constructor from given details.
+
+ Exactly one of the parameters must be not null
.
+
+ @param type the choice type to apply to the name.
+ @param name the general name.
+ @throws ArgumentException if type is invalid.
+
+
+ @return Returns the targetGroup.
+
+
+ @return Returns the targetName.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+
+ @return an Asn1Object
+
+
+ Target information extension for attributes certificates according to RFC
+ 3281.
+
+
+ SEQUENCE OF Targets
+
+
+
+
+ Creates an instance of a TargetInformation from the given object.
+
+ obj
can be a TargetInformation or a {@link Asn1Sequence}
+
+ @param obj The object.
+ @return A TargetInformation instance.
+ @throws ArgumentException if the given object cannot be interpreted as TargetInformation.
+
+
+ Constructor from a Asn1Sequence.
+
+ @param seq The Asn1Sequence.
+ @throws ArgumentException if the sequence does not contain
+ correctly encoded Targets elements.
+
+
+ Returns the targets in this target information extension.
+
+ The ArrayList is cloned before it is returned.
+
+ @return Returns the targets.
+
+
+ Constructs a target information from a single targets element.
+ According to RFC 3281 only one targets element must be produced.
+
+ @param targets A Targets instance.
+
+
+ According to RFC 3281 only one targets element must be produced. If
+ multiple targets are given they must be merged in
+ into one targets element.
+
+ @param targets An array with {@link Targets}.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ SEQUENCE OF Targets
+
+
+
+ According to RFC 3281 only one targets element must be produced. If
+ multiple targets are given in the constructor they are merged into one
+ targets element. If this was produced from a
+ {@link Org.BouncyCastle.Asn1.Asn1Sequence} the encoding is kept.
+
+ @return an Asn1Object
+
+
+ Targets structure used in target information extension for attribute
+ certificates from RFC 3281.
+
+
+ Targets ::= SEQUENCE OF Target
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+ TargetCert ::= SEQUENCE {
+ targetCertificate IssuerSerial,
+ targetName GeneralName OPTIONAL,
+ certDigestInfo ObjectDigestInfo OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.Target
+ @see org.bouncycastle.asn1.x509.TargetInformation
+
+
+ Creates an instance of a Targets from the given object.
+
+ obj
can be a Targets or a {@link Asn1Sequence}
+
+ @param obj The object.
+ @return A Targets instance.
+ @throws ArgumentException if the given object cannot be interpreted as Target.
+
+
+ Constructor from Asn1Sequence.
+
+ @param targets The ASN.1 SEQUENCE.
+ @throws ArgumentException if the contents of the sequence are
+ invalid.
+
+
+ Constructor from given targets.
+
+ The ArrayList is copied.
+
+ @param targets An ArrayList
of {@link Target}s.
+ @see Target
+ @throws ArgumentException if the ArrayList contains not only Targets.
+
+
+ Returns the targets in an ArrayList
.
+
+ The ArrayList is cloned before it is returned.
+
+ @return Returns the targets.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Targets ::= SEQUENCE OF Target
+
+
+ @return an Asn1Object
+
+
+ creates a time object from a given date - if the date is between 1950
+ and 2049 a UTCTime object is Generated, otherwise a GeneralizedTime
+ is used.
+
+
+
+ Return our time as DateTime.
+
+ A date time.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Time ::= CHOICE {
+ utcTime UTCTime,
+ generalTime GeneralizedTime }
+
+
+
+ UserNotice
class, used in
+ CertificatePolicies
X509 extensions (in policy
+ qualifiers).
+
+ UserNotice ::= Sequence {
+ noticeRef NoticeReference OPTIONAL,
+ explicitText DisplayText OPTIONAL}
+
+
+
+ @see PolicyQualifierId
+ @see PolicyInformation
+
+
+ Creates a new UserNotice
instance.
+
+ @param noticeRef a NoticeReference
value
+ @param explicitText a DisplayText
value
+
+
+ Creates a new UserNotice
instance.
+
+ @param noticeRef a NoticeReference
value
+ @param str the explicitText field as a string.
+
+
+ Creates a new UserNotice
instance.
+ Useful from reconstructing a UserNotice
instance
+ from its encodable/encoded form.
+
+ @param as an ASN1Sequence
value obtained from either
+ calling @{link toASN1Object()} for a UserNotice
+ instance or from parsing it from a DER-encoded stream.
+
+
+ Generator for Version 1 TbsCertificateStructures.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ }
+
+
+
+
+ Generator for Version 2 AttributeCertificateInfo
+
+ AttributeCertificateInfo ::= Sequence {
+ version AttCertVersion -- version is v2,
+ holder Holder,
+ issuer AttCertIssuer,
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attrCertValidityPeriod AttCertValidityPeriod,
+ attributes Sequence OF Attr,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+ }
+
+
+
+
+ @param attribute
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ V2Form ::= Sequence {
+ issuerName GeneralNames OPTIONAL,
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ objectDigestInfo [1] ObjectDigestInfo OPTIONAL
+ -- issuerName MUST be present in this profile
+ -- baseCertificateID and objectDigestInfo MUST NOT
+ -- be present in this profile
+ }
+
+
+
+ Generator for Version 2 TbsCertList structures.
+
+ TbsCertList ::= Sequence {
+ version Version OPTIONAL,
+ -- if present, shall be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates Sequence OF Sequence {
+ userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL
+ -- if present, shall be v2
+ } OPTIONAL,
+ crlExtensions [0] EXPLICIT Extensions OPTIONAL
+ -- if present, shall be v2
+ }
+
+
+ Note: This class may be subject to change
+
+
+ Generator for Version 3 TbsCertificateStructures.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ extensions [ 3 ] Extensions OPTIONAL
+ }
+
+
+
+
+ an X509Certificate structure.
+
+ Certificate ::= Sequence {
+ tbsCertificate TbsCertificate,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING
+ }
+
+
+
+ The default converter for X509 DN entries when going from their
+ string value to ASN.1 strings.
+
+
+ Apply default conversion for the given value depending on the oid
+ and the character range of the value.
+
+ @param oid the object identifier for the DN entry
+ @param value the value associated with it
+ @return the ASN.1 equivalent for the string value.
+
+
+ an object for the elements in the X.509 V3 extension block.
+
+
+ Convert the value of the passed in extension to an object.
+ The extension to parse.
+ The object the value string contains.
+ If conversion is not possible.
+
+
+ Subject Directory Attributes
+
+
+ Subject Key Identifier
+
+
+ Key Usage
+
+
+ Private Key Usage Period
+
+
+ Subject Alternative Name
+
+
+ Issuer Alternative Name
+
+
+ Basic Constraints
+
+
+ CRL Number
+
+
+ Reason code
+
+
+ Hold Instruction Code
+
+
+ Invalidity Date
+
+
+ Delta CRL indicator
+
+
+ Issuing Distribution Point
+
+
+ Certificate Issuer
+
+
+ Name Constraints
+
+
+ CRL Distribution Points
+
+
+ Certificate Policies
+
+
+ Policy Mappings
+
+
+ Authority Key Identifier
+
+
+ Policy Constraints
+
+
+ Extended Key Usage
+
+
+ Freshest CRL
+
+
+ Inhibit Any Policy
+
+
+ Authority Info Access
+
+
+ Subject Info Access
+
+
+ Logo Type
+
+
+ BiometricInfo
+
+
+ QCStatements
+
+
+ Audit identity extension in attribute certificates.
+
+
+ NoRevAvail extension in attribute certificates.
+
+
+ TargetInformation extension in attribute certificates.
+
+
+ Constructor from Asn1Sequence.
+
+ the extensions are a list of constructed sequences, either with (Oid, OctetString) or (Oid, Boolean, OctetString)
+
+
+ constructor from a table of extensions.
+
+ it's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from a table of extensions with ordering.
+
+ It's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from two vectors
+
+ @param objectIDs an ArrayList of the object identifiers.
+ @param values an ArrayList of the extension values.
+
+
+ constructor from a table of extensions.
+
+ it's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from a table of extensions with ordering.
+
+ It's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from two vectors
+
+ @param objectIDs an ArrayList of the object identifiers.
+ @param values an ArrayList of the extension values.
+
+
+ return an Enumeration of the extension field's object ids.
+
+
+ return the extension represented by the object identifier
+ passed in.
+
+ @return the extension if it's present, null otherwise.
+
+
+
+ Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
+
+ Extension ::= SEQUENCE {
+ extnId EXTENSION.&id ({ExtensionSet}),
+ critical BOOLEAN DEFAULT FALSE,
+ extnValue OCTET STRING }
+
+
+
+ Generator for X.509 extensions
+
+
+ Reset the generator
+
+
+
+ Add an extension with the given oid and the passed in value to be included
+ in the OCTET STRING associated with the extension.
+
+ OID for the extension.
+ True if critical, false otherwise.
+ The ASN.1 object to be included in the extension.
+
+
+
+ Add an extension with the given oid and the passed in byte array to be wrapped
+ in the OCTET STRING associated with the extension.
+
+ OID for the extension.
+ True if critical, false otherwise.
+ The byte array to be wrapped.
+
+
+ Return true if there are no extension present in this generator.
+ True if empty, false otherwise
+
+
+ Generate an X509Extensions object based on the current state of the generator.
+ An X509Extensions object
+
+
+
+ RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+ RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY }
+
+
+
+ country code - StringType(SIZE(2))
+
+
+ organization - StringType(SIZE(1..64))
+
+
+ organizational unit name - StringType(SIZE(1..64))
+
+
+ Title
+
+
+ common name - StringType(SIZE(1..64))
+
+
+ street - StringType(SIZE(1..64))
+
+
+ device serial number name - StringType(SIZE(1..64))
+
+
+ locality name - StringType(SIZE(1..64))
+
+
+ state, or province name - StringType(SIZE(1..64))
+
+
+ Naming attributes of type X520name
+
+
+ businessCategory - DirectoryString(SIZE(1..128)
+
+
+ postalCode - DirectoryString(SIZE(1..40)
+
+
+ dnQualifier - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 DateOfBirth - GeneralizedTime - YYYYMMDD000000Z
+
+
+ RFC 3039 PlaceOfBirth - DirectoryString(SIZE(1..128)
+
+
+ RFC 3039 DateOfBirth - PrintableString (SIZE(1)) -- "M", "F", "m" or "f"
+
+
+ RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166
+ codes only
+
+
+ RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166
+ codes only
+
+
+ ISIS-MTT NameAtBirth - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 PostalAddress - SEQUENCE SIZE (1..6) OF
+ DirectoryString(SIZE(1..30))
+
+
+ RFC 2256 dmdName
+
+
+ id-at-telephoneNumber
+
+
+ id-at-name
+
+
+ Email address (RSA PKCS#9 extension) - IA5String.
+ Note: if you're trying to be ultra orthodox, don't use this! It shouldn't be in here.
+
+
+ more from PKCS#9
+
+
+ email address in Verisign certificates
+
+
+ LDAP User id.
+
+
+ determines whether or not strings should be processed and printed
+ from back to front.
+
+
+ default look up table translating OID values into their common symbols following
+ the convention in RFC 2253 with a few extras
+
+
+ look up table translating OID values into their common symbols following the convention in RFC 2253
+
+
+ look up table translating OID values into their common symbols following the convention in RFC 1779
+
+
+
+ look up table translating common symbols into their OIDS.
+
+
+ Return a X509Name based on the passed in tagged object.
+
+ @param obj tag object holding name.
+ @param explicitly true if explicitly tagged false otherwise.
+ @return the X509Name
+
+
+ Constructor from Asn1Sequence
+
+ the principal will be a list of constructed sets, each containing an (OID, string) pair.
+
+
+ Constructor from a table of attributes with ordering.
+
+ it's is assumed the table contains OID/string pairs, and the contents
+ of the table are copied into an internal table as part of the
+ construction process. The ordering ArrayList should contain the OIDs
+ in the order they are meant to be encoded or printed in ToString.
+
+
+ Constructor from a table of attributes with ordering.
+
+ it's is assumed the table contains OID/string pairs, and the contents
+ of the table are copied into an internal table as part of the
+ construction process. The ordering ArrayList should contain the OIDs
+ in the order they are meant to be encoded or printed in ToString.
+
+ The passed in converter will be used to convert the strings into their
+ ASN.1 counterparts.
+
+
+ Takes two vectors one of the oids and the other of the values.
+
+
+ Takes two vectors one of the oids and the other of the values.
+
+ The passed in converter will be used to convert the strings into their
+ ASN.1 counterparts.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes with each
+ string value being converted to its associated ASN.1 type using the passed
+ in converter.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. If reverse
+ is true, create the encoded version of the sequence starting from the
+ last element in the string.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes with each
+ string value being converted to its associated ASN.1 type using the passed
+ in converter. If reverse is true the ASN.1 sequence representing the DN will
+ be built by starting at the end of the string, rather than the start.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. lookUp
+ should provide a table of lookups, indexed by lowercase only strings and
+ yielding a DerObjectIdentifier, other than that OID. and numeric oids
+ will be processed automatically.
+
+ If reverse is true, create the encoded version of the sequence
+ starting from the last element in the string.
+ @param reverse true if we should start scanning from the end (RFC 2553).
+ @param lookUp table of names and their oids.
+ @param dirName the X.500 string to be parsed.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. lookUp
+ should provide a table of lookups, indexed by lowercase only strings and
+ yielding a DerObjectIdentifier, other than that OID. and numeric oids
+ will be processed automatically. The passed in converter is used to convert the
+ string values to the right of each equals sign to their ASN.1 counterparts.
+
+ @param reverse true if we should start scanning from the end, false otherwise.
+ @param lookUp table of names and oids.
+ @param dirName the string dirName
+ @param converter the converter to convert string values into their ASN.1 equivalents
+
+
+ return an IList of the oids in the name, in the order they were found.
+
+
+ return an IList of the values found in the name, in the order they
+ were found.
+
+
+ return an IList of the values found in the name, in the order they
+ were found, with the DN label corresponding to passed in oid.
+
+
+ The X509Name object to test equivalency against.
+ If true, the order of elements must be the same,
+ as well as the values associated with each element.
+
+
+ test for equivalence - note: case is ignored.
+
+
+ convert the structure to a string - if reverse is true the
+ oids and values are listed out starting with the last element
+ in the sequence (ala RFC 2253), otherwise the string will begin
+ with the first element of the structure. If no string definition
+ for the oid is found in oidSymbols the string value of the oid is
+ added. Two standard symbol tables are provided DefaultSymbols, and
+ RFC2253Symbols as part of this class.
+
+ @param reverse if true start at the end of the sequence and work back.
+ @param oidSymbols look up table strings for oids.
+
+
+ * It turns out that the number of standard ways the fields in a DN should be
+ * encoded into their ASN.1 counterparts is rapidly approaching the
+ * number of machines on the internet. By default the X509Name class
+ * will produce UTF8Strings in line with the current recommendations (RFC 3280).
+ *
+ * An example of an encoder look like below:
+ *
+ * public class X509DirEntryConverter
+ * : X509NameEntryConverter
+ * {
+ * public Asn1Object GetConvertedValue(
+ * DerObjectIdentifier oid,
+ * string value)
+ * {
+ * if (str.Length() != 0 && str.charAt(0) == '#')
+ * {
+ * return ConvertHexEncoded(str, 1);
+ * }
+ * if (oid.Equals(EmailAddress))
+ * {
+ * return new DerIA5String(str);
+ * }
+ * else if (CanBePrintable(str))
+ * {
+ * return new DerPrintableString(str);
+ * }
+ * else if (CanBeUTF8(str))
+ * {
+ * return new DerUtf8String(str);
+ * }
+ * else
+ * {
+ * return new DerBmpString(str);
+ * }
+ * }
+ * }
+ *
+ *
+
+
+ Convert an inline encoded hex string rendition of an ASN.1
+ object back into its corresponding ASN.1 object.
+
+ @param str the hex encoded object
+ @param off the index at which the encoding starts
+ @return the decoded object
+
+
+ return true if the passed in string can be represented without
+ loss as a PrintableString, false otherwise.
+
+
+ Convert the passed in string value into the appropriate ASN.1
+ encoded object.
+
+ @param oid the oid associated with the value in the DN.
+ @param value the value of the particular DN component.
+ @return the ASN.1 equivalent for the value.
+
+
+ class for breaking up an X500 Name into it's component tokens, ala
+ java.util.StringTokenizer. We need this class as some of the
+ lightweight Java environment don't support classes like
+ StringTokenizer.
+
+
+ The BiometricData object.
+
+ BiometricData ::= SEQUENCE {
+ typeOfBiometricData TypeOfBiometricData,
+ hashAlgorithm AlgorithmIdentifier,
+ biometricDataHash OCTET STRING,
+ sourceDataUri IA5String OPTIONAL }
+
+
+
+ The Iso4217CurrencyCode object.
+
+ Iso4217CurrencyCode ::= CHOICE {
+ alphabetic PrintableString (SIZE 3), --Recommended
+ numeric INTEGER (1..999) }
+ -- Alphabetic or numeric currency code as defined in ISO 4217
+ -- It is recommended that the Alphabetic form is used
+
+
+
+ The MonetaryValue object.
+
+ MonetaryValue ::= SEQUENCE {
+ currency Iso4217CurrencyCode,
+ amount INTEGER,
+ exponent INTEGER }
+ -- value = amount * 10^exponent
+
+
+
+ The QCStatement object.
+
+ QCStatement ::= SEQUENCE {
+ statementId OBJECT IDENTIFIER,
+ statementInfo ANY DEFINED BY statementId OPTIONAL}
+
+
+
+ The SemanticsInformation object.
+
+ SemanticsInformation ::= SEQUENCE {
+ semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
+ nameRegistrationAuthorities NameRegistrationAuthorities
+ OPTIONAL }
+ (WITH COMPONENTS {..., semanticsIdentifier PRESENT}|
+ WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})
+
+ NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF
+ GeneralName
+
+
+
+ The TypeOfBiometricData object.
+
+ TypeOfBiometricData ::= CHOICE {
+ predefinedBiometricType PredefinedBiometricType,
+ biometricDataOid OBJECT IDENTIFIER }
+
+ PredefinedBiometricType ::= INTEGER {
+ picture(0),handwritten-signature(1)}
+ (picture|handwritten-signature)
+
+
+
+ Structure for a name or pseudonym.
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @see org.bouncycastle.asn1.x509.sigi.PersonalData
+
+
+
+ Constructor from DERString.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+ @param pseudonym pseudonym value to use.
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param pseudonym The pseudonym.
+
+
+ Constructor from a given details.
+
+ @param surname The surname.
+ @param givenName A sequence of directory strings making up the givenName
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @return an Asn1Object
+
+
+ Contains personal data for the otherName field in the subjectAltNames
+ extension.
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.sigi.NameOrPseudonym
+ @see org.bouncycastle.asn1.x509.sigi.SigIObjectIdentifiers
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param nameOrPseudonym Name or pseudonym.
+ @param nameDistinguisher Name distinguisher.
+ @param dateOfBirth Date of birth.
+ @param placeOfBirth Place of birth.
+ @param gender Gender.
+ @param postalAddress Postal Address.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ Object Identifiers of SigI specifciation (German Signature Law
+ Interoperability specification).
+
+
+ Key purpose IDs for German SigI (Signature Interoperability
+ Specification)
+
+
+ Certificate policy IDs for German SigI (Signature Interoperability
+ Specification)
+
+
+ Other Name IDs for German SigI (Signature Interoperability Specification)
+
+
+ To be used for for the generation of directory service certificates.
+
+
+ ID for PersonalData
+
+
+ Certificate is conform to german signature law.
+
+
+ A general class that reads all X9.62 style EC curve tables.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ return an enumeration of the names of the available curves.
+
+ @return an enumeration of the names of the available curves.
+
+
+ ASN.1 def for Diffie-Hellman key exchange KeySpecificInfo structure. See
+ RFC 2631, or X9.42, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeySpecificInfo ::= Sequence {
+ algorithm OBJECT IDENTIFIER,
+ counter OCTET STRING SIZE (4..4)
+ }
+
+
+
+ ANS.1 def for Diffie-Hellman key exchange OtherInfo structure. See
+ RFC 2631, or X9.42, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherInfo ::= Sequence {
+ keyInfo KeySpecificInfo,
+ partyAInfo [0] OCTET STRING OPTIONAL,
+ suppPubInfo [2] OCTET STRING
+ }
+
+
+
+ table of the current named curves defined in X.962 EC-DSA.
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Parameters ::= CHOICE {
+ ecParameters ECParameters,
+ namedCurve CURVES.&id({CurveNames}),
+ implicitlyCA Null
+ }
+
+
+
+ ASN.1 def for Elliptic-Curve Curve structure. See
+ X9.62, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Curve ::= Sequence {
+ a FieldElement,
+ b FieldElement,
+ seed BIT STRING OPTIONAL
+ }
+
+
+
+ ASN.1 def for Elliptic-Curve ECParameters structure. See
+ X9.62, for further details.
+
+
+ Return the ASN.1 entry representing the Curve.
+
+ @return the X9Curve for the curve in these parameters.
+
+
+ Return the ASN.1 entry representing the FieldID.
+
+ @return the X9FieldID for the FieldID in these parameters.
+
+
+ Return the ASN.1 entry representing the base point G.
+
+ @return the X9ECPoint for the base point in these parameters.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ECParameters ::= Sequence {
+ version Integer { ecpVer1(1) } (ecpVer1),
+ fieldID FieldID {{FieldTypes}},
+ curve X9Curve,
+ base X9ECPoint,
+ order Integer,
+ cofactor Integer OPTIONAL
+ }
+
+
+
+ class for describing an ECPoint as a Der object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ECPoint ::= OCTET STRING
+
+
+ Octet string produced using ECPoint.GetEncoded().
+
+
+ Class for processing an ECFieldElement as a DER object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ FieldElement ::= OCTET STRING
+
+
+
+ - if q is an odd prime then the field element is
+ processed as an Integer and converted to an octet string
+ according to x 9.62 4.3.1.
+ - if q is 2m then the bit string
+ contained in the field element is converted into an octet
+ string with the same ordering padded at the front if necessary.
+
+
+
+
+
+ ASN.1 def for Elliptic-Curve Field ID structure. See
+ X9.62, for further details.
+
+
+ Constructor for elliptic curves over prime fields
+ F2
.
+ @param primeP The prime p
defining the prime field.
+
+
+ Constructor for elliptic curves over binary fields
+ F2m
.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ Constructor for elliptic curves over binary fields
+ F2m
.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
..
+
+
+ Produce a Der encoding of the following structure.
+
+ FieldID ::= Sequence {
+ fieldType FIELD-ID.&id({IOSet}),
+ parameters FIELD-ID.&Type({IOSet}{@fieldType})
+ }
+
+
+
+ id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+ us(840) x9-57 (10040) x9cm(4) 3 }
+
+
+ X9.63
+
+
+ X9.42
+
+
+ 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
+ fails.
+
+
+ decode the base 64 encoded input data.
+
+ @return the offset the data starts in out.
+
+
+ Create a stream for reading a PGP armoured message, parsing up to a header
+ and then reading the data that follows.
+
+ @param input
+
+
+ Create an armoured input stream which will assume the data starts
+ straight away, or parse for headers first depending on the value of
+ hasHeaders.
+
+ @param input
+ @param hasHeaders true if headers are to be looked for, false otherwise.
+
+
+ @return true if we are inside the clear text section of a PGP
+ signed message.
+
+
+ @return true if the stream is actually at end of file.
+
+
+ Return the armor header line (if there is one)
+ @return the armor header line, null if none present.
+
+
+ Return the armor headers (the lines after the armor header line),
+ @return an array of armor headers, null if there aren't any.
+
+
+ Basic output stream.
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+
+ Set an additional header entry.
+
+ @param name the name of the header entry.
+ @param v the value of the header entry.
+
+
+ Reset the headers to only contain a Version string.
+
+
+ Start a clear text signed message.
+ @param hashAlgorithm
+
+
+ Note: Close() does not close the underlying stream. So it is possible to write
+ multiple objects using armoring to a single stream.
+
+
+ Reader for PGP objects.
+
+
+ Returns the next packet tag in the stream.
+
+
+
+ A stream that overlays our input stream, allowing the user to only read a segment of it.
+ NB: dataLength will be negative if the segment length is in the upper range above 2**31.
+
+
+
+ Base class for a PGP object.
+
+
+ Basic output stream.
+
+
+ Create a stream representing a general packet.
+ Output stream to write to.
+
+
+ Create a stream representing an old style partial object.
+ Output stream to write to.
+ The packet tag for the object.
+
+
+ Create a stream representing a general packet.
+ Output stream to write to.
+ Packet tag.
+ Size of chunks making up the packet.
+ If true, the header is written out in old format.
+
+
+ Create a new style partial input stream buffered into chunks.
+ Output stream to write to.
+ Packet tag.
+ Size of chunks making up the packet.
+
+
+ Create a new style partial input stream buffered into chunks.
+ Output stream to write to.
+ Packet tag.
+ Buffer to use for collecting chunks.
+
+
+ Flush the underlying stream.
+
+
+ Finish writing out the current packet without closing the underlying stream.
+
+
+ Generic compressed data object.
+
+
+ The algorithm tag value.
+
+
+ Basic tags for compression algorithms.
+
+
+ Basic type for a PGP packet.
+
+
+ Base class for a DSA public key.
+
+
+ The stream to read the packet from.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for a DSA secret key.
+
+
+ @param in
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ @return x
+
+
+ Base class for an ECDH Public Key.
+
+
+ The stream to read the packet from.
+
+
+ Base class for an ECDSA Public Key.
+
+
+ The stream to read the packet from.
+
+
+ Base class for an EC Public Key.
+
+
+ The stream to read the packet from.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an EC Secret Key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an ElGamal public key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an ElGamal secret key.
+
+
+ @param in
+
+
+ @param x
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Basic packet for an experimental packet.
+
+
+ Basic tags for hash algorithms.
+
+
+ Base interface for a PGP key.
+
+
+
+ The base format for this key - in the case of the symmetric keys it will generally
+ be raw indicating that the key is just a straight byte representation, for an asymmetric
+ key the format will be PGP, indicating the key is a string of MPIs encoded in PGP format.
+
+ "RAW" or "PGP".
+
+
+ Note: you can only read from this once...
+
+
+ Generic literal data packet.
+
+
+ The format tag value.
+
+
+ The modification time of the file in milli-seconds (since Jan 1, 1970 UTC)
+
+
+ A multiple precision integer
+
+
+ Basic type for a marker packet.
+
+
+ Basic packet for a modification detection code packet.
+
+
+ Generic signature object
+
+
+ The encryption algorithm tag.
+
+
+ The hash algorithm tag.
+
+
+ Basic PGP packet tag types.
+
+
+ Public Key Algorithm tag numbers.
+
+
+ Basic packet for a PGP public key.
+
+
+ Basic packet for a PGP public key.
+
+
+ Construct a version 4 public key packet.
+
+
+ Basic packet for a PGP public subkey
+
+
+ Construct a version 4 public subkey packet.
+
+
+ Base class for an RSA public key.
+
+
+ Construct an RSA public key from the passed in stream.
+
+
+ The modulus.
+ The public exponent.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an RSA secret (or priate) key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ The string to key specifier class.
+
+
+ The hash algorithm.
+
+
+ The IV for the key generation algorithm.
+
+
+ The iteration count
+
+
+ The protection mode - only if GnuDummyS2K
+
+
+ Basic packet for a PGP secret key.
+
+
+ Basic packet for a PGP secret key.
+
+
+ Generic signature packet.
+
+
+ Generate a version 4 signature packet.
+
+ @param signatureType
+ @param keyAlgorithm
+ @param hashAlgorithm
+ @param hashedData
+ @param unhashedData
+ @param fingerprint
+ @param signature
+
+
+ Generate a version 2/3 signature packet.
+
+ @param signatureType
+ @param keyAlgorithm
+ @param hashAlgorithm
+ @param fingerprint
+ @param signature
+
+
+ return the keyId
+ @return the keyId that created the signature.
+
+
+ return the signature trailer that must be included with the data
+ to reconstruct the signature
+
+ @return byte[]
+
+
+ * return the signature as a set of integers - note this is normalised to be the
+ * ASN.1 encoding of what appears in the signature packet.
+
+
+ Return the byte encoding of the signature section.
+ @return uninterpreted signature bytes.
+
+
+ Return the creation time in milliseconds since 1 Jan., 1970 UTC.
+
+
+ Basic type for a PGP Signature sub-packet.
+
+
+ Return the generic data making up the packet.
+
+
+ Basic PGP signature sub-packet tag types.
+
+
+ reader for signature sub-packets
+
+
+ Basic type for a symmetric key encrypted packet.
+
+
+ Basic tags for symmetric key algorithms
+
+
+ Basic type for a symmetric encrypted session key packet
+
+
+ @return int
+
+
+ @return S2k
+
+
+ @return byte[]
+
+
+ @return int
+
+
+ Basic type for a trust packet.
+
+
+ Basic type for a user attribute packet.
+
+
+ Basic type for a user attribute sub-packet.
+
+
+ return the generic data making up the packet.
+
+
+ Basic PGP user attribute sub-packet tag types.
+
+
+ reader for user attribute sub-packets
+
+
+ Basic type for a user ID packet.
+
+
+ Basic type for a image attribute packet.
+
+
+ Packet embedded signature
+
+
+ packet giving signature creation time.
+
+
+ packet giving signature expiration time.
+
+
+ Identifier for the modification detection feature
+
+
+ Returns if modification detection is supported.
+
+
+ Returns if a particular feature is supported.
+
+
+ Sets support for a particular feature.
+
+
+ packet giving signature creation time.
+
+
+ packet giving time after creation at which the key expires.
+
+
+ Return the number of seconds after creation time a key is valid for.
+
+ @return second count for key validity.
+
+
+ Packet holding the key flag values.
+
+
+
+ Return the flag values contained in the first 4 octets (note: at the moment
+ the standard only uses the first one).
+
+
+
+ Class provided a NotationData object according to
+ RFC2440, Chapter 5.2.3.15. Notation Data
+
+
+ packet giving signature creation time.
+
+
+ packet giving whether or not the signature is signed using the primary user ID for the key.
+
+
+ packet giving whether or not is revocable.
+
+
+ packet giving signature creation time.
+
+
+ packet giving signature expiration time.
+
+
+ return time in seconds before signature expires after creation time.
+
+
+ packet giving the User ID of the signer.
+
+
+ packet giving trust.
+
+
+
+ Represents revocation key OpenPGP signature sub packet.
+
+
+
+
+ Represents revocation reason OpenPGP signature sub packet.
+
+
+
+ Compressed data objects
+
+
+ The algorithm used for compression
+
+
+ Get the raw input stream contained in the object.
+
+
+ Return an uncompressed input stream which allows reading of the compressed data.
+
+
+ Class for producing compressed data packets.
+
+
+
+
+ Return an output stream which will save the data being written to
+ the compressed object.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Stream to be used for output.
+ A Stream for output of the compressed data.
+
+
+
+
+
+
+
+ Return an output stream which will compress the data as it is written to it.
+ The stream will be written out in chunks according to the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+
+ Note: using this may break compatibility with RFC 1991 compliant tools.
+ Only recent OpenPGP implementations are capable of accepting these streams.
+
+
+ Stream to be used for output.
+ The buffer to use.
+ A Stream for output of the compressed data.
+
+
+
+
+
+
+ Close the compressed object.summary>
+
+
+
+ Thrown if the IV at the start of a data stream indicates the wrong key is being used.
+
+
+
+ Return the raw input stream for the data stream.
+
+
+ Return true if the message is integrity protected.
+ True, if there is a modification detection code namespace associated
+ with this stream.
+
+
+ Note: This can only be called after the message has been read.
+ True, if the message verifies, false otherwise
+
+
+ Generator for encrypted objects.
+
+
+ Existing SecureRandom constructor.
+ The symmetric algorithm to use.
+ Source of randomness.
+
+
+ Creates a cipher stream which will have an integrity packet associated with it.
+
+
+ Base constructor.
+ The symmetric algorithm to use.
+ Source of randomness.
+ PGP 2.6.x compatibility required.
+
+
+
+ Add a PBE encryption method to the encrypted object using the default algorithm (S2K_SHA1).
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ Add a public key encrypted session key to the encrypted object.
+
+
+
+
+ If buffer is non null stream assumed to be partial, otherwise the length will be used
+ to output a fixed length packet.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+
+
+
+
+ Return an output stream which will encrypt the data as it is written to it.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+
+
+
+
+ Return an output stream which will encrypt the data as it is written to it.
+ The stream will be written out in chunks according to the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+
+
+
+
+
+ Close off the encrypted object - this is equivalent to calling Close() on the stream
+ returned by the Open() method.
+
+
+ Note: This does not close the underlying output stream, only the stream on top of
+ it created by the Open() method.
+
+
+
+
+ A holder for a list of PGP encryption method packets.
+
+
+ Generic exception class for PGP encoding/decoding problems.
+
+
+ Key flag values for the KeyFlags subpacket.
+
+
+
+ General class to handle JCA key pairs and convert them into OpenPGP ones.
+
+ A word for the unwary, the KeyId for an OpenPGP public key is calculated from
+ a hash that includes the time of creation, if you pass a different date to the
+ constructor below with the same public private key pair the KeyIs will not be the
+ same as for previous generations of the key, so ideally you only want to do
+ this once.
+
+
+
+
+ Create a key pair from a PgpPrivateKey and a PgpPublicKey.
+ The public key.
+ The private key.
+
+
+ The keyId associated with this key pair.
+
+
+
+ Generator for a PGP master and subkey ring.
+ This class will generate both the secret and public key rings
+
+
+
+
+ Create a new key ring generator using old style checksumming. It is recommended to use
+ SHA1 checksumming where possible.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+
+ If true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+
+ If true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+ Add a subkey to the key ring to be generated with default certification.
+
+
+
+ Add a subkey to the key ring to be generated with default certification.
+
+ The key pair.
+ The hash algorithm.
+
+
+
+ Add a subkey with specific hashed and unhashed packets associated with it and
+ default certification.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+
+
+
+
+ Add a subkey with specific hashed and unhashed packets associated with it and
+ default certification.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+ The hash algorithm.
+ exception adding subkey:
+
+
+
+ Return the secret key ring.
+
+
+ Return the public key ring that corresponds to the secret key ring.
+
+
+
+ Thrown if the key checksum is invalid.
+
+
+
+ Class for processing literal data objects.
+
+
+ The special name indicating a "for your eyes only" packet.
+
+
+ The format of the data stream - Binary or Text
+
+
+ The file name that's associated with the data stream.
+
+
+ Return the file name as an unintrepreted byte array.
+
+
+ The modification time for the file.
+
+
+ The raw input stream for the data stream.
+
+
+ The input stream representing the data stream.
+
+
+ Class for producing literal data packets.
+
+
+ The special name indicating a "for your eyes only" packet.
+
+
+
+ Generates literal data objects in the old format.
+ This is important if you need compatibility with PGP 2.6.x.
+
+ If true, uses old format.
+
+
+
+
+ Open a literal data packet, returning a stream to store the data inside the packet.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ The stream we want the packet in.
+ The format we are using.
+ The name of the 'file'.
+ The length of the data we will write.
+ The time of last modification we want stored.
+
+
+
+
+ Open a literal data packet, returning a stream to store the data inside the packet,
+ as an indefinite length stream. The stream is written out as a series of partial
+ packets with a chunk size determined by the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+ The stream we want the packet in.
+ The format we are using.
+ The name of the 'file'.
+ The time of last modification we want stored.
+ The buffer to use for collecting data to put into chunks.
+
+
+
+
+ Open a literal data packet for the passed in FileInfo object, returning
+ an output stream for saving the file contents.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ The stream we want the packet in.
+ The format we are using.
+ The FileInfo object containg the packet details.
+
+
+
+ Close the literal data packet - this is equivalent to calling Close()
+ on the stream returned by the Open() method.
+
+
+
+
+ A PGP marker packet - in general these should be ignored other than where
+ the idea is to preserve the original input stream.
+
+
+
+
+ General class for reading a PGP object stream.
+
+ Note: if this class finds a PgpPublicKey or a PgpSecretKey it
+ will create a PgpPublicKeyRing, or a PgpSecretKeyRing for each
+ key found. If all you are trying to do is read a key ring file use
+ either PgpPublicKeyRingBundle or PgpSecretKeyRingBundle.
+
+
+
+ Return the next object in the stream, or null if the end is reached.
+ On a parse error
+
+
+
+ Return all available objects in a list.
+
+ An IList containing all objects from this factory, in order.
+
+
+ A one pass signature object.
+
+
+ Initialise the signature object for verification.
+
+
+ Verify the calculated signature against the passed in PgpSignature.
+
+
+ Holder for a list of PgpOnePassSignature objects.
+
+
+ Padding functions.
+
+
+ A password based encryption object.
+
+
+ Return the raw input stream for the data stream.
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ General class to contain a private key for use with other OpenPGP objects.
+
+
+
+ Create a PgpPrivateKey from a keyID, the associated public data packet, and a regular private key.
+
+ ID of the corresponding public key.
+ the public key data packet to be associated with this private key.
+ the private key data packet to be associated with this private key.
+
+
+ The keyId associated with the contained private key.
+
+
+ The public key packet associated with this private key, if available.
+
+
+ The contained private key.
+
+
+ General class to handle a PGP public key object.
+
+
+
+ Create a PgpPublicKey from the passed in lightweight one.
+
+
+ Note: the time passed in affects the value of the key's keyId, so you probably only want
+ to do this once for a lightweight key, or make sure you keep track of the time you used.
+
+ Asymmetric algorithm type representing the public key.
+ Actual public key to associate.
+ Date of creation.
+ If pubKey is not public.
+ On key creation problem.
+
+
+ Constructor for a sub-key.
+
+
+ Copy constructor.
+ The public key to copy.
+
+
+ The version of this key.
+
+
+ The creation time of this key.
+
+
+ The number of valid days from creation time - zero means no expiry.
+ WARNING: This method will return 1 for keys with version > 3 that expire in less than 1 day
+
+
+ Return the trust data associated with the public key, if present.
+ A byte array with trust data, null otherwise.
+
+
+ The number of valid seconds from creation time - zero means no expiry.
+
+
+ The keyId associated with the public key.
+
+
+ The fingerprint of the key
+
+
+
+ Check if this key has an algorithm type that makes it suitable to use for encryption.
+
+
+ Note: with version 4 keys KeyFlags subpackets should also be considered when present for
+ determining the preferred use of the key.
+
+
+ true if this key algorithm is suitable for encryption.
+
+
+
+ True, if this is a master key.
+
+
+ The algorithm code associated with the public key.
+
+
+ The strength of the key in bits.
+
+
+ The public key contained in the object.
+ A lightweight public key.
+ If the key algorithm is not recognised.
+
+
+ Allows enumeration of any user IDs associated with the key.
+ An IEnumerable of string objects.
+
+
+ Allows enumeration of any user attribute vectors associated with the key.
+ An IEnumerable of PgpUserAttributeSubpacketVector objects.
+
+
+ Allows enumeration of any signatures associated with the passed in id.
+ The ID to be matched.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of signatures associated with the passed in user attributes.
+ The vector of user attributes to be matched.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of signatures of the passed in type that are on this key.
+ The type of the signature to be returned.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of all signatures/certifications associated with this key.
+ An IEnumerable with all signatures/certifications.
+
+
+ Return all signatures/certifications directly associated with this key (ie, not to a user id).
+
+ @return an iterator (possibly empty) with all signatures/certifications.
+
+
+ Check whether this (sub)key has a revocation signature on it.
+ True, if this (sub)key has been revoked.
+
+
+ Add a certification for an id to the given public key.
+ The key the certification is to be added to.
+ The ID the certification is associated with.
+ The new certification.
+ The re-certified key.
+
+
+ Add a certification for the given UserAttributeSubpackets to the given public key.
+ The key the certification is to be added to.
+ The attributes the certification is associated with.
+ The new certification.
+ The re-certified key.
+
+
+
+ Remove any certifications associated with a user attribute subpacket on a key.
+
+ The key the certifications are to be removed from.
+ The attributes to be removed.
+
+ The re-certified key, or null if the user attribute subpacket was not found on the key.
+
+
+
+ Remove any certifications associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that is to be removed.
+ The re-certified key, or null if the ID was not found on the key.
+
+
+ Remove a certification associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that the certfication is to be removed from.
+ The certfication to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Remove a certification associated with a given user attributes on a key.
+ The key the certifications are to be removed from.
+ The user attributes that the certfication is to be removed from.
+ The certification to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Add a revocation or some other key certification to a key.
+ The key the revocation is to be added to.
+ The key signature to be added.
+ The new changed public key object.
+
+
+ Remove a certification from the key.
+ The key the certifications are to be removed from.
+ The certfication to be removed.
+ The modified key, null if the certification was not found.
+
+
+ A public key encrypted data object.
+
+
+ The key ID for the key used to encrypt the data.
+
+
+
+ Return the algorithm code for the symmetric algorithm used to encrypt the data.
+
+
+
+ Return the decrypted data stream for the packet.
+
+
+
+ Class to hold a single master public key and its subkeys.
+
+ Often PGP keyring files consist of multiple master keys, if you are trying to process
+ or construct one of these you should use the PgpPublicKeyRingBundle class.
+
+
+
+
+ Return the first public key in the ring.
+
+
+ Return the public key referred to by the passed in key ID if it is present.
+
+
+ Allows enumeration of all the public keys.
+ An IEnumerable of PgpPublicKey objects.
+
+
+
+ Returns a new key ring with the public key passed in either added or
+ replacing an existing one.
+
+ The public key ring to be modified.
+ The public key to be inserted.
+ A new PgpPublicKeyRing
+
+
+ Returns a new key ring with the public key passed in removed from the key ring.
+ The public key ring to be modified.
+ The public key to be removed.
+ A new PgpPublicKeyRing, or null if pubKey is not found.
+
+
+
+ Often a PGP key ring file is made up of a succession of master/sub-key key rings.
+ If you want to read an entire public key file in one hit this is the class for you.
+
+
+
+ Build a PgpPublicKeyRingBundle from the passed in input stream.
+ Input stream containing data.
+ If a problem parsing the stream occurs.
+ If an object is encountered which isn't a PgpPublicKeyRing.
+
+
+ Return the number of key rings in this collection.
+
+
+ Allow enumeration of the public key rings making up this collection.
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ If true, case is ignored in user ID comparisons.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Return the PGP public key associated with the given key id.
+ The ID of the public key to return.
+
+
+ Return the public key ring which contains the key referred to by keyId
+ key ID to match against
+
+
+
+ Return true if a key matching the passed in key ID is present, false otherwise.
+
+ key ID to look for.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle and
+ the passed in public key ring.
+
+ The PgpPublicKeyRingBundle the key ring is to be added to.
+ The key ring to be added.
+ A new PgpPublicKeyRingBundle merging the current one with the passed in key ring.
+ If the keyId for the passed in key ring is already present.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle with
+ the passed in public key ring removed.
+
+ The PgpPublicKeyRingBundle the key ring is to be removed from.
+ The key ring to be removed.
+ A new PgpPublicKeyRingBundle not containing the passed in key ring.
+ If the keyId for the passed in key ring is not present.
+
+
+ General class to handle a PGP secret key object.
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ If utf8PassPhrase is true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ If utf8PassPhrase is true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Check if this key has an algorithm type that makes it suitable to use for signing.
+
+
+ Note: with version 4 keys KeyFlags subpackets should also be considered when present for
+ determining the preferred use of the key.
+
+
+ true if this key algorithm is suitable for use with signing.
+
+
+
+ True, if this is a master key.
+
+
+ Detect if the Secret Key's Private Key is empty or not
+
+
+ The algorithm the key is encrypted with.
+
+
+ The key ID of the public key associated with this key.
+
+
+ Return the S2K usage associated with this key.
+
+
+ Return the S2K used to process this key.
+
+
+ The public key associated with this key.
+
+
+ Allows enumeration of any user IDs associated with the key.
+ An IEnumerable of string objects.
+
+
+ Allows enumeration of any user attribute vectors associated with the key.
+ An IEnumerable of string objects.
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+ Replace the passed the public key on the passed in secret key.
+ Secret key to change.
+ New public key.
+ A new secret key.
+ If KeyId's do not match.
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+
+
+ Class to hold a single master secret key and its subkeys.
+
+ Often PGP keyring files consist of multiple master keys, if you are trying to process
+ or construct one of these you should use the PgpSecretKeyRingBundle class.
+
+
+
+
+ Return the public key for the master key.
+
+
+ Return the master private key.
+
+
+ Allows enumeration of the secret keys.
+ An IEnumerable of PgpSecretKey objects.
+
+
+
+ Return an iterator of the public keys in the secret key ring that
+ have no matching private key. At the moment only personal certificate data
+ appears in this fashion.
+
+ An IEnumerable of unattached, or extra, public keys.
+
+
+
+ Replace the public key set on the secret ring with the corresponding key off the public ring.
+
+ Secret ring to be changed.
+ Public ring containing the new public key set.
+
+
+
+ Return a copy of the passed in secret key ring, with the master key and sub keys encrypted
+ using a new password and the passed in algorithm.
+
+ The PgpSecretKeyRing to be copied.
+ The current password for key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Returns a new key ring with the secret key passed in either added or
+ replacing an existing one with the same key ID.
+
+ The secret key ring to be modified.
+ The secret key to be inserted.
+ A new PgpSecretKeyRing
+
+
+ Returns a new key ring with the secret key passed in removed from the key ring.
+ The secret key ring to be modified.
+ The secret key to be removed.
+ A new PgpSecretKeyRing, or null if secKey is not found.
+
+
+
+ Often a PGP key ring file is made up of a succession of master/sub-key key rings.
+ If you want to read an entire secret key file in one hit this is the class for you.
+
+
+
+ Build a PgpSecretKeyRingBundle from the passed in input stream.
+ Input stream containing data.
+ If a problem parsing the stream occurs.
+ If an object is encountered which isn't a PgpSecretKeyRing.
+
+
+ Return the number of rings in this collection.
+
+
+ Allow enumeration of the secret key rings making up this collection.
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ If true, case is ignored in user ID comparisons.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Return the PGP secret key associated with the given key id.
+ The ID of the secret key to return.
+
+
+ Return the secret key ring which contains the key referred to by keyId
+ The ID of the secret key
+
+
+
+ Return true if a key matching the passed in key ID is present, false otherwise.
+
+ key ID to look for.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle and
+ the passed in secret key ring.
+
+ The PgpSecretKeyRingBundle the key ring is to be added to.
+ The key ring to be added.
+ A new PgpSecretKeyRingBundle merging the current one with the passed in key ring.
+ If the keyId for the passed in key ring is already present.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle with
+ the passed in secret key ring removed.
+
+ The PgpSecretKeyRingBundle the key ring is to be removed from.
+ The key ring to be removed.
+ A new PgpSecretKeyRingBundle not containing the passed in key ring.
+ If the keyId for the passed in key ring is not present.
+
+
+ A PGP signature object.
+
+
+ The OpenPGP version number for this signature.
+
+
+ The key algorithm associated with this signature.
+
+
+ The hash algorithm associated with this signature.
+
+
+
+ Verify the signature as certifying the passed in public key as associated
+ with the passed in user attributes.
+
+ User attributes the key was stored under.
+ The key to be verified.
+ True, if the signature matches, false otherwise.
+
+
+
+ Verify the signature as certifying the passed in public key as associated
+ with the passed in ID.
+
+ ID the key was stored under.
+ The key to be verified.
+ True, if the signature matches, false otherwise.
+
+
+ Verify a certification for the passed in key against the passed in master key.
+ The key we are verifying against.
+ The key we are verifying.
+ True, if the certification is valid, false otherwise.
+
+
+ Verify a key certification, such as revocation, for the passed in key.
+ The key we are checking.
+ True, if the certification is valid, false otherwise.
+
+
+ The ID of the key that created the signature.
+
+
+ The creation time of this signature.
+
+
+
+ Return true if the signature has either hashed or unhashed subpackets.
+
+
+
+ Generator for PGP signatures.
+
+
+ Create a generator for the passed in keyAlgorithm and hashAlgorithm codes.
+
+
+ Initialise the generator for signing.
+
+
+ Initialise the generator for signing.
+
+
+ Return the one pass header associated with the current signature.
+
+
+ Return a signature object containing the current signature state.
+
+
+ Generate a certification for the passed in ID and key.
+ The ID we are certifying against the public key.
+ The key we are certifying against the ID.
+ The certification.
+
+
+ Generate a certification for the passed in userAttributes.
+ The ID we are certifying against the public key.
+ The key we are certifying against the ID.
+ The certification.
+
+
+ Generate a certification for the passed in key against the passed in master key.
+ The key we are certifying against.
+ The key we are certifying.
+ The certification.
+
+
+ Generate a certification, such as a revocation, for the passed in key.
+ The key we are certifying.
+ The certification.
+
+
+ A list of PGP signatures - normally in the signature block after literal data.
+
+
+ Generator for signature subpackets.
+
+
+
+ Add a TrustSignature packet to the signature. The values for depth and trust are largely
+ installation dependent but there are some guidelines in RFC 4880 - 5.2.3.13.
+
+ true if the packet is critical.
+ depth level.
+ trust amount.
+
+
+
+ Set the number of seconds a key is valid for after the time of its creation.
+ A value of zero means the key never expires.
+
+ True, if should be treated as critical, false otherwise.
+ The number of seconds the key is valid, or zero if no expiry.
+
+
+
+ Set the number of seconds a signature is valid for after the time of its creation.
+ A value of zero means the signature never expires.
+
+ True, if should be treated as critical, false otherwise.
+ The number of seconds the signature is valid, or zero if no expiry.
+
+
+
+ Set the creation time for the signature.
+
+ Note: this overrides the generation of a creation time when the signature
+ is generated.
+
+
+
+
+ Sets revocation reason sub packet
+
+
+
+
+ Sets revocation key sub packet
+
+
+
+
+ Sets issuer key sub packet
+
+
+
+ Container for a list of signature subpackets.
+
+
+ Return true if a particular subpacket type exists.
+
+ @param type type to look for.
+ @return true if present, false otherwise.
+
+
+ Return all signature subpackets of the passed in type.
+ @param type subpacket type code
+ @return an array of zero or more matching subpackets.
+
+
+
+ Return the number of seconds a signature is valid for after its creation date.
+ A value of zero means the signature never expires.
+
+ Seconds a signature is valid for.
+
+
+
+ Return the number of seconds a key is valid for after its creation date.
+ A value of zero means the key never expires.
+
+ Seconds a signature is valid for.
+
+
+ Return the number of packets this vector contains.
+
+
+ Container for a list of user attribute subpackets.
+
+
+ Basic utility class.
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ Write out the passed in file as a literal data packet.
+
+
+ Write out the passed in file as a literal data packet in partial packet format.
+
+
+
+ Return either an ArmoredInputStream or a BcpgInputStream based on whether
+ the initial characters of the stream are binary PGP encodings or not.
+
+
+
+ Generator for old style PGP V3 Signatures.
+
+
+ Create a generator for the passed in keyAlgorithm and hashAlgorithm codes.
+
+
+ Initialise the generator for signing.
+
+
+ Initialise the generator for signing.
+
+
+ Return the one pass header associated with the current signature.
+
+
+ Return a V3 signature object containing the current signature state.
+
+
+ Utility functions for looking a S-expression keys. This class will move when it finds a better home!
+
+ Format documented here:
+ http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=agent/keyformat.txt;h=42c4b1f06faf1bbe71ffadc2fee0fad6bec91a97;hb=refs/heads/master
+
+
+
+
+ The 'Signature' parameter is only available when generating unsigned attributes.
+
+
+
+ containing class for an CMS AuthEnveloped Data object
+
+
+ containing class for an CMS Authenticated Data object
+
+
+ return the object identifier for the content MAC algorithm.
+
+
+ return a store of the intended recipients for this message
+
+
+ return the ContentInfo
+
+
+ return a table of the digested attributes indexed by
+ the OID of the attribute.
+
+
+ return a table of the undigested attributes indexed by
+ the OID of the attribute.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ General class for generating a CMS authenticated-data message.
+
+ A simple example of usage.
+
+
+ CMSAuthenticatedDataGenerator fact = new CMSAuthenticatedDataGenerator();
+
+ fact.addKeyTransRecipient(cert);
+
+ CMSAuthenticatedData data = fact.generate(content, algorithm, "BC");
+
+
+
+ base constructor
+
+
+ constructor allowing specific source of randomness
+ @param rand instance of SecureRandom to use
+
+
+ generate an enveloped object that contains an CMS Enveloped Data
+ object using the given provider and the passed in key generator.
+
+
+ generate an authenticated object that contains an CMS Authenticated Data object
+
+
+ Parsing class for an CMS Authenticated Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one recipient can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ Example of use - assuming the first recipient matches the private key we have.
+
+ CMSAuthenticatedDataParser ad = new CMSAuthenticatedDataParser(inputStream);
+
+ RecipientInformationStore recipients = ad.getRecipientInfos();
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ CMSTypedStream recData = recipient.getContentStream(privateKey, "BC");
+
+ processDataStream(recData.getContentStream());
+
+ if (!Arrays.equals(ad.getMac(), recipient.getMac())
+ {
+ System.err.println("Data corrupted!!!!");
+ }
+ }
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CMSAuthenticatedDataParser ep = new CMSAuthenticatedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+
+ return the object identifier for the mac algorithm.
+
+
+ return the ASN.1 encoded encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a store of the intended recipients for this message
+
+
+ return a table of the unauthenticated attributes indexed by
+ the OID of the attribute.
+ @exception java.io.IOException
+
+
+ return a table of the unauthenticated attributes indexed by
+ the OID of the attribute.
+ @exception java.io.IOException
+
+
+ General class for generating a CMS authenticated-data message stream.
+
+ A simple example of usage.
+
+ CMSAuthenticatedDataStreamGenerator edGen = new CMSAuthenticatedDataStreamGenerator();
+
+ edGen.addKeyTransRecipient(cert);
+
+ ByteArrayOutputStream bOut = new ByteArrayOutputStream();
+
+ OutputStream out = edGen.open(
+ bOut, CMSAuthenticatedDataGenerator.AES128_CBC, "BC");*
+ out.write(data);
+
+ out.close();
+
+
+
+
+ base constructor
+
+
+ constructor allowing specific source of randomness
+ @param rand instance of SecureRandom to use
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ Use a BER Set to store the recipient information
+
+
+ generate an enveloped object that contains an CMS Enveloped Data
+ object using the given provider and the passed in key generator.
+ @throws java.io.IOException
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+
+
+ base constructor
+
+
+ constructor allowing specific source of randomness
+
+ @param rand instance of SecureRandom to use
+
+
+ containing class for an CMS Compressed Data object
+
+
+ Return the uncompressed content.
+
+ @return the uncompressed content
+ @throws CmsException if there is an exception uncompressing the data.
+
+
+ Return the uncompressed content, throwing an exception if the data size
+ is greater than the passed in limit. If the content is exceeded getCause()
+ on the CMSException will contain a StreamOverflowException
+
+ @param limit maximum number of bytes to read
+ @return the content read
+ @throws CMSException if there is an exception uncompressing the data.
+
+
+ return the ContentInfo
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ * General class for generating a compressed CMS message.
+ *
+ * A simple example of usage.
+ *
+ *
+ * CMSCompressedDataGenerator fact = new CMSCompressedDataGenerator();
+ * CMSCompressedData data = fact.Generate(content, algorithm);
+ *
+ *
+
+
+ Generate an object that contains an CMS Compressed Data
+
+
+ Class for reading a CMS Compressed Data stream.
+
+ CMSCompressedDataParser cp = new CMSCompressedDataParser(inputStream);
+
+ process(cp.GetContent().GetContentStream());
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CMSCompressedDataParser ep = new CMSCompressedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+ General class for generating a compressed CMS message stream.
+
+ A simple example of usage.
+
+
+ CMSCompressedDataStreamGenerator gen = new CMSCompressedDataStreamGenerator();
+
+ Stream cOut = gen.Open(outputStream, CMSCompressedDataStreamGenerator.ZLIB);
+
+ cOut.Write(data);
+
+ cOut.Close();
+
+
+
+ base constructor
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ Close the underlying data stream.
+ @throws IOException if the close fails.
+
+
+ containing class for an CMS Enveloped Data object
+
+
+ return the object identifier for the content encryption algorithm.
+
+
+ return a store of the intended recipients for this message
+
+
+ return the ContentInfo
+
+
+ return a table of the unprotected attributes indexed by
+ the OID of the attribute.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+
+ General class for generating a CMS enveloped-data message.
+
+ A simple example of usage.
+
+
+ CmsEnvelopedDataGenerator fact = new CmsEnvelopedDataGenerator();
+
+ fact.AddKeyTransRecipient(cert);
+
+ CmsEnvelopedData data = fact.Generate(content, algorithm);
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+
+ Generate an enveloped object that contains a CMS Enveloped Data
+ object using the passed in key generator.
+
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data object.
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data object.
+
+
+ Parsing class for an CMS Enveloped Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one recipient can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ Example of use - assuming the first recipient matches the private key we have.
+
+ CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(inputStream);
+
+ RecipientInformationStore recipients = ep.GetRecipientInfos();
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ CMSTypedStream recData = recipient.getContentStream(privateKey);
+
+ processDataStream(recData.getContentStream());
+ }
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+
+ return the object identifier for the content encryption algorithm.
+
+
+ return the ASN.1 encoded encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a store of the intended recipients for this message
+
+
+ return a table of the unprotected attributes indexed by
+ the OID of the attribute.
+ @throws IOException
+
+
+ General class for generating a CMS enveloped-data message stream.
+
+ A simple example of usage.
+
+ CmsEnvelopedDataStreamGenerator edGen = new CmsEnvelopedDataStreamGenerator();
+
+ edGen.AddKeyTransRecipient(cert);
+
+ MemoryStream bOut = new MemoryStream();
+
+ Stream out = edGen.Open(
+ bOut, CMSEnvelopedDataGenerator.AES128_CBC);*
+ out.Write(data);
+
+ out.Close();
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data.
+ Length of octet strings to buffer the data.
+
+
+ Use a BER Set to store the recipient information.
+
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data
+ object using the passed in key generator.
+
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+ @throws IOException
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+ @throws IOException
+
+
+ General class for generating a CMS enveloped-data message.
+
+ A simple example of usage.
+
+
+ CMSEnvelopedDataGenerator fact = new CMSEnvelopedDataGenerator();
+
+ fact.addKeyTransRecipient(cert);
+
+ CMSEnvelopedData data = fact.generate(content, algorithm, "BC");
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ add a recipient.
+
+ @param cert recipient's public key certificate
+ @exception ArgumentException if there is a problem with the certificate
+
+
+ add a recipient
+
+ @param key the public key used by the recipient
+ @param subKeyId the identifier for the recipient's public key
+ @exception ArgumentException if there is a problem with the key
+
+
+ add a KEK recipient.
+ @param key the secret key to use for wrapping
+ @param keyIdentifier the byte string that identifies the key
+
+
+ add a KEK recipient.
+ @param key the secret key to use for wrapping
+ @param keyIdentifier the byte string that identifies the key
+
+
+ Add a key agreement based recipient.
+
+ @param agreementAlgorithm key agreement algorithm to use.
+ @param senderPrivateKey private key to initialise sender side of agreement with.
+ @param senderPublicKey sender public key to include with message.
+ @param recipientCert recipient's public key certificate.
+ @param cekWrapAlgorithm OID for key wrapping algorithm to use.
+ @exception SecurityUtilityException if the algorithm requested cannot be found
+ @exception InvalidKeyException if the keys are inappropriate for the algorithm specified
+
+
+ Add multiple key agreement based recipients (sharing a single KeyAgreeRecipientInfo structure).
+
+ @param agreementAlgorithm key agreement algorithm to use.
+ @param senderPrivateKey private key to initialise sender side of agreement with.
+ @param senderPublicKey sender public key to include with message.
+ @param recipientCerts recipients' public key certificates.
+ @param cekWrapAlgorithm OID for key wrapping algorithm to use.
+ @exception SecurityUtilityException if the algorithm requested cannot be found
+ @exception InvalidKeyException if the keys are inappropriate for the algorithm specified
+
+
+
+ Generic routine to copy out the data we want processed.
+
+
+ This routine may be called multiple times.
+
+
+
+ a holding class for a byte array of data to be processed.
+
+
+ A clone of the byte array
+
+
+ a holding class for a file of data to be processed.
+
+
+ The file handle
+
+
+ general class for handling a pkcs7-signature message.
+
+ A simple example of usage - note, in the example below the validity of
+ the certificate isn't verified, just the fact that one of the certs
+ matches the given signer...
+
+
+ IX509Store certs = s.GetCertificates();
+ SignerInformationStore signers = s.GetSignerInfos();
+
+ foreach (SignerInformation signer in signers.GetSigners())
+ {
+ ArrayList certList = new ArrayList(certs.GetMatches(signer.SignerID));
+ X509Certificate cert = (X509Certificate) certList[0];
+
+ if (signer.Verify(cert.GetPublicKey()))
+ {
+ verified++;
+ }
+ }
+
+
+
+ Content with detached signature, digests precomputed
+
+ @param hashes a map of precomputed digests for content indexed by name of hash.
+ @param sigBlock the signature object.
+
+
+ base constructor - content with detached signature.
+
+ @param signedContent the content that was signed.
+ @param sigData the signature object.
+
+
+ base constructor - with encapsulated content
+
+
+ Return the version number for this object.
+
+
+ return the collection of signers that are associated with the
+ signatures for the message.
+
+
+ return a X509Store containing the attribute certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of attribute certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing the public key certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of public key certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing CRLs, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of CRLs
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+
+ Return the DerObjectIdentifier associated with the encapsulated
+ content info structure carried in the signed data.
+
+
+
+ return the ContentInfo
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Replace the signerinformation store associated with this
+ CmsSignedData object with the new one passed in. You would
+ probably only want to do this if you wanted to change the unsigned
+ attributes associated with a signer, or perhaps delete one.
+
+ @param signedData the signed data object to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @return a new signed data object.
+
+
+ Replace the certificate and CRL information associated with this
+ CmsSignedData object with the new one passed in.
+
+ @param signedData the signed data object to be used as a base.
+ @param x509Certs the new certificates to be used.
+ @param x509Crls the new CRLs to be used.
+ @return a new signed data object.
+ @exception CmsException if there is an error processing the stores
+
+
+ * general class for generating a pkcs7-signature message.
+ *
+ * A simple example of usage.
+ *
+ *
+ * IX509Store certs...
+ * IX509Store crls...
+ * CmsSignedDataGenerator gen = new CmsSignedDataGenerator();
+ *
+ * gen.AddSigner(privKey, cert, CmsSignedGenerator.DigestSha1);
+ * gen.AddCertificates(certs);
+ * gen.AddCrls(crls);
+ *
+ * CmsSignedData data = gen.Generate(content);
+ *
+ *
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ * add a signer - no attributes other than the default ones will be
+ * provided here.
+ *
+ * @param key signing key to use
+ * @param cert certificate containing corresponding public key
+ * @param digestOID digest algorithm OID
+
+
+ add a signer, specifying the digest encryption algorithm to use - no attributes other than the default ones will be
+ provided here.
+
+ @param key signing key to use
+ @param cert certificate containing corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+
+
+ add a signer, specifying the digest encryption algorithm to use - no attributes other than the default ones will be
+ provided here.
+
+
+ * add a signer with extra signed/unsigned attributes.
+ *
+ * @param key signing key to use
+ * @param cert certificate containing corresponding public key
+ * @param digestOID digest algorithm OID
+ * @param signedAttr table of attributes to be included in signature
+ * @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes.
+
+ @param key signing key to use
+ @param cert certificate containing corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+ @param signedAttr table of attributes to be included in signature
+ @param unsignedAttr table of attributes to be included as unsigned
+
+
+ * add a signer with extra signed/unsigned attributes.
+ *
+ * @param key signing key to use
+ * @param subjectKeyID subjectKeyID of corresponding public key
+ * @param digestOID digest algorithm OID
+ * @param signedAttr table of attributes to be included in signature
+ * @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes.
+
+ @param key signing key to use
+ @param subjectKeyID subjectKeyID of corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+ @param signedAttr table of attributes to be included in signature
+ @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer with extra signed/unsigned attributes based on generators.
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes based on generators.
+
+
+ add a signer with extra signed/unsigned attributes based on generators.
+
+
+ add a signer, including digest encryption algorithm, with extra signed/unsigned attributes based on generators.
+
+
+ generate a signed object that for a CMS Signed Data object
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data".
+
+
+ generate a set of one or more SignerInformation objects representing counter signatures on
+ the passed in SignerInformation object.
+
+ @param signer the signer to be countersigned
+ @param sigProvider the provider to be used for counter signing.
+ @return a store containing the signers.
+
+
+ Parsing class for an CMS Signed Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one signer can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ A simple example of usage for an encapsulated signature.
+
+
+ Two notes: first, in the example below the validity of
+ the certificate isn't verified, just the fact that one of the certs
+ matches the given signer, and, second, because we are in a streaming
+ mode the order of the operations is important.
+
+
+ CmsSignedDataParser sp = new CmsSignedDataParser(encapSigData);
+
+ sp.GetSignedContent().Drain();
+
+ IX509Store certs = sp.GetCertificates();
+ SignerInformationStore signers = sp.GetSignerInfos();
+
+ foreach (SignerInformation signer in signers.GetSigners())
+ {
+ ArrayList certList = new ArrayList(certs.GetMatches(signer.SignerID));
+ X509Certificate cert = (X509Certificate) certList[0];
+
+ Console.WriteLine("verify returns: " + signer.Verify(cert));
+ }
+
+ Note also: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CmsSignedDataParser ep = new CmsSignedDataParser(new BufferedInputStream(encapSigData, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+ base constructor - with encapsulated content
+
+
+ base constructor
+
+ @param signedContent the content that was signed.
+ @param sigData the signature object.
+
+
+ Return the version number for the SignedData object
+
+ @return the version number
+
+
+ return the collection of signers that are associated with the
+ signatures for the message.
+ @throws CmsException
+
+
+ return a X509Store containing the attribute certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of attribute certificates
+ @exception org.bouncycastle.x509.NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing the public key certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of public key certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing CRLs, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of CRLs
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+
+ Return the DerObjectIdentifier associated with the encapsulated
+ content info structure carried in the signed data.
+
+
+
+ Replace the signerinformation store associated with the passed
+ in message contained in the stream original with the new one passed in.
+ You would probably only want to do this if you wanted to change the unsigned
+ attributes associated with a signer, or perhaps delete one.
+
+ The output stream is returned unclosed.
+
+ @param original the signed data stream to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @param out the stream to Write the new signed data object to.
+ @return out.
+
+
+ Replace the certificate and CRL information associated with this
+ CMSSignedData object with the new one passed in.
+
+ The output stream is returned unclosed.
+
+ @param original the signed data stream to be used as a base.
+ @param certsAndCrls the new certificates and CRLs to be used.
+ @param out the stream to Write the new signed data object to.
+ @return out.
+ @exception CmsException if there is an error processing the CertStore
+
+
+ General class for generating a pkcs7-signature message stream.
+
+ A simple example of usage.
+
+
+ IX509Store certs...
+ CmsSignedDataStreamGenerator gen = new CmsSignedDataStreamGenerator();
+
+ gen.AddSigner(privateKey, cert, CmsSignedDataStreamGenerator.DIGEST_SHA1);
+
+ gen.AddCertificates(certs);
+
+ Stream sigOut = gen.Open(bOut);
+
+ sigOut.Write(Encoding.UTF8.GetBytes("Hello World!"));
+
+ sigOut.Close();
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer, specifying the digest encryption algorithm - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes - specifying digest
+ encryption algorithm.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ generate a signed object that for a CMS Signed Data object
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data".
+
+
+ generate a signed object that for a CMS Signed Data
+ object using the given provider - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data". If dataOutputStream is non null the data
+ being signed will be written to the stream as it is processed.
+ @param out stream the CMS object is to be written to.
+ @param encapsulate true if data should be encapsulated.
+ @param dataOutputStream output stream to copy the data being signed to.
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+
+
+ generate a signed object that for a CMS Signed Data
+ object using the given provider - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+ @param out stream the CMS object is to be written to.
+ @param signedContentType OID for data to be signed.
+ @param encapsulate true if data should be encapsulated.
+ @param dataOutputStream output stream to copy the data being signed to.
+
+
+ Default type for the signed data.
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Add the attribute certificates contained in the passed in store to the
+ generator.
+
+ @param store a store of Version 2 attribute certificates
+ @throws CmsException if an error occurse processing the store.
+
+
+ Add a store of precalculated signers to the generator.
+
+ @param signerStore store of signers
+
+
+ Return a map of oids and byte arrays representing the digests calculated on the content during
+ the last generate.
+
+ @return a map of oids (as String objects) and byte[] representing digests.
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+ Return the digest encryption algorithm using one of the standard
+ JCA string representations rather than the algorithm identifier (if
+ possible).
+
+
+ Default authenticated attributes generator.
+
+
+ Initialise to use all defaults
+
+
+ Initialise with some extra attributes or overrides.
+
+ @param attributeTable initial attribute table to use.
+
+
+ Create a standard attribute table from the passed in parameters - this will
+ normally include contentType and messageDigest. If the constructor
+ using an AttributeTable was used, entries in it for contentType and
+ messageDigest will override the generated ones.
+
+ @param parameters source parameters for table generation.
+
+ @return a filled in IDictionary of attributes.
+
+
+ @param parameters source parameters
+ @return the populated attribute table
+
+
+ Default signed attributes generator.
+
+
+ Initialise to use all defaults
+
+
+ Initialise with some extra attributes or overrides.
+
+ @param attributeTable initial attribute table to use.
+
+
+ Create a standard attribute table from the passed in parameters - this will
+ normally include contentType, signingTime, and messageDigest. If the constructor
+ using an AttributeTable was used, entries in it for contentType, signingTime, and
+ messageDigest will override the generated ones.
+
+ @param parameters source parameters for table generation.
+
+ @return a filled in Hashtable of attributes.
+
+
+ @param parameters source parameters
+ @return the populated attribute table
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using a secret key known to the other side.
+
+
+ decrypt the content and return an input stream.
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using key agreement.
+
+
+ decrypt the content and return an input stream.
+
+
+ the KeyTransRecipientInformation class for a recipient who has been sent a secret
+ key encrypted using their public key that needs to be used to
+ extract the message.
+
+
+ decrypt the content and return it as a byte array.
+
+
+ a basic index for an originator.
+
+
+ Return the certificates stored in the underlying OriginatorInfo object.
+
+ @return a Store of X509CertificateHolder objects.
+
+
+ Return the CRLs stored in the underlying OriginatorInfo object.
+
+ @return a Store of X509CRLHolder objects.
+
+
+ Return the underlying ASN.1 object defining this SignerInformation object.
+
+ @return a OriginatorInfo.
+
+
+
+ PKCS5 scheme-2 - password converted to bytes assuming ASCII.
+
+
+
+ PKCS5 scheme-2 - password converted to bytes using UTF-8.
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using a password.
+
+
+ return the object identifier for the key derivation algorithm, or null
+ if there is none present.
+
+ @return OID for key derivation algorithm, if present.
+
+
+ decrypt the content and return an input stream.
+
+
+
+ Generate a RecipientInfo object for the given key.
+
+
+ A
+
+
+ A
+
+
+ A
+
+
+
+
+ * return the object identifier for the key encryption algorithm.
+ *
+ * @return OID for key encryption algorithm.
+
+
+ * return the ASN.1 encoded key encryption algorithm parameters, or null if
+ * there aren't any.
+ *
+ * @return ASN.1 encoding of key encryption algorithm parameters.
+
+
+ Return the MAC calculated for the content stream. Note: this call is only meaningful once all
+ the content has been read.
+
+ @return byte array containing the mac.
+
+
+ Return the first RecipientInformation object that matches the
+ passed in selector. Null if there are no matches.
+
+ @param selector to identify a recipient
+ @return a single RecipientInformation object. Null if none matches.
+
+
+ Return the number of recipients in the collection.
+
+ @return number of recipients identified.
+
+
+ Return all recipients in the collection
+
+ @return a collection of recipients.
+
+
+ Return possible empty collection with recipients matching the passed in RecipientID
+
+ @param selector a recipient id to select against.
+ @return a collection of RecipientInformation objects.
+
+
+ a basic index for a signer.
+
+
+ If the passed in flag is true, the signer signature will be based on the data, not
+ a collection of signed attributes, and no signed attributes will be included.
+
+ @return the builder object
+
+
+ Provide a custom signed attribute generator.
+
+ @param signedGen a generator of signed attributes.
+ @return the builder object
+
+
+ Provide a generator of unsigned attributes.
+
+ @param unsignedGen a generator for signed attributes.
+ @return the builder object
+
+
+ Build a generator with the passed in certHolder issuer and serial number as the signerIdentifier.
+
+ @param contentSigner operator for generating the final signature in the SignerInfo with.
+ @param certHolder carrier for the X.509 certificate related to the contentSigner.
+ @return a SignerInfoGenerator
+ @throws OperatorCreationException if the generator cannot be built.
+
+
+ Build a generator with the passed in subjectKeyIdentifier as the signerIdentifier. If used you should
+ try to follow the calculation described in RFC 5280 section 4.2.1.2.
+
+ @param signerFactory operator factory for generating the final signature in the SignerInfo with.
+ @param subjectKeyIdentifier key identifier to identify the public key for verifying the signature.
+ @return a SignerInfoGenerator
+
+
+ an expanded SignerInfo block from a CMS Signed message
+
+
+ return the version number for this objects underlying SignerInfo structure.
+
+
+ return the object identifier for the signature.
+
+
+ return the signature parameters, or null if there aren't any.
+
+
+ return the content digest that was calculated during verification.
+
+
+ return the object identifier for the signature.
+
+
+ return the signature/encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a table of the signed attributes - indexed by
+ the OID of the attribute.
+
+
+ return a table of the unsigned attributes indexed by
+ the OID of the attribute.
+
+
+ return the encoded signature
+
+
+ Return a SignerInformationStore containing the counter signatures attached to this
+ signer. If no counter signatures are present an empty store is returned.
+
+
+ return the DER encoding of the signed attributes.
+ @throws IOException if an encoding error occurs.
+
+
+ verify that the given public key successfully handles and confirms the
+ signature associated with this signer.
+
+
+ verify that the given certificate successfully handles and confirms
+ the signature associated with this signer and, if a signingTime
+ attribute is available, that the certificate was valid at the time the
+ signature was generated.
+
+
+ Return the base ASN.1 CMS structure that this object contains.
+
+ @return an object containing a CMS SignerInfo structure.
+
+
+ Return a signer information object with the passed in unsigned
+ attributes replacing the ones that are current associated with
+ the object passed in.
+
+ @param signerInformation the signerInfo to be used as the basis.
+ @param unsignedAttributes the unsigned attributes to add.
+ @return a copy of the original SignerInformationObject with the changed attributes.
+
+
+ Return a signer information object with passed in SignerInformationStore representing counter
+ signatures attached as an unsigned attribute.
+
+ @param signerInformation the signerInfo to be used as the basis.
+ @param counterSigners signer info objects carrying counter signature.
+ @return a copy of the original SignerInformationObject with the changed attributes.
+
+
+ Create a store containing a single SignerInformation object.
+
+ @param signerInfo the signer information to contain.
+
+
+ Create a store containing a collection of SignerInformation objects.
+
+ @param signerInfos a collection signer information objects to contain.
+
+
+ Return the first SignerInformation object that matches the
+ passed in selector. Null if there are no matches.
+
+ @param selector to identify a signer
+ @return a single SignerInformation object. Null if none matches.
+
+
+ The number of signers in the collection.
+
+
+ An ICollection of all signers in the collection
+
+
+ Return possible empty collection with signers matching the passed in SignerID
+
+ @param selector a signer id to select against.
+ @return a collection of SignerInformation objects.
+
+
+ Basic generator that just returns a preconstructed attribute table
+
+
+ a holding class for public/private parameter pairs.
+
+
+ basic constructor.
+
+ @param publicParam a public key parameters object.
+ @param privateParam the corresponding private key parameters.
+
+
+ return the public key parameters.
+
+ @return the public key parameters.
+
+
+ return the private key parameters.
+
+ @return the private key parameters.
+
+
+ The AEAD block ciphers already handle buffering internally, so this class
+ just takes care of implementing IBufferedCipher methods.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ a buffer wrapper for an asymmetric block cipher, allowing input
+ to be accumulated in a piecemeal fashion until final processing.
+
+
+ base constructor.
+
+ @param cipher the cipher this buffering object wraps.
+
+
+ return the amount of data sitting in the buffer.
+
+ @return the amount of data sitting in the buffer.
+
+
+ initialise the buffer and the underlying cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+
+
+ process the contents of the buffer using the underlying
+ cipher.
+
+ @return the result of the encryption/decryption process on the
+ buffer.
+ @exception InvalidCipherTextException if we are given a garbage block.
+
+
+ Reset the buffer
+
+
+ A wrapper class that allows block ciphers to be used to process data in
+ a piecemeal fashion. The BufferedBlockCipher outputs a block only when the
+ buffer is full and more data is being added, or on a doFinal.
+
+ Note: in the case where the underlying cipher is either a CFB cipher or an
+ OFB one the last block may not be a multiple of the block size.
+
+
+
+ constructor for subclasses
+
+
+ Create a buffered block cipher without padding.
+
+ @param cipher the underlying block cipher this buffering object wraps.
+ false otherwise.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ The base class for symmetric, or secret, cipher key generators.
+
+
+ initialise the key generator.
+
+ @param param the parameters to be used for key generation
+
+
+ Generate a secret key.
+
+ @return a byte array containing the key value.
+
+
+ this exception is thrown if a buffer that is meant to have output
+ copied into it turns out to be too short, or if we've been given
+ insufficient input. In general this exception will Get thrown rather
+ than an ArrayOutOfBounds exception.
+
+
+ base constructor.
+
+
+ create a DataLengthException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+ Wrapper removes exposure to the IMemoable interface on an IDigest implementation.
+
+
+ Base constructor.
+
+ @param baseDigest underlying digest to use.
+ @exception IllegalArgumentException if baseDigest is null
+
+
+ implementation of GOST R 34.11-94
+
+
+ Standard constructor
+
+
+ Constructor to allow use of a particular sbox with GOST28147
+ @see GOST28147Engine#getSBox(String)
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ base implementation of MD4 family style digest as outlined in
+ "Handbook of Applied Cryptography", pages 344 - 347.
+
+
+
+ Implementation of Keccak based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Return the size of block that the compression function is applied to in bytes.
+
+ @return internal byte length of a block.
+
+
+ Base class for SHA-384 and SHA-512.
+
+
+ Constructor for variable length word
+
+
+ Copy constructor. We are using copy constructors in place
+ of the object.Clone() interface as this interface is not
+ supported by J2ME.
+
+
+ adjust the byte counts so that byteCount2 represents the
+ upper long (less 3 bits) word of the byte count.
+
+
+ implementation of MD2
+ as outlined in RFC1319 by B.Kaliski from RSA Laboratories April 1992
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ Close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+
+ @param out the array the digest is to be copied into.
+ @param outOff the offset into the out array the digest is to start at.
+
+
+ reset the digest back to it's initial state.
+
+
+ update the message digest with a single byte.
+
+ @param in the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param in the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ implementation of MD4 as RFC 1320 by R. Rivest, MIT Laboratory for
+ Computer Science and RSA Data Security, Inc.
+
+ NOTE: This algorithm is only included for backwards compatibility
+ with legacy applications, it's not secure, don't use it for anything new!
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of MD5 as outlined in "Handbook of Applied Cryptography", pages 346 - 347.
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of RipeMD128
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of RipeMD see,
+ http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of RipeMD256.
+ Note: this algorithm offers the same level of security as RipeMD128.
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of RipeMD 320.
+ Note: this algorithm offers the same level of security as RipeMD160.
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of SHA-3 based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+
+ Implementation of Chinese SM3 digest as described at
+ http://tools.ietf.org/html/draft-shen-sm3-hash-00
+ and at .... ( Chinese PDF )
+
+
+ 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.
+
+
+
+
+ Standard constructor
+
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+
+ reset the chaining variables
+
+
+
+ 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 "endianness" of the word processing!
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ SHA-224 as described in RFC 3874
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-224 512 32 224
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-256. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-384. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-512. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ FIPS 180-4 implementation of SHA-512/t
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+
+ Implementation of SHAKE based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Wrapper class that reduces the output length of a particular digest to
+ only the first n bytes of the digest function.
+
+
+ Base constructor.
+
+ @param baseDigest underlying digest to use.
+ @param length length in bytes of the output of doFinal.
+ @exception ArgumentException if baseDigest is null, or length is greater than baseDigest.GetDigestSize().
+
+
+
+ Implementation of the Skein parameterised hash function in 256, 512 and 1024 bit block sizes,
+ based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+
+ Constructs a Skein digest with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/digest size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Optionally initialises the Skein digest with the provided parameters.
+
+ See for details on the parameterisation of the Skein hash function.
+ the parameters to apply to this engine, or null
to use no parameters.
+
+
+
+ Implementation of the Skein family of parameterised hash functions in 256, 512 and 1024 bit block
+ sizes, based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+ This implementation is the basis for and , implementing the
+ parameter based configuration system that allows Skein to be adapted to multiple applications.
+ Initialising the engine with allows standard and arbitrary parameters to
+ be applied during the Skein hash function.
+
+ Implemented:
+
+ - 256, 512 and 1024 bit internal states.
+ - Full 96 bit input length.
+ - Parameters defined in the Skein specification, and arbitrary other pre and post message
+ parameters.
+ - Arbitrary output size in 1 byte intervals.
+
+
+ Not implemented:
+
+ - Sub-byte length input (bit padding).
+ - Tree hashing.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+ The parameter type for the Skein key.
+
+
+ The parameter type for the Skein configuration block.
+
+
+ The parameter type for the message.
+
+
+ The parameter type for the output transformation.
+
+
+ Precalculated UBI(CFG) states for common state/output combinations without key or other
+ pre-message params.
+
+
+ Point at which position might overflow long, so switch to add with carry logic
+
+
+ Bit 127 = final
+
+
+ Bit 126 = first
+
+
+ UBI uses a 128 bit tweak
+
+
+ Whether 64 bit position exceeded
+
+
+ Advances the position in the tweak by the specified value.
+
+
+ The Unique Block Iteration chaining mode.
+
+
+ Buffer for the current block of message data
+
+
+ Offset into the current message block
+
+
+ Buffer for message words for feedback into encrypted block
+
+
+ Underlying Threefish tweakable block cipher
+
+
+ Size of the digest output, in bytes
+
+
+ The current chaining/state value
+
+
+ The initial state value
+
+
+ The (optional) key parameter
+
+
+ Parameters to apply prior to the message
+
+
+ Parameters to apply after the message, but prior to output
+
+
+ The current UBI operation
+
+
+ Buffer for single byte update method
+
+
+
+ Constructs a Skein digest with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/digest size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Creates a SkeinEngine as an exact copy of an existing instance.
+
+
+
+
+ Initialises the Skein engine with the provided parameters. See for
+ details on the parameterisation of the Skein hash function.
+
+ the parameters to apply to this engine, or null
to use no parameters.
+
+
+ Calculate the initial (pre message block) chaining state.
+
+
+
+ Reset the engine to the initial state (with the key and any pre-message parameters , ready to
+ accept message input.
+
+
+
+ implementation of Tiger based on:
+
+ http://www.cs.technion.ac.il/~biham/Reports/Tiger
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Implementation of WhirlpoolDigest, based on Java source published by Barreto
+ and Rijmen.
+
+
+
+ Copy constructor. This will copy the state of the provided message
+ digest.
+
+
+ Reset the chaining variables
+
+
+ initialise a Serpent cipher.
+
+ @param encrypting whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @throws IllegalArgumentException if the params argument is
+ inappropriate.
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @return the number of bytes processed and produced.
+ @throws DataLengthException if there isn't enough data in in, or
+ space in out.
+ @throws IllegalStateException if the cipher isn't initialised.
+
+
+ InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms.
+
+
+ S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms.
+
+
+ InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps.
+
+
+ S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms.
+
+
+ InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps.
+
+
+ S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms.
+
+
+ InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 terms
+
+
+ S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms.
+
+
+ InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms.
+
+
+ S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms.
+
+
+ InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms.
+
+
+ S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms.
+
+
+ InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms.
+
+
+ S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms.
+
+
+ InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms.
+
+
+ Apply the linear transformation to the register set.
+
+
+ Apply the inverse of the linear transformation to the register set.
+
+
+ Tnepres is a 128-bit 32-round block cipher with variable key lengths,
+ including 128, 192 and 256 bit keys conjectured to be at least as
+ secure as three-key triple-DES.
+
+ Tnepres is based on Serpent which was designed by Ross Anderson, Eli Biham and Lars Knudsen as a
+ candidate algorithm for the NIST AES Quest. Unfortunately there was an endianness issue
+ with test vectors in the AES submission and the resulting confusion lead to the Tnepres cipher
+ as well, which is a byte swapped version of Serpent.
+
+
+ For full details see The Serpent home page
+
+
+
+ Expand a user-supplied key material into a session key.
+
+ @param key The user-key bytes (multiples of 4) to use.
+ @exception ArgumentException
+
+
+ Encrypt one block of plaintext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ Decrypt one block of ciphertext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ an implementation of the AES (Rijndael), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor, they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations, 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each, for a total of 2Kbytes,
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first.
+
+ The slowest version uses no static tables at all and computes the values in each round.
+
+
+ This file contains the middle performance version with 2Kbytes of static tables for round precomputation.
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES 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.
+
+
+ an implementation of the AES (Rijndael)), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor), they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations), 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each), for a total of 2Kbytes),
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first
+
+ The slowest version uses no static tables at all and computes the values in each round
+
+
+ This file contains the fast version with 8Kbytes of static tables for round precomputation
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES 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.
+
+
+ an implementation of the AES (Rijndael), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor, they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations, 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each, for a total of 2Kbytes,
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first
+
+ The slowest version uses no static tables at all and computes the values
+ in each round.
+
+
+ This file contains the slowest performance version with no static tables
+ for round precomputation, but it has the smallest foot print.
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES 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.
+
+
+
+ An implementation of the AES Key Wrapper from the NIST Key Wrap Specification.
+
+ For further details see: http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+ A class that provides Blowfish key encryption operations,
+ such as encoding data and generating keys.
+ All the algorithms herein are from Applied Cryptography
+ and implement a simplified cryptography interface.
+
+
+ initialise a Blowfish 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.
+
+
+ apply the encryption cycle to each value pair in the table.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Camellia - based on RFC 3713.
+
+
+ Camellia - based on RFC 3713, smaller implementation, about half the size of CamelliaEngine.
+
+
+
+ An implementation of the Camellia key wrapper based on RFC 3657/RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc3657.txt.
+
+
+
+ A class that provides CAST key encryption operations,
+ such as encoding data and generating keys.
+
+ All the algorithms herein are from the Internet RFC's
+
+ RFC2144 - Cast5 (64bit block, 40-128bit key)
+ RFC2612 - CAST6 (128bit block, 128-256bit key)
+
+ and implement a simplified cryptography interface.
+
+
+ initialise a CAST 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.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ The first of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ The second of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ The third of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ Does the 16 rounds to encrypt the block.
+
+ @param L0 the LH-32bits of the plaintext block
+ @param R0 the RH-32bits of the plaintext block
+
+
+ A class that provides CAST6 key encryption operations,
+ such as encoding data and generating keys.
+
+ All the algorithms herein are from the Internet RFC
+
+ RFC2612 - CAST6 (128bit block, 128-256bit key)
+
+ and implement a simplified cryptography interface.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ Does the 12 quad rounds rounds to encrypt the block.
+
+ @param A the 00-31 bits of the plaintext block
+ @param B the 32-63 bits of the plaintext block
+ @param C the 64-95 bits of the plaintext block
+ @param D the 96-127 bits of the plaintext block
+ @param result the resulting ciphertext
+
+
+ Does the 12 quad rounds rounds to decrypt the block.
+
+ @param A the 00-31 bits of the ciphertext block
+ @param B the 32-63 bits of the ciphertext block
+ @param C the 64-95 bits of the ciphertext block
+ @param D the 96-127 bits of the ciphertext block
+ @param result the resulting plaintext
+
+
+
+ Implementation of Daniel J. Bernstein's ChaCha stream cipher.
+
+
+
+
+ Creates a 20 rounds ChaCha engine.
+
+
+
+
+ Creates a ChaCha engine with a specific number of rounds.
+
+ the number of rounds (must be an even number).
+
+
+
+ ChacCha function.
+
+ The number of ChaCha rounds to execute
+ The input words.
+ The ChaCha state to modify.
+
+
+ A class that provides a basic DESede (or Triple DES) engine.
+
+
+ initialise a DESede 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.
+
+
+ * Wrap keys according to
+ *
+ * draft-ietf-smime-key-wrap-01.txt.
+ *
+ * Note:
+ *
+ * - this is based on a draft, and as such is subject to change - don't use this class for anything requiring long term storage.
+ * - if you are using this to wrap triple-des keys you need to set the
+ * parity bits on the key and, if it's a two-key triple-des key, pad it
+ * yourself.
+ *
+ *
+
+
+ Field engine
+
+
+ Field param
+
+
+ Field paramPlusIV
+
+
+ Field iv
+
+
+ Field forWrapping
+
+
+ Field IV2
+
+
+ Method init
+
+ @param forWrapping
+ @param param
+
+
+ Method GetAlgorithmName
+
+ @return
+
+
+ Method wrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+
+
+ Method unwrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+ @throws InvalidCipherTextException
+
+
+ Some key wrap algorithms make use of the Key Checksum defined
+ in CMS [CMS-Algorithms]. This is used to provide an integrity
+ check value for the key being wrapped. The algorithm is
+
+ - Compute the 20 octet SHA-1 hash on the key being wrapped.
+ - Use the first 8 octets of this hash as the checksum value.
+
+ @param key
+ @return
+ @throws Exception
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ @param key
+ @param checksum
+ @return
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ A class that provides a basic DES engine.
+
+
+ initialise a DES 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.
+
+
+ what follows is mainly taken from "Applied Cryptography", by
+ Bruce Schneier, however it also bears great resemblance to Richard
+ Outerbridge's D3DES...
+
+
+ Generate an integer based working key based on our secret key
+ and what we processing we are planning to do.
+
+ Acknowledgements for this routine go to James Gillogly and Phil Karn.
+ (whoever, and wherever they are!).
+
+
+ the DES engine.
+
+
+ this does your basic ElGamal algorithm.
+
+
+ initialise the ElGamal engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary ElGamal key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For ElGamal this is always one byte less than the size of P on
+ encryption, and twice the length as the size of P on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For ElGamal this is always one byte less than the size of P on
+ decryption, and twice the length as the size of P on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic ElGamal algorithm.
+
+ @param in the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param length the length of the data to be processed.
+ @return the result of the ElGamal process.
+ @exception DataLengthException the input block is too large.
+
+
+ implementation of GOST 28147-89
+
+
+ standard constructor.
+
+
+ initialise an Gost28147 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.
+
+
+ Return the S-Box associated with SBoxName
+ @param sBoxName name of the S-Box
+ @return byte array representing the S-Box
+
+
+ HC-128 is a software-efficient stream cipher created by Hongjun Wu. It
+ generates keystream from a 128-bit secret key and a 128-bit initialization
+ vector.
+
+ http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc128_p3.pdf
+
+ It is a third phase candidate in the eStream contest, and is patent-free.
+ No attacks are known as of today (April 2007). See
+
+ http://www.ecrypt.eu.org/stream/hcp3.html
+
+
+
+ Initialise a HC-128 cipher.
+
+ @param forEncryption whether or not we are for encryption. Irrelevant, as
+ encryption and decryption are the same.
+ @param params the parameters required to set up the cipher.
+ @throws ArgumentException if the params argument is
+ inappropriate (ie. the key is not 128 bit long).
+
+
+ HC-256 is a software-efficient stream cipher created by Hongjun Wu. It
+ generates keystream from a 256-bit secret key and a 256-bit initialization
+ vector.
+
+ http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc256_p3.pdf
+
+ Its brother, HC-128, is a third phase candidate in the eStream contest.
+ The algorithm is patent-free. No attacks are known as of today (April 2007).
+ See
+
+ http://www.ecrypt.eu.org/stream/hcp3.html
+
+
+
+ Initialise a HC-256 cipher.
+
+ @param forEncryption whether or not we are for encryption. Irrelevant, as
+ encryption and decryption are the same.
+ @param params the parameters required to set up the cipher.
+ @throws ArgumentException if the params argument is
+ inappropriate (ie. the key is not 256 bit long).
+
+
+ Implementation of Bob Jenkin's ISAAC (Indirection Shift Accumulate Add and Count).
+ see: http://www.burtleburtle.net/bob/rand/isaacafa.html
+
+
+ initialise an ISAAC 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.
+
+
+ A class that provides a basic International Data Encryption Algorithm (IDEA) engine.
+
+ 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!).
+
+
+ It can be found at ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/idea/
+
+
+ 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
+ www.mediacrypt.com for
+ further details. This announcement has been included at the request of
+ the patent holders.
+
+
+ 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.
+
+
+
+ standard constructor.
+
+
+ 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.
+
+
+ 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
+
+
+ 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.
+
+
+ This function computes multiplicative inverse using Euclid's Greatest
+ Common Divisor algorithm. Zero and one are self inverse.
+
+ i.e. x * MulInv(x) == 1 (modulo BASE)
+
+
+
+ Return the additive inverse of x.
+
+ i.e. x + AddInv(x) == 0
+
+
+
+ The function to invert the encryption subkey to the decryption subkey.
+ It also involves the multiplicative inverse and the additive inverse functions.
+
+
+ support class for constructing intergrated encryption ciphers
+ for doing basic message exchanges on top of key agreement ciphers
+
+
+ set up for use with stream mode, where the key derivation function
+ is used to provide a stream of bytes to xor with the message.
+
+ @param agree the key agreement used as the basis for the encryption
+ @param kdf the key derivation function used for byte generation
+ @param mac the message authentication code generator for the message
+
+
+ set up for use in conjunction with a block cipher to handle the
+ message.
+
+ @param agree the key agreement used as the basis for the encryption
+ @param kdf the key derivation function used for byte generation
+ @param mac the message authentication code generator for the message
+ @param cipher the cipher to used for encrypting the message
+
+
+ Initialise the encryptor.
+
+ @param forEncryption whether or not this is encryption/decryption.
+ @param privParam our private key parameters
+ @param pubParam the recipient's/sender's public key parameters
+ @param param encoding and derivation parameters.
+
+
+ NaccacheStern Engine. For details on this cipher, please see
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Initializes this algorithm. Must be called before all other Functions.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#init(bool,
+ org.bouncycastle.crypto.CipherParameters)
+
+
+ Returns the input block size of this algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#GetInputBlockSize()
+
+
+ Returns the output block size of this algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#GetOutputBlockSize()
+
+
+ Process a single Block using the Naccache-Stern algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#ProcessBlock(byte[],
+ int, int)
+
+
+ Encrypts a BigInteger aka Plaintext with the public key.
+
+ @param plain
+ The BigInteger to encrypt
+ @return The byte[] representation of the encrypted BigInteger (i.e.
+ crypted.toByteArray())
+
+
+ Adds the contents of two encrypted blocks mod sigma
+
+ @param block1
+ the first encrypted block
+ @param block2
+ the second encrypted block
+ @return encrypt((block1 + block2) mod sigma)
+ @throws InvalidCipherTextException
+
+
+ Convenience Method for data exchange with the cipher.
+
+ Determines blocksize and splits data to blocksize.
+
+ @param data the data to be processed
+ @return the data after it went through the NaccacheSternEngine.
+ @throws InvalidCipherTextException
+
+
+ Computes the integer x that is expressed through the given primes and the
+ congruences with the chinese remainder theorem (CRT).
+
+ @param congruences
+ the congruences c_i
+ @param primes
+ the primes p_i
+ @return an integer x for that x % p_i == c_i
+
+
+ A Noekeon engine, using direct-key mode.
+
+
+ Create an instance of the Noekeon encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ The no-op engine that just copies bytes through, irrespective of whether encrypting and decrypting.
+ Provided for the sake of completeness.
+
+
+ an implementation of RC2 as described in RFC 2268
+ "A Description of the RC2(r) Encryption Algorithm" R. Rivest.
+
+
+ initialise a RC2 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.
+
+
+ return the result rotating the 16 bit number in x left by y
+
+
+ Wrap keys according to RFC 3217 - RC2 mechanism
+
+
+ Field engine
+
+
+ Field param
+
+
+ Field paramPlusIV
+
+
+ Field iv
+
+
+ Field forWrapping
+
+
+ Field IV2
+
+
+ Method init
+
+ @param forWrapping
+ @param param
+
+
+ Method GetAlgorithmName
+
+ @return
+
+
+ Method wrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+
+
+ Method unwrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+ @throws InvalidCipherTextException
+
+
+ Some key wrap algorithms make use of the Key Checksum defined
+ in CMS [CMS-Algorithms]. This is used to provide an integrity
+ check value for the key being wrapped. The algorithm is
+
+ - Compute the 20 octet SHA-1 hash on the key being wrapped.
+ - Use the first 8 octets of this hash as the checksum value.
+
+ @param key
+ @return
+ @throws Exception
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ @param key
+ @param checksum
+ @return
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ initialise a RC4 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.
+
+
+ The specification for RC5 came from the RC5 Encryption Algorithm
+ publication in RSA CryptoBytes, Spring of 1995.
+ http://www.rsasecurity.com/rsalabs/cryptobytes.
+
+ This implementation has a word size of 32 bits.
+
+
+ Create an instance of the RC5 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-32 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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Encrypt the given block starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param in in byte buffer containing data to encrypt
+ @param inOff offset into src buffer
+ @param out out buffer where encrypted data is written
+ @param outOff offset into out buffer
+
+
+ Perform a left "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(32) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % 32
+
+
+ Perform a right "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(32) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % 32
+
+
+ The specification for RC5 came from the RC5 Encryption Algorithm
+ publication in RSA CryptoBytes, Spring of 1995.
+ http://www.rsasecurity.com/rsalabs/cryptobytes.
+
+ This implementation is set to work with a 64 bit word size.
+
+
+ Create an instance of the RC5 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-64 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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Encrypt the given block starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param in in byte buffer containing data to encrypt
+ @param inOff offset into src buffer
+ @param out out buffer where encrypted data is written
+ @param outOff offset into out buffer
+
+
+ Perform a left "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ Perform a right "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ An RC6 engine.
+
+
+ Create an instance of the RC6 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-32 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.
+
+
+ Re-key the cipher.
+
+ @param inKey the key to be used
+
+
+ Perform a left "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ Perform a right "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ an implementation of the RFC 3211 Key Wrap
+ Specification.
+
+
+
+ An implementation of the AES Key Wrapper from the NIST Key Wrap
+ Specification as described in RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc3394.txt
+ and http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+ this does your basic RSA algorithm with blinding
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic RSA algorithm.
+
+ @param inBuf the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @exception DataLengthException the input block is too large.
+
+
+ This does your basic RSA Chaum's blinding and unblinding as outlined in
+ "Handbook of Applied Cryptography", page 475. You need to use this if you are
+ trying to get another party to generate signatures without them being aware
+ of the message they are signing.
+
+
+ Initialise the blinding engine.
+
+ @param forEncryption true if we are encrypting (blinding), false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the RSA blinding algorithm.
+
+ @param in the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @throws DataLengthException the input block is too large.
+
+
+ this does your basic RSA algorithm.
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ an implementation of Rijndael, based on the documentation and reference implementation
+ by Paulo Barreto, Vincent Rijmen, for v2.0 August '99.
+
+ Note: this implementation is based on information prior to readonly NIST publication.
+
+
+
+ multiply two elements of GF(2^m)
+ needed for MixColumn and InvMixColumn
+
+
+ xor corresponding text input and round key input bytes
+
+
+ Row 0 remains unchanged
+ The other three rows are shifted a variable amount
+
+
+ Replace every byte of the input by the byte at that place
+ in the nonlinear S-box
+
+
+ Mix the bytes of every column in a linear way
+
+
+ Mix the bytes of every column in a linear way
+ This is the opposite operation of Mixcolumn
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on keyBits and blockBits
+
+
+ default constructor - 128 bit block size.
+
+
+ basic constructor - set the cipher up for a given blocksize
+
+ @param blocksize the blocksize in bits, must be 128, 192, or 256.
+
+
+ initialise a Rijndael 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.
+
+
+ this does your basic RSA algorithm.
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic RSA algorithm.
+
+ @param inBuf the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @exception DataLengthException the input block is too large.
+
+
+ Implementation of the SEED algorithm as described in RFC 4009
+
+
+
+ An implementation of the SEED key wrapper based on RFC 4010/RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc4010.txt.
+
+
+
+
+ Implementation of Daniel J. Bernstein's Salsa20 stream cipher, Snuffle 2005
+
+
+
+ Constants
+
+
+
+ Creates a 20 round Salsa20 engine.
+
+
+
+
+ Creates a Salsa20 engine with a specific number of rounds.
+
+ the number of rounds (must be an even number).
+
+
+ Rotate left
+
+ @param x value to rotate
+ @param y amount to rotate x
+
+ @return rotated x
+
+
+ * Serpent is a 128-bit 32-round block cipher with variable key lengths,
+ * including 128, 192 and 256 bit keys conjectured to be at least as
+ * secure as three-key triple-DES.
+ *
+ * Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a
+ * candidate algorithm for the NIST AES Quest.
+ *
+ *
+ * For full details see The Serpent home page
+ *
+
+
+ Expand a user-supplied key material into a session key.
+
+ @param key The user-key bytes (multiples of 4) to use.
+ @exception ArgumentException
+
+
+ Encrypt one block of plaintext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ Decrypt one block of ciphertext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ a class that provides a basic SKIPJACK engine.
+
+
+ initialise a SKIPJACK 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.
+
+
+ The G permutation
+
+
+ the inverse of the G permutation.
+
+
+ An TEA engine.
+
+
+ Create an instance of the TEA encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+
+ Implementation of the Threefish tweakable large block cipher in 256, 512 and 1024 bit block
+ sizes.
+
+
+ This is the 1.3 version of Threefish defined in the Skein hash function submission to the NIST
+ SHA-3 competition in October 2010.
+
+ Threefish was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+ This implementation inlines all round functions, unrolls 8 rounds, and uses 1.2k of static tables
+ to speed up key schedule injection.
+ 2 x block size state is retained by each cipher instance.
+
+
+
+
+ 256 bit block size - Threefish-256
+
+
+
+
+ 512 bit block size - Threefish-512
+
+
+
+
+ 1024 bit block size - Threefish-1024
+
+
+
+ Size of the tweak in bytes (always 128 bit/16 bytes)
+
+
+ Rounds in Threefish-256
+
+
+ Rounds in Threefish-512
+
+
+ Rounds in Threefish-1024
+
+
+ Max rounds of any of the variants
+
+
+ Key schedule parity constant
+
+
+ Block size in bytes
+
+
+ Block size in 64 bit words
+
+
+ Buffer for byte oriented processBytes to call internal word API
+
+
+ Tweak bytes (2 byte t1,t2, calculated t3 and repeat of t1,t2 for modulo free lookup
+
+
+ Key schedule words
+
+
+ The internal cipher implementation (varies by blocksize)
+
+
+
+ Constructs a new Threefish cipher, with a specified block size.
+
+ the block size in bits, one of , ,
+ .
+
+
+
+ Initialise the engine.
+
+ Initialise for encryption if true, for decryption if false.
+ an instance of or (to
+ use a 0 tweak)
+
+
+
+ Initialise the engine, specifying the key and tweak directly.
+
+ the cipher mode.
+ the words of the key, or null
to use the current key.
+ the 2 word (128 bit) tweak, or null
to use the current tweak.
+
+
+
+ Process a block of data represented as 64 bit words.
+
+ the number of 8 byte words processed (which will be the same as the block size).
+ a block sized buffer of words to process.
+ a block sized buffer of words to receive the output of the operation.
+ if either the input or output is not block sized
+ if this engine is not initialised
+
+
+
+ Read a single 64 bit word from input in LSB first order.
+
+
+
+
+ Write a 64 bit word to output in LSB first order.
+
+
+
+ Rotate left + xor part of the mix operation.
+
+
+ Rotate xor + rotate right part of the unmix operation.
+
+
+ The extended + repeated tweak words
+
+
+ The extended + repeated key words
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ A class that provides Twofish encryption operations.
+
+ This Java implementation is based on the Java reference
+ implementation provided by Bruce Schneier and developed
+ by Raif S. Naffah.
+
+
+ Define the fixed p0/p1 permutations used in keyed S-box lookup.
+ By changing the following constant definitions, the S-boxes will
+ automatically Get changed in the Twofish engine.
+
+
+ gSubKeys[] and gSBox[] are eventually used in the
+ encryption and decryption methods.
+
+
+ initialise a Twofish 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.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+ encryptBlock uses the pre-calculated gSBox[] and subKey[]
+ arrays.
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Use (12, 8) Reed-Solomon code over GF(256) to produce
+ a key S-box 32-bit entity from 2 key material 32-bit
+ entities.
+
+ @param k0 first 32-bit entity
+ @param k1 second 32-bit entity
+ @return Remainder polynomial Generated using RS code
+
+
+ * Reed-Solomon code parameters: (12,8) reversible code:
+ *
+ *
+ * G(x) = x^4 + (a+1/a)x^3 + ax^2 + (a+1/a)x + 1
+ *
+ * where a = primitive root of field generator 0x14D
+ *
+
+
+ initialise a VMPC 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.
+
+
+
+ Implementation of Daniel J. Bernstein's XSalsa20 stream cipher - Salsa20 with an extended nonce.
+
+
+ XSalsa20 requires a 256 bit key, and a 192 bit nonce.
+
+
+
+
+ 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.
+
+
+
+ An XTEA engine.
+
+
+ Create an instance of the TEA encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Base interface for a public/private key block cipher.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The maximum size, in bytes, an input block may be.
+
+
+ The maximum size, in bytes, an output block will be.
+
+
+ Process a block.
+ The input buffer.
+ The offset into inBuf that the input block begins.
+ The length of the input block.
+ Input decrypts improperly.
+ Input is too large for the cipher.
+
+
+ interface that a public/private key pair generator should conform to.
+
+
+ intialise the key pair generator.
+
+ @param the parameters the key pair is to be initialised with.
+
+
+ return an AsymmetricCipherKeyPair containing the Generated keys.
+
+ @return an AsymmetricCipherKeyPair containing the Generated keys.
+
+
+ The basic interface that basic Diffie-Hellman implementations
+ conforms to.
+
+
+ initialise the agreement engine.
+
+
+ return the field size for the agreement algorithm in bytes.
+
+
+ given a public key from a given party calculate the next
+ message in the agreement sequence.
+
+
+ Base interface for a symmetric key block cipher.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The block size for this cipher, in bytes.
+
+
+ Indicates whether this cipher can handle partial blocks.
+
+
+ Process a block.
+ The input buffer.
+ The offset into inBuf that the input block begins.
+ The output buffer.
+ The offset into outBuf to write the output block.
+ If input block is wrong size, or outBuf too small.
+ The number of bytes processed and produced.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+
+ Operators that reduce their input to a single block return an object
+ of this type.
+
+
+
+
+ Return the final result of the operation.
+
+ A block of bytes, representing the result of an operation.
+
+
+
+ Store the final result of the operation by copying it into the destination array.
+
+ The number of bytes copied into destination.
+ The byte array to copy the result into.
+ The offset into destination to start copying the result at.
+
+
+ Block cipher engines are expected to conform to this interface.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ If true the cipher is initialised for encryption,
+ if false for decryption.
+ The key and other data required by the cipher.
+
+
+
+ Reset the cipher. After resetting the cipher is in the same state
+ as it was after the last init (if there was one).
+
+
+
+ all parameter classes implement this.
+
+
+ interface for classes implementing the Digital Signature Algorithm
+
+
+ initialise the signer for signature generation or signature
+ verification.
+
+ @param forSigning true if we are generating a signature, false
+ otherwise.
+ @param param key parameters for signature generation.
+
+
+ sign the passed in message (usually the output of a hash function).
+
+ @param message the message to be signed.
+ @return two big integers representing the r and s values respectively.
+
+
+ verify the message message against the signature values r and s.
+
+ @param message the message that was supposed to have been signed.
+ @param r the r signature value.
+ @param s the s signature value.
+
+
+ base interface for general purpose byte derivation functions.
+
+
+ return the message digest used as the basis for the function
+
+
+ Parameters for key/byte stream derivation classes
+
+
+ interface that a message digest conforms to.
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ return the size, in bytes, of the digest produced by this message digest.
+
+ @return the size, in bytes, of the digest produced by this message digest.
+
+
+ return the size, in bytes, of the internal buffer used by this digest.
+
+ @return the size, in bytes, of the internal buffer used by this digest.
+
+
+ update the message digest with a single byte.
+
+ @param inByte the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param input the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ Close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+
+ @param output the array the digest is to be copied into.
+ @param outOff the offset into the out array the digest is to start at.
+
+
+ reset the digest back to it's initial state.
+
+
+
+ Base interface describing an entropy source for a DRBG.
+
+
+
+
+ Return whether or not this entropy source is regarded as prediction resistant.
+
+ true if this instance is prediction resistant; otherwise, false.
+
+
+
+ Return a byte array of entropy.
+
+ The entropy bytes.
+
+
+
+ Return the number of bits of entropy this source can produce.
+
+ The size, in bits, of the return value of getEntropy.
+
+
+
+ Base interface describing a provider of entropy sources.
+
+
+
+
+ Return an entropy source providing a block of entropy.
+
+ The size of the block of entropy required.
+ An entropy source providing bitsRequired blocks of entropy.
+
+
+ The base interface for implementations of message authentication codes (MACs).
+
+
+ Initialise the MAC.
+
+ @param param the key and other data required by the MAC.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Return the name of the algorithm the MAC implements.
+
+ @return the name of the algorithm the MAC implements.
+
+
+ Return the block size for this MAC (in bytes).
+
+ @return the block size for this MAC in bytes.
+
+
+ add a single byte to the mac for processing.
+
+ @param in the byte to be processed.
+ @exception InvalidOperationException if the MAC is not initialised.
+
+
+ @param in the array containing the input.
+ @param inOff the index in the array the data begins at.
+ @param len the length of the input starting at inOff.
+ @exception InvalidOperationException if the MAC is not initialised.
+ @exception DataLengthException if there isn't enough data in in.
+
+
+ Compute the final stage of the MAC writing the output to the out
+ parameter.
+
+ doFinal leaves the MAC in the same state it was after the last init.
+
+ @param out the array the MAC is to be output to.
+ @param outOff the offset into the out buffer the output is to start at.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the MAC is not initialised.
+
+
+ Reset the MAC. At the end of resetting the MAC should be in the
+ in the same state it was after the last init (if there was one).
+
+
+
+ Base interface for operators that serve as stream-based signature calculators.
+
+
+
+ The algorithm details object for this calculator.
+
+
+
+ Create a stream calculator for this signature calculator. The stream
+ calculator is used for the actual operation of entering the data to be signed
+ and producing the signature block.
+
+ A calculator producing an IBlockResult with a signature in it.
+
+
+
+ Base interface for cryptographic operations such as Hashes, MACs, and Signatures which reduce a stream of data
+ to a single value.
+
+
+
+ Return a "sink" stream which only exists to update the implementing object.
+ A stream to write to in order to update the implementing object.
+
+
+
+ Return the result of processing the stream. This value is only available once the stream
+ has been closed.
+
+ The result of processing the stream.
+
+
+ Return the name of the algorithm the signer implements.
+
+ @return the name of the algorithm the signer implements.
+
+
+ Initialise the signer for signing or verification.
+
+ @param forSigning true if for signing, false otherwise
+ @param param necessary parameters.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ return true if the internal state represents the signature described
+ in the passed in array.
+
+
+ reset the internal state
+
+
+ Signer with message recovery.
+
+
+ Returns true if the signer has recovered the full message as
+ part of signature verification.
+
+ @return true if full message recovered.
+
+
+ Returns a reference to what message was recovered (if any).
+
+ @return full/partial message, null if nothing.
+
+
+ Perform an update with the recovered message before adding any other data. This must
+ be the first update method called, and calling it will result in the signer assuming
+ that further calls to update will include message content past what is recoverable.
+
+ @param signature the signature that we are in the process of verifying.
+ @throws IllegalStateException
+
+
+ The interface stream ciphers conform to.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ If true the cipher is initialised for encryption,
+ if false for decryption.
+ The key and other data required by the cipher.
+
+ If the parameters argument is inappropriate.
+
+
+
+ encrypt/decrypt a single byte returning the result.
+ the byte to be processed.
+ the result of processing the input byte.
+
+
+
+ Process a block of bytes from input putting the result into output.
+
+ The input byte array.
+
+ The offset into input where the data to be processed starts.
+
+ The number of bytes to be processed.
+ The output buffer the processed bytes go into.
+
+ The offset into output the processed data starts at.
+
+ If the output buffer is too small.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+
+ Operators that reduce their input to the validation of a signature produce this type.
+
+
+
+
+ Return true if the passed in data matches what is expected by the verification result.
+
+ The bytes representing the signature.
+ true if the signature verifies, false otherwise.
+
+
+
+ Return true if the length bytes from off in the source array match the signature
+ expected by the verification result.
+
+ Byte array containing the signature.
+ The offset into the source array where the signature starts.
+ The number of bytes in source making up the signature.
+ true if the signature verifies, false otherwise.
+
+
+
+ Base interface for operators that serve as stream-based signature verifiers.
+
+
+
+ The algorithm details object for this verifier.
+
+
+
+ Create a stream calculator for this verifier. The stream
+ calculator is used for the actual operation of entering the data to be verified
+ and producing a result which can be used to verify the original signature.
+
+ A calculator producing an IVerifier which can verify the signature.
+
+
+
+ Base interface for a provider to support the dynamic creation of signature verifiers.
+
+
+
+
+ Return a signature verfier for signature algorithm described in the passed in algorithm details object.
+
+ The details of the signature algorithm verification is required for.
+ A new signature verifier.
+
+
+ The name of the algorithm this cipher implements.
+
+
+
+ With FIPS PUB 202 a new kind of message digest was announced which supported extendable output, or variable digest sizes.
+ This interface provides the extra method required to support variable output on a digest implementation.
+
+
+
+ Output the results of the final calculation for this digest to outLen number of bytes.
+
+ @param out output array to write the output bytes to.
+ @param outOff offset to start writing the bytes at.
+ @param outLen the number of output bytes requested.
+ @return the number of bytes written
+
+
+ this exception is thrown whenever we find something we don't expect in a
+ message.
+
+
+ base constructor.
+
+
+ create a InvalidCipherTextException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+ The base class for parameters to key generators.
+
+
+ initialise the generator with a source of randomness
+ and a strength (in bits).
+
+ @param random the random byte source.
+ @param strength the size, in bits, of the keys we want to produce.
+
+
+ return the random source associated with this
+ generator.
+
+ @return the generators random source.
+
+
+ return the bit strength for keys produced by this generator,
+
+ @return the strength of the keys this generator produces (in bits).
+
+
+
+ This exception is thrown whenever a cipher requires a change of key, iv
+ or similar after x amount of bytes enciphered
+
+
+
+ super class for all Password Based Encyrption (Pbe) parameter generator classes.
+
+
+ base constructor.
+
+
+ initialise the Pbe generator.
+
+ @param password the password converted into bytes (see below).
+ @param salt the salt to be mixed with the password.
+ @param iterationCount the number of iterations the "mixing" function
+ is to be applied for.
+
+
+ return the password byte array.
+
+ @return the password byte array.
+
+
+ return the salt byte array.
+
+ @return the salt byte array.
+
+
+ return the iteration count.
+
+ @return the iteration count.
+
+
+ Generate derived parameters for a key of length keySize.
+
+ @param keySize the length, in bits, of the key required.
+ @return a parameters object representing a key.
+
+
+ Generate derived parameters for a key of length keySize, and
+ an initialisation vector (IV) of length ivSize.
+
+ @param keySize the length, in bits, of the key required.
+ @param ivSize the length, in bits, of the iv required.
+ @return a parameters object representing a key and an IV.
+
+
+ Generate derived parameters for a key of length keySize, specifically
+ for use with a MAC.
+
+ @param keySize the length, in bits, of the key required.
+ @return a parameters object representing a key.
+
+
+ converts a password to a byte array according to the scheme in
+ Pkcs5 (ascii, no padding)
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ converts a password to a byte array according to the scheme in
+ PKCS5 (UTF-8, no padding)
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ converts a password to a byte array according to the scheme in
+ Pkcs12 (unicode, big endian, 2 zero pad bytes at the end).
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ An EntropySourceProvider where entropy generation is based on a SecureRandom output using SecureRandom.generateSeed().
+
+
+ Create a entropy source provider based on the passed in SecureRandom.
+
+ @param secureRandom the SecureRandom to base EntropySource construction on.
+ @param isPredictionResistant boolean indicating if the SecureRandom is based on prediction resistant entropy or not (true if it is).
+
+
+ Return an entropy source that will create bitsRequired bits of entropy on
+ each invocation of getEntropy().
+
+ @param bitsRequired size (in bits) of entropy to be created by the provided source.
+ @return an EntropySource that generates bitsRequired bits of entropy on each call to its getEntropy() method.
+
+
+ A SP800-90A CTR DRBG.
+
+
+ Construct a SP800-90A CTR DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param engine underlying block cipher to use to support DRBG
+ @param keySizeInBits size of the key to use with the block cipher.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each internal round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Pad out a key for TDEA, setting odd parity for each byte.
+
+ @param keyMaster
+ @param keyOff
+ @param tmp
+ @param tmpOff
+
+
+ Used by both Dual EC and Hash.
+
+
+ A SP800-90A Hash DRBG.
+
+
+ Construct a SP800-90A Hash DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param digest source digest to use for DRB stream.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each internal round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ A SP800-90A HMAC DRBG.
+
+
+ Construct a SP800-90A Hash DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param hMac Hash MAC to base the DRBG on.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Interface to SP800-90A deterministic random bit generators.
+
+
+ Return the block size of the DRBG.
+
+ @return the block size (in bits) produced by each round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Generate numBytes worth of entropy from the passed in entropy source.
+
+ @param entropySource the entropy source to request the data from.
+ @param numBytes the number of bytes of entropy requested.
+ @return a byte array populated with the random data.
+
+
+ Builder class for making SecureRandom objects based on SP 800-90A Deterministic Random Bit Generators (DRBG).
+
+
+ Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with
+ predictionResistant set to false.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the default SecureRandom does for its generateSeed() call.
+
+
+
+ Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value
+ for prediction resistance.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the passed in SecureRandom does for its generateSeed() call.
+
+ @param entropySource
+ @param predictionResistant
+
+
+ Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
+
+ Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.
+
+ @param entropySourceProvider a provider of EntropySource objects.
+
+
+ Set the personalization string for DRBG SecureRandoms created by this builder
+ @param personalizationString the personalisation string for the underlying DRBG.
+ @return the current builder.
+
+
+ Set the security strength required for DRBGs used in building SecureRandom objects.
+
+ @param securityStrength the security strength (in bits)
+ @return the current builder.
+
+
+ Set the amount of entropy bits required for seeding and reseeding DRBGs used in building SecureRandom objects.
+
+ @param entropyBitsRequired the number of bits of entropy to be requested from the entropy source on each seed/reseed.
+ @return the current builder.
+
+
+ Build a SecureRandom based on a SP 800-90A Hash DRBG.
+
+ @param digest digest algorithm to use in the DRBG underneath the SecureRandom.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a Hash DRBG.
+
+
+ Build a SecureRandom based on a SP 800-90A CTR DRBG.
+
+ @param cipher the block cipher to base the DRBG on.
+ @param keySizeInBits key size in bits to be used with the block cipher.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a CTR DRBG.
+
+
+ Build a SecureRandom based on a SP 800-90A HMAC DRBG.
+
+ @param hMac HMAC algorithm to use in the DRBG underneath the SecureRandom.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a HMAC DRBG.
+
+
+
+ @param engine
+ @param entropySource
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the RNG.
+
+
+ Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with
+ predictionResistant set to false.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the default SecureRandom does for its generateSeed() call.
+
+
+
+ Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value
+ for prediction resistance.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the passed in SecureRandom does for its generateSeed() call.
+
+ @param entropySource
+ @param predictionResistant
+
+
+ Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
+
+ Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.
+
+ @param entropySourceProvider a provider of EntropySource objects.
+
+
+ Construct a X9.31 secure random generator using the passed in engine and key. If predictionResistant is true the
+ generator will be reseeded on each request.
+
+ @param engine a block cipher to use as the operator.
+ @param key the block cipher key to initialise engine with.
+ @param predictionResistant true if engine to be reseeded on each use, false otherwise.
+ @return a SecureRandom.
+
+
+
+ Uses Microsoft's RNGCryptoServiceProvider
+
+
+
+ Random generation based on the digest with counter. Calling AddSeedMaterial will
+ always increase the entropy of the hash.
+
+ Internal access to the digest is synchronized so a single one of these can be shared.
+
+
+
+ Generic interface for objects generating random bytes.
+
+
+ Add more seed material to the generator.
+ A byte array to be mixed into the generator's state.
+
+
+ Add more seed material to the generator.
+ A long value to be mixed into the generator's state.
+
+
+ Fill byte array with random values.
+ Array to be filled.
+
+
+ Fill byte array with random values.
+ Array to receive bytes.
+ Index to start filling at.
+ Length of segment to fill.
+
+
+
+ Takes bytes generated by an underling RandomGenerator and reverses the order in
+ each small window (of configurable size).
+
+ Access to internals is synchronized so a single one of these can be shared.
+
+
+
+
+ Add more seed material to the generator.
+ A byte array to be mixed into the generator's state.
+
+
+ Add more seed material to the generator.
+ A long value to be mixed into the generator's state.
+
+
+ Fill byte array with random values.
+ Array to be filled.
+
+
+ Fill byte array with random values.
+ Array to receive bytes.
+ Index to start filling at.
+ Length of segment to fill.
+
+
+ A thread based seed generator - one source of randomness.
+
+ Based on an idea from Marcus Lippert.
+
+
+
+ Generate seed bytes. Set fast to false for best quality.
+
+ If fast is set to true, the code should be round about 8 times faster when
+ generating a long sequence of random bytes. 20 bytes of random values using
+ the fast mode take less than half a second on a Nokia e70. If fast is set to false,
+ it takes round about 2500 ms.
+
+ @param numBytes the number of bytes to generate
+ @param fast true if fast mode should be used
+
+
+
+ Permutation generated by code:
+
+ // First 1850 fractional digit of Pi number.
+ byte[] key = new BigInteger("14159265358979323846...5068006422512520511").ToByteArray();
+ s = 0;
+ P = new byte[256];
+ for (int i = 0; i < 256; i++)
+ {
+ P[i] = (byte) i;
+ }
+ for (int m = 0; m < 768; m++)
+ {
+ s = P[(s + P[m & 0xff] + key[m % key.length]) & 0xff];
+ byte temp = P[m & 0xff];
+ P[m & 0xff] = P[s & 0xff];
+ P[s & 0xff] = temp;
+ }
+
+
+
+ Value generated in the same way as P.
+
+
+ a wrapper for block ciphers with a single byte block size, so that they
+ can be treated like stream ciphers.
+
+
+ basic constructor.
+
+ @param cipher the block cipher to be wrapped.
+ @exception ArgumentException if the cipher has a block size other than
+ one.
+
+
+ initialise the underlying cipher.
+
+ @param forEncryption true if we are setting up for encryption, false otherwise.
+ @param param the necessary parameters for the underlying cipher to be initialised.
+
+
+ return the name of the algorithm we are wrapping.
+
+ @return the name of the algorithm we are wrapping.
+
+
+ encrypt/decrypt a single byte returning the result.
+
+ @param in the byte to be processed.
+ @return the result of processing the input byte.
+
+
+ process a block of bytes from in putting the result into out.
+
+ @param in the input byte array.
+ @param inOff the offset into the in array where the data to be processed starts.
+ @param len the number of bytes to be processed.
+ @param out the output buffer the processed bytes go into.
+ @param outOff the offset into the output byte array the processed data stars at.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ reset the underlying cipher. This leaves it in the same state
+ it was at after the last init (if there was one).
+
+
+ a Diffie-Hellman key exchange engine.
+
+ note: This uses MTI/A0 key agreement in order to make the key agreement
+ secure against passive attacks. If you're doing Diffie-Hellman and both
+ parties have long term public keys you should look at using this. For
+ further information have a look at RFC 2631.
+
+ It's possible to extend this to more than two parties as well, for the moment
+ that is left as an exercise for the reader.
+
+
+ calculate our initial message.
+
+
+ given a message from a given party and the corresponding public key
+ calculate the next message in the agreement sequence. In this case
+ this will represent the shared secret.
+
+
+ a Diffie-Hellman key agreement class.
+
+ note: This is only the basic algorithm, it doesn't take advantage of
+ long term public keys if they are available. See the DHAgreement class
+ for a "better" implementation.
+
+
+ given a short term public key from a given party calculate the next
+ message in the agreement sequence.
+
+
+ Standard Diffie-Hellman groups from various IETF specifications.
+
+
+ P1363 7.2.1 ECSVDP-DH
+
+ ECSVDP-DH is Elliptic Curve Secret Value Derivation Primitive,
+ Diffie-Hellman version. It is based on the work of [DH76], [Mil86],
+ and [Kob87]. This primitive derives a shared secret value from one
+ party's private key and another party's public key, where both have
+ the same set of EC domain parameters. If two parties correctly
+ execute this primitive, they will produce the same output. This
+ primitive can be invoked by a scheme to derive a shared secret key;
+ specifically, it may be used with the schemes ECKAS-DH1 and
+ DL/ECKAS-DH2. It assumes that the input keys are valid (see also
+ Section 7.2.2).
+
+
+ P1363 7.2.2 ECSVDP-DHC
+
+ ECSVDP-DHC is Elliptic Curve Secret Value Derivation Primitive,
+ Diffie-Hellman version with cofactor multiplication. It is based on
+ the work of [DH76], [Mil86], [Kob87], [LMQ98] and [Kal98a]. This
+ primitive derives a shared secret value from one party's private key
+ and another party's public key, where both have the same set of EC
+ domain parameters. If two parties correctly execute this primitive,
+ they will produce the same output. This primitive can be invoked by a
+ scheme to derive a shared secret key; specifically, it may be used
+ with the schemes ECKAS-DH1 and DL/ECKAS-DH2. It does not assume the
+ validity of the input public key (see also Section 7.2.1).
+
+ Note: As stated P1363 compatibility mode with ECDH can be preset, and
+ in this case the implementation doesn't have a ECDH compatibility mode
+ (if you want that just use ECDHBasicAgreement and note they both implement
+ BasicAgreement!).
+
+
+
+ A participant in a Password Authenticated Key Exchange by Juggling (J-PAKE) exchange.
+
+ The J-PAKE exchange is defined by Feng Hao and Peter Ryan in the paper
+
+ "Password Authenticated Key Exchange by Juggling, 2008."
+
+ The J-PAKE protocol is symmetric.
+ There is no notion of a client or server, but rather just two participants.
+ An instance of JPakeParticipant represents one participant, and
+ is the primary interface for executing the exchange.
+
+ To execute an exchange, construct a JPakeParticipant on each end,
+ and call the following 7 methods
+ (once and only once, in the given order, for each participant, sending messages between them as described):
+
+ CreateRound1PayloadToSend() - and send the payload to the other participant
+ ValidateRound1PayloadReceived(JPakeRound1Payload) - use the payload received from the other participant
+ CreateRound2PayloadToSend() - and send the payload to the other participant
+ ValidateRound2PayloadReceived(JPakeRound2Payload) - use the payload received from the other participant
+ CalculateKeyingMaterial()
+ CreateRound3PayloadToSend(BigInteger) - and send the payload to the other participant
+ ValidateRound3PayloadReceived(JPakeRound3Payload, BigInteger) - use the payload received from the other participant
+
+ Each side should derive a session key from the keying material returned by CalculateKeyingMaterial().
+ The caller is responsible for deriving the session key using a secure key derivation function (KDF).
+
+ Round 3 is an optional key confirmation process.
+ If you do not execute round 3, then there is no assurance that both participants are using the same key.
+ (i.e. if the participants used different passwords, then their session keys will differ.)
+
+ If the round 3 validation succeeds, then the keys are guaranteed to be the same on both sides.
+
+ The symmetric design can easily support the asymmetric cases when one party initiates the communication.
+ e.g. Sometimes the round1 payload and round2 payload may be sent in one pass.
+ Also, in some cases, the key confirmation payload can be sent together with the round2 payload.
+ These are the trivial techniques to optimize the communication.
+
+ The key confirmation process is implemented as specified in
+ NIST SP 800-56A Revision 1,
+ Section 8.2 Unilateral Key Confirmation for Key Agreement Schemes.
+
+ This class is stateful and NOT threadsafe.
+ Each instance should only be used for ONE complete J-PAKE exchange
+ (i.e. a new JPakeParticipant should be constructed for each new J-PAKE exchange).
+
+
+
+
+ Convenience constructor for a new JPakeParticipant that uses
+ the JPakePrimeOrderGroups#NIST_3072 prime order group,
+ a SHA-256 digest, and a default SecureRandom implementation.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+
+
+
+ Convenience constructor for a new JPakeParticipant that uses
+ a SHA-256 digest, and a default SecureRandom implementation.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+ Prime order group. See JPakePrimeOrderGroups for standard groups.
+
+
+
+ Constructor for a new JPakeParticipant.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+ Prime order group. See JPakePrimeOrderGroups for standard groups.
+ Digest to use during zero knowledge proofs and key confirmation
+ (SHA-256 or stronger preferred).
+ Source of secure random data for x1 and x2, and for the zero knowledge proofs.
+
+
+
+ Gets the current state of this participant.
+ See the STATE_* constants for possible values.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 1.
+
+ After execution, the State state} will be STATE_ROUND_1_CREATED}.
+
+
+
+
+ Validates the payload received from the other participant during round 1.
+
+ Must be called prior to CreateRound2PayloadToSend().
+
+ After execution, the State state will be STATE_ROUND_1_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws InvalidOperationException
+ if called multiple times.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 2.
+
+ ValidateRound1PayloadReceived(JPakeRound1Payload) must be called prior to this method.
+
+ After execution, the State state will be STATE_ROUND_2_CREATED.
+
+ Throws InvalidOperationException if called prior to ValidateRound1PayloadReceived(JPakeRound1Payload), or multiple times
+
+
+
+
+ Validates the payload received from the other participant during round 2.
+ Note that this DOES NOT detect a non-common password.
+ The only indication of a non-common password is through derivation
+ of different keys (which can be detected explicitly by executing round 3 and round 4)
+
+ Must be called prior to CalculateKeyingMaterial().
+
+ After execution, the State state will be STATE_ROUND_2_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws
+ InvalidOperationException if called prior to ValidateRound1PayloadReceived(JPakeRound1Payload), or multiple times
+
+
+
+
+ Calculates and returns the key material.
+ A session key must be derived from this key material using a secure key derivation function (KDF).
+ The KDF used to derive the key is handled externally (i.e. not by JPakeParticipant).
+
+ The keying material will be identical for each participant if and only if
+ each participant's password is the same. i.e. If the participants do not
+ share the same password, then each participant will derive a different key.
+ Therefore, if you immediately start using a key derived from
+ the keying material, then you must handle detection of incorrect keys.
+ If you want to handle this detection explicitly, you can optionally perform
+ rounds 3 and 4. See JPakeParticipant for details on how to execute
+ rounds 3 and 4.
+
+ The keying material will be in the range [0, p-1].
+
+ ValidateRound2PayloadReceived(JPakeRound2Payload) must be called prior to this method.
+
+ As a side effect, the internal password array is cleared, since it is no longer needed.
+
+ After execution, the State state will be STATE_KEY_CALCULATED.
+
+ Throws InvalidOperationException if called prior to ValidateRound2PayloadReceived(JPakeRound2Payload),
+ or if called multiple times.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 3.
+
+ See JPakeParticipant for more details on round 3.
+
+ After execution, the State state} will be STATE_ROUND_3_CREATED.
+ Throws InvalidOperationException if called prior to CalculateKeyingMaterial, or multiple
+ times.
+
+ The keying material as returned from CalculateKeyingMaterial().
+
+
+
+ Validates the payload received from the other participant during round 3.
+
+ See JPakeParticipant for more details on round 3.
+
+ After execution, the State state will be STATE_ROUND_3_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws InvalidOperationException if called prior to
+ CalculateKeyingMaterial or multiple times
+
+ The round 3 payload received from the other participant.
+ The keying material as returned from CalculateKeyingMaterial().
+
+
+
+ A pre-computed prime order group for use during a J-PAKE exchange.
+
+ Typically a Schnorr group is used. In general, J-PAKE can use any prime order group
+ that is suitable for public key cryptography, including elliptic curve cryptography.
+
+ See JPakePrimeOrderGroups for convenient standard groups.
+
+ NIST publishes
+ many groups that can be used for the desired level of security.
+
+
+
+
+ Constructs a new JPakePrimeOrderGroup.
+
+ In general, you should use one of the pre-approved groups from
+ JPakePrimeOrderGroups, rather than manually constructing one.
+
+ The following basic checks are performed:
+
+ p-1 must be evenly divisible by q
+ g must be in [2, p-1]
+ g^q mod p must equal 1
+ p must be prime (within reasonably certainty)
+ q must be prime (within reasonably certainty)
+
+ The prime checks are performed using BigInteger#isProbablePrime(int),
+ and are therefore subject to the same probability guarantees.
+
+ These checks prevent trivial mistakes.
+ However, due to the small uncertainties if p and q are not prime,
+ advanced attacks are not prevented.
+ Use it at your own risk.
+
+ Throws NullReferenceException if any argument is null. Throws
+ InvalidOperationException is any of the above validations fail.
+
+
+
+
+ Constructor used by the pre-approved groups in JPakePrimeOrderGroups.
+ These pre-approved groups can avoid the expensive checks.
+ User-specified groups should not use this constructor.
+
+
+
+
+ Standard pre-computed prime order groups for use by J-PAKE.
+ (J-PAKE can use pre-computed prime order groups, same as DSA and Diffie-Hellman.)
+
+ This class contains some convenient constants for use as input for
+ constructing {@link JPAKEParticipant}s.
+
+ The prime order groups below are taken from Sun's JDK JavaDoc (docs/guide/security/CryptoSpec.html#AppB),
+ and from the prime order groups
+ published by NIST.
+
+
+
+
+ From Sun's JDK JavaDoc (docs/guide/security/CryptoSpec.html#AppB)
+ 1024-bit p, 160-bit q and 1024-bit g for 80-bit security.
+
+
+
+
+ From NIST.
+ 2048-bit p, 224-bit q and 2048-bit g for 112-bit security.
+
+
+
+
+ From NIST.
+ 3072-bit p, 256-bit q and 3072-bit g for 128-bit security.
+
+
+
+
+ The payload sent/received during the first round of a J-PAKE exchange.
+
+ Each JPAKEParticipant creates and sends an instance of this payload to
+ the other. The payload to send should be created via
+ JPAKEParticipant.CreateRound1PayloadToSend().
+
+ Each participant must also validate the payload received from the other.
+ The received payload should be validated via
+ JPAKEParticipant.ValidateRound1PayloadReceived(JPakeRound1Payload).
+
+
+
+
+ The id of the JPAKEParticipant who created/sent this payload.
+
+
+
+
+ The value of g^x1
+
+
+
+
+ The value of g^x2
+
+
+
+
+ The zero knowledge proof for x1.
+
+ This is a two element array, containing {g^v, r} for x1.
+
+
+
+
+ The zero knowledge proof for x2.
+
+ This is a two element array, containing {g^v, r} for x2.
+
+
+
+
+ The payload sent/received during the second round of a J-PAKE exchange.
+
+ Each JPAKEParticipant creates and sends an instance
+ of this payload to the other JPAKEParticipant.
+ The payload to send should be created via
+ JPAKEParticipant#createRound2PayloadToSend()
+
+ Each JPAKEParticipant must also validate the payload
+ received from the other JPAKEParticipant.
+ The received payload should be validated via
+ JPAKEParticipant#validateRound2PayloadReceived(JPakeRound2Payload)
+
+
+
+
+ The id of the JPAKEParticipant who created/sent this payload.
+
+
+
+
+ The value of A, as computed during round 2.
+
+
+
+
+ The zero knowledge proof for x2 * s.
+
+ This is a two element array, containing {g^v, r} for x2 * s.
+
+
+
+
+ The payload sent/received during the optional third round of a J-PAKE exchange,
+ which is for explicit key confirmation.
+
+ Each JPAKEParticipant creates and sends an instance
+ of this payload to the other JPAKEParticipant.
+ The payload to send should be created via
+ JPAKEParticipant#createRound3PayloadToSend(BigInteger)
+
+ Eeach JPAKEParticipant must also validate the payload
+ received from the other JPAKEParticipant.
+ The received payload should be validated via
+ JPAKEParticipant#validateRound3PayloadReceived(JPakeRound3Payload, BigInteger)
+
+
+
+
+ The id of the {@link JPAKEParticipant} who created/sent this payload.
+
+
+
+
+ The value of MacTag, as computed by round 3.
+
+ See JPAKEUtil#calculateMacTag(string, string, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, org.bouncycastle.crypto.Digest)
+
+
+
+
+ Primitives needed for a J-PAKE exchange.
+
+ The recommended way to perform a J-PAKE exchange is by using
+ two JPAKEParticipants. Internally, those participants
+ call these primitive operations in JPakeUtilities.
+
+ The primitives, however, can be used without a JPAKEParticipant if needed.
+
+
+
+
+ Return a value that can be used as x1 or x3 during round 1.
+ The returned value is a random value in the range [0, q-1].
+
+
+
+
+ Return a value that can be used as x2 or x4 during round 1.
+ The returned value is a random value in the range [1, q-1].
+
+
+
+
+ Converts the given password to a BigInteger
+ for use in arithmetic calculations.
+
+
+
+
+ Calculate g^x mod p as done in round 1.
+
+
+
+
+ Calculate ga as done in round 2.
+
+
+
+
+ Calculate x2 * s as done in round 2.
+
+
+
+
+ Calculate A as done in round 2.
+
+
+
+
+ Calculate a zero knowledge proof of x using Schnorr's signature.
+ The returned array has two elements {g^v, r = v-x*h} for x.
+
+
+
+
+ Validates that g^x4 is not 1.
+ throws CryptoException if g^x4 is 1
+
+
+
+
+ Validates that ga is not 1.
+
+ As described by Feng Hao...
+ Alice could simply check ga != 1 to ensure it is a generator.
+ In fact, as we will explain in Section 3, (x1 + x3 + x4 ) is random over Zq even in the face of active attacks.
+ Hence, the probability for ga = 1 is extremely small - on the order of 2^160 for 160-bit q.
+
+ throws CryptoException if ga is 1
+
+
+
+
+ Validates the zero knowledge proof (generated by
+ calculateZeroKnowledgeProof(BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, string, Digest, SecureRandom)
+ is correct.
+
+ throws CryptoException if the zero knowledge proof is not correct
+
+
+
+
+ Calculates the keying material, which can be done after round 2 has completed.
+ A session key must be derived from this key material using a secure key derivation function (KDF).
+ The KDF used to derive the key is handled externally (i.e. not by JPAKEParticipant).
+
+ KeyingMaterial = (B/g^{x2*x4*s})^x2
+
+
+
+
+ Validates that the given participant ids are not equal.
+ (For the J-PAKE exchange, each participant must use a unique id.)
+
+ Throws CryptoException if the participantId strings are equal.
+
+
+
+
+ Validates that the given participant ids are equal.
+ This is used to ensure that the payloads received from
+ each round all come from the same participant.
+
+
+
+
+ Validates that the given object is not null.
+ throws NullReferenceException if the object is null.
+
+ object in question
+ name of the object (to be used in exception message)
+
+
+
+ Calculates the MacTag (to be used for key confirmation), as defined by
+ NIST SP 800-56A Revision 1,
+ Section 8.2 Unilateral Key Confirmation for Key Agreement Schemes.
+
+ MacTag = HMAC(MacKey, MacLen, MacData)
+ MacKey = H(K || "JPAKE_KC")
+ MacData = "KC_1_U" || participantId || partnerParticipantId || gx1 || gx2 || gx3 || gx4
+
+ Note that both participants use "KC_1_U" because the sender of the round 3 message
+ is always the initiator for key confirmation.
+
+ HMAC = {@link HMac} used with the given {@link Digest}
+ H = The given {@link Digest}
+ MacLen = length of MacTag
+
+
+
+
+ Calculates the MacKey (i.e. the key to use when calculating the MagTag for key confirmation).
+
+ MacKey = H(K || "JPAKE_KC")
+
+
+
+
+ Validates the MacTag received from the partner participant.
+
+ throws CryptoException if the participantId strings are equal.
+
+
+
+ RFC 2631 Diffie-hellman KEK derivation function.
+
+
+ X9.63 based key derivation function for ECDH CMS.
+
+
+ Implements the client side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
+ This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
+ "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
+
+
+ Initialises the client to begin new authentication attempt
+ @param N The safe prime associated with the client's verifier
+ @param g The group parameter associated with the client's verifier
+ @param digest The digest algorithm associated with the client's verifier
+ @param random For key generation
+
+
+ Generates client's credentials given the client's salt, identity and password
+ @param salt The salt used in the client's verifier.
+ @param identity The user's identity (eg. username)
+ @param password The user's password
+ @return Client's public value to send to server
+
+
+ Generates client's verification message given the server's credentials
+ @param serverB The server's credentials
+ @return Client's verification message for the server
+ @throws CryptoException If server's credentials are invalid
+
+
+ Computes the client evidence message M1 using the previously received values.
+ To be called after calculating the secret S.
+ @return M1: the client side generated evidence message
+ @throws CryptoException
+
+
+ Authenticates the server evidence message M2 received and saves it only if correct.
+ @param M2: the server side generated evidence message
+ @return A boolean indicating if the server message M2 was the expected one.
+ @throws CryptoException
+
+
+ Computes the final session key as a result of the SRP successful mutual authentication
+ To be called after verifying the server evidence message M2.
+ @return Key: the mutually authenticated symmetric session key
+ @throws CryptoException
+
+
+ Implements the server side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
+ This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
+ "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
+
+
+ Initialises the server to accept a new client authentication attempt
+ @param N The safe prime associated with the client's verifier
+ @param g The group parameter associated with the client's verifier
+ @param v The client's verifier
+ @param digest The digest algorithm associated with the client's verifier
+ @param random For key generation
+
+
+ Generates the server's credentials that are to be sent to the client.
+ @return The server's public value to the client
+
+
+ Processes the client's credentials. If valid the shared secret is generated and returned.
+ @param clientA The client's credentials
+ @return A shared secret BigInteger
+ @throws CryptoException If client's credentials are invalid
+
+
+ Authenticates the received client evidence message M1 and saves it only if correct.
+ To be called after calculating the secret S.
+ @param M1: the client side generated evidence message
+ @return A boolean indicating if the client message M1 was the expected one.
+ @throws CryptoException
+
+
+ Computes the server evidence message M2 using the previously verified values.
+ To be called after successfully verifying the client evidence message M1.
+ @return M2: the server side generated evidence message
+ @throws CryptoException
+
+
+ Computes the final session key as a result of the SRP successful mutual authentication
+ To be called after calculating the server evidence message M2.
+ @return Key: the mutual authenticated symmetric session key
+ @throws CryptoException
+
+
+ Computes the client evidence message (M1) according to the standard routine:
+ M1 = H( A | B | S )
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param A The public client value
+ @param B The public server value
+ @param S The secret calculated by both sides
+ @return M1 The calculated client evidence message
+
+
+ Computes the server evidence message (M2) according to the standard routine:
+ M2 = H( A | M1 | S )
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param A The public client value
+ @param M1 The client evidence message
+ @param S The secret calculated by both sides
+ @return M2 The calculated server evidence message
+
+
+ Computes the final Key according to the standard routine: Key = H(S)
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param S The secret calculated by both sides
+ @return
+
+
+ Generates new SRP verifier for user
+
+
+ Initialises generator to create new verifiers
+ @param N The safe prime to use (see DHParametersGenerator)
+ @param g The group parameter to use (see DHParametersGenerator)
+ @param digest The digest to use. The same digest type will need to be used later for the actual authentication
+ attempt. Also note that the final session key size is dependent on the chosen digest.
+
+
+ Creates a new SRP verifier
+ @param salt The salt to use, generally should be large and random
+ @param identity The user's identifying information (eg. username)
+ @param password The user's password
+ @return A new verifier for use in future SRP authentication
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ 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
+ should never use it with anything other than a hash (ie. even if the
+ message is small don't sign the message, sign it's hash) or some "random"
+ value. See your favorite search engine for details.
+
+
+ return the input block size. The largest message we can process
+ is (key_size_in_bits + 3)/16, which in our world comes to
+ key_size_in_bytes / 2.
+
+
+ return the maximum possible size for the output.
+
+
+ set the number of bits in the next message to be treated as
+ pad bits.
+
+
+ retrieve the number of pad bits in the last decoded message.
+
+
+ @exception InvalidCipherTextException if the decrypted block is not a valid ISO 9796 bit string
+
+
+ Optimal Asymmetric Encryption Padding (OAEP) - see PKCS 1 V 2.
+
+
+ @exception InvalidCipherTextException if the decrypted block turns out to
+ be badly formatted.
+
+
+ int to octet string.
+
+
+ mask generator function, as described in PKCS1v2.
+
+
+ this does your basic Pkcs 1 v1.5 padding - whether or not you should be using this
+ depends on your application - see Pkcs1 Version 2 for details.
+
+
+ some providers fail to include the leading zero in PKCS1 encoded blocks. If you need to
+ work with one of these set the system property Org.BouncyCastle.Pkcs1.Strict to false.
+
+
+ The same effect can be achieved by setting the static property directly
+
+ The static property is checked during construction of the encoding object, it is set to
+ true by default.
+
+
+
+ Basic constructor.
+ @param cipher
+
+
+ Constructor for decryption with a fixed plaintext length.
+
+ @param cipher The cipher to use for cryptographic operation.
+ @param pLen Length of the expected plaintext.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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
+
+
+ @exception InvalidCipherTextException if the decrypted block is not in Pkcs1 format.
+
+
+ Basic KDF generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on ISO 18033/P1363a.
+
+
+ Construct a KDF Parameters generator.
+
+ @param counterStart value of counter.
+ @param digest the digest to be used as the source of derived keys.
+
+
+ return the underlying digest.
+
+
+ fill len bytes of the output buffer with bytes generated from
+ the derivation function.
+
+ @throws ArgumentException if the size of the request will cause an overflow.
+ @throws DataLengthException if the out buffer is too small.
+
+
+ a basic Diffie-Hellman key pair generator.
+
+ This generates keys consistent for use with the basic algorithm for
+ Diffie-Hellman.
+
+
+ a Diffie-Hellman key pair generator.
+
+ This generates keys consistent for use in the MTI/A0 key agreement protocol
+ as described in "Handbook of Applied Cryptography", Pages 516-519.
+
+
+ which Generates the p and g values from the given parameters,
+ returning the DHParameters object.
+
+ Note: can take a while...
+
+
+ initialise the key generator - if strength is set to zero
+ the key Generated will be 192 bits in size, otherwise
+ strength can be 128 or 192 (or 112 or 168 if you don't count
+ parity bits), depending on whether you wish to do 2-key or 3-key
+ triple DES.
+
+ @param param the parameters to be used for key generation
+
+
+ initialise the key generator - if strength is set to zero
+ the key generated will be 64 bits in size, otherwise
+ strength can be 64 or 56 bits (if you don't count the parity bits).
+
+ @param param the parameters to be used for key generation
+
+
+ a DSA key pair generator.
+
+ This Generates DSA keys in line with the method described
+ in FIPS 186-3 B.1 FFC Key Pair Generation.
+
+
+ Generate suitable parameters for DSA, in line with FIPS 186-2, or FIPS 186-3.
+
+
+ Initialise the generator
+ This form can only be used for older DSA (pre-DSA2) parameters
+ the size of keys in bits (from 512 up to 1024, and a multiple of 64)
+ measure of robustness of primes (at least 80 for FIPS 186-2 compliance)
+ the source of randomness to use
+
+
+ Initialise the generator for DSA 2
+ You must use this Init method if you need to generate parameters for DSA 2 keys
+ An instance of DsaParameterGenerationParameters used to configure this generator
+
+
+ Generates a set of DsaParameters
+ Can take a while...
+
+
+ generate suitable parameters for DSA, in line with
+ FIPS 186-3 A.1 Generation of the FFC Primes p and q.
+
+
+ Given the domain parameters this routine generates an EC key
+ pair in accordance with X9.62 section 5.2.1 pages 26, 27.
+
+
+ a ElGamal key pair generator.
+
+ This Generates keys consistent for use with ElGamal as described in
+ page 164 of "Handbook of Applied Cryptography".
+
+
+ * which Generates the p and g values from the given parameters,
+ * returning the ElGamalParameters object.
+ *
+ * Note: can take a while...
+ *
+
+
+ a GOST3410 key pair generator.
+ This generates GOST3410 keys in line with the method described
+ in GOST R 34.10-94.
+
+
+ generate suitable parameters for GOST3410.
+
+
+ initialise the key generator.
+
+ @param size size of the key
+ @param typeProcedure type procedure A,B = 1; A',B' - else
+ @param random random byte source.
+
+
+ Procedure C
+ procedure generates the a value from the given p,q,
+ returning the a value.
+
+
+ which generates the p , q and a values from the given parameters,
+ returning the Gost3410Parameters object.
+
+
+ KFD2 generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on IEEE P1363/ISO 18033.
+
+
+ Construct a KDF1 byte generator.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ KDF2 generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on IEEE P1363/ISO 18033.
+
+
+ Construct a KDF2 bytes generator. Generates key material
+ according to IEEE P1363 or ISO 18033 depending on the initialisation.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ Generator for MGF1 as defined in Pkcs 1v2
+
+
+ @param digest the digest to be used as the source of Generated bytes
+
+
+ return the underlying digest.
+
+
+ int to octet string.
+
+
+ fill len bytes of the output buffer with bytes Generated from
+ the derivation function.
+
+ @throws DataLengthException if the out buffer is too small.
+
+
+ Key generation parameters for NaccacheStern cipher. For details on this cipher, please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Generates a permuted ArrayList from the original one. The original List
+ is not modified
+
+ @param arr
+ the ArrayList to be permuted
+ @param rand
+ the source of Randomness for permutation
+ @return a new IList with the permuted elements.
+
+
+ Finds the first 'count' primes starting with 3
+
+ @param count
+ the number of primes to find
+ @return a vector containing the found primes as Integer
+
+
+ Generator for PBE derived keys and ivs as usd by OpenSSL.
+
+ The scheme is a simple extension of PKCS 5 V2.0 Scheme 1 using MD5 with an
+ iteration count of 1.
+
+
+
+ Construct a OpenSSL Parameters generator.
+
+
+ Initialise - note the iteration count for this algorithm is fixed at 1.
+
+ @param password password to use.
+ @param salt salt to use.
+
+
+ the derived key function, the ith hash of the password and the salt.
+
+
+ Generate a key parameter derived from the password, salt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the password, salt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+ @exception ArgumentException if keySize + ivSize is larger than the base hash size.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 12 V1.0.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs12 Page
+
+
+
+ Construct a Pkcs 12 Parameters generator.
+
+ @param digest the digest to be used as the source of derived keys.
+ @exception ArgumentException if an unknown digest is passed in.
+
+
+ add a + b + 1, returning the result in a. The a value is treated
+ as a BigInteger of length (b.Length * 8) bits. The result is
+ modulo 2^b.Length in case of overflow.
+
+
+ generation of a derived key ala Pkcs12 V1.0.
+
+
+ Generate a key parameter derived from the password, salt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the password, salt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 5 V2.0 Scheme 1.
+ Note this generator is limited to the size of the hash produced by the
+ digest used to drive it.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs5 Page
+
+
+
+ Construct a Pkcs 5 Scheme 1 Parameters generator.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ the derived key function, the ith hash of the mPassword and the mSalt.
+
+
+ Generate a key parameter derived from the mPassword, mSalt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the mPassword, mSalt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+ @exception ArgumentException if keySize + ivSize is larger than the base hash size.
+
+
+ Generate a key parameter for use with a MAC derived from the mPassword,
+ mSalt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 5 V2.0 Scheme 2.
+ This generator uses a SHA-1 HMac as the calculation function.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs5 Page
+
+
+ construct a Pkcs5 Scheme 2 Parameters generator.
+
+
+ Generate a key parameter derived from the password, salt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the password, salt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+
+ Generates keys for the Poly1305 MAC.
+
+
+ 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.
+ The {@code r} value has a specific format with some bits required to be cleared, resulting in an
+ effective 106 bit key.
+ 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.
+
+
+
+
+
+ Initialises the key generator.
+
+
+ Poly1305 keys are always 256 bits, so the key length in the provided parameters is ignored.
+
+
+
+
+ Generates a 256 bit key in the format required for Poly1305 - e.g.
+ k[0] ... k[15], r[0] ... r[15]
with the required bits in r
cleared
+ as per .
+
+
+
+
+ Modifies an existing 32 byte key value to comply with the requirements of the Poly1305 key by
+ clearing required bits in the r
(second 16 bytes) portion of the key.
+ Specifically:
+
+ - r[3], r[7], r[11], r[15] have top four bits clear (i.e., are {0, 1, . . . , 15})
+ - r[4], r[8], r[12] have bottom two bits clear (i.e., are in {0, 4, 8, . . . , 252})
+
+
+ a 32 byte key value k[0] ... k[15], r[0] ... r[15]
+
+
+
+ Checks a 32 byte key for compliance with the Poly1305 key requirements, e.g.
+ k[0] ... k[15], r[0] ... r[15]
with the required bits in r
cleared
+ as per .
+
+ Key.
+ if the key is of the wrong length, or has invalid bits set
+ in the r
portion of the key.
+
+
+ Generate a random factor suitable for use with RSA blind signatures
+ as outlined in Chaum's blinding and unblinding as outlined in
+ "Handbook of Applied Cryptography", page 475.
+
+
+ Initialise the factor generator
+
+ @param param the necessary RSA key parameters.
+
+
+ Generate a suitable blind factor for the public key the generator was initialised with.
+
+ @return a random blind factor
+
+
+ an RSA key pair generator.
+
+
+ Choose a random prime value for use with RSA
+ the bit-length of the returned prime
+ the RSA public exponent
+ a prime p, with (p-1) relatively prime to e
+
+
+ CMAC - as specified at www.nuee.nagoya-u.ac.jp/labs/tiwata/omac/omac.html
+
+ CMAC is analogous to OMAC1 - see also en.wikipedia.org/wiki/CMAC
+
+ CMAC is a NIST recomendation - see
+ csrc.nist.gov/CryptoToolkit/modes/800-38_Series_Publications/SP800-38B.pdf
+
+ CMAC/OMAC1 is a blockcipher-based message authentication code designed and
+ analyzed by Tetsu Iwata and Kaoru Kurosawa.
+
+ CMAC/OMAC1 is a simple variant of the CBC MAC (Cipher Block Chaining Message
+ Authentication Code). OMAC stands for One-Key CBC MAC.
+
+ It supports 128- or 64-bits block ciphers, with any key size, and returns
+ a MAC with dimension less or equal to the block size of the underlying
+ cipher.
+
+
+
+ create a standard MAC based on a CBC block cipher (64 or 128 bit block).
+ This will produce an authentication code the length of the block size
+ of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8 and @lt;= 128.
+
+
+ Reset the mac generator.
+
+
+ standard CBC Block Cipher MAC - if no padding is specified the default of
+ pad of zeroes is used.
+
+
+ create a standard MAC based on a CBC block cipher. This will produce an
+ authentication code half the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a CBC block cipher. This will produce an
+ authentication code half the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used to complete the last block.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding the padding to be used to complete the last block.
+
+
+ Reset the mac generator.
+
+
+ implements a Cipher-FeedBack (CFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ create a standard MAC based on a CFB block cipher. This will produce an
+ authentication code half the length of the block size of the cipher, with
+ the CFB mode set to 8 bits.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a CFB block cipher. This will produce an
+ authentication code half the length of the block size of the cipher, with
+ the CFB mode set to 8 bits.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CFB mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param cfbBitSize the size of an output block produced by the CFB mode.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CFB mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param cfbBitSize the size of an output block produced by the CFB mode.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding a padding to be used.
+
+
+ Reset the mac generator.
+
+
+
+ The GMAC specialisation of Galois/Counter mode (GCM) detailed in NIST Special Publication
+ 800-38D.
+
+
+ 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).
+
+
+
+
+ Creates a GMAC based on the operation of a block cipher in GCM mode.
+
+
+ This will produce an authentication code the length of the block size of the cipher.
+
+ the cipher to be used in GCM mode to generate the MAC.
+
+
+
+ Creates a GMAC based on the operation of a 128 bit block cipher in GCM mode.
+
+
+ This will produce an authentication code the length of the block size of the cipher.
+
+ the cipher to be used in GCM mode to generate the MAC.
+ 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.
+
+
+
+ Initialises the GMAC - requires a
+ providing a and a nonce.
+
+
+
+ implementation of GOST 28147-89 MAC
+
+
+ HMAC implementation based on RFC2104
+
+ H(K XOR opad, H(K XOR ipad, text))
+
+
+ Reset the mac generator.
+
+
+ DES based CBC Block Cipher MAC according to ISO9797, algorithm 3 (ANSI X9.19 Retail MAC)
+
+ This could as well be derived from CBCBlockCipherMac, but then the property mac in the base
+ class must be changed to protected
+
+
+ create a Retail-MAC based on a CBC block cipher. This will produce an
+ authentication code of the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation. This must
+ be DESEngine.
+
+
+ create a Retail-MAC based on a CBC block cipher. This will produce an
+ authentication code of the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used to complete the last block.
+
+
+ create a Retail-MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses single DES CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses single DES CBC mode as the basis for the
+ MAC generation. The final block is decrypted and then encrypted using the
+ middle and right part of the key.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding the padding to be used to complete the last block.
+
+
+ Reset the mac generator.
+
+
+
+ Poly1305 message authentication code, designed by D. J. Bernstein.
+
+
+ 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 poly1305-donna-unrolled C implementation
+ by Andrew M (@floodyberry).
+
+
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Current block of buffered input
+
+
+ Current offset in input buffer
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Constructs a Poly1305 MAC, where the key passed to init() will be used directly.
+
+
+ Constructs a Poly1305 MAC, using a 128 bit block cipher.
+
+
+
+ Initialises the Poly1305 MAC.
+
+ 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}.
+
+
+
+ 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).
+
+
+ "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..."
+
+
+
+ SipHash-2-4
+
+
+ SipHash-c-d
+ the number of compression rounds
+ the number of finalization rounds
+
+
+
+ Implementation of the Skein parameterised MAC function in 256, 512 and 1024 bit block sizes,
+ based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+
+ Constructs a Skein MAC with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/MAC size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Optionally initialises the Skein digest with the provided parameters.
+
+ See for details on the parameterisation of the Skein hash function.
+ the parameters to apply to this engine, or null
to use no parameters.
+
+
+ implements Cipher-Block-Chaining (CBC) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of chaining.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CBC".
+
+
+ return the block size of the underlying cipher.
+
+ @return the block size of the underlying cipher.
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ Do the appropriate chaining step for CBC mode encryption.
+
+ @param in the array containing the data to be encrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate chaining step for CBC mode decryption.
+
+ @param in the array containing the data to be decrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the decrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Implements the Counter with Cipher Block Chaining mode (CCM) detailed in
+ NIST Special Publication 800-38C.
+
+ Note: this mode is a packet mode - it needs all the data up front.
+
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Returns a byte array containing the mac calculated as part of the
+ last encrypt or decrypt operation.
+
+ @return the last mac calculated.
+
+
+ Process a packet of data for either CCM decryption or encryption.
+
+ @param in data for processing.
+ @param inOff offset at which data starts in the input array.
+ @param inLen length of the data in the input array.
+ @return a byte array containing the processed input..
+ @throws IllegalStateException if the cipher is not appropriately set up.
+ @throws InvalidCipherTextException if the input data is truncated or the mac check fails.
+
+
+ Process a packet of data for either CCM decryption or encryption.
+
+ @param in data for processing.
+ @param inOff offset at which data starts in the input array.
+ @param inLen length of the data in the input array.
+ @param output output array.
+ @param outOff offset into output array to start putting processed bytes.
+ @return the number of bytes added to output.
+ @throws IllegalStateException if the cipher is not appropriately set up.
+ @throws InvalidCipherTextException if the input data is truncated or the mac check fails.
+ @throws DataLengthException if output buffer too short.
+
+
+ implements a Cipher-FeedBack (CFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate processing for CFB mode encryption.
+
+ @param in the array containing the data to be encrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate processing for CFB mode decryption.
+
+ @param in the array containing the data to be decrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ A Cipher Text Stealing (CTS) mode cipher. CTS allows block ciphers to
+ be used to produce cipher text which is the same outLength as the plain text.
+
+
+ Create a buffered block cipher that uses Cipher Text Stealing
+
+ @param cipher the underlying block cipher this buffering object wraps.
+
+
+ return the size of the output buffer required for an update of 'length' bytes.
+
+ @param length the outLength of the input.
+ @return the space required to accommodate a call to update
+ with length bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of length bytes.
+
+ @param length the outLength of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with length bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param length the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if cipher text decrypts wrongly (in
+ case the exception will never Get thrown).
+
+
+ A Two-Pass Authenticated-Encryption Scheme Optimized for Simplicity and
+ Efficiency - by M. Bellare, P. Rogaway, D. Wagner.
+
+ http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf
+
+ EAX is an AEAD scheme based on CTR and OMAC1/CMAC, that uses a single block
+ cipher to encrypt and authenticate data. It's on-line (the length of a
+ message isn't needed to begin processing it), has good performances, it's
+ simple and provably secure (provided the underlying block cipher is secure).
+
+ Of course, this implementations is NOT thread-safe.
+
+
+ Constructor that accepts an instance of a block cipher engine.
+
+ @param cipher the engine to use
+
+
+
+ Implements the Galois/Counter mode (GCM) detailed in
+ NIST Special Publication 800-38D.
+
+
+
+
+ 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.
+
+
+
+ implements the GOST 28147 OFB counter mode (GCTR).
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ counter mode (must have a 64 bit block size).
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param encrypting if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param parameters the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/GCTR"
+ and the block size in bits
+
+
+ return the block size we are operating at (in bytes).
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the feedback vector back to the IV and reset the underlying
+ cipher.
+
+
+
+ A block cipher mode that includes authenticated encryption with a streaming mode
+ and optional associated data.
+
+
+
+ The name of the algorithm this cipher implements.
+
+
+ The block cipher underlying this algorithm.
+
+
+ Initialise the cipher.
+ Parameter can either be an AeadParameters or a ParametersWithIV object.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The block size for this cipher, in bytes.
+
+
+ Add a single byte to the associated data check.
+ If the implementation supports it, this will be an online operation and will not retain the associated data.
+ The byte to be processed.
+
+
+ Add a sequence of bytes to the associated data check.
+ If the implementation supports it, this will be an online operation and will not retain the associated data.
+ The input byte array.
+ The offset into the input array where the data to be processed starts.
+ The number of bytes to be processed.
+
+
+ Encrypt/decrypt a single byte.
+
+ @param input the byte to be processed.
+ @param outBytes the output buffer the processed byte goes into.
+ @param outOff the offset into the output byte array the processed data starts at.
+ @return the number of bytes written to out.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ Process a block of bytes from in putting the result into out.
+
+ @param inBytes the input byte array.
+ @param inOff the offset into the in array where the data to be processed starts.
+ @param len the number of bytes to be processed.
+ @param outBytes the output buffer the processed bytes go into.
+ @param outOff the offset into the output byte array the processed data starts at.
+ @return the number of bytes written to out.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ Finish the operation either appending or verifying the MAC at the end of the data.
+
+ @param outBytes space for any resulting output data.
+ @param outOff offset into out to start copying the data at.
+ @return number of bytes written into out.
+ @throws InvalidOperationException if the cipher is in an inappropriate state.
+ @throws InvalidCipherTextException if the MAC fails to match.
+
+
+ Return the value of the MAC associated with the last stream processed.
+
+ @return MAC for plaintext data.
+
+
+ Return the size of the output buffer required for a ProcessBytes
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to ProcessBytes
+ with len bytes of input.
+
+
+ Return the size of the output buffer required for a ProcessBytes plus a
+ DoFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to ProcessBytes and DoFinal
+ with len bytes of input.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+ An implementation of RFC 7253 on The OCB
+ Authenticated-Encryption Algorithm, licensed per:
+
+ License for
+ Open-Source Software Implementations of OCB (Jan 9, 2013) - 'License 1'
+ 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.
+
+ 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.
+
+
+ implements a Output-FeedBack (OFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/OFB"
+ and the block size in bits
+
+
+ return the block size we are operating at (in bytes).
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the feedback vector back to the IV and reset the underlying
+ cipher.
+
+
+ * Implements OpenPGP's rather strange version of Cipher-FeedBack (CFB) mode
+ * on top of a simple cipher. This class assumes the IV has been prepended
+ * to the data stream already, and just accomodates the reset after
+ * (blockSize + 2) bytes have been read.
+ *
+ * For further info see RFC 2440.
+ *
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/PGPCFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param parameters the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Encrypt one byte of data according to CFB mode.
+ @param data the byte to encrypt
+ @param blockOff offset in the current block
+ @returns the encrypted byte
+
+
+ Do the appropriate processing for CFB IV mode encryption.
+
+ @param in the array containing the data to be encrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate processing for CFB IV mode decryption.
+
+ @param in the array containing the data to be decrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Implements the Segmented Integer Counter (SIC) mode on top of a simple
+ block cipher.
+
+
+ Basic constructor.
+
+ @param c the block cipher to be used.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Calculator factory class for signature generation in ASN.1 based profiles that use an AlgorithmIdentifier to preserve
+ signature algorithm details.
+
+
+
+
+ Base constructor.
+
+ The name of the signature algorithm to use.
+ The private key to be used in the signing operation.
+
+
+
+ Constructor which also specifies a source of randomness to be used if one is required.
+
+ The name of the signature algorithm to use.
+ The private key to be used in the signing operation.
+ The source of randomness to be used in signature calculation.
+
+
+
+ Allows enumeration of the signature names supported by the verifier provider.
+
+
+
+
+ Verifier class for signature verification in ASN.1 based profiles that use an AlgorithmIdentifier to preserve
+ signature algorithm details.
+
+
+
+
+ Base constructor.
+
+ The name of the signature algorithm to use.
+ The public key to be used in the verification operation.
+
+
+
+ Provider class which supports dynamic creation of signature verifiers.
+
+
+
+
+ Base constructor - specify the public key to be used in verification.
+
+ The public key to be used in creating verifiers provided by this object.
+
+
+
+ Allows enumeration of the signature names supported by the verifier provider.
+
+
+
+ Block cipher padders are expected to conform to this interface
+
+
+ Initialise the padder.
+
+ @param param parameters, if any required.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+ @exception InvalidCipherTextException if the padding is badly formed
+ or invalid.
+
+
+ A padder that adds ISO10126-2 padding to a block.
+
+
+ Initialise the padder.
+
+ @param random a SecureRandom if available.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds the padding according to the scheme referenced in
+ ISO 7814-4 - scheme 2 from ISO 9797-1. The first byte is 0x80, rest is 0x00
+
+
+ Initialise the padder.
+
+ @param random - a SecureRandom if available.
+
+
+ Return the name of the algorithm the padder implements.
+
+ @return the name of the algorithm the padder implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A wrapper class that allows block ciphers to be used to process data in
+ a piecemeal fashion with padding. The PaddedBufferedBlockCipher
+ outputs a block only when the buffer is full and more data is being added,
+ or on a doFinal (unless the current block in the buffer is a pad block).
+ The default padding mechanism used is the one outlined in Pkcs5/Pkcs7.
+
+
+ Create a buffered block cipher with the desired padding.
+
+ @param cipher the underlying block cipher this buffering object wraps.
+ @param padding the padding type.
+
+
+ Create a buffered block cipher Pkcs7 padding
+
+ @param cipher the underlying block cipher this buffering object wraps.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the minimum size of the output buffer required for an update
+ plus a doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer. If the buffer is currently
+ full and padding needs to be added a call to doFinal will produce
+ 2 * GetBlockSize() bytes.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output or we are decrypting and the input is not block size aligned.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+
+
+ A padder that adds Pkcs7/Pkcs5 padding to a block.
+
+
+ Initialise the padder.
+
+ @param random - a SecureRandom if available.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds Trailing-Bit-Compliment padding to a block.
+
+ This padding pads the block out compliment of the last bit
+ of the plain text.
+
+
+
+
+ Return the name of the algorithm the cipher implements.
+ the name of the algorithm the cipher implements.
+
+
+
+ Initialise the padder.
+ - a SecureRandom if available.
+
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+ Note: this assumes that the last block of plain text is always
+ passed to it inside in. i.e. if inOff is zero, indicating the
+ entire block is to be overwritten with padding the value of in
+ should be the same as the last block of plain text.
+
+
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds X9.23 padding to a block - if a SecureRandom is
+ passed in random padding is assumed, otherwise padding with zeros is used.
+
+
+ Initialise the padder.
+
+ @param random a SecureRandom if one is available.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds Null byte padding to a block.
+
+
+ Return the name of the algorithm the cipher implements.
+
+
+ the name of the algorithm the cipher implements.
+
+
+
+ Initialise the padder.
+
+
+ - a SecureRandom if available.
+
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+
+ return the number of pad bytes present in the block.
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+ @param associatedText associated text, if any
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+ @param associatedText associated text, if any
+
+
+ The minimum bitlength of the private value.
+
+
+ The bitlength of the private value.
+
+
+ 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.
+
+
+ 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.
+
+
+ return true if the passed in key is a DES-EDE weak key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+ @param length number of bytes making up the key
+
+
+ return true if the passed in key is a DES-EDE weak key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 2/3 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 2 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 3 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ DES has 16 weak keys. This method will check
+ if the given DES key material is weak or semi-weak.
+ Key material that is too short is regarded as weak.
+
+ See "Applied
+ Cryptography" by Bruce Schneier for more information.
+
+ @return true if the given DES key material is weak or semi-weak,
+ false otherwise.
+
+
+ DES Keys use the LSB as the odd parity bit. This can
+ be used to check for corrupt keys.
+
+ @param bytes the byte array to set the parity on.
+
+
+ return the generator - g
+
+
+ return private value limit - l
+
+
+ parameters for Key derivation functions for ISO-18033
+
+
+ parameters for using an integrated cipher in stream mode.
+
+
+ @param derivation the derivation parameter for the KDF function.
+ @param encoding the encoding parameter for the KDF function.
+ @param macKeySize the size of the MAC key (in bits).
+
+
+ @param derivation the derivation parameter for the KDF function.
+ @param encoding the encoding parameter for the KDF function.
+ @param macKeySize the size of the MAC key (in bits).
+ @param cipherKeySize the size of the associated Cipher key (in bits).
+
+
+ parameters for Key derivation functions for IEEE P1363a
+
+
+ Parameters for mask derivation functions.
+
+
+ Parameters for NaccacheStern public private key generation. For details on
+ this cipher, please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Parameters for generating a NaccacheStern KeyPair.
+
+ @param random
+ The source of randomness
+ @param strength
+ The desired strength of the Key in Bits
+ @param certainty
+ the probability that the generated primes are not really prime
+ as integer: 2^(-certainty) is then the probability
+ @param countSmallPrimes
+ How many small key factors are desired
+
+
+ * Parameters for a NaccacheStern KeyPair.
+ *
+ * @param random
+ * The source of randomness
+ * @param strength
+ * The desired strength of the Key in Bits
+ * @param certainty
+ * the probability that the generated primes are not really prime
+ * as integer: 2^(-certainty) is then the probability
+ * @param cntSmallPrimes
+ * How many small key factors are desired
+ * @param debug
+ * Ignored
+
+
+ @return Returns the certainty.
+
+
+ @return Returns the countSmallPrimes.
+
+
+ Public key parameters for NaccacheStern cipher. For details on this cipher,
+ please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ @param privateKey
+
+
+ @return Returns the g.
+
+
+ @return Returns the lowerSigmaBound.
+
+
+ @return Returns the n.
+
+
+ Private key parameters for NaccacheStern cipher. For details on this cipher,
+ please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Constructs a NaccacheSternPrivateKey
+
+ @param g
+ the public enryption parameter g
+ @param n
+ the public modulus n = p*q
+ @param lowerSigmaBound
+ the public lower sigma bound up to which data can be encrypted
+ @param smallPrimes
+ the small primes, of which sigma is constructed in the right
+ order
+ @param phi_n
+ the private modulus phi(n) = (p-1)(q-1)
+
+
+ Cipher parameters with a fixed salt value associated with them.
+
+
+
+ Parameters for the Skein hash function - a series of byte[] strings identified by integer tags.
+
+
+ Parameterised Skein can be used for:
+
+ - MAC generation, by providing a key.
+ - Randomised hashing, by providing a nonce.
+ - A hash function for digital signatures, associating a
+ public key with the message digest.
+ - A key derivation function, by providing a
+ key identifier.
+ - Personalised hashing, by providing a
+ recommended format or
+ arbitrary personalisation string.
+
+
+
+
+
+
+
+
+ The parameter type for a secret key, supporting MAC or KDF functions: 0
+
+
+
+
+ The parameter type for the Skein configuration block: 4
+
+
+
+
+ The parameter type for a personalisation string: 8
+
+
+
+
+ The parameter type for a public key: 12
+
+
+
+
+ The parameter type for a key identifier string: 16
+
+
+
+
+ The parameter type for a nonce: 20
+
+
+
+
+ The parameter type for the message: 48
+
+
+
+
+ The parameter type for the output transformation: 63
+
+
+
+
+ Obtains a map of type (int) to value (byte[]) for the parameters tracked in this object.
+
+
+
+
+ Obtains the value of the key parameter, or null
if not
+ set.
+
+ The key.
+
+
+
+ Obtains the value of the personalisation parameter, or
+ null
if not set.
+
+
+
+
+ Obtains the value of the public key parameter, or
+ null
if not set.
+
+
+
+
+ Obtains the value of the key identifier parameter, or
+ null
if not set.
+
+
+
+
+ Obtains the value of the nonce parameter, or null
if
+ not set.
+
+
+
+
+ A builder for .
+
+
+
+
+ Sets a parameters to apply to the Skein hash function.
+
+
+ Parameter types must be in the range 0,5..62, and cannot use the value 48
+ (reserved for message body).
+
+ Parameters with type < 48 are processed before
+ the message content, parameters with type > 48
+ are processed after the message and prior to output.
+
+ the type of the parameter, in the range 5..62.
+ the byte sequence of the parameter.
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Implements the recommended personalisation format for Skein defined in Section 4.11 of
+ the Skein 1.3 specification.
+
+
+ The format is YYYYMMDD email@address distinguisher
, encoded to a byte
+ sequence using UTF-8 encoding.
+
+ the date the personalised application of the Skein was defined.
+ the email address of the creation of the personalised application.
+ an arbitrary personalisation string distinguishing the application.
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Constructs a new instance with the parameters provided to this
+ builder.
+
+
+
+
+ Parameters for tweakable block ciphers.
+
+
+
+
+ Gets the key.
+
+ the key to use, or null
to use the current key.
+
+
+
+ Gets the tweak value.
+
+ The tweak to use, or null
to use the current tweak.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ true if the internal state represents the signature described in the passed in array.
+
+
+ Reset the internal state
+
+
+ The Digital Signature Algorithm - as described in "Handbook of Applied
+ Cryptography", pages 452 - 453.
+
+
+ Default configuration, random K values.
+
+
+ Configuration with an alternate, possibly deterministic calculator of K.
+
+ @param kCalculator a K value calculator.
+
+
+ Generate a signature for the given message using the key we were
+ initialised with. For conventional DSA the message should be a SHA-1
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a DSA signature for
+ the passed in message for standard DSA the message should be a
+ SHA-1 hash of the real message to be verified.
+
+
+ EC-DSA as described in X9.62
+
+
+ Default configuration, random K values.
+
+
+ Configuration with an alternate, possibly deterministic calculator of K.
+
+ @param kCalculator a K value calculator.
+
+
+ Generate a signature for the given message using the key we were
+ initialised with. For conventional DSA the message should be a SHA-1
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a DSA signature for
+ the passed in message (for standard DSA the message should be
+ a SHA-1 hash of the real message to be verified).
+
+
+ GOST R 34.10-2001 Signature Algorithm
+
+
+ generate a signature for the given message using the key we were
+ initialised with. For conventional GOST3410 the message should be a GOST3411
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a GOST3410 signature for
+ the passed in message (for standard GOST3410 the message should be
+ a GOST3411 hash of the real message to be verified).
+
+
+ EC-NR as described in IEEE 1363-2000
+
+
+ generate a signature for the given message using the key we were
+ initialised with. Generally, the order of the curve should be at
+ least as long as the hash of the message of interest, and with
+ ECNR it *must* be at least as long.
+
+ @param digest the digest to be signed.
+ @exception DataLengthException if the digest is longer than the key allows
+
+
+ return true if the value r and s represent a signature for the
+ message passed in. Generally, the order of the curve should be at
+ least as long as the hash of the message of interest, and with
+ ECNR, it *must* be at least as long. But just in case the signer
+ applied mod(n) to the longer digest, this implementation will
+ apply mod(n) during verification.
+
+ @param digest the digest to be verified.
+ @param r the r value of the signature.
+ @param s the s value of the signature.
+ @exception DataLengthException if the digest is longer than the key allows
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ true if the internal state represents the signature described in the passed in array.
+
+
+ Reset the internal state
+
+
+ Gost R 34.10-94 Signature Algorithm
+
+
+ generate a signature for the given message using the key we were
+ initialised with. For conventional Gost3410 the message should be a Gost3411
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a Gost3410 signature for
+ the passed in message for standard Gost3410 the message should be a
+ Gost3411 hash of the real message to be verified.
+
+
+ initialise the signer for signing or verification.
+
+ @param forSigning
+ true if for signing, false otherwise
+ @param parameters
+ necessary parameters.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using the key
+ we were initialised with.
+
+
+ return true if the internal state represents the signature described in
+ the passed in array.
+
+
+ A deterministic K calculator based on the algorithm in section 3.2 of RFC 6979.
+
+
+ Base constructor.
+
+ @param digest digest to build the HMAC on.
+
+
+ Interface define calculators of K values for DSA/ECDSA.
+
+
+ Return true if this calculator is deterministic, false otherwise.
+
+ @return true if deterministic, otherwise false.
+
+
+ Non-deterministic initialiser.
+
+ @param n the order of the DSA group.
+ @param random a source of randomness.
+
+
+ Deterministic initialiser.
+
+ @param n the order of the DSA group.
+ @param d the DSA private value.
+ @param message the message being signed.
+
+
+ Return the next valid value of K.
+
+ @return a K value.
+
+
+ ISO9796-2 - mechanism using a hash function with recovery (scheme 2 and 3).
+
+ Note: the usual length for the salt is the length of the hash
+ function used in bytes.
+
+
+
+
+ Return a reference to the recoveredMessage message.
+
+ The full/partial recoveredMessage message.
+
+
+
+
+ Generate a signer with either implicit or explicit trailers for ISO9796-2, scheme 2 or 3.
+
+ base cipher to use for signature creation/verification
+ digest to use.
+ length of salt in bytes.
+ whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+
+ cipher to use.
+
+ digest to sign with.
+
+ length of salt in bytes.
+
+
+
+ Initialise the signer.
+ true if for signing, false if for verification.
+ parameters for signature generation/verification. If the
+ parameters are for generation they should be a ParametersWithRandom,
+ a ParametersWithSalt, or just an RsaKeyParameters object. If RsaKeyParameters
+ are passed in a SecureRandom will be created.
+
+ if wrong parameter type or a fixed
+ salt is passed in which is the wrong length.
+
+
+
+ compare two byte arrays - constant time.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ Generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+
+ Return true if the full message was recoveredMessage.
+
+ true on full message recovery, false otherwise, or if not sure.
+
+
+
+ int to octet string.
+ int to octet string.
+
+
+ long to octet string.
+
+
+ mask generator function, as described in Pkcs1v2.
+
+
+ ISO9796-2 - mechanism using a hash function with recovery (scheme 1)
+
+
+
+ Return a reference to the recoveredMessage message.
+
+ The full/partial recoveredMessage message.
+
+
+
+
+ Generate a signer with either implicit or explicit trailers for ISO9796-2.
+
+ base cipher to use for signature creation/verification
+ digest to use.
+ whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+
+ cipher to use.
+
+ digest to sign with.
+
+
+
+ compare two byte arrays - constant time.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ Generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+
+ Return true if the full message was recoveredMessage.
+
+ true on full message recovery, false otherwise.
+
+
+
+ RSA-PSS as described in Pkcs# 1 v 2.1.
+
+ Note: the usual value for the salt length is the number of
+ bytes in the hash function.
+
+
+
+ Basic constructor
+ the asymmetric cipher to use.
+ the digest to use.
+ the length of the salt to use (in bytes).
+
+
+ Basic constructor
+ the asymmetric cipher to use.
+ the digest to use.
+ the fixed salt to be used.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+
+ return true if the internal state represents the signature described
+ in the passed in array.
+
+
+
+ int to octet string.
+
+
+ mask generator function, as described in Pkcs1v2.
+
+
+
+ Load oid table.
+
+
+
+ Initialise the signer for signing or verification.
+
+ @param forSigning true if for signing, false otherwise
+ @param param necessary parameters.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ return true if the internal state represents the signature described
+ in the passed in array.
+
+
+ X9.31-1998 - signing using a hash.
+
+ The message digest hash, H, is encapsulated to form a byte string as follows
+
+
+ EB = 06 || PS || 0xBA || H || TRAILER
+
+ where PS is a string of bytes all of value 0xBB of length such that |EB|=|n|, and TRAILER is the ISO/IEC 10118 part number†for the digest. The byte string, EB, is converted to an integer value, the message representative, f.
+
+
+ Generate a signer with either implicit or explicit trailers for X9.31.
+
+ @param cipher base cipher to use for signature creation/verification
+ @param digest digest to use.
+ @param implicit whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+ @param cipher cipher to use.
+ @param digest digest to sign with.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 5246 7.2
+
+
+
+ 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.
+
+
+ An inappropriate message was received. This alert is always fatal and should never be
+ observed in communication between proper implementations.
+
+
+ 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).
+
+
+ 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.
+
+
+ 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).
+
+
+ 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.
+
+
+ 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.
+
+
+ This alert was used in SSLv3 but not any version of TLS. It MUST NOT be sent by compliant
+ implementations.
+
+
+ A certificate was corrupt, contained signatures that did not verify correctly, etc.
+
+
+ A certificate was of an unsupported type.
+
+
+ A certificate was revoked by its signer.
+
+
+ A certificate has expired or is not currently valid.
+
+
+ Some other (unspecified) issue arose in processing the certificate, rendering it
+ unacceptable.
+
+
+ A field in the handshake was out of range or inconsistent with other fields. This message is
+ always fatal.
+
+
+ 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.
+
+
+ A valid certificate was received, but when access control was applied, the sender decided not
+ to proceed with negotiation. This message is always fatal.
+
+
+ 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).
+
+
+ A handshake cryptographic operation failed, including being unable to correctly verify a
+ signature or validate a Finished message. This message is always fatal.
+
+
+ This alert was used in some earlier versions of TLS. It MUST NOT be sent by compliant
+ implementations.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ This alert is sent by clients that receive an invalid certificate status response (see
+ Section 3.6). This message is always fatal.
+
+
+ This alert is sent by servers when a certificate hash does not match a client provided
+ certificate_hash. This message is always fatal.
+
+
+ If the server does not recognize the PSK identity, it MAY respond with an
+ "unknown_psk_identity" alert message.
+
+
+ If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the highest protocol version
+ supported by the server is higher than the version indicated in ClientHello.client_version,
+ the server MUST respond with an inappropriate_fallback alert.
+
+
+
+ RFC 5246 7.2
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+
+ A queue for bytes.
+
+ This file could be more optimized.
+
+
+
+
+ The smallest number which can be written as 2^x which is bigger than i.
+
+
+ The initial size for our buffer.
+
+
+ The buffer where we store our data.
+
+
+ How many bytes at the beginning of the buffer are skipped.
+
+
+ How many bytes in the buffer are valid data.
+
+
+ Read data from the buffer.
+ The buffer where the read data will be copied to.
+ How many bytes to skip at the beginning of buf.
+ How many bytes to read at all.
+ How many bytes from our data to skip.
+
+
+ Add some data to our buffer.
+ A byte-array to read data from.
+ How many bytes to skip at the beginning of the array.
+ How many bytes to read from the array.
+
+
+ Remove some bytes from our data from the beginning.
+ How many bytes to remove.
+
+
+ The number of bytes which are available in this buffer.
+
+
+ Parsing and encoding of a Certificate struct from RFC 4346.
+
+
+ opaque ASN.1Cert<2^24-1>;
+
+ struct {
+ ASN.1Cert certificate_list<0..2^24-1>;
+ } Certificate;
+
+
+ @see Org.BouncyCastle.Asn1.X509.X509CertificateStructure
+
+
+ The certificates.
+
+
+ @return an array of {@link org.bouncycastle.asn1.x509.Certificate} representing a certificate
+ chain.
+
+
+ @return true
if this certificate chain contains no certificates, or
+ false
otherwise.
+
+
+ Encode this {@link Certificate} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link Certificate} from a {@link Stream}.
+
+ @param input the {@link Stream} to parse from.
+ @return a {@link Certificate} object.
+ @throws IOException
+
+
+ Parsing and encoding of a CertificateRequest struct from RFC 4346.
+
+
+ struct {
+ ClientCertificateType certificate_types<1..2^8-1>;
+ DistinguishedName certificate_authorities<3..2^16-1>
+ } CertificateRequest;
+
+
+ @see ClientCertificateType
+ @see X509Name
+
+
+ @param certificateTypes see {@link ClientCertificateType} for valid constants.
+ @param certificateAuthorities an {@link IList} of {@link X509Name}.
+
+
+ @return an array of certificate types
+ @see {@link ClientCertificateType}
+
+
+ @return an {@link IList} of {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
+
+
+ @return an {@link IList} of {@link X509Name}
+
+
+ Encode this {@link CertificateRequest} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link CertificateRequest} from a {@link Stream}.
+
+ @param context
+ the {@link TlsContext} of the current connection.
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link CertificateRequest} object.
+ @throws IOException
+
+
+ Encode this {@link CertificateStatus} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link CertificateStatus} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link CertificateStatus} object.
+ @throws IOException
+
+
+ Encode this {@link CertificateStatusRequest} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link CertificateStatusRequest} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link CertificateStatusRequest} object.
+ @throws IOException
+
+
+ @param type
+ see {@link CertChainType} for valid constants.
+ @param urlAndHashList
+ a {@link IList} of {@link UrlAndHash}.
+
+
+ @return {@link CertChainType}
+
+
+ @return an {@link IList} of {@link UrlAndHash}
+
+
+ Encode this {@link CertificateUrl} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 2246 A.5
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ A combined hash, which implements md5(m) || sha1(m).
+
+
+ @see org.bouncycastle.crypto.Digest#update(byte[], int, int)
+
+
+ @see org.bouncycastle.crypto.Digest#doFinal(byte[], int)
+
+
+ @see org.bouncycastle.crypto.Digest#reset()
+
+
+
+ RFC 2246 6.1
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ RFC 2246 6.2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Accept only the group parameters specified in RFC 5054 Appendix A.
+
+
+ Specify a custom set of acceptable group parameters.
+
+ @param groups a {@link Vector} of acceptable {@link SRP6GroupParameters}
+
+
+ Buffers input until the hash algorithm is determined.
+
+
+ @return a {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
+
+
+ Encode this {@link DigitallySigned} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check that there are no "extra" messages left in the current inbound flight
+
+
+ RFC 4347 4.1.2.5 Anti-replay
+
+ Support fast rejection of duplicate records by maintaining a sliding receive window
+
+
+ Check whether a received record with the given sequence number should be rejected as a duplicate.
+
+ @param seq the 48-bit DTLSPlainText.sequence_number field of a received record.
+ @return true if the record should be discarded without further processing.
+
+
+ Report that a received record with the given sequence number passed authentication checks.
+
+ @param seq the 48-bit DTLSPlainText.sequence_number field of an authenticated record.
+
+
+ When a new epoch begins, sequence numbers begin again at 0
+
+
+ RFC 4492 5.4. (Errata ID: 2389)
+
+
+
+ RFC 4492 5.4
+
+
+
+ Indicates the elliptic curve domain parameters are conveyed verbosely, and the
+ underlying finite field is a prime field.
+
+
+ Indicates the elliptic curve domain parameters are conveyed verbosely, and the
+ underlying finite field is a characteristic-2 field.
+
+
+ Indicates that a named curve is used. This option SHOULD be used when applicable.
+
+
+
+ RFC 4492 5.1.2
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ RFC 5705
+
+
+ RFC 5246 7.4.1.4.1
+
+
+ Encode this {@link HeartbeatExtension} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link HeartbeatExtension} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link HeartbeatExtension} object.
+ @throws IOException
+
+
+ Encode this {@link HeartbeatMessage} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link HeartbeatMessage} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link HeartbeatMessage} object.
+ @throws IOException
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+
+ 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).
+
+
+
+ Encode this {@link NewSessionTicket} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link NewSessionTicket} from a {@link Stream}.
+
+ @param input the {@link Stream} to parse from.
+ @return a {@link NewSessionTicket} object.
+ @throws IOException
+
+
+ RFC 3546 3.6
+
+
+ @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.
+
+
+ @return an {@link IList} of {@link ResponderID}
+
+
+ @return OCSP request extensions
+
+
+ Encode this {@link OcspStatusRequest} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link OcspStatusRequest} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return an {@link OcspStatusRequest} object.
+ @throws IOException
+
+
+ RFC 5246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+
+
+
+ An implementation of the TLS 1.0/1.1/1.2 record layer, allowing downgrade to SSLv3.
+
+
+ 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."
+
+
+ @return {@link ConnectionEnd}
+
+
+ @return {@link CipherSuite}
+
+
+ @return {@link CompressionMethod}
+
+
+ @return {@link PRFAlgorithm}
+
+
+ Encode this {@link ServerDHParams} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerDHParams} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link ServerDHParams} object.
+ @throws IOException
+
+
+ Encode this {@link ServerName} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerName} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link ServerName} object.
+ @throws IOException
+
+
+ @param serverNameList an {@link IList} of {@link ServerName}.
+
+
+ @return an {@link IList} of {@link ServerName}.
+
+
+ Encode this {@link ServerNameList} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerNameList} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link ServerNameList} object.
+ @throws IOException
+
+
+ Encode this {@link ServerSRPParams} to an {@link OutputStream}.
+
+ @param output
+ the {@link OutputStream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerSRPParams} from an {@link InputStream}.
+
+ @param input
+ the {@link InputStream} to parse from.
+ @return a {@link ServerSRPParams} object.
+ @throws IOException
+
+
+ RFC 5246 7.4.1.4.1 (in RFC 2246, there were no specific values assigned)
+
+
+ RFC 5246 7.4.1.4.1
+
+
+ @param hash {@link HashAlgorithm}
+ @param signature {@link SignatureAlgorithm}
+
+
+ @return {@link HashAlgorithm}
+
+
+ @return {@link SignatureAlgorithm}
+
+
+ Encode this {@link SignatureAndHashAlgorithm} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link SignatureAndHashAlgorithm} from a {@link Stream}.
+
+ @param input the {@link Stream} to parse from.
+ @return a {@link SignatureAndHashAlgorithm} object.
+ @throws IOException
+
+
+ An implementation of {@link TlsSRPIdentityManager} that simulates the existence of "unknown" identities
+ to obscure the fact that there is no verifier for them.
+
+
+ Create a {@link SimulatedTlsSRPIdentityManager} that implements the algorithm from RFC 5054 2.5.1.3
+
+ @param group the {@link SRP6GroupParameters} defining the group that SRP is operating in
+ @param seedKey the secret "seed key" referred to in RFC 5054 2.5.1.3
+ @return an instance of {@link SimulatedTlsSRPIdentityManager}
+
+
+ HMAC implementation based on original internet draft for HMAC (RFC 2104)
+
+ The difference is that padding is concatentated versus XORed with the key
+
+ H(K + opad, H(K + ipad, text))
+
+
+ Base constructor for one of the standard digest algorithms that the byteLength of
+ the algorithm is know for. Behaviour is undefined for digests other than MD5 or SHA1.
+
+ @param digest the digest.
+
+
+ Reset the mac generator.
+
+
+ RFC 4680
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Called by the protocol handler to report the server certificate.
+
+
+ This method is responsible for certificate verification and validation
+
+ The server received
+
+
+
+
+ Return client credentials in response to server's certificate request
+
+
+ A containing server certificate request details
+
+
+ A to be used for client authentication
+ (or null for no client authentication)
+
+
+
+
+
+ A generic TLS 1.0-1.2 / SSLv3 block cipher. This can be used for AES or 3DES for example.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Called at the start of a new TLS session, before any other methods.
+
+
+ A
+
+
+
+ Return the session this client wants to resume, if any.
+ Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.
+
+ A representing the resumable session to be used for this connection,
+ or null to use a new session.
+
+
+
+
+ Return the to use for the TLSPlaintext.version field prior to
+ receiving the server version. NOTE: This method is not called for DTLS.
+
+
+ See 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."
+
+ The to use.
+
+
+
+ Get the list of cipher suites that this client supports.
+
+
+ An array of values, each specifying a supported cipher suite.
+
+
+
+
+ Get the list of compression methods that this client supports.
+
+
+ An array of values, each specifying a supported compression method.
+
+
+
+
+ Get the (optional) table of client extensions to be included in (extended) client hello.
+
+
+ A (Int32 -> byte[]). May be null.
+
+
+
+
+
+
+
+
+ Notifies the client of the session_id sent in the ServerHello.
+
+ An array of
+
+
+
+ Report the cipher suite that was selected by the server.
+
+
+ The protocol handler validates this value against the offered cipher suites
+
+
+
+ A
+
+
+
+
+ Report the compression method that was selected by the server.
+
+
+ The protocol handler validates this value against the offered compression methods
+
+
+
+ A
+
+
+
+
+ Report the extensions from an extended server hello.
+
+
+ Will only be called if we returned a non-null result from .
+
+
+ A (Int32 -> byte[])
+
+
+
+ A list of
+
+
+
+
+ Return an implementation of to negotiate the key exchange
+ part of the protocol.
+
+
+ A
+
+
+
+
+
+ Return an implementation of to handle authentication
+ part of the protocol.
+
+
+
+
+ A list of
+
+
+
+ RFC 5077 3.3. NewSessionTicket Handshake Message
+
+ 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. RFC 5077 4. Recommended Ticket Construction.
+
+ The ticket
+
+
+
+ Constructor for blocking mode.
+ @param stream The bi-directional stream of data to/from the server
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for blocking mode.
+ @param input The stream of data from the server
+ @param output The stream of data to the server
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for non-blocking mode.
+
+ When data is received, use {@link #offerInput(java.nio.ByteBuffer)} to
+ provide the received ciphertext, then use
+ {@link #readInput(byte[], int, int)} to read the corresponding cleartext.
+
+ Similarly, when data needs to be sent, use
+ {@link #offerOutput(byte[], int, int)} to provide the cleartext, then use
+ {@link #readOutput(byte[], int, int)} to get the corresponding
+ ciphertext.
+
+ @param secureRandom
+ Random number generator for various cryptographic functions
+
+
+ Initiates a TLS handshake in the role of client.
+
+ In blocking mode, this will not return until the handshake is complete.
+ In non-blocking mode, use {@link TlsPeer#NotifyHandshakeComplete()} to
+ receive a callback when the handshake is complete.
+
+ @param tlsClient The {@link TlsClient} to use for the handshake.
+ @throws IOException If in blocking mode and handshake was not successful.
+
+
+ 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()
+
+
+ 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.
+
+
+ (D)TLS DH key exchange.
+
+
+ (D)TLS ECDH key exchange (see RFC 4492).
+
+
+ (D)TLS ECDHE key exchange (see RFC 4492).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A generic interface for key exchange implementations in (D)TLS.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A generic TLS MAC implementation, acting as an HMAC based on some underlying Digest.
+
+
+
+ Generate a new instance of an TlsMac.
+
+ @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.
+
+
+ @return the MAC write secret
+
+
+ @return The output length of this MAC.
+
+
+ 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 length The length of the message.
+ @return A new byte-buffer containing the MAC value.
+
+
+
+ A NULL CipherSuite, with optional MAC.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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."
+
+
+ true
if the current time should be used in the gmt_unix_time field of
+ Random, or false
if gmt_unix_time should contain a cryptographically
+ random value.
+
+
+
+
+ Report whether the server supports secure renegotiation
+
+
+ The protocol handler automatically processes the relevant extensions
+
+
+ A , true if the server supports secure renegotiation
+
+
+
+
+
+ Return an implementation of to handle record compression.
+
+ A
+
+
+
+
+ Return an implementation of to use for encryption/decryption.
+
+ A
+
+
+
+ This method will be called when an alert is raised by the protocol.
+
+
+ A human-readable message explaining what caused this alert. May be null.
+ The Exception that caused this alert to be raised. May be null.
+
+
+ This method will be called when an alert is received from the remote peer.
+
+
+
+
+ Notifies the peer that the handshake has been successfully completed.
+
+
+
+ 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.
+
+
+ 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.
+
+
+ Send some application data to the remote system.
+
+ 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.
+
+
+ The secure bidirectional stream for this connection
+ Only allowed in blocking mode.
+
+
+ Offer input from an arbitrary source. Only allowed in non-blocking mode.
+
+ After this method returns, the input buffer is "owned" by this object. Other code
+ must not attempt to do anything with it.
+
+ This method will decrypt and process all records that are fully available.
+ If only part of a record is available, the buffer will be retained until the
+ remainder of the record is offered.
+
+ If any records containing application data were processed, the decrypted data
+ can be obtained using {@link #readInput(byte[], int, int)}. If any records
+ containing protocol data were processed, a response may have been generated.
+ You should always check to see if there is any available output after calling
+ this method by calling {@link #getAvailableOutputBytes()}.
+ @param input The input buffer to offer
+ @throws IOException If an error occurs while decrypting or processing a record
+
+
+ Gets the amount of received application data. A call to {@link #readInput(byte[], int, int)}
+ is guaranteed to be able to return at least this much data.
+
+ Only allowed in non-blocking mode.
+ @return The number of bytes of available application data
+
+
+ Retrieves received application data. Use {@link #getAvailableInputBytes()} to check
+ how much application data is currently available. This method functions similarly to
+ {@link InputStream#read(byte[], int, int)}, except that it never blocks. If no data
+ is available, nothing will be copied and zero will be returned.
+
+ Only allowed in non-blocking mode.
+ @param buffer The buffer to hold the application data
+ @param offset The start offset in the buffer at which the data is written
+ @param length The maximum number of bytes to read
+ @return The total number of bytes copied to the buffer. May be less than the
+ length specified if the length was greater than the amount of available data.
+
+
+ Offer output from an arbitrary source. Only allowed in non-blocking mode.
+
+ After this method returns, the specified section of the buffer will have been
+ processed. Use {@link #readOutput(byte[], int, int)} to get the bytes to
+ transmit to the other peer.
+
+ This method must not be called until after the handshake is complete! Attempting
+ to call it before the handshake is complete will result in an exception.
+ @param buffer The buffer containing application data to encrypt
+ @param offset The offset at which to begin reading data
+ @param length The number of bytes of data to read
+ @throws IOException If an error occurs encrypting the data, or the handshake is not complete
+
+
+ Gets the amount of encrypted data available to be sent. A call to
+ {@link #readOutput(byte[], int, int)} is guaranteed to be able to return at
+ least this much data.
+
+ Only allowed in non-blocking mode.
+ @return The number of bytes of available encrypted data
+
+
+ Retrieves encrypted data to be sent. Use {@link #getAvailableOutputBytes()} to check
+ how much encrypted data is currently available. This method functions similarly to
+ {@link InputStream#read(byte[], int, int)}, except that it never blocks. If no data
+ is available, nothing will be copied and zero will be returned.
+
+ Only allowed in non-blocking mode.
+ @param buffer The buffer to hold the encrypted data
+ @param offset The start offset in the buffer at which the data is written
+ @param length The maximum number of bytes to read
+ @return The total number of bytes copied to the buffer. May be less than the
+ length specified if the length was greater than the amount of available data.
+
+
+ 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.
+
+
+ Closes this connection.
+
+ @throws IOException If something goes wrong during closing.
+
+
+ Make sure the InputStream 'buf' now empty. Fail otherwise.
+
+ @param buf The InputStream to check.
+ @throws IOException If 'buf' is not empty.
+
+
+ 'sender' only relevant to SSLv3
+
+
+ Both streams can be the same object
+
+
+ (D)TLS PSK key exchange (RFC 4279).
+
+
+ (D)TLS and SSLv3 RSA key exchange.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A (Int32 -> byte[]). Will never be null.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get the (optional) table of server extensions to be included in (extended) server hello.
+
+
+ A (Int32 -> byte[]). May be null.
+
+
+
+
+
+ A (). May be null.
+
+
+
+
+
+
+
+
+ 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 RFC 3546
+ 3.6. Certificate Status Request. If a non-null is returned, it
+ is sent to the client as a handshake message of type "certificate_status".
+
+ A to be sent to the client (or null for none).
+
+
+
+
+
+
+
+
+
+ ()
+
+
+
+
+ Called by the protocol handler to report the client certificate, only if GetCertificateRequest
+ returned non-null.
+
+ Note: this method is responsible for certificate verification and validation.
+ the effective client certificate (may be an empty chain).
+
+
+
+ RFC 5077 3.3. NewSessionTicket Handshake Message.
+
+ This method will be called (only) if a NewSessionTicket extension was sent by the server. See
+ RFC 5077 4. Recommended Ticket Construction for recommended format and protection.
+
+ The ticket)
+
+
+
+ Constructor for blocking mode.
+ @param stream The bi-directional stream of data to/from the client
+ @param output The stream of data to the client
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for blocking mode.
+ @param input The stream of data from the client
+ @param output The stream of data to the client
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for non-blocking mode.
+
+ When data is received, use {@link #offerInput(java.nio.ByteBuffer)} to
+ provide the received ciphertext, then use
+ {@link #readInput(byte[], int, int)} to read the corresponding cleartext.
+
+ Similarly, when data needs to be sent, use
+ {@link #offerOutput(byte[], int, int)} to provide the cleartext, then use
+ {@link #readOutput(byte[], int, int)} to get the corresponding
+ ciphertext.
+
+ @param secureRandom
+ Random number generator for various cryptographic functions
+
+
+ Receives a TLS handshake in the role of server.
+
+ In blocking mode, this will not return until the handshake is complete.
+ In non-blocking mode, use {@link TlsPeer#notifyHandshakeComplete()} to
+ receive a callback when the handshake is complete.
+
+ @param tlsServer
+ @throws IOException If in blocking mode and handshake was not successful.
+
+
+
+
+
+ Check whether the given SRP group parameters are acceptable for use.
+
+ @param group the {@link SRP6GroupParameters} to check
+ @return true if (and only if) the specified group parameters are acceptable
+
+
+ Lookup the {@link TlsSRPLoginParameters} corresponding to the specified identity.
+
+ NOTE: To avoid "identity probing", unknown identities SHOULD be handled as recommended in RFC
+ 5054 2.5.1.3. {@link SimulatedTlsSRPIdentityManager} is provided for this purpose.
+
+ @param identity
+ the SRP identity sent by the connecting client
+ @return the {@link TlsSRPLoginParameters} for the specified identity, or else 'simulated'
+ parameters if the identity is not recognized. A null value is also allowed, but not
+ recommended.
+
+
+ (D)TLS SRP key exchange (RFC 5054).
+
+
+ RFC 5764 DTLS Extension to Establish Keys for SRTP.
+
+
+
+
+
+
+
+
+
+
+
+ Some helper functions for MicroTLS.
+
+
+ Add a 'signature_algorithms' extension to existing extensions.
+
+ @param extensions A {@link Hashtable} to add the extension to.
+ @param supportedSignatureAlgorithms {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+ @throws IOException
+
+
+ Get a 'signature_algorithms' extension from extensions.
+
+ @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
+
+
+ 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
+
+
+ Read 'signature_algorithms' extension data.
+
+ @param extensionData The extension data.
+ @return A {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+ @throws IOException
+
+
+ RFC 6066 5.
+
+
+ Encode this {@link UrlAndHash} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ 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
+
+
+ RFC 5764 4.1.1
+
+
+ @param protectionProfiles see {@link SrtpProtectionProfile} for valid constants.
+ @param mki valid lengths from 0 to 255.
+
+
+ @return see {@link SrtpProtectionProfile} for valid constants.
+
+
+ @return valid lengths from 0 to 255.
+
+
+ RFC 4681
+
+
+ return a = a + b - b preserved.
+
+
+ unsigned comparison on two arrays - note the arrays may
+ start with leading zeros.
+
+
+ return z = x / y - done in place (z value preserved, x contains the
+ remainder)
+
+
+ return whether or not a BigInteger is probably prime with a
+ probability of 1 - (1/2)**certainty.
+ From Knuth Vol 2, pg 395.
+
+
+ Calculate the numbers u1, u2, and u3 such that:
+
+ u1 * a + u2 * b = u3
+
+ where u3 is the greatest common divider of a and b.
+ a and b using the extended Euclid algorithm (refer p. 323
+ of The Art of Computer Programming vol 2, 2nd ed).
+ This also seems to have the side effect of calculating
+ some form of multiplicative inverse.
+
+ @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
+ @return The greatest common divisor of a and b
+
+
+ return w with w = x * x - w is assumed to have enough space.
+
+
+ return x with x = y * z - x is assumed to have enough space.
+
+
+ Calculate mQuote = -m^(-1) mod b with b = 2^32 (32 = word size)
+
+
+ Montgomery multiplication: a = x * y * R^(-1) mod m
+
+ Based algorithm 14.36 of Handbook of Applied Cryptography.
+
+ m, x, y should have length n
+ a should have length (n + 1)
+ b = 2^32, R = b^n
+
+ The result is put in x
+
+ NOTE: the indices of x, y, m, a different in HAC and in Java
+
+
+ return x = x % y - done in place (y value preserved)
+
+
+ do a left shift - this returns a new array.
+
+
+ do a right shift - this does it in place.
+
+
+ do a right shift by one - this does it in place.
+
+
+ returns x = x - y - we assume x is >= y
+
+
+ Utility methods for generating primes and testing for primality.
+
+
+ Used to return the output from the
+ {@linkplain Primes#enhancedMRProbablePrimeTest(BigInteger, SecureRandom, int) Enhanced
+ Miller-Rabin Probabilistic Primality Test}
+
+
+ Used to return the output from the {@linkplain Primes#generateSTRandomPrime(Digest, int, byte[]) Shawe-Taylor Random_Prime Routine}
+
+
+ FIPS 186-4 C.6 Shawe-Taylor Random_Prime Routine
+
+ Construct a provable prime number using a hash function.
+
+ @param hash
+ the {@link Digest} instance to use (as "Hash()"). Cannot be null.
+ @param length
+ the length (in bits) of the prime to be generated. Must be at least 2.
+ @param inputSeed
+ the seed to be used for the generation of the requested prime. Cannot be null or
+ empty.
+ @return an {@link STOutput} instance containing the requested prime.
+
+
+ FIPS 186-4 C.3.2 Enhanced Miller-Rabin Probabilistic Primality Test
+
+ Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases. This is an
+ alternative to {@link #isMRProbablePrime(BigInteger, SecureRandom, int)} that provides more
+ information about a composite candidate, which may be useful when generating or validating
+ RSA moduli.
+
+ @param candidate
+ the {@link BigInteger} instance to test for primality.
+ @param random
+ the source of randomness to use to choose bases.
+ @param iterations
+ the number of randomly-chosen bases to perform the test for.
+ @return an {@link MROutput} instance that can be further queried for details.
+
+
+ A fast check for small divisors, up to some implementation-specific limit.
+
+ @param candidate
+ the {@link BigInteger} instance to test for division by small factors.
+
+ @return true
if the candidate is found to have any small factors,
+ false
otherwise.
+
+
+ FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test
+
+ Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases.
+
+ @param candidate
+ the {@link BigInteger} instance to test for primality.
+ @param random
+ the source of randomness to use to choose bases.
+ @param iterations
+ the number of randomly-chosen bases to perform the test for.
+ @return false
if any witness to compositeness is found amongst the chosen bases
+ (so candidate
is definitely NOT prime), or else true
+ (indicating primality with some probability dependent on the number of iterations
+ that were performed).
+
+
+ FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test (to a fixed base).
+
+ Run a single iteration of the Miller-Rabin algorithm against the specified base.
+
+ @param candidate
+ the {@link BigInteger} instance to test for primality.
+ @param baseValue
+ the base value to use for this iteration.
+ @return false
if the specified base is a witness to compositeness (so
+ candidate
is definitely NOT prime), or else true
.
+
+
+ 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 kP
.
+
+
+ Base class for an elliptic curve.
+
+
+ Adds PreCompInfo
for a point on this curve, under a given name. Used by
+ ECMultiplier
s to save the precomputation for this ECPoint
for use
+ by subsequent multiplication.
+
+ @param point
+ The ECPoint
to store precomputations for.
+ @param name
+ A String
used to index precomputations of different types.
+ @param preCompInfo
+ The values precomputed by the ECMultiplier
.
+
+
+ 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
+
+
+ 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. An (optional) z-scaling factor can be applied; effectively
+ each z coordinate is scaled by this value prior to normalization (but only one
+ actual multiplication is needed).
+
+ @param points
+ An array of points that will be updated in place with their normalized versions,
+ where necessary
+ @param off
+ The start of the range of points to normalize
+ @param len
+ The length of the range of points to normalize
+ @param iso
+ The (optional) z-scaling factor - can be null
+
+
+ Sets the default ECMultiplier
, unless already set.
+
+
+ Decode a point on this curve from its ASN.1 encoding. The different
+ encodings are taken account of, including point compression for
+ Fp
(X9.62 s 4.2.1 pg 17).
+ @return The decoded point.
+
+
+ Elliptic curve over Fp
+
+
+ The auxiliary values s0
and
+ s1
used for partial modular reduction for
+ Koblitz curves.
+
+
+ Solves a quadratic equation z2 + z = beta
(X9.62
+ D.1.6) The other solution is z + 1
.
+
+ @param beta
+ The value to solve the qradratic equation for.
+ @return the solution for z2 + z = beta
or
+ null
if no solution exists.
+
+
+ @return the auxiliary values s0
and
+ s1
used for partial modular reduction for
+ Koblitz curves.
+
+
+ Returns true if this is a Koblitz curve (ABC curve).
+ @return true if this is a Koblitz curve (ABC curve), false otherwise
+
+
+ Elliptic curves over F2m. The Weierstrass equation is given by
+ y2 + xy = x3 + ax2 + b
.
+
+
+ The exponent m
of F2m
.
+
+
+ TPB: The integer k
where xm +
+ xk + 1
represents the reduction polynomial
+ f(z)
.
+ PPB: The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ TPB: Always set to 0
+ PPB: The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ TPB: Always set to 0
+ PPB: The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ The point at infinity on this curve.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n
.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n
.
+
+
+ Return true if curve uses a Trinomial basis.
+
+ @return true if curve Trinomial, false otherwise.
+
+
+ return the field name for this field.
+
+ @return the string "Fp".
+
+
+ return a sqrt root - the routine verifies that the calculation
+ returns the right value - if none exists it returns null.
+
+
+ Class representing the Elements of the finite field
+ F2m
in polynomial basis (PB)
+ representation. Both trinomial (Tpb) and pentanomial (Ppb) polynomial
+ basis representations are supported. Gaussian normal basis (GNB)
+ representation is not supported.
+
+
+ Indicates gaussian normal basis representation (GNB). Number chosen
+ according to X9.62. GNB is not implemented at present.
+
+
+ Indicates trinomial basis representation (Tpb). Number chosen
+ according to X9.62.
+
+
+ Indicates pentanomial basis representation (Ppb). Number chosen
+ according to X9.62.
+
+
+ Tpb or Ppb.
+
+
+ The exponent m
of F2m
.
+
+
+ The LongArray
holding the bits.
+
+
+ Constructor for Ppb.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param x The BigInteger representing the value of the field element.
+
+
+ Constructor for Tpb.
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param x The BigInteger representing the value of the field element.
+
+
+ Checks, if the ECFieldElements a
and b
+ are elements of the same field F2m
+ (having the same representation).
+ @param a field element.
+ @param b field element to be compared.
+ @throws ArgumentException if a
and b
+ are not elements of the same field
+ F2m
(having the same
+ representation).
+
+
+ @return the representation of the field
+ F2m
, either of
+ {@link F2mFieldElement.Tpb} (trinomial
+ basis representation) or
+ {@link F2mFieldElement.Ppb} (pentanomial
+ basis representation).
+
+
+ @return the degree m
of the reduction polynomial
+ f(z)
.
+
+
+ @return Tpb: The integer k
where xm +
+ xk + 1
represents the reduction polynomial
+ f(z)
.
+ Ppb: The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ @return Tpb: Always returns 0
+ Ppb: The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ @return Tpb: Always set to 0
+ Ppb: The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ base class for points on elliptic curves.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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
+
+
+ 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
+
+
+ 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
+
+
+ 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
+
+
+ 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
+
+
+ return the field element encoded with point compression. (S 4.3.6)
+
+
+ Multiplies this ECPoint
by the given number.
+ @param k The multiplicator.
+ @return k * this
.
+
+
+ Elliptic curve points over Fp
+
+
+ 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
+
+
+ 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
+
+
+ Elliptic curve points over F2m
+
+
+ @param curve base curve
+ @param x x point
+ @param y y point
+
+
+ @param curve base curve
+ @param x x point
+ @param y y point
+ @param withCompression true if encode with point compression.
+
+
+ Constructor for point at infinity
+
+
+ Class representing a simple version of a big decimal. A
+ SimpleBigDecimal
is basically a
+ {@link java.math.BigInteger BigInteger} with a few digits on the right of
+ the decimal point. The number of (binary) digits on the right of the decimal
+ point is called the scale
of the SimpleBigDecimal
.
+ Unlike in {@link java.math.BigDecimal BigDecimal}, the scale is not adjusted
+ automatically, but must be set manually. All SimpleBigDecimal
s
+ taking part in the same arithmetic operation must have equal scale. The
+ result of a multiplication of two SimpleBigDecimal
s returns a
+ SimpleBigDecimal
with double scale.
+
+
+ Returns a SimpleBigDecimal
representing the same numerical
+ value as value
.
+ @param value The value of the SimpleBigDecimal
to be
+ created.
+ @param scale The scale of the SimpleBigDecimal
to be
+ created.
+ @return The such created SimpleBigDecimal
.
+
+
+ Constructor for SimpleBigDecimal
. The value of the
+ constructed SimpleBigDecimal
Equals bigInt /
+ 2scale
.
+ @param bigInt The bigInt
value parameter.
+ @param scale The scale of the constructed SimpleBigDecimal
.
+
+
+ Class holding methods for point multiplication based on the window
+ τ-adic nonadjacent form (WTNAF). The algorithms are based on the
+ paper "Improved Algorithms for Arithmetic on Anomalous Binary Curves"
+ by Jerome A. Solinas. The paper first appeared in the Proceedings of
+ Crypto 1997.
+
+
+ The window width of WTNAF. The standard value of 4 is slightly less
+ than optimal for running time, but keeps space requirements for
+ precomputation low. For typical curves, a value of 5 or 6 results in
+ a better running time. When changing this value, the
+ αu
's must be computed differently, see
+ e.g. "Guide to Elliptic Curve Cryptography", Darrel Hankerson,
+ Alfred Menezes, Scott Vanstone, Springer-Verlag New York Inc., 2004,
+ p. 121-122
+
+
+ 24
+
+
+ The αu
's for a=0
as an array
+ of ZTauElement
s.
+
+
+ The αu
's for a=0
as an array
+ of TNAFs.
+
+
+ The αu
's for a=1
as an array
+ of ZTauElement
s.
+
+
+ The αu
's for a=1
as an array
+ of TNAFs.
+
+
+ Computes the norm of an element λ
of
+ Z[τ]
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return The norm of λ
.
+
+
+ Computes the norm of an element λ
of
+ R[τ]
, where λ = u + vτ
+ and u
and u
are real numbers (elements of
+ R
).
+ @param mu The parameter μ
of the elliptic curve.
+ @param u The real part of the element λ
of
+ R[τ]
.
+ @param v The τ
-adic part of the element
+ λ
of R[τ]
.
+ @return The norm of λ
.
+
+
+ Rounds an element λ
of R[τ]
+ to an element of Z[τ]
, such that their difference
+ has minimal norm. λ
is given as
+ λ = λ0 + λ1τ
.
+ @param lambda0 The component λ0
.
+ @param lambda1 The component λ1
.
+ @param mu The parameter μ
of the elliptic curve. Must
+ equal 1 or -1.
+ @return The rounded element of Z[τ]
.
+ @throws ArgumentException if lambda0
and
+ lambda1
do not have same scale.
+
+
+ Approximate division by n
. For an integer
+ k
, the value λ = s k / n
is
+ computed to c
bits of accuracy.
+ @param k The parameter k
.
+ @param s The curve parameter s0
or
+ s1
.
+ @param vm The Lucas Sequence element Vm
.
+ @param a The parameter a
of the elliptic curve.
+ @param m The bit length of the finite field
+ Fm
.
+ @param c The number of bits of accuracy, i.e. the scale of the returned
+ SimpleBigDecimal
.
+ @return The value λ = s k / n
computed to
+ c
bits of accuracy.
+
+
+ Computes the τ
-adic NAF (non-adjacent form) of an
+ element λ
of Z[τ]
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return The τ
-adic NAF of λ
.
+
+
+ Applies the operation τ()
to an
+ AbstractF2mPoint
.
+ @param p The AbstractF2mPoint to which τ()
is applied.
+ @return τ(p)
+
+
+ Returns the parameter μ
of the elliptic curve.
+ @param curve The elliptic curve from which to obtain μ
.
+ The curve must be a Koblitz curve, i.e. a
Equals
+ 0
or 1
and b
Equals
+ 1
.
+ @return μ
of the elliptic curve.
+ @throws ArgumentException if the given ECCurve is not a Koblitz
+ curve.
+
+
+ Calculates the Lucas Sequence elements Uk-1
and
+ Uk
or Vk-1
and
+ Vk
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param k The index of the second element of the Lucas Sequence to be
+ returned.
+ @param doV If set to true, computes Vk-1
and
+ Vk
, otherwise Uk-1
and
+ Uk
.
+ @return An array with 2 elements, containing Uk-1
+ and Uk
or Vk-1
+ and Vk
.
+
+
+ Computes the auxiliary value tw
. If the width is
+ 4, then for mu = 1
, tw = 6
and for
+ mu = -1
, tw = 10
+ @param mu The parameter μ
of the elliptic curve.
+ @param w The window width of the WTNAF.
+ @return the auxiliary value tw
+
+
+ Computes the auxiliary values s0
and
+ s1
used for partial modular reduction.
+ @param curve The elliptic curve for which to compute
+ s0
and s1
.
+ @throws ArgumentException if curve
is not a
+ Koblitz curve (Anomalous Binary Curve, ABC).
+
+
+ Partial modular reduction modulo
+ (τm - 1)/(τ - 1)
.
+ @param k The integer to be reduced.
+ @param m The bitlength of the underlying finite field.
+ @param a The parameter a
of the elliptic curve.
+ @param s The auxiliary values s0
and
+ s1
.
+ @param mu The parameter μ of the elliptic curve.
+ @param c The precision (number of bits of accuracy) of the partial
+ modular reduction.
+ @return ρ := k partmod (τm - 1)/(τ - 1)
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by a BigInteger
using the reduced τ
-adic
+ NAF (RTNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param k The BigInteger
by which to Multiply p
.
+ @return k * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the τ
-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return λ * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the τ
-adic NAF (TNAF) method, given the TNAF
+ of λ
.
+ @param p The AbstractF2mPoint to Multiply.
+ @param u The the TNAF of λ
..
+ @return λ * p
+
+
+ Computes the [τ]
-adic window NAF of an element
+ λ
of Z[τ]
.
+ @param mu The parameter μ of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
of which to compute the
+ [τ]
-adic NAF.
+ @param width The window width of the resulting WNAF.
+ @param pow2w 2width.
+ @param tw The auxiliary value tw
.
+ @param alpha The αu
's for the window width.
+ @return The [τ]
-adic window NAF of
+ λ
.
+
+
+ Does the precomputation for WTNAF multiplication.
+ @param p The ECPoint
for which to do the precomputation.
+ @param a The parameter a
of the elliptic curve.
+ @return The precomputation array for p
.
+
+
+ Class representing an element of Z[τ]
. Let
+ λ
be an element of Z[τ]
. Then
+ λ
is given as λ = u + vτ
. The
+ components u
and v
may be used directly, there
+ are no accessor methods.
+ Immutable class.
+
+
+ The "real" part of λ
.
+
+
+ The "τ
-adic" part of λ
.
+
+
+ Constructor for an element λ
of
+ Z[τ]
.
+ @param u The "real" part of λ
.
+ @param v The "τ
-adic" part of
+ λ
.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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(boolean)}
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ Joye's double-add algorithm.
+
+
+ Interface for classes encapsulating a point multiplication algorithm
+ for ECPoint
s.
+
+
+ Multiplies the ECPoint p
by k
, i.e.
+ p
is added k
times to itself.
+ @param p The ECPoint
to be multiplied.
+ @param k The factor by which p
is multiplied.
+ @return p
multiplied by k
.
+
+
+ Class holding precomputation data for fixed-point multiplications.
+
+
+ Array holding the precomputed ECPoint
s used for a fixed
+ point multiplication.
+
+
+ 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.
+
+
+ Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left) using
+ mixed coordinates.
+
+
+ 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).
+
+
+ Montgomery ladder.
+
+
+ Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (left-to-right).
+
+
+ Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left).
+
+
+ Interface for classes storing precomputation data for multiplication
+ algorithms. Used as a Memento (see GOF patterns) for
+ WNafMultiplier
.
+
+
+ Class implementing the WNAF (Window Non-Adjacent Form) multiplication
+ algorithm.
+
+
+ Multiplies this
by an integer k
using the
+ Window NAF method.
+ @param k The integer by which this
is multiplied.
+ @return A new ECPoint
which equals this
+ multiplied by k
.
+
+
+ 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
+
+
+ Class holding precomputation data for the WNAF (Window Non-Adjacent Form)
+ algorithm.
+
+
+ Array holding the precomputed ECPoint
s used for a Window
+ NAF multiplication.
+
+
+ Array holding the negations of the precomputed ECPoint
s used
+ for a Window NAF multiplication.
+
+
+ Holds an ECPoint
representing Twice(this). Used for the
+ Window NAF multiplication to create or extend the precomputed values.
+
+
+ Computes the Window NAF (non-adjacent Form) of an integer.
+ @param width The width w
of the Window NAF. The width is
+ defined as the minimal number w
, such that for any
+ w
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:
+ k = ∑i=0l-1 ki2i
+
, where the ki
denote the elements of the
+ returned byte[]
.
+
+
+ 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
+
+
+ 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
+
+
+ Class implementing the WTNAF (Window
+ τ
-adic Non-Adjacent Form) algorithm.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by k
using the reduced τ
-adic NAF (RTNAF)
+ method.
+ @param p The AbstractF2mPoint to multiply.
+ @param k The integer by which to multiply k
.
+ @return p
multiplied by k
.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
using
+ the τ
-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to multiply.
+ @param lambda The element λ
of
+ Z[τ]
of which to compute the
+ [τ]
-adic NAF.
+ @return p
multiplied by λ
.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the window τ
-adic NAF (TNAF) method, given the
+ WTNAF of λ
.
+ @param p The AbstractF2mPoint to multiply.
+ @param u The the WTNAF of λ
..
+ @return λ * p
+
+
+ Class holding precomputation data for the WTNAF (Window
+ τ
-adic Non-Adjacent Form) algorithm.
+
+
+ Array holding the precomputed AbstractF2mPoint
s used for the
+ WTNAF multiplication in
+ {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
+ WTauNafMultiplier.multiply()}
.
+
+
+ 'Zeroless' Signed Digit Left-to-Right.
+
+
+ 'Zeroless' Signed Digit Right-to-Left.
+
+
+
+
+ BasicOcspResponse ::= SEQUENCE {
+ tbsResponseData ResponseData,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL
+ }
+
+
+
+
+ The DER encoding of the tbsResponseData field.
+ In the event of an encoding error.
+
+
+ The certificates, if any, associated with the response.
+ In the event of an encoding error.
+
+
+
+ Verify the signature against the tbsResponseData object we contain.
+
+
+
+ The ASN.1 encoded representation of this object.
+
+
+ Generator for basic OCSP response objects.
+
+
+ basic constructor
+
+
+ construct with the responderID to be the SHA-1 keyHash of the passed in public key.
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param certStatus status of the certificate - null if okay
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param nextUpdate date when next update should be requested
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param thisUpdate date this response was valid on
+ @param nextUpdate date when next update should be requested
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Set the extensions for the response.
+
+ @param responseExtensions the extension object to carry.
+
+
+
+ Generate the signed response using the passed in signature calculator.
+
+ Implementation of signing calculator factory.
+ The certificate chain associated with the response signer.
+ "produced at" date.
+
+
+
+ Return an IEnumerable of the signature names supported by the generator.
+
+ @return an IEnumerable containing recognised names.
+
+
+ create from an issuer certificate and the serial number of the
+ certificate it signed.
+ @exception OcspException if any problems occur creating the id fields.
+
+
+ return the serial number for the certificate associated
+ with this request.
+
+
+ Create a new CertificateID for a new serial number derived from a previous one
+ calculated for the same CA certificate.
+
+ @param original the previously calculated CertificateID for the CA.
+ @param newSerialNumber the serial number for the new certificate of interest.
+
+ @return a new CertificateID for newSerialNumber
+
+
+
+ OcspRequest ::= SEQUENCE {
+ tbsRequest TBSRequest,
+ optionalSignature [0] EXPLICIT Signature OPTIONAL }
+
+ TBSRequest ::= SEQUENCE {
+ version [0] EXPLICIT Version DEFAULT v1,
+ requestorName [1] EXPLICIT GeneralName OPTIONAL,
+ requestList SEQUENCE OF Request,
+ requestExtensions [2] EXPLICIT Extensions OPTIONAL }
+
+ Signature ::= SEQUENCE {
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL}
+
+ Version ::= INTEGER { v1(0) }
+
+ Request ::= SEQUENCE {
+ reqCert CertID,
+ singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
+
+ CertID ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ issuerNameHash OCTET STRING, -- Hash of Issuer's DN
+ issuerKeyHash OCTET STRING, -- Hash of Issuers public key
+ serialNumber CertificateSerialNumber }
+
+
+
+ Return the DER encoding of the tbsRequest field.
+ @return DER encoding of tbsRequest
+ @throws OcspException in the event of an encoding error.
+
+
+ return the object identifier representing the signature algorithm
+
+
+ If the request is signed return a possibly empty CertStore containing the certificates in the
+ request. If the request is not signed the method returns null.
+
+ @return null if not signed, a CertStore otherwise
+ @throws OcspException
+
+
+ Return whether or not this request is signed.
+
+ @return true if signed false otherwise.
+
+
+ Verify the signature against the TBSRequest object we contain.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Add a request for the given CertificateID.
+
+ @param certId certificate ID of interest
+
+
+ Add a request with extensions
+
+ @param certId certificate ID of interest
+ @param singleRequestExtensions the extensions to attach to the request
+
+
+ Set the requestor name to the passed in X509Principal
+
+ @param requestorName a X509Principal representing the requestor name.
+
+
+ Generate an unsigned request
+
+ @return the OcspReq
+ @throws OcspException
+
+
+ Return an IEnumerable of the signature names supported by the generator.
+
+ @return an IEnumerable containing recognised names.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ base generator for an OCSP response - at the moment this only supports the
+ generation of responses containing BasicOCSP responses.
+
+
+ note 4 is not used.
+
+
+ Carrier for a ResponderID.
+
+
+ wrapper for the RevokedInfo object
+
+
+ return the revocation reason. Note: this field is optional, test for it
+ with hasRevocationReason() first.
+ @exception InvalidOperationException if a reason is asked for and none is avaliable
+
+
+ Return the status object for the response - null indicates good.
+
+ @return the status object for the response, null if it is good.
+
+
+ return the NextUpdate value - note: this is an optional field so may
+ be returned as null.
+
+ @return nextUpdate, or null if not present.
+
+
+ wrapper for the UnknownInfo object
+
+
+
+ Utility class for creating IBasicAgreement objects from their names/Oids
+
+
+
+
+ Cipher Utility class contains methods that can not be specifically grouped into other classes.
+
+
+
+
+ Returns a ObjectIdentifier for a give encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ Utility class for creating IDigest objects from their names/Oids
+
+
+
+
+ Returns a ObjectIdentifier for a given digest mechanism.
+
+ A string representation of the digest meanism.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ A class containing methods to interface the BouncyCastle world to the .NET Crypto world.
+
+
+
+
+ Create an System.Security.Cryptography.X509Certificate from an X509Certificate Structure.
+
+
+ A System.Security.Cryptography.X509Certificate.
+
+
+
+ Utility class for creating HMac object from their names/Oids
+
+
+
+
+
+
+
+
+
+ Returns a ObjectIdentifier for a give encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ Create and auto-seed an instance based on the given algorithm.
+
+ Equivalent to GetInstance(algorithm, true)
+ e.g. "SHA256PRNG"
+
+
+
+ Create an instance based on the given algorithm, with optional auto-seeding
+
+ e.g. "SHA256PRNG"
+ If true, the instance will be auto-seeded.
+
+
+
+ To replicate existing predictable output, replace with GetInstance("SHA1PRNG", false), followed by SetSeed(seed)
+
+
+
+ Use the specified instance of IRandomGenerator as random source.
+
+ This constructor performs no seeding of either the IRandomGenerator or the
+ constructed SecureRandom. It is the responsibility of the client to provide
+ proper seed material as necessary/appropriate for the given IRandomGenerator
+ implementation.
+
+ The source to generate all random bytes from.
+
+
+ base constructor.
+
+
+ create a SecurityUtilityException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+
+ Signer Utility class contains methods that can not be specifically grouped into other classes.
+
+
+
+
+ Returns an ObjectIdentifier for a given encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the OID is not available.
+
+
+
+ Utility class for creating IWrapper objects from their names/Oids
+
+
+
+ PEM generator for the original set of PEM objects used in Open SSL.
+
+
+ Class for reading OpenSSL PEM encoded streams containing
+ X509 certificates, PKCS8 encoded keys and PKCS7 objects.
+
+ In the case of PKCS7 objects the reader will return a CMS ContentInfo object. Keys and
+ Certificates will be returned using the appropriate java.security type.
+
+
+ Create a new PemReader
+
+ @param reader the Reader
+
+
+ Create a new PemReader with a password finder
+
+ @param reader the Reader
+ @param pFinder the password finder
+
+
+ Reads in a X509Certificate.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a X509CRL.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a PKCS10 certification request.
+
+ @return the certificate request.
+ @throws IOException if an I/O error occured
+
+
+ Reads in a X509 Attribute Certificate.
+
+ @return the X509 Attribute Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a PKCS7 object. This returns a ContentInfo object suitable for use with the CMS
+ API.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Read a Key Pair
+
+
+ General purpose writer for OpenSSL PEM objects.
+
+
+ The TextWriter object to write the output to.
+
+
+ Constructor for an unencrypted private key PEM object.
+
+ @param key private key to be encoded.
+
+
+ Constructor for an encrypted private key PEM object.
+
+ @param key private key to be encoded
+ @param algorithm encryption algorithm to use
+ @param provider provider to use
+ @throws NoSuchAlgorithmException if algorithm/mode cannot be found
+
+
+
+ A class for verifying and creating Pkcs10 Certification requests.
+
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+ see
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ Name of Sig Alg.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+ Matching Private key for nominated (above) public key to be used to sign the request.
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ The factory for signature calculators to sign the PKCS#10 request with.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+ Matching Private key for nominated (above) public key to be used to sign the request.
+
+
+
+ Get the public key.
+
+ The public key.
+
+
+
+ Verify Pkcs10 Cert Request is valid.
+
+ true = valid.
+
+
+
+ A class for creating and verifying Pkcs10 Certification requests (this is an extension on ).
+ The requests are made using delay signing. This is useful for situations where
+ the private key is in another environment and not directly accessible (e.g. HSM)
+ So the first step creates the request, then the signing is done outside this
+ object and the signature is then used to complete the request.
+
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+ see
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ Name of Sig Alg.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+
+ After the object is constructed use the and finally the
+ SignRequest methods to finalize the request.
+
+
+
+ simply return the cert entry for the private key
+
+
+ Utility class for reencoding PKCS#12 files to definite length.
+
+
+ Just re-encode the outer layer of the PKCS#12 file to definite length encoding.
+
+ @param berPKCS12File - original PKCS#12 file
+ @return a byte array representing the DER encoding of the PFX structure
+ @throws IOException
+
+
+ Re-encode the PKCS#12 structure to definite length encoding at the inner layer
+ as well, recomputing the MAC accordingly.
+
+ @param berPKCS12File - original PKCS12 file.
+ @param provider - provider to use for MAC calculation.
+ @return a byte array representing the DER encoding of the PFX structure.
+ @throws IOException on parsing, encoding errors.
+
+
+
+ Returns the revocationDate.
+
+
+
+
+ Returns the certStatus.
+
+
+
+ Returns an immutable Set
of X.509 attribute certificate
+ extensions that this PkixAttrCertChecker
supports or
+ null
if no extensions are supported.
+
+ Each element of the set is a String
representing the
+ Object Identifier (OID) of the X.509 extension that is supported.
+
+
+ All X.509 attribute certificate extensions that a
+ PkixAttrCertChecker
might possibly be able to process
+ should be included in the set.
+
+
+ @return an immutable Set
of X.509 extension OIDs (in
+ String
format) supported by this
+ PkixAttrCertChecker
, or null
if no
+ extensions are supported
+
+
+ Performs checks on the specified attribute certificate. Every handled
+ extension is rmeoved from the unresolvedCritExts
+ collection.
+
+ @param attrCert The attribute certificate to be checked.
+ @param certPath The certificate path which belongs to the attribute
+ certificate issuer public key certificate.
+ @param holderCertPath The certificate path which belongs to the holder
+ certificate.
+ @param unresolvedCritExts a Collection
of OID strings
+ representing the current set of unresolved critical extensions
+ @throws CertPathValidatorException if the specified attribute certificate
+ does not pass the check.
+
+
+ Returns a clone of this object.
+
+ @return a copy of this PkixAttrCertChecker
+
+
+ Build and validate a CertPath using the given parameter.
+
+ @param params PKIXBuilderParameters object containing all information to
+ build the CertPath
+
+
+ CertPathValidatorSpi implementation for X.509 Attribute Certificates la RFC 3281.
+
+ @see org.bouncycastle.x509.ExtendedPkixParameters
+
+
+ Validates an attribute certificate with the given certificate path.
+
+
+ params
must be an instance of
+ ExtendedPkixParameters
.
+
+ The target constraints in the params
must be an
+ X509AttrCertStoreSelector
with at least the attribute
+ certificate criterion set. Obey that also target informations may be
+ necessary to correctly validate this attribute certificate.
+
+ The attribute certificate issuer must be added to the trusted attribute
+ issuers with {@link ExtendedPkixParameters#setTrustedACIssuers(Set)}.
+
+ @param certPath The certificate path which belongs to the attribute
+ certificate issuer public key certificate.
+ @param params The PKIX parameters.
+ @return A PKIXCertPathValidatorResult
of the result of
+ validating the certPath
.
+ @throws InvalidAlgorithmParameterException if params
is
+ inappropriate for this validator.
+ @throws CertPathValidatorException if the verification fails.
+
+
+
+ Summary description for PkixBuilderParameters.
+
+
+
+ Returns an instance of PkixBuilderParameters
.
+
+ This method can be used to get a copy from other
+ PKIXBuilderParameters
, PKIXParameters
,
+ and ExtendedPKIXParameters
instances.
+
+
+ @param pkixParams The PKIX parameters to create a copy of.
+ @return An PkixBuilderParameters
instance.
+
+
+
+ Excluded certificates are not used for building a certification path.
+
+ the excluded certificates.
+
+
+
+ Sets the excluded certificates which are not used for building a
+ certification path. If the ISet
is null
an
+ empty set is assumed.
+
+
+ The given set is cloned to protect it against subsequent modifications.
+
+ The excluded certificates to set.
+
+
+ Can alse handle ExtendedPKIXBuilderParameters
and
+ PKIXBuilderParameters
.
+
+ @param params Parameters to set.
+ @see org.bouncycastle.x509.ExtendedPKIXParameters#setParams(java.security.cert.PKIXParameters)
+
+
+ Makes a copy of this PKIXParameters
object. Changes to the
+ copy will not affect the original and vice versa.
+
+ @return a copy of this PKIXParameters
object
+
+
+ An immutable sequence of certificates (a certification path).
+
+ This is an abstract class that defines the methods common to all CertPaths.
+ Subclasses can handle different kinds of certificates (X.509, PGP, etc.).
+
+ All CertPath objects have a type, a list of Certificates, and one or more
+ supported encodings. Because the CertPath class is immutable, a CertPath
+ cannot change in any externally visible way after being constructed. This
+ stipulation applies to all public fields and methods of this class and any
+ added or overridden by subclasses.
+
+ The type is a string that identifies the type of Certificates in the
+ certification path. For each certificate cert in a certification path
+ certPath, cert.getType().equals(certPath.getType()) must be true.
+
+ The list of Certificates is an ordered List of zero or more Certificates.
+ This List and all of the Certificates contained in it must be immutable.
+
+ Each CertPath object must support one or more encodings so that the object
+ can be translated into a byte array for storage or transmission to other
+ parties. Preferably, these encodings should be well-documented standards
+ (such as PKCS#7). One of the encodings supported by a CertPath is considered
+ the default encoding. This encoding is used if no encoding is explicitly
+ requested (for the {@link #getEncoded()} method, for instance).
+
+ All CertPath objects are also Serializable. CertPath objects are resolved
+ into an alternate {@link CertPathRep} object during serialization. This
+ allows a CertPath object to be serialized into an equivalent representation
+ regardless of its underlying implementation.
+
+ CertPath objects can be created with a CertificateFactory or they can be
+ returned by other classes, such as a CertPathBuilder.
+
+ By convention, X.509 CertPaths (consisting of X509Certificates), are ordered
+ starting with the target certificate and ending with a certificate issued by
+ the trust anchor. That is, the issuer of one certificate is the subject of
+ the following one. The certificate representing the
+ {@link TrustAnchor TrustAnchor} should not be included in the certification
+ path. Unvalidated X.509 CertPaths may not follow these conventions. PKIX
+ CertPathValidators will detect any departure from these conventions that
+ cause the certification path to be invalid and throw a
+ CertPathValidatorException.
+
+ Concurrent Access
+
+ All CertPath objects must be thread-safe. That is, multiple threads may
+ concurrently invoke the methods defined in this class on a single CertPath
+ object (or more than one) with no ill effects. This is also true for the List
+ returned by CertPath.getCertificates.
+
+ Requiring CertPath objects to be immutable and thread-safe allows them to be
+ passed around to various pieces of code without worrying about coordinating
+ access. Providing this thread-safety is generally not difficult, since the
+ CertPath and List objects in question are immutable.
+
+ @see CertificateFactory
+ @see CertPathBuilder
+
+ CertPath implementation for X.509 certificates.
+
+
+
+ @param certs
+
+
+ Creates a CertPath of the specified type.
+ This constructor is protected because most users should use
+ a CertificateFactory to create CertPaths.
+ @param type the standard name of the type of Certificatesin this path
+
+
+
+ Creates a CertPath of the specified type.
+ This constructor is protected because most users should use
+ a CertificateFactory to create CertPaths.
+
+ @param type the standard name of the type of Certificatesin this path
+
+
+
+ Returns an iteration of the encodings supported by this
+ certification path, with the default encoding
+ first. Attempts to modify the returned Iterator via its
+ remove method result in an UnsupportedOperationException.
+
+ @return an Iterator over the names of the supported encodings (as Strings)
+
+
+
+ Compares this certification path for equality with the specified object.
+ Two CertPaths are equal if and only if their types are equal and their
+ certificate Lists (and by implication the Certificates in those Lists)
+ are equal. A CertPath is never equal to an object that is not a CertPath.
+
+ This algorithm is implemented by this method. If it is overridden, the
+ behavior specified here must be maintained.
+
+ @param other
+ the object to test for equality with this certification path
+
+ @return true if the specified object is equal to this certification path,
+ false otherwise
+
+ @see Object#hashCode() Object.hashCode()
+
+
+ Returns the encoded form of this certification path, using
+ the default encoding.
+
+ @return the encoded bytes
+ @exception CertificateEncodingException if an encoding error occurs
+
+
+
+ Returns the encoded form of this certification path, using
+ the specified encoding.
+
+ @param encoding the name of the encoding to use
+ @return the encoded bytes
+ @exception CertificateEncodingException if an encoding error
+ occurs or the encoding requested is not supported
+
+
+
+
+ Returns the list of certificates in this certification
+ path.
+
+
+
+ Return a DERObject containing the encoded certificate.
+
+ @param cert the X509Certificate object to be encoded
+
+ @return the DERObject
+
+
+
+ Implements the PKIX CertPathBuilding algorithm for BouncyCastle.
+
+ @see CertPathBuilderSpi
+
+
+ Build and validate a CertPath using the given parameter.
+
+ @param params PKIXBuilderParameters object containing all information to
+ build the CertPath
+
+
+
+ Summary description for PkixCertPathBuilderException.
+
+
+
+
+ Summary description for PkixCertPathBuilderResult.
+
+
+
+ * Initializes the internal state of this PKIXCertPathChecker
.
+ *
+ * The forward
flag specifies the order that certificates
+ * will be passed to the {@link #check check} method (forward or reverse). A
+ * PKIXCertPathChecker
must support reverse checking
+ * and may support forward checking.
+ *
+ *
+ * @param forward
+ * the order that certificates are presented to the
+ * check
method. If true
,
+ * certificates are presented from target to most-trusted CA
+ * (forward); if false
, from most-trusted CA to
+ * target (reverse).
+ * @exception CertPathValidatorException
+ * if this PKIXCertPathChecker
is unable to
+ * check certificates in the specified order; it should never
+ * be thrown if the forward flag is false since reverse
+ * checking must be supported
+
+
+ Indicates if forward checking is supported. Forward checking refers to
+ the ability of the PKIXCertPathChecker
to perform its
+ checks when certificates are presented to the check
method
+ in the forward direction (from target to most-trusted CA).
+
+ @return true
if forward checking is supported,
+ false
otherwise
+
+
+ * Returns an immutable Set
of X.509 certificate extensions
+ * that this PKIXCertPathChecker
supports (i.e. recognizes,
+ * is able to process), or null
if no extensions are
+ * supported.
+ *
+ * Each element of the set is a String
representing the
+ * Object Identifier (OID) of the X.509 extension that is supported. The OID
+ * is represented by a set of nonnegative integers separated by periods.
+ *
+ * All X.509 certificate extensions that a PKIXCertPathChecker
+ * might possibly be able to process should be included in the set.
+ *
+ *
+ * @return an immutable Set
of X.509 extension OIDs (in
+ * String
format) supported by this
+ * PKIXCertPathChecker
, or null
if no
+ * extensions are supported
+
+
+ Performs the check(s) on the specified certificate using its internal
+ state and removes any critical extensions that it processes from the
+ specified collection of OID strings that represent the unresolved
+ critical extensions. The certificates are presented in the order
+ specified by the init
method.
+
+ @param cert
+ the Certificate
to be checked
+ @param unresolvedCritExts
+ a Collection
of OID strings representing the
+ current set of unresolved critical extensions
+ @exception CertPathValidatorException
+ if the specified certificate does not pass the check
+
+
+ Returns a clone of this object. Calls the Object.clone()
+ method. All subclasses which maintain state must support and override
+ this method, if necessary.
+
+ @return a copy of this PKIXCertPathChecker
+
+
+ The Service Provider Interface (SPI)
+ for the {@link CertPathValidator CertPathValidator} class. All
+ CertPathValidator
implementations must include a class (the
+ SPI class) that extends this class (CertPathValidatorSpi
)
+ and implements all of its methods. In general, instances of this class
+ should only be accessed through the CertPathValidator
class.
+ For details, see the Java Cryptography Architecture.
+
+ Concurrent Access
+
+ Instances of this class need not be protected against concurrent
+ access from multiple threads. Threads that need to access a single
+ CertPathValidatorSpi
instance concurrently should synchronize
+ amongst themselves and provide the necessary locking before calling the
+ wrapping CertPathValidator
object.
+
+ However, implementations of CertPathValidatorSpi
may still
+ encounter concurrency issues, since multiple threads each
+ manipulating a different CertPathValidatorSpi
instance need not
+ synchronize.
+
+ CertPathValidatorSpi implementation for X.509 Certificate validation a la RFC
+ 3280.
+
+
+
+ An exception indicating one of a variety of problems encountered when
+ validating a certification path.
+
+ A CertPathValidatorException
provides support for wrapping
+ exceptions. The {@link #getCause getCause} method returns the throwable,
+ if any, that caused this exception to be thrown.
+
+ A CertPathValidatorException
may also include the
+ certification path that was being validated when the exception was thrown
+ and the index of the certificate in the certification path that caused the
+ exception to be thrown. Use the {@link #getCertPath getCertPath} and
+ {@link #getIndex getIndex} methods to retrieve this information.
+
+ Concurrent Access
+
+ Unless otherwise specified, the methods defined in this class are not
+ thread-safe. Multiple threads that need to access a single
+ object concurrently should synchronize amongst themselves and
+ provide the necessary locking. Multiple threads each manipulating
+ separate objects need not synchronize.
+
+ @see CertPathValidator
+
+
+
+
+ Creates a PkixCertPathValidatorException
with the given detail
+ message. A detail message is a String
that describes this
+ particular exception.
+
+ the detail message
+
+
+
+ Creates a PkixCertPathValidatorException
with the specified
+ detail message and cause.
+
+ the detail message
+ the cause (which is saved for later retrieval by the
+ {@link #getCause getCause()} method). (A null
+ value is permitted, and indicates that the cause is
+ nonexistent or unknown.)
+
+
+
+ Creates a PkixCertPathValidatorException
with the specified
+ detail message, cause, certification path, and index.
+
+ the detail message (or null
if none)
+ the cause (or null
if none)
+ the certification path that was in the process of being
+ validated when the error was encountered
+ the index of the certificate in the certification path that *
+
+
+
+ Returns the detail message for this CertPathValidatorException
.
+
+ the detail message, or null
if neither the message nor cause were specified
+
+
+ Returns the certification path that was being validated when the
+ exception was thrown.
+
+ @return the CertPath
that was being validated when the
+ exception was thrown (or null
if not specified)
+
+
+ Returns the index of the certificate in the certification path that
+ caused the exception to be thrown. Note that the list of certificates in
+ a CertPath
is zero based. If no index has been set, -1 is
+ returned.
+
+ @return the index that has been set, or -1 if none has been set
+
+
+
+ Summary description for PkixCertPathValidatorResult.
+
+
+
+
+ Summary description for PkixCertPathValidatorUtilities.
+
+
+
+
+ key usage bits
+
+
+
+
+ Search the given Set of TrustAnchor's for one that is the
+ issuer of the given X509 certificate.
+
+ the X509 certificate
+ a Set of TrustAnchor's
+ the TrustAnchor
object if found or
+ null
if not.
+
+ @exception
+
+
+
+ Returns the issuer of an attribute certificate or certificate.
+
+ The attribute certificate or certificate.
+ The issuer as X500Principal
.
+
+
+ Return the next working key inheriting DSA parameters if necessary.
+
+ This methods inherits DSA parameters from the indexed certificate or
+ previous certificates in the certificate chain to the returned
+ PublicKey
. The list is searched upwards, meaning the end
+ certificate is at position 0 and previous certificates are following.
+
+
+ If the indexed certificate does not contain a DSA key this method simply
+ returns the public key. If the DSA key already contains DSA parameters
+ the key is also only returned.
+
+
+ @param certs The certification path.
+ @param index The index of the certificate which contains the public key
+ which should be extended with DSA parameters.
+ @return The public key of the certificate in list position
+ index
extended with DSA parameters if applicable.
+ @throws Exception if DSA parameters cannot be inherited.
+
+
+
+ Return a Collection of all certificates or attribute certificates found
+ in the X509Store's that are matching the certSelect criteriums.
+
+ a {@link Selector} object that will be used to select
+ the certificates
+ a List containing only X509Store objects. These
+ are used to search for certificates.
+ a Collection of all found or
+ objects.
+ May be empty but never null
.
+
+
+
+ Add the CRL issuers from the cRLIssuer field of the distribution point or
+ from the certificate if not given to the issuer criterion of the
+ selector
.
+
+ The issuerPrincipals
are a collection with a single
+ X500Principal
for X509Certificate
s. For
+ {@link X509AttributeCertificate}s the issuer may contain more than one
+ X500Principal
.
+
+
+ @param dp The distribution point.
+ @param issuerPrincipals The issuers of the certificate or attribute
+ certificate which contains the distribution point.
+ @param selector The CRL selector.
+ @param pkixParams The PKIX parameters containing the cert stores.
+ @throws Exception if an exception occurs while processing.
+ @throws ClassCastException if issuerPrincipals
does not
+ contain only X500Principal
s.
+
+
+ Fetches complete CRLs according to RFC 3280.
+
+ @param dp The distribution point for which the complete CRL
+ @param cert The X509Certificate
or
+ {@link org.bouncycastle.x509.X509AttributeCertificate} for
+ which the CRL should be searched.
+ @param currentDate The date for which the delta CRLs must be valid.
+ @param paramsPKIX The extended PKIX parameters.
+ @return A Set
of X509CRL
s with complete
+ CRLs.
+ @throws Exception if an exception occurs while picking the CRLs
+ or no CRLs are found.
+
+
+ Fetches delta CRLs according to RFC 3280 section 5.2.4.
+
+ @param currentDate The date for which the delta CRLs must be valid.
+ @param paramsPKIX The extended PKIX parameters.
+ @param completeCRL The complete CRL the delta CRL is for.
+ @return A Set
of X509CRL
s with delta CRLs.
+ @throws Exception if an exception occurs while picking the delta
+ CRLs.
+
+
+ Find the issuer certificates of a given certificate.
+
+ @param cert
+ The certificate for which an issuer should be found.
+ @param pkixParams
+ @return A Collection
object containing the issuer
+ X509Certificate
s. Never null
.
+
+ @exception Exception
+ if an error occurs.
+
+
+
+ Extract the value of the given extension, if it exists.
+
+ The extension object.
+ The object identifier to obtain.
+ Asn1Object
+ if the extension cannot be read.
+
+
+
+ crl checking
+ Return a Collection of all CRLs found in the X509Store's that are
+ matching the crlSelect criteriums.
+
+ a {@link X509CRLStoreSelector} object that will be used
+ to select the CRLs
+ a List containing only {@link org.bouncycastle.x509.X509Store
+ X509Store} objects. These are used to search for CRLs
+ a Collection of all found {@link X509CRL X509CRL} objects. May be
+ empty but never null
.
+
+
+
+ Returns the intersection of the permitted IP ranges in
+ permitted
with ip
.
+
+ @param permitted A Set
of permitted IP addresses with
+ their subnet mask as byte arrays.
+ @param ips The IP address with its subnet mask.
+ @return The Set
of permitted IP ranges intersected with
+ ip
.
+
+
+ Returns the union of the excluded IP ranges in excluded
+ with ip
.
+
+ @param excluded A Set
of excluded IP addresses with their
+ subnet mask as byte arrays.
+ @param ip The IP address with its subnet mask.
+ @return The Set
of excluded IP ranges unified with
+ ip
as byte arrays.
+
+
+ Calculates the union if two IP ranges.
+
+ @param ipWithSubmask1 The first IP address with its subnet mask.
+ @param ipWithSubmask2 The second IP address with its subnet mask.
+ @return A Set
with the union of both addresses.
+
+
+ Calculates the interesction if two IP ranges.
+
+ @param ipWithSubmask1 The first IP address with its subnet mask.
+ @param ipWithSubmask2 The second IP address with its subnet mask.
+ @return A Set
with the single IP address with its subnet
+ mask as a byte array or an empty Set
.
+
+
+ Concatenates the IP address with its subnet mask.
+
+ @param ip The IP address.
+ @param subnetMask Its subnet mask.
+ @return The concatenated IP address with its subnet mask.
+
+
+ Splits the IP addresses and their subnet mask.
+
+ @param ipWithSubmask1 The first IP address with the subnet mask.
+ @param ipWithSubmask2 The second IP address with the subnet mask.
+ @return An array with two elements. Each element contains the IP address
+ and the subnet mask in this order.
+
+
+ Based on the two IP addresses and their subnet masks the IP range is
+ computed for each IP address - subnet mask pair and returned as the
+ minimum IP address and the maximum address of the range.
+
+ @param ip1 The first IP address.
+ @param subnetmask1 The subnet mask of the first IP address.
+ @param ip2 The second IP address.
+ @param subnetmask2 The subnet mask of the second IP address.
+ @return A array with two elements. The first/second element contains the
+ min and max IP address of the first/second IP address and its
+ subnet mask.
+
+
+ Checks if the IP ip
is included in the permitted ISet
+ permitted
.
+
+ @param permitted A Set
of permitted IP addresses with
+ their subnet mask as byte arrays.
+ @param ip The IP address.
+ @throws PkixNameConstraintValidatorException
+ if the IP is not permitted.
+
+
+ Checks if the IP ip
is included in the excluded ISet
+ excluded
.
+
+ @param excluded A Set
of excluded IP addresses with their
+ subnet mask as byte arrays.
+ @param ip The IP address.
+ @throws PkixNameConstraintValidatorException
+ if the IP is excluded.
+
+
+ Checks if the IP address ip
is constrained by
+ constraint
.
+
+ @param ip The IP address.
+ @param constraint The constraint. This is an IP address concatenated with
+ its subnetmask.
+ @return true
if constrained, false
+ otherwise.
+
+
+ The common part of email1
and email2
is
+ added to the union union
. If email1
and
+ email2
have nothing in common they are added both.
+
+ @param email1 Email address constraint 1.
+ @param email2 Email address constraint 2.
+ @param union The union.
+
+
+ The most restricting part from email1
and
+ email2
is added to the intersection intersect
.
+
+ @param email1 Email address constraint 1.
+ @param email2 Email address constraint 2.
+ @param intersect The intersection.
+
+
+ Checks if the given GeneralName is in the permitted ISet.
+
+ @param name The GeneralName
+ @throws PkixNameConstraintValidatorException
+ If the name
+
+
+ Check if the given GeneralName is contained in the excluded ISet.
+
+ @param name The GeneralName.
+ @throws PkixNameConstraintValidatorException
+ If the name
is
+ excluded.
+
+
+ Updates the permitted ISet of these name constraints with the intersection
+ with the given subtree.
+
+ @param permitted The permitted subtrees
+
+
+ Adds a subtree to the excluded ISet of these name constraints.
+
+ @param subtree A subtree with an excluded GeneralName.
+
+
+ Returns the maximum IP address.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The maximum IP address.
+
+
+ Returns the minimum IP address.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The minimum IP address.
+
+
+ Compares IP address ip1
with ip2
. If ip1
+ is equal to ip2 0 is returned. If ip1 is bigger 1 is returned, -1
+ otherwise.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return 0 if ip1 is equal to ip2, 1 if ip1 is bigger, -1 otherwise.
+
+
+ Returns the logical OR of the IP addresses ip1
and
+ ip2
.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The OR of ip1
and ip2
.
+
+
+ Stringifies an IPv4 or v6 address with subnet mask.
+
+ @param ip The IP with subnet mask.
+ @return The stringified IP address.
+
+
+
+ Summary description for PkixParameters.
+
+
+
+ This is the default PKIX validity model. Actually there are two variants
+ of this: The PKIX model and the modified PKIX model. The PKIX model
+ verifies that all involved certificates must have been valid at the
+ current time. The modified PKIX model verifies that all involved
+ certificates were valid at the signing time. Both are indirectly choosen
+ with the {@link PKIXParameters#setDate(java.util.Date)} method, so this
+ methods sets the Date when all certificates must have been
+ valid.
+
+
+ This model uses the following validity model. Each certificate must have
+ been valid at the moment where is was used. That means the end
+ certificate must have been valid at the time the signature was done. The
+ CA certificate which signed the end certificate must have been valid,
+ when the end certificate was signed. The CA (or Root CA) certificate must
+ have been valid, when the CA certificate was signed and so on. So the
+ {@link PKIXParameters#setDate(java.util.Date)} method sets the time, when
+ the end certificate must have been valid. It is used e.g.
+ in the German signature law.
+
+
+ Creates an instance of PKIXParameters with the specified Set of
+ most-trusted CAs. Each element of the set is a TrustAnchor.
+
+ Note that the Set is copied to protect against subsequent modifications.
+
+ @param trustAnchors
+ a Set of TrustAnchors
+
+ @exception InvalidAlgorithmParameterException
+ if the specified Set is empty
+ (trustAnchors.isEmpty() == true)
+ @exception NullPointerException
+ if the specified Set is null
+ @exception ClassCastException
+ if any of the elements in the Set are not of type
+ java.security.cert.TrustAnchor
+
+
+ Returns the required constraints on the target certificate. The
+ constraints are returned as an instance of CertSelector. If
+ null
, no constraints are defined.
+
+ Note that the CertSelector returned is cloned to protect against
+ subsequent modifications.
+
+ @return a CertSelector specifying the constraints on the target
+ certificate (or null
)
+
+ @see #setTargetCertConstraints(CertSelector)
+
+
+ Sets the required constraints on the target certificate. The constraints
+ are specified as an instance of CertSelector. If null, no constraints are
+ defined.
+
+ Note that the CertSelector specified is cloned to protect against
+ subsequent modifications.
+
+ @param selector
+ a CertSelector specifying the constraints on the target
+ certificate (or null
)
+
+ @see #getTargetCertConstraints()
+
+
+ Returns an immutable Set of initial policy identifiers (OID strings),
+ indicating that any one of these policies would be acceptable to the
+ certificate user for the purposes of certification path processing. The
+ default return value is an empty Set
, which is
+ interpreted as meaning that any policy would be acceptable.
+
+ @return an immutable Set
of initial policy OIDs in String
+ format, or an empty Set
(implying any policy is
+ acceptable). Never returns null
.
+
+ @see #setInitialPolicies(java.util.Set)
+
+
+ Sets the Set
of initial policy identifiers (OID strings),
+ indicating that any one of these policies would be acceptable to the
+ certificate user for the purposes of certification path processing. By
+ default, any policy is acceptable (i.e. all policies), so a user that
+ wants to allow any policy as acceptable does not need to call this
+ method, or can call it with an empty Set
(or
+ null
).
+
+ Note that the Set is copied to protect against subsequent modifications.
+
+
+ @param initialPolicies
+ a Set of initial policy OIDs in String format (or
+ null
)
+
+ @exception ClassCastException
+ if any of the elements in the set are not of type String
+
+ @see #getInitialPolicies()
+
+
+ Sets a List
of additional certification path checkers. If
+ the specified List contains an object that is not a PKIXCertPathChecker,
+ it is ignored.
+
+ Each PKIXCertPathChecker
specified implements additional
+ checks on a certificate. Typically, these are checks to process and
+ verify private extensions contained in certificates. Each
+ PKIXCertPathChecker
should be instantiated with any
+ initialization parameters needed to execute the check.
+
+ This method allows sophisticated applications to extend a PKIX
+ CertPathValidator
or CertPathBuilder
. Each
+ of the specified PKIXCertPathCheckers will be called, in turn, by a PKIX
+ CertPathValidator
or CertPathBuilder
for
+ each certificate processed or validated.
+
+ Regardless of whether these additional PKIXCertPathCheckers are set, a
+ PKIX CertPathValidator
or CertPathBuilder
+ must perform all of the required PKIX checks on each certificate. The one
+ exception to this rule is if the RevocationEnabled flag is set to false
+ (see the {@link #setRevocationEnabled(boolean) setRevocationEnabled}
+ method).
+
+ Note that the List supplied here is copied and each PKIXCertPathChecker
+ in the list is cloned to protect against subsequent modifications.
+
+ @param checkers
+ a List of PKIXCertPathCheckers. May be null, in which case no
+ additional checkers will be used.
+ @exception ClassCastException
+ if any of the elements in the list are not of type
+ java.security.cert.PKIXCertPathChecker
+ @see #getCertPathCheckers()
+
+
+ Returns the List of certification path checkers. Each PKIXCertPathChecker
+ in the returned IList is cloned to protect against subsequent modifications.
+
+ @return an immutable List of PKIXCertPathCheckers (may be empty, but not
+ null
)
+
+ @see #setCertPathCheckers(java.util.List)
+
+
+ Adds a PKIXCertPathChecker
to the list of certification
+ path checkers. See the {@link #setCertPathCheckers setCertPathCheckers}
+ method for more details.
+
+ Note that the PKIXCertPathChecker
is cloned to protect
+ against subsequent modifications.
+
+ @param checker a PKIXCertPathChecker
to add to the list of
+ checks. If null
, the checker is ignored (not added to list).
+
+
+ Method to support Clone()
under J2ME.
+ super.Clone()
does not exist and fields are not copied.
+
+ @param params Parameters to set. If this are
+ ExtendedPkixParameters
they are copied to.
+
+
+ Whether delta CRLs should be used for checking the revocation status.
+ Defaults to false
.
+
+
+ The validity model.
+ @see #CHAIN_VALIDITY_MODEL
+ @see #PKIX_VALIDITY_MODEL
+
+
+ Sets the Bouncy Castle Stores for finding CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ The IList
is cloned.
+
+
+ @param stores A list of stores to use.
+ @see #getStores
+ @throws ClassCastException if an element of stores
is not
+ a {@link Store}.
+
+
+ Adds a Bouncy Castle {@link Store} to find CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ This method should be used to add local stores, like collection based
+ X.509 stores, if available. Local stores should be considered first,
+ before trying to use additional (remote) locations, because they do not
+ need possible additional network traffic.
+
+ If store
is null
it is ignored.
+
+
+ @param store The store to add.
+ @see #getStores
+
+
+ Adds an additional Bouncy Castle {@link Store} to find CRLs, certificates,
+ attribute certificates or cross certificates.
+
+ You should not use this method. This method is used for adding additional
+ X.509 stores, which are used to add (remote) locations, e.g. LDAP, found
+ during X.509 object processing, e.g. in certificates or CRLs. This method
+ is used in PKIX certification path processing.
+
+ If store
is null
it is ignored.
+
+
+ @param store The store to add.
+ @see #getStores()
+
+
+ Returns an IList
of additional Bouncy Castle
+ Store
s used for finding CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ @return an immutable IList
of additional Bouncy Castle
+ Store
s. Never null
.
+
+ @see #addAddionalStore(Store)
+
+
+ Returns an IList
of Bouncy Castle
+ Store
s used for finding CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ @return an immutable IList
of Bouncy Castle
+ Store
s. Never null
.
+
+ @see #setStores(IList)
+
+
+ Returns if additional {@link X509Store}s for locations like LDAP found
+ in certificates or CRLs should be used.
+
+ @return Returns true
if additional stores are used.
+
+
+ Sets if additional {@link X509Store}s for locations like LDAP found in
+ certificates or CRLs should be used.
+
+ @param enabled true
if additional stores are used.
+
+
+ Returns the required constraints on the target certificate or attribute
+ certificate. The constraints are returned as an instance of
+ IX509Selector
. If null
, no constraints are
+ defined.
+
+
+ The target certificate in a PKIX path may be a certificate or an
+ attribute certificate.
+
+ Note that the IX509Selector
returned is cloned to protect
+ against subsequent modifications.
+
+ @return a IX509Selector
specifying the constraints on the
+ target certificate or attribute certificate (or null
)
+ @see #setTargetConstraints
+ @see X509CertStoreSelector
+ @see X509AttributeCertStoreSelector
+
+
+ Sets the required constraints on the target certificate or attribute
+ certificate. The constraints are specified as an instance of
+ IX509Selector
. If null
, no constraints are
+ defined.
+
+ The target certificate in a PKIX path may be a certificate or an
+ attribute certificate.
+
+ Note that the IX509Selector
specified is cloned to protect
+ against subsequent modifications.
+
+
+ @param selector a IX509Selector
specifying the constraints on
+ the target certificate or attribute certificate (or
+ null
)
+ @see #getTargetConstraints
+ @see X509CertStoreSelector
+ @see X509AttributeCertStoreSelector
+
+
+ Returns the trusted attribute certificate issuers. If attribute
+ certificates is verified the trusted AC issuers must be set.
+
+ The returned ISet
consists of TrustAnchor
s.
+
+ The returned ISet
is immutable. Never null
+
+
+ @return Returns an immutable set of the trusted AC issuers.
+
+
+ Sets the trusted attribute certificate issuers. If attribute certificates
+ is verified the trusted AC issuers must be set.
+
+ The trustedACIssuers
must be a ISet
of
+ TrustAnchor
+
+ The given set is cloned.
+
+
+ @param trustedACIssuers The trusted AC issuers to set. Is never
+ null
.
+ @throws ClassCastException if an element of stores
is not
+ a TrustAnchor
.
+
+
+ Returns the necessary attributes which must be contained in an attribute
+ certificate.
+
+ The returned ISet
is immutable and contains
+ String
s with the OIDs.
+
+
+ @return Returns the necessary AC attributes.
+
+
+ Sets the necessary which must be contained in an attribute certificate.
+
+ The ISet
must contain String
s with the
+ OIDs.
+
+ The set is cloned.
+
+
+ @param necessaryACAttributes The necessary AC attributes to set.
+ @throws ClassCastException if an element of
+ necessaryACAttributes
is not a
+ String
.
+
+
+ Returns the attribute certificates which are not allowed.
+
+ The returned ISet
is immutable and contains
+ String
s with the OIDs.
+
+
+ @return Returns the prohibited AC attributes. Is never null
.
+
+
+ Sets the attribute certificates which are not allowed.
+
+ The ISet
must contain String
s with the
+ OIDs.
+
+ The set is cloned.
+
+
+ @param prohibitedACAttributes The prohibited AC attributes to set.
+ @throws ClassCastException if an element of
+ prohibitedACAttributes
is not a
+ String
.
+
+
+ Returns the attribute certificate checker. The returned set contains
+ {@link PKIXAttrCertChecker}s and is immutable.
+
+ @return Returns the attribute certificate checker. Is never
+ null
.
+
+
+ Sets the attribute certificate checkers.
+
+ All elements in the ISet
must a {@link PKIXAttrCertChecker}.
+
+
+ The given set is cloned.
+
+
+ @param attrCertCheckers The attribute certificate checkers to set. Is
+ never null
.
+ @throws ClassCastException if an element of attrCertCheckers
+ is not a PKIXAttrCertChecker
.
+
+
+
+ Summary description for PkixPolicyNode.
+
+
+
+ Constructors
+
+
+
+ This class helps to handle CRL revocation reasons mask. Each CRL handles a
+ certain set of revocation reasons.
+
+
+
+
+ Constructs are reason mask with the reasons.
+
+ The reasons.
+
+
+
+ A reason mask with no reason.
+
+
+
+
+ A mask with all revocation reasons.
+
+
+
+ Adds all reasons from the reasons mask to this mask.
+
+ @param mask The reasons mask to add.
+
+
+
+ Returns true
if this reasons mask contains all possible
+ reasons.
+
+ true if this reasons mask contains all possible reasons.
+
+
+
+
+ Intersects this mask with the given reasons mask.
+
+ mask The mask to intersect with.
+ The intersection of this and teh given mask.
+
+
+
+ Returns true if the passed reasons mask has new reasons.
+
+ The reasons mask which should be tested for new reasons.
+ true if the passed reasons mask has new reasons.
+
+
+
+ Returns the reasons in this mask.
+
+
+
+ If the complete CRL includes an issuing distribution point (IDP) CRL
+ extension check the following:
+
+ (i) If the distribution point name is present in the IDP CRL extension
+ and the distribution field is present in the DP, then verify that one of
+ the names in the IDP matches one of the names in the DP. If the
+ distribution point name is present in the IDP CRL extension and the
+ distribution field is omitted from the DP, then verify that one of the
+ names in the IDP matches one of the names in the cRLIssuer field of the
+ DP.
+
+
+ (ii) If the onlyContainsUserCerts boolean is asserted in the IDP CRL
+ extension, verify that the certificate does not include the basic
+ constraints extension with the cA boolean asserted.
+
+
+ (iii) If the onlyContainsCACerts boolean is asserted in the IDP CRL
+ extension, verify that the certificate includes the basic constraints
+ extension with the cA boolean asserted.
+
+
+ (iv) Verify that the onlyContainsAttributeCerts boolean is not asserted.
+
+
+ @param dp The distribution point.
+ @param cert The certificate.
+ @param crl The CRL.
+ @throws AnnotatedException if one of the conditions is not met or an error occurs.
+
+
+ If the DP includes cRLIssuer, then verify that the issuer field in the
+ complete CRL matches cRLIssuer in the DP and that the complete CRL
+ contains an
+ g distribution point extension with the indirectCRL
+ boolean asserted. Otherwise, verify that the CRL issuer matches the
+ certificate issuer.
+
+ @param dp The distribution point.
+ @param cert The certificate ot attribute certificate.
+ @param crl The CRL for cert
.
+ @throws AnnotatedException if one of the above conditions does not apply or an error
+ occurs.
+
+
+ Obtain and validate the certification path for the complete CRL issuer.
+ If a key usage extension is present in the CRL issuer's certificate,
+ verify that the cRLSign bit is set.
+
+ @param crl CRL which contains revocation information for the certificate
+ cert
.
+ @param cert The attribute certificate or certificate to check if it is
+ revoked.
+ @param defaultCRLSignCert The issuer certificate of the certificate cert
.
+ @param defaultCRLSignKey The public key of the issuer certificate
+ defaultCRLSignCert
.
+ @param paramsPKIX paramsPKIX PKIX parameters.
+ @param certPathCerts The certificates on the certification path.
+ @return A Set
with all keys of possible CRL issuer
+ certificates.
+ @throws AnnotatedException if the CRL is not valid or the status cannot be checked or
+ some error occurs.
+
+
+ Checks a distribution point for revocation information for the
+ certificate cert
.
+
+ @param dp The distribution point to consider.
+ @param paramsPKIX PKIX parameters.
+ @param cert Certificate to check if it is revoked.
+ @param validDate The date when the certificate revocation status should be
+ checked.
+ @param defaultCRLSignCert The issuer certificate of the certificate cert
.
+ @param defaultCRLSignKey The public key of the issuer certificate
+ defaultCRLSignCert
.
+ @param certStatus The current certificate revocation status.
+ @param reasonMask The reasons mask which is already checked.
+ @param certPathCerts The certificates of the certification path.
+ @throws AnnotatedException if the certificate is revoked or the status cannot be checked
+ or some error occurs.
+
+
+ Checks a certificate if it is revoked.
+
+ @param paramsPKIX PKIX parameters.
+ @param cert Certificate to check if it is revoked.
+ @param validDate The date when the certificate revocation status should be
+ checked.
+ @param sign The issuer certificate of the certificate cert
.
+ @param workingPublicKey The public key of the issuer certificate sign
.
+ @param certPathCerts The certificates of the certification path.
+ @throws AnnotatedException if the certificate is revoked or the status cannot be checked
+ or some error occurs.
+
+
+ If use-deltas is set, verify the issuer and scope of the delta CRL.
+
+ @param deltaCRL The delta CRL.
+ @param completeCRL The complete CRL.
+ @param pkixParams The PKIX paramaters.
+ @throws AnnotatedException if an exception occurs.
+
+
+ Checks if an attribute certificate is revoked.
+
+ @param attrCert Attribute certificate to check if it is revoked.
+ @param paramsPKIX PKIX parameters.
+ @param issuerCert The issuer certificate of the attribute certificate
+ attrCert
.
+ @param validDate The date when the certificate revocation status should
+ be checked.
+ @param certPathCerts The certificates of the certification path to be
+ checked.
+
+ @throws CertPathValidatorException if the certificate is revoked or the
+ status cannot be checked or some error occurs.
+
+
+ Searches for a holder public key certificate and verifies its
+ certification path.
+
+ @param attrCert the attribute certificate.
+ @param pkixParams The PKIX parameters.
+ @return The certificate path of the holder certificate.
+ @throws Exception if
+
+ - no public key certificate can be found although holder
+ information is given by an entity name or a base certificate
+ ID
+ - support classes cannot be created
+ - no certification path for the public key certificate can
+ be built
+
+
+
+
+ Checks a distribution point for revocation information for the
+ certificate attrCert
.
+
+ @param dp The distribution point to consider.
+ @param attrCert The attribute certificate which should be checked.
+ @param paramsPKIX PKIX parameters.
+ @param validDate The date when the certificate revocation status should
+ be checked.
+ @param issuerCert Certificate to check if it is revoked.
+ @param reasonMask The reasons mask which is already checked.
+ @param certPathCerts The certificates of the certification path to be
+ checked.
+ @throws Exception if the certificate is revoked or the status
+ cannot be checked or some error occurs.
+
+
+
+ A trust anchor or most-trusted Certification Authority (CA).
+
+ This class represents a "most-trusted CA", which is used as a trust anchor
+ for validating X.509 certification paths. A most-trusted CA includes the
+ public key of the CA, the CA's name, and any constraints upon the set of
+ paths which may be validated using this key. These parameters can be
+ specified in the form of a trusted X509Certificate or as individual
+ parameters.
+
+
+
+
+ Creates an instance of TrustAnchor with the specified X509Certificate and
+ optional name constraints, which are intended to be used as additional
+ constraints when validating an X.509 certification path.
+ The name constraints are specified as a byte array. This byte array
+ should contain the DER encoded form of the name constraints, as they
+ would appear in the NameConstraints structure defined in RFC 2459 and
+ X.509. The ASN.1 definition of this structure appears below.
+
+
+ NameConstraints ::= SEQUENCE {
+ permittedSubtrees [0] GeneralSubtrees OPTIONAL,
+ excludedSubtrees [1] GeneralSubtrees OPTIONAL }
+
+ GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
+
+ GeneralSubtree ::= SEQUENCE {
+ base GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL }
+
+ BaseDistance ::= INTEGER (0..MAX)
+
+ GeneralName ::= CHOICE {
+ otherName [0] OtherName,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER}
+
+
+ Note that the name constraints byte array supplied is cloned to protect
+ against subsequent modifications.
+
+ a trusted X509Certificate
+ a byte array containing the ASN.1 DER encoding of a
+ NameConstraints extension to be used for checking name
+ constraints. Only the value of the extension is included, not
+ the OID or criticality flag. Specify null to omit the
+ parameter.
+ if the specified X509Certificate is null
+
+
+
+ Creates an instance of TrustAnchor where the
+ most-trusted CA is specified as an X500Principal and public key.
+
+
+
+ Name constraints are an optional parameter, and are intended to be used
+ as additional constraints when validating an X.509 certification path.
+
+ The name constraints are specified as a byte array. This byte array
+ contains the DER encoded form of the name constraints, as they
+ would appear in the NameConstraints structure defined in RFC 2459
+ and X.509. The ASN.1 notation for this structure is supplied in the
+ documentation for the other constructors.
+
+ Note that the name constraints byte array supplied here is cloned to
+ protect against subsequent modifications.
+
+
+ the name of the most-trusted CA as X509Name
+ the public key of the most-trusted CA
+
+ a byte array containing the ASN.1 DER encoding of a NameConstraints extension to
+ be used for checking name constraints. Only the value of the extension is included,
+ not the OID or criticality flag. Specify null to omit the parameter.
+
+
+ if caPrincipal or pubKey is null
+
+
+
+
+ Creates an instance of TrustAnchor
where the most-trusted
+ CA is specified as a distinguished name and public key. Name constraints
+ are an optional parameter, and are intended to be used as additional
+ constraints when validating an X.509 certification path.
+
+ The name constraints are specified as a byte array. This byte array
+ contains the DER encoded form of the name constraints, as they would
+ appear in the NameConstraints structure defined in RFC 2459 and X.509.
+
+ the X.500 distinguished name of the most-trusted CA in RFC
+ 2253 string format
+ the public key of the most-trusted CA
+ a byte array containing the ASN.1 DER encoding of a
+ NameConstraints extension to be used for checking name
+ constraints. Only the value of the extension is included, not
+ the OID or criticality flag. Specify null to omit the
+ parameter.
+ throws NullPointerException, IllegalArgumentException
+
+
+
+ Returns the most-trusted CA certificate.
+
+
+
+
+ Returns the name of the most-trusted CA as an X509Name.
+
+
+
+
+ Returns the name of the most-trusted CA in RFC 2253 string format.
+
+
+
+
+ Returns the public key of the most-trusted CA.
+
+
+
+
+ Decode the name constraints and clone them if not null.
+
+
+
+
+ Returns a formatted string describing the TrustAnchor
.
+
+ a formatted string describing the TrustAnchor
+
+
+ Recognised hash algorithms for the time stamp protocol.
+
+
+ Fetches the signature time-stamp attributes from a SignerInformation object.
+ Checks that the MessageImprint for each time-stamp matches the signature field.
+ (see RFC 3161 Appendix A).
+
+ @param signerInfo a SignerInformation to search for time-stamps
+ @return a collection of TimeStampToken objects
+ @throws TSPValidationException
+
+
+ Validate the passed in certificate as being of the correct type to be used
+ for time stamping. To be valid it must have an ExtendedKeyUsage extension
+ which has a key purpose identifier of id-kp-timeStamping.
+
+ @param cert the certificate of interest.
+ @throws TspValidationException if the certicate fails on one of the check points.
+
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Exception thrown if a TSP request or response fails to validate.
+
+ If a failure code is associated with the exception it can be retrieved using
+ the getFailureCode() method.
+
+
+ Return the failure code associated with this exception - if one is set.
+
+ @return the failure code if set, -1 otherwise.
+
+
+ Base class for an RFC 3161 Time Stamp Request.
+
+
+ Create a TimeStampRequest from the past in byte array.
+
+ @param req byte array containing the request.
+ @throws IOException if the request is malformed.
+
+
+ Create a TimeStampRequest from the past in input stream.
+
+ @param in input stream containing the request.
+ @throws IOException if the request is malformed.
+
+
+ Validate the timestamp request, checking the digest to see if it is of an
+ accepted type and whether it is of the correct length for the algorithm specified.
+
+ @param algorithms a set of string OIDS giving accepted algorithms.
+ @param policies if non-null a set of policies we are willing to sign under.
+ @param extensions if non-null a set of extensions we are willing to accept.
+ @throws TspException if the request is invalid, or processing fails.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Generator for RFC 3161 Time Stamp Request objects.
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ @throws IOException
+
+
+ add a given extension field for the standard extensions tag
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ @throws IOException
+
+
+ add a given extension field for the standard extensions tag
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+ Base class for an RFC 3161 Time Stamp Response object.
+
+
+ Create a TimeStampResponse from a byte array containing an ASN.1 encoding.
+
+ @param resp the byte array containing the encoded response.
+ @throws TspException if the response is malformed.
+ @throws IOException if the byte array doesn't represent an ASN.1 encoding.
+
+
+ Create a TimeStampResponse from an input stream containing an ASN.1 encoding.
+
+ @param input the input stream containing the encoded response.
+ @throws TspException if the response is malformed.
+ @throws IOException if the stream doesn't represent an ASN.1 encoding.
+
+
+ Check this response against to see if it a well formed response for
+ the passed in request. Validation will include checking the time stamp
+ token if the response status is GRANTED or GRANTED_WITH_MODS.
+
+ @param request the request to be checked against
+ @throws TspException if the request can not match this response.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Generator for RFC 3161 Time Stamp Responses.
+
+
+ Return an appropriate TimeStampResponse.
+
+ If genTime is null a timeNotAvailable error response will be returned.
+
+ @param request the request this response is for.
+ @param serialNumber serial number for the response token.
+ @param genTime generation time for the response token.
+ @param provider provider to use for signature calculation.
+ @return
+ @throws NoSuchAlgorithmException
+ @throws NoSuchProviderException
+ @throws TSPException
+
+
+
+ Generate a TimeStampResponse with chosen status and FailInfoField.
+
+ @param status the PKIStatus to set.
+ @param failInfoField the FailInfoField to set.
+ @param statusString an optional string describing the failure.
+ @return a TimeStampResponse with a failInfoField and optional statusString
+ @throws TSPException in case the response could not be created
+
+
+ Validate the time stamp token.
+
+ To be valid the token must be signed by the passed in certificate and
+ the certificate must be the one referred to by the SigningCertificate
+ attribute included in the hashed attributes of the token. The
+ certificate must also have the ExtendedKeyUsageExtension with only
+ KeyPurposeID.IdKPTimeStamping and have been valid at the time the
+ timestamp was created.
+
+
+ A successful call to validate means all the above are true.
+
+
+
+ Return the underlying CmsSignedData object.
+
+ @return the underlying CMS structure.
+
+
+ Return a ASN.1 encoded byte stream representing the encoded object.
+
+ @throws IOException if encoding fails.
+
+
+ basic creation - only the default attributes will be included here.
+
+
+ create with a signer with extra signed/unsigned attributes.
+
+
+ @return the nonce value, null if there isn't one.
+
+
+ General array utilities.
+
+
+
+ Are two arrays equal.
+
+ Left side.
+ Right side.
+ True if equal.
+
+
+
+ A constant time equals comparison - does not terminate early if
+ test will fail.
+
+ first array
+ second array
+ true if arrays equal, false otherwise.
+
+
+ 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.
+
+
+ BigInteger utilities.
+
+
+ Return the passed in value as an unsigned byte array.
+
+ @param value value to be converted.
+ @return a byte array without a leading zero byte if present in the signed encoding.
+
+
+ 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.
+
+
+ Return a random BigInteger not less than 'min' and not greater than 'max'
+
+ @param min the least value that may be generated
+ @param max the greatest value that may be generated
+ @param random the source of randomness
+ @return a random BigInteger value in the range [min,max]
+
+
+
+ Produce a copy of this object with its configuration and in its current state.
+
+
+ The returned object may be used simply to store the state, or may be used as a similar object
+ starting from the copied state.
+
+
+
+
+ Restore a copied object state into this object.
+
+
+ Implementations of this method should try to avoid or minimise memory allocation to perform the reset.
+
+ an object originally {@link #copy() copied} from an object of the same type as this instance.
+ if the provided object is not of the correct type.
+ if the other parameter is in some other way invalid.
+
+
+ Exception to be thrown on a failure to reset an object implementing Memoable.
+
+ The exception extends InvalidCastException to enable users to have a single handling case,
+ only introducing specific handling of this one if required.
+
+
+
+ Basic Constructor.
+
+ @param msg message to be associated with this exception.
+
+
+ General string utilities.
+
+
+
+ Return the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC) for a given DateTime value.
+
+ A UTC DateTime value not before epoch.
+ Number of whole milliseconds after epoch.
+ 'dateTime' is before epoch.
+
+
+
+ Create a DateTime value from the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC).
+
+ Number of milliseconds since the epoch.
+ A UTC DateTime value
+
+
+
+ Return the current number of milliseconds since the Unix epoch (1 Jan., 1970 UTC).
+
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+ @return a byte array containing the base 64 encoded data.
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+ @return a byte array containing the base 64 encoded data.
+
+
+ Encode the byte data to base 64 writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Encode the byte data to base 64 writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the base 64 encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ encode the input data producing a base 64 output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ A buffering class to allow translation from one format to another to
+ be done in discrete chunks.
+
+
+
+
+ Create a buffered Decoder.
+
+ The translater to use.
+ The size of the buffer.
+
+
+
+ Process one byte of data.
+
+ Data in.
+ Byte array for the output.
+ The offset in the output byte array to start writing from.
+ The amount of output bytes.
+
+
+
+ Process data from a byte array.
+
+ The input data.
+ Start position within input data array.
+ Amount of data to process from input data array.
+ Array to store output.
+ Position in output array to start writing from.
+ The amount of output bytes.
+
+
+
+ A class that allows encoding of data using a specific encoder to be processed in chunks.
+
+
+
+
+ Create.
+
+ The translator to use.
+ Size of the chunks.
+
+
+
+ Process one byte of data.
+
+ The byte.
+ An array to store output in.
+ Offset within output array to start writing from.
+
+
+
+
+ Process data from a byte array.
+
+ Input data Byte array containing data to be processed.
+ Start position within input data array.
+ Amount of input data to be processed.
+ Output data array.
+ Offset within output data array to start writing to.
+ The amount of data written.
+
+
+
+ Class to decode and encode Hex.
+
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ encode the input data producing a Hex output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ A hex translator.
+
+
+
+
+ Return encoded block size.
+
+ 2
+
+
+
+ Encode some data.
+
+ Input data array.
+ Start position within input data array.
+ The amount of data to process.
+ The output data array.
+ The offset within the output data array to start writing from.
+ Amount of data encoded.
+
+
+
+ Returns the decoded block size.
+
+ 1
+
+
+
+ Decode data from a byte array.
+
+ The input data array.
+ Start position within input data array.
+ The amounty of data to process.
+ The output data array.
+ The position within the output data array to start writing from.
+ The amount of data written.
+
+
+ Encode and decode byte arrays (typically from binary to 7-bit ASCII
+ encodings).
+
+
+
+ Translator interface.
+
+
+
+ Convert binary data to and from UrlBase64 encoding. This is identical to
+ Base64 encoding, except that the padding character is "." and the other
+ non-alphanumeric characters are "-" and "_" instead of "+" and "/".
+
+ The purpose of UrlBase64 encoding is to provide a compact encoding of binary
+ data that is safe for use as an URL parameter. Base64 encoding does not
+ produce encoded values that are safe for use in URLs, since "/" can be
+ interpreted as a path delimiter; "+" is the encoded form of a space; and
+ "=" is used to separate a name from the corresponding value in an URL
+ parameter.
+
+
+
+ Encode the input data producing a URL safe base 64 encoded byte array.
+
+ @return a byte array containing the URL safe base 64 encoded data.
+
+
+ Encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Decode the URL safe base 64 encoded input data - white space will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the URL safe base 64 encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the URL safe base 64 encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ Decode the URL safe base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ Convert binary data to and from UrlBase64 encoding. This is identical to
+ Base64 encoding, except that the padding character is "." and the other
+ non-alphanumeric characters are "-" and "_" instead of "+" and "/".
+
+ The purpose of UrlBase64 encoding is to provide a compact encoding of binary
+ data that is safe for use as an URL parameter. Base64 encoding does not
+ produce encoded values that are safe for use in URLs, since "/" can be
+ interpreted as a path delimiter; "+" is the encoded form of a space; and
+ "=" is used to separate a name from the corresponding value in an URL
+ parameter.
+
+
+
+
+ Pipe all bytes from inStr to outStr, throwing StreamFlowException if greater
+ than limit bytes in inStr.
+
+
+ A
+
+
+ A
+
+
+ A
+
+ The number of bytes actually transferred, if not greater than limit
+
+
+
+
+ A
+
+
+
+
+
+ A
+
+
+ A
+
+
+
+
+
+ A
+
+
+
+
+ A generic PEM writer, based on RFC 1421
+
+
+ Base constructor.
+
+ @param out output stream to use.
+
+
+ Return the number of bytes or characters required to contain the
+ passed in object if it is PEM encoded.
+
+ @param obj pem object to be output
+ @return an estimate of the number of bytes
+
+
+ Validate the given IPv4 or IPv6 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid address, false otherwise
+
+
+ Validate the given IPv4 or IPv6 address and netmask.
+
+ @param address the IP address as a string.
+
+ @return true if a valid address with netmask, false otherwise
+
+
+ Validate the given IPv4 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid IPv4 address, false otherwise
+
+
+ Validate the given IPv6 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid IPv4 address, false otherwise
+
+
+
+ Summary description for DeflaterOutputStream.
+
+
+
+
+ Summary description for DeflaterOutputStream.
+
+
+
+
+ The Holder object.
+
+ Holder ::= SEQUENCE {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+
+ Constructs a holder for v2 attribute certificates with a hash value for
+ some type of object.
+
+ digestedObjectType
can be one of the following:
+
+ - 0 - publicKey - A hash of the public key of the holder must be
+ passed.
+ - 1 - publicKeyCert - A hash of the public key certificate of the
+ holder must be passed.
+ - 2 - otherObjectDigest - A hash of some other object type must be
+ passed.
otherObjectTypeID
must not be empty.
+
+
+ This cannot be used if a v1 attribute certificate is used.
+
+ @param digestedObjectType The digest object type.
+ @param digestAlgorithm The algorithm identifier for the hash.
+ @param otherObjectTypeID The object type ID if
+ digestedObjectType
is
+ otherObjectDigest
.
+ @param objectDigest The hash value.
+
+
+ Returns the digest object type if an object digest info is used.
+
+
+ - 0 - publicKey - A hash of the public key of the holder must be
+ passed.
+ - 1 - publicKeyCert - A hash of the public key certificate of the
+ holder must be passed.
+ - 2 - otherObjectDigest - A hash of some other object type must be
+ passed.
otherObjectTypeID
must not be empty.
+
+
+
+ @return The digest object type or -1 if no object digest info is set.
+
+
+ Returns the other object type ID if an object digest info is used.
+
+ @return The other object type ID or null
if no object
+ digest info is set.
+
+
+ Returns the hash if an object digest info is used.
+
+ @return The hash or null
if no object digest info is set.
+
+
+ Returns the digest algorithm ID if an object digest info is used.
+
+ @return The digest algorithm ID or null
if no object
+ digest info is set.
+
+
+ Return any principal objects inside the attribute certificate holder entity names field.
+
+ @return an array of IPrincipal objects (usually X509Name), null if no entity names field is set.
+
+
+ Return the principals associated with the issuer attached to this holder
+
+ @return an array of principals, null if no BaseCertificateID is set.
+
+
+ Return the serial number associated with the issuer attached to this holder.
+
+ @return the certificate serial number, null if no BaseCertificateID is set.
+
+
+ Carrying class for an attribute certificate issuer.
+
+
+ Set the issuer directly with the ASN.1 structure.
+
+ @param issuer The issuer
+
+
+ Return any principal objects inside the attribute certificate issuer object.
+ An array of IPrincipal objects (usually X509Principal).
+
+
+ Interface for an X.509 Attribute Certificate.
+
+
+ The version number for the certificate.
+
+
+ The serial number for the certificate.
+
+
+ The UTC DateTime before which the certificate is not valid.
+
+
+ The UTC DateTime after which the certificate is not valid.
+
+
+ The holder of the certificate.
+
+
+ The issuer details for the certificate.
+
+
+ Return the attributes contained in the attribute block in the certificate.
+ An array of attributes.
+
+
+ Return the attributes with the same type as the passed in oid.
+ The object identifier we wish to match.
+ An array of matched attributes, null if there is no match.
+
+
+ Return an ASN.1 encoded byte array representing the attribute certificate.
+ An ASN.1 encoded byte array.
+ If the certificate cannot be encoded.
+
+
+
+ Get all critical extension values, by oid
+
+ IDictionary with string (OID) keys and Asn1OctetString values
+
+
+
+ Get all non-critical extension values, by oid
+
+ IDictionary with string (OID) keys and Asn1OctetString values
+
+
+
+ A utility class that will extract X509Principal objects from X.509 certificates.
+
+ Use this in preference to trying to recreate a principal from a string, not all
+ DNs are what they should be, so it's best to leave them encoded where they
+ can be.
+
+
+
+ Return the issuer of the given cert as an X509Principal.
+
+
+ Return the subject of the given cert as an X509Principal.
+
+
+ Return the issuer of the given CRL as an X509Principal.
+
+
+
+ A factory to produce Public Key Info Objects.
+
+
+
+
+ Create a Subject Public Key Info object for a given public key.
+
+ One of ElGammalPublicKeyParameters, DSAPublicKeyParameter, DHPublicKeyParameters, RsaKeyParameters or ECPublicKeyParameters
+ A subject public key info object.
+ Throw exception if object provided is not one of the above.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate object and initializes it with the data
+ read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the certificates
+ read from the given input stream inStream.
+
+
+ Class for carrying the values in an X.509 Attribute.
+
+
+ @param at an object representing an attribute.
+
+
+ Create an X.509 Attribute with the type given by the passed in oid and
+ the value represented by an ASN.1 Set containing value.
+
+ @param oid type of the attribute
+ @param value value object to go into the atribute's value set.
+
+
+ Create an X.59 Attribute with the type given by the passed in oid and the
+ value represented by an ASN.1 Set containing the objects in value.
+
+ @param oid type of the attribute
+ @param value vector of values to go in the attribute's value set.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ An Object representing an X509 Certificate.
+ Has static methods for loading Certificates encoded in many forms that return X509Certificate Objects.
+
+
+
+
+ Return true if the current time is within the start and end times nominated on the certificate.
+
+ true id certificate is valid for the current time.
+
+
+
+ Return true if the nominated time is within the start and end times nominated on the certificate.
+
+ The time to test validity against.
+ True if certificate is valid for nominated time.
+
+
+
+ Checks if the current date is within certificate's validity period.
+
+
+
+
+ Checks if the given date is within certificate's validity period.
+
+ if the certificate is expired by given date
+ if the certificate is not yet valid on given date
+
+
+
+ Return the certificate's version.
+
+ An integer whose value Equals the version of the cerficate.
+
+
+
+ Return a BigInteger containing the serial number.
+
+ The Serial number.
+
+
+
+ Get the Issuer Distinguished Name. (Who signed the certificate.)
+
+ And X509Object containing name and value pairs.
+
+
+
+ Get the subject of this certificate.
+
+ An X509Name object containing name and value pairs.
+
+
+
+ The time that this certificate is valid from.
+
+ A DateTime object representing that time in the local time zone.
+
+
+
+ The time that this certificate is valid up to.
+
+ A DateTime object representing that time in the local time zone.
+
+
+
+ Return the Der encoded TbsCertificate data.
+ This is the certificate component less the signature.
+ To Get the whole certificate call the GetEncoded() member.
+
+ A byte array containing the Der encoded Certificate component.
+
+
+
+ The signature.
+
+ A byte array containg the signature of the certificate.
+
+
+
+ A meaningful version of the Signature Algorithm. (EG SHA1WITHRSA)
+
+ A sting representing the signature algorithm.
+
+
+
+ Get the Signature Algorithms Object ID.
+
+ A string containg a '.' separated object id.
+
+
+
+ Get the signature algorithms parameters. (EG DSA Parameters)
+
+ A byte array containing the Der encoded version of the parameters or null if there are none.
+
+
+
+ Get the issuers UID.
+
+ A DerBitString.
+
+
+
+ Get the subjects UID.
+
+ A DerBitString.
+
+
+
+ Get a key usage guidlines.
+
+
+
+
+ Get the public key of the subject of the certificate.
+
+ The public key parameters.
+
+
+
+ Return a Der encoded version of this certificate.
+
+ A byte array.
+
+
+
+ Verify the certificate's signature using the nominated public key.
+
+ An appropriate public key parameter object, RsaPublicKeyParameters, DsaPublicKeyParameters or ECDsaPublicKeyParameters
+ True if the signature is valid.
+ If key submitted is not of the above nominated types.
+
+
+
+ Verify the certificate's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the certificate's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the certificate algorithm is invalid.
+
+
+
+ This class contains a cross certificate pair. Cross certificates pairs may
+ contain two cross signed certificates from two CAs. A certificate from the
+ other CA to this CA is contained in the forward certificate, the certificate
+ from this CA to the other CA is contained in the reverse certificate.
+
+
+
+ Constructor
+ Certificate from the other CA to this CA.
+ Certificate from this CA to the other CA.
+
+
+ Constructor from a ASN.1 CertificatePair structure.
+ The CertificatePair ASN.1 object.
+
+
+ Returns the certificate from the other CA to this CA.
+
+
+ Returns the certificate from this CA to the other CA.
+
+
+ class for dealing with X509 certificates.
+
+ At the moment this will deal with "-----BEGIN CERTIFICATE-----" to "-----END CERTIFICATE-----"
+ base 64 encoded certs, as well as the BER binaries of certificates and some classes of PKCS#7
+ objects.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate object and initializes it with the data
+ read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the certificates
+ read from the given input stream inStream.
+
+
+ The following extensions are listed in RFC 2459 as relevant to CRLs
+
+ Authority Key Identifier
+ Issuer Alternative Name
+ CRL Number
+ Delta CRL Indicator (critical)
+ Issuing Distribution Point (critical)
+
+
+
+ Verify the CRL's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the CRL's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the CRL algorithm is invalid.
+
+
+ Returns a string representation of this CRL.
+
+ @return a string representation of this CRL.
+
+
+ Checks whether the given certificate is on this CRL.
+
+ @param cert the certificate to check for.
+ @return true if the given certificate is on this CRL,
+ false otherwise.
+
+
+ The following extensions are listed in RFC 2459 as relevant to CRL Entries
+
+ ReasonCode Hode Instruction Code Invalidity Date Certificate Issuer
+ (critical)
+
+
+ Constructor for CRLEntries of indirect CRLs. If isIndirect
+ is false
{@link #getCertificateIssuer()} will always
+ return null
, previousCertificateIssuer
is
+ ignored. If this isIndirect
is specified and this CrlEntry
+ has no certificate issuer CRL entry extension
+ previousCertificateIssuer
is returned by
+ {@link #getCertificateIssuer()}.
+
+ @param c
+ TbsCertificateList.CrlEntry object.
+ @param isIndirect
+ true
if the corresponding CRL is a indirect
+ CRL.
+ @param previousCertificateIssuer
+ Certificate issuer of the previous CrlEntry.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate revocation list (CRL) object and initializes
+ it with the data read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the CRLs read from
+ the given input stream inStream.
+
+ The inStream may contain a sequence of DER-encoded CRLs, or
+ a PKCS#7 CRL set. This is a PKCS#7 SignedData object, with the
+ only significant field being crls. In particular the signature
+ and the contents are ignored.
+
+
+
+ Get non critical extensions.
+
+ A set of non critical extension oids.
+
+
+
+ Get any critical extensions.
+
+ A sorted list of critical entension.
+
+
+
+ Get the value of a given extension.
+
+ The object ID of the extension.
+ An Asn1OctetString object if that extension is found or null if not.
+
+
+ A holding class for constructing an X509 Key Usage extension.
+
+
+ id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
+
+ KeyUsage ::= BIT STRING {
+ digitalSignature (0),
+ nonRepudiation (1),
+ keyEncipherment (2),
+ dataEncipherment (3),
+ keyAgreement (4),
+ keyCertSign (5),
+ cRLSign (6),
+ encipherOnly (7),
+ decipherOnly (8) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (X509KeyUsage.keyEncipherment | X509KeyUsage.dataEncipherment)
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Class to Generate X509V1 Certificates.
+
+
+
+
+ Default Constructor.
+
+
+
+
+ Reset the generator.
+
+
+
+
+ Set the certificate's serial number.
+
+ Make serial numbers long, if you have no serial number policy make sure the number is at least 16 bytes of secure random data.
+ You will be surprised how ugly a serial number collision can get.
+ The serial number.
+
+
+
+ Set the issuer distinguished name.
+ The issuer is the entity whose private key is used to sign the certificate.
+
+ The issuers DN.
+
+
+
+ Set the date that this certificate is to be valid from.
+
+
+
+
+
+ Set the date after which this certificate will no longer be valid.
+
+
+
+
+
+ Set the subject distinguished name.
+ The subject describes the entity associated with the public key.
+
+
+
+
+
+ Set the public key that this certificate identifies.
+
+
+
+
+
+ Set the signature algorithm that will be used to sign this certificate.
+ This can be either a name or an OID, names are treated as case insensitive.
+
+ string representation of the algorithm name
+
+
+
+ Generate a new X509Certificate.
+
+ The private key of the issuer used to sign this certificate.
+ An X509Certificate.
+
+
+
+ Generate a new X509Certificate specifying a SecureRandom instance that you would like to use.
+
+ The private key of the issuer used to sign this certificate.
+ The Secure Random you want to use.
+ An X509Certificate.
+
+
+
+ Generate a new X509Certificate using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An X509Certificate.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ An implementation of a version 2 X.509 Attribute Certificate.
+
+
+
+ Verify the certificate's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the certificate's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the certificate algorithm is invalid.
+
+
+ Class to produce an X.509 Version 2 AttributeCertificate.
+
+
+ Reset the generator
+
+
+ Set the Holder of this Attribute Certificate.
+
+
+ Set the issuer.
+
+
+ Set the serial number for the certificate.
+
+
+
+ Set the signature algorithm. This can be either a name or an OID, names
+ are treated as case insensitive.
+
+ The algorithm name.
+
+
+ Add an attribute.
+
+
+ Add a given extension field for the standard extensions tag.
+
+
+
+ Add a given extension field for the standard extensions tag.
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+
+
+ Generate an X509 certificate, based on the current issuer and subject.
+
+
+
+
+ Generate an X509 certificate, based on the current issuer and subject,
+ using the supplied source of randomness, if required.
+
+
+
+
+ Generate a new X.509 Attribute Certificate using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An IX509AttributeCertificate.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ class to produce an X.509 Version 2 CRL.
+
+
+ reset the generator
+
+
+ Set the issuer distinguished name - the issuer is the entity whose private key is used to sign the
+ certificate.
+
+
+ Reason being as indicated by CrlReason, i.e. CrlReason.KeyCompromise
+ or 0 if CrlReason is not to be used
+
+
+
+ Add a CRL entry with an Invalidity Date extension as well as a CrlReason extension.
+ Reason being as indicated by CrlReason, i.e. CrlReason.KeyCompromise
+ or 0 if CrlReason is not to be used
+
+
+
+ Add a CRL entry with extensions.
+
+
+
+ Add the CRLEntry objects contained in a previous CRL.
+
+ @param other the X509Crl to source the other entries from.
+
+
+
+ Set the signature algorithm that will be used to sign this CRL.
+
+
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+
+ Generate an X.509 CRL, based on the current issuer and subject.
+
+ The private key of the issuer that is signing this certificate.
+ An X509Crl.
+
+
+
+ Generate an X.509 CRL, based on the current issuer and subject using the specified secure random.
+
+ The private key of the issuer that is signing this certificate.
+ Your Secure Random instance.
+ An X509Crl.
+
+
+
+ Generate a new X509Crl using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An X509Crl.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+
+ A class to Generate Version 3 X509Certificates.
+
+
+
+
+ Reset the Generator.
+
+
+
+
+ Set the certificate's serial number.
+
+ Make serial numbers long, if you have no serial number policy make sure the number is at least 16 bytes of secure random data.
+ You will be surprised how ugly a serial number collision can Get.
+ The serial number.
+
+
+
+ Set the distinguished name of the issuer.
+ The issuer is the entity which is signing the certificate.
+
+ The issuer's DN.
+
+
+
+ Set the date that this certificate is to be valid from.
+
+
+
+
+
+ Set the date after which this certificate will no longer be valid.
+
+
+
+
+
+ Set the DN of the entity that this certificate is about.
+
+
+
+
+
+ Set the public key that this certificate identifies.
+
+
+
+
+
+ Set the signature algorithm that will be used to sign this certificate.
+
+
+
+
+
+ Set the subject unique ID - note: it is very rare that it is correct to do this.
+
+
+
+
+
+ Set the issuer unique ID - note: it is very rare that it is correct to do this.
+
+
+
+
+
+ Add a given extension field for the standard extensions tag (tag 3).
+
+ string containing a dotted decimal Object Identifier.
+ Is it critical.
+ The value.
+
+
+
+ Add an extension to this certificate.
+
+ Its Object Identifier.
+ Is it critical.
+ The value.
+
+
+
+ Add an extension using a string with a dotted decimal OID.
+
+ string containing a dotted decimal Object Identifier.
+ Is it critical.
+ byte[] containing the value of this extension.
+
+
+
+ Add an extension to this certificate.
+
+ Its Object Identifier.
+ Is it critical.
+ byte[] containing the value of this extension.
+
+
+
+ Add a given extension field for the standard extensions tag (tag 3),
+ copying the extension value from another certificate.
+
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ copying the extension value from another certificate.
+ @throws CertificateParsingException if the extension cannot be extracted.
+
+
+
+ Generate an X509Certificate.
+
+ The private key of the issuer that is signing this certificate.
+ An X509Certificate.
+
+
+
+ Generate an X509Certificate using your own SecureRandom.
+
+ The private key of the issuer that is signing this certificate.
+ You Secure Random instance.
+ An X509Certificate.
+
+
+
+ Generate a new X509Certificate using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An X509Certificate.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ A high level authority key identifier.
+
+
+ Constructor which will take the byte[] returned from getExtensionValue()
+
+ @param encodedValue a DER octet encoded string with the extension structure in it.
+ @throws IOException on parsing errors.
+
+
+ Create an AuthorityKeyIdentifier using the passed in certificate's public
+ key, issuer and serial number.
+
+ @param certificate the certificate providing the information.
+ @throws CertificateParsingException if there is a problem processing the certificate
+
+
+ Create an AuthorityKeyIdentifier using just the hash of the
+ public key.
+
+ @param pubKey the key to generate the hash from.
+ @throws InvalidKeyException if there is a problem using the key.
+
+
+ A high level subject key identifier.
+
+
+ Constructor which will take the byte[] returned from getExtensionValue()
+
+ @param encodedValue a DER octet encoded string with the extension structure in it.
+ @throws IOException on parsing errors.
+
+
+ This class is an Selector
like implementation to select
+ attribute certificates from a given set of criteria.
+
+ @see org.bouncycastle.x509.X509AttributeCertificate
+ @see org.bouncycastle.x509.X509Store
+
+
+
+ Decides if the given attribute certificate should be selected.
+
+ The attribute certificate to be checked.
+ true
if the object matches this selector.
+
+
+ The attribute certificate which must be matched.
+ If null is given, any will do.
+
+
+ The criteria for validity
+ If null is given any will do.
+
+
+ The holder.
+ If null is given any will do.
+
+
+ The issuer.
+ If null is given any will do.
+
+
+ The serial number.
+ If null is given any will do.
+
+
+ Adds a target name criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target names.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name The name as a GeneralName (not null
)
+
+
+ Adds a target name criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target names.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name a byte array containing the name in ASN.1 DER encoded form of a GeneralName
+ @throws IOException if a parsing error occurs.
+
+
+ Adds a collection with target names criteria. If null
is
+ given any will do.
+
+ The collection consists of either GeneralName objects or byte[] arrays representing
+ DER encoded GeneralName structures.
+
+
+ @param names A collection of target names.
+ @throws IOException if a parsing error occurs.
+ @see #AddTargetName(byte[])
+ @see #AddTargetName(GeneralName)
+
+
+ Gets the target names. The collection consists of List
s
+ made up of an Integer
in the first entry and a DER encoded
+ byte array or a String
in the second entry.
+ The returned collection is immutable.
+
+ @return The collection of target names
+ @see #setTargetNames(Collection)
+
+
+ Adds a target group criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target groups.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param group The group as GeneralName form (not null
)
+
+
+ Adds a target group criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target groups.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name a byte array containing the group in ASN.1 DER encoded form of a GeneralName
+ @throws IOException if a parsing error occurs.
+
+
+ Adds a collection with target groups criteria. If null
is
+ given any will do.
+
+ The collection consists of GeneralName
objects or byte[]
+ representing DER encoded GeneralNames.
+
+
+ @param names A collection of target groups.
+ @throws IOException if a parsing error occurs.
+ @see #AddTargetGroup(byte[])
+ @see #AddTargetGroup(GeneralName)
+
+
+ Gets the target groups. The collection consists of List
s
+ made up of an Integer
in the first entry and a DER encoded
+ byte array or a String
in the second entry.
+ The returned collection is immutable.
+
+ @return The collection of target groups.
+ @see #setTargetGroups(Collection)
+
+
+
+ This class is an IX509Selector
implementation to select
+ certificate pairs, which are e.g. used for cross certificates. The set of
+ criteria is given from two X509CertStoreSelector
objects,
+ each of which, if present, must match the respective component of a pair.
+
+
+
+ The certificate pair which is used for testing on equality.
+
+
+ The certificate selector for the forward part.
+
+
+ The certificate selector for the reverse part.
+
+
+
+ Decides if the given certificate pair should be selected. If
+ obj is not a X509CertificatePair
, this method
+ returns false
.
+
+ The X509CertificatePair
to be tested.
+ true
if the object matches this selector.
+
+
+
+ An ISet
of DerObjectIdentifier
objects.
+
+
+
+ A simple collection backed store.
+
+
+ Basic constructor.
+
+ @param collection - initial contents for the store, this is copied.
+
+
+ Return the matches in the collection for the passed in selector.
+
+ @param selector the selector to match against.
+ @return a possibly empty collection of matching objects.
+
+
+ This class contains a collection for collection based X509Store
s.
+
+
+
+ Constructor.
+
+ The collection is copied.
+
+
+ The collection containing X.509 object types.
+ If collection is null.
+
+
+ Returns a copy of the ICollection
.
+
+
+ Returns a formatted string describing the parameters.
+
+
+
+ An ICollection
of X509Name
objects
+
+
+
+ The attribute certificate being checked. This is not a criterion.
+ Rather, it is optional information that may help a {@link X509Store} find
+ CRLs that would be relevant when checking revocation for the specified
+ attribute certificate. If null
is specified, then no such
+ optional information is provided.
+
+ @param attrCert the IX509AttributeCertificate
being checked (or
+ null
)
+ @see #getAttrCertificateChecking()
+
+
+ If true
only complete CRLs are returned. Defaults to
+ false
.
+
+ @return true
if only complete CRLs are returned.
+
+
+ Returns if this selector must match CRLs with the delta CRL indicator
+ extension set. Defaults to false
.
+
+ @return Returns true
if only CRLs with the delta CRL
+ indicator extension are selected.
+
+
+ The issuing distribution point.
+
+ The issuing distribution point extension is a CRL extension which
+ identifies the scope and the distribution point of a CRL. The scope
+ contains among others information about revocation reasons contained in
+ the CRL. Delta CRLs and complete CRLs must have matching issuing
+ distribution points.
+
+ The byte array is cloned to protect against subsequent modifications.
+
+ You must also enable or disable this criteria with
+ {@link #setIssuingDistributionPointEnabled(bool)}.
+
+ @param issuingDistributionPoint The issuing distribution point to set.
+ This is the DER encoded OCTET STRING extension value.
+ @see #getIssuingDistributionPoint()
+
+
+ Whether the issuing distribution point criteria should be applied.
+ Defaults to false
.
+
+ You may also set the issuing distribution point criteria if not a missing
+ issuing distribution point should be assumed.
+
+ @return Returns if the issuing distribution point check is enabled.
+
+
+ The maximum base CRL number. Defaults to null
.
+
+ @return Returns the maximum base CRL number.
+ @see #setMaxBaseCRLNumber(BigInteger)
+
+
+
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.dll
new file mode 100644
index 00000000..140a7abd
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.dll.config b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.dll.config
new file mode 100644
index 00000000..bd80214e
--- /dev/null
+++ b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.dll.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.pdb
new file mode 100644
index 00000000..720e520b
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/MimeKit.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/MimeKit.dll
new file mode 100644
index 00000000..8a58db8f
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/MimeKit.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/MimeKit.xml b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/MimeKit.xml
new file mode 100644
index 00000000..8fc68d18
--- /dev/null
+++ b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU12/MimeKit.xml
@@ -0,0 +1,38398 @@
+
+
+
+ MimeKit
+
+
+
+
+ A MIME part with a Content-Type of application/pgp-encrypted.
+
+
+ An application/pgp-encrypted part will typically be the first child of
+ a part and contains only a Version
+ header.
+
+
+
+
+ Initializes a new instance of the
+ class based on the .
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME part with a Content-Type of application/pgp-encrypted
+ and content matching "Version: 1\n".
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A MIME part with a Content-Type of application/pgp-signature.
+
+
+ An application/pgp-signature part contains detatched pgp signature data
+ and is typically contained within a part.
+ To verify the signature, use the
+ method on the parent multipart/signed part.
+
+
+
+
+ Initializes a new instance of the
+ class based on the .
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with a Content-Type of application/pgp-signature.
+
+
+ Creates a new MIME part with a Content-Type of application/pgp-signature
+ and the as its content.
+
+ The content stream.
+
+ is null.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ An S/MIME part with a Content-Type of application/pkcs7-mime.
+
+
+ An application/pkcs7-mime is an S/MIME part and may contain encrypted,
+ signed or compressed data (or any combination of the above).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME part with a Content-Type of application/pkcs7-mime
+ and the as its content.
+ Unless you are writing your own pkcs7 implementation, you'll probably
+ want to use the ,
+ , and/or
+ method to create new instances
+ of this class.
+
+ The S/MIME type.
+ The content stream.
+
+ is null.
+
+
+ is not a valid value.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Gets the value of the "smime-type" parameter.
+
+
+ Gets the value of the "smime-type" parameter.
+
+ The value of the "smime-type" parameter.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Decompresses the content.
+
+
+ Decompresses the content using the specified .
+
+ The decompressed .
+ The S/MIME context to use for decompressing.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "compressed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decompresses the content.
+
+
+ Decompresses the content using the default .
+
+ The decompressed .
+
+ The "smime-type" parameter on the Content-Type header is not "compressed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypts the content.
+
+
+ Decrypts the content using the specified .
+
+ The decrypted .
+ The S/MIME context to use for decrypting.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "enveloped-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypts the content.
+
+
+ Decrypts the content using the default .
+
+ The decrypted .
+
+ The "smime-type" parameter on the Content-Type header is not "certs-only".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports the certificates contained in the content.
+
+
+ Imports the certificates contained in the content.
+
+ The S/MIME context to import certificates into.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "certs-only".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+ The list of digital signatures.
+ The S/MIME context to use for verifying the signature.
+ The unencapsulated entity.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "signed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+ The list of digital signatures.
+ The unencapsulated entity.
+
+ The "smime-type" parameter on the Content-Type header is not "signed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Compresses the specified entity.
+
+
+ Compresses the specified entity using the specified .
+ Most mail clients, even among those that support S/MIME,
+ do not support compression.
+
+ The compressed entity.
+ The S/MIME context to use for compressing.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Compresses the specified entity.
+
+
+ Compresses the specified entity using the default .
+ Most mail clients, even among those that support S/MIME,
+ do not support compression.
+
+ The compressed entity.
+ The entity.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the supplied .
+
+ The encrypted entity.
+ The S/MIME context to use for encrypting.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the default .
+
+ The encrypted entity.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the supplied .
+
+ The encrypted entity.
+ The S/MIME context to use for encrypting.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ Valid certificates could not be found for one or more of the .
+
+
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the default .
+
+ The encrypted entity.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ Valid certificates could not be found for one or more of the .
+
+
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer and .
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The S/MIME context to use for signing.
+ The signer.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer.
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The signer.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer, digest algorithm and .
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The S/MIME context to use for signing.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm.
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The S/MIME context to use for signing and encrypting.
+ The signer.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The signer.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The S/MIME context to use for signing and encrypting.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+ -or-
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+ -or-
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ An S/MIME part with a Content-Type of application/pkcs7-signature.
+
+
+ An application/pkcs7-signature part contains detatched pkcs7 signature data
+ and is typically contained within a part.
+ To verify the signature, use the
+ method on the parent multipart/signed part.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with a Content-Type of application/pkcs7-signature.
+
+
+ Creates a new MIME part with a Content-Type of application/pkcs7-signature
+ and the as its content.
+
+ The content stream.
+
+ is null.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ An exception that is thrown when a certificate could not be found for a specified mailbox.
+
+
+ An exception that is thrown when a certificate could not be found for a specified mailbox.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The mailbox that could not be resolved to a valid certificate.
+ A message explaining the error.
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the mailbox address that could not be resolved to a certificate.
+
+
+ Gets the mailbox address that could not be resolved to a certificate.
+
+ The mailbox address.
+
+
+
+ An S/MIME recipient.
+
+
+ If the X.509 certificates are known for each of the recipients, you
+ may wish to use a as opposed to having
+ the do its own certificate
+ lookups for each .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+
+ The recipient's certificate.
+ The recipient identifier type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+ The will be initialized to
+ .
+
+ The recipient's certificate.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+
+ The recipient's certificate.
+ The recipient identifier type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+ The will be initialized to
+ .
+
+ The recipient's certificate.
+
+ is null.
+
+
+
+
+ Gets the recipient's certificate.
+
+
+ The certificate is used for the purpose of encrypting data.
+
+ The certificate.
+
+
+
+ Gets the recipient identifier type.
+
+
+ Specifies how the certificate should be looked up on the recipient's end.
+
+ The recipient identifier type.
+
+
+
+ Gets or sets the known S/MIME encryption capabilities of the
+ recipient's mail client, in their preferred order.
+
+
+ Provides the with an array of
+ encryption algorithms that are known to be supported by the
+ recpipient's client software and should be in the recipient's
+ order of preference.
+
+ The encryption algorithms.
+
+
+
+ A collection of objects.
+
+
+ If the X.509 certificates are known for each of the recipients, you
+ may wish to use a as opposed to
+ using the methods that take a list of
+ objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the number of recipients in the collection.
+
+
+ Indicates the number of recipients in the collection.
+
+ The number of recipients in the collection.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified recipient.
+
+
+ Adds the specified recipient.
+
+ The recipient.
+
+ is null.
+
+
+
+
+ Clears the recipient collection.
+
+
+ Removes all of the recipients from the collection.
+
+
+
+
+ Checks if the collection contains the specified recipient.
+
+
+ Determines whether or not the collection contains the specified recipient.
+
+ true if the specified recipient exists;
+ otherwise false.
+ The recipient.
+
+ is null.
+
+
+
+
+ Copies all of the recipients in the to the specified array.
+
+
+ Copies all of the recipients within the into the array,
+ starting at the specified array index.
+
+ The array.
+ The array index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified recipient.
+
+
+ Removes the specified recipient.
+
+ true if the recipient was removed; otherwise false.
+ The recipient.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the collection of recipients.
+
+
+ Gets an enumerator for the collection of recipients.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the collection of recipients.
+
+
+ Gets an enumerator for the collection of recipients.
+
+ The enumerator.
+
+
+
+ An S/MIME signer.
+
+
+ If the X.509 certificate is known for the signer, you may wish to use a
+ as opposed to having the
+ do its own certificate lookup for the signer's .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will be set to
+ and both the
+ and properties
+ will be initialized to empty tables.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will be set to
+ and both the
+ and properties
+ will be initialized to empty tables.
+
+ The chain of certificates starting with the signer's certificate back to the root.
+ The signer's private key.
+
+ is null.
+ -or-
+ is null.
+
+
+ did not contain any certificates.
+ -or-
+ The certificate cannot be used for signing.
+ -or-
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will
+ be set to and both the
+ and properties will be
+ initialized to empty tables.
+
+ The signer's certificate.
+ The signer's private key.
+
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will
+ be set to and both the
+ and properties will be
+ initialized to empty tables.
+
+ The signer's certificate.
+
+ is null.
+
+
+ cannot be used for signing.
+
+
+
+
+ Gets the signer's certificate.
+
+
+ The signer's certificate that contains a public key that can be used for
+ verifying the digital signature.
+
+ The signer's certificate.
+
+
+
+ Gets the certificate chain.
+
+
+ Gets the certificate chain.
+
+ The certificate chain.
+
+
+
+ Gets or sets the digest algorithm.
+
+
+ Specifies which digest algorithm to use to generate the
+ cryptographic hash of the content being signed.
+
+ The digest algorithm.
+
+
+
+ Gets the private key.
+
+
+ The private key used for signing.
+
+ The private key.
+
+
+
+ Gets or sets the signed attributes.
+
+
+ A table of attributes that should be included in the signature.
+
+ The signed attributes.
+
+
+
+ Gets or sets the unsigned attributes.
+
+
+ A table of attributes that should not be signed in the signature,
+ but still included in transport.
+
+ The unsigned attributes.
+
+
+
+ An abstract cryptography context.
+
+
+ Generally speaking, applications should not use a
+ directly, but rather via higher level APIs such as ,
+ and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the signature protocol.
+
+
+ The signature protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The signature protocol.
+
+
+
+ Gets the encryption protocol.
+
+
+ The encryption protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The encryption protocol.
+
+
+
+ Gets the key exchange protocol.
+
+
+ The key exchange protocol is really only used for PGP.
+
+ The key exchange protocol.
+
+
+
+ Checks whether or not the specified protocol is supported by the .
+
+
+ Used in order to make sure that the protocol parameter value specified in either a multipart/signed
+ or multipart/encrypted part is supported by the supplied cryptography context.
+
+ true if the protocol is supported; otherwise false
+ The protocol.
+
+ is null.
+
+
+
+
+ Gets the string name of the digest algorithm for use with the micalg parameter of a multipart/signed part.
+
+
+ Maps the to the appropriate string identifier
+ as used by the micalg parameter value of a multipart/signed Content-Type
+ header.
+
+ The micalg value.
+ The digest algorithm.
+
+ is out of range.
+
+
+
+
+ Gets the digest algorithm from the micalg parameter value in a multipart/signed part.
+
+
+ Maps the micalg parameter value string back to the appropriate .
+
+ The digest algorithm.
+ The micalg parameter value.
+
+ is null.
+
+
+
+
+ Cryptographically signs the content.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+
+
+ Verifies the specified content using the detached signatureData.
+
+
+ Verifies the specified content using the detached signatureData.
+
+ A list of digital signatures.
+ The content.
+ The signature data.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ A certificate could not be found for one or more of the .
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+
+
+ Imports the public certificates or keys from the specified stream.
+
+
+ Imports the public certificates or keys from the specified stream.
+
+ The raw certificate or key data.
+
+ is null.
+
+
+ Importing keys is not supported by this cryptography context.
+
+
+
+
+ Exports the keys for the specified mailboxes.
+
+
+ Exports the keys for the specified mailboxes.
+
+ A new instance containing the exported keys.
+ The mailboxes.
+
+ is null.
+
+
+ was empty.
+
+
+ Exporting keys is not supported by this cryptography context.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resources used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After
+ calling , you must release all references to the so
+ the garbage collector can reclaim the memory that the was occupying.
+
+
+
+ Creates a new for the specified protocol.
+
+
+ Creates a new for the specified protocol.
+ The default types can over overridden by calling
+ the method with the preferred type.
+
+ The for the protocol.
+ The protocol.
+
+ is null.
+
+
+ There are no supported s that support
+ the specified .
+
+
+
+
+ Registers a default or .
+
+
+ Registers the specified type as the default or
+ .
+
+ A custom subclass of or
+ .
+
+ is null.
+
+
+ is not a subclass of
+ or .
+ -or-
+ does not have a parameterless constructor.
+
+
+
+
+ Useful extensions for working with System.Data types.
+
+
+
+
+ Creates a with the specified name and value and then adds it to the command's parameters.
+
+ The database command.
+ The parameter name.
+ The parameter value.
+
+
+
+ A default implementation that uses
+ an SQLite database as a certificate and private key store.
+
+
+ The default S/MIME context is designed to be usable on any platform
+ where there exists a .NET runtime by storing certificates, CRLs, and
+ (encrypted) private keys in a SQLite database.
+
+
+
+
+ The default database path for certificates, private keys and CRLs.
+
+
+ On Microsoft Windows-based systems, this path will be something like C:\Users\UserName\AppData\Roaming\mimekit\smime.db.
+ On Unix systems such as Linux and Mac OS X, this path will be ~/.mimekit/smime.db.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Allows the program to specify its own location for the SQLite database. If the file does not exist,
+ it will be created and the necessary tables and indexes will be constructed.
+ Requires linking with Mono.Data.Sqlite.
+
+ The path to the SQLite database.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ Mono.Data.Sqlite is not available.
+
+
+ The user does not have access to read the specified file.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Allows the program to specify its own password for the default database.
+ Requires linking with Mono.Data.Sqlite.
+
+ The password used for encrypting and decrypting the private keys.
+
+ Mono.Data.Sqlite is not available.
+
+
+ The user does not have access to read the database at the default location.
+
+
+ An error occurred reading the database at the default location.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Not recommended for production use as the password to unlock the private keys is hard-coded.
+ Requires linking with Mono.Data.Sqlite.
+
+
+ Mono.Data.Sqlite is not available.
+
+
+ The user does not have access to read the database at the default location.
+
+
+ An error occurred reading the database at the default location.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is useful for supplying a custom .
+
+ The certificate database.
+
+ is null.
+
+
+
+
+ Gets the X.509 certificate matching the specified selector.
+
+
+ Gets the first certificate that matches the specified selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key for the certificate matching the specified selector.
+
+
+ Gets the private key for the first certificate that matches the specified selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ A trusted anchor is a trusted root-level X.509 certificate,
+ generally issued by a Certificate Authority (CA).
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ An intermediate certificate is any certificate that exists between the root
+ certificate issued by a Certificate Authority (CA) and the certificate at
+ the end of the chain.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ A Certificate Revocation List (CRL) is a list of certificate serial numbers issued
+ by a particular Certificate Authority (CA) that have been revoked, either by the CA
+ itself or by the owner of the revoked certificate.
+
+ The certificate revocation lists.
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate certificate and
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate signing certificate
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Imports a certificate.
+
+
+ Imports the specified certificate into the database.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Imports a certificate revocation list.
+
+
+ Imports the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports all of the certificates and keys from the pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports a DER-encoded certificate stream.
+
+
+ Imports all of the certificates in the DER-encoded stream.
+
+ The raw certificate(s).
+ true if the certificates are trusted.
+
+ is null.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A digest algorithm.
+
+
+ Digest algorithms are secure hashing algorithms that are used
+ to generate unique fixed-length signatures for arbitrary data.
+ The most commonly used digest algorithms are currently MD5
+ and SHA-1, however, MD5 was successfully broken in 2008 and should
+ be avoided. In late 2013, Microsoft announced that they would be
+ retiring their use of SHA-1 in their products by 2016 with the
+ assumption that its days as an unbroken digest algorithm were
+ numbered. It is speculated that the SHA-1 digest algorithm will
+ be vulnerable to collisions, and thus no longer considered secure,
+ by 2018.
+ Microsoft and other vendors plan to move to the SHA-2 suite of
+ digest algorithms which includes the following 4 variants: SHA-224,
+ SHA-256, SHA-384, and SHA-512.
+
+
+
+
+ No digest algorithm specified.
+
+
+
+
+ The MD5 digest algorithm.
+
+
+
+
+ The SHA-1 digest algorithm.
+
+
+
+
+ The Ripe-MD/160 digest algorithm.
+
+
+
+
+ The double-SHA digest algorithm.
+
+
+
+
+ The MD2 digest algorithm.
+
+
+
+
+ The TIGER/192 digest algorithm.
+
+
+
+
+ The HAVAL 5-pass 160-bit digest algorithm.
+
+
+
+
+ The SHA-256 digest algorithm.
+
+
+
+
+ The SHA-384 digest algorithm.
+
+
+
+
+ The SHA-512 digest algorithm.
+
+
+
+
+ The SHA-224 digest algorithm.
+
+
+
+
+ The MD4 digest algorithm.
+
+
+
+
+ A collection of digital signatures.
+
+
+ When verifying a digitally signed MIME part such as a
+ or a , you will get back a collection of
+ digital signatures. Typically, a signed message will only have a single signature
+ (created by the sender of the message), but it is possible for there to be
+ multiple signatures.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The signatures.
+
+
+
+ An exception that is thrown when an error occurrs in .
+
+
+ For more information about the error condition, check the property.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+ is null.
+
+
+
+
+ A base implementation for DKIM body filters.
+
+
+ A base implementation for DKIM body filters.
+
+
+
+
+ Get or set whether the last filtered character was a newline.
+
+
+ Gets or sets whether the last filtered character was a newline.
+
+
+
+
+ Get or set whether the current line is empty.
+
+
+ Gets or sets whether the current line is empty.
+
+
+
+
+ Get or set the number of consecutive empty lines encountered.
+
+
+ Gets or sets the number of consecutive empty lines encountered.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ A DKIM canonicalization algorithm.
+
+
+ Empirical evidence demonstrates that some mail servers and relay systems
+ modify email in transit, potentially invalidating a signature. There are two
+ competing perspectives on such modifications. For most signers, mild modification
+ of email is immaterial to the authentication status of the email. For such signers,
+ a canonicalization algorithm that survives modest in-transit modification is
+ preferred.
+ Other signers demand that any modification of the email, however minor,
+ result in a signature verification failure. These signers prefer a canonicalization
+ algorithm that does not tolerate in-transit modification of the signed email.
+
+
+
+
+ The simple canonicalization algorithm tolerates almost no modification
+ by mail servers while the message is in-transit.
+
+
+
+
+ The relaxed canonicalization algorithm tolerates common modifications
+ by mail servers while the message is in-transit such as whitespace
+ replacement and header field line rewrapping.
+
+
+
+
+ A DKIM hash stream.
+
+
+ A DKIM hash stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The signature algorithm.
+ The max length of data to hash.
+
+
+
+ Generate the hash.
+
+
+ Generates the hash.
+
+ The hash.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ A is not readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ A is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ A is not seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ Writing to a cannot timeout.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a indicates the
+ number of bytes that have been written to it.
+
+ The length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Since it is possible to seek within a ,
+ it is possible that the position will not always be identical to the
+ length of the stream, but typically it will be.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reading from a is not supported.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Increments the property by the number of bytes written.
+ If the updated position is greater than the current length of the stream, then
+ the property will be updated to be identical to the
+ position.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Updates the within the stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Since a does not actually do anything other than
+ count bytes, this method is a no-op.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the to the specified value and updates
+ to the specified value if (and only if)
+ the current position is greater than the new length value.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A filter for the DKIM relaxed body canonicalization.
+
+
+ A filter for the DKIM relaxed body canonicalization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A DKIM signature algorithm.
+
+
+ A DKIM signature algorithm.
+
+
+
+
+ The RSA-SHA1 signature algorithm.
+
+
+
+
+ The RSA-SHA256 signature algorithm.
+
+
+
+
+ A DKIM signature stream.
+
+
+ A DKIM signature stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The digest signer.
+
+ is null.
+
+
+
+
+ Get the digest signer.
+
+
+ Gets the digest signer.
+
+ The signer.
+
+
+
+ Generate the signature.
+
+
+ Generates the signature.
+
+ The signature.
+
+
+
+ Verify the DKIM signature.
+
+
+ Verifies the DKIM signature.
+
+ true if signature is valid; otherwise, false.
+ The base64 encoded DKIM signature from the b= parameter.
+
+ is null.
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ A is not readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ A is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ A is not seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ Writing to a cannot timeout.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a indicates the
+ number of bytes that have been written to it.
+
+ The length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Since it is possible to seek within a ,
+ it is possible that the position will not always be identical to the
+ length of the stream, but typically it will be.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reading from a is not supported.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Increments the property by the number of bytes written.
+ If the updated position is greater than the current length of the stream, then
+ the property will be updated to be identical to the
+ position.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Updates the within the stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Since a does not actually do anything other than
+ count bytes, this method is a no-op.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the to the specified value and updates
+ to the specified value if (and only if)
+ the current position is greater than the new length value.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A DKIM signer.
+
+
+ A DKIM signer.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The signer's private key.
+ The domain that the signer represents.
+ The selector subdividing the domain.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The file containing the private key.
+ The domain that the signer represents.
+ The selector subdividing the domain.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The file did not contain a private key.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Gets the private key.
+
+
+ The private key used for signing.
+
+ The private key.
+
+
+
+ Get the domain that the signer represents.
+
+
+ Gets the domain that the signer represents.
+
+ The domain.
+
+
+
+ Get the selector subdividing the domain.
+
+
+ Gets the selector subdividing the domain.
+
+ The selector.
+
+
+
+ Get or set the agent or user identifier.
+
+
+ Gets or sets the agent or user identifier.
+
+ The agent or user identifier.
+
+
+
+ Get or set the algorithm to use for signing.
+
+
+ Gets or sets the algorithm to use for signing.
+
+ The signature algorithm.
+
+
+
+ Get or set the public key query method.
+
+
+ Gets or sets the public key query method.
+ The value should be a colon-separated list of query methods used to
+ retrieve the public key (plain-text; OPTIONAL, default is "dns/txt"). Each
+ query method is of the form "type[/options]", where the syntax and
+ semantics of the options depend on the type and specified options.
+
+ The public key query method.
+
+
+
+ A filter for the DKIM simple body canonicalization.
+
+
+ A filter for the DKIM simple body canonicalization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ Encryption algorithms supported by S/MIME and OpenPGP.
+
+
+ Represents the available encryption algorithms for use with S/MIME and OpenPGP.
+ RC-2/40 was required by all S/MIME v2 implementations. However, since the
+ mid-to-late 1990's, RC-2/40 has been considered to be extremely weak and starting with
+ S/MIME v3.0 (published in 1999), all S/MIME implementations are required to implement
+ support for Triple-DES (aka 3DES) and should no longer encrypt using RC-2/40 unless
+ explicitly requested to do so by the user.
+ These days, most S/MIME implementations support the AES-128 and AES-256
+ algorithms which are the recommended algorithms specified in S/MIME v3.2 and
+ should be preferred over the use of Triple-DES unless the client capabilities
+ of one or more of the recipients is unknown (or only supports Triple-DES).
+
+
+
+
+ The AES 128-bit encryption algorithm.
+
+
+
+
+ The AES 192-bit encryption algorithm.
+
+
+
+
+ The AES 256-bit encryption algorithm.
+
+
+
+
+ The Camellia 128-bit encryption algorithm.
+
+
+
+
+ The Camellia 192-bit encryption algorithm.
+
+
+
+
+ The Camellia 256-bit encryption algorithm.
+
+
+
+
+ The Cast-5 128-bit encryption algorithm.
+
+
+
+
+ The DES 56-bit encryption algorithm.
+
+
+ This is extremely weak encryption and should not be used
+ without consent from the user.
+
+
+
+
+ The Triple-DES encryption algorithm.
+
+
+ This is the weakest recommended encryption algorithm for use
+ starting with S/MIME v3 and should only be used as a fallback
+ if it is unknown what encryption algorithms are supported by
+ the recipient's mail client.
+
+
+
+
+ The IDEA 128-bit encryption algorithm.
+
+
+
+
+ The blowfish encryption algorithm (OpenPGP only).
+
+
+
+
+ The twofish encryption algorithm (OpenPGP only).
+
+
+
+
+ The RC2 40-bit encryption algorithm (S/MIME only).
+
+
+ This is extremely weak encryption and should not be used
+ without consent from the user.
+
+
+
+
+ The RC2 64-bit encryption algorithm (S/MIME only).
+
+
+ This is very weak encryption and should not be used
+ without consent from the user.
+
+
+
+
+ The RC2 128-bit encryption algorithm (S/MIME only).
+
+
+
+
+ A that uses the GnuPG keyrings.
+
+
+ A that uses the GnuPG keyrings.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ An interface for a digital certificate.
+
+
+ An interface for a digital certificate.
+
+
+
+
+ Gets the public key algorithm supported by the certificate.
+
+
+ Gets the public key algorithm supported by the certificate.
+
+ The public key algorithm.
+
+
+
+ Gets the date that the certificate was created.
+
+
+ Gets the date that the certificate was created.
+
+ The creation date.
+
+
+
+ Gets the expiration date of the certificate.
+
+
+ Gets the expiration date of the certificate.
+
+ The expiration date.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets the email address of the owner of the certificate.
+
+
+ Gets the email address of the owner of the certificate.
+
+ The email address.
+
+
+
+ Gets the name of the owner of the certificate.
+
+
+ Gets the name of the owner of the certificate.
+
+ The name of the owner.
+
+
+
+ An interface for a digital signature.
+
+
+ An interface for a digital signature.
+
+
+
+
+ Gets certificate used by the signer.
+
+
+ Gets certificate used by the signer.
+
+ The signer's certificate.
+
+
+
+ Gets the public key algorithm used for the signature.
+
+
+ Gets the public key algorithm used for the signature.
+
+ The public key algorithm.
+
+
+
+ Gets the digest algorithm used for the signature.
+
+
+ Gets the digest algorithm used for the signature.
+
+ The digest algorithm.
+
+
+
+ Gets the creation date of the digital signature.
+
+
+ Gets the creation date of the digital signature.
+
+ The creation date.
+
+
+
+ Verifies the digital signature.
+
+
+ Verifies the digital signature.
+
+ true if the signature is valid; otherwise false.
+
+ An error verifying the signature has occurred.
+
+
+
+
+ An interface for a service which locates and retrieves DKIM public keys (probably via DNS).
+
+
+ An interface for a service which locates and retrieves DKIM public keys (probably via DNS).
+ Since MimeKit itself does not implement DNS, it is up to the client to implement public key lookups
+ via DNS.
+
+
+
+
+
+ Locate and retrieves the public key for the given domain and selector.
+
+
+ Locates and retrieves the public key for the given domain and selector.
+
+ The public key.
+ A colon-separated list of query methods used to retrieve the public key. The default is "dns/txt".
+ The domain.
+ The selector.
+ The cancellation token.
+
+
+
+ An interface for an X.509 Certificate database.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+
+
+
+
+ Find the specified certificate.
+
+
+ Searches the database for the specified certificate, returning the matching
+ record with the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate.
+ The desired fields.
+
+
+
+ Finds the certificates matching the specified selector.
+
+
+ Searches the database for certificates matching the selector, returning all
+ matching certificates.
+
+ The matching certificates.
+ The match selector or null to return all certificates.
+
+
+
+ Finds the private keys matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning the
+ private keys for each matching record.
+
+ The matching certificates.
+ The match selector or null to return all private keys.
+
+
+
+ Finds the certificate records for the specified mailbox.
+
+
+ Searches the database for certificates matching the specified mailbox that are valid
+ for the date and time specified, returning all matching records populated with the
+ desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The mailbox.
+ The date and time.
+ true if a private key is required.
+ The desired fields.
+
+
+
+ Finds the certificate records matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning all
+ of the matching records populated with the desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The match selector or null to match all certificates.
+ true if only trusted certificates should be returned.
+ The desired fields.
+
+
+
+ Add the specified certificate record.
+
+
+ Adds the specified certificate record to the database.
+
+ The certificate record.
+
+
+
+ Remove the specified certificate record.
+
+
+ Removes the specified certificate record from the database.
+
+ The certificate record.
+
+
+
+ Update the specified certificate record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The certificate record.
+ The fields to update.
+
+
+
+ Finds the CRL records for the specified issuer.
+
+
+ Searches the database for CRL records matching the specified issuer, returning
+ all matching records populated with the desired fields.
+
+ The matching CRL records populated with the desired fields.
+ The issuer.
+ The desired fields.
+
+
+
+ Finds the specified certificate revocation list.
+
+
+ Searches the database for the specified CRL, returning the matching record with
+ the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate revocation list.
+ The desired fields.
+
+
+
+ Add the specified CRL record.
+
+
+ Adds the specified CRL record to the database.
+
+ The CRL record.
+
+
+
+ Remove the specified CRL record.
+
+
+ Removes the specified CRL record from the database.
+
+ The CRL record.
+
+
+
+ Update the specified CRL record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The CRL record.
+
+
+
+ Gets a certificate revocation list store.
+
+
+ Gets a certificate revocation list store.
+
+ A certificate recovation list store.
+
+
+
+ A multipart MIME part with a ContentType of multipart/encrypted containing an encrypted MIME part.
+
+
+ This mime-type is common when dealing with PGP/MIME but is not used for S/MIME.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for signing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ THe specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+ -or-
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for signing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ THe specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+ -or-
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ THe specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+ -or-
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the and extracts any digital signatures in cases
+ where the content was also signed.
+
+ The decrypted entity.
+ The OpenPGP cryptography context to use for decrypting.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ is null.
+
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ The provided does not support the protocol parameter.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the part.
+
+ The decrypted entity.
+ The OpenPGP cryptography context to use for decrypting.
+
+ is null.
+
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ The provided does not support the protocol parameter.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the and extracts any digital signatures in cases
+ where the content was also signed.
+
+ The decrypted entity.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ A suitable for
+ decrypting could not be found.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the part.
+
+ The decrypted entity.
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ A suitable for
+ decrypting could not be found.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ A signed multipart, as used by both S/MIME and PGP/MIME protocols.
+
+
+ The first child of a multipart/signed is the content while the second child
+ is the detached signature data. Any other children are not defined and could
+ be anything.
+
+
+
+
+ Initializes a new instance of the class.
+
+ This constructor is used by .
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer and digest algorithm in
+ order to generate a detached signature and then adds the entity along with the
+ detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The cryptography context to use for signing.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ A signing certificate could not be found for .
+
+
+ The private key could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer and digest algorithm in
+ order to generate a detached signature and then adds the entity along with the
+ detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The OpenPGP context to use for signing.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ An error occurred in the OpenPGP subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer and digest algorithm in
+ order to generate a detached signature and then adds the entity along with the
+ detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+
+
+ The was out of range.
+
+
+ A cryptography context suitable for signing could not be found.
+ -or-
+ The is not supported.
+
+
+ An error occurred in the OpenPGP subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer in order
+ to generate a detached signature and then adds the entity along with
+ the detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The S/MIME context to use for signing.
+ The signer.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer in order
+ to generate a detached signature and then adds the entity along with
+ the detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The signer.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+
+
+ A cryptography context suitable for signing could not be found.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Verifies the multipart/signed part.
+
+
+ Verifies the multipart/signed part using the supplied cryptography context.
+
+ A signer info collection.
+ The cryptography context to use for verifying the signature.
+
+ is null.
+
+
+ The multipart is malformed in some way.
+
+
+ does not support verifying the signature part.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the multipart/signed part.
+
+
+ Verifies the multipart/signed part using the default cryptography context.
+
+ A signer info collection.
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ A cryptography context suitable for verifying the signature could not be found.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ An X.509 certificate database built on PostgreSQL.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+ This particular database uses PostgreSQL to store the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new and opens a connection to the
+ PostgreSQL database using the specified connection string.
+
+ The connection string.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ is empty.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the provided Npgsql database connection.
+
+ The Npgsql connection.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the command to create the certificates table.
+
+
+ Constructs the command to create a certificates table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the command to create the CRLs table.
+
+
+ Constructs the command to create a CRLs table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ An abstract OpenPGP cryptography context which can be used for PGP/MIME.
+
+
+ Generally speaking, applications should not use a
+ directly, but rather via higher level APIs such as
+ and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Subclasses choosing to use this constructor MUST set the ,
+ , , and the
+ properties themselves.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the specified public and private keyring paths.
+
+ The public keyring file path.
+ The secret keyring file path.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred while reading one of the keyring files.
+
+
+ An error occurred while parsing one of the keyring files.
+
+
+
+
+ Gets or sets the default encryption algorithm.
+
+
+ Gets or sets the default encryption algorithm.
+
+ The encryption algorithm.
+
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Gets the public keyring path.
+
+
+ Gets the public keyring path.
+
+ The public key ring path.
+
+
+
+ Gets the secret keyring path.
+
+
+ Gets the secret keyring path.
+
+ The secret key ring path.
+
+
+
+ Gets the public keyring bundle.
+
+
+ Gets the public keyring bundle.
+
+ The public keyring bundle.
+
+
+
+ Gets the secret keyring bundle.
+
+
+ Gets the secret keyring bundle.
+
+ The secret keyring bundle.
+
+
+
+ Gets the signature protocol.
+
+
+ The signature protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The signature protocol.
+
+
+
+ Gets the encryption protocol.
+
+
+ The encryption protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The encryption protocol.
+
+
+
+ Gets the key exchange protocol.
+
+
+ Gets the key exchange protocol.
+
+ The key exchange protocol.
+
+
+
+ Checks whether or not the specified protocol is supported.
+
+
+ Used in order to make sure that the protocol parameter value specified in either a multipart/signed
+ or multipart/encrypted part is supported by the supplied cryptography context.
+
+ true if the protocol is supported; otherwise false
+ The protocol.
+
+ is null.
+
+
+
+
+ Gets the string name of the digest algorithm for use with the micalg parameter of a multipart/signed part.
+
+
+ Maps the to the appropriate string identifier
+ as used by the micalg parameter value of a multipart/signed Content-Type
+ header. For example:
+
+ AlgorithmName
+ - pgp-md5
+ - pgp-sha1
+ - pgp-ripemd160
+ - pgp-md2
+ - pgp-tiger192
+ - pgp-haval-5-160
+ - pgp-sha256
+ - pgp-sha384
+ - pgp-sha512
+ - pgp-sha224
+
+
+ The micalg value.
+ The digest algorithm.
+
+ is out of range.
+
+
+
+
+ Gets the digest algorithm from the micalg parameter value in a multipart/signed part.
+
+
+ Maps the micalg parameter value string back to the appropriate .
+
+ The digest algorithm.
+ The micalg parameter value.
+
+ is null.
+
+
+
+
+ Gets the public key associated with the mailbox address.
+
+
+ Gets the public key associated with the mailbox address.
+
+ The encryption key.
+ The mailbox.
+
+ is null.
+
+
+ The public key for the specified could not be found.
+
+
+
+
+ Gets the public keys for the specified mailbox addresses.
+
+
+ Gets the public keys for the specified mailbox addresses.
+
+ The encryption keys.
+ The mailboxes.
+
+ is null.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Gets the signing key associated with the mailbox address.
+
+
+ Gets the signing key associated with the mailbox address.
+
+ The signing key.
+ The mailbox.
+
+ is null.
+
+
+ A private key for the specified could not be found.
+
+
+
+
+ Gets the password for key.
+
+
+ Gets the password for key.
+
+ The password for key.
+ The key.
+
+ The user chose to cancel the password request.
+
+
+
+
+ Gets the private key from the specified secret key.
+
+
+ Gets the private key from the specified secret key.
+
+ The private key.
+ The secret key.
+
+ is null.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Gets the private key.
+
+
+ Gets the private key.
+
+ The private key.
+ The key identifier.
+
+ The specified secret key could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Gets the equivalent for the
+ specified .
+
+
+ Maps a to the equivalent .
+
+ The hash algorithm.
+ The digest algorithm.
+
+ is out of range.
+
+
+ is not a supported digest algorithm.
+
+
+
+
+ Cryptographically signs the content.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing key could not be found for .
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs the content.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Gets the equivalent for the specified
+ .
+
+
+ Gets the equivalent for the specified
+ .
+
+ The digest algorithm.
+ The hash algorithm.
+
+ is out of range.
+
+
+ does not have an equivalent value.
+
+
+
+
+ Gets the equivalent for the specified
+ .
+
+
+ Gets the equivalent for the specified
+ .
+
+ The public-key algorithm.
+ The public-key algorithm.
+
+ is out of range.
+
+
+ does not have an equivalent value.
+
+
+
+
+ Verifies the specified content using the detached signatureData.
+
+
+ Verifies the specified content using the detached signatureData.
+
+ A list of digital signatures.
+ The content.
+ The signature data.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ A public key could not be found for one or more of the .
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ A public key could not be found for one or more of the .
+
+
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified is not supported by this context.
+
+
+ The private key could not be found for .
+
+
+ A public key could not be found for one or more of the .
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified encryption algorithm is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified encryption algorithm is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+ The decrypted stream.
+ The encrypted data.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted stream.
+ The encrypted data.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+ The decrypted .
+ The encrypted data.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Saves the public key-ring bundle.
+
+
+ Atomically saves the public key-ring bundle to the path specified by .
+ Called by if any public keys were successfully imported.
+
+
+ An error occured while saving the public key-ring bundle.
+
+
+
+
+ Saves the secret key-ring bundle.
+
+
+ Atomically saves the secret key-ring bundle to the path specified by .
+ Called by if any secret keys were successfully imported.
+
+
+ An error occured while saving the secret key-ring bundle.
+
+
+
+
+ Imports a public pgp keyring.
+
+
+ Imports a public pgp keyring.
+
+ The pgp keyring.
+
+ is null.
+
+
+
+
+ Imports a public pgp keyring bundle.
+
+
+ Imports a public pgp keyring bundle.
+
+ The pgp keyring bundle.
+
+ is null.
+
+
+
+
+ Imports public pgp keys from the specified stream.
+
+
+ Imports public pgp keys from the specified stream.
+
+ The raw key data.
+
+ is null.
+
+
+ An error occurred while parsing the raw key-ring data
+ -or-
+ An error occured while saving the public key-ring bundle.
+
+
+
+
+ Imports a secret pgp keyring.
+
+
+ Imports a secret pgp keyring.
+
+ The pgp keyring.
+
+ is null.
+
+
+
+
+ Imports a secret pgp keyring bundle.
+
+
+ Imports a secret pgp keyring bundle.
+
+ The pgp keyring bundle.
+
+ is null.
+
+
+
+
+ Imports secret pgp keys from the specified stream.
+
+
+ Imports secret pgp keys from the specified stream.
+ The stream should consist of an armored secret keyring bundle
+ containing 1 or more secret keyrings.
+
+ The raw key data.
+
+ is null.
+
+
+ An error occurred while parsing the raw key-ring data
+ -or-
+ An error occured while saving the public key-ring bundle.
+
+
+
+
+ Exports the public keys for the specified mailboxes.
+
+
+ Exports the public keys for the specified mailboxes.
+
+ A new instance containing the exported public keys.
+ The mailboxes.
+
+ is null.
+
+
+ was empty.
+
+
+
+
+ Exports the specified public keys.
+
+
+ Exports the specified public keys.
+
+ A new instance containing the exported public keys.
+ The keys.
+
+ is null.
+
+
+
+
+ Exports the specified public keys.
+
+
+ Exports the specified public keys.
+
+ A new instance containing the exported public keys.
+ The keys.
+
+ is null.
+
+
+
+
+ An OpenPGP digital certificate.
+
+
+ An OpenPGP digital certificate.
+
+
+
+
+ Gets the public key.
+
+
+ Gets the public key.
+
+ The public key.
+
+
+
+ Gets the public key algorithm supported by the certificate.
+
+
+ Gets the public key algorithm supported by the certificate.
+
+ The public key algorithm.
+
+
+
+ Gets the date that the certificate was created.
+
+
+ Gets the date that the certificate was created.
+
+ The creation date.
+
+
+
+ Gets the expiration date of the certificate.
+
+
+ Gets the expiration date of the certificate.
+
+ The expiration date.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets the email address of the owner of the certificate.
+
+
+ Gets the email address of the owner of the certificate.
+
+ The email address.
+
+
+
+ Gets the name of the owner of the certificate.
+
+
+ Gets the name of the owner of the certificate.
+
+ The name of the owner.
+
+
+
+ An OpenPGP digital signature.
+
+
+ An OpenPGP digital signature.
+
+
+
+
+ Gets certificate used by the signer.
+
+
+ Gets certificate used by the signer.
+
+ The signer's certificate.
+
+
+
+ Gets the public key algorithm used for the signature.
+
+
+ Gets the public key algorithm used for the signature.
+
+ The public key algorithm.
+
+
+
+ Gets the digest algorithm used for the signature.
+
+
+ Gets the digest algorithm used for the signature.
+
+ The digest algorithm.
+
+
+
+ Gets the creation date of the digital signature.
+
+
+ Gets the creation date of the digital signature.
+
+ The creation date.
+
+
+
+ Verifies the digital signature.
+
+
+ Verifies the digital signature.
+
+ true if the signature is valid; otherwise false.
+
+ An error verifying the signature has occurred.
+
+
+
+
+ An exception that is thrown when a private key could not be found for a specified mailbox or key id.
+
+
+ An exception that is thrown when a private key could not be found for a specified mailbox or key id.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The mailbox that could not be resolved to a valid private key.
+ A message explaining the error.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The key id that could not be resolved to a valid certificate.
+ A message explaining the error.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The key id that could not be resolved to a valid certificate.
+ A message explaining the error.
+
+ is null.
+
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the key id that could not be found.
+
+
+ Gets the key id that could not be found.
+
+ The key id.
+
+
+
+ An enumeration of public key algorithms.
+
+
+ An enumeration of public key algorithms.
+
+
+
+
+ No public key algorithm specified.
+
+
+
+
+ The RSA algorithm.
+
+
+
+
+ The RSA encryption-only algorithm.
+
+
+
+
+ The RSA sign-only algorithm.
+
+
+
+
+ The El-Gamal encryption-only algorithm.
+
+
+
+
+ The DSA algorithm.
+
+
+
+
+ The elliptic curve algorithm.
+
+
+
+
+ The elliptic curve DSA algorithm.
+
+
+
+
+ The El-Gamal algorithm.
+
+
+
+
+ The Diffie-Hellman algorithm.
+
+
+
+
+ An exception that is thrown when a public key could not be found for a specified mailbox.
+
+
+ An exception that is thrown when a public key could not be found for a specified mailbox.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The mailbox that could not be resolved to a valid private key.
+ A message explaining the error.
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the key id that could not be found.
+
+
+ Gets the key id that could not be found.
+
+ The key id.
+
+
+
+ A secure mailbox address which includes a fingerprint for a certificate.
+
+
+ When signing or encrypting a message, it is necessary to look up the
+ X.509 certificate in order to do the actual sign or encrypt operation. One
+ way of accomplishing this is to use the email address of sender or recipient
+ as a unique identifier. However, a better approach is to use the fingerprint
+ (or 'thumbprint' in Microsoft parlance) of the user's certificate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The name of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the fingerprint of the certificate and/or key to use for signing or encrypting.
+
+
+
+
+ A fingerprint is a SHA-1 hash of the raw certificate data and is often used
+ as a unique identifier for a particular certificate in a certificate store.
+
+ The fingerprint of the certificate.
+
+
+
+ A Secure MIME (S/MIME) cryptography context.
+
+
+ Generally speaking, applications should not use a
+ directly, but rather via higher level APIs such as
+ and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Enables the following encryption algorithms by default:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the signature protocol.
+
+
+ The signature protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The signature protocol.
+
+
+
+ Gets the encryption protocol.
+
+
+ The encryption protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The encryption protocol.
+
+
+
+ Gets the key exchange protocol.
+
+
+ Gets the key exchange protocol.
+
+ The key exchange protocol.
+
+
+
+ Checks whether or not the specified protocol is supported by the .
+
+
+ Used in order to make sure that the protocol parameter value specified in either a multipart/signed
+ or multipart/encrypted part is supported by the supplied cryptography context.
+
+ true if the protocol is supported; otherwise false
+ The protocol.
+
+ is null.
+
+
+
+
+ Gets the string name of the digest algorithm for use with the micalg parameter of a multipart/signed part.
+
+
+ Maps the to the appropriate string identifier
+ as used by the micalg parameter value of a multipart/signed Content-Type
+ header. For example:
+
+ AlgorithmName
+ - md5
+ - sha-1
+ - sha-224
+ - sha-256
+ - sha-384
+ - sha-512
+
+
+ The micalg value.
+ The digest algorithm.
+
+ is out of range.
+
+
+
+
+ Gets the digest algorithm from the micalg parameter value in a multipart/signed part.
+
+
+ Maps the micalg parameter value string back to the appropriate .
+
+ The digest algorithm.
+ The micalg parameter value.
+
+ is null.
+
+
+
+
+ Gets the preferred rank order for the encryption algorithms; from the strongest to the weakest.
+
+
+ Gets the preferred rank order for the encryption algorithms; from the strongest to the weakest.
+
+ The preferred encryption algorithm ranking.
+
+
+
+ Gets the enabled encryption algorithms in ranked order.
+
+
+ Gets the enabled encryption algorithms in ranked order.
+
+ The enabled encryption algorithms.
+
+
+
+ Enables the encryption algorithm.
+
+
+ Enables the encryption algorithm.
+
+ The encryption algorithm.
+
+
+
+ Disables the encryption algorithm.
+
+
+ Disables the encryption algorithm.
+
+ The encryption algorithm.
+
+
+
+ Checks whether the specified encryption algorithm is enabled.
+
+
+ Determines whether the specified encryption algorithm is enabled.
+
+ true if the specified encryption algorithm is enabled; otherwise, false.
+ Algorithm.
+
+
+
+ Gets the X.509 certificate matching the specified selector.
+
+
+ Gets the first certificate that matches the specified selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key for the certificate matching the specified selector.
+
+
+ Gets the private key for the first certificate that matches the specified selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ A trusted anchor is a trusted root-level X.509 certificate,
+ generally issued by a certificate authority (CA).
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ An intermediate certificate is any certificate that exists between the root
+ certificate issued by a Certificate Authority (CA) and the certificate at
+ the end of the chain.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ A Certificate Revocation List (CRL) is a list of certificate serial numbers issued
+ by a particular Certificate Authority (CA) that have been revoked, either by the CA
+ itself or by the owner of the revoked certificate.
+
+ The certificate revocation lists.
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate certificate and
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address.
+
+ A .
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets a collection of CmsRecipients for the specified mailboxes.
+
+
+ Gets a collection of CmsRecipients for the specified mailboxes.
+
+ A .
+ The mailboxes.
+
+ is null.
+
+
+ A certificate for one or more of the specified could not be found.
+
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate signing certificate
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Gets the OID for the digest algorithm.
+
+
+ Gets the OID for the digest algorithm.
+
+ The digest oid.
+ The digest algorithm.
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+
+
+ Compresses the specified stream.
+
+
+ Compresses the specified stream.
+
+ A new instance
+ containing the compressed content.
+ The stream to compress.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decompress the specified stream.
+
+
+ Decompress the specified stream.
+
+ The decompressed mime part.
+ The stream to decompress.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encapsulates the content using the specified signer.
+
+
+ Cryptographically signs and encapsulates the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encapsulates the content using the specified signer and digest algorithm.
+
+
+ Cryptographically signs and encapsulates the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the content using the specified signer.
+
+
+ Cryptographically signs the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Attempts to map a
+ to a .
+
+
+ Attempts to map a
+ to a .
+
+ true if the algorithm identifier was successfully mapped; false otherwise.
+ The algorithm identifier.
+ The encryption algorithm.
+
+ is null.
+
+
+
+
+ Verifies the specified content using the detached signatureData.
+
+
+ Verifies the specified content using the detached signatureData.
+
+ A list of the digital signatures.
+ The content.
+ The detached signature data.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the digital signatures of the specified signedData and extract the original content.
+
+
+ Verifies the digital signatures of the specified signedData and extract the original content.
+
+ The list of digital signatures.
+ The signed data.
+ The unencapsulated entity.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Gets the preferred encryption algorithm to use for encrypting to the specified recipients.
+
+
+ Gets the preferred encryption algorithm to use for encrypting to the specified recipients
+ based on the encryption algorithms supported by each of the recipients, the
+ , and the .
+ If the supported encryption algorithms are unknown for any recipient, it is assumed that
+ the recipient supports at least the Triple-DES encryption algorithm.
+
+ The preferred encryption algorithm.
+ The recipients.
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted content.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ A certificate for one or more of the could not be found.
+
+
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ Importing keys is not supported by this cryptography context.
+
+
+
+
+ Exports the certificates for the specified mailboxes.
+
+
+ Exports the certificates for the specified mailboxes.
+
+ A new instance containing
+ the exported keys.
+ The mailboxes.
+
+ is null.
+
+
+ No mailboxes were specified.
+
+
+ A certificate for one or more of the could not be found.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports the specified certificate.
+
+
+ Imports the specified certificate.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Imports the specified certificate revocation list.
+
+
+ Imports the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Imports certificates (as from a certs-only application/pkcs-mime part)
+ from the specified stream.
+
+
+ Imports certificates (as from a certs-only application/pkcs-mime part)
+ from the specified stream.
+
+ The raw key data.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ An S/MIME digital certificate.
+
+
+ An S/MIME digital certificate.
+
+
+
+
+ Gets the .
+
+
+ Gets the .
+
+ The certificate.
+
+
+
+ Gets the public key algorithm supported by the certificate.
+
+
+ Gets the public key algorithm supported by the certificate.
+
+ The public key algorithm.
+
+
+
+ Gets the date that the certificate was created.
+
+
+ Gets the date that the certificate was created.
+
+ The creation date.
+
+
+
+ Gets the expiration date of the certificate.
+
+
+ Gets the expiration date of the certificate.
+
+ The expiration date.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets the email address of the owner of the certificate.
+
+
+ Gets the email address of the owner of the certificate.
+
+ The email address.
+
+
+
+ Gets the name of the owner of the certificate.
+
+
+ Gets the name of the owner of the certificate.
+
+ The name of the owner.
+
+
+
+ An S/MIME digital signature.
+
+
+ An S/MIME digital signature.
+
+
+
+
+ Gets the signer info.
+
+
+ Gets the signer info.
+
+ The signer info.
+
+
+
+ Gets the list of encryption algorithms, in preferential order,
+ that the signer's client supports.
+
+
+ Gets the list of encryption algorithms, in preferential order,
+ that the signer's client supports.
+
+ The S/MIME encryption algorithms.
+
+
+
+ Gets the certificate chain.
+
+
+ If building the certificate chain failed, this value will be null and
+ will be set.
+
+ The certificate chain.
+
+
+
+ The exception that occurred, if any, while building the certificate chain.
+
+
+ This will only be set if building the certificate chain failed.
+
+ The exception.
+
+
+
+ Gets certificate used by the signer.
+
+
+ Gets certificate used by the signer.
+
+ The signer's certificate.
+
+
+
+ Gets the public key algorithm used for the signature.
+
+
+ Gets the public key algorithm used for the signature.
+
+ The public key algorithm.
+
+
+
+ Gets the digest algorithm used for the signature.
+
+
+ Gets the digest algorithm used for the signature.
+
+ The digest algorithm.
+
+
+
+ Gets the creation date of the digital signature.
+
+
+ Gets the creation date of the digital signature.
+
+ The creation date.
+
+
+
+ Verifies the digital signature.
+
+
+ Verifies the digital signature.
+
+ true if the signature is valid; otherwise false.
+
+ An error verifying the signature has occurred.
+
+
+
+
+ The type of S/MIME data that an application/pkcs7-mime part contains.
+
+
+ The type of S/MIME data that an application/pkcs7-mime part contains.
+
+
+
+
+ S/MIME compressed data.
+
+
+
+
+ S/MIME enveloped data.
+
+
+
+
+ S/MIME signed data.
+
+
+
+
+ S/MIME certificate data.
+
+
+
+
+ The S/MIME data type is unknown.
+
+
+
+
+ An abstract X.509 certificate database built on generic SQL storage.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+ This particular database uses SQLite to store the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the provided database connection.
+
+ The database .
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the command to create the certificates table.
+
+
+ Constructs the command to create a certificates table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the command to create the CRLs table.
+
+
+ Constructs the command to create a CRLs table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+ The database command.
+ The certificate.
+ The fields to return.
+
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+ The database command.
+ The mailbox.
+ The date and time for which the certificate should be valid.
+ true
+ The fields to return.
+
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+ The database command.
+ Selector.
+ If set to true trusted only.
+ true
+ The fields to return.
+
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+ The database command.
+ The issuer.
+ The fields to return.
+
+
+
+ Gets the database command to select the record for the specified CRL.
+
+
+ Gets the database command to select the record for the specified CRL.
+
+ The database command.
+ The X.509 CRL.
+ The fields to return.
+
+
+
+ Gets the database command to select all CRLs in the table.
+
+
+ Gets the database command to select all CRLs in the table.
+
+ The database command.
+
+
+
+ Gets the database command to delete the specified certificate record.
+
+
+ Gets the database command to delete the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to delete the specified CRL record.
+
+
+ Gets the database command to delete the specified CRL record.
+
+ The database command.
+ The record.
+
+
+
+ Gets the database command to insert the specified certificate record.
+
+
+ Gets the database command to insert the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to insert the specified CRL record.
+
+
+ Gets the database command to insert the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Gets the database command to update the specified record.
+
+
+ Gets the database command to update the specified record.
+
+ The database command.
+ The certificate record.
+ The fields to update.
+
+
+
+ Gets the database command to update the specified CRL record.
+
+
+ Gets the database command to update the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ An X.509 certificate database built on SQLite.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+ This particular database uses SQLite to store the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new and opens a connection to the
+ SQLite database at the specified path using the Mono.Data.Sqlite binding to the native
+ SQLite library.
+ If Mono.Data.Sqlite is not available or if an alternative binding to the native
+ SQLite library is preferred, then consider using
+ instead.
+
+ The file name.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The user does not have access to read the specified file.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the provided SQLite database connection.
+
+ The SQLite connection.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the command to create the certificates table.
+
+
+ Constructs the command to create a certificates table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the command to create the CRLs table.
+
+
+ Constructs the command to create a CRLs table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ The method to use for identifying a certificate.
+
+
+ The method to use for identifying a certificate.
+
+
+
+
+ The identifier type is unknown.
+
+
+
+
+ Identify the certificate by its Issuer and Serial Number properties.
+
+
+
+
+ Identify the certificate by the sha1 hash of its public key.
+
+
+
+
+ An S/MIME context that does not persist certificates, private keys or CRLs.
+
+
+ A is a special S/MIME context that
+ does not use a persistent store for certificates, private keys, or CRLs.
+ Instead, certificates, private keys, and CRLs are maintained in memory only.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the X.509 certificate matching the specified selector.
+
+
+ Gets the first certificate that matches the specified selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key for the certificate matching the specified selector.
+
+
+ Gets the private key for the first certificate that matches the specified selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ A trusted anchor is a trusted root-level X.509 certificate,
+ generally issued by a certificate authority (CA).
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ An intermediate certificate is any certificate that exists between the root
+ certificate issued by a Certificate Authority (CA) and the certificate at
+ the end of the chain.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ A Certificate Revocation List (CRL) is a list of certificate serial numbers issued
+ by a particular Certificate Authority (CA) that have been revoked, either by the CA
+ itself or by the owner of the revoked certificate.
+
+ The certificate revocation lists.
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate certificate and
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address.
+
+ A .
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate signing certificate
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Imports the specified certificate.
+
+
+ Imports the specified certificate.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Imports the specified certificate revocation list.
+
+
+ Imports the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ An S/MIME cryptography context that uses Windows' .
+
+
+ An S/MIME cryptography context that uses Windows' .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The X.509 store location.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Constructs an S/MIME context using the current user's X.509 store location.
+
+
+
+
+ Gets the X.509 store location.
+
+
+ Gets the X.509 store location.
+
+ The store location.
+
+
+
+ Gets the X.509 certificate based on the selector.
+
+
+ Gets the X.509 certificate based on the selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key based on the provided selector.
+
+
+ Gets the private key based on the provided selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ Gets the trusted anchors.
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ Gets the intermediate certificates.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ Gets the certificate revocation lists.
+
+ The certificate revocation lists.
+
+
+
+ Gets the X.509 certificate associated with the .
+
+
+ Gets the X.509 certificate associated with the .
+
+ The certificate.
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets the cms signer for the specified .
+
+
+ Gets the cms signer for the specified .
+
+ The cms signer.
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Sign and encapsulate the content using the specified signer.
+
+
+ Sign and encapsulate the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Sign the content using the specified signer.
+
+
+ Sign the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypt the encrypted data.
+
+
+ Decrypt the encrypted data.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Import the specified certificate.
+
+
+ Import the specified certificate.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Import the specified certificate revocation list.
+
+
+ Import the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ Importing keys is not supported by this cryptography context.
+
+
+
+
+ An X.509 certificate chain.
+
+
+ An X.509 certificate chain.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new X.509 certificate chain.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new X.509 certificate chain based on the specified collection of certificates.
+
+ A collection of certificates.
+
+
+
+ Gets the index of the specified certificate within the chain.
+
+
+ Finds the index of the specified certificate, if it exists.
+
+ The index of the specified certificate if found; otherwise -1.
+ The certificate to get the index of.
+
+ is null.
+
+
+
+
+ Inserts the certificate at the specified index.
+
+
+ Inserts the certificate at the specified index in the certificates.
+
+ The index to insert the certificate.
+ The certificate.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the certificate at the specified index.
+
+
+ Removes the certificate at the specified index.
+
+ The index of the certificate to remove.
+
+ is out of range.
+
+
+
+
+ Gets or sets the certificate at the specified index.
+
+
+ Gets or sets the certificate at the specified index.
+
+ The internet certificate at the specified index.
+ The index of the certificate to get or set.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the number of certificates in the chain.
+
+
+ Indicates the number of certificates in the chain.
+
+ The number of certificates.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified certificate to the chain.
+
+
+ Adds the specified certificate to the chain.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Adds the specified range of certificates to the chain.
+
+
+ Adds the specified range of certificates to the chain.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Clears the certificate chain.
+
+
+ Removes all of the certificates from the chain.
+
+
+
+
+ Checks if the chain contains the specified certificate.
+
+
+ Determines whether or not the certificate chain contains the specified certificate.
+
+ true if the specified certificate exists;
+ otherwise false.
+ The certificate.
+
+ is null.
+
+
+
+
+ Copies all of the certificates in the chain to the specified array.
+
+
+ Copies all of the certificates within the chain into the array,
+ starting at the specified array index.
+
+ The array to copy the certificates to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified certificate from the chain.
+
+
+ Removes the specified certificate from the chain.
+
+ true if the certificate was removed; otherwise false.
+ The certificate.
+
+ is null.
+
+
+
+
+ Removes the specified range of certificates from the chain.
+
+
+ Removes the specified range of certificates from the chain.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the list of certificates.
+
+
+ Gets an enumerator for the list of certificates.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of certificates.
+
+
+ Gets an enumerator for the list of certificates.
+
+ The enumerator.
+
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ An X.509 certificate database.
+
+
+ An X.509 certificate database is used for storing certificates, metadata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The password is used to encrypt and decrypt private keys in the database and cannot be null.
+
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Gets or sets the algorithm used for encrypting the private keys.
+
+
+ The encryption algorithm should be one of the PBE (password-based encryption) algorithms
+ supported by Bouncy Castle.
+ The default algorithm is SHA-256 + AES256.
+
+ The encryption algorithm.
+
+
+
+ Gets or sets the minimum iterations.
+
+
+ The default minimum number of iterations is 1024.
+
+ The minimum iterations.
+
+
+
+ Gets or sets the size of the salt.
+
+
+ The default salt size is 20.
+
+ The size of the salt.
+
+
+
+ Gets the column names for the specified fields.
+
+
+ Gets the column names for the specified fields.
+
+ The column names.
+ The fields.
+
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+ The database command.
+ The certificate.
+ The fields to return.
+
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+ The database command.
+ The mailbox.
+ The date and time for which the certificate should be valid.
+ true if the certificate must have a private key.
+ The fields to return.
+
+
+
+ Gets the database command to select certificate records matching the specified selector.
+
+
+ Gets the database command to select certificate records matching the specified selector.
+
+ The database command.
+ Selector.
+ true if only trusted certificates should be matched.
+ true if the certificate must have a private key.
+ The fields to return.
+
+
+
+ Gets the column names for the specified fields.
+
+
+ Gets the column names for the specified fields.
+
+ The column names.
+ The fields.
+
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+ The database command.
+ The issuer.
+ The fields to return.
+
+
+
+ Gets the database command to select the record for the specified CRL.
+
+
+ Gets the database command to select the record for the specified CRL.
+
+ The database command.
+ The X.509 CRL.
+ The fields to return.
+
+
+
+ Gets the database command to select all CRLs in the table.
+
+
+ Gets the database command to select all CRLs in the table.
+
+ The database command.
+
+
+
+ Gets the database command to delete the specified certificate record.
+
+
+ Gets the database command to delete the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to delete the specified CRL record.
+
+
+ Gets the database command to delete the specified CRL record.
+
+ The database command.
+ The record.
+
+
+
+ Gets the value for the specified column.
+
+
+ Gets the value for the specified column.
+
+ The value.
+ The certificate record.
+ The column name.
+
+ is not a known column name.
+
+
+
+
+ Gets the value for the specified column.
+
+
+ Gets the value for the specified column.
+
+ The value.
+ The CRL record.
+ The column name.
+
+ is not a known column name.
+
+
+
+
+ Gets the database command to insert the specified certificate record.
+
+
+ Gets the database command to insert the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to insert the specified CRL record.
+
+
+ Gets the database command to insert the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Gets the database command to update the specified record.
+
+
+ Gets the database command to update the specified record.
+
+ The database command.
+ The certificate record.
+ The fields to update.
+
+
+
+ Gets the database command to update the specified CRL record.
+
+
+ Gets the database command to update the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Find the specified certificate.
+
+
+ Searches the database for the specified certificate, returning the matching
+ record with the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Finds the certificates matching the specified selector.
+
+
+ Searches the database for certificates matching the selector, returning all
+ matching certificates.
+
+ The matching certificates.
+ The match selector or null to return all certificates.
+
+
+
+ Finds the private keys matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning the
+ private keys for each matching record.
+
+ The matching certificates.
+ The match selector or null to return all private keys.
+
+
+
+ Finds the certificate records for the specified mailbox.
+
+
+ Searches the database for certificates matching the specified mailbox that are valid
+ for the date and time specified, returning all matching records populated with the
+ desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The mailbox.
+ The date and time.
+ true if a private key is required.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Finds the certificate records matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning all
+ of the matching records populated with the desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The match selector or null to match all certificates.
+ true if only trusted certificates should be returned.
+ The desired fields.
+
+
+
+ Add the specified certificate record.
+
+
+ Adds the specified certificate record to the database.
+
+ The certificate record.
+
+ is null.
+
+
+
+
+ Remove the specified certificate record.
+
+
+ Removes the specified certificate record from the database.
+
+ The certificate record.
+
+ is null.
+
+
+
+
+ Update the specified certificate record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The certificate record.
+ The fields to update.
+
+ is null.
+
+
+
+
+ Finds the CRL records for the specified issuer.
+
+
+ Searches the database for CRL records matching the specified issuer, returning
+ all matching records populated with the desired fields.
+
+ The matching CRL records populated with the desired fields.
+ The issuer.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Finds the specified certificate revocation list.
+
+
+ Searches the database for the specified CRL, returning the matching record with
+ the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate revocation list.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Add the specified CRL record.
+
+
+ Adds the specified CRL record to the database.
+
+ The CRL record.
+
+ is null.
+
+
+
+
+ Remove the specified CRL record.
+
+
+ Removes the specified CRL record from the database.
+
+ The CRL record.
+
+ is null.
+
+
+
+
+ Update the specified CRL record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The CRL record.
+
+ is null.
+
+
+
+
+ Gets a certificate revocation list store.
+
+
+ Gets a certificate revocation list store.
+
+ A certificate recovation list store.
+
+
+
+ Gets a collection of matching certificates matching the specified selector.
+
+
+ Gets a collection of matching certificates matching the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resource used by the object.
+
+ Call when you are finished using the
+ . The method leaves the
+ in an unusable state. After calling
+ , you must release all references to the
+ so the garbage collector can reclaim the memory that
+ the was occupying.
+
+
+
+ X509Certificate extension methods.
+
+
+ A collection of useful extension methods for an .
+
+
+
+
+ Gets the issuer name info.
+
+
+ For a list of available identifiers, see .
+
+ The issuer name info.
+ The certificate.
+ The name identifier.
+
+ is null.
+
+
+
+
+ Gets the issuer name info.
+
+
+ For a list of available identifiers, see .
+
+ The issuer name info.
+ The certificate.
+ The name identifier.
+
+ is null.
+
+
+
+
+ Gets the common name of the certificate.
+
+
+ Gets the common name of the certificate.
+
+ The common name.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the subject name of the certificate.
+
+
+ Gets the subject name of the certificate.
+
+ The subject name.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the subject email address of the certificate.
+
+
+ The email address component of the certificate's Subject identifier is
+ sometimes used as a way of looking up certificates for a particular
+ user if a fingerprint is not available.
+
+ The subject email address.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ A fingerprint is a SHA-1 hash of the raw certificate data and is often used
+ as a unique identifier for a particular certificate in a certificate store.
+
+ The fingerprint.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the key usage flags.
+
+
+ The X.509 Key Usage Flags are used to determine which operations a certificate
+ may be used for.
+
+ The key usage flags.
+ The certificate.
+
+ is null.
+
+
+
+
+ X.509 certificate record fields.
+
+
+ The record fields are used when querying the
+ for certificates.
+
+
+
+
+ The "id" field is typically just the ROWID in the database.
+
+
+
+
+ The "trusted" field is a boolean value indicating whether the certificate
+ is trusted.
+
+
+
+
+ The "algorithms" field is used for storing the last known list of
+ values that are supported by the
+ client associated with the certificate.
+
+
+
+
+ The "algorithms updated" field is used to store the timestamp of the
+ most recent update to the Algorithms field.
+
+
+
+
+ The "certificate" field is sued for storing the binary data of the actual
+ certificate.
+
+
+
+
+ The "private key" field is used to store the encrypted binary data of the
+ private key associated with the certificate, if available.
+
+
+
+
+ An X.509 certificate record.
+
+
+ Represents an X.509 certificate record loaded from a database.
+
+
+
+
+ Gets the identifier.
+
+
+ The id is typically the ROWID of the certificate in the database and is not
+ generally useful outside of the internals of the database implementation.
+
+ The identifier.
+
+
+
+ Gets the basic constraints of the certificate.
+
+
+ Gets the basic constraints of the certificate.
+
+ The basic constraints of the certificate.
+
+
+
+ Gets or sets a value indicating whether the certificate is trusted.
+
+
+ Indiciates whether or not the certificate is trusted.
+
+ true if the certificate is trusted; otherwise, false.
+
+
+
+ Gets the key usage flags for the certificate.
+
+
+ Gets the key usage flags for the certificate.
+
+ The X.509 key usage.
+
+
+
+ Gets the starting date and time where the certificate is valid.
+
+
+ Gets the starting date and time where the certificate is valid.
+
+ The date and time.
+
+
+
+ Gets the end date and time where the certificate is valid.
+
+
+ Gets the end date and time where the certificate is valid.
+
+ The date and time.
+
+
+
+ Gets the certificate issuer's name.
+
+
+ Gets the certificate issuer's name.
+
+ The issuer's name.
+
+
+
+ Gets the serial number of the certificate.
+
+
+ Gets the serial number of the certificate.
+
+ The serial number.
+
+
+
+ Gets the subject email address.
+
+
+ Gets the subject email address.
+
+ The subject email address.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets or sets the encryption algorithm capabilities.
+
+
+ Gets or sets the encryption algorithm capabilities.
+
+ The encryption algorithms.
+
+
+
+ Gets or sets the date when the algorithms were last updated.
+
+
+ Gets or sets the date when the algorithms were last updated.
+
+ The date the algorithms were updated.
+
+
+
+ Gets the certificate.
+
+
+ Gets the certificate.
+
+ The certificate.
+
+
+
+ Gets the private key.
+
+
+ Gets the private key.
+
+ The private key.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new certificate record with a private key for storing in a
+ .
+
+ The certificate.
+ The private key.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new certificate record for storing in a .
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is only meant to be used by implementors of
+ when loading records from the database.
+
+
+
+
+ A store for X.509 certificates and keys.
+
+
+ A store for X.509 certificates and keys.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Enumerates the certificates currently in the store.
+
+
+ Enumerates the certificates currently in the store.
+
+ The certificates.
+
+
+
+ Gets the private key for the specified certificate.
+
+
+ Gets the private key for the specified certificate, if it exists.
+
+ The private key on success; otherwise null.
+ The certificate.
+
+
+
+ Adds the specified certificate to the store.
+
+
+ Adds the specified certificate to the store.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Adds the specified range of certificates to the store.
+
+
+ Adds the specified range of certificates to the store.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Removes the specified certificate from the store.
+
+
+ Removes the specified certificate from the store.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Removes the specified range of certificates from the store.
+
+
+ Removes the specified range of certificates from the store.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Imports the certificate(s) from the specified stream.
+
+
+ Imports the certificate(s) from the specified stream.
+
+ The stream to import.
+
+ is null.
+
+
+ An error occurred reading the stream.
+
+
+
+
+ Imports the certificate(s) from the specified file.
+
+
+ Imports the certificate(s) from the specified file.
+
+ The name of the file to import.
+
+ is null.
+
+
+ The specified file could not be found.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Imports the certificate(s) from the specified byte array.
+
+
+ Imports the certificate(s) from the specified byte array.
+
+ The raw certificate data.
+
+ is null.
+
+
+
+
+ Imports certificates and private keys from the specified stream.
+
+
+ Imports certificates and private keys from the specified pkcs12 stream.
+
+ The stream to import.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred reading the stream.
+
+
+
+
+ Imports certificates and private keys from the specified file.
+
+
+ Imports certificates and private keys from the specified pkcs12 stream.
+
+ The name of the file to import.
+ The password to unlock the file.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified file could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Imports certificates and private keys from the specified byte array.
+
+
+ Imports certificates and private keys from the specified pkcs12 stream.
+
+ The raw certificate data.
+ The password to unlock the raw data.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Exports the certificates to an unencrypted stream.
+
+
+ Exports the certificates to an unencrypted stream.
+
+ The output stream.
+
+ is null.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Exports the certificates to an unencrypted file.
+
+
+ Exports the certificates to an unencrypted file.
+
+ The file path to write to.
+
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified path exceeds the maximum allowed path length of the system.
+
+
+ A directory in the specified path does not exist.
+
+
+ The user does not have access to create the specified file.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+ The output stream.
+ The password to use to lock the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+ The file path to write to.
+ The password to use to lock the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified path exceeds the maximum allowed path length of the system.
+
+
+ A directory in the specified path does not exist.
+
+
+ The user does not have access to create the specified file.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ X.509 certificate revocation list record fields.
+
+
+ The record fields are used when querying the
+ for certificate revocation lists.
+
+
+
+
+ The "id" field is typically just the ROWID in the database.
+
+
+
+
+ The "delta" field is a boolean value indicating whether the certificate
+ revocation list is a delta.
+
+
+
+
+ The "issuer name" field stores the issuer name of the certificate revocation list.
+
+
+
+
+ The "this update" field stores the date and time of the most recent update.
+
+
+
+
+ The "next update" field stores the date and time of the next scheduled update.
+
+
+
+
+ The "crl" field stores the raw binary data of the certificate revocation list.
+
+
+
+
+ An X.509 certificate revocation list (CRL) record.
+
+
+ Represents an X.509 certificate revocation list record loaded from a database.
+
+
+
+
+ Gets the identifier.
+
+
+ The id is typically the ROWID of the certificate revocation list in the
+ database and is not generally useful outside of the internals of the
+ database implementation.
+
+ The identifier.
+
+
+
+ Gets whether or not this certificate revocation list is a delta.
+
+
+ Indicates whether or not this certificate revocation list is a delta.
+
+ true if th crl is delta; otherwise, false.
+
+
+
+ Gets the issuer name of the certificate revocation list.
+
+
+ Gets the issuer name of the certificate revocation list.
+
+ The issuer's name.
+
+
+
+ Gets the date and time of the most recent update.
+
+
+ Gets the date and time of the most recent update.
+
+ The date and time.
+
+
+
+ Gets the end date and time where the certificate is valid.
+
+
+ Gets the end date and time where the certificate is valid.
+
+ The date and time.
+
+
+
+ Gets the certificate revocation list.
+
+
+ Gets the certificate revocation list.
+
+ The certificate revocation list.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new CRL record for storing in a .
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is only meant to be used by implementors of
+ when loading records from the database.
+
+
+
+
+ X.509 key usage flags.
+
+
+ The X.509 Key Usage Flags can be used to determine what operations
+ a certificate can be used for.
+ A value of indicates that
+ there are no restrictions on the use of the
+ .
+
+
+
+
+ No limitations for the key usage are set.
+
+
+ The key may be used for anything.
+
+
+
+
+ The key may only be used for enciphering data during key agreement.
+
+
+ When both the bit and the
+ bit are both set, the key
+ may be used only for enciphering data while
+ performing key agreement.
+
+
+
+
+ The key may be used for verifying signatures on
+ certificate revocation lists (CRLs).
+
+
+
+
+ The key may be used for verifying signatures on certificates.
+
+
+
+
+ The key is meant to be used for key agreement.
+
+
+
+
+ The key may be used for data encipherment.
+
+
+
+
+ The key is meant to be used for key encipherment.
+
+
+
+
+ The key may be used to verify digital signatures used to
+ provide a non-repudiation service.
+
+
+
+
+ The key may be used for digitally signing data.
+
+
+
+
+ The key may only be used for deciphering data during key agreement.
+
+
+ When both the bit and the
+ bit are both set, the key
+ may be used only for deciphering data while
+ performing key agreement.
+
+
+
+
+ Incrementally decodes content encoded with the base64 encoding.
+
+
+ Base64 is an encoding often used in MIME to encode binary content such
+ as images and other types of multi-media to ensure that the data remains
+ intact when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new base64 decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the base64 encoding.
+
+
+ Base64 is an encoding often used in MIME to encode binary content such
+ as images and other types of multi-media to ensure that the data remains
+ intact when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new base64 encoder.
+
+ true if this encoder will be used to encode rfc2047 encoded-word payloads; false otherwise.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new base64 encoder.
+
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with a Uri hex encoding.
+
+
+ This is mostly meant for decoding parameter values encoded using
+ the rules specified by rfc2184 and rfc2231.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new hex decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using a Uri hex encoding.
+
+
+ This is mostly meant for decoding parameter values encoded using
+ the rules specified by rfc2184 and rfc2231.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new hex encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ An interface for incrementally decoding content.
+
+
+ An interface for incrementally decoding content.
+
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ An interface for incrementally encoding content.
+
+
+ An interface for incrementally encoding content.
+
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ A pass-through decoder implementing the interface.
+
+
+ Simply copies data as-is from the input buffer into the output buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoding to return in the property.
+
+ Creates a new pass-through decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ A pass-through encoder implementing the interface.
+
+
+ Simply copies data as-is from the input buffer into the output buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoding to return in the property.
+
+ Creates a new pass-through encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Q-Encoding mode.
+
+
+ The encoding mode for the 'Q' encoding used in rfc2047.
+
+
+
+
+ A mode for encoding phrases, as defined by rfc822.
+
+
+
+
+ A mode for encoding text.
+
+
+
+
+ Incrementally encodes content using a variation of the quoted-printable encoding
+ that is specifically meant to be used for rfc2047 encoded-word tokens.
+
+
+ The Q-Encoding is an encoding often used in MIME to encode textual content outside
+ of the ASCII range within an rfc2047 encoded-word token in order to ensure that
+ the text remains intact when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new rfc2047 quoted-printable encoder.
+
+ The rfc2047 encoding mode.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with the quoted-printable encoding.
+
+
+ Quoted-Printable is an encoding often used in MIME to textual content outside
+ of the ASCII range in order to ensure that the text remains intact when sent
+ via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new quoted-printable decoder.
+
+
+ true if this decoder will be used to decode rfc2047 encoded-word payloads; false otherwise.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new quoted-printable decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the quoted-printable encoding.
+
+
+ Quoted-Printable is an encoding often used in MIME to encode textual content
+ outside of the ASCII range in order to ensure that the text remains intact
+ when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new quoted-printable encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with the Unix-to-Unix encoding.
+
+
+ The UUEncoding is an encoding that predates MIME and was used to encode
+ binary content such as images and other types of multi-media to ensure
+ that the data remained intact when sent via 7bit transports such as SMTP.
+ These days, the UUEncoding has largely been deprecated in favour of
+ the base64 encoding, however, some older mail clients still use it.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new Unix-to-Unix decoder.
+
+
+ If true, decoding begins immediately rather than after finding a begin-line.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new Unix-to-Unix decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the Unix-to-Unix encoding.
+
+
+ The UUEncoding is an encoding that predates MIME and was used to encode
+ binary content such as images and other types of multi-media to ensure
+ that the data remained intact when sent via 7bit transports such as SMTP.
+ These days, the UUEncoding has largely been deprecated in favour of
+ the base64 encoding, however, some older mail clients still use it.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new Unix-to-Unix encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with the yEnc encoding.
+
+
+ The yEncoding is an encoding that is most commonly used with Usenet and
+ is a binary encoding that includes a 32-bit cyclic redundancy check.
+ For more information, see www.yenc.org.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new yEnc decoder.
+
+
+ If true, decoding begins immediately rather than after finding an =ybegin line.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new yEnc decoder.
+
+
+
+
+ Gets the checksum.
+
+
+ Gets the checksum.
+
+ The checksum.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the yEnc encoding.
+
+
+ The yEncoding is an encoding that is most commonly used with Usenet and
+ is a binary encoding that includes a 32-bit cyclic redundancy check.
+ For more information, see www.yenc.org.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new yEnc encoder.
+
+ The line length to use.
+
+
+
+ Gets the checksum.
+
+
+ Gets the checksum.
+
+ The checksum.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ A bounded stream, confined to reading and writing data to a limited subset of the overall source stream.
+
+
+ Wraps an arbitrary stream, limiting I/O operations to a subset of the source stream.
+ If the is -1, then the end of the stream is unbound.
+ When a is set to parse a persistent stream, it will construct
+ s using bounded streams instead of loading the content into memory.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ If the is less than 0, then the end of the stream
+ is unbounded.
+
+ The underlying stream.
+ The offset in the base stream that will mark the start of this substream.
+ The offset in the base stream that will mark the end of this substream.
+ true to leave the baseStream open after the
+ is disposed; otherwise, false.
+
+ is null.
+
+
+ is less than zero.
+ -or-
+ is greater than or equal to zero
+ -and- is less than .
+
+
+
+
+ Gets the underlying stream.
+
+
+ All I/O is performed on the base stream.
+
+ The underlying stream.
+
+
+
+ Gets the start boundary offset of the underlying stream.
+
+
+ The start boundary is the byte offset into the
+ that marks the beginning of the substream.
+
+ The start boundary offset of the underlying stream.
+
+
+
+ Gets the end boundary offset of the underlying stream.
+
+
+ The end boundary is the byte offset into the
+ that marks the end of the substream. If the value is less than 0,
+ then the end of the stream is treated as unbound.
+
+ The end boundary offset of the underlying stream.
+
+
+
+ Checks whether or not the underlying stream will remain open after
+ the is disposed.
+
+
+ Checks whether or not the underlying stream will remain open after
+ the is disposed.
+
+ true if the underlying stream should remain open after the
+ is disposed; otherwise, false.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The will only support reading if the
+ supports it.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The will only support writing if the
+ supports it.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ The will only support seeking if the
+ supports it.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not I/O operations can timeout.
+
+
+ The will only support timing out if the
+ supports it.
+
+ true if I/O operations can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ If the property is greater than or equal to 0,
+ then the length will be calculated by subtracting the
+ from the . If the end of the stream is unbound, then the
+ will be subtracted from the length of the
+ .
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ The is relative to the .
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+ Gets or sets the 's read timeout.
+
+ A value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+ Gets or sets the 's write timeout.
+
+ A value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads data from the , not allowing it to
+ read beyond the .
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Writes data to the , not allowing it to
+ write beyond the .
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Seeks within the confines of the and the .
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support seeking.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Flushes the .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Updates the to be plus
+ the specified new length. If the needs to be grown
+ to allow this, then the length of the will also be
+ updated.
+
+ The desired length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+ The stream does not support setting the length.
+
+
+ An I/O error occurred.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ If the property is false, then
+ the is also disposed.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A chained stream.
+
+
+ Chains multiple streams together such that reading or writing beyond the end
+ of one stream spills over into the next stream in the chain. The idea is to
+ make it appear is if the chain of streams is all one continuous stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Add the specified stream to the chained stream.
+
+
+ Adds the stream to the end of the chain.
+
+ The stream.
+ true if the
+ should remain open after the is disposed;
+ otherwise, false.
+
+ is null.
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The only supports reading if all of its
+ streams support it.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The only supports writing if all of its
+ streams support it.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ The only supports seeking if all of its
+ streams support it.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not I/O operations can timeout.
+
+
+ The only supports timeouts if all of its
+ streams support them.
+
+ true if I/O operations can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a is the combined lenths of all
+ of its chained streams.
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ It is always possible to get the position of a ,
+ but setting the position is only possible if all of its streams are seekable.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads up to the requested number of bytes if reading is supported. If the
+ current child stream does not have enough remaining data to complete the
+ read, the read will progress into the next stream in the chain in order
+ to complete the read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Writes the requested number of bytes if writing is supported. If the
+ current child stream does not have enough remaining space to fit the
+ complete buffer, the data will spill over into the next stream in the
+ chain in order to complete the write.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Seeks to the specified position within the stream if all child streams
+ support seeking.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support seeking.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ If all of the child streams support writing, then the current child stream
+ will be flushed.
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Setting the length of a is not supported.
+
+ The desired length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+ The stream does not support setting the length.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A stream which filters data as it is read or written.
+
+
+ Passes data through each as the data is read or written.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a filtered stream using the specified source stream.
+
+ The underlying stream to filter.
+
+ is null.
+
+
+
+
+ Gets the underlying source stream.
+
+
+ In general, it is not a good idea to manipulate the underlying
+ source stream because most s store
+ important state about previous bytes read from or written to
+ the source stream.
+
+ The underlying source stream.
+
+
+
+ Adds the specified filter.
+
+
+ Adds the to the end of the list of filters
+ that data will pass through as data is read from or written to the
+ underlying source stream.
+
+ The filter.
+
+ is null.
+
+
+
+
+ Checks if the filtered stream contains the specified filter.
+
+
+ Determines whether or not the filtered stream contains the specified filter.
+
+ true if the specified filter exists;
+ otherwise false.
+ The filter.
+
+ is null.
+
+
+
+
+ Remove the specified filter.
+
+
+ Removes the specified filter from the list if it exists.
+
+ true if the filter was removed; otherwise false.
+ The filter.
+
+ is null.
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The will only support reading if the
+ supports it.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The will only support writing if the
+ supports it.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ Seeking is not supported by the .
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not I/O operations can timeout.
+
+
+ The will only support timing out if the
+ supports it.
+
+ true if I/O operations can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ Getting the length of a is not supported.
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Getting and setting the position of a is not supported.
+
+ The position of the stream.
+
+ The stream does not support seeking.
+
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+ Gets or sets the read timeout on the stream.
+
+ A value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+ Gets or sets the write timeout on the stream.
+
+ A value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads up to the requested number of bytes, passing the data read from the stream
+ through each of the filters before finally copying the result into the provided buffer.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+ The cancellation token.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads up to the requested number of bytes, passing the data read from the stream
+ through each of the filters before finally copying the result into the provided buffer.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Filters the provided buffer through each of the filters before finally writing
+ the result to the underlying stream.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ The cancellation token.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Filters the provided buffer through each of the filters before finally writing
+ the result to the underlying stream.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Seeking is not supported by the .
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ The stream does not support seeking.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Flushes the state of all filters, writing any output to the underlying
+ stream and then calling on the .
+
+ The cancellation token.
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Flushes the state of all filters, writing any output to the underlying
+ stream and then calling on the .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Setting the length of a is not supported.
+
+ The desired length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+ The stream does not support setting the length.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ An interface allowing for a cancellable stream reading operation.
+
+
+ This interface is meant to extend the functionality of a ,
+ allowing the to have much finer-grained canellability.
+ When a custom stream implementation also implements this interface,
+ the will opt to use this interface
+ instead of the normal
+ API to read data from the stream.
+ This is really useful when parsing a message or other MIME entity
+ directly from a network-based stream.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ When a custom stream implementation also implements this interface,
+ the will opt to use this interface
+ instead of the normal
+ API to read data from the stream.
+ This is really useful when parsing a message or other MIME entity
+ directly from a network-based stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+ The cancellation token.
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ When a custom stream implementation also implements this interface,
+ writing a or
+ to the custom stream will opt to use this interface
+ instead of the normal
+ API to write data to the stream.
+ This is really useful when writing a message or other MIME entity
+ directly to a network-based stream.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ The cancellation token
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+ The cancellation token.
+
+
+
+ A stream useful for measuring the amount of data written.
+
+
+ A keeps track of the number of bytes
+ that have been written to it. This is useful, for example, when you
+ need to know how large a is without
+ actually writing it to disk or into a memory buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ A is not readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ A is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ A is always seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ Writing to a cannot timeout.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a indicates the
+ number of bytes that have been written to it.
+
+ The length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Since it is possible to seek within a ,
+ it is possible that the position will not always be identical to the
+ length of the stream, but typically it will be.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reading from a is not supported.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Increments the property by the number of bytes written.
+ If the updated position is greater than the current length of the stream, then
+ the property will be updated to be identical to the
+ position.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Updates the within the stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Since a does not actually do anything other than
+ count bytes, this method is a no-op.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the to the specified value and updates
+ to the specified value if (and only if)
+ the current position is greater than the new length value.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ An efficient memory stream implementation that sacrifices the ability to
+ get access to the internal byte buffer in order to drastically improve
+ performance.
+
+
+ Instead of resizing an internal byte array, the
+ chains blocks of non-contiguous memory. This helps improve performance by avoiding
+ unneeded copying of data from the old array to the newly allocated array as well
+ as the zeroing of the newly allocated array.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with an initial memory block
+ of 2048 bytes.
+
+
+
+
+ Copies the memory stream into a byte array.
+
+
+ Copies all of the stream data into a newly allocated byte array.
+
+ The array.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The is always readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ The is always seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ The does not support timing out.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ Gets the length of the stream, in bytes.
+
+ The length of the stream, in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Gets or sets the current position within the stream.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Writes the entire buffer to the stream and advances the current position
+ within the stream by the number of bytes written, adding memory blocks as
+ needed in order to contain the newly written bytes.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Sets the position within the current stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ This method does not do anything.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the length of the stream.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A filter that armors lines beginning with "From " by encoding the 'F' with the
+ Quoted-Printable encoding.
+
+
+ From-armoring is a workaround to prevent receiving clients (or servers)
+ that uses the mbox file format for local storage from munging the line
+ by prepending a ">", as is typical with the mbox format.
+ This armoring technique ensures that the receiving client will still
+ be able to verify S/MIME signatures.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter that can be used to determine the most efficient Content-Transfer-Encoding.
+
+
+ Keeps track of the content that gets passed through the filter in order to
+ determine the most efficient to use.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the best encoding given the specified constraints.
+
+
+ Gets the best encoding given the specified constraints.
+
+ The best encoding.
+ The encoding constraint.
+ The maximum allowable line length (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A charset filter for incrementally converting text streams from
+ one charset encoding to another.
+
+
+ Incrementally converts text from one charset encoding to another.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new to convert text from the specified
+ source encoding into the target charset encoding.
+
+ Source encoding name.
+ Target encoding name.
+
+ is null.
+ -or-
+ is null.
+
+
+ The is not supported by the system.
+ -or-
+ The is not supported by the system.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new to convert text from the specified
+ source encoding into the target charset encoding.
+
+ Source code page.
+ Target code page.
+
+ is less than zero or greater than 65535.
+ -or-
+ is less than zero or greater than 65535.
+
+
+ The is not supported by the system.
+ -or-
+ The is not supported by the system.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new to convert text from the specified
+ source encoding into the target charset encoding.
+
+ Source encoding.
+ Target encoding.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the source encoding.
+
+
+ Gets the source encoding.
+
+ The source encoding.
+
+
+
+ Gets the target encoding.
+
+
+ Gets the target encoding.
+
+ The target encoding.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter for decoding MIME content.
+
+
+ Uses a to incrementally decode data.
+
+
+
+
+ Gets the decoder used by this filter.
+
+
+ Gets the decoder used by this filter.
+
+ The decoder.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the specified decoder.
+
+ A specific decoder for the filter to use.
+
+ is null.
+
+
+
+
+ Create a filter that will decode the specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new decoder filter.
+ The encoding to create a filter for.
+
+
+
+ Create a filter that will decode the specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new decoder filter.
+ The name of the encoding to create a filter for.
+
+ is null.
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter that will convert from Windows/DOS line endings to Unix line endings.
+
+
+ Converts from Windows/DOS line endings to Unix line endings.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ Ensure that the stream ends with a new line.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter for encoding MIME content.
+
+
+ Uses a to incrementally encode data.
+
+
+
+
+ Gets the encoder used by this filter.
+
+
+ Gets the encoder used by this filter.
+
+ The encoder.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the specified encoder.
+
+ A specific encoder for the filter to use.
+
+
+
+ Create a filter that will encode using specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new encoder filter.
+ The encoding to create a filter for.
+
+
+
+ Create a filter that will encode using specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new encoder filter.
+ The name of the encoding to create a filter for.
+
+ is null.
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ An interface for incrementally filtering data.
+
+
+ An interface for incrementally filtering data.
+
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A base implementation for MIME filters.
+
+
+ A base implementation for MIME filters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the output buffer.
+
+
+ Gets the output buffer.
+
+ The output buffer.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ Saves the remaining input for the next round of processing.
+
+
+ Saves the remaining input for the next round of processing.
+
+ The input buffer.
+ The starting index of the buffer to save.
+ The length of the buffer to save, starting at .
+
+
+
+ Ensures that the output buffer is greater than or equal to the specified size.
+
+
+ Ensures that the output buffer is greater than or equal to the specified size.
+
+ The minimum size needed.
+ If set to true, the current output should be preserved.
+
+
+
+ A filter that simply passes data through without any processing.
+
+
+ Passes data through without any processing.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter for stripping trailing whitespace from lines in a textual stream.
+
+
+ Strips trailing whitespace from lines in a textual stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter that will convert from Unix line endings to Windows/DOS line endings.
+
+
+ Converts from Unix line endings to Windows/DOS line endings.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ Ensure that the stream ends with a new line.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A flowed text to HTML converter.
+
+
+ Used to convert flowed text (as described in rfc3676) into HTML.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new flowed text to HTML converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set whether the trailing space on a wrapped line should be deleted.
+
+
+ Gets or sets whether the trailing space on a wrapped line should be deleted.
+ The flowed text format defines a Content-Type parameter called "delsp" which can
+ have a value of "yes" or "no". If the parameter exists and the value is "yes", then
+ should be set to true, otherwise
+ should be set to false.
+
+
+
+
+ true if the trailing space on a wrapped line should be deleted; otherwise, false.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Get or set the header format.
+
+
+ Gets or sets the header format.
+
+ The header format.
+
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+ The html tag callback.
+
+
+
+ Get or set whether or not the converter should only output an HTML fragment.
+
+
+ Gets or sets whether or not the converter should only output an HTML fragment.
+
+ true if the converter should only output an HTML fragment; otherwise, false.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A flowed text to text converter.
+
+
+ Unwraps the flowed text format described in rfc3676.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new flowed text to text converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set whether the trailing space on a wrapped line should be deleted.
+
+
+ Gets or sets whether the trailing space on a wrapped line should be deleted.
+ The flowed text format defines a Content-Type parameter called "delsp" which can
+ have a value of "yes" or "no". If the parameter exists and the value is "yes", then
+ should be set to true, otherwise
+ should be set to false.
+
+ true if the trailing space on a wrapped line should be deleted; otherwise, false.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ An enumeration of possible header and footer formats.
+
+
+ An enumeration of possible header and footer formats.
+
+
+
+
+ The header or footer contains plain text.
+
+
+
+
+ The header or footer contains properly formatted HTML.
+
+
+
+
+ An HTML attribute.
+
+
+ An HTML attribute.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new HTML attribute with the given id and value.
+
+ The attribute identifier.
+ The attribute value.
+
+ is not a valid value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new HTML attribute with the given name and value.
+
+ The attribute name.
+ The attribute value.
+
+ is null.
+
+
+
+
+ Get the HTML attribute identifier.
+
+
+ Gets the HTML attribute identifier.
+
+
+
+
+ The attribute identifier.
+
+
+
+ Get the name of the attribute.
+
+
+ Gets the name of the attribute.
+
+
+
+
+ The name of the attribute.
+
+
+
+ Get the value of the attribute.
+
+
+ Gets the value of the attribute.
+
+
+
+
+ The value of the attribute.
+
+
+
+ A readonly collection of HTML attributes.
+
+
+ A readonly collection of HTML attributes.
+
+
+
+
+ An empty attribute collection.
+
+
+ An empty attribute collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ A collection of attributes.
+
+
+
+ Get the number of attributes in the collection.
+
+
+ Gets the number of attributes in the collection.
+
+ The number of attributes in the collection.
+
+
+
+ Get the at the specified index.
+
+
+ Gets the at the specified index.
+
+ The HTML attribute at the specified index.
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets an enumerator for the attribute collection.
+
+
+ Gets an enumerator for the attribute collection.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the attribute collection.
+
+
+ Gets an enumerator for the attribute collection.
+
+ The enumerator.
+
+
+
+ HTML attribute identifiers.
+
+
+ HTML attribute identifiers.
+
+
+
+
+ An unknown HTML attribute identifier.
+
+
+
+
+ The "abbr" attribute.
+
+
+
+
+ The "accept" attribute.
+
+
+
+
+ The "accept-charset" attribute.
+
+
+
+
+ The "accesskey" attribute.
+
+
+
+
+ The "action" attribute.
+
+
+
+
+ The "align" attribute.
+
+
+
+
+ The "alink" attribute.
+
+
+
+
+ The "alt" attribute.
+
+
+
+
+ The "archive" attribute.
+
+
+
+
+ The "axis" attribute.
+
+
+
+
+ The "background" attribute.
+
+
+
+
+ The "bgcolor" attribute.
+
+
+
+
+ The "border" attribute.
+
+
+
+
+ The "cellpadding" attribute.
+
+
+
+
+ The "cellspacing" attribute.
+
+
+
+
+ The "char" attribute.
+
+
+
+
+ The "charoff" attribute.
+
+
+
+
+ The "charset" attribute.
+
+
+
+
+ The "checked" attribute.
+
+
+
+
+ The "cite" attribute.
+
+
+
+
+ The "class" attribute.
+
+
+
+
+ The "classid" attribute.
+
+
+
+
+ The "clear" attribute.
+
+
+
+
+ The "code" attribute.
+
+
+
+
+ The "codebase" attribute.
+
+
+
+
+ The "codetype" attribute.
+
+
+
+
+ The "color" attribute.
+
+
+
+
+ The "cols" attribute.
+
+
+
+
+ The "colspan" attribute.
+
+
+
+
+ The "compact" attribute.
+
+
+
+
+ The "content" attribute.
+
+
+
+
+ The "coords" attribute.
+
+
+
+
+ The "data" attribute.
+
+
+
+
+ The "datetime" attribute.
+
+
+
+
+ The "declare" attribute.
+
+
+
+
+ The "defer" attribute.
+
+
+
+
+ The "dir" attribute.
+
+
+
+
+ The "disabled" attribute.
+
+
+
+
+ The "dynsrc" attribute.
+
+
+
+
+ The "enctype" attribute.
+
+
+
+
+ The "face" attribute.
+
+
+
+
+ The "for" attribute.
+
+
+
+
+ The "frame" attribute.
+
+
+
+
+ The "frameborder" attribute.
+
+
+
+
+ The "headers" attribute.
+
+
+
+
+ The "height" attribute.
+
+
+
+
+ The "href" attribute.
+
+
+
+
+ The "hreflang" attribute.
+
+
+
+
+ The "hspace" attribute.
+
+
+
+
+ The "http-equiv" attribute.
+
+
+
+
+ The "id" attribute.
+
+
+
+
+ The "ismap" attribute.
+
+
+
+
+ The "label" attribute.
+
+
+
+
+ The "lang" attribute.
+
+
+
+
+ The "language" attribute.
+
+
+
+
+ The "leftmargin" attribute.
+
+
+
+
+ The "link" attribute.
+
+
+
+
+ The "longdesc" attribute.
+
+
+
+
+ The "lowsrc" attribute.
+
+
+
+
+ The "marginheight" attribute.
+
+
+
+
+ The "marginwidth" attribute.
+
+
+
+
+ The "maxlength" attribute.
+
+
+
+
+ The "media" attribute.
+
+
+
+
+ The "method" attribute.
+
+
+
+
+ The "multiple" attribute.
+
+
+
+
+ The "name" attribute.
+
+
+
+
+ The "nohref" attribute.
+
+
+
+
+ The "noresize" attribute.
+
+
+
+
+ The "noshade" attribute.
+
+
+
+
+ The "nowrap" attribute.
+
+
+
+
+ The "object" attribute.
+
+
+
+
+ The "profile" attribute.
+
+
+
+
+ The "prompt" attribute.
+
+
+
+
+ The "readonly" attribute.
+
+
+
+
+ The "rel" attribute.
+
+
+
+
+ The "rev" attribute.
+
+
+
+
+ The "rows" attribute.
+
+
+
+
+ The "rowspan" attribute.
+
+
+
+
+ The "rules" attribute.
+
+
+
+
+ The "scheme" attribute.
+
+
+
+
+ The "scope" attribute.
+
+
+
+
+ The "scrolling" attribute.
+
+
+
+
+ The "selected" attribute.
+
+
+
+
+ The "shape" attribute.
+
+
+
+
+ The "size" attribute.
+
+
+
+
+ The "span" attribute.
+
+
+
+
+ The "src" attribute.
+
+
+
+
+ The "standby" attribute.
+
+
+
+
+ The "start" attribute.
+
+
+
+
+ The "style" attribute.
+
+
+
+
+ The "summary" attribute.
+
+
+
+
+ The "tabindex" attribute.
+
+
+
+
+ The "target" attribute.
+
+
+
+
+ The "text" attribute.
+
+
+
+
+ The "title" attribute.
+
+
+
+
+ The "topmargin" attribute.
+
+
+
+
+ The "type" attribute.
+
+
+
+
+ The "usemap" attribute.
+
+
+
+
+ The "valign" attribute.
+
+
+
+
+ The "value" attribute.
+
+
+
+
+ The "valuetype" attribute.
+
+
+
+
+ The "version" attribute.
+
+
+
+
+ The "vlink" attribute.
+
+
+
+
+ The "vspace" attribute.
+
+
+
+
+ The "width" attribute.
+
+
+
+
+ The "xmlns" attribute.
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent attribute name.
+
+
+ Converts the enum value into the equivalent attribute name.
+
+ The attribute name.
+ The enum value.
+
+
+
+ Converts the attribute name into the equivalent attribute id.
+
+
+ Converts the attribute name into the equivalent attribute id.
+
+ The attribute id.
+ The attribute name.
+
+
+
+ An HTML entity decoder.
+
+
+ An HTML entity decoder.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Push the specified character into the HTML entity decoder.
+
+
+ Pushes the specified character into the HTML entity decoder.
+ The first character pushed MUST be the '&' character.
+
+ true if the character was accepted; otherwise, false.
+ The character.
+
+ is the first character being pushed and was not the '&' character.
+
+
+
+
+ Get the decoded entity value.
+
+
+ Gets the decoded entity value.
+
+ The value.
+
+
+
+ Reset the entity decoder.
+
+
+ Resets the entity decoder.
+
+
+
+
+ An HTML namespace.
+
+
+ An HTML namespace.
+
+
+
+
+ The namespace is "http://www.w3.org/1999/xhtml".
+
+
+
+
+ The namespace is "http://www.w3.org/1998/Math/MathML".
+
+
+
+
+ The namespace is "http://www.w3.org/2000/svg".
+
+
+
+
+ The namespace is "http://www.w3.org/1999/xlink".
+
+
+
+
+ The namespace is "http://www.w3.org/XML/1998/namespace".
+
+
+
+
+ The namespace is "http://www.w3.org/2000/xmlns/".
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent namespace url.
+
+
+ Converts the enum value into the equivalent namespace url.
+
+ The tag name.
+ The enum value.
+
+
+
+ Converts the tag name into the equivalent tag id.
+
+
+ Converts the tag name into the equivalent tag id.
+
+ The tag id.
+ The namespace.
+
+
+
+ An HTML tag callback delegate.
+
+
+ The delegate is called when a converter
+ is ready to write a new HTML tag, allowing developers to customize
+ whether the tag gets written at all, which attributes get written, etc.
+
+
+
+
+ The HTML tag context.
+ The HTML writer.
+
+
+
+ An HTML tag context.
+
+
+ An HTML tag context used with the delegate.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The HTML tag identifier.
+
+ is invalid.
+
+
+
+
+ Get the HTML tag attributes.
+
+
+ Gets the HTML tag attributes.
+
+
+
+
+ The attributes.
+
+
+
+ Get or set whether or not the end tag should be deleted.
+
+
+ Gets or sets whether or not the end tag should be deleted.
+
+ true if the end tag should be deleted; otherwise, false.
+
+
+
+ Get or set whether or not the tag should be deleted.
+
+
+ Gets or sets whether or not the tag should be deleted.
+
+ true if the tag should be deleted; otherwise, false.
+
+
+
+ Get or set whether or not the should be invoked for the end tag.
+
+
+ Gets or sets whether or not the should be invoked for the end tag.
+
+ true if the callback should be invoked for end tag; otherwise, false.
+
+
+
+ Get whether or not the tag is an empty element.
+
+
+ Gets whether or not the tag is an empty element.
+
+ true if the tag is an empty element; otherwise, false.
+
+
+
+ Get whether or not the tag is an end tag.
+
+
+ Gets whether or not the tag is an end tag.
+
+
+
+
+ true if the tag is an end tag; otherwise, false.
+
+
+
+ Get or set whether or not the inner content of the tag should be suppressed.
+
+
+ Gets or sets whether or not the inner content of the tag should be suppressed.
+
+ true if the inner content should be suppressed; otherwise, false.
+
+
+
+ Get the HTML tag identifier.
+
+
+ Gets the HTML tag identifier.
+
+
+
+
+ The HTML tag identifier.
+
+
+
+ Get the HTML tag name.
+
+
+ Gets the HTML tag name.
+
+
+
+
+ The HTML tag name.
+
+
+
+ Write the HTML tag.
+
+
+ Writes the HTML tag to the given .
+
+ The HTML writer.
+
+ is null.
+
+
+
+
+ Write the HTML tag.
+
+
+ Writes the HTML tag to the given .
+
+
+
+
+ The HTML writer.
+ true if the should also be written; otherwise, false.
+
+ is null.
+
+
+
+
+ HTML tag identifiers.
+
+
+ HTML tag identifiers.
+
+
+
+
+ An unknown HTML tag identifier.
+
+
+
+
+ The HTML <a> tag.
+
+
+
+
+ The HTML <abbr> tag.
+
+
+
+
+ The HTML <acronym> tag.
+
+
+
+
+ The HTML <address> tag.
+
+
+
+
+ The HTML <applet> tag.
+
+
+
+
+ The HTML <area> tag.
+
+
+
+
+ The HTML <article> tag.
+
+
+
+
+ The HTML <aside> tag.
+
+
+
+
+ The HTML <audio> tag.
+
+
+
+
+ The HTML <b> tag.
+
+
+
+
+ The HTML <base> tag.
+
+
+
+
+ The HTML <basefont> tag.
+
+
+
+
+ The HTML <bdi> tag.
+
+
+
+
+ The HTML <bdo> tag.
+
+
+
+
+ The HTML <bgsound> tag.
+
+
+
+
+ The HTML <big> tag.
+
+
+
+
+ The HTML <blink> tag.
+
+
+
+
+ The HTML <blockquote> tag.
+
+
+
+
+ The HTML <body> tag.
+
+
+
+
+ The HTML <br> tag.
+
+
+
+
+ The HTML <button> tag.
+
+
+
+
+ The HTML <canvas> tag.
+
+
+
+
+ The HTML <caption> tag.
+
+
+
+
+ The HTML <center> tag.
+
+
+
+
+ The HTML <cite> tag.
+
+
+
+
+ The HTML <code> tag.
+
+
+
+
+ The HTML <col> tag.
+
+
+
+
+ The HTML <colgroup> tag.
+
+
+
+
+ The HTML <command> tag.
+
+
+
+
+ The HTML comment tag.
+
+
+
+
+ The HTML <datalist> tag.
+
+
+
+
+ The HTML <dd> tag.
+
+
+
+
+ The HTML <del> tag.
+
+
+
+
+ The HTML <details> tag.
+
+
+
+
+ The HTML <dfn> tag.
+
+
+
+
+ The HTML <dialog> tag.
+
+
+
+
+ The HTML <dir> tag.
+
+
+
+
+ The HTML <div> tag.
+
+
+
+
+ The HTML <dl> tag.
+
+
+
+
+ The HTML <dt> tag.
+
+
+
+
+ The HTML <em> tag.
+
+
+
+
+ The HTML <embed> tag.
+
+
+
+
+ The HTML <fieldset> tag.
+
+
+
+
+ The HTML <figcaption> tag.
+
+
+
+
+ The HTML <figure> tag.
+
+
+
+
+ The HTML <font> tag.
+
+
+
+
+ The HTML <footer> tag.
+
+
+
+
+ The HTML <form> tag.
+
+
+
+
+ The HTML <frame> tag.
+
+
+
+
+ The HTML <frameset> tag.
+
+
+
+
+ The HTML <h1> tag.
+
+
+
+
+ The HTML <h2> tag.
+
+
+
+
+ The HTML <h3> tag.
+
+
+
+
+ The HTML <h4> tag.
+
+
+
+
+ The HTML <h5> tag.
+
+
+
+
+ The HTML <h6> tag.
+
+
+
+
+ The HTML <head> tag.
+
+
+
+
+ The HTML <header> tag.
+
+
+
+
+ The HTML <hr> tag.
+
+
+
+
+ The HTML <html> tag.
+
+
+
+
+ The HTML <i> tag.
+
+
+
+
+ The HTML <iframe> tag.
+
+
+
+
+ The HTML <image> tag.
+
+
+
+
+ The HTML <input> tag.
+
+
+
+
+ The HTML <ins> tag.
+
+
+
+
+ The HTML <isindex> tag.
+
+
+
+
+ The HTML <kbd> tag.
+
+
+
+
+ The HTML <keygen> tag.
+
+
+
+
+ The HTML <label> tag.
+
+
+
+
+ The HTML <legend> tag.
+
+
+
+
+ The HTML <li> tag.
+
+
+
+
+ The HTML <link> tag.
+
+
+
+
+ The HTML <listing> tag.
+
+
+
+
+ The HTML <main> tag.
+
+
+
+
+ The HTML <map> tag.
+
+
+
+
+ The HTML <mark> tag.
+
+
+
+
+ The HTML <marquee> tag.
+
+
+
+
+ The HTML <menu> tag.
+
+
+
+
+ The HTML <menuitem> tag.
+
+
+
+
+ The HTML <meta> tag.
+
+
+
+
+ The HTML <meter> tag.
+
+
+
+
+ The HTML <nav> tag.
+
+
+
+
+ The HTML <nextid> tag.
+
+
+
+
+ The HTML <nobr> tag.
+
+
+
+
+ The HTML <noembed> tag.
+
+
+
+
+ The HTML <noframes> tag.
+
+
+
+
+ The HTML <noscript> tag.
+
+
+
+
+ The HTML <object> tag.
+
+
+
+
+ The HTML <ol> tag.
+
+
+
+
+ The HTML <optgroup> tag.
+
+
+
+
+ The HTML <option> tag.
+
+
+
+
+ The HTML <output> tag.
+
+
+
+
+ The HTML <p> tag.
+
+
+
+
+ The HTML <param> tag.
+
+
+
+
+ The HTML <plaintext> tag.
+
+
+
+
+ The HTML <pre> tag.
+
+
+
+
+ The HTML <progress> tag.
+
+
+
+
+ The HTML <q> tag.
+
+
+
+
+ The HTML <rp> tag.
+
+
+
+
+ The HTML <rt> tag.
+
+
+
+
+ The HTML <ruby> tag.
+
+
+
+
+ The HTML <s> tag.
+
+
+
+
+ The HTML <samp> tag.
+
+
+
+
+ The HTML <script> tag.
+
+
+
+
+ The HTML <section> tag.
+
+
+
+
+ The HTML <select> tag.
+
+
+
+
+ The HTML <small> tag.
+
+
+
+
+ The HTML <source> tag.
+
+
+
+
+ The HTML <span> tag.
+
+
+
+
+ The HTML <strike> tag.
+
+
+
+
+ The HTML <strong> tag.
+
+
+
+
+ The HTML <style> tag.
+
+
+
+
+ The HTML <sub> tag.
+
+
+
+
+ The HTML <summary> tag.
+
+
+
+
+ The HTML <sup> tag.
+
+
+
+
+ The HTML <table> tag.
+
+
+
+
+ The HTML <tbody> tag.
+
+
+
+
+ The HTML <td> tag.
+
+
+
+
+ The HTML <textarea> tag.
+
+
+
+
+ The HTML <tfoot> tag.
+
+
+
+
+ The HTML <th> tag.
+
+
+
+
+ The HTML <thread> tag.
+
+
+
+
+ The HTML <time> tag.
+
+
+
+
+ The HTML <title> tag.
+
+
+
+
+ The HTML <tr> tag.
+
+
+
+
+ The HTML <track> tag.
+
+
+
+
+ The HTML <tt> tag.
+
+
+
+
+ The HTML <u> tag.
+
+
+
+
+ The HTML <ul> tag.
+
+
+
+
+ The HTML <var> tag.
+
+
+
+
+ The HTML <video> tag.
+
+
+
+
+ The HTML <wbr> tag.
+
+
+
+
+ The HTML <xml> tag.
+
+
+
+
+ The HTML <xmp> tag.
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent tag name.
+
+
+ Converts the enum value into the equivalent tag name.
+
+ The tag name.
+ The enum value.
+
+
+
+ Converts the tag name into the equivalent tag id.
+
+
+ Converts the tag name into the equivalent tag id.
+
+ The tag id.
+ The tag name.
+
+
+
+ Determines whether or not the HTML tag is an empty element.
+
+
+ Determines whether or not the HTML tag is an empty element.
+
+ true if the tag is an empty element; otherwise, false.
+ Identifier.
+
+
+
+ Determines whether or not the HTML tag is a formatting element.
+
+
+ Determines whether or not the HTML tag is a formatting element.
+
+ true if the HTML tag is a formatting element; otherwise, false.
+ The HTML tag identifier.
+
+
+
+ An HTML to HTML converter.
+
+
+ Used to convert HTML into HTML.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new HTML to HTML converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set whether or not executable scripts should be stripped from the output.
+
+
+ Gets or sets whether or not executable scripts should be stripped from the output.
+
+ true if executable scripts should be filtered; otherwise, false.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Get or set the header format.
+
+
+ Gets or sets the header format.
+
+ The header format.
+
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+ The html tag callback.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ An abstract HTML token class.
+
+
+ An abstract HTML token class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The kind of token.
+
+
+
+ Get the kind of HTML token that this object represents.
+
+
+ Gets the kind of HTML token that this object represents.
+
+ The kind of token.
+
+
+
+ Write the HTML token to a .
+
+
+ Writes the HTML token to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ An HTML comment token.
+
+
+ An HTML comment token.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The comment text.
+ true if the comment is bogus; otherwise, false.
+
+ is null.
+
+
+
+
+ Get the comment.
+
+
+ Gets the comment.
+
+ The comment.
+
+
+
+ Get whether or not the comment is a bogus comment.
+
+
+ Gets whether or not the comment is a bogus comment.
+
+ true if the comment is bogus; otherwise, false.
+
+
+
+ Write the HTML comment to a .
+
+
+ Writes the HTML comment to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML token constisting of character data.
+
+
+ An HTML token consisting of character data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The kind of character data.
+ The character data.
+
+ is not a valid .
+
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The character data.
+
+ is null.
+
+
+
+
+ Get the character data.
+
+
+ Gets the character data.
+
+ The character data.
+
+
+
+ Write the HTML character data to a .
+
+
+ Writes the HTML character data to a ,
+ encoding it if it isn't already encoded.
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML token constisting of [CDATA[.
+
+
+ An HTML token consisting of [CDATA[.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The character data.
+
+ is null.
+
+
+
+
+ Write the HTML character data to a .
+
+
+ Writes the HTML character data to a ,
+ encoding it if it isn't already encoded.
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML token constisting of script data.
+
+
+ An HTML token consisting of script data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The script data.
+
+ is null.
+
+
+
+
+ Write the HTML script data to a .
+
+
+ Writes the HTML script data to a ,
+ encoding it if it isn't already encoded.
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML tag token.
+
+
+ An HTML tag token.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The name of the tag.
+ The attributes.
+ true if the tag is an empty element; otherwise, false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The name of the tag.
+ true if the tag is an end tag; otherwise, false.
+
+ is null.
+
+
+
+
+ Get the attributes.
+
+
+ Gets the attributes.
+
+ The attributes.
+
+
+
+ Get the HTML tag identifier.
+
+
+ Gets the HTML tag identifier.
+
+ The HTML tag identifier.
+
+
+
+ Get whether or not the tag is an empty element.
+
+
+ Gets whether or not the tag is an empty element.
+
+ true if the tag is an empty element; otherwise, false.
+
+
+
+ Get whether or not the tag is an end tag.
+
+
+ Gets whether or not the tag is an end tag.
+
+ true if the tag is an end tag; otherwise, false.
+
+
+
+ Get the name of the tag.
+
+
+ Gets the name of the tag.
+
+ The name.
+
+
+
+ Write the HTML tag to a .
+
+
+ Writes the HTML tag to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML DOCTYPE token.
+
+
+ An HTML DOCTYPE token.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Get whether or not quirks-mode should be forced.
+
+
+ Gets whether or not quirks-mode should be forced.
+
+ true if quirks-mode should be forced; otherwise, false.
+
+
+
+ Get or set the DOCTYPE name.
+
+
+ Gets or sets the DOCTYPE name.
+
+ The name.
+
+
+
+ Get or set the public identifier.
+
+
+ Gets or sets the public identifier.
+
+ The public identifier.
+
+
+
+ Get the public keyword that was used.
+
+
+ Gets the public keyword that was used.
+
+ The public keyword or null if it wasn't used.
+
+
+
+ Get or set the system identifier.
+
+
+ Gets or sets the system identifier.
+
+ The system identifier.
+
+
+
+ Get the system keyword that was used.
+
+
+ Gets the system keyword that was used.
+
+ The system keyword or null if it wasn't used.
+
+
+
+ Write the DOCTYPE tag to a .
+
+
+ Writes the DOCTYPE tag to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML tokenizer.
+
+
+ Tokenizes HTML text, emitting an for each token it encounters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The .
+
+
+
+ Get or set whether or not the tokenizer should decode character references.
+
+
+ Gets or sets whether or not the tokenizer should decode character references.
+ Character references in attribute values will still be decoded
+ even if this value is set to false.
+
+ true if character references should be decoded; otherwise, false.
+
+
+
+ Get the current HTML namespace detected by the tokenizer.
+
+
+ Gets the current HTML namespace detected by the tokenizer.
+
+ The html namespace.
+
+
+
+ Gets the current line number.
+
+
+ This property is most commonly used for error reporting, but can be called
+ at any time. The starting value for this property is 1.
+ Combined with , a value of 1,1 indicates
+ the start of the document.
+
+ The current line number.
+
+
+
+ Gets the current line position.
+
+
+ This property is most commonly used for error reporting, but can be called
+ at any time. The starting value for this property is 1.
+ Combined with , a value of 1,1 indicates
+ the start of the document.
+
+ The current line number.
+
+
+
+ Get the current state of the tokenizer.
+
+
+ Gets the current state of the tokenizer.
+
+ The current state of the tokenizer.
+
+
+
+ Create a DOCTYPE token.
+
+
+ Creates a DOCTYPE token.
+
+ The DOCTYPE token.
+
+
+
+ Create an HTML comment token.
+
+
+ Creates an HTML comment token.
+
+ The HTML comment token.
+ The comment.
+ true if the comment is bogus; otherwise, false.
+
+
+
+ Create an HTML character data token.
+
+
+ Creates an HTML character data token.
+
+ The HTML character data token.
+ The character data.
+
+
+
+ Create an HTML character data token.
+
+
+ Creates an HTML character data token.
+
+ The HTML character data token.
+ The character data.
+
+
+
+ Create an HTML script data token.
+
+
+ Creates an HTML script data token.
+
+ The HTML script data token.
+ The script data.
+
+
+
+ Create an HTML tag token.
+
+
+ Creates an HTML tag token.
+
+ The HTML tag token.
+ The tag name.
+ true if the tag is an end tag; otherwise, false.
+
+
+
+ Create an attribute.
+
+
+ Creates an attribute.
+
+ The attribute.
+ THe attribute name.
+
+
+
+ Reads the next token.
+
+
+ Reads the next token.
+
+ true if the next token was read; otherwise, false.
+ THe token that was read.
+
+
+
+ The HTML tokenizer state.
+
+
+ The HTML tokenizer state.
+
+
+
+
+ The data state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#data-state.
+
+
+
+
+ The character reference in data state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#character-reference-in-data-state.
+
+
+
+
+ The RCDATA state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-state.
+
+
+
+
+ The character reference in RCDATA state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#character-reference-in-rcdata-state.
+
+
+
+
+ The RAWTEXT state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-state.
+
+
+
+
+ The script data state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-state.
+
+
+
+
+ The PLAINTEXT state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#plaintext-state.
+
+
+
+
+ The tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#tag-open-state.
+
+
+
+
+ The end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#end-tag-open-state.
+
+
+
+
+ The tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#tag-name-state.
+
+
+
+
+ The RCDATA less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-less-than-sign-state.
+
+
+
+
+ The RCDATA end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-end-tag-open-state.
+
+
+
+
+ The RCDATA end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-end-tag-name-state.
+
+
+
+
+ The RAWTEXT less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-less-than-sign-state.
+
+
+
+
+ The RAWTEXT end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-end-tag-open-state.
+
+
+
+
+ The RAWTEXT end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-end-tag-name-state.
+
+
+
+
+ The script data less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-less-than-sign-state.
+
+
+
+
+ The script data end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-end-tag-open-state.
+
+
+
+
+ The script data end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-end-tag-name-state.
+
+
+
+
+ The script data escape start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escape-start-state.
+
+
+
+
+ The script data escape start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escape-start-dash-state.
+
+
+
+
+ The script data escaped state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-state.
+
+
+
+
+ The script data escaped dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-dash-state.
+
+
+
+
+ The script data escaped dash dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-dash-dash-state.
+
+
+
+
+ The script data escaped less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-less-than-sign-state.
+
+
+
+
+ The script data escaped end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-end-tag-open-state.
+
+
+
+
+ The script data escaped end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-end-tag-name-state.
+
+
+
+
+ The script data double escape start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escape-start-state.
+
+
+
+
+ The script data double escaped state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-state.
+
+
+
+
+ The script data double escaped dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-dash-state.
+
+
+
+
+ The script data double escaped dash dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-dash-dash-state.
+
+
+
+
+ The script data double escaped less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-less-than-sign-state.
+
+
+
+
+ The script data double escape end state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escape-end-state.
+
+
+
+
+ The before attribute name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-attribute-name-state.
+
+
+
+
+ The attribute name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#attribute-name-state.
+
+
+
+
+ The after attribute name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-attribute-name-state.
+
+
+
+
+ The beforw attribute value state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-attribute-value-state.
+
+
+
+
+ The attribute value quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#attribute-value-(double-quoted)-state.
+
+
+
+
+ The attribute value unquoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#attribute-value-(unquoted)-state.
+
+
+
+
+ The character reference in attribute value state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#character-reference-in-attribute-value-state.
+
+
+
+
+ The after attribute value quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-attribute-value-(quoted)-state.
+
+
+
+
+ The self-closing start tag state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#self-closing-start-tag-state.
+
+
+
+
+ The bogus comment state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#bogus-comment-state.
+
+
+
+
+ The markup declaration open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#markup-declaration-open-state.
+
+
+
+
+ The comment start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-start-state.
+
+
+
+
+ The comment start dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-start-dash-state.
+
+
+
+
+ The comment state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-state.
+
+
+
+
+ The comment end dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-end-dash-state.
+
+
+
+
+ The comment end state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-end-state.
+
+
+
+
+ The comment end bang state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-end-bang-state.
+
+
+
+
+ The DOCTYPE state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-state.
+
+
+
+
+ The before DOCTYPE name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-doctype-name-state.
+
+
+
+
+ The DOCTYPE name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-name-state.
+
+
+
+
+ The after DOCTYPE name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-name-state.
+
+
+
+
+ The after DOCTYPE public keyword state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-public-keyword-state.
+
+
+
+
+ The before DOCTYPE public identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-doctype-public-identifier-state.
+
+
+
+
+ The DOCTYPE public identifier quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-public-identifier-(double-quoted)-state.
+
+
+
+
+ The after DOCTYPE public identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-public-identifier-state.
+
+
+
+
+ The between DOCTYPE public and system identifiers state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#between-doctype-public-and-system-identifiers-state.
+
+
+
+
+ The after DOCTYPE system keyword state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-system-keyword-state.
+
+
+
+
+ The before DOCTYPE system identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-doctype-system-identifier-state.
+
+
+
+
+ The DOCTYPE system identifier quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-system-identifier-(double-quoted)-state.
+
+
+
+
+ The after DOCTYPE system identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-system-identifier-state.
+
+
+
+
+ The bogus DOCTYPE state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#bogus-doctype-state.
+
+
+
+
+ The CDATA section state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#cdata-section-state.
+
+
+
+
+ The end of file state.
+
+
+
+
+ The kinds of tokens that the can emit.
+
+
+ The kinds of tokens that the can emit.
+
+
+
+
+ A token consisting of [CDATA[.
+
+
+
+
+ An HTML comment token.
+
+
+
+
+ A token consisting of character data.
+
+
+
+
+ An HTML DOCTYPE token.
+
+
+
+
+ A token consisting of script data.
+
+
+
+
+ An HTML tag token.
+
+
+
+
+ A collection of HTML-related utility methods.
+
+
+ A collection of HTML-related utility methods.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The to output the result.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The encoded attribute value.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The to output the result.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The to output the result.
+ The attribute value to encode.
+ The character to use for quoting the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The encoded attribute value.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The encoded attribute value.
+ The attribute value to encode.
+ The character to use for quoting the attribute value.
+
+ is null.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ The to output the result.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ THe encoded character data.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ The to output the result.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ The to output the result.
+ The character data to encode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ THe encoded character data.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ THe encoded character data.
+ The character data to encode.
+
+ is null.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The to output the result.
+ The character data to decode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The to output the result.
+ The character data to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The decoded character data.
+ The character data to decode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The decoded character data.
+ The character data to decode.
+
+ is null.
+
+
+
+
+ An HTML writer.
+
+
+ An HTML writer.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The output stream.
+ The encoding to use for the output.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The output text writer.
+
+ is null.
+
+
+
+
+ Releas unmanaged resources and perform other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Get the current state of the writer.
+
+
+ Gets the current state of the writer.
+
+ The state of the writer.
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+ The attribute identifier.
+ A buffer containing the attribute value.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+
+ is not a valid HTML attribute identifier.
+
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+ The attribute name.
+ A buffer containing the attribute value.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ is an invalid attribute name.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+ The attribute identifier.
+ The attribute value.
+
+ is not a valid HTML attribute identifier.
+
+
+ is null.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+
+
+
+ The attribute name.
+ The attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is an invalid attribute name.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+
+
+
+ The attribute.
+
+ is null.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute name to the output stream.
+
+
+ Writes the attribute name to the output stream.
+
+ The attribute identifier.
+
+ is not a valid HTML attribute identifier.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute name to the output stream.
+
+
+ Writes the attribute name to the output stream.
+
+
+
+
+ The attribute name.
+
+ is null.
+
+
+ is an invalid attribute name.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute value to the output stream.
+
+
+ Writes the attribute value to the output stream.
+
+ A buffer containing the attribute value.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The is not in a state that allows writing attribute values.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute value to the output stream.
+
+
+ Writes the attribute value to the output stream.
+
+
+
+
+ The attribute value.
+
+ is null.
+
+
+ The is not in a state that allows writing attribute values.
+
+
+ The has been disposed.
+
+
+
+
+ Write an empty element tag.
+
+
+ Writes an empty element tag.
+
+ The HTML tag identifier.
+
+ is not a valid HTML tag identifier.
+
+
+ The has been disposed.
+
+
+
+
+ Write an empty element tag.
+
+
+ Writes an empty element tag.
+
+ The name of the HTML tag.
+
+ is null.
+
+
+ is not a valid HTML tag.
+
+
+ The has been disposed.
+
+
+
+
+ Write an end tag.
+
+
+ Writes an end tag.
+
+ The HTML tag identifier.
+
+ is not a valid HTML tag identifier.
+
+
+ The has been disposed.
+
+
+
+
+ Write an end tag.
+
+
+ Writes an end tag.
+
+ The name of the HTML tag.
+
+ is null.
+
+
+ is not a valid HTML tag.
+
+
+ The has been disposed.
+
+
+
+
+ Write a buffer containing HTML markup directly to the output, without escaping special characters.
+
+
+ Writes a buffer containing HTML markup directly to the output, without escaping special characters.
+
+ The buffer containing HTML markup.
+ The index of the first character to write.
+ The number of characters to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The has been disposed.
+
+
+
+
+ Write a string containing HTML markup directly to the output, without escaping special characters.
+
+
+ Writes a string containing HTML markup directly to the output, without escaping special characters.
+
+ The string containing HTML markup.
+
+ is null.
+
+
+ The has been disposed.
+
+
+
+
+ Write a start tag.
+
+
+ Writes a start tag.
+
+ The HTML tag identifier.
+
+ is not a valid HTML tag identifier.
+
+
+ The has been disposed.
+
+
+
+
+ Write a start tag.
+
+
+ Writes a start tag.
+
+ The name of the HTML tag.
+
+ is null.
+
+
+ is not a valid HTML tag.
+
+
+ The has been disposed.
+
+
+
+
+ Write text to the output stream, escaping special characters.
+
+
+ Writes text to the output stream, escaping special characters.
+
+ The text buffer.
+ The index of the first character to write.
+ The number of characters to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The has been disposed.
+
+
+
+
+ Write text to the output stream, escaping special characters.
+
+
+ Writes text to the output stream, escaping special characters.
+
+ The text.
+
+ is null.
+
+
+ The has been disposed.
+
+
+
+
+ Write a token to the output stream.
+
+
+ Writes a token that was emitted by the
+ to the output stream.
+
+ The HTML token.
+
+ is null.
+
+
+ The has been disposed.
+
+
+
+
+ Flush any remaining state to the output stream.
+
+
+ Flushes any remaining state to the output stream.
+
+
+ The has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases any unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resource used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After calling
+ , you must release all references to the so the garbage
+ collector can reclaim the memory that the was occupying.
+
+
+
+ An enumeration of possible states of a .
+
+
+ An enumeration of possible states of a .
+
+
+
+
+ The is not within a tag. In this state, the
+ can only write a tag or text.
+
+
+
+
+ The is inside a tag but has not started to write an attribute. In this
+ state, the can write an attribute, another tag, or text.
+
+
+
+
+ The is inside an attribute. In this state, the
+ can append a value to the current attribute, start the next attribute, or write another tag or text.
+
+
+
+
+ An abstract class for converting text from one format to another.
+
+
+ An abstract class for converting text from one format to another.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Get or set whether the encoding of the input is detected from the byte order mark or
+ determined by the property.
+
+
+ Gets or sets whether the encoding of the input is detected from the byte order mark or
+ determined by the property.
+
+ true if detect encoding from byte order mark; otherwise, false.
+
+
+
+ Get or set the input encoding.
+
+
+ Gets or sets the input encoding.
+
+ The input encoding.
+
+ is null.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get or set the output encoding.
+
+
+ Gets or sets the output encoding.
+
+ The output encoding.
+
+ is null.
+
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the size of the input stream buffer.
+
+
+ Gets or sets the size of the input stream buffer.
+
+ The size of the input stream buffer.
+
+ is less than or equal to 0.
+
+
+
+
+ Get or set the size of the output stream buffer.
+
+
+ Gets or sets the size of the output stream buffer.
+
+ The size of the output stream buffer.
+
+ is less than or equal to 0.
+
+
+
+
+ Convert the contents of from the to the
+ and writes the resulting text to .
+
+
+ Converts the contents of from the to the
+ and writes the resulting text to .
+
+ The source stream.
+ The destination stream.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The source stream.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert the contents of from the to the
+ and writes the resulting text to .
+
+
+ Converts the contents of from the to the
+ and writes the resulting text to .
+
+ The text reader.
+ The destination stream.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert text from the to the .
+
+
+ Converts text from the to the .
+
+
+
+
+ The converted text.
+ The text to convert.
+
+ is null.
+
+
+
+
+ An enumeration of text formats.
+
+
+ An enumeration of text formats.
+
+
+
+
+ The plain text format.
+
+
+
+
+ The flowed text format (as described in rfc3676).
+
+
+
+
+ The HTML text format.
+
+
+
+
+ The enriched text format.
+
+
+
+
+ The compressed rich text format.
+
+
+
+
+ The rich text format.
+
+
+
+
+ A text to flowed text converter.
+
+
+ Wraps text to conform with the flowed text format described in rfc3676.
+ The Content-Type header for the wrapped output text should be set to
+ text/plain; format=flowed; delsp=yes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new text to flowed text converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A text to HTML converter.
+
+
+ Used to convert plain text into HTML.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new text to HTML converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Get or set the header format.
+
+
+ Gets or sets the header format.
+
+ The header format.
+
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+ The html tag callback.
+
+
+
+ Get or set whether or not the converter should only output an HTML fragment.
+
+
+ Gets or sets whether or not the converter should only output an HTML fragment.
+
+ true if the converter should only output an HTML fragment; otherwise, false.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A text to text converter.
+
+
+ A text to text converter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new text to text converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ An Aho-Corasick Trie graph.
+
+
+ An Aho-Corasick Trie graph.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ true if searching should ignore case; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Add the specified search pattern.
+
+
+ Adds the specified search pattern.
+
+ The search pattern.
+
+ is null.
+
+
+ cannot be an empty string.
+
+
+
+
+ Search the text for any of the patterns added to the trie.
+
+
+ Searches the text for any of the patterns added to the trie.
+
+ The first index of a matched pattern if successful; otherwise, -1.
+ The text to search.
+ The starting index of the text.
+ The number of characters to search, starting at .
+ The pattern that was matched.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the string.
+
+
+
+
+ Search the text for any of the patterns added to the trie.
+
+
+ Searches the text for any of the patterns added to the trie.
+
+ The first index of a matched pattern if successful; otherwise, -1.
+ The text to search.
+ The starting index of the text.
+ The pattern that was matched.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Search the text for any of the patterns added to the trie.
+
+
+ Searches the text for any of the patterns added to the trie.
+
+ The first index of a matched pattern if successful; otherwise, -1.
+ The text to search.
+ The pattern that was matched.
+
+ is null.
+
+
+
+
+ A filter to decompress a compressed RTF stream.
+
+
+ Used to decompress a compressed RTF stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new converter filter.
+
+
+
+
+ Gets the compression mode.
+
+
+ At least 12 bytes from the stream must be processed before this property value will
+ be accurate.
+
+ The compression mode.
+
+
+
+ Gets a value indicating whether the crc32 is valid.
+
+
+ Until all data has been processed, this property will always return false.
+
+ true if the crc32 is valid; otherwise, false.
+
+
+
+ Filter the specified input.
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ Length.
+ Output index.
+ Output length.
+ If set to true flush.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A RTF compression mode.
+
+
+ A RTF compression mode.
+
+
+
+
+ The compression mode is not known.
+
+
+
+
+ The RTF stream is not compressed.
+
+
+
+
+ The RTF stream is compressed.
+
+
+
+
+ The TNEF attach flags.
+
+
+ The enum contains a list of possible values for
+ the property.
+
+
+
+
+ No AttachFlags set.
+
+
+
+
+ The attachment is invisible in HTML bodies.
+
+
+
+
+ The attachment is invisible in RTF bodies.
+
+
+
+
+ The attachment is referenced (and rendered) by the HTML body.
+
+
+
+
+ The TNEF attach method.
+
+
+ The enum contains a list of possible values for
+ the property.
+
+
+
+
+ No AttachMethod specified.
+
+
+
+
+ The attachment is a binary blob and SHOULD appear in the
+ attribute.
+
+
+
+
+ The attachment is an embedded TNEF message stream and MUST appear
+ in the property of the
+ attribute.
+
+
+
+
+ The attachment is an OLE stream and MUST appear
+ in the property of the
+ attribute.
+
+
+
+
+ A TNEF attribute level.
+
+
+ A TNEF attribute level.
+
+
+
+
+ The attribute is a message-level attribute.
+
+
+
+
+ The attribute is an attachment-level attribute.
+
+
+
+
+ A TNEF attribute tag.
+
+
+ A TNEF attribute tag.
+
+
+
+
+ A Null TNEF attribute.
+
+
+
+
+ The Owner TNEF attribute.
+
+
+
+
+ The SentFor TNEF attribute.
+
+
+
+
+ The Delegate TNEF attribute.
+
+
+
+
+ The OriginalMessageClass TNEF attribute.
+
+
+
+
+ The DateStart TNEF attribute.
+
+
+
+
+ The DateEnd TNEF attribute.
+
+
+
+
+ The AidOwner TNEF attribute.
+
+
+
+
+ The RequestResponse TNEF attribute.
+
+
+
+
+ The From TNEF attribute.
+
+
+
+
+ The Subject TNEF attribute.
+
+
+
+
+ The DateSent TNEF attribute.
+
+
+
+
+ The DateReceived TNEF attribute.
+
+
+
+
+ The MessageStatus TNEF attribute.
+
+
+
+
+ The MessageClass TNEF attribute.
+
+
+
+
+ The MessageId TNEF attribute.
+
+
+
+
+ The ParentId TNEF attribute.
+
+
+
+
+ The ConversationId TNEF attribute.
+
+
+
+
+ The Body TNEF attribute.
+
+
+
+
+ The Priority TNEF attribute.
+
+
+
+
+ The AttachData TNEF attribute.
+
+
+
+
+ The AttachTitle TNEF attribute.
+
+
+
+
+ The AttachMetaFile TNEF attribute.
+
+
+
+
+ The AttachCreateDate TNEF attribute.
+
+
+
+
+ The AttachModifyDate TNEF attribute.
+
+
+
+
+ The DateModified TNEF attribute.
+
+
+
+
+ The AttachTransportFilename TNEF attribute.
+
+
+
+
+ The AttachRenderData TNEF attribute.
+
+
+
+
+ The MapiProperties TNEF attribute.
+
+
+
+
+ The RecipientTable TNEF attribute.
+
+
+
+
+ The Attachment TNEF attribute.
+
+
+
+
+ The TnefVersion TNEF attribute.
+
+
+
+
+ The OemCodepage TNEF attribute.
+
+
+
+
+ A TNEF compliance mode.
+
+
+ A TNEF compliance mode.
+
+
+
+
+ Use a loose compliance mode, attempting to ignore invalid or corrupt data.
+
+
+
+
+ Use a very strict compliance mode, aborting the parser at the first sign of
+ invalid or corrupted data.
+
+
+
+
+ A bitfield of potential TNEF compliance issues.
+
+
+ A bitfield of potential TNEF compliance issues.
+
+
+
+
+ The TNEF stream has no errors.
+
+
+
+
+ The TNEF stream has too many attributes.
+
+
+
+
+ The TNEF stream has one or more invalid attributes.
+
+
+
+
+ The TNEF stream has one or more attributes with invalid checksums.
+
+
+
+
+ The TNEF stream has one more more attributes with an invalid length.
+
+
+
+
+ The TNEF stream has one or more attributes with an invalid level.
+
+
+
+
+ The TNEF stream has one or more attributes with an invalid value.
+
+
+
+
+ The TNEF stream has one or more attributes with an invalid date value.
+
+
+
+
+ The TNEF stream has one or more invalid MessageClass attributes.
+
+
+
+
+ The TNEF stream has one or more invalid MessageCodepage attributes.
+
+
+
+
+ The TNEF stream has one or more invalid property lengths.
+
+
+
+
+ The TNEF stream has one or more invalid row counts.
+
+
+
+
+ The TNEF stream has an invalid signature value.
+
+
+
+
+ The TNEF stream has an invalid version value.
+
+
+
+
+ The TNEF stream is nested too deeply.
+
+
+
+
+ The TNEF stream is truncated.
+
+
+
+
+ The TNEF stream has one or more unsupported property types.
+
+
+
+
+ A TNEF exception.
+
+
+ A occurs when when a TNEF stream is found to be
+ corrupted and cannot be read any futher.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+
+
+
+ A TNEF name identifier.
+
+
+ A TNEF name identifier.
+
+
+
+
+ Gets the property set GUID.
+
+
+ Gets the property set GUID.
+
+ The property set GUID.
+
+
+
+ Gets the kind of TNEF name identifier.
+
+
+ Gets the kind of TNEF name identifier.
+
+ The kind of identifier.
+
+
+
+ Gets the name, if available.
+
+
+ If the is , then this property will be available.
+
+ The name.
+
+
+
+ Gets the identifier, if available.
+
+
+ If the is , then this property will be available.
+
+ The identifier.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new with the specified integer identifier.
+
+ The property set GUID.
+ The identifier.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new with the specified string identifier.
+
+ The property set GUID.
+ The name.
+
+
+
+ Serves as a hash function for a object.
+
+
+ Serves as a hash function for a object.
+
+ A hash code for this instance that is suitable for use in hashing algorithms
+ and data structures such as a hash table.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ The kind of TNEF name identifier.
+
+
+ The kind of TNEF name identifier.
+
+
+
+
+ The property name is an integer.
+
+
+
+
+ The property name is a string.
+
+
+
+
+ A MIME part containing Microsoft TNEF data.
+
+
+ Represents an application/ms-tnef or application/vnd.ms-tnef part.
+ TNEF (Transport Neutral Encapsulation Format) attachments are most often
+ sent by Microsoft Outlook clients.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with a Content-Type of application/vnd.ms-tnef
+ and a Content-Disposition value of "attachment" and a filename paremeter with a
+ value of "winmail.dat".
+
+
+
+
+ Converts the TNEF content into a .
+
+
+ TNEF data often contains properties that map to
+ headers. TNEF data also often contains file attachments which will be
+ mapped to MIME parts.
+
+ A message representing the TNEF data in MIME format.
+
+ The property is null.
+
+
+
+
+ Extracts the embedded attachments from the TNEF data.
+
+
+ Parses the TNEF data and extracts all of the embedded file attachments.
+
+ The attachments.
+
+ The property is null.
+
+
+
+
+ A TNEF property identifier.
+
+
+ A TNEF property identifier.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_DIR.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_PAB.
+
+
+
+
+ The MAPI property PR_AB_PROVIDER_ID.
+
+
+
+
+ The MAPI property PR_AB_PROVIDERS.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH_UPDATE.
+
+
+
+
+ The MAPI property PR_ACCESS.
+
+
+
+
+ The MAPI property PR_ACCESS_LEVEL.
+
+
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+
+
+ The MAPI property PR_ACKNOWLEDGEMENT_MODE.
+
+
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT_ALLOWED.
+
+
+
+
+ The MAPI property PR_ANR.
+
+
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ASSOC_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_ATTACH_ADDITIONAL_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_ATTACH_DATA_BIN or PR_ATTACH_DATA_OBJ.
+
+
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+
+
+ The MAPI property PR_ATTACH_ENCODING.
+
+
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_FLAGS.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACHMENT_X400_PARAMETERS.
+
+
+
+
+ The MAPI property PR_ATTACH_METHOD.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_SEQUENCE.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_NETSCAPE_MAC_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_NUM.
+
+
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_RENDERING.
+
+
+
+
+ The MAPI property PR_ATTACH_SIZE.
+
+
+
+
+ The MAPI property PR_ATTACH_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+
+
+ The MAPI property PR_AUTHORIZING_USERS.
+
+
+
+
+ The MAPI property PR_AUTO_FORWARDED.
+
+
+
+
+ The MAPI property PR_AUTO_FORWARDING_COMMENT.
+
+
+
+
+ The MAPI property PR_AUTO_RESPONSE_SUPPRESS.
+
+
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BIRTHDAY.
+
+
+
+
+ The MAPI property PR_BODY.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_BODY_CRC.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CELLULAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+
+
+ The MAPI property PR_CLIENT_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_COMMENT.
+
+
+
+
+ The MAPI property PR_COMMON_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+
+
+ The MAPI property PR_CONTACT_DEFAULT_ADDRESS_INDEX.
+
+
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+
+
+ The MAPI property PR_CONTACT_ENTRYIDS.
+
+
+
+
+ The MAPI property PR_CONTACT_VERSION.
+
+
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+
+
+ The MAPI property PR_CONTAINER_CONTENTS.
+
+
+
+
+ The MAPI property PR_CONTAINER_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTAINER_HIERARCHY.
+
+
+
+
+ The MAPI property PR_CONTAINER_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID.
+
+
+
+
+ The MAPI property PR_CONTENT_CORRELATOR.
+
+
+
+
+ The MAPI property PR_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+
+
+ The MAPI property PR_CONTENT_INTEGRITY_CHECK.
+
+
+
+
+ The MAPI property PR_CONTENT_LENGTH.
+
+
+
+
+ The MAPI property PR_CONTENT_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_CONTENTS_SORT_ORDER.
+
+
+
+
+ The MAPI property PR_CONTENT_UNREAD.
+
+
+
+
+ The MAPI property PR_CONTROL_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTROL_ID.
+
+
+
+
+ The MAPI property PR_CONTROL_STRUCTURE.
+
+
+
+
+ The MAPI property PR_CONTROL_TYPE.
+
+
+
+
+ The MAPI property PR_CONVERSATION_INDEX.
+
+
+
+
+ The MAPI property PR_CONVERSATION_KEY.
+
+
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+
+
+ The MAPI property PR_CONVERSATION_EITS.
+
+
+
+
+ The MAPI property PR_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERSION_WITH_LOSS_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERTED_EITS.
+
+
+
+
+ The MAPI property PR_CORRELATE.
+
+
+
+
+ The MAPI property PR_CORRELATE_MTSID.
+
+
+
+
+ The MAPI property PR_COUNTRY.
+
+
+
+
+ The MAPI property PR_CREATE_TEMPLATES.
+
+
+
+
+ The MAPI property PR_CREATION_TIME.
+
+
+
+
+ The MAPI property PR_CREATION_VERSION.
+
+
+
+
+ The MAPI property PR_CURRENT_VERSION.
+
+
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+
+
+ The MAPI property PR_DEFAULT_PROFILE.
+
+
+
+
+ The MAPI property PR_DEFAULT_STORE.
+
+
+
+
+ The MAPI property PR_DEFAULT_VIEW_ENTRYID.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_DL.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_MAILUSER.
+
+
+
+
+ The MAPI property PR_DEFERRED_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_DELEGATION.
+
+
+
+
+ The MAPI property PR_DELETE_AFTER_SUBMIT.
+
+
+
+
+ The MAPI property PR_DELIVER_TIME.
+
+
+
+
+ The MAPI property PR_DELIVERY_POINT.
+
+
+
+
+ The MAPI property PR_DELTAX.
+
+
+
+
+ The MAPI property PR_DELTAY.
+
+
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+
+
+ The MAPI property PR_DEPTH.
+
+
+
+
+ The MAPI property PR_DETAILS_TABLE.
+
+
+
+
+ The MAPI property PR_DISCARD_REASON.
+
+
+
+
+ The MAPI property PR_DISCLOSE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCLOSURE_OF_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCRETE_VALUES.
+
+
+
+
+ The MAPI property PR_DISC_VAL.
+
+
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_DISPLAY_TYPE.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_END_DATE.
+
+
+
+
+ The MAPI property PR_ENTRYID.
+
+
+
+
+ The MAPI property PR_EXPAND_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPAND_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_EXPLICIT_CONVERSION.
+
+
+
+
+ The MAPI property PR_FILTERING_HOOKS.
+
+
+
+
+ The MAPI property PR_FINDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_FOLDER_ASSOCIATED_CONTENTS.
+
+
+
+
+ The MAPI property PR_FOLDER_TYPE.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+
+
+ The MAPI property PR_FORM_CLSID.
+
+
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_GUID.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+
+
+ The MAPI property PR_FORM_HIDDEN.
+
+
+
+
+ The MAPI property PR_FORM_HOST_MAP.
+
+
+
+
+ The MAPI property PR_FORM_MESSAGE_BEHAVIOR.
+
+
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+
+
+ The MAPI property PR_GENDER.
+
+
+
+
+ The MAPI property PR_GENERATION.
+
+
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_HASTTACH.
+
+
+
+
+ The MAPI property PR_HEADER_FOLDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_HOBBIES.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ICON.
+
+
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+
+
+ The MAPI property PR_IDENTITY_ENTRYID.
+
+
+
+
+ The MAPI property PR_IDENTITY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IMPLICIT_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_IMPORTANCE.
+
+
+
+
+ The MAPI property PR_INCOMPLETE_COPY.
+
+
+
+
+ The Internet mail override charset.
+
+
+
+
+ The Internet mail override format.
+
+
+
+
+ The MAPI property PR_INITIAL_DETAILS_PANE.
+
+
+
+
+ The MAPI property PR_INITIALS.
+
+
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+
+
+ The MAPI property PR_INSTANCE_KEY.
+
+
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+
+
+ The MAPI property PR_INTERNET_ARTICLE_NUMBER.
+
+
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+
+
+ The MAPI property PR_INTERNET_CPID.
+
+
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+
+
+ The MAPI property PR_INTERNET_LINES.
+
+
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+
+
+ The MAPI property PR_IPM_ID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+
+
+ The MAPI property PR_KEYWORD.
+
+
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+
+
+ The MAPI property PR_LAST_MODIFICATION_TIME.
+
+
+
+
+ The MAPI property PR_LATEST_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LOCALITY.
+
+
+
+
+ The MAPI property PR_LOCALLY_DELIVERED.
+
+
+
+
+ The MAPI property PR_LOCATION.
+
+
+
+
+ The MAPI property PR_LOCK_BRANCH_ID.
+
+
+
+
+ The MAPI property PR_LOCK_DEPTH.
+
+
+
+
+ The MAPI property PR_LOCK_ENLISTMENT_CONTEXT.
+
+
+
+
+ The MAPI property PR_LOCK_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_LOCK_PERSISTENT.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_DID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_FID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_MID.
+
+
+
+
+ The MAPI property PR_LOCK_SCOPE.
+
+
+
+
+ The MAPI property PR_LOCK_TIMEOUT.
+
+
+
+
+ The MAPI property PR_LOCK_TYPE.
+
+
+
+
+ The MAPI property PR_MAIL_PERMISSION.
+
+
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+
+
+ The MAPI property PR_MAPPING_SIGNATURE.
+
+
+
+
+ The MAPI property PR_MDB_PROVIDER.
+
+
+
+
+ The MAPI property PR_MESSAGE_ATTACHMENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CC_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CODEPAGE.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_DOWNLOAD_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_FLAGS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIP_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_SECURITY_LABEL.
+
+
+
+
+ The MAPI property PR_MESSAGE_SIZE.
+
+
+
+
+ The MAPI property PR_MESSAGE_SUBMISSION_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_TOKEN.
+
+
+
+
+ The MAPI property PR_MESSAGE_TO_ME.
+
+
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+
+
+ The MAPI property PR_MINI_ICON.
+
+
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_MSG_STATUS.
+
+
+
+
+ The MAPI property PR_NDR_DIAG_CODE.
+
+
+
+
+ The MAPI property PR_NDR_REASON_CODE.
+
+
+
+
+ The MAPI property PR_NDR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+
+
+ The MAPI property PR_NICKNAME.
+
+
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_NOTIFICATION_REQUESTED.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_REASON.
+
+
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+
+
+ The MAPI property PR_NT_SECURITY_DESCRIPTOR.
+
+
+
+
+ The MAPI property PR_NULL.
+
+
+
+
+ The MAPI property PR_OBJECT_TYPE.
+
+
+
+
+ The MAPI property PR_OBSOLETE_IPMS.
+
+
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OOF_REPLY_TIME.
+
+
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_ORIG_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_ORIGINAL_EITS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIPIENT_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINATING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_RETURN_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGIN_CHECK.
+
+
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OWNER_APPT_ID.
+
+
+
+
+ The MAPI property PR_OWN_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+
+
+ The MAPI property PR_PARENT_ENTRYID.
+
+
+
+
+ The MAPI property PR_PARENT_KEY.
+
+
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_MODE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_REPORT_REQUEST.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_PROHIBITED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_RENDITION_ATTRIBUTES.
+
+
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_POST_REPLY_DENIED.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_PREPROCESS.
+
+
+
+
+ The MAPI property PR_PRIMARY_CAPABILITY.
+
+
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIORITY.
+
+
+
+
+ The MAPI property PR_PROFESSION.
+
+
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROP_ID_SECURE_MAX.
+
+
+
+
+ The MAPI property PR_PROP_ID_SECURE_MIN.
+
+
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+
+
+ The MAPI property PR_PROVIDER_ORDINAL.
+
+
+
+
+ The MAPI property PR_PROVIDER_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_PROVIDER_UID.
+
+
+
+
+ The MAPI property PR_PUID.
+
+
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_ENTRYID.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_REQUESTED.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIPT_TIME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ENTRYID.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIVE_FOLDER_SETTINGS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_REASSIGNMENT_PROHIBITED.
+
+
+
+
+ The MAPI property PR_RECIPIENT_STATUS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_TYPE.
+
+
+
+
+ The MAPI property PR_RECORD_KEY.
+
+
+
+
+ The MAPI property PR_REDIRECTION_HISTORY.
+
+
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_REGISTERED_MAIL_TYPE.
+
+
+
+
+ The MAPI property PR_RELATED_IPMS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+
+
+ The MAPI property PR_REMOTE_VALIDATE_OK.
+
+
+
+
+ The MAPI property PR_RENDERING_POSITION.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_ENTRIES.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+
+
+ The MAPI property PR_REPLY_REQUESTED.
+
+
+
+
+ The MAPI property PR_REPLY_TIME.
+
+
+
+
+ The MAPI property PR_REPORT_ENTRYID.
+
+
+
+
+ The MAPI property PR_REPORTING_DLL_NAME.
+
+
+
+
+ The MAPI property PR_REPORTING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+
+
+ The MAPI property PR_REPORT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_REPORT_TAG.
+
+
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+
+
+ The MAPI property PR_REPORT_TIME.
+
+
+
+
+ The MAPI property PR_REQUESTED_DELIVERY_METHOD.
+
+
+
+
+ The MAPI property PR_RESOURCE_FLAGS.
+
+
+
+
+ The MAPI property PR_RESOURCE_METHODS.
+
+
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+
+
+ The MAPI property PR_RESOURCE_TYPE.
+
+
+
+
+ The MAPI property PR_RESPONSE_REQUESTED.
+
+
+
+
+ The MAPI property PR_RESPONSIBILITY.
+
+
+
+
+ The MAPI property PR_RETURNED_IPM.
+
+
+
+
+ The MAPI property PR_ROWID.
+
+
+
+
+ The MAPI property PR_ROW_TYPE.
+
+
+
+
+ The MAPI property PR_RTF_COMPRESSED.
+
+
+
+
+ The MAPI property PR_RTF_IN_SYNC.
+
+
+
+
+ The MAPI property PR_SYNC_BODY_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_CRC.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_PREFIX_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_TRAILING_COUNT.
+
+
+
+
+ The MAPI property PR_SEARCH.
+
+
+
+
+ The MAPI property PR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SECURITY.
+
+
+
+
+ The MAPI property PR_SELECTABLE.
+
+
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SEND_INTERNET_ENCODING.
+
+
+
+
+ The MAPI property PR_SEND_RECALL_REPORT.
+
+
+
+
+ The MAPI property PR_SEND_RICH_INFO.
+
+
+
+
+ The MAPI property PR_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_ENTRY_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_EXTRA_UIDS.
+
+
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+
+
+ The MAPI property PR_SERVICES.
+
+
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_UID.
+
+
+
+
+ The MAPI property PR_SEVEN_BIT_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+
+
+ The MAPI property PR_SPOOLER_STATUS.
+
+
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+
+
+ The MAPI property PR_START_DATE.
+
+
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_STATUS.
+
+
+
+
+ The MAPI property PR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+
+
+ The MAPI property PR_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_STORE_PROVIDERS.
+
+
+
+
+ The MAPI property PR_STORE_RECORD_KEY.
+
+
+
+
+ The MAPI property PR_STORE_STATE.
+
+
+
+
+ The MAPI property PR_STORE_SUPPORT_MASK.
+
+
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+
+
+ The MAPI property PR_SUBFOLDERS.
+
+
+
+
+ The MAPI property PR_SUBJECT.
+
+
+
+
+ The MAPI property PR_SUBJECT_IPM.
+
+
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+
+
+ The MAPI property PR_SUBMIT_FLAGS.
+
+
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+
+
+ The MAPI property PR_SURNAME.
+
+
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+
+
+ The MAPI property PR_TEMPLATEID.
+
+
+
+
+ The MAPI property PR_TITLE.
+
+
+
+
+ The MAPI property PR_TNEF_CORRELATION_KEY.
+
+
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_TRANSPORT_KEY.
+
+
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_PROVIDERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_STATUS.
+
+
+
+
+ The MAPI property PR_TTYTDD_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_TYPE_OF_MTS_USER.
+
+
+
+
+ The MAPI property PR_USER_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_USER_X509_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_VALID_FOLDER_MASK.
+
+
+
+
+ The MAPI property PR_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_WEDDING_ANNIVERSARY.
+
+
+
+
+ The MAPI property PR_X400_CONTENT_TYPE.
+
+
+
+
+ The MAPI property PR_X400_DEFERRED_DELIVERY_CANCEL.
+
+
+
+
+ The MAPI property PR_XPOS.
+
+
+
+
+ The MAPI property PR_YPOS.
+
+
+
+
+ A TNEF property reader.
+
+
+ A TNEF property reader.
+
+
+
+
+ Gets a value indicating whether the current property is an embedded TNEF message.
+
+
+ Gets a value indicating whether the current property is an embedded TNEF message.
+
+ true if the current property is an embedded TNEF message; otherwise, false.
+
+
+
+ Gets a value indicating whether or not the current property has multiple values.
+
+
+ Gets a value indicating whether or not the current property has multiple values.
+
+ true if the current property has multiple values; otherwise, false.
+
+
+
+ Gets a value indicating whether or not the current property is a named property.
+
+
+ Gets a value indicating whether or not the current property is a named property.
+
+ true if the current property is a named property; otherwise, false.
+
+
+
+ Gets a value indicating whether the current property contains object values.
+
+
+ Gets a value indicating whether the current property contains object values.
+
+ true if the current property contains object values; otherwise, false.
+
+
+
+ Gets the number of properties available.
+
+
+ Gets the number of properties available.
+
+ The property count.
+
+
+
+ Gets the property name identifier.
+
+
+ Gets the property name identifier.
+
+ The property name identifier.
+
+
+
+ Gets the property tag.
+
+
+ Gets the property tag.
+
+ The property tag.
+
+
+
+ Gets the length of the raw value.
+
+
+ Gets the length of the raw value.
+
+ The length of the raw value.
+
+
+
+ Gets the raw value stream offset.
+
+
+ Gets the raw value stream offset.
+
+ The raw value stream offset.
+
+
+
+ Gets the number of table rows available.
+
+
+ Gets the number of table rows available.
+
+ The row count.
+
+
+
+ Gets the number of values available.
+
+
+ Gets the number of values available.
+
+ The value count.
+
+
+
+ Gets the type of the value.
+
+
+ Gets the type of the value.
+
+ The type of the value.
+
+
+
+ Gets the embedded TNEF message reader.
+
+
+ Gets the embedded TNEF message reader.
+
+ The embedded TNEF message reader.
+
+ The property does not contain any more values.
+ -or-
+ The property value is not an embedded message.
+
+
+
+
+ Gets the raw value of the attribute or property as a stream.
+
+
+ Gets the raw value of the attribute or property as a stream.
+
+ The raw value stream.
+
+ The property does not contain any more values.
+
+
+
+
+ Advances to the next MAPI property.
+
+
+ Advances to the next MAPI property.
+
+ true if there is another property available to be read; otherwise false.
+
+ The TNEF data is corrupt or invalid.
+
+
+
+
+ Advances to the next table row of properties.
+
+
+ Advances to the next table row of properties.
+
+ true if there is another row available to be read; otherwise false.
+
+ The TNEF data is corrupt or invalid.
+
+
+
+
+ Advances to the next value in the TNEF stream.
+
+
+ Advances to the next value in the TNEF stream.
+
+ true if there is another value available to be read; otherwise false.
+
+ The TNEF data is corrupt or invalid.
+
+
+
+
+ Reads the raw attribute or property value as a sequence of bytes.
+
+
+ Reads the raw attribute or property value as a sequence of bytes.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ An I/O error occurred.
+
+
+
+
+ Reads the raw attribute or property value as a sequence of unicode characters.
+
+
+ Reads the raw attribute or property value as a sequence of unicode characters.
+
+ The total number of characters read into the buffer. This can be less than the number of characters
+ requested if that many bytes are not currently available, or zero (0) if the end of the stream has been
+ reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of characters to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain characters starting
+ at the specified .
+
+
+ An I/O error occurred.
+
+
+
+
+ Reads the value.
+
+
+ Reads an attribute or property value as its native type.
+
+ The value.
+
+ There are no more values to read or the value could not be read.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a boolean.
+
+
+ Reads any integer-based attribute or property value as a boolean.
+
+ The value as a boolean.
+
+ There are no more values to read or the value could not be read as a boolean.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a byte array.
+
+
+ Reads any string, binary blob, Class ID, or Object attribute or property value as a byte array.
+
+ The value as a byte array.
+
+ There are no more values to read or the value could not be read as a byte array.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a date and time.
+
+
+ Reads any date and time attribute or property value as a .
+
+ The value as a date and time.
+
+ There are no more values to read or the value could not be read as a date and time.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a double.
+
+
+ Reads any numeric attribute or property value as a double.
+
+ The value as a double.
+
+ There are no more values to read or the value could not be read as a double.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a float.
+
+
+ Reads any numeric attribute or property value as a float.
+
+ The value as a float.
+
+ There are no more values to read or the value could not be read as a float.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a GUID.
+
+
+ Reads any Class ID value as a GUID.
+
+ The value as a GUID.
+
+ There are no more values to read or the value could not be read as a GUID.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a 16-bit integer.
+
+
+ Reads any integer-based attribute or property value as a 16-bit integer.
+
+ The value as a 16-bit integer.
+
+ There are no more values to read or the value could not be read as a 16-bit integer.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a 32-bit integer.
+
+
+ Reads any integer-based attribute or property value as a 32-bit integer.
+
+ The value as a 32-bit integer.
+
+ There are no more values to read or the value could not be read as a 32-bit integer.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a 64-bit integer.
+
+
+ Reads any integer-based attribute or property value as a 64-bit integer.
+
+ The value as a 64-bit integer.
+
+ There are no more values to read or the value could not be read as a 64-bit integer.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a string.
+
+
+ Reads any string or binary blob values as a string.
+
+ The value as a string.
+
+ There are no more values to read or the value could not be read as a string.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Serves as a hash function for a object.
+
+
+ Serves as a hash function for a object.
+
+ A hash code for this instance that is suitable for use in hashing algorithms
+ and data structures such as a hash table.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ A TNEF property tag.
+
+
+ A TNEF property tag.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_DIR.
+
+
+ The MAPI property PR_AB_DEFAULT_DIR.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_PAB.
+
+
+ The MAPI property PR_AB_DEFAULT_PAD.
+
+
+
+
+ The MAPI property PR_AB_PROVIDER_ID.
+
+
+ The MAPI property PR_AB_PROVIDER_ID.
+
+
+
+
+ The MAPI property PR_AB_PROVIDERS.
+
+
+ The MAPI property PR_AB_PROVIDERS.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH.
+
+
+ The MAPI property PR_AB_SEARCH_PATH.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH_UPDATE.
+
+
+ The MAPI property PR_AB_SEARCH_PATH_UPDATE.
+
+
+
+
+ The MAPI property PR_ACCESS.
+
+
+ The MAPI property PR_ACCESS.
+
+
+
+
+ The MAPI property PR_ACCESS_LEVEL.
+
+
+ The MAPI property PR_ACCESS_LEVEL.
+
+
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+
+
+ The MAPI property PR_ACKNOWLEDGEMENT_MODE.
+
+
+ The MAPI property PR_ACKNOWLEDGEMENT_MODE.
+
+
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT.
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT_ALLOWED.
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT_ALLOWED.
+
+
+
+
+ The MAPI property PR_ANR.
+
+
+ The MAPI property PR_ANR.
+
+
+
+
+ The MAPI property PR_ANR.
+
+
+ The MAPI property PR_ANR.
+
+
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ASSOC_CONTENT_COUNT.
+
+
+ The MAPI property PR_ASSOC_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_ATTACH_ADDITIONAL_INFO.
+
+
+ The MAPI property PR_ATTACH_ADDITIONAL_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+
+
+ The MAPI property PR_ATTACH_ENCODING.
+
+
+ The MAPI property PR_ATTACH_ENCODING.
+
+
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_FLAGS.
+
+
+ The MAPI property PR_ATTACH_FLAGS.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACHMENT_X400_PARAMETERS.
+
+
+ The MAPI property PR_ATTACHMENT_X400_PARAMETERS.
+
+
+
+
+ The MAPI property PR_ATTACH_METHOD.
+
+
+ The MAPI property PR_ATTACH_METHOD.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_SEQUENCE.
+
+
+ The MAPI property PR_ATTACH_MIME_SEQUENCE.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_NETSCAPE_MAC_INFO.
+
+
+ The MAPI property PR_ATTACH_NETSCAPE_MAC_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_NUM.
+
+
+ The MAPI property PR_ATTACH_NUM.
+
+
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_RENDERING.
+
+
+ The MAPI property PR_ATTACH_RENDERING.
+
+
+
+
+ The MAPI property PR_ATTACH_SIZE.
+
+
+ The MAPI property PR_ATTACH_SIZE.
+
+
+
+
+ The MAPI property PR_ATTACH_TAG.
+
+
+ The MAPI property PR_ATTACH_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+
+
+ The MAPI property PR_AUTHORIZING_USERS.
+
+
+ The MAPI property PR_AUTHORIZING_USERS.
+
+
+
+
+ The MAPI property PR_AUTOFORWARDED.
+
+
+ The MAPI property PR_AUTOFORWARDED.
+
+
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+
+
+ The MAPI property PR_AUTORESPONSE_SUPPRESS.
+
+
+ The MAPI property PR_AUTORESPONSE_SUPPRESS.
+
+
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BIRTHDAY.
+
+
+ The MAPI property PR_BIRTHDAY.
+
+
+
+
+ The MAPI property PR_BODY.
+
+
+ The MAPI property PR_BODY.
+
+
+
+
+ The MAPI property PR_BODY.
+
+
+ The MAPI property PR_BODY.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_BODY_CRC.
+
+
+ The MAPI property PR_BODY_CRC.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+
+
+ The MAPI property PR_CLIENT_SUBMIT_TIME.
+
+
+ The MAPI property PR_CLIENT_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_COMMENT.
+
+
+ The MAPI property PR_COMMENT.
+
+
+
+
+ The MAPI property PR_COMMENT.
+
+
+ The MAPI property PR_COMMENT.
+
+
+
+
+ The MAPI property PR_COMMON_VIEWS_ENTRYID.
+
+
+ The MAPI property PR_COMMON_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+
+
+ The MAPI property PR_CONTACT_DEFAULT_ADDRESS_INDEX.
+
+
+ The MAPI property PR_CONTACT_DEFAULT_ADDRESS_INDEX.
+
+
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+
+
+ The MAPI property PR_CONTACT_ENTRYIDS.
+
+
+ The MAPI property PR_CONTACT_ENTRYIDS.
+
+
+
+
+ The MAPI property PR_CONTACT_VERSION.
+
+
+ The MAPI property PR_CONTACT_VERSION.
+
+
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+
+
+ The MAPI property PR_CONTAINER_CONTENTS.
+
+
+ The MAPI property PR_CONTAINER_CONTENTS.
+
+
+
+
+ The MAPI property PR_CONTAINER_FLAGS.
+
+
+ The MAPI property PR_CONTAINER_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTAINER_HIERARCHY.
+
+
+ The MAPI property PR_CONTAINER_HIERARCHY.
+
+
+
+
+ The MAPI property PR_CONTAINER_MODIFY_VERSION.
+
+
+ The MAPI property PR_CONTAINER_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID.
+
+
+ The MAPI property PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID.
+
+
+
+
+ The MAPI property PR_CONTENT_CORRELATOR.
+
+
+ The MAPI property PR_CONTENT_CORRELATOR.
+
+
+
+
+ The MAPI property PR_CONTENT_COUNT.
+
+
+ The MAPI property PR_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+
+
+ The MAPI property PR_CONTENT_INTEGRITY_CHECK.
+
+
+ The MAPI property PR_CONTENT_INTEGRITY_CHECK.
+
+
+
+
+ The MAPI property PR_CONTENT_LENGTH.
+
+
+ The MAPI property PR_CONTENT_LENGTH.
+
+
+
+
+ The MAPI property PR_CONTENT_RETURN_REQUESTED.
+
+
+ The MAPI property PR_CONTENT_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_CONTENTS_SORT_ORDER.
+
+
+ The MAPI property PR_CONTENTS_SORT_ORDER.
+
+
+
+
+ The MAPI property PR_CONTENT_UNREAD.
+
+
+ The MAPI property PR_CONTENT_UNREAD.
+
+
+
+
+ The MAPI property PR_CONTROL_FLAGS.
+
+
+ The MAPI property PR_CONTROL_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTROL_ID.
+
+
+ The MAPI property PR_CONTROL_ID.
+
+
+
+
+ The MAPI property PR_CONTROL_STRUCTURE.
+
+
+ The MAPI property PR_CONTROL_STRUCTURE.
+
+
+
+
+ The MAPI property PR_CONTROL_TYPE.
+
+
+ The MAPI property PR_CONTROL_TYPE.
+
+
+
+
+ The MAPI property PR_CONVERSATION_INDEX.
+
+
+ The MAPI property PR_CONVERSATION_INDEX.
+
+
+
+
+ The MAPI property PR_CONVERSATION_KEY.
+
+
+ The MAPI property PR_CONVERSATION_KEY.
+
+
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+
+
+ The MAPI property PR_CONVERSION_EITS.
+
+
+ The MAPI property PR_CONVERSION_EITS.
+
+
+
+
+ The MAPI property PR_CONVERSION_PROHIBITED.
+
+
+ The MAPI property PR_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERSION_WITH_LOSS_PROHIBITED.
+
+
+ The MAPI property PR_CONVERSION_WITH_LOSS_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERTED_EITS.
+
+
+ The MAPI property PR_CONVERTED_EITS.
+
+
+
+
+ The MAPI property PR_CORRELATE.
+
+
+ The MAPI property PR_CORRELATE.
+
+
+
+
+ The MAPI property PR_CORRELATE_MTSID.
+
+
+ The MAPI property PR_CORRELATE_MTSID.
+
+
+
+
+ The MAPI property PR_COUNTRY.
+
+
+ The MAPI property PR_COUNTRY.
+
+
+
+
+ The MAPI property PR_COUNTRY.
+
+
+ The MAPI property PR_COUNTRY.
+
+
+
+
+ The MAPI property PR_CREATE_TEMPLATES.
+
+
+ The MAPI property PR_CREATE_TEMPLATES.
+
+
+
+
+ The MAPI property PR_CREATION_TIME.
+
+
+ The MAPI property PR_CREATION_TIME.
+
+
+
+
+ The MAPI property PR_CREATION_VERSION.
+
+
+ The MAPI property PR_CREATION_VERSION.
+
+
+
+
+ The MAPI property PR_CURRENT_VERSION.
+
+
+ The MAPI property PR_CURRENT_VERSION.
+
+
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+
+
+ The MAPI property PR_DEFAULT_PROFILE.
+
+
+ The MAPI property PR_DEFAULT_PROFILE.
+
+
+
+
+ The MAPI property PR_DEFAULT_STORE.
+
+
+ The MAPI property PR_DEFAULT_STORE.
+
+
+
+
+ The MAPI property PR_DEFAULT_VIEW_ENTRYID.
+
+
+ The MAPI property PR_DEFAULT_VIEW_ENTRYID.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_DL.
+
+
+ The MAPI property PR_DEF_CREATE_DL.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_MAILUSER.
+
+
+ The MAPI property PR_DEF_CREATE_MAILUSER.
+
+
+
+
+ The MAPI property PR_DEFERRED_DELIVERY_TIME.
+
+
+ The MAPI property PR_DEFERRED_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_DELEGATION.
+
+
+ The MAPI property PR_DELEGATION.
+
+
+
+
+ The MAPI property PR_DELETE_AFTER_SUBMIT.
+
+
+ The MAPI property PR_DELETE_AFTER_SUBMIT.
+
+
+
+
+ The MAPI property PR_DELIVER_TIME.
+
+
+ The MAPI property PR_DELIVER_TIME.
+
+
+
+
+ The MAPI property PR_DELIVERY_POINT.
+
+
+ The MAPI property PR_DELIVERY_POINT.
+
+
+
+
+ The MAPI property PR_DELTAX.
+
+
+ The MAPI property PR_DELTAX.
+
+
+
+
+ The MAPI property PR_DELTAY.
+
+
+ The MAPI property PR_DELTAY.
+
+
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+
+
+ The MAPI property PR_DEPTH.
+
+
+ The MAPI property PR_DEPTH.
+
+
+
+
+ The MAPI property PR_DETAILS_TABLE.
+
+
+ The MAPI property PR_DETAILS_TABLE.
+
+
+
+
+ The MAPI property PR_DISCARD_REASON.
+
+
+ The MAPI property PR_DISCARD_REASON.
+
+
+
+
+ The MAPI property PR_DISCLOSE_RECIPIENTS.
+
+
+ The MAPI property PR_DISCLOSE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCLOSURE_OF_RECIPIENTS.
+
+
+ The MAPI property PR_DISCLOSURE_OF_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCRETE_VALUES.
+
+
+ The MAPI property PR_DISCRETE_VALUES.
+
+
+
+
+ The MAPI property PR_DISC_VAL.
+
+
+ The MAPI property PR_DISC_VAL.
+
+
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_DISPLAY_TYPE.
+
+
+ The MAPI property PR_DISPLAY_TYPE.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_HISTORY.
+
+
+ The MAPI property PR_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_PROHIBITED.
+
+
+ The MAPI property PR_DL_EXPANSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_END_DATE.
+
+
+ The MAPI property PR_END_DATE.
+
+
+
+
+ The MAPI property PR_ENTRYID.
+
+
+ The MAPI property PR_ENTRYID.
+
+
+
+
+ The MAPI property PR_EXPAND_BEGIN_TIME.
+
+
+ The MAPI property PR_EXPAND_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_BEGIN_TIME.
+
+
+ The MAPI property PR_EXPANDED_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_END_TIME.
+
+
+ The MAPI property PR_EXPANDED_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPAND_END_TIME.
+
+
+ The MAPI property PR_EXPAND_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPIRY_TIME.
+
+
+ The MAPI property PR_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_EXPLICIT_CONVERSION.
+
+
+ The MAPI property PR_EXPLICIT_CONVERSION.
+
+
+
+
+ The MAPI property PR_FILTERING_HOOKS.
+
+
+ The MAPI property PR_FILTERING_HOOKS.
+
+
+
+
+ The MAPI property PR_FINDER_ENTRYID.
+
+
+ The MAPI property PR_FINDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_FOLDER_ASSOCIATED_CONTENTS.
+
+
+ The MAPI property PR_FOLDER_ASSOCIATED_CONTENTS.
+
+
+
+
+ The MAPI property PR_FOLDER_TYPE.
+
+
+ The MAPI property PR_FOLDER_TYPE.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+
+
+ The MAPI property PR_FORM_CLSID.
+
+
+ The MAPI property PR_FORM_CLSID.
+
+
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_GUID.
+
+
+ The MAPI property PR_FORM_DESIGNER_GUID.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+
+
+ The MAPI property PR_FORM_HIDDEN.
+
+
+ The MAPI property PR_FORM_HIDDEN.
+
+
+
+
+ The MAPI property PR_FORM_HOST_MAP.
+
+
+ The MAPI property PR_FORM_HOST_MAP.
+
+
+
+
+ The MAPI property PR_FORM_MESSAGE_BEHAVIOR.
+
+
+ The MAPI property PR_FORM_MESSAGE_BEHAVIOR.
+
+
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+
+
+ The MAPI property PR_GENDER.
+
+
+ The MAPI property PR_GENDER.
+
+
+
+
+ The MAPI property PR_GENERATION.
+
+
+ The MAPI property PR_GENERATION.
+
+
+
+
+ The MAPI property PR_GENERATION.
+
+
+ The MAPI property PR_GENERATION.
+
+
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_HASATTACH.
+
+
+ The MAPI property PR_HASATTACH.
+
+
+
+
+ The MAPI property PR_HEADER_FOLDER_ENTRYID.
+
+
+ The MAPI property PR_HEADER_FOLDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_HOBBIES.
+
+
+ The MAPI property PR_HOBBIES.
+
+
+
+
+ The MAPI property PR_HOBBIES.
+
+
+ The MAPI property PR_HOBBIES.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ICON.
+
+
+ The MAPI property PR_ICON.
+
+
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+
+
+ The MAPI property PR_IDENTITY_ENTRYID.
+
+
+ The MAPI property PR_IDENTITY_ENTRYID.
+
+
+
+
+ The MAPI property PR_IDENTITY_SEARCH_KEY.
+
+
+ The MAPI property PR_IDENTITY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IMPLICIT_CONVERSION_PROHIBITED.
+
+
+ The MAPI property PR_IMPLICIT_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_IMPORTANCE.
+
+
+ The MAPI property PR_IMPORTANCE.
+
+
+
+
+ The MAPI property PR_INCOMPLETE_COPY.
+
+
+ The MAPI property PR_INCOMPLETE_COPY.
+
+
+
+
+ The Internet mail override charset.
+
+
+ The Internet mail override charset.
+
+
+
+
+ The Internet mail override format.
+
+
+ The Internet mail override format.
+
+
+
+
+ The MAPI property PR_INITIAL_DETAILS_PANE.
+
+
+ The MAPI property PR_INITIAL_DETAILS_PANE.
+
+
+
+
+ The MAPI property PR_INITIALS.
+
+
+ The MAPI property PR_INITIALS.
+
+
+
+
+ The MAPI property PR_INITIALS.
+
+
+ The MAPI property PR_INITIALS.
+
+
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+
+
+ The MAPI property PR_INSTANCE_KEY.
+
+
+ The MAPI property PR_INSTANCE_KEY.
+
+
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+
+
+ The MAPI property PR_INTERNET_ARTICLE_NUMBER.
+
+
+ The MAPI property PR_INTERNET_ARTICLE_NUMBER.
+
+
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+
+
+ The MAPI property PR_INTERNET_CPID.
+
+
+ The MAPI property PR_INTERNET_CPID.
+
+
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+
+
+ The MAPI property PR_INTERNET_LINES.
+
+
+ The MAPI property PR_INTERNET_LINES.
+
+
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+
+
+ The MAPI property PR_IPM_ID.
+
+
+ The MAPI property PR_IPM_ID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_ENTRYID.
+
+
+ The MAPI property PR_IPM_OUTBOX_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_OUTBOX_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_RETURN_REQUESTED.
+
+
+ The MAPI property PR_IPM_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_ENTRYID.
+
+
+ The MAPI property PR_IPM_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_SENTMAIL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_ENTRYID.
+
+
+ The MAPI property PR_IPM_SUBTREE_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_SUBTREE_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_ENTRYID.
+
+
+ The MAPI property PR_IPM_WASTEBASKET_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_WASTEBASKET_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+
+
+ The MAPI property PR_KEYWORD.
+
+
+ The MAPI property PR_KEYWORD.
+
+
+
+
+ The MAPI property PR_KEYWORD.
+
+
+ The MAPI property PR_KEYWORD.
+
+
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+
+
+ The MAPI property PR_LAST_MODIFICATION_TIME.
+
+
+ The MAPI property PR_LAST_MODIFICATION_TIME.
+
+
+
+
+ The MAPI property PR_LATEST_DELIVERY_TIME.
+
+
+ The MAPI property PR_LATEST_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LOCALITY.
+
+
+ The MAPI property PR_LOCALITY.
+
+
+
+
+ The MAPI property PR_LOCALITY.
+
+
+ The MAPI property PR_LOCALITY.
+
+
+
+
+ The MAPI property PR_LOCATION.
+
+
+ The MAPI property PR_LOCATION.
+
+
+
+
+ The MAPI property PR_LOCATION.
+
+
+ The MAPI property PR_LOCATION.
+
+
+
+
+ The MAPI property PR_LOCK_BRANCH_ID.
+
+
+ The MAPI property PR_LOCK_BRANCH_ID.
+
+
+
+
+ The MAPI property PR_LOCK_DEPTH.
+
+
+ The MAPI property PR_LOCK_DEPTH.
+
+
+
+
+ The MAPI property PR_LOCK_ENLISTMENT_CONTEXT.
+
+
+ The MAPI property PR_LOCK_ENLISTMENT_CONTEXT.
+
+
+
+
+ The MAPI property PR_LOCK_EXPIRY_TIME.
+
+
+ The MAPI property PR_LOCK_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_LOCK_PERSISTENT.
+
+
+ The MAPI property PR_LOCK_PERSISTENT.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_DID.
+
+
+ The MAPI property PR_LOCK_RESOURCE_DID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_FID.
+
+
+ The MAPI property PR_LOCK_RESOURCE_FID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_MID.
+
+
+ The MAPI property PR_LOCK_RESOURCE_MID.
+
+
+
+
+ The MAPI property PR_LOCK_SCOPE.
+
+
+ The MAPI property PR_LOCK_SCOPE.
+
+
+
+
+ The MAPI property PR_LOCK_TIMEOUT.
+
+
+ The MAPI property PR_LOCK_TIMEOUT.
+
+
+
+
+ The MAPI property PR_LOCK_TYPE.
+
+
+ The MAPI property PR_LOCK_TYPE.
+
+
+
+
+ The MAPI property PR_MAIL_PERMISSION.
+
+
+ The MAPI property PR_MAIL_PERMISSION.
+
+
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+
+
+ The MAPI property PR_MAPPING_SIGNATURE.
+
+
+ The MAPI property PR_MAPPING_SIGNATURE.
+
+
+
+
+ The MAPI property PR_MDB_PROVIDER.
+
+
+ The MAPI property PR_MDB_PROVIDER.
+
+
+
+
+ The MAPI property PR_MESSAGE_ATTACHMENTS.
+
+
+ The MAPI property PR_MESSAGE_ATTACHMENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CC_ME.
+
+
+ The MAPI property PR_MESSAGE_CC_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CODEPAGE.
+
+
+ The MAPI property PR_MESSAGE_CODEPAGE.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_ID.
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_TIME.
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_DOWNLOAD_TIME.
+
+
+ The MAPI property PR_MESSAGE_DOWNLOAD_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_FLAGS.
+
+
+ The MAPI property PR_MESSAGE_FLAGS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIPIENTS.
+
+
+ The MAPI property PR_MESSAGE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIP_ME.
+
+
+ The MAPI property PR_MESSAGE_RECIP_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_SECURITY_LABEL.
+
+
+ The MAPI property PR_MESSAGE_SECURITY_LABEL.
+
+
+
+
+ The MAPI property PR_MESSAGE_SIZE.
+
+
+ The MAPI property PR_MESSAGE_SIZE.
+
+
+
+
+ The MAPI property PR_MESSAGE_SUBMISSION_ID.
+
+
+ The MAPI property PR_MESSAGE_SUBMISSION_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_TOKEN.
+
+
+ The MAPI property PR_MESSAGE_TOKEN.
+
+
+
+
+ The MAPI property PR_MESSAGE_TO_ME.
+
+
+ The MAPI property PR_MESSAGE_TO_ME.
+
+
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+
+
+ The MAPI property PR_MINI_ICON.
+
+
+ The MAPI property PR_MINI_ICON.
+
+
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_MODIFY_VERSION.
+
+
+ The MAPI property PR_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_MSG_STATUS.
+
+
+ The MAPI property PR_MSG_STATUS.
+
+
+
+
+ The MAPI property PR_NDR_DIAG_CODE.
+
+
+ The MAPI property PR_NDR_DIAG_CODE.
+
+
+
+
+ The MAPI property PR_NDR_REASON_CODE.
+
+
+ The MAPI property PR_NDR_REASON_CODE.
+
+
+
+
+ The MAPI property PR_NDR_STATUS_CODE.
+
+
+ The MAPI property PR_NDR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+
+
+ The MAPI property PR_NICKNAME.
+
+
+ The MAPI property PR_NICKNAME.
+
+
+
+
+ The MAPI property PR_NICKNAME.
+
+
+ The MAPI property PR_NICKNAME.
+
+
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_NOTIFICATION_REQUESTED.
+
+
+ The MAPI property PR_NON_RECEIPT_NOTIFICATION_REQUESTED.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_REASON.
+
+
+ The MAPI property PR_NON_RECEIPT_REASON.
+
+
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+
+
+ The MAPI property PR_NT_SECURITY_DESCRIPTOR.
+
+
+ The MAPI property PR_NT_SECURITY_DESCRIPTOR.
+
+
+
+
+ The MAPI property PR_NULL.
+
+
+ The MAPI property PR_NULL.
+
+
+
+
+ The MAPI property PR_OBJECT_TYPE.
+
+
+ The MAPI property PR_OBJECT_TYPE.
+
+
+
+
+ The MAPI property PR_OBSOLETE_IPMS.
+
+
+ The MAPI property PR_OBSOLETE_IPMS.
+
+
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OOF_REPLY_TYPE.
+
+
+ The MAPI property PR_OOF_REPLY_TYPE.
+
+
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_ORIG_ENTRYID.
+
+
+ The MAPI property PR_ORIG_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DELIVERY_TIME.
+
+
+ The MAPI property PR_ORIGINAL_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_ORIGINAL_EITS.
+
+
+ The MAPI property PR_ORIGINAL_EITS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ENTRYID.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIPIENT_NAME.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIPIENT_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENSITIVITY.
+
+
+ The MAPI property PR_ORIGINAL_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBMIT_TIME.
+
+
+ The MAPI property PR_ORIGINAL_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINATING_MTA_CERTIFICATE.
+
+
+ The MAPI property PR_ORIGINATING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY.
+
+
+ The MAPI property PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_CERTIFICATE.
+
+
+ The MAPI property PR_ORIGINATOR_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED.
+
+
+ The MAPI property PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED.
+
+
+ The MAPI property PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT.
+
+
+ The MAPI property PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_RETURN_ADDRESS.
+
+
+ The MAPI property PR_ORIGINATOR_RETURN_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGIN_CHECK.
+
+
+ The MAPI property PR_ORIGIN_CHECK.
+
+
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OWNER_APPT_ID.
+
+
+ The MAPI property PR_OWNER_APPT_ID.
+
+
+
+
+ The MAPI property PR_OWN_STORE_ENTRYID.
+
+
+ The MAPI property PR_OWN_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+
+
+ The MAPI property PR_PARENT_ENTRYID.
+
+
+ The MAPI property PR_PARENT_ENTRYID.
+
+
+
+
+ The MAPI property PR_PARENT_KEY.
+
+
+ The MAPI property PR_PARENT_KEY.
+
+
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY.
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_MODE.
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_MODE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_REPORT_REQUEST.
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_REPORT_REQUEST.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS.
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED.
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_PROHIBITED.
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_PROHIBITED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_RENDITION_ATTRIBUTES.
+
+
+ The MAPI property PR_PHYSICAL_RENDITION_ATTRIBUTES.
+
+
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_ENTRIES.
+
+
+ The MAPI property PR_POST_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_POST_REPLY_DENIED.
+
+
+ The MAPI property PR_POST_REPLY_DENIED.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_ENTRIES.
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_PREPROCESS.
+
+
+ The MAPI property PR_PREPROCESS.
+
+
+
+
+ The MAPI property PR_PRIMARY_CAPABILITY.
+
+
+ The MAPI property PR_PRIMARY_CAPABILITY.
+
+
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIORITY.
+
+
+ The MAPI property PR_PRIORITY.
+
+
+
+
+ The MAPI property PR_PROFESSION.
+
+
+ The MAPI property PR_PROFESSION.
+
+
+
+
+ The MAPI property PR_PROFESSION.
+
+
+ The MAPI property PR_PROFESSION.
+
+
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY.
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY_REQUESTED.
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION.
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION_REQUESTED.
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+
+
+ The MAPI property PR_PROVIDER_ORDINAL.
+
+
+ The MAPI property PR_PROVIDER_ORDINAL.
+
+
+
+
+ The MAPI property PR_PROVIDER_SUBMIT_TIME.
+
+
+ The MAPI property PR_PROVIDER_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_PROVIDER_UID.
+
+
+ The MAPI property PR_PROVIDER_UID.
+
+
+
+
+ The MAPI property PR_PUID.
+
+
+ The MAPI property PR_PUID.
+
+
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ENTRYID.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_SEARCH_KEY.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_ENTRYID.
+
+
+ The MAPI property PR_READ_RECEIPT_ENTRYID.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_REQUESTED.
+
+
+ The MAPI property PR_READ_RECEIPT_REQUESTED.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_SEARCH_KEY.
+
+
+ The MAPI property PR_READ_RECEIPT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIPT_TIME.
+
+
+ The MAPI property PR_RECEIPT_TIME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ENTRYID.
+
+
+ The MAPI property PR_RECEIVED_BY_ENTRYID.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_SEARCH_KEY.
+
+
+ The MAPI property PR_RECEIVED_BY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIVE_FOLDER_SETTINGS.
+
+
+ The MAPI property PR_RECEIVE_FOLDER_SETTINGS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_CERTIFICATE.
+
+
+ The MAPI property PR_RECIPIENT_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_REASSIGNMENT_PROHIBITED.
+
+
+ The MAPI property PR_RECIPIENT_REASSIGNMENT_PROHIBITED.
+
+
+
+
+ The MAPI property PR_RECIPIENT_STATUS.
+
+
+ The MAPI property PR_RECIPIENT_STATUS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_TYPE.
+
+
+ The MAPI property PR_RECIPIENT_TYPE.
+
+
+
+
+ The MAPI property PR_REDIRECTION_HISTORY.
+
+
+ The MAPI property PR_REDIRECTION_HISTORY.
+
+
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_REGISTERED_MAIL_TYPE.
+
+
+ The MAPI property PR_REGISTERED_MAIL_TYPE.
+
+
+
+
+ The MAPI property PR_RELATED_IPMS.
+
+
+ The MAPI property PR_RELATED_IPMS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS.
+
+
+ The MAPI property PR_REMOTE_PROGRESS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+
+
+ The MAPI property PR_REMOTE_VALIDATE_OK.
+
+
+ The MAPI property PR_REMOTE_VALIDATE_OK.
+
+
+
+
+ The MAPI property PR_RENDERING_POSITION.
+
+
+ The MAPI property PR_RENDERING_POSITION.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_ENTRIES.
+
+
+ The MAPI property PR_REPLY_RECIPIENT_ENTRIES.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+
+
+ The MAPI property PR_REPLY_REQUESTED.
+
+
+ The MAPI property PR_REPLY_REQUESTED.
+
+
+
+
+ The MAPI property PR_REPLY_TIME.
+
+
+ The MAPI property PR_REPLY_TIME.
+
+
+
+
+ The MAPI property PR_REPORT_ENTRYID.
+
+
+ The MAPI property PR_REPORT_ENTRYID.
+
+
+
+
+ The MAPI property PR_REPORTING_DL_NAME.
+
+
+ The MAPI property PR_REPORTING_DL_NAME.
+
+
+
+
+ The MAPI property PR_REPORTING_MTA_CERTIFICATE.
+
+
+ The MAPI property PR_REPORTING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+
+
+ The MAPI property PR_REPORT_SEARCH_KEY.
+
+
+ The MAPI property PR_REPORT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_REPORT_TAG.
+
+
+ The MAPI property PR_REPORT_TAG.
+
+
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+
+
+ The MAPI property PR_REPORT_TIME.
+
+
+ The MAPI property PR_REPORT_TIME.
+
+
+
+
+ The MAPI property PR_REQUESTED_DELIVERY_METHOD.
+
+
+ The MAPI property PR_REQUESTED_DELIVERY_METHOD.
+
+
+
+
+ The MAPI property PR_RESOURCE_FLAGS.
+
+
+ The MAPI property PR_RESOURCE_FLAGS.
+
+
+
+
+ The MAPI property PR_RESOURCE_METHODS.
+
+
+ The MAPI property PR_RESOURCE_METHODS.
+
+
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+
+
+ The MAPI property PR_RESOURCE_TYPE.
+
+
+ The MAPI property PR_RESOURCE_TYPE.
+
+
+
+
+ The MAPI property PR_RESPONSE_REQUESTED.
+
+
+ The MAPI property PR_RESPONSE_REQUESTED.
+
+
+
+
+ The MAPI property PR_RESPONSIBILITY.
+
+
+ The MAPI property PR_RESPONSIBILITY.
+
+
+
+
+ The MAPI property PR_RETURNED_IPM.
+
+
+ The MAPI property PR_RETURNED_IPM.
+
+
+
+
+ The MAPI property PR_ROWID.
+
+
+ The MAPI property PR_ROWID.
+
+
+
+
+ The MAPI property PR_ROW_TYPE.
+
+
+ The MAPI property PR_ROW_TYPE.
+
+
+
+
+ The MAPI property PR_RTF_COMPRESSED.
+
+
+ The MAPI property PR_RTF_COMPRESSED.
+
+
+
+
+ The MAPI property PR_RTF_IN_SYNC.
+
+
+ The MAPI property PR_RTF_IN_SYNC.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_COUNT.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_CRC.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_CRC.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_PREFIX_COUNT.
+
+
+ The MAPI property PR_RTF_SYNC_PREFIX_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_TRAILING_COUNT.
+
+
+ The MAPI property PR_RTF_SYNC_TRAILING_COUNT.
+
+
+
+
+ The MAPI property PR_SEARCH.
+
+
+ The MAPI property PR_SEARCH.
+
+
+
+
+ The MAPI property PR_SEARCH_KEY.
+
+
+ The MAPI property PR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SECURITY.
+
+
+ The MAPI property PR_SECURITY.
+
+
+
+
+ The MAPI property PR_SELECTABLE.
+
+
+ The MAPI property PR_SELECTABLE.
+
+
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENDER_ENTRYID.
+
+
+ The MAPI property PR_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_SENDER_SEARCH_KEY.
+
+
+ The MAPI property PR_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SEND_INTERNET_ENCODING.
+
+
+ The MAPI property PR_SEND_INTERNET_ENCODING.
+
+
+
+
+ The MAPI property PR_SEND_RECALL_REPORT
+
+
+ The MAPI property PR_SEND_RECALL_REPORT.
+
+
+
+
+ The MAPI property PR_SEND_RICH_INFO.
+
+
+ The MAPI property PR_SEND_RICH_INFO.
+
+
+
+
+ The MAPI property PR_SENSITIVITY.
+
+
+ The MAPI property PR_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_SENTMAIL_ENTRYID.
+
+
+ The MAPI property PR_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ENTRYID.
+
+
+ The MAPI property PR_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_SEARCH_KEY.
+
+
+ The MAPI property PR_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_ENTRY_NAME.
+
+
+ The MAPI property PR_SERVICE_ENTRY_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_EXTRA_UIDS.
+
+
+ The MAPI property PR_SERVICE_EXTRA_UIDS.
+
+
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+
+
+ The MAPI property PR_SERVICES.
+
+
+ The MAPI property PR_SERVICES.
+
+
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_UID.
+
+
+ The MAPI property PR_SERVICE_UID.
+
+
+
+
+ The MAPI property PR_SEVEN_BIT_DISPLAY_NAME.
+
+
+ The MAPI property PR_SEVEN_BIT_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+
+
+ The MAPI property PR_SPOOLER_STATUS.
+
+
+ The MAPI property PR_SPOOLER_STATUS.
+
+
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+
+
+ The MAPI property PR_START_DATE.
+
+
+ The MAPI property PR_START_DATE.
+
+
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_STATUS.
+
+
+ The MAPI property PR_STATUS.
+
+
+
+
+ The MAPI property PR_STATUS_CODE.
+
+
+ The MAPI property PR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+
+
+ The MAPI property PR_STORE_ENTRYID.
+
+
+ The MAPI property PR_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_STORE_PROVIDERS.
+
+
+ The MAPI property PR_STORE_PROVIDERS.
+
+
+
+
+ The MAPI property PR_STORE_RECORD_KEY.
+
+
+ The MAPI property PR_STORE_RECORD_KEY.
+
+
+
+
+ The MAPI property PR_STORE_STATE.
+
+
+ The MAPI property PR_STORE_STATE.
+
+
+
+
+ The MAPI property PR_STORE_SUPPORT_MASK.
+
+
+ The MAPI property PR_STORE_SUPPORT_MASK.
+
+
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+
+
+ The MAPI property PR_SUBFOLDERS.
+
+
+ The MAPI property PR_SUBFOLDERS.
+
+
+
+
+ The MAPI property PR_SUBJECT.
+
+
+ The MAPI property PR_SUBJECT.
+
+
+
+
+ The MAPI property PR_SUBJECT.
+
+
+ The MAPI property PR_SUBJECT.
+
+
+
+
+ The MAPI property PR_SUBJECT_IPM.
+
+
+ The MAPI property PR_SUBJECT_IPM.
+
+
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+
+
+ The MAPI property PR_SUBMIT_FLAGS.
+
+
+ The MAPI property PR_SUBMIT_FLAGS.
+
+
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+
+
+ The MAPI property PR_SURNAME.
+
+
+ The MAPI property PR_SURNAME.
+
+
+
+
+ The MAPI property PR_SURNAME.
+
+
+ The MAPI property PR_SURNAME.
+
+
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+
+
+ The MAPI property PR_TEMPLATEID.
+
+
+ The MAPI property PR_TEMPLATEID.
+
+
+
+
+ The MAPI property PR_TITLE.
+
+
+ The MAPI property PR_TITLE.
+
+
+
+
+ The MAPI property PR_TITLE.
+
+
+ The MAPI property PR_TITLE.
+
+
+
+
+ The MAPI property PR_TNEF_CORRELATION_KEY.
+
+
+ The MAPI property PR_TNEF_CORRELATION_KEY.
+
+
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_TRANSPORT_KEY.
+
+
+ The MAPI property PR_TRANSPORT_KEY.
+
+
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_PROVIDERS.
+
+
+ The MAPI property PR_TRANSPORT_PROVIDERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_STATUS.
+
+
+ The MAPI property PR_TRANSPORT_STATUS.
+
+
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_TYPE_OF_MTS_USER.
+
+
+ The MAPI property PR_TYPE_OF_MTS_USER.
+
+
+
+
+ The MAPI property PR_USER_CERTIFICATE.
+
+
+ The MAPI property PR_USER_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_USER_X509_CERTIFICATE.
+
+
+ The MAPI property PR_USER_X509_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_VALID_FOLDER_MASK.
+
+
+ The MAPI property PR_VALID_FOLDER_MASK.
+
+
+
+
+ The MAPI property PR_VIEWS_ENTRYID.
+
+
+ The MAPI property PR_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_WEDDING_ANNIVERSARY.
+
+
+ The MAPI property PR_WEDDING_ANNIVERSARY.
+
+
+
+
+ The MAPI property PR_X400_CONTENT_TYPE.
+
+
+ The MAPI property PR_X400_CONTENT_TYPE.
+
+
+
+
+ The MAPI property PR_X400_DEFERRED_DELIVERY_CANCEL.
+
+
+ The MAPI property PR_X400_DEFERRED_DELIVERY_CANCEL.
+
+
+
+
+ The MAPI property PR_XPOS.
+
+
+ The MAPI property PR_XPOS.
+
+
+
+
+ The MAPI property PR_YPOS.
+
+
+ The MAPI property PR_YPOS.
+
+
+
+
+ Gets the property identifier.
+
+
+ Gets the property identifier.
+
+ The identifier.
+
+
+
+ Gets a value indicating whether or not the property contains multiple values.
+
+
+ Gets a value indicating whether or not the property contains multiple values.
+
+ true if the property contains multiple values; otherwise, false.
+
+
+
+ Gets a value indicating whether or not the property has a special name.
+
+
+ Gets a value indicating whether or not the property has a special name.
+
+ true if the property has a special name; otherwise, false.
+
+
+
+ Gets a value indicating whether the property value type is valid.
+
+
+ Gets a value indicating whether the property value type is valid.
+
+ true if the property value type is valid; otherwise, false.
+
+
+
+ Gets the property's value type (including the multi-valued bit).
+
+
+ Gets the property's value type (including the multi-valued bit).
+
+ The property's value type.
+
+
+
+ Gets the type of the value that the property contains.
+
+
+ Gets the type of the value that the property contains.
+
+ The type of the value.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new based on a 32-bit integer tag as read from
+ a TNEF stream.
+
+ The property tag.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new based on a
+ and .
+
+ The property identifier.
+ The property type.
+
+
+
+ Casts an integer tag value into a TNEF property tag.
+
+
+ Casts an integer tag value into a TNEF property tag.
+
+ A that represents the integer tag value.
+ The integer tag value.
+
+
+
+ Casts a TNEF property tag into a 32-bit integer value.
+
+
+ Casts a TNEF property tag into a 32-bit integer value.
+
+ A 32-bit integer value representing the TNEF property tag.
+ The TNEF property tag.
+
+
+
+ Serves as a hash function for a object.
+
+
+ Serves as a hash function for a object.
+
+ A hash code for this instance that is suitable for use in hashing algorithms
+ and data structures such as a hash table.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Returns a new where the type has been changed to .
+
+
+ Returns a new where the type has been changed to .
+
+ The unicode equivalent of the property tag.
+
+
+
+ The type of value that a TNEF property contains.
+
+
+ The type of value that a TNEF property contains.
+
+
+
+
+ The type of the property is unspecified.
+
+
+
+
+ The property has a null value.
+
+
+
+
+ The property has a signed 16-bit value.
+
+
+
+
+ The property has a signed 32-bit value.
+
+
+
+
+ THe property has a 32-bit floating point value.
+
+
+
+
+ The property has a 64-bit floating point value.
+
+
+
+
+ The property has a 64-bit integer value representing 1/10000th of a monetary unit (i.e., 1/100th of a cent).
+
+
+
+
+ The property has a 64-bit integer value specifying the number of 100ns periods since Jan 1, 1601.
+
+
+
+
+ The property has a 32-bit error value.
+
+
+
+
+ The property has a boolean value.
+
+
+
+
+ The property has an embedded object value.
+
+
+
+
+ The property has a signed 64-bit value.
+
+
+
+
+ The property has a null-terminated 8-bit character string value.
+
+
+
+
+ The property has a null-terminated unicode character string value.
+
+
+
+
+ The property has a 64-bit integer value specifying the number of 100ns periods since Jan 1, 1601.
+
+
+
+
+ The property has an OLE GUID value.
+
+
+
+
+ The property has a binary blob value.
+
+
+
+
+ A flag indicating that the property contains multiple values.
+
+
+
+
+ A TNEF reader.
+
+
+ A TNEF reader.
+
+
+
+
+ Gets the attachment key value.
+
+
+ Gets the attachment key value.
+
+ The attachment key value.
+
+
+
+ Gets the current attribute's level.
+
+
+ Gets the current attribute's level.
+
+ The current attribute's level.
+
+
+
+ Gets the length of the current attribute's raw value.
+
+
+ Gets the length of the current attribute's raw value.
+
+ The length of the current attribute's raw value.
+
+
+
+ Gets the stream offset of the current attribute's raw value.
+
+
+ Gets the stream offset of the current attribute's raw value.
+
+ The stream offset of the current attribute's raw value.
+
+
+
+ Gets the current attribute's tag.
+
+
+ Gets the current attribute's tag.
+
+ The current attribute's tag.
+
+
+
+ Gets the compliance mode.
+
+
+ Gets the compliance mode.
+
+ The compliance mode.
+
+
+
+ Gets the current compliance status of the TNEF stream.
+
+
+ Gets the current compliance status of the TNEF stream.
+ As the reader progresses, this value may change if errors are encountered.
+
+ The compliance status.
+
+
+
+ Gets the message codepage.
+
+
+ Gets the message codepage.
+
+ The message codepage.
+
+
+
+ Gets the TNEF property reader.
+
+
+ Gets the TNEF property reader.
+
+ The TNEF property reader.
+
+
+
+ Gets the current stream offset.
+
+
+ Gets the current stream offset.
+
+ The stream offset.
+
+
+
+ Gets the TNEF version.
+
+
+ Gets the TNEF version.
+
+ The TNEF version.
+
+
+
+ Initializes a new instance of the class.
+
+
+ When reading a TNEF stream using the mode,
+ a will be thrown immediately at the first sign of
+ invalid or corrupted data.
+ When reading a TNEF stream using the mode,
+ however, compliance issues are accumulated in the
+ property, but exceptions are not raised unless the stream is too corrupted to continue.
+
+ The input stream.
+ The default message codepage.
+ The compliance mode.
+
+ is null.
+
+
+ is not a valid codepage.
+
+
+ is not a supported codepage.
+
+
+ The TNEF stream is corrupted or invalid.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new for the specified input stream.
+
+ The input stream.
+
+ is null.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Advances to the next attribute in the TNEF stream.
+
+
+ Advances to the next attribute in the TNEF stream.
+
+ true if there is another attribute available to be read; otherwise false.
+
+ The TNEF stream is corrupted or invalid.
+
+
+
+
+ Reads the raw attribute value data from the underlying TNEF stream.
+
+
+ Reads the raw attribute value data from the underlying TNEF stream.
+
+ The total number of bytes read into the buffer. This can be less than the number
+ of bytes requested if that many bytes are not available, or zero (0) if the end of the
+ value has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Resets the compliance status.
+
+
+ Resets the compliance status.
+
+
+
+
+ Closes the TNEF reader and the underlying stream.
+
+
+ Closes the TNEF reader and the underlying stream.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resource used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After calling
+ , you must release all references to the so the garbage
+ collector can reclaim the memory that the was occupying.
+
+
+
+ A stream for reading raw values from a or .
+
+
+ A stream for reading raw values from a or .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a stream for reading a raw value from the .
+
+ The .
+ The end offset.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The is always readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ Writing to a is not supported.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ Seeking within a is not supported.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ Getting the length of a is not supported.
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Getting and setting the position of a is not supported.
+
+ The position of the stream.
+
+ The stream does not support seeking.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ The does not support writing.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ The stream does not support writing.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ The does not support seeking.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ The stream does not support seeking.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ The does not support writing.
+
+
+ The stream does not support writing.
+
+
+
+
+ Sets the length of the stream.
+
+
+ The does not support setting the length.
+
+ The desired length of the stream in bytes.
+
+ The stream does not support setting the length.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ The underlying is not disposed.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ The 32-bit cyclic redundancy check (CRC) algorithm.
+
+
+ A cyclic redundancy check is a form of integrity check to make sure
+ that a block of data has not been corrupted.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new CRC32 context.
+
+ The initial value.
+
+
+
+ Clones the CRC32 context and state.
+
+
+ Clones the CRC32 context and state.
+
+
+
+
+ Gets the computed checksum.
+
+
+ Gets the computed checksum.
+
+ The checksum.
+
+
+
+ Updates the CRC based on the specified block of data.
+
+
+ Updates the CRC based on the specified block of data.
+
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+
+
+ Updates the CRC based on the specified byte.
+
+
+ Updates the CRC based on the specified byte.
+
+ The byte value.
+
+
+
+ Resets the checksum so that the context can be reused.
+
+
+ Resets the checksum so that the context can be reused.
+
+
+
+
+ Utility methods to parse and format rfc822 date strings.
+
+
+ Utility methods to parse and format rfc822 date strings.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed date.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed date.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the specified index.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed date.
+
+ is null.
+
+
+ is not within the range of the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the specified index.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed date.
+
+ is null.
+
+
+ is not within the range of the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified buffer.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified buffer.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified text.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input text.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified text.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input text.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Formats the as an rfc822 date string.
+
+
+ Formats the date and time in the format specified by rfc822, suitable for use
+ in the Date header of MIME messages.
+
+ The formatted string.
+ The date.
+
+
+
+ MIME utility methods.
+
+
+ Various utility methods that don't belong anywhere else.
+
+
+
+
+ A string comparer that performs a case-insensitive ordinal string comparison.
+
+
+ A string comparer that performs a case-insensitive ordinal string comparison.
+
+
+
+
+ Generates a Message-Id.
+
+
+ Generates a new Message-Id using the supplied domain.
+
+ The message identifier.
+ A domain to use.
+
+ is null.
+
+
+ is invalid.
+
+
+
+
+ Generates a Message-Id.
+
+
+ Generates a new Message-Id using the local machine's domain.
+
+ The message identifier.
+
+
+
+ Enumerates the message-id references such as those that can be found in
+ the In-Reply-To or References header.
+
+
+ Incrementally parses Message-Ids (such as those from a References header
+ in a MIME message) from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The references.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Enumerates the message-id references such as those that can be found in
+ the In-Reply-To or References header.
+
+
+ Incrementally parses Message-Ids (such as those from a References header
+ in a MIME message) from the specified text.
+
+ The references.
+ The text to parse.
+
+ is null.
+
+
+
+
+ Parses a Message-Id header value.
+
+
+ Parses the Message-Id value, returning the addr-spec portion of the msg-id token.
+
+ The addr-spec portion of the msg-id token.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Parses a Message-Id header value.
+
+
+ Parses the Message-Id value, returning the addr-spec portion of the msg-id token.
+
+ The addr-spec portion of the msg-id token.
+ The text to parse.
+
+ is null.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the version was successfully parsed, false otherwise.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+ The parsed version.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the specified text.
+
+ true, if the version was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed version.
+
+ is null.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the version was successfully parsed, false otherwise.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+ The parsed version.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the specified text.
+
+ true, if the version was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed version.
+
+ is null.
+
+
+
+
+ Tries to parse the value of a Content-Transfer-Encoding header.
+
+
+ Parses a Content-Transfer-Encoding header value.
+
+ true, if the encoding was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed encoding.
+
+ is null.
+
+
+
+
+ Quotes the specified text.
+
+
+ Quotes the specified text, enclosing it in double-quotes and escaping
+ any backslashes and double-quotes within.
+
+ The quoted text.
+ The text to quote.
+
+ is null.
+
+
+
+
+ Unquotes the specified text.
+
+
+ Unquotes the specified text, removing any escaped backslashes within.
+
+ The unquoted text.
+ The text to unquote.
+
+ is null.
+
+
+
+
+ An optimized version of StringComparer.OrdinalIgnoreCase.
+
+
+ An optimized version of StringComparer.OrdinalIgnoreCase.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Compare the input strings for equality.
+
+
+ Compares the input strings for equality.
+
+ trueif and refer to the same object,
+ or and are equal,
+ or and are null;
+ otherwise, false.
+ A string to compare to .
+ A string to compare to .
+
+
+
+ Get the hash code for the specified string.
+
+
+ Get the hash code for the specified string.
+
+ A 32-bit signed hash code calculated from the value of the parameter.
+ The string.
+
+ is null.
+
+
+
+
+ Utility methods for encoding and decoding rfc2047 encoded-word tokens.
+
+
+ Utility methods for encoding and decoding rfc2047 encoded-word tokens.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) starting at the given index and spanning across
+ the specified number of bytes using the supplied parser options.
+
+ The decoded phrase.
+ The parser options to use.
+ The phrase to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) starting at the given index and spanning across
+ the specified number of bytes using the default parser options.
+
+ The decoded phrase.
+ The phrase to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) within the specified buffer using the supplied parser options.
+
+ The decoded phrase.
+ The parser options to use.
+ The phrase to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) within the specified buffer using the default parser options.
+
+ The decoded phrase.
+ The phrase to decode.
+
+ is null.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer starting at the given index and spanning
+ across the specified number of bytes using the supplied parser options.
+
+ The decoded text.
+ The parser options to use.
+ The text to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer starting at the given index and spanning
+ across the specified number of bytes using the default parser options.
+
+ The decoded text.
+ The text to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer using the specified parser options.
+
+ The decoded text.
+ The parser options to use.
+ The text to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer using the default parser options.
+
+ The decoded text.
+ The text to decode.
+
+ is null.
+
+
+
+
+ Encodes the phrase.
+
+
+ Encodes the phrase according to the rules of rfc2047 using
+ the specified charset encoding and formatting options.
+
+ The encoded phrase.
+ The formatting options
+ The charset encoding.
+ The phrase to encode.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encodes the phrase.
+
+
+ Encodes the phrase according to the rules of rfc2047 using
+ the specified charset encoding.
+
+ The encoded phrase.
+ The charset encoding.
+ The phrase to encode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encodes the unstructured text.
+
+
+ Encodes the unstructured text according to the rules of rfc2047
+ using the specified charset encoding and formatting options.
+
+ The encoded text.
+ The formatting options
+ The charset encoding.
+ The text to encode.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encodes the unstructured text.
+
+
+ Encodes the unstructured text according to the rules of rfc2047
+ using the specified charset encoding.
+
+ The encoded text.
+ The charset encoding.
+ The text to encode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A collection of attachments.
+
+
+ The is only used when building a message body with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+ If is true, then the attachments
+ are treated as if they are linked to another .
+
+ If set to true; the attachments are treated as linked resources.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the number of attachments currently in the collection.
+
+
+ Indicates the number of attachments in the collection.
+
+ The number of attachments.
+
+
+
+ Gets whther or not the collection is read-only.
+
+
+ A is never read-only.
+
+ true if the collection is read only; otherwise, false.
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The attachment at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified data as an attachment using the supplied Content-Type.
+ The file name parameter is used to set the Content-Location.
+ For a list of known mime-types and their associated file extensions, see
+ http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+
+ The newly added attachment .
+ The name of the file.
+ The file data.
+ The mime-type of the file.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified data as an attachment using the supplied Content-Type.
+ The file name parameter is used to set the Content-Location.
+ For a list of known mime-types and their associated file extensions, see
+ http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+
+ The newly added attachment .
+ The name of the file.
+ The content stream.
+ The mime-type of the file.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+ -or-
+ The stream cannot be read.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the data as an attachment, using the specified file name for deducing
+ the mime-type by extension and for setting the Content-Location.
+
+ The newly added attachment .
+ The name of the file.
+ The file data to attach.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the stream as an attachment, using the specified file name for deducing
+ the mime-type by extension and for setting the Content-Location.
+
+ The newly added attachment .
+ The name of the file.
+ The content stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+ -or-
+ The stream cannot be read
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified file as an attachment using the supplied Content-Type.
+ For a list of known mime-types and their associated file extensions, see
+ http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+
+ The newly added attachment .
+ The name of the file.
+ The mime-type of the file.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified file could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified file as an attachment.
+
+ The newly added attachment .
+ The name of the file.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified as an attachment.
+
+ The attachment.
+
+ is null.
+
+
+
+
+ Clears the attachment collection.
+
+
+ Removes all attachments from the collection.
+
+
+
+
+ Checks if the collection contains the specified attachment.
+
+
+ Determines whether or not the collection contains the specified attachment.
+
+ true if the specified attachment exists;
+ otherwise false.
+ The attachment.
+
+ is null.
+
+
+
+
+ Copies all of the attachments in the collection to the specified array.
+
+
+ Copies all of the attachments within the into the array,
+ starting at the specified array index.
+
+ The array to copy the attachments to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the index of the requested attachment, if it exists.
+
+
+ Finds the index of the specified attachment, if it exists.
+
+ The index of the requested attachment; otherwise -1.
+ The attachment.
+
+ is null.
+
+
+
+
+ Inserts the specified attachment at the given index.
+
+
+ Inserts the attachment at the specified index.
+
+ The index to insert the attachment.
+ The attachment.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified attachment.
+
+
+ Removes the specified attachment.
+
+ true if the attachment was removed; otherwise false.
+ The attachment.
+
+ is null.
+
+
+
+
+ Removes the attachment at the specified index.
+
+
+ Removes the attachment at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets an enumerator for the list of attachments.
+
+
+ Gets an enumerator for the list of attachments.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of attachments.
+
+
+ Gets an enumerator for the list of attachments.
+
+ The enumerator.
+
+
+
+ A message body builder.
+
+
+ is a helper class for building common MIME body structures.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the attachments.
+
+
+ Represents a collection of file attachments that will be included in the message.
+
+ The attachments.
+
+
+
+ Gets the linked resources.
+
+
+ Linked resources are a special type of attachment which are linked to from the .
+
+ The linked resources.
+
+
+
+ Gets or sets the text body.
+
+
+ Represents the plain-text formatted version of the message body.
+
+ The text body.
+
+
+
+ Gets or sets the html body.
+
+
+ Represents the html formatted version of the message body and may link to any of the .
+
+ The html body.
+
+
+
+ Constructs the message body based on the text-based bodies, the linked resources, and the attachments.
+
+
+ Combines the , , ,
+ and into the proper MIME structure suitable for display in many common
+ mail clients.
+
+ The message body.
+
+
+
+ A class representing a Content-Disposition header value.
+
+
+ The Content-Disposition header is a way for the originating client to
+ suggest to the receiving client whether to present the part to the user
+ as an attachment or as part of the content (inline).
+
+
+
+
+ The attachment disposition.
+
+
+ Indicates that the should be treated as an attachment.
+
+
+
+
+ The form-data disposition.
+
+
+ Indicates that the should be treated as form data.
+
+
+
+
+ The inline disposition.
+
+
+ Indicates that the should be rendered inline.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The disposition should either be
+ or .
+
+ The disposition.
+
+ is null.
+
+
+ is not "attachment" or "inline".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This is identical to with a disposition
+ value of .
+
+
+
+
+ Gets or sets the disposition.
+
+
+ The disposition is typically either "attachment" or "inline".
+
+ The disposition.
+
+ is null.
+
+
+ is an invalid disposition value.
+
+
+
+
+ Gets or sets a value indicating whether the is an attachment.
+
+
+ A convenience property to determine if the entity should be considered an attachment or not.
+
+ true if the is an attachment; otherwise, false.
+
+
+
+ Gets the parameters.
+
+
+ In addition to specifying whether the entity should be treated as an
+ attachment vs displayed inline, the Content-Disposition header may also
+ contain parameters to provide further information to the receiving client
+ such as the file attributes.
+
+ The parameters.
+
+
+
+ Gets or sets the name of the file.
+
+
+ When set, this can provide a useful hint for a default file name for the
+ content when the user decides to save it to disk.
+
+ The name of the file.
+
+
+
+ Gets or sets the creation-date parameter.
+
+
+ Refers to the date and time that the content file was created on the
+ originating system. This parameter serves little purpose and is
+ typically not used by mail clients.
+
+ The creation date.
+
+
+
+ Gets or sets the modification-date parameter.
+
+
+ Refers to the date and time that the content file was last modified on
+ the originating system. This parameter serves little purpose and is
+ typically not used by mail clients.
+
+ The modification date.
+
+
+
+ Gets or sets the read-date parameter.
+
+
+ Refers to the date and time that the content file was last read on the
+ originating system. This parameter serves little purpose and is typically
+ not used by mail clients.
+
+ The read date.
+
+
+
+ Gets or sets the size parameter.
+
+
+ When set, the size parameter typically refers to the original size of the
+ content on disk. This parameter is rarely used by mail clients as it serves
+ little purpose.
+
+ The size.
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the ,
+ optionally encoding the parameters as they would be encoded for trabsport.
+
+ The serialized string.
+ The formatting options.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the ,
+ optionally encoding the parameters as they would be encoded for trabsport.
+
+ The serialized string.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+
+
+
+
+ Returns a that represents the current
+ .
+
+
+ Creates a string-representation of the .
+
+ A that represents the current
+ .
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed disposition.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed disposition.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the specified buffer.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the specified buffer.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed disposition.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied text.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The text to parse.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied text.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed disposition.
+
+ is null.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the specified text.
+
+ The parsed .
+ The parser options.
+ The input text.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the specified text.
+
+ The parsed .
+ The input text.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ An enumeration of all supported content transfer encodings.
+ .
+
+
+ Some older mail software is unable to properly deal with
+ data outside of the ASCII range, so it is sometimes
+ necessary to encode the content of MIME entities.
+
+
+
+
+ The default encoding (aka no encoding at all).
+
+
+
+
+ The 7bit content transfer encoding.
+
+
+ This encoding should be restricted to textual content
+ in the US-ASCII range.
+
+
+
+
+ The 8bit content transfer encoding.
+
+
+ This encoding should be restricted to textual content
+ outside of the US-ASCII range but may not be supported
+ by all transport services such as older SMTP servers
+ that do not support the 8BITMIME extension.
+
+
+
+
+ The binary content transfer encoding.
+
+
+ This encoding is simply unencoded binary data. Typically not
+ supported by standard message transport services such as SMTP.
+
+
+
+
+ The base64 content transfer encoding.
+ .
+
+
+ This encoding is typically used for encoding binary data
+ or textual content in a largely 8bit charset encoding and
+ is supported by all message transport services.
+
+
+
+
+ The quoted printable content transfer encoding.
+ .
+
+
+ This encoding is used for textual content that is in a charset
+ that has a minority of characters outside of the US-ASCII range
+ (such as ISO-8859-1 and other single-byte charset encodings) and
+ is supported by all message transport services.
+
+
+
+
+ The uuencode content transfer encoding.
+ .
+
+
+ This is an obsolete encoding meant for encoding binary
+ data and has largely been superceeded by .
+
+
+
+
+ Encapsulates a content stream used by .
+
+
+ A represents the content of a .
+ The content has both a stream and an encoding (typically ).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ When creating new s, the
+ should typically be unless the
+ has already been encoded.
+
+ The content stream.
+ The stream encoding.
+
+ is null.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Gets or sets the content encoding.
+
+
+ If the was parsed from an existing stream, the
+ encoding will be identical to the ,
+ otherwise it will typically be .
+
+ The content encoding.
+
+
+
+ Gets the content stream.
+
+
+ Gets the content stream.
+
+ The stream.
+
+
+
+ Opens the decoded content stream.
+
+
+ Provides a means of reading the decoded content without having to first write it to another
+ stream using .
+
+ The decoded content stream.
+
+
+
+ Copies the content stream to the specified output stream.
+
+
+ This is equivalent to simply using to
+ copy the content stream to the output stream except that this method is
+ cancellable.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Decodes the content stream into another stream.
+
+
+ Uses the to decode the content stream to the output stream.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ A class representing a Content-Type header value.
+
+
+ The Content-Type header is a way for the originating client to
+ suggest to the receiving client the mime-type of the content and,
+ depending on that mime-type, presentation options such as charset.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new based on the media type and subtype provided.
+
+ Media type.
+ Media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets or sets the type of the media.
+
+
+ Represents the media type of the . Examples include
+ "text", "image", and "application". This string should
+ always be treated as case-insensitive.
+
+ The type of the media.
+
+ is null.
+
+
+
+
+ Gets or sets the media subtype.
+
+
+ Represents the media subtype of the . Examples include
+ "html", "jpeg", and "octet-stream". This string should
+ always be treated as case-insensitive.
+
+ The media subtype.
+
+ is null.
+
+
+
+
+ Gets the parameters.
+
+
+ In addition to the media type and subtype, the Content-Type header may also
+ contain parameters to provide further hints to the receiving client as to
+ how to process or display the content.
+
+ The parameters.
+
+
+
+ Gets or sets the boundary parameter.
+
+
+ This is a special parameter on entities, designating to the
+ parser a unique string that should be considered the boundary marker for each sub-part.
+
+ The boundary.
+
+
+
+ Gets or sets the charset parameter.
+
+
+ Text-based entities will often include a charset parameter
+ so that the receiving client can properly render the text.
+
+ The charset.
+
+
+
+ Gets or sets the format parameter.
+
+
+ The format parameter is typically use with text/plain
+ entities and will either have a value of "fixed" or "flowed".
+
+ The charset.
+
+
+
+ Gets the simple mime-type.
+
+
+ Gets the simple mime-type.
+
+ The mime-type.
+
+
+
+ Gets or sets the name parameter.
+
+
+ The name parameter is a way for the originiating client to suggest
+ to the receiving client a display-name for the content, which may
+ be used by the receiving client if it cannot display the actual
+ content to the user.
+
+ The name.
+
+
+
+ Checks if the this instance of matches
+ the specified media type and subtype.
+
+
+ If the specified or
+ are "*", they match anything.
+
+ true if the matches the
+ provided media type and subtype.
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Checks if the this instance of matches
+ the specified MIME media type and subtype.
+
+
+ If the specified or
+ are "*", they match anything.
+
+ true if the matches the
+ provided media type and subtype.
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the , optionally encoding
+ the parameters as they would be encoded for transport.
+
+ The serialized string.
+ The formatting options.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the , optionally encoding
+ the parameters as they would be encoded for transport.
+
+ The serialized string.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+
+
+
+
+ Returns a that represents the current
+ .
+
+
+ Creates a string-representation of the .
+
+ A that represents the current
+ .
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed content type.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed content type.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed content type.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Type value from the specified text.
+
+ true, if the content type was successfully parsed, false otherwise.
+ THe parser options.
+ The text to parse.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Type value from the specified text.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed content type.
+
+ is null.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified text.
+
+ The parsed .
+ The parser options.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified text.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ A domain list.
+
+
+ Represents a list of domains, such as those that an email was routed through.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new based on the domains provided.
+
+ A domain list.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the index of the requested domain, if it exists.
+
+
+ Finds the index of the specified domain, if it exists.
+
+ The index of the requested domain; otherwise -1.
+ The domain.
+
+ is null.
+
+
+
+
+ Insert the domain at the specified index.
+
+
+ Inserts the domain at the specified index in the list.
+
+ The index to insert the domain.
+ The domain to insert.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the domain at the specified index.
+
+
+ Removes the domain at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the domain at the specified index.
+
+
+ Gets or sets the domain at the specified index.
+
+ The domain at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Add the specified domain.
+
+
+ Adds the specified domain to the end of the list.
+
+ The domain.
+
+ is null.
+
+
+
+
+ Clears the domain list.
+
+
+ Removes all of the domains in the list.
+
+
+
+
+ Checks if the contains the specified domain.
+
+
+ Determines whether or not the domain list contains the specified domain.
+
+ true if the specified domain is contained;
+ otherwise false.
+ The domain.
+
+ is null.
+
+
+
+
+ Copies all of the domains in the to the specified array.
+
+
+ Copies all of the domains within the into the array,
+ starting at the specified array index.
+
+ The array to copy the domains to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified domain.
+
+
+ Removes the first instance of the specified domain from the list if it exists.
+
+ true if the domain was removed; otherwise false.
+ The domain.
+
+ is null.
+
+
+
+
+ Gets the number of domains in the .
+
+
+ Indicates the number of domains in the list.
+
+ The number of domains.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Gets an enumerator for the list of domains.
+
+
+ Gets an enumerator for the list of domains.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of domains.
+
+
+ Gets an enumerator for the list of domains.
+
+ The enumerator.
+
+
+
+ Returns a string representation of the list of domains.
+
+
+ Each non-empty domain string will be prepended by an '@'.
+ If there are multiple domains in the list, they will be separated by a comma.
+
+ A string representing the .
+
+
+
+ Tries to parse a list of domains.
+
+
+ Attempts to parse a from the text buffer starting at the
+ specified index. The index will only be updated if a was
+ successfully parsed.
+
+ true if a was successfully parsed;
+ false otherwise.
+ The buffer to parse.
+ The index to start parsing.
+ An index of the end of the input.
+ A flag indicating whether or not an
+ exception should be thrown on error.
+ The parsed DomainList.
+
+
+
+ Tries to parse a list of domains.
+
+
+ Attempts to parse a from the supplied text. The index
+ will only be updated if a was successfully parsed.
+
+ true if a was successfully parsed;
+ false otherwise.
+ The text to parse.
+ The parsed DomainList.
+
+ is null.
+
+
+
+
+ A content encoding constraint.
+
+
+ Not all message transports support binary or 8-bit data, so it becomes
+ necessary to constrain the content encoding to a subset of the possible
+ Content-Transfer-Encoding values.
+
+
+
+
+ There are no encoding constraints, the content may contain any byte.
+
+
+
+
+ The content may contain bytes with the high bit set, but must not contain any zero-bytes.
+
+
+
+
+ The content may only contain bytes within the 7-bit ASCII range.
+
+
+
+
+ A New-Line format.
+
+
+ There are two commonly used line-endings used by modern Operating Systems.
+ Unix-based systems such as Linux and Mac OS use a single character ('\n' aka LF)
+ to represent the end of line where-as Windows (or DOS) uses a sequence of two
+ characters ("\r\n" aka CRLF). Most text-based network protocols such as SMTP,
+ POP3, and IMAP use the CRLF sequence as well.
+
+
+
+
+ The Unix New-Line format ("\n").
+
+
+
+
+ The DOS New-Line format ("\r\n").
+
+
+
+
+ Format options for serializing various MimeKit objects.
+
+
+ Represents the available options for formatting MIME messages
+ and entities when writing them to a stream.
+
+
+
+
+ The default formatting options.
+
+
+ If a custom is not passed to methods such as
+ ,
+ the default options will be used.
+
+
+
+
+ Gets the maximum line length used by the encoders. The encoders
+ use this value to determine where to place line breaks.
+
+
+ Specifies the maximum line length to use when line-wrapping headers.
+
+ The maximum line length.
+
+
+
+ Gets or sets the new-line format.
+
+
+ Specifies the new-line encoding to use when writing the message
+ or entity to a stream.
+
+ The new-line format.
+
+ cannot be changed.
+
+
+
+
+ Gets the message headers that should be hidden.
+
+
+ Specifies the set of headers that should be removed when
+ writing a to a stream.
+ This is primarily meant for the purposes of removing Bcc
+ and Resent-Bcc headers when sending via a transport such as
+ SMTP.
+
+ The message headers.
+
+
+
+ Gets or sets whether the new "Internationalized Email" formatting standards should be used.
+
+
+ The new "Internationalized Email" format is defined by
+ rfc6530 and
+ rfc6532.
+ This feature should only be used when formatting messages meant to be sent via
+ SMTP using the SMTPUTF8 extension (rfc6531)
+ or when appending messages to an IMAP folder via UTF8 APPEND
+ (rfc6855).
+
+ true if the new internationalized formatting should be used; otherwise, false.
+
+ cannot be changed.
+
+
+
+
+ Gets or sets whether the formatter should allow mixed charsets in the headers.
+
+
+ When this option is enabled, the MIME formatter will try to use US-ASCII and/or
+ ISO-8859-1 to encode headers when appropriate rather than being forced to use the
+ specified charset for all encoded-word tokens in order to maximize readability.
+ Unfortunately, mail clients like Outlook and Thunderbird do not treat
+ encoded-word tokens individually and assume that all tokens are encoded using the
+ charset declared in the first encoded-word token despite the specification
+ explicitly stating that each encoded-word token should be treated independently.
+ The Thunderbird bug can be tracked at
+
+ https://bugzilla.mozilla.org/show_bug.cgi?id=317263.
+
+ true if the formatter should be allowed to use ISO-8859-1 when encoding headers; otherwise, false.
+
+
+
+ The method to use for encoding Content-Type and Content-Disposition parameter values.
+
+
+ The method to use for encoding Content-Type and Content-Disposition parameter
+ values when the is set to
+ .
+ The MIME specifications specify that the proper method for encoding Content-Type
+ and Content-Disposition parameter values is the method described in
+ rfc2231. However, it is common for
+ some older email clients to improperly encode using the method described in
+ rfc2047 instead.
+
+ The parameter encoding method that will be used.
+
+ is not a valid value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new set of formatting options for use with methods such as
+ .
+
+
+
+
+ Clones an instance of .
+
+
+ Clones the formatting options.
+
+ An exact copy of the .
+
+
+
+ Get the default formatting options in a thread-safe way.
+
+
+ Gets the default formatting options in a thread-safe way.
+
+ The default formatting options.
+
+
+
+ An address group, as specified by rfc0822.
+
+
+ Group addresses are rarely used anymore. Typically, if you see a group address,
+ it will be of the form: "undisclosed-recipients: ;".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and list of addresses. The
+ specified text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the group.
+ A list of addresses.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and list of addresses.
+
+ The name of the group.
+ A list of addresses.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name. The specified
+ text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the group.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name.
+
+ The name of the group.
+
+
+
+ Clone the group address.
+
+
+ Clones the group address.
+
+ The cloned group address.
+
+
+
+ Gets the members of the group.
+
+
+ Represents the member addresses of the group. Typically the member addresses
+ will be of the variety, but it is possible
+ for groups to contain other groups.
+
+ The list of members.
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ Returns a string containing the formatted group of addresses. If the
+ parameter is true, then the name of the group and all member addresses will be encoded
+ according to the rules defined in rfc2047, otherwise the names will not be encoded at all and
+ will therefor only be suitable for display purposes.
+
+ A string representing the .
+ The formatting options.
+ If set to true, the will be encoded.
+
+ is null.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Compares two group addresses to determine if they are identical or not.
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed group address.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed group address.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed group address.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed group address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed group address.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed group address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed group address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The text.
+ The parsed group address.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ A class representing a Message or MIME header.
+
+
+ Represents a single header field and value pair.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The character encoding that should be used to
+ encode the header value.
+ The header identifier.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The charset that should be used to encode the
+ header value.
+ The header identifier.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+ is not supported.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair with the UTF-8 encoding.
+
+ The header identifier.
+ The value of the header.
+
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The character encoding that should be used
+ to encode the header value.
+ The name of the header field.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The charset that should be used to encode the
+ header value.
+ The name of the header field.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is not supported.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair with the UTF-8 encoding.
+
+ The name of the header field.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Clone the header.
+
+
+ Clones the header, copying the current RawValue.
+
+ A copy of the header with its current state.
+
+
+
+ Gets the stream offset of the beginning of the header.
+
+
+ If the offset is set, it refers to the byte offset where it
+ was found in the stream it was parsed from.
+
+ The stream offset.
+
+
+
+ Gets the name of the header field.
+
+
+ Represents the field name of the header.
+
+ The name of the header field.
+
+
+
+ Gets the header identifier.
+
+
+ This property is mainly used for switch-statements for performance reasons.
+
+ The header identifier.
+
+
+
+ Gets the raw field name of the header.
+
+
+ Contains the raw field name of the header.
+
+ The raw field name of the header.
+
+
+
+ Gets the raw value of the header.
+
+
+ Contains the raw value of the header, before any decoding or charset conversion.
+
+ The raw value of the header.
+
+
+
+ Gets or sets the header value.
+
+
+ Represents the decoded header value and is suitable for displaying to the user.
+
+ The header value.
+
+ is null.
+
+
+
+
+ Gets the header value using the specified character encoding.
+
+
+ If the raw header value does not properly encode non-ASCII text, the decoder
+ will fall back to a default charset encoding. Sometimes, however, this
+ default charset fallback is wrong and the mail client may wish to override
+ that default charset on a per-header basis.
+ By using this method, the client is able to override the fallback charset
+ on a per-header basis.
+
+ The value.
+ The character encoding to use as a fallback.
+
+
+
+ Gets the header value using the specified charset.
+
+
+ If the raw header value does not properly encode non-ASCII text, the decoder
+ will fall back to a default charset encoding. Sometimes, however, this
+ default charset fallback is wrong and the mail client may wish to override
+ that default charset on a per-header basis.
+ By using this method, the client is able to override the fallback charset
+ on a per-header basis.
+
+ The value.
+ The charset to use as a fallback.
+
+
+
+ Sets the header value using the specified formatting options and character encoding.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ The formatting options.
+ A character encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the header value using the specified character encoding.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ A character encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the header value using the specified formatting options and charset.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ The formatting options.
+ A charset encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is not supported.
+
+
+
+
+ Sets the header value using the specified charset.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ A charset encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not supported.
+
+
+
+
+ Returns a string representation of the header.
+
+
+ Formats the header field and value in a way that is suitable for display.
+
+ A string representing the .
+
+
+
+ Unfold the specified header value.
+
+
+ Unfolds the header value so that it becomes suitable for display.
+ Since is already unfolded, this method is really
+ only needed when working with raw header strings.
+
+ The unfolded header value.
+ The header text.
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the header was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed header.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the specified index.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the specified index.
+
+ true, if the header was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed header.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the specified buffer.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the specified buffer.
+
+ true, if the header was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed header.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a header from the specified text.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The text to parse.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a header from the specified text.
+
+ true, if the header was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed header.
+
+ is null.
+
+
+
+
+ An enumeration of common header fields.
+
+
+ Comparing enum values is not only faster, but less error prone than
+ comparing strings.
+
+
+
+
+ The Ad-Hoc header field.
+
+
+
+
+ The Apparently-To header field.
+
+
+
+
+ The Approved header field.
+
+
+
+
+ The Article header field.
+
+
+
+
+ The Bcc header field.
+
+
+
+
+ The Bytes header field.
+
+
+
+
+ The Cc header field.
+
+
+
+
+ The Comments header field.
+
+
+
+
+ The Content-Base header field.
+
+
+
+
+ The Content-Class header field.
+
+
+
+
+ The Content-Description header field.
+
+
+
+
+ The Content-Disposition header field.
+
+
+
+
+ The Content-Duration header field.
+
+
+
+
+ The Content-Id header field.
+
+
+
+
+ The Content-Language header field.
+
+
+
+
+ The Content-Length header field.
+
+
+
+
+ The Content-Location header field.
+
+
+
+
+ The Content-Md5 header field.
+
+
+
+
+ The Content-Transfer-Encoding header field.
+
+
+
+
+ The Content-Type header field.
+
+
+
+
+ The Control header field.
+
+
+
+
+ The Date header field.
+
+
+
+
+ The Deferred-Delivery header field.
+
+
+
+
+ The Disposition-Notification-Options header field.
+
+
+
+
+ The Disposition-Notification-To header field.
+
+
+
+
+ The Distribution header field.
+
+
+
+
+ The DKIM-Signature header field.
+
+
+
+
+ The DomainKey-Signature header field.
+
+
+
+
+ The Encoding header field.
+
+
+
+
+ The Encrypted header field.
+
+
+
+
+ The Expires header field.
+
+
+
+
+ The Expiry-Date header field.
+
+
+
+
+ The Followup-To header field.
+
+
+
+
+ The From header field.
+
+
+
+
+ The Importance header field.
+
+
+
+
+ The In-Reply-To header field.
+
+
+
+
+ The Keywords header field.
+
+
+
+
+ The Lines header field.
+
+
+
+
+ The List-Help header field.
+
+
+
+
+ The List-Subscribe header field.
+
+
+
+
+ The List-Unsubscribe header field.
+
+
+
+
+ The Message-Id header field.
+
+
+
+
+ The MIME-Version header field.
+
+
+
+
+ The Newsgroups header field.
+
+
+
+
+ The Nntp-Posting-Host header field.
+
+
+
+
+ The Organization header field.
+
+
+
+
+ The Original-Recipient header field.
+
+
+
+
+ The Path header field.
+
+
+
+
+ The Precedence header field.
+
+
+
+
+ The Priority header field.
+
+
+
+
+ The Received header field.
+
+
+
+
+ The References header field.
+
+
+
+
+ The Reply-By header field.
+
+
+
+
+ The Reply-To header field.
+
+
+
+
+ The Resent-Bcc header field.
+
+
+
+
+ The Resent-Cc header field.
+
+
+
+
+ The Resent-Date header field.
+
+
+
+
+ The Resent-From header field.
+
+
+
+
+ The Resent-Message-Id header field.
+
+
+
+
+ The Resent-Reply-To header field.
+
+
+
+
+ The Resent-Sender header field.
+
+
+
+
+ The Resent-To header field.
+
+
+
+
+ The Return-Path header field.
+
+
+
+
+ The Return-Receipt-To header field.
+
+
+
+
+ The Sender header field.
+
+
+
+
+ The Sensitivity header field.
+
+
+
+
+ The Status header field.
+
+
+
+
+ The Subject header field.
+
+
+
+
+ The Summary header field.
+
+
+
+
+ The Supersedes header field.
+
+
+
+
+ The To header field.
+
+
+
+
+ The User-Agent header field.
+
+
+
+
+ The X-Mailer header field.
+
+
+
+
+ The X-MSMail-Priority header field.
+
+
+
+
+ The X-Priority header field.
+
+
+
+
+ The X-Status header field.
+
+
+
+
+ An unknown header field.
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent header field name.
+
+
+ Converts the enum value into the equivalent header field name.
+
+ The header name.
+ The enum value.
+
+
+
+ A list of s.
+
+
+ Represents a list of headers as found in a
+ or .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new empty header list.
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The header identifier.
+ The header value.
+
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The name of the header field.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The header identifier.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The name of the header field.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Checks if the contains a header with the specified field name.
+
+
+ Determines whether or not the header list contains the specified header.
+
+ true if the requested header exists;
+ otherwise false.
+ The header identifier.
+
+ is not a valid .
+
+
+
+
+ Checks if the contains a header with the specified field name.
+
+
+ Determines whether or not the header list contains the specified header.
+
+ true if the requested header exists;
+ otherwise false.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Gets the index of the requested header, if it exists.
+
+
+ Finds the first index of the specified header, if it exists.
+
+ The index of the requested header; otherwise -1.
+ The header id.
+
+ is not a valid .
+
+
+
+
+ Gets the index of the requested header, if it exists.
+
+
+ Finds the first index of the specified header, if it exists.
+
+ The index of the requested header; otherwise -1.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The header identifier.
+ The header value.
+
+ is null.
+
+
+ is not a valid .
+ -or-
+ is out of range.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The name of the header field.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is out of range.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The header identifier.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+ -or-
+ is out of range.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The name of the header field.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is out of range.
+
+
+
+
+ Gets the last index of the requested header, if it exists.
+
+
+ Finds the last index of the specified header, if it exists.
+
+ The last index of the requested header; otherwise -1.
+ The header id.
+
+ is not a valid .
+
+
+
+
+ Gets the last index of the requested header, if it exists.
+
+
+ Finds the last index of the specified header, if it exists.
+
+ The last index of the requested header; otherwise -1.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Removes the first occurance of the specified header field.
+
+
+ Removes the first occurance of the specified header field, if any exist.
+
+ true if the first occurance of the specified
+ header was removed; otherwise false.
+ The header identifier.
+
+ is is not a valid .
+
+
+
+
+ Removes the first occurance of the specified header field.
+
+
+ Removes the first occurance of the specified header field, if any exist.
+
+ true if the first occurance of the specified
+ header was removed; otherwise false.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Removes all of the headers matching the specified field name.
+
+
+ Removes all of the headers matching the specified field name.
+
+ The header identifier.
+
+ is not a valid .
+
+
+
+
+ Removes all of the headers matching the specified field name.
+
+
+ Removes all of the headers matching the specified field name.
+
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The header identifier.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The header identifier.
+ The header value.
+
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The name of the header field.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The name of the header field.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+ The value of the first occurrance of the specified header if it exists; otherwise null.
+ The header identifier.
+
+ is null.
+
+
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+ The value of the first occurrance of the specified header if it exists; otherwise null.
+ The name of the header field.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes all of the headers to the output stream.
+
+ The formatting options.
+ The output stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes all of the headers to the output stream.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Gets the number of headers in the list.
+
+
+ Gets the number of headers in the list.
+
+ The number of headers.
+
+
+
+ Gets whether or not the header list is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified header.
+
+
+ Adds the specified header to the end of the header list.
+
+ The header to add.
+
+ is null.
+
+
+
+
+ Clears the header list.
+
+
+ Removes all of the headers from the list.
+
+
+
+
+ Checks if the contains the specified header.
+
+
+ Determines whether or not the header list contains the specified header.
+
+ true if the specified header is contained;
+ otherwise, false.
+ The header.
+
+ is null.
+
+
+
+
+ Copies all of the headers in the to the specified array.
+
+
+ Copies all of the headers within the into the array,
+ starting at the specified array index.
+
+ The array to copy the headers to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified header.
+
+
+ Removes the specified header from the list if it exists.
+
+ true if the specified header was removed;
+ otherwise false.
+ The header.
+
+ is null.
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The header.
+
+ is null.
+
+
+
+
+ Gets the index of the requested header, if it exists.
+
+
+ Finds the index of the specified header, if it exists.
+
+ The index of the requested header; otherwise -1.
+ The header.
+
+ is null.
+
+
+
+
+ Inserts the specified header at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The header.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the header at the specified index.
+
+
+ Removes the header at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The header at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets an enumerator for the list of headers.
+
+
+ Gets an enumerator for the list of headers.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of headers.
+
+
+ Gets an enumerator for the list of headers.
+
+ The enumerator.
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+
+ The parsed list of headers.
+ The parser options.
+ The stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+
+ The parsed list of headers.
+ The stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the specified .
+
+ The parsed list of headers.
+ The parser options.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the default .
+
+ The parsed list of headers.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Header list changed action.
+
+
+ Specifies the way that a was changed.
+
+
+
+
+ A header was added.
+
+
+
+
+ A header was changed.
+
+
+
+
+ A header was removed.
+
+
+
+
+ The header list was cleared.
+
+
+
+
+ A collection of groups.
+
+
+ A collection of groups used with
+ .
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the number of groups in the collection.
+
+
+ Gets the number of groups in the collection.
+
+ The number of groups.
+
+
+
+ Gets whether or not the header list collection is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The group of headers at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Adds the group of headers to the collection.
+
+
+ Adds the group of headers to the collection.
+
+ The group of headers.
+
+ is null.
+
+
+
+
+ Clears the header list collection.
+
+
+ Removes all of the groups from the collection.
+
+
+
+
+ Checks if the collection contains the specified group of headers.
+
+
+ Determines whether or not the collection contains the specified group of headers.
+
+ true if the specified group of headers is contained;
+ otherwise, false.
+ The group of headers.
+
+ is null.
+
+
+
+
+ Copies all of the header groups in the to the specified array.
+
+
+ Copies all of the header groups within the into the array,
+ starting at the specified array index.
+
+ The array to copy the headers to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified header group.
+
+
+ Removes the specified header group from the collection, if it exists.
+
+ true if the specified header group was removed;
+ otherwise false.
+ The group of headers.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the groups of headers.
+
+
+ Gets an enumerator for the groups of headers.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the groups of headers.
+
+
+ Gets an enumerator for the groups of headers.
+
+ The enumerator.
+
+
+
+ An interface for content stream encapsulation as used by .
+
+
+ Implemented by .
+
+
+
+
+ Gets the content encoding.
+
+
+ If the is not encoded, this value will be
+ . Otherwise, it will be
+ set to the raw content encoding of the stream.
+
+ The encoding.
+
+
+
+ Gets the content stream.
+
+
+ Gets the content stream.
+
+ The stream.
+
+
+
+ Opens the decoded content stream.
+
+
+ Provides a means of reading the decoded content without having to first write it to another
+ stream using .
+
+ The decoded content stream.
+
+
+
+ Decodes the content stream into another stream.
+
+
+ If the content stream is encoded, this method will decode it into the
+ output stream using a suitable decoder.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was cancelled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Copies the content stream to the specified output stream.
+
+
+ Copies the data from into .
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was cancelled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ An internet address, as specified by rfc0822.
+
+
+ A can be any type of address defined by the
+ original Internet Message specification.
+ There are effectively two (2) types of addresses: mailboxes and groups.
+ Mailbox addresses are what are most commonly known as email addresses and are
+ represented by the class.
+ Group addresses are themselves lists of addresses and are represented by the
+ class. While rare, it is still important to handle these
+ types of addresses. They typically only contain mailbox addresses, but may also
+ contain other group addresses.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes the and properties of the internet address.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox or group.
+
+ is null.
+
+
+
+
+ Gets or sets the character encoding to use when encoding the name of the address.
+
+
+ The character encoding is used to convert the property, if it is set,
+ to a stream of bytes when encoding the internet address for transport.
+
+ The character encoding.
+
+ is null.
+
+
+
+
+ Gets or sets the display name of the address.
+
+
+ A name is optional and is typically set to the name of the person
+ or group that own the internet address.
+
+ The name of the address.
+
+
+
+ Clone the address.
+
+
+ Clones the address.
+
+ The cloned address.
+
+
+
+ Compares two internet addresses.
+
+
+ Compares two internet addresses for the purpose of sorting.
+
+ The sort order of the current internet address compared to the other internet address.
+ The internet address to compare to.
+
+ is null.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Compares two internet addresses to determine if they are identical or not.
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ If the parameter is true, then this method will return
+ an encoded version of the internet address according to the rules described in rfc2047.
+ However, if the parameter is false, then this method will
+ return a string suitable only for display purposes.
+
+ A string representing the .
+ The formatting options.
+ If set to true, the will be encoded.
+
+ is null.
+
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ If the parameter is true, then this method will return
+ an encoded version of the internet address according to the rules described in rfc2047.
+ However, if the parameter is false, then this method will
+ return a string suitable only for display purposes.
+
+ A string representing the .
+ If set to true, the will be encoded.
+
+
+
+ Returns a string representation of a suitable for display.
+
+
+ The string returned by this method is suitable only for display purposes.
+
+ A string representing the .
+
+
+
+ Raises the internal changed event used by to keep headers in sync.
+
+
+ This method is called whenever a property of the internet address is changed.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed address.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed address.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed address.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed address.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The text.
+ The parsed address.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ A list of email addresses.
+
+
+ An may contain any number of addresses of any type
+ defined by the original Internet Message specification.
+ There are effectively two (2) types of addresses: mailboxes and groups.
+ Mailbox addresses are what are most commonly known as email addresses and are
+ represented by the class.
+ Group addresses are themselves lists of addresses and are represented by the
+ class. While rare, it is still important to handle these
+ types of addresses. They typically only contain mailbox addresses, but may also
+ contain other group addresses.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new containing the supplied addresses.
+
+ An initial list of addresses.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new, empty, .
+
+
+
+
+ Recursively gets all of the mailboxes contained within the .
+
+
+ This API is useful for collecting a flattened list of
+ recipients for use with sending via SMTP or for encrypting via S/MIME or PGP/MIME.
+
+ The mailboxes.
+
+
+
+ Gets the index of the specified address.
+
+
+ Finds the index of the specified address, if it exists.
+
+ The index of the specified address if found; otherwise -1.
+ The address to get the index of.
+
+ is null.
+
+
+
+
+ Inserts the address at the specified index.
+
+
+ Inserts the address at the specified index in the list.
+
+ The index to insert the address.
+ The address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the address at the specified index.
+
+
+ Removes the address at the specified index.
+
+ The index of the address to remove.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The internet address at the specified index.
+ The index of the address to get or set.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the number of addresses in the .
+
+
+ Indicates the number of addresses in the list.
+
+ The number of addresses.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified address.
+
+
+ Adds the specified address to the end of the address list.
+
+ The address.
+
+ is null.
+
+
+
+
+ Adds a collection of addresses.
+
+
+ Adds a range of addresses to the end of the address list.
+
+ A colelction of addresses.
+
+ is null.
+
+
+
+
+ Clears the address list.
+
+
+ Removes all of the addresses from the list.
+
+
+
+
+ Checks if the contains the specified address.
+
+
+ Determines whether or not the address list contains the specified address.
+
+ true if the specified address exists;
+ otherwise false.
+ The address.
+
+ is null.
+
+
+
+
+ Copies all of the addresses in the to the specified array.
+
+
+ Copies all of the addresses within the into the array,
+ starting at the specified array index.
+
+ The array to copy the addresses to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified address.
+
+
+ Removes the specified address.
+
+ true if the address was removed; otherwise false.
+ The address.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the list of addresses.
+
+
+ Gets an enumerator for the list of addresses.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of addresses.
+
+
+ Gets an enumerator for the list of addresses.
+
+ The enumerator.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Compares two internet address lists.
+
+
+ Compares two internet address lists for the purpose of sorting.
+
+ The sort order of the current internet address list compared to the other internet address list.
+ The internet address list to compare to.
+
+ is null.
+
+
+
+
+ Returns a string representation of the email addresses in the ,
+ optionally encoding them for transport.
+
+
+ If is true, each address in the list will be encoded
+ according to the rules defined in rfc2047.
+ If there are multiple addresses in the list, they will be separated by a comma.
+
+ A string representing the .
+ The formatting options.
+ If set to true, each in the list will be encoded.
+
+
+
+ Returns a string representation of the email addresses in the ,
+ optionally encoding them for transport.
+
+
+ If is true, each address in the list will be encoded
+ according to the rules defined in rfc2047.
+ If there are multiple addresses in the list, they will be separated by a comma.
+
+ A string representing the .
+ If set to true, each in the list will be encoded.
+
+
+
+ Returns a string representation of the email addresses in the .
+
+
+ If there are multiple addresses in the list, they will be separated by a comma.
+
+ A string representing the .
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed addresses.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed addresses.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed addresses.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The text.
+ The parsed addresses.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Explicit cast to convert a to a
+ .
+
+
+ Casts a to a
+ in cases where you might want to make use of the System.Net.Mail APIs.
+
+ The equivalent .
+ The addresses.
+
+ contains one or more group addresses and cannot be converted.
+
+
+
+
+ Explicit cast to convert a
+ to a .
+
+
+ Casts a to a
+ in cases where you might want to make use of the the superior MimeKit APIs.
+
+ The equivalent .
+ The mail address.
+
+
+
+ A mailbox address, as specified by rfc822.
+
+
+ Represents a mailbox address (commonly referred to as an email address)
+ for a single recipient.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name, address and route. The
+ specified text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name, address and route.
+
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and address. The
+ specified text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The address of the mailbox.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and address.
+
+ The name of the mailbox.
+ The address of the mailbox.
+
+ is null.
+
+
+
+
+ Clone the mailbox address.
+
+
+ Clones the mailbox address.
+
+ The cloned mailbox address.
+
+
+
+ Gets the mailbox route.
+
+
+ A route is convention that is rarely seen in modern email systems, but is supported
+ for compatibility with email archives.
+
+ The mailbox route.
+
+
+
+ Gets or sets the mailbox address.
+
+
+ Represents the actual email address and is in the form of "name@example.com".
+
+ The mailbox address.
+
+ is null.
+
+
+
+
+ Gets whether or not the address is an international address.
+
+
+ International addresses are addresses that contain international
+ characters in either their local-parts or their domains.
+ For more information, see section 3.2 of
+ rfc6532.
+
+ true if the address is an international address; otherwise, false.
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ Returns a string containing the formatted mailbox address. If the
+ parameter is true, then the mailbox name will be encoded according to the rules defined
+ in rfc2047, otherwise the name will not be encoded at all and will therefor only be suitable
+ for display purposes.
+
+ A string representing the .
+ The formatting options.
+ If set to true, the will be encoded.
+
+ is null.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Compares two mailbox addresses to determine if they are identical or not.
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed mailbox address.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed mailbox address.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed mailbox address.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed mailbox address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed mailbox address.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed mailbox address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed mailbox address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The text.
+ The parsed mailbox address.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Explicit cast to convert a to a
+ .
+
+
+ Casts a to a
+ in cases where you might want to make use of the System.Net.Mail APIs.
+
+ The equivalent .
+ The mailbox.
+
+
+
+ Explicit cast to convert a
+ to a .
+
+
+ Casts a to a
+ in cases where you might want to make use of the the superior MimeKit APIs.
+
+ The equivalent .
+ The mail address.
+
+
+
+ A message delivery status MIME part.
+
+
+ A message delivery status MIME part is a machine readable notification denoting the
+ delivery status of a message and has a MIME-type of message/delivery-status.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Get the groups of delivery status fields.
+
+
+ Gets the groups of delivery status fields. The first group of fields
+ contains the per-message fields while each of the following groups
+ contains fields that pertain to particular recipients of the message.
+
+ The fields.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A message disposition notification MIME part.
+
+
+ A message disposition notification MIME part is a machine readable notification
+ denoting the disposition of a message once it has been successfully delivered
+ and has a MIME-type of message/disposition-notification.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Get the disposition notification fields.
+
+
+ Gets the disposition notification fields.
+
+ The fields.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A list of Message-Ids.
+
+
+ Used by the property.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new, empty, .
+
+
+
+
+ Clones the .
+
+
+ Creates an exact copy of the .
+
+ An exact copy of the .
+
+
+
+ Gets the index of the requested Message-Id, if it exists.
+
+
+ Finds the index of the specified Message-Id, if it exists.
+
+ The index of the requested Message-Id; otherwise -1.
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Insert the Message-Id at the specified index.
+
+
+ Inserts the Message-Id at the specified index in the list.
+
+ The index to insert the Message-Id.
+ The Message-Id to insert.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the Message-Id at the specified index.
+
+
+ Removes the Message-Id at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the Message-Id at the specified index.
+
+ The Message-Id at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Add the specified Message-Id.
+
+
+ Adds the specified Message-Id to the end of the list.
+
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Add a collection of Message-Id items.
+
+
+ Adds a collection of Message-Id items to append to the list.
+
+ The Message-Id items to add.
+
+ is null.
+
+
+
+
+ Clears the Message-Id list.
+
+
+ Removes all of the Message-Ids in the list.
+
+
+
+
+ Checks if the contains the specified Message-Id.
+
+
+ Determines whether or not the list contains the specified Message-Id.
+
+ true if the specified Message-Id is contained;
+ otherwise false.
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Copies all of the Message-Ids in the to the specified array.
+
+
+ Copies all of the Message-Ids within the into the array,
+ starting at the specified array index.
+
+ The array to copy the Message-Ids to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified Message-Id.
+
+
+ Removes the first instance of the specified Message-Id from the list if it exists.
+
+ true if the specified Message-Id was removed;
+ otherwise false.
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Gets the number of Message-Ids in the .
+
+
+ Indicates the number of Message-Ids in the list.
+
+ The number of Message-Ids.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+ The enumerator.
+
+
+
+ Returns a string representation of the list of Message-Ids.
+
+
+ Each Message-Id will be surrounded by angle brackets.
+ If there are multiple Message-Ids in the list, they will be separated by whitespace.
+
+ A string representing the .
+
+
+
+ An enumeration of message importance values.
+
+
+ Indicates the importance of a message.
+
+
+
+
+ The message is of low importance.
+
+
+
+
+ The message is of normal importance.
+
+
+
+
+ The message is of high importance.
+
+
+
+
+ A MIME part containing a as its content.
+
+
+ Represents MIME entities such as those with a Content-Type of message/rfc822 or message/news.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The message subtype.
+ An array of initialization parameters: headers and message parts.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains more than one .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME message entity with the specified subtype.
+
+ The message subtype.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message/rfc822 MIME entity.
+
+
+
+
+ Gets or sets the message content.
+
+
+ Gets or sets the message content.
+
+ The message content.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the output stream.
+
+
+ Writes the MIME entity and its message to the output stream.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ A MIME part containing a partial message as its content.
+
+
+ The "message/partial" MIME-type is used to split large messages into
+ multiple parts, typically to work around transport systems that have size
+ limitations (for example, some SMTP servers limit have a maximum message
+ size that they will accept).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message/partial entity.
+ Three (3) parameters must be specified in the Content-Type header
+ of a message/partial: id, number, and total.
+ The "id" parameter is a unique identifier used to match the parts together.
+ The "number" parameter is the sequential (1-based) index of the partial message fragment.
+ The "total" parameter is the total number of pieces that make up the complete message.
+
+ The id value shared among the partial message parts.
+ The (1-based) part number for this partial message part.
+ The total number of partial message parts.
+
+ is null.
+
+
+ is less than 1.
+ -or-
+ is less than .
+
+
+
+
+ Gets the "id" parameter of the Content-Type header.
+
+
+ The "id" parameter is a unique identifier used to match the parts together.
+
+ The identifier.
+
+
+
+ Gets the "number" parameter of the Content-Type header.
+
+
+ The "number" parameter is the sequential (1-based) index of the partial message fragment.
+
+ The part number.
+
+
+
+ Gets the "total" parameter of the Content-Type header.
+
+
+ The "total" parameter is the total number of pieces that make up the complete message.
+
+ The total number of parts.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Splits the specified message into multiple messages.
+
+
+ Splits the specified message into multiple messages, each with a
+ message/partial body no larger than the max size specified.
+
+ An enumeration of partial messages.
+ The message.
+ The maximum size for each message body.
+
+ is null.
+
+
+ is less than 1.
+
+
+
+
+ Joins the specified message/partial parts into the complete message.
+
+
+ Combines all of the message/partial fragments into its original,
+ complete, message.
+
+ The re-combined message.
+ The parser options to use.
+ The list of partial message parts.
+
+ is null.
+ -or-
+ is null.
+
+
+ The last partial does not have a Total.
+ -or-
+ The number of partials provided does not match the expected count.
+ -or-
+ One or more partials is missing.
+
+
+
+
+ Joins the specified message/partial parts into the complete message.
+
+
+ Combines all of the message/partial fragments into its original,
+ complete, message.
+
+ The re-combined message.
+ The list of partial message parts.
+
+ is null.
+
+
+
+
+ An enumeration of message priority values.
+
+
+ Indicates the priority of a message.
+
+
+
+
+ The message has normal priority.
+
+
+
+
+ The message has non-urgent priority.
+
+
+
+
+ The message has urgent priority.
+
+
+
+
+ An abstract MIME entity.
+
+
+ A MIME entity is really just a node in a tree structure of MIME parts in a MIME message.
+ There are 3 basic types of entities: , ,
+ and (which is actually just a special variation of
+ who's content is another MIME message/document). All other types are
+ derivatives of one of those.
+
+
+
+
+ Initializes a new instance of the class
+ based on the .
+
+
+ Custom subclasses MUST implement this constructor
+ in order to register it using .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes the based on the provided media type and subtype.
+
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes the to the one provided.
+
+ The content type.
+
+ is null.
+
+
+
+
+ Tries to use the given object to initialize the appropriate property.
+
+
+ Initializes the appropriate property based on the type of the object.
+
+ The object.
+ true if the object was recognized and used; false otherwise.
+
+
+
+ Gets the list of headers.
+
+
+ Represents the list of headers for a MIME part. Typically, the headers of
+ a MIME part will be various Content-* headers such as Content-Type or
+ Content-Disposition, but may include just about anything.
+
+ The list of headers.
+
+
+
+ Gets or sets the content disposition.
+
+
+ Represents the pre-parsed Content-Disposition header value, if present.
+ If the Content-Disposition header is not set, then this property will
+ be null.
+
+ The content disposition.
+
+
+
+ Gets the type of the content.
+
+
+ The Content-Type header specifies information about the type of content contained
+ within the MIME entity.
+
+ The type of the content.
+
+
+
+ Gets or sets the base content URI.
+
+
+ The Content-Base header specifies the base URI for the
+ in cases where the is a relative URI.
+ The Content-Base URI must be an absolute URI.
+ For more information, see rfc2110.
+
+ The base content URI or null.
+
+ is not an absolute URI.
+
+
+
+
+ Gets or sets the content location.
+
+
+ The Content-Location header specifies the URI for a MIME entity and can be
+ either absolute or relative.
+ Setting a Content-Location URI allows other objects
+ within the same multipart/related container to reference this part by URI. This
+ can be useful, for example, when constructing an HTML message body that needs to
+ reference image attachments.
+ For more information, see rfc2110.
+
+ The content location or null.
+
+
+
+ Gets or sets the content identifier.
+
+
+ The Content-Id header is used for uniquely identifying a particular entity and
+ uses the same syntax as the Message-Id header on MIME messages.
+ Setting a Content-Id allows other objects within the same
+ multipart/related container to reference this part by its unique identifier, typically
+ by using a "cid:" URI in an HTML-formatted message body. This can be useful, for example,
+ when the HTML-formatted message body needs to reference image attachments.
+
+ The content identifier.
+
+
+
+ Gets a value indicating whether this is an attachment.
+
+
+ If the Content-Disposition header is set and has a value of "attachment",
+ then this property returns true. Otherwise it is assumed that the
+ is not meant to be treated as an attachment.
+
+ true if this is an attachment; otherwise, false.
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum allowable length for a line (not counting the CRLF). Must be between 72 and 998 (inclusive).
+
+ is not between 72 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the headers to the output stream, followed by a blank line.
+ Subclasses should override this method to write the content of the entity.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the headers to the output stream, followed by a blank line.
+ Subclasses should override this method to write the content of the entity.
+
+ The formatting options.
+ The output stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the entity to the output stream.
+
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the entity to the output stream.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the provided formatting options.
+
+ The formatting options.
+ The file.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the provided formatting options.
+
+ The formatting options.
+ The file.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the default formatting options.
+
+ The file.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the default formatting options.
+
+ The file.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Removes the header.
+
+
+ Removes all headers matching the specified name without
+ calling .
+
+ The name of the header.
+
+
+
+ Sets the header.
+
+
+ Sets the header to the specified value without
+ calling .
+
+ The name of the header.
+ The value of the header.
+
+
+
+ Sets the header using the raw value.
+
+
+ Sets the header to the specified value without
+ calling .
+
+ The name of the header.
+ The raw value of the header.
+
+
+
+ Called when the headers change in some way.
+
+
+ Whenever a header is added, changed, or removed, this method will
+ be called in order to allow custom subclasses
+ to update their state.
+ Overrides of this method should call the base method so that their
+ superclass may also update its own state.
+
+ The type of change.
+ The header being added, changed or removed.
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed MIME entity.
+ The parser options.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+
+ The parsed MIME entity.
+ The parser options.
+ The stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed MIME entity.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+
+ The parsed MIME entity.
+ The stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the specified .
+
+ The parsed entity.
+ The parser options.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the default .
+
+ The parsed entity.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified content stream.
+
+
+ This method is mostly meant for use with APIs such as
+ where the headers are parsed separately from the content.
+
+ The parsed MIME entity.
+ The parser options.
+ The Content-Type of the stream.
+ The content stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified content stream.
+
+
+ This method is mostly meant for use with APIs such as
+ where the headers are parsed separately from the content.
+
+ The parsed MIME entity.
+ The Content-Type of the stream.
+ The content stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ MIME entity constructor arguments.
+
+
+ MIME entity constructor arguments.
+
+
+
+
+ The format of the MIME stream.
+
+
+ The format of the MIME stream.
+
+
+
+
+ The stream contains a single MIME entity or message.
+
+
+
+
+ The stream is in the Unix mbox format and may contain
+ more than a single message.
+
+
+
+
+ The default stream format.
+
+
+
+
+ An iterator for a MIME tree structure.
+
+
+ Walks the MIME tree structure of a in depth-first order.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new for the specified message.
+
+ The message.
+
+ is null.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before
+ the is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before
+ the is reclaimed by garbage collection.
+
+
+
+
+ Gets the top-level message.
+
+
+ Gets the top-level message.
+
+ The message.
+
+
+
+ Gets the parent of the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Parent property;
+ otherwise, Parent throws a . Parent
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+ If the current entity is the top-level entity of the message, then the parent
+ will be null; otherwise the parent will be either be a
+ or a .
+
+ The parent entity.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Current property;
+ otherwise, Current throws a . Current
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+
+ The current entity.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Current property;
+ otherwise, Current throws a . Current
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+
+ The current entity.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the path specifier for the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the PathSpecifier property;
+ otherwise, PathSpecifier throws a .
+ PathSpecifier also throws a if the
+ last call to returned false, which indicates the end of
+ the message.
+
+ The path specifier.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the depth of the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Depth property;
+ otherwise, Depth throws a . Depth
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+
+ The depth.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Advances the iterator to the next depth-first entity of the tree structure.
+
+
+ After an iterator is created or after the method is called,
+ an iterator is positioned before the first entity of the message, and the first
+ call to the MoveNext method moves the iterator to the first entity of the message.
+ If MoveNext advances beyond the last entity of the message, MoveNext returns false.
+ When the iterator is at this position, subsequent calls to MoveNext also return
+ false until is called.
+
+ true if the iterator was successfully advanced to the next entity; otherwise, false.
+
+
+
+ Advances to the entity specified by the path specifier.
+
+
+ Advances the iterator to the entity specified by the path specifier which
+ must be in the same format as returned by .
+ If the iterator has already advanced beyond the entity at the specified
+ path, the iterator will and advance as normal.
+
+ true if advancing to the specified entity was successful; otherwise, false.
+ The path specifier.
+
+ is null.
+
+
+ is empty.
+
+
+ is in an invalid format.
+
+
+
+
+ Resets the iterator to its initial state.
+
+
+ Resets the iterator to its initial state.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resources used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After
+ calling , you must release all references to the so
+ the garbage collector can reclaim the memory that the was occupying.
+
+
+
+ A MIME message.
+
+
+ A message consists of header fields and, optionally, a body.
+ The body of the message can either be plain text or it can be a
+ tree of MIME entities such as a text/plain MIME part and a collection
+ of file attachments.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ An array of initialization parameters: headers and message parts.
+
+ is null.
+
+
+ contains more than one .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME message, specifying details at creation time.
+
+ The list of addresses in the From header.
+ The list of addresses in the To header.
+ The subject of the message.
+ The body of the message.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME message.
+
+
+
+
+ Gets or sets the mbox marker.
+
+
+ Set by the when parsing attached message/rfc822 parts
+ so that the message/rfc822 part can be reserialized back to its original form.
+
+ The mbox marker.
+
+
+
+ Gets the list of headers.
+
+
+ Represents the list of headers for a message. Typically, the headers of
+ a message will contain transmission headers such as From and To along
+ with metadata headers such as Subject and Date, but may include just
+ about anything.
+ To access any MIME headers other than
+ , you will need to access the
+ property of the .
+
+
+ The list of headers.
+
+
+
+ Get or set the value of the Importance header.
+
+
+ Gets or sets the value of the Importance header.
+
+ The importance.
+
+ is not a valid .
+
+
+
+
+ Get or set the value of the Priority header.
+
+
+ Gets or sets the value of the Priority header.
+
+ The priority.
+
+ is not a valid .
+
+
+
+
+ Gets or sets the address in the Sender header.
+
+
+ The sender may differ from the addresses in if
+ the message was sent by someone on behalf of someone else.
+
+ The address in the Sender header.
+
+
+
+ Gets or sets the address in the Resent-Sender header.
+
+
+ The resent sender may differ from the addresses in if
+ the message was sent by someone on behalf of someone else.
+
+ The address in the Resent-Sender header.
+
+
+
+ Gets the list of addresses in the From header.
+
+
+ The "From" header specifies the author(s) of the message.
+ If more than one is added to the
+ list of "From" addresses, the should be set to the
+ single of the personal actually sending
+ the message.
+
+ The list of addresses in the From header.
+
+
+
+ Gets the list of addresses in the Resent-From header.
+
+
+ The "Resent-From" header specifies the author(s) of the messagebeing
+ resent.
+ If more than one is added to the
+ list of "Resent-From" addresses, the should
+ be set to the single of the personal actually
+ sending the message.
+
+ The list of addresses in the Resent-From header.
+
+
+
+ Gets the list of addresses in the Reply-To header.
+
+
+ When the list of addresses in the Reply-To header is not empty,
+ it contains the address(es) where the author(s) of the message prefer
+ that replies be sent.
+ When the list of addresses in the Reply-To header is empty,
+ replies should be sent to the mailbox(es) specified in the From
+ header.
+
+ The list of addresses in the Reply-To header.
+
+
+
+ Gets the list of addresses in the Resent-Reply-To header.
+
+
+ When the list of addresses in the Resent-Reply-To header is not empty,
+ it contains the address(es) where the author(s) of the resent message prefer
+ that replies be sent.
+ When the list of addresses in the Resent-Reply-To header is empty,
+ replies should be sent to the mailbox(es) specified in the Resent-From
+ header.
+
+ The list of addresses in the Resent-Reply-To header.
+
+
+
+ Gets the list of addresses in the To header.
+
+
+ The addresses in the To header are the primary recipients of
+ the message.
+
+ The list of addresses in the To header.
+
+
+
+ Gets the list of addresses in the Resent-To header.
+
+
+ The addresses in the Resent-To header are the primary recipients of
+ the message.
+
+ The list of addresses in the Resent-To header.
+
+
+
+ Gets the list of addresses in the Cc header.
+
+
+ The addresses in the Cc header are secondary recipients of the message
+ and are usually not the individuals being directly addressed in the
+ content of the message.
+
+ The list of addresses in the Cc header.
+
+
+
+ Gets the list of addresses in the Resent-Cc header.
+
+
+ The addresses in the Resent-Cc header are secondary recipients of the message
+ and are usually not the individuals being directly addressed in the
+ content of the message.
+
+ The list of addresses in the Resent-Cc header.
+
+
+
+ Gets the list of addresses in the Bcc header.
+
+
+ Recipients in the Blind-Carpbon-Copy list will not be visible to
+ the other recipients of the message.
+
+ The list of addresses in the Bcc header.
+
+
+
+ Gets the list of addresses in the Resent-Bcc header.
+
+
+ Recipients in the Resent-Bcc list will not be visible to
+ the other recipients of the message.
+
+ The list of addresses in the Resent-Bcc header.
+
+
+
+ Gets or sets the subject of the message.
+
+
+ The Subject is typically a short string denoting the topic of the message.
+ Replies will often use "Re: " followed by the Subject of the original message.
+
+ The subject of the message.
+
+ is null.
+
+
+
+
+ Gets or sets the date of the message.
+
+
+ If the date is not explicitly set before the message is written to a stream,
+ the date will default to the exact moment when it is written to said stream.
+
+ The date of the message.
+
+
+
+ Gets or sets the Resent-Date of the message.
+
+
+ Gets or sets the Resent-Date of the message.
+
+ The Resent-Date of the message.
+
+
+
+ Gets or sets the list of references to other messages.
+
+
+ The References header contains a chain of Message-Ids back to the
+ original message that started the thread.
+
+ The references.
+
+
+
+ Gets or sets the Message-Id that this message is in reply to.
+
+
+ If the message is a reply to another message, it will typically
+ use the In-Reply-To header to specify the Message-Id of the
+ original message being replied to.
+
+ The message id that this message is in reply to.
+
+ is improperly formatted.
+
+
+
+
+ Gets or sets the message identifier.
+
+
+ The Message-Id is meant to be a globally unique identifier for
+ a message.
+ can be used
+ to generate this value.
+
+ The message identifier.
+
+ is null.
+
+
+ is improperly formatted.
+
+
+
+
+ Gets or sets the Resent-Message-Id header.
+
+
+ The Resent-Message-Id is meant to be a globally unique identifier for
+ a message.
+ can be used
+ to generate this value.
+
+ The Resent-Message-Id.
+
+ is null.
+
+
+ is improperly formatted.
+
+
+
+
+ Gets or sets the MIME-Version.
+
+
+ The MIME-Version header specifies the version of the MIME specification
+ that the message was created for.
+
+ The MIME version.
+
+ is null.
+
+
+
+
+ Gets or sets the body of the message.
+
+
+ The body of the message can either be plain text or it can be a
+ tree of MIME entities such as a text/plain MIME part and a collection
+ of file attachments.
+ For a convenient way of constructing message bodies, see the
+ class.
+
+ The body of the message.
+
+
+
+ Gets the text body of the message if it exists.
+
+
+ Gets the text content of the first text/plain body part that is found (in depth-first
+ search order) which is not an attachment.
+
+ The text body if it exists; otherwise, null.
+
+
+
+ Gets the html body of the message if it exists.
+
+
+ Gets the HTML-formatted body of the message if it exists.
+
+ The html body if it exists; otherwise, null.
+
+
+
+ Gets the text body in the specified format.
+
+
+ Gets the text body in the specified format, if it exists.
+
+ The text body in the desired format if it exists; otherwise, null.
+ The desired text format.
+
+
+
+ Gets the body parts of the message.
+
+
+ Traverses over the MIME tree, enumerating all of the objects,
+ but does not traverse into the bodies of attached messages.
+
+ The body parts.
+
+
+
+ Gets the attachments.
+
+
+ Traverses over the MIME tree, enumerating all of the objects that
+ have a Content-Disposition header set to "attachment".
+
+ The attachments.
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+ Note: In general, the string returned from this method SHOULD NOT be used for serializing
+ the message to disk. It is recommended that you use instead.
+
+ A that represents the current .
+
+
+
+ Dispatches to the specific visit method for this MIME message.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the message for transport using the specified encoding constraints.
+
+
+ Prepares the message for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum allowable length for a line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the message to the specified output stream.
+
+
+ Writes the message to the output stream using the provided formatting options.
+
+ The formatting options.
+ The output stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the message to the specified output stream.
+
+
+ Writes the message to the output stream using the default formatting options.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the message to the specified file.
+
+
+ Writes the message to the specified file using the provided formatting options.
+
+ The formatting options.
+ The file.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the message to the specified file.
+
+
+ Writes the message to the specified file using the default formatting options.
+
+ The file.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Digitally sign the message using a DomainKeys Identified Mail (DKIM) signature.
+
+
+ Digitally signs the message using a DomainKeys Identified Mail (DKIM) signature.
+
+ The formatting options.
+ The DKIM signer.
+ The list of header fields to sign.
+ The header canonicalization algorithm.
+ The body canonicalization algorithm.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ does not contain the 'From' header.
+ -or-
+ contains one or more of the following headers: Return-Path,
+ Received, Comments, Keywords, Bcc, Resent-Bcc, or DKIM-Signature.
+
+
+
+
+ Digitally sign the message using a DomainKeys Identified Mail (DKIM) signature.
+
+
+ Digitally signs the message using a DomainKeys Identified Mail (DKIM) signature.
+
+ The DKIM signer.
+ The headers to sign.
+ The header canonicalization algorithm.
+ The body canonicalization algorithm.
+
+ is null.
+ -or-
+ is null.
+
+
+ does not contain the 'From' header.
+ -or-
+ contains one or more of the following headers: Return-Path,
+ Received, Comments, Keywords, Bcc, Resent-Bcc, or DKIM-Signature.
+
+
+
+
+ Verify the specified DKIM-Signature header.
+
+
+ Verifies the specified DKIM-Signature header.
+
+ true if the DKIM-Signature is valid; otherwise, false.
+ The formatting options.
+ The DKIM-Signature header.
+ The public key locator service.
+ The cancellation token.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is not a DKIM-Signature header.
+
+
+ The DKIM-Signature header value is malformed.
+
+
+ The operation was canceled via the cancellation token.
+
+
+
+
+ Verify the specified DKIM-Signature header.
+
+
+ Verifies the specified DKIM-Signature header.
+
+ true if the DKIM-Signature is valid; otherwise, false.
+ The DKIM-Signature header.
+ The public key locator service.
+ The cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a DKIM-Signature header.
+
+
+ The DKIM-Signature header value is malformed.
+
+
+ The operation was canceled via the cancellation token.
+
+
+
+
+ Sign the message using the specified cryptography context and digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+
+ The cryptography context.
+ The digest algorithm.
+
+ is null.
+
+
+ The has not been set.
+ -or-
+ A sender has not been specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ A signing certificate could not be found for the sender.
+
+
+ The private key could not be found for the sender.
+
+
+
+
+ Sign the message using the specified cryptography context and the SHA-1 digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+
+ The cryptography context.
+
+ is null.
+
+
+ The has not been set.
+ -or-
+ A sender has not been specified.
+
+
+ A signing certificate could not be found for the sender.
+
+
+ The private key could not be found for the sender.
+
+
+
+
+ Encrypt the message to the sender and all of the recipients
+ using the specified cryptography context.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be encrypted to all of the addresses specified in the Resent headers
+ (Resent-Sender, Resent-From, Resent-To, Resent-Cc, and Resent-Bcc),
+ otherwise the message will be encrypted to all of the addresses specified in
+ the standard address headers (Sender, From, To, Cc, and Bcc).
+
+ The cryptography context.
+
+ is null.
+
+
+ An unknown type of cryptography context was used.
+
+
+ The has not been set.
+ -or-
+ No recipients have been specified.
+
+
+ A certificate could not be found for one or more of the recipients.
+
+
+ The public key could not be found for one or more of the recipients.
+
+
+
+
+ Sign and encrypt the message to the sender and all of the recipients using
+ the specified cryptography context and the specified digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+ Likewise, if either of the Resent-Sender or Resent-From headers are set, then the
+ message will be encrypted to all of the addresses specified in the Resent headers
+ (Resent-Sender, Resent-From, Resent-To, Resent-Cc, and Resent-Bcc),
+ otherwise the message will be encrypted to all of the addresses specified in
+ the standard address headers (Sender, From, To, Cc, and Bcc).
+
+ The cryptography context.
+ The digest algorithm.
+
+ is null.
+
+
+ An unknown type of cryptography context was used.
+
+
+ The was out of range.
+
+
+ The has not been set.
+ -or-
+ The sender has been specified.
+ -or-
+ No recipients have been specified.
+
+
+ The is not supported.
+
+
+ A certificate could not be found for the signer or one or more of the recipients.
+
+
+ The private key could not be found for the sender.
+
+
+ The public key could not be found for one or more of the recipients.
+
+
+
+
+ Sign and encrypt the message to the sender and all of the recipients using
+ the specified cryptography context and the SHA-1 digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+ Likewise, if either of the Resent-Sender or Resent-From headers are set, then the
+ message will be encrypted to all of the addresses specified in the Resent headers
+ (Resent-Sender, Resent-From, Resent-To, Resent-Cc, and Resent-Bcc),
+ otherwise the message will be encrypted to all of the addresses specified in
+ the standard address headers (Sender, From, To, Cc, and Bcc).
+
+ The cryptography context.
+
+ is null.
+
+
+ An unknown type of cryptography context was used.
+
+
+ The has not been set.
+ -or-
+ The sender has been specified.
+ -or-
+ No recipients have been specified.
+
+
+ A certificate could not be found for the signer or one or more of the recipients.
+
+
+ The private key could not be found for the sender.
+
+
+ The public key could not be found for one or more of the recipients.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed message.
+ The parser options.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+
+ The parsed message.
+ The parser options.
+ The stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed message.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+
+ The parsed message.
+ The stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the given path, using the
+ specified .
+
+ The parsed message.
+ The parser options.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the given path, using the
+ default .
+
+ The parsed message.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Creates a new from a .
+
+
+ Creates a new from a .
+
+ The equivalent .
+ The message.
+
+ is null.
+
+
+
+
+ Explicit cast to convert a to a
+ .
+
+
+ Allows creation of messages using Microsoft's System.Net.Mail APIs.
+
+ The equivalent .
+ The message.
+
+
+
+ A MIME message and entity parser.
+
+
+ A MIME parser is used to parse and
+ objects from arbitrary streams.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets a value indicating whether the parser has reached the end of the input stream.
+
+
+ Gets a value indicating whether the parser has reached the end of the input stream.
+
+ true if this parser has reached the end of the input stream;
+ otherwise, false.
+
+
+
+ Gets the current position of the parser within the stream.
+
+
+ Gets the current position of the parser within the stream.
+
+ The stream offset.
+
+
+
+ Gets the most recent mbox marker offset.
+
+
+ Gets the most recent mbox marker offset.
+
+ The mbox marker offset.
+
+
+
+ Gets the most recent mbox marker.
+
+
+ Gets the most recent mbox marker.
+
+ The mbox marker.
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Parses a list of headers from the stream.
+
+
+ Parses a list of headers from the stream.
+
+ The parsed list of headers.
+ A cancellation token.
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Parses an entity from the stream.
+
+
+ Parses an entity from the stream.
+
+ The parsed entity.
+ A cancellation token.
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Parses a message from the stream.
+
+
+ Parses a message from the stream.
+
+ The parsed message.
+ A cancellation token.
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the message.
+
+
+ An I/O error occurred.
+
+
+
+
+ Enumerates the messages in the stream.
+
+
+ This is mostly useful when parsing mbox-formatted streams.
+
+ The enumerator.
+
+
+
+ Enumerates the messages in the stream.
+
+
+ This is mostly useful when parsing mbox-formatted streams.
+
+ The enumerator.
+
+
+
+ A leaf-node MIME part that contains content such as the message body text or an attachment.
+
+
+ A leaf-node MIME part that contains content such as the message body text or an attachment.
+
+
+
+
+ Initializes a new instance of the class
+ based on the .
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified media type and subtype.
+
+
+ Creates a new with the specified media type and subtype.
+
+ The media type.
+ The media subtype.
+ An array of initialization parameters: headers and part content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains more than one or
+ .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified media type and subtype.
+
+
+ Creates a new with the specified media type and subtype.
+
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified content type.
+
+
+ Creates a new with the specified Content-Type value.
+
+ The content type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified content type.
+
+
+ Creates a new with the specified Content-Type value.
+
+ The content type.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Initializes a new instance of the class
+ with the default Content-Type of application/octet-stream.
+
+
+ Creates a new with a Content-Type of application/octet-stream.
+
+
+
+
+ Gets or sets the duration of the content if available.
+
+
+ The Content-Duration header specifies duration of timed media,
+ such as audio or video, in seconds.
+
+ The duration of the content.
+
+ is negative.
+
+
+
+
+ Gets or sets the md5sum of the content.
+
+
+ The Content-MD5 header specifies the base64-encoded MD5 checksum of the content
+ in its canonical format.
+ For more information, see http://www.ietf.org/rfc/rfc1864.txt
+
+ The md5sum of the content.
+
+
+
+ Gets or sets the content transfer encoding.
+
+
+ The Content-Transfer-Encoding header specifies an auxiliary encoding
+ that was applied to the content in order to allow it to pass through
+ mail transport mechanisms (such as SMTP) which may have limitations
+ in the byte ranges that it accepts. For example, many SMTP servers
+ do not accept data outside of the 7-bit ASCII range and so sending
+ binary attachments or even non-English text is not possible without
+ applying an encoding such as base64 or quoted-printable.
+
+ The content transfer encoding.
+
+
+
+ Gets or sets the name of the file.
+
+
+ First checks for the "filename" parameter on the Content-Disposition header. If
+ that does not exist, then the "name" parameter on the Content-Type header is used.
+ When setting the filename, both the "filename" parameter on the Content-Disposition
+ header and the "name" parameter on the Content-Type header are set.
+
+ The name of the file.
+
+
+
+ Gets or sets the MIME content.
+
+
+ Gets or sets the MIME content.
+
+ The MIME content.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Calculates the most efficient content encoding given the specified constraint.
+
+
+ If no is set, will be returned.
+
+ The most efficient content encoding.
+ The encoding constraint.
+ A cancellation token.
+
+ is not a valid value.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Calculates the most efficient content encoding given the specified constraint.
+
+
+ If no is set, will be returned.
+
+ The most efficient content encoding.
+ The encoding constraint.
+ The maximum allowable length for a line (not counting the CRLF). Must be between 72 and 998 (inclusive).
+ A cancellation token.
+
+ is not between 72 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Computes the MD5 checksum of the content.
+
+
+ Computes the MD5 checksum of the MIME content in its canonical
+ format and then base64-encodes the result.
+
+ The md5sum of the content.
+
+ The is null.
+
+
+
+
+ Verifies the Content-Md5 value against an independently computed md5sum.
+
+
+ Computes the MD5 checksum of the MIME content and compares it with the
+ value in the Content-MD5 header, returning true if and only if
+ the values match.
+
+ true, if content MD5 checksum was verified, false otherwise.
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the MIME part to the output stream.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Called when the headers change in some way.
+
+
+ Updates the , ,
+ and properties if the corresponding headers have changed.
+
+ The type of change.
+ The header being added, changed or removed.
+
+
+
+ A mapping of file name extensions to the corresponding MIME-type.
+
+
+ A mapping of file name extensions to the corresponding MIME-type.
+
+
+
+
+ Gets the MIME-type of the file.
+
+
+ Gets the MIME-type of the file based on the file extension.
+
+ The MIME-type.
+ The file name.
+
+ is null.
+
+
+
+
+ Represents a visitor for MIME trees.
+
+
+ This class is designed to be inherited to create more specialized classes whose
+ functionality requires traversing, examining or copying a MIME tree.
+
+
+
+
+
+
+
+ Dispatches the entity to one of the more specialized visit methods in this class.
+
+
+ Dispatches the entity to one of the more specialized visit methods in this class.
+
+ The MIME entity.
+
+
+
+ Dispatches the message to one of the more specialized visit methods in this class.
+
+
+ Dispatches the message to one of the more specialized visit methods in this class.
+
+ The MIME message.
+
+
+
+ Visit the application/pgp-encrypted MIME entity.
+
+
+ Visits the application/pgp-encrypted MIME entity.
+
+
+ The application/pgp-encrypted MIME entity.
+
+
+
+ Visit the application/pgp-signature MIME entity.
+
+
+ Visits the application/pgp-signature MIME entity.
+
+
+ The application/pgp-signature MIME entity.
+
+
+
+ Visit the application/pkcs7-mime MIME entity.
+
+
+ Visits the application/pkcs7-mime MIME entity.
+
+ The application/pkcs7-mime MIME entity.
+
+
+
+ Visit the application/pkcs7-signature MIME entity.
+
+
+ Visits the application/pkcs7-signature MIME entity.
+
+
+ The application/pkcs7-signature MIME entity.
+
+
+
+ Visit the message/disposition-notification MIME entity.
+
+
+ Visits the message/disposition-notification MIME entity.
+
+ The message/disposition-notification MIME entity.
+
+
+
+ Visit the message/delivery-status MIME entity.
+
+
+ Visits the message/delivery-status MIME entity.
+
+ The message/delivery-status MIME entity.
+
+
+
+ Visit the message contained within a message/rfc822 or message/news MIME entity.
+
+
+ Visits the message contained within a message/rfc822 or message/news MIME entity.
+
+ The message/rfc822 or message/news MIME entity.
+
+
+
+ Visit the message/rfc822 or message/news MIME entity.
+
+
+ Visits the message/rfc822 or message/news MIME entity.
+
+
+
+
+ The message/rfc822 or message/news MIME entity.
+
+
+
+ Visit the message/partial MIME entity.
+
+
+ Visits the message/partial MIME entity.
+
+ The message/partial MIME entity.
+
+
+
+ Visit the abstract MIME entity.
+
+
+ Visits the abstract MIME entity.
+
+ The MIME entity.
+
+
+
+ Visit the body of the message.
+
+
+ Visits the body of the message.
+
+ The message.
+
+
+
+ Visit the MIME message.
+
+
+ Visits the MIME message.
+
+ The MIME message.
+
+
+
+ Visit the abstract MIME part entity.
+
+
+ Visits the MIME part entity.
+
+
+
+
+ The MIME part entity.
+
+
+
+ Visit the children of a .
+
+
+ Visits the children of a .
+
+ Multipart.
+
+
+
+ Visit the abstract multipart MIME entity.
+
+
+ Visits the abstract multipart MIME entity.
+
+ The multipart MIME entity.
+
+
+
+ Visit the multipart/alternative MIME entity.
+
+
+ Visits the multipart/alternative MIME entity.
+
+
+
+
+ The multipart/alternative MIME entity.
+
+
+
+ Visit the multipart/encrypted MIME entity.
+
+
+ Visits the multipart/encrypted MIME entity.
+
+ The multipart/encrypted MIME entity.
+
+
+
+ Visit the multipart/related MIME entity.
+
+
+ Visits the multipart/related MIME entity.
+
+
+
+
+ The multipart/related MIME entity.
+
+
+
+ Visit the multipart/report MIME entity.
+
+
+ Visits the multipart/report MIME entity.
+
+
+
+
+ The multipart/report MIME entity.
+
+
+
+ Visit the multipart/signed MIME entity.
+
+
+ Visits the multipart/signed MIME entity.
+
+ The multipart/signed MIME entity.
+
+
+
+ Visit the text-based MIME part entity.
+
+
+ Visits the text-based MIME part entity.
+
+
+
+
+ The text-based MIME part entity.
+
+
+
+ Visit the Microsoft TNEF MIME part entity.
+
+
+ Visits the Microsoft TNEF MIME part entity.
+
+
+
+
+ The Microsoft TNEF MIME part entity.
+
+
+
+ A multipart MIME entity which may contain a collection of MIME entities.
+
+
+ All multipart MIME entities will have a Content-Type with a media type of "multipart".
+ The most common multipart MIME entity used in email is the "multipart/mixed" entity.
+ Four (4) initial subtypes were defined in the original MIME specifications: mixed, alternative,
+ digest, and parallel.
+ The "multipart/mixed" type is a sort of general-purpose container. When used in email, the
+ first entity is typically the "body" of the message while additional entities are most often
+ file attachments.
+ Speaking of message "bodies", the "multipart/alternative" type is used to offer a list of
+ alternative formats for the main body of the message (usually they will be "text/plain" and
+ "text/html"). These alternatives are in order of increasing faithfulness to the original document
+ (in other words, the last entity will be in a format that, when rendered, will most closely match
+ what the sending client's WYSISYG editor produced).
+ The "multipart/digest" type will typically contain a digest of MIME messages and is most
+ commonly used by mailing-list software.
+ The "multipart/parallel" type contains entities that are all meant to be shown (or heard)
+ in parallel.
+ Another commonly used type is the "multipart/related" type which contains, as one might expect,
+ inter-related MIME parts which typically reference each other via URIs based on the Content-Id and/or
+ Content-Location headers.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified subtype.
+
+ The multipart media sub-type.
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified subtype.
+
+ The multipart media sub-type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with a ContentType of multipart/mixed.
+
+
+
+
+ Gets or sets the boundary.
+
+
+ Gets or sets the boundary parameter on the Content-Type header.
+
+ The boundary.
+
+ is null.
+
+
+
+
+ Gets or sets the preamble.
+
+
+ A multipart preamble appears before the first child entity of the
+ multipart and is typically used only in the top-level multipart
+ of the message to specify that the message is in MIME format and
+ therefore requires a MIME compliant email application to render
+ it correctly.
+
+ The preamble.
+
+
+
+ Gets or sets the epilogue.
+
+
+ A multipart epiloque is the text that appears after the closing boundary
+ of the multipart and is typically either empty or a single new line
+ character sequence.
+
+ The epilogue.
+
+
+
+ Gets or sets whether the end boundary should be written.
+
+
+ Gets or sets whether the end boundary should be written.
+
+ true if the end boundary should be written; otherwise, false.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the multipart MIME entity and its subparts to the output stream.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Gets the number of parts in the multipart.
+
+
+ Indicates the number of parts in the multipart.
+
+ The number of parts in the multipart.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified part.
+
+
+ Adds the specified part to the multipart.
+
+ The part to add.
+
+ is null.
+
+
+
+
+ Clears the multipart.
+
+
+ Removes all of the parts within the multipart.
+
+
+
+
+ Checks if the contains the specified part.
+
+
+ Determines whether or not the multipart contains the specified part.
+
+ true if the specified part exists;
+ otherwise false.
+ The part to check for.
+
+ is null.
+
+
+
+
+ Copies all of the entities in the to the specified array.
+
+
+ Copies all of the entities within the into the array,
+ starting at the specified array index.
+
+ The array to copy the headers to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified part.
+
+
+ Removes the specified part, if it exists within the multipart.
+
+ true if the part was removed; otherwise false.
+ The part to remove.
+
+ is null.
+
+
+
+
+ Gets the index of the specified part.
+
+
+ Finds the index of the specified part, if it exists.
+
+ The index of the specified part if found; otherwise -1.
+ The part.
+
+ is null.
+
+
+
+
+ Inserts the part at the specified index.
+
+
+ Inserts the part into the multipart at the specified index.
+
+ The index.
+ The part.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the part at the specified index.
+
+
+ Removes the part at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The entity at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the enumerator for the children of the .
+
+
+ Gets the enumerator for the children of the .
+
+ The enumerator.
+
+
+
+ Gets the enumerator for the children of the .
+
+
+ Gets the enumerator for the children of the .
+
+ The enumerator.
+
+
+
+ A multipart/alternative MIME entity.
+
+
+ A multipart/alternative MIME entity contains, as one might expect, is used to offer a list of
+ alternative formats for the main body of the message (usually they will be "text/plain" and
+ "text/html"). These alternatives are in order of increasing faithfulness to the original document
+ (in other words, the last entity will be in a format that, when rendered, will most closely match
+ what the sending client's WYSISYG editor produced).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+
+
+
+ Get the text of the text/plain alternative.
+
+
+ Gets the text of the text/plain alternative, if it exists.
+
+ The text if a text/plain alternative exists; otherwise, null.
+
+
+
+ Get the HTML-formatted text of the text/html alternative.
+
+
+ Gets the HTML-formatted text of the text/html alternative, if it exists.
+
+ The HTML if a text/html alternative exists; otherwise, null.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Get the text body in the specified format.
+
+
+ Gets the text body in the specified format, if it exists.
+
+ The text body in the desired format if it exists; otherwise, null.
+ The desired text format.
+
+
+
+ A multipart/related MIME entity.
+
+
+ A multipart/related MIME entity contains, as one might expect, inter-related MIME parts which
+ typically reference each other via URIs based on the Content-Id and/or Content-Location headers.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+
+
+
+ Gets or sets the root document of the multipart/related part and the appropriate Content-Type parameters.
+
+
+ Gets or sets the root document that references the other MIME parts within the multipart/related.
+ When getting the root document, the "start" parameter of the Content-Type header is used to
+ determine which of the parts is the root. If the "start" parameter does not exist or does not reference
+ any of the child parts, then the first child is assumed to be the root.
+ When setting the root document MIME part, the Content-Type header of the multipart/related part is also
+ updated with a appropriate "start" and "type" parameters.
+
+ The root MIME part.
+
+ is null.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Checks if the contains a part matching the specified URI.
+
+
+ Determines whether or not the multipart/related entity contains a part matching the specified URI.
+
+ true if the specified part exists; otherwise false.
+ The URI of the MIME part.
+
+ is null.
+
+
+
+
+ Gets the index of the part matching the specified URI.
+
+
+ Finds the index of the part matching the specified URI, if it exists.
+ If the URI scheme is "cid", then matching is performed based on the Content-Id header
+ values, otherwise the Content-Location headers are used. If the provided URI is absolute and a child
+ part's Content-Location is relative, then then the child part's Content-Location URI will be combined
+ with the value of its Content-Base header, if available, otherwise it will be combined with the
+ multipart/related part's Content-Base header in order to produce an absolute URI that can be
+ compared with the provided absolute URI.
+
+ The index of the part matching the specified URI if found; otherwise -1.
+ The URI of the MIME part.
+
+ is null.
+
+
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+ A stream for reading the decoded content of the MIME part specified by the provided URI.
+ The URI.
+ The mime-type of the content.
+ The charset of the content (if the content is text-based)
+
+ is null.
+
+
+ The MIME part for the specified URI could not be found.
+
+
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+ A stream for reading the decoded content of the MIME part specified by the provided URI.
+ The URI.
+
+ is null.
+
+
+ The MIME part for the specified URI could not be found.
+
+
+
+
+ A multipart/report MIME entity.
+
+
+ A multipart/related MIME entity is a general container part for electronic mail
+ reports of any kind.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+ The type of the report.
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+
+ is null.
+
+
+
+
+ Gets or sets the type of the report.
+
+
+ Gets or sets the type of the report.
+ The report type should be the subtype of the second
+ of the multipart/report.
+
+ The type of the report.
+
+ is null.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A header parameter as found in the Content-Type and Content-Disposition headers.
+
+
+ Content-Type and Content-Disposition headers often have parameters that specify
+ further information about how to interpret the content.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter with the specified name and value.
+
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+ is not supported.
+
+
+
+
+ Gets the parameter name.
+
+
+ Gets the parameter name.
+
+ The parameter name.
+
+
+
+ Gets or sets the parameter value character encoding.
+
+
+ Gets or sets the parameter value character encoding.
+
+ The character encoding.
+
+
+
+ Gets or sets the parameter encoding method to use.
+
+
+ Gets or sets the parameter encoding method to use.
+ The MIME specifications specify that the proper method for encoding Content-Type
+ and Content-Disposition parameter values is the method described in
+ rfc2231. However, it is common for
+ some older email clients to improperly encode using the method described in
+ rfc2047 instead.
+ If set to , the encoding
+ method used will default to the value set on the .
+
+ The encoding method.
+
+ is not a valid value.
+
+
+
+
+ Gets or sets the parameter value.
+
+
+ Gets or sets the parameter value.
+
+ The parameter value.
+
+ is null.
+
+
+
+
+ Returns a string representation of the .
+
+
+ Formats the parameter name and value in the form name="value".
+
+ A string representation of the .
+
+
+
+ The method to use for encoding Content-Type and Content-Disposition parameter values.
+
+
+ The MIME specifications specify that the proper method for encoding Content-Type and
+ Content-Disposition parameter values is the method described in
+ rfc2231. However, it is common for
+ some older email clients to improperly encode using the method described in
+ rfc2047 instead.
+
+
+
+
+ Use the default encoding method set on the .
+
+
+
+
+ Use the encoding method described in rfc2231.
+
+
+
+
+ Use the encoding method described in rfc2047 (for compatibility with older,
+ non-rfc-compliant email clients).
+
+
+
+
+ A list of parameters, as found in the Content-Type and Content-Disposition headers.
+
+
+ Parameters are used by both and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter list.
+
+
+
+
+ Adds a parameter with the specified name and value.
+
+
+ Adds a new parameter to the list with the specified name and value.
+
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Adds a parameter with the specified name and value.
+
+
+ Adds a new parameter to the list with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+
+
+ Adds a parameter with the specified name and value.
+
+
+ Adds a new parameter to the list with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be empty.
+ -or-
+ contains illegal characters.
+
+
+ is not supported.
+
+
+
+
+ Checks if the contains a parameter with the specified name.
+
+
+ Determines whether or not the parameter list contains a parameter with the specified name.
+
+ true if the requested parameter exists;
+ otherwise false.
+ The parameter name.
+
+ is null.
+
+
+
+
+ Gets the index of the requested parameter, if it exists.
+
+
+ Finds the index of the parameter with the specified name, if it exists.
+
+ The index of the requested parameter; otherwise -1.
+ The parameter name.
+
+ is null.
+
+
+
+
+ Inserts a parameter with the specified name and value at the given index.
+
+
+ Inserts a new parameter with the given name and value at the specified index.
+
+ The index to insert the parameter.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified parameter.
+
+
+ Removes the parameter with the specified name from the list, if it exists.
+
+ true if the specified parameter was removed;
+ otherwise false.
+ The parameter name.
+
+ is null.
+
+
+
+
+ Gets or sets the value of a parameter with the specified name.
+
+
+ Gets or sets the value of a parameter with the specified name.
+
+ The value of the specified parameter if it exists; otherwise null.
+ The parameter name.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Gets the parameter with the specified name.
+
+
+ Gets the parameter with the specified name.
+
+ true if the parameter exists; otherwise, false.
+ The parameter name.
+ The parameter.
+
+ is null.
+
+
+
+
+ Gets the value of the parameter with the specified name.
+
+
+ Gets the value of the parameter with the specified name.
+
+ true if the parameter exists; otherwise, false.
+ The parameter name.
+ The parameter value.
+
+ is null.
+
+
+
+
+ Gets the number of parameters in the .
+
+
+ Indicates the number of parameters in the list.
+
+ The number of parameters.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified parameter.
+
+
+ Adds the specified parameter to the end of the list.
+
+ The parameter to add.
+
+ The is null.
+
+
+ A parameter with the same name as
+ already exists.
+
+
+
+
+ Clears the parameter list.
+
+
+ Removes all of the parameters from the list.
+
+
+
+
+ Checks if the contains the specified parameter.
+
+
+ Determines whether or not the parameter list contains the specified parameter.
+
+ true if the specified parameter is contained;
+ otherwise false.
+ The parameter.
+
+ The is null.
+
+
+
+
+ Copies all of the contained parameters to the specified array.
+
+
+ Copies all of the parameters within the into the array,
+ starting at the specified array index.
+
+ The array to copy the parameters to.
+ The index into the array.
+
+
+
+ Removes the specified parameter.
+
+
+ Removes the specified parameter from the list.
+
+ true if the specified parameter was removed;
+ otherwise false.
+ The parameter.
+
+ The is null.
+
+
+
+
+ Gets the index of the requested parameter, if it exists.
+
+
+ Finds the index of the specified parameter, if it exists.
+
+ The index of the requested parameter; otherwise -1.
+ The parameter.
+
+ The is null.
+
+
+
+
+ Inserts the specified parameter at the given index.
+
+
+ Inserts the parameter at the specified index in the list.
+
+ The index to insert the parameter.
+ The parameter.
+
+ The is null.
+
+
+ The is out of range.
+
+
+ A parameter with the same name as
+ already exists.
+
+
+
+
+ Removes the parameter at the specified index.
+
+
+ Removes the parameter at the specified index.
+
+ The index.
+
+ The is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The parameter at the specified index.
+ The index.
+
+ The is null.
+
+
+ The is out of range.
+
+
+ A parameter with the same name as
+ already exists.
+
+
+
+
+ Gets an enumerator for the list of parameters.
+
+
+ Gets an enumerator for the list of parameters.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of parameters.
+
+
+ Gets an enumerator for the list of parameters.
+
+ The enumerator.
+
+
+
+ Returns a string representation of the parameters in the .
+
+
+ If there are multiple parameters in the list, they will be separated by a semicolon.
+
+ A string representing the .
+
+
+
+ A Parse exception as thrown by the various Parse methods in MimeKit.
+
+
+ A can be thrown by any of the Parse() methods
+ in MimeKit. Each exception instance will have a
+ which marks the byte offset of the token that failed to parse as well
+ as a which marks the byte offset where the error
+ occurred.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+ The byte offset of the token.
+ The byte offset of the error.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+ The byte offset of the token.
+ The byte offset of the error.
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the byte index of the token that was malformed.
+
+
+ The token index is the byte offset at which the token started.
+
+ The byte index of the token.
+
+
+
+ Gets the index of the byte that caused the error.
+
+
+ The error index is the byte offset at which the parser encountered an error.
+
+ The index of the byte that caused error.
+
+
+
+ Parser options as used by as well as various Parse and TryParse methods in MimeKit.
+
+
+ allows you to change and/or override default parsing options used by methods such
+ as and others.
+
+
+
+
+ The default parser options.
+
+
+ If a is not supplied to or other Parse and TryParse
+ methods throughout MimeKit, will be used.
+
+
+
+
+ Gets or sets the compliance mode that should be used when parsing rfc822 addresses.
+
+
+ In general, you'll probably want this value to be
+ (the default) as it allows maximum interoperability with existing (broken) mail clients
+ and other mail software such as sloppily written perl scripts (aka spambots).
+ Even in mode, the address
+ parser is fairly liberal in what it accepts. Setting it to
+ just makes it try harder to deal with garbage input.
+
+ The RFC compliance mode.
+
+
+
+ Gets or sets the compliance mode that should be used when parsing Content-Type and Content-Disposition parameters.
+
+
+ In general, you'll probably want this value to be
+ (the default) as it allows maximum interoperability with existing (broken) mail clients
+ and other mail software such as sloppily written perl scripts (aka spambots).
+ Even in mode, the parameter
+ parser is fairly liberal in what it accepts. Setting it to
+ just makes it try harder to deal with garbage input.
+
+ The RFC compliance mode.
+
+
+
+ Gets or sets the compliance mode that should be used when decoding rfc2047 encoded words.
+
+
+ In general, you'll probably want this value to be
+ (the default) as it allows maximum interoperability with existing (broken) mail clients
+ and other mail software such as sloppily written perl scripts (aka spambots).
+
+ The RFC compliance mode.
+
+
+
+ Gets or sets a value indicating whether the Content-Length value should be
+ respected when parsing mbox streams.
+
+
+ For more details about why this may be useful, you can find more information
+ at
+ http://www.jwz.org/doc/content-length.html.
+
+ true if the Content-Length value should be respected;
+ otherwise, false.
+
+
+
+ Gets or sets the charset encoding to use as a fallback for 8bit headers.
+
+
+ and
+
+ use this charset encoding as a fallback when decoding 8bit text into unicode. The first
+ charset encoding attempted is UTF-8, followed by this charset encoding, before finally
+ falling back to iso-8859-1.
+
+ The charset encoding.
+
+
+
+ Initializes a new instance of the class.
+
+
+ By default, new instances of enable rfc2047 work-arounds
+ (which are needed for maximum interoperability with mail software used in the wild)
+ and do not respect the Content-Length header value.
+
+
+
+
+ Clones an instance of .
+
+
+ Clones a set of options, allowing you to change a specific option
+ without requiring you to change the original.
+
+ An identical copy of the current instance.
+
+
+
+ Registers the subclass for the specified mime-type.
+
+ The MIME type.
+ A custom subclass of .
+
+ Your custom class should not subclass
+ directly, but rather it should subclass
+ , ,
+ , or one of their derivatives.
+
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a subclass of ,
+ , or .
+ -or-
+ does not have a constructor that takes
+ only a argument.
+
+
+
+
+ An RFC compliance mode.
+
+
+ An RFC compliance mode.
+
+
+
+
+ Attempt to be much more liberal accepting broken and/or invalid formatting.
+
+
+
+
+ Do not attempt to be overly liberal in accepting broken and/or invalid formatting.
+
+
+
+
+ A Textual MIME part.
+
+
+ Unless overridden, all textual parts parsed by the ,
+ such as text/plain or text/html, will be represented by a .
+ For more information about text media types, see section 4.1 of
+ rfc2046.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with the specified text subtype.
+
+
+ Creates a new with the specified subtype.
+
+ The media subtype.
+ An array of initialization parameters: headers, charset encoding and text.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains more than one .
+ -or-
+ contains more than one .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the
+ class with the specified text subtype.
+
+
+ Creates a new with the specified subtype.
+
+ The media subtype.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with a Content-Type of text/plain.
+
+
+ Creates a default with a mime-type of text/plain.
+
+
+
+
+ Gets whether or not this text part contains enriched text.
+
+
+ Checks whether or not the text part's Content-Type is text/enriched or its
+ predecessor, text/richtext (not to be confused with text/rtf).
+
+ true if the text is enriched; otherwise, false.
+
+
+
+ Gets whether or not this text part contains flowed text.
+
+
+ Checks whether or not the text part's Content-Type is text/plain and
+ has a format parameter with a value of flowed.
+
+ true if the text is flowed; otherwise, false.
+
+
+
+ Gets whether or not this text part contains HTML.
+
+
+ Checks whether or not the text part's Content-Type is text/html.
+
+ true if the text is html; otherwise, false.
+
+
+
+ Gets whether or not this text part contains plain text.
+
+
+ Checks whether or not the text part's Content-Type is text/plain.
+
+ true if the text is html; otherwise, false.
+
+
+
+ Gets whether or not this text part contains RTF.
+
+
+ Checks whether or not the text part's Content-Type is text/rtf.
+
+ true if the text is RTF; otherwise, false.
+
+
+
+ Gets the decoded text content.
+
+
+ If the charset parameter on the
+ is set, it will be used in order to convert the raw content into unicode.
+ If that fails or if the charset parameter is not set, iso-8859-1 will be
+ used instead.
+ For more control, use
+ or .
+
+ The text.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Determines whether or not the text is in the specified format.
+
+
+ Determines whether or not the text is in the specified format.
+
+ true if the text is in the specified format; otherwise, false.
+ The text format.
+
+
+
+ Gets the decoded text content using the provided charset encoding to
+ override the charset specified in the Content-Type parameters.
+
+
+ Uses the provided charset encoding to convert the raw text content
+ into a unicode string, overriding any charset specified in the
+ Content-Type header.
+
+ The decoded text.
+ The charset encoding to use.
+
+ is null.
+
+
+
+
+ Gets the decoded text content using the provided charset to override
+ the charset specified in the Content-Type parameters.
+
+
+ Uses the provided charset encoding to convert the raw text content
+ into a unicode string, overriding any charset specified in the
+ Content-Type header.
+
+ The decoded text.
+ The charset encoding to use.
+
+ is null.
+
+
+ The is not supported.
+
+
+
+
+ Sets the text content and the charset parameter in the Content-Type header.
+
+
+ This method is similar to setting the property,
+ but allows specifying a charset encoding to use. Also updates the
+ property.
+
+ The charset encoding.
+ The text content.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the text content and the charset parameter in the Content-Type header.
+
+
+ This method is similar to setting the property,
+ but allows specifying a charset encoding to use. Also updates the
+ property.
+
+ The charset encoding.
+ The text content.
+
+ is null.
+ -or-
+ is null.
+
+
+ The is not supported.
+
+
+
+
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.dll
index 363c4a43..36430a86 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.pdb
index 551d55c1..59be859b 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU4/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.dll
index d9cdfbc0..8693b419 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.pdb
index d3cc20bb..12678c1a 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU5/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.dll
index e5eeb669..70bc6415 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.pdb
index 046e8fc3..71981a71 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU6/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.dll
index fd1c1ba0..4a9f72b7 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.pdb
index 5dfb8a53..405217b7 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU7/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.dll
index 5d980dce..2aab1638 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.pdb
index f2e6aa56..388b65f3 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU8/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.dll
index bb391c39..9fa2c14d 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.pdb
index 859072e7..d06318a9 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013 SP1 CU9/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.dll
index eaecdbc7..d1622add 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.pdb
index d2717cff..78a14739 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2013/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/BouncyCastle.dll b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/BouncyCastle.dll
new file mode 100644
index 00000000..17e4744b
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/BouncyCastle.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/BouncyCastle.xml b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/BouncyCastle.xml
new file mode 100644
index 00000000..d27354a2
--- /dev/null
+++ b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/BouncyCastle.xml
@@ -0,0 +1,24206 @@
+
+
+
+ BouncyCastle
+
+
+
+ Base class for both the compress and decompress classes.
+ Holds common arrays, and static data.
+
+ @author Keiron Liddle
+
+
+ An input stream that decompresses from the BZip2 format (with the file
+ header chars) to be read as any other stream.
+
+ @author Keiron Liddle
+
+ NB: note this class has been modified to read the leading BZ from the
+ start of the BZIP2 stream to make it compatible with other PGP programs.
+
+
+ An output stream that compresses into the BZip2 format (with the file
+ header chars) into another stream.
+
+ @author Keiron Liddle
+
+ TODO: Update to BZip2 1.0.1
+ NB: note this class has been modified to add a leading BZ to the
+ start of the BZIP2 stream to make it compatible with other PGP programs.
+
+
+
+ modified by Oliver Merkel, 010128
+
+
+
+ A simple class the hold and calculate the CRC for sanity checking
+ of the data.
+
+ @author Keiron Liddle
+
+
+ Return the DER encoding of the object, null if the DER encoding can not be made.
+
+ @return a DER byte array, null otherwise.
+
+
+ a general purpose ASN.1 decoder - note: this class differs from the
+ others in that it returns null after it has read the last object in
+ the stream. If an ASN.1 Null is encountered a Der/BER Null object is
+ returned.
+
+
+ Create an ASN1InputStream where no DER object will be longer than limit.
+
+ @param input stream containing ASN.1 encoded data.
+ @param limit maximum size of a DER encoded object.
+
+
+ Create an ASN1InputStream based on the input byte array. The length of DER objects in
+ the stream is automatically limited to the length of the input array.
+
+ @param input array containing ASN.1 encoded data.
+
+
+ build an object given its tag and the number of bytes to construct it from.
+
+
+ A Null object.
+
+
+ Create a base ASN.1 object from a byte array.
+ The byte array to parse.
+ The base ASN.1 object represented by the byte array.
+ If there is a problem parsing the data.
+
+
+ Read a base ASN.1 object from a stream.
+ The stream to parse.
+ The base ASN.1 object represented by the byte array.
+ If there is a problem parsing the data.
+
+
+ return an Octet string from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return an Octet string from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ @param string the octets making up the octet string.
+
+
+ return an Asn1Sequence from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an ASN1 sequence from a tagged object. There is a special
+ case here, if an object appears to have been explicitly tagged on
+ reading but we were expecting it to be implicitly tagged in the
+ normal course of events it indicates that we lost the surrounding
+ sequence - so we need to add it back (this will happen if the tagged
+ object is a sequence that contains other sequences). If you are
+ dealing with implicitly tagged sequences you really should
+ be using this method.
+
+ @param obj the tagged object.
+ @param explicitly true if the object is meant to be explicitly tagged,
+ false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return the object at the sequence position indicated by index.
+
+ @param index the sequence number (starting at zero) of the object
+ @return the object at the sequence position indicated by index.
+
+
+ return an ASN1Set from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Return an ASN1 set from a tagged object. There is a special
+ case here, if an object appears to have been explicitly tagged on
+ reading but we were expecting it to be implicitly tagged in the
+ normal course of events it indicates that we lost the surrounding
+ set - so we need to add it back (this will happen if the tagged
+ object is a sequence that contains other sequences). If you are
+ dealing with implicitly tagged sets you really should
+ be using this method.
+
+ @param obj the tagged object.
+ @param explicitly true if the object is meant to be explicitly tagged
+ false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return the object at the set position indicated by index.
+
+ @param index the set number (starting at zero) of the object
+ @return the object at the set position indicated by index.
+
+
+ ASN.1 TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param explicitly true if the object is explicitly tagged.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ return whether or not the object may be explicitly tagged.
+
+ Note: if the object has been read from an input stream, the only
+ time you can be sure if isExplicit is returning the true state of
+ affairs is if it returns false. An implicitly tagged object may appear
+ to be explicitly tagged, so you need to understand the context under
+ which the reading was done as well, see GetObject below.
+
+
+ return whatever was following the tag.
+
+ Note: tagged objects are generally context dependent if you're
+ trying to extract a tagged object you should be going via the
+ appropriate GetInstance method.
+
+
+ Return the object held in this tagged object as a parser assuming it has
+ the type of the passed in tag. If the object doesn't have a parser
+ associated with it, the base object is returned.
+
+
+ A BER Null object.
+
+
+ convert a vector of octet strings into a single byte string
+
+
+ The octets making up the octet string.
+
+
+ return the DER octets that make up this string.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing a vector of objects.
+
+
+ create an empty sequence
+
+
+ create a set containing one object
+
+
+ create a set containing a vector of objects.
+
+
+ BER TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param explicitly true if an explicitly tagged object.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ create an implicitly tagged object that contains a zero
+ length sequence.
+
+
+ Class representing the DER-type External
+
+
+ Creates a new instance of DerExternal
+ See X.690 for more informations about the meaning of these parameters
+ @param directReference The direct reference or null
if not set.
+ @param indirectReference The indirect reference or null
if not set.
+ @param dataValueDescriptor The data value descriptor or null
if not set.
+ @param externalData The external data in its encoded form.
+
+
+ Creates a new instance of DerExternal.
+ See X.690 for more informations about the meaning of these parameters
+ @param directReference The direct reference or null
if not set.
+ @param indirectReference The indirect reference or null
if not set.
+ @param dataValueDescriptor The data value descriptor or null
if not set.
+ @param encoding The encoding to be used for the external data
+ @param externalData The external data
+
+
+ The encoding of the content. Valid values are
+
+ 0
single-ASN1-type
+ 1
OCTET STRING
+ 2
BIT STRING
+
+
+
+ Base class for an application specific object
+
+
+ Return the enclosed object assuming explicit tagging.
+
+ @return the resulting object
+ @throws IOException if reconstruction fails.
+
+
+ Return the enclosed object assuming implicit tagging.
+
+ @param derTagNo the type tag that should be applied to the object's contents.
+ @return the resulting object
+ @throws IOException if reconstruction fails.
+
+
+ Der BMPString object.
+
+
+ return a BMP string from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a BMP string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor
+
+
+ return a Bit string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Bit string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ @param data the octets making up the bit string.
+ @param padBits the number of extra bits at the end of the string.
+
+
+ Return the octets contained in this BIT STRING, checking that this BIT STRING really
+ does represent an octet aligned string. Only use this method when the standard you are
+ following dictates that the BIT STRING will be octet aligned.
+
+ @return a copy of the octet aligned data.
+
+
+ @return the value of the bit string as an int (truncating if necessary)
+
+
+ return a bool from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a DerBoolean from the passed in bool.
+
+
+ return a Boolean from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ return an integer from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Enumerated from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ Generalized time object.
+
+
+ return a generalized time from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Generalized Time object from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ The correct format for this is YYYYMMDDHHMMSS[.f]Z, or without the Z
+ for local time, or Z+-HHMM on the end, for difference between local
+ time and UTC time. The fractional second amount f must consist of at
+ least one number with trailing zeroes removed.
+
+ @param time the time string.
+ @exception ArgumentException if string is an illegal format.
+
+
+ base constructor from a local time object
+
+
+ Return the time.
+ @return The time string as it appeared in the encoded object.
+
+
+ return the time - always in the form of
+ YYYYMMDDhhmmssGMT(+hh:mm|-hh:mm).
+
+ Normally in a certificate we would expect "Z" rather than "GMT",
+ however adding the "GMT" means we can just use:
+
+ dateF = new SimpleDateFormat("yyyyMMddHHmmssz");
+
+ To read in the time and Get a date which is compatible with our local
+ time zone.
+
+
+ return a Graphic String from the passed in object
+
+ @param obj a DerGraphicString or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return a DerGraphicString instance, or null.
+
+
+ return a Graphic String 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 tagged object cannot
+ be converted.
+ @return a DerGraphicString instance, or null.
+
+
+ basic constructor - with bytes.
+ @param string the byte encoding of the characters making up the string.
+
+
+ Der IA5String object - this is an ascii string.
+
+
+ return a IA5 string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an IA5 string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - with bytes.
+
+
+ basic constructor - without validation.
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in an IA5String.
+
+
+ return true if the passed in String can be represented without
+ loss as an IA5String, false otherwise.
+
+ @return true if in printable set, false otherwise.
+
+
+ return an integer from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Integer from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ in some cases positive values Get crammed into a space,
+ that's not quite big enough...
+
+
+ A Null object.
+
+
+ Der NumericString object - this is an ascii string of characters {0,1,2,3,4,5,6,7,8,9, }.
+
+
+ return a Numeric string from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an Numeric string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - with bytes.
+
+
+ basic constructor - without validation..
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in a NumericString.
+
+
+ Return true if the string can be represented as a NumericString ('0'..'9', ' ')
+
+ @param str string to validate.
+ @return true if numeric, fale otherwise.
+
+
+ return an Oid from the passed in object
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an object Identifier from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ Return true if this oid is an extension of the passed in branch, stem.
+ @param stem the arc or branch that is a possible parent.
+ @return true if the branch is on the passed in stem, false otherwise.
+
+
+ The octets making up the octet string.
+
+
+ Der PrintableString object.
+
+
+ return a printable string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Printable string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor - this does not validate the string
+
+
+ Constructor with optional validation.
+
+ @param string the base string to wrap.
+ @param validate whether or not to check the string.
+ @throws ArgumentException if validate is true and the string
+ contains characters that should not be in a PrintableString.
+
+
+ return true if the passed in String can be represented without
+ loss as a PrintableString, false otherwise.
+
+ @return true if in printable set, false otherwise.
+
+
+ create an empty sequence
+
+
+ create a sequence containing one object
+
+
+ create a sequence containing a vector of objects.
+
+
+ A Der encoded set object
+
+
+ create an empty set
+
+
+ @param obj - a single object that makes up the set.
+
+
+ @param v - a vector of objects making up the set.
+
+
+ Der T61String (also the teletex string) - 8-bit characters
+
+
+ return a T61 string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an T61 string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - with bytes.
+
+
+ basic constructor - with string.
+
+
+ DER TaggedObject - in ASN.1 notation this is any object preceded by
+ a [n] where n is some number - these are assumed to follow the construction
+ rules (as with sequences).
+
+
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ @param explicitly true if an explicitly tagged object.
+ @param tagNo the tag number for this object.
+ @param obj the tagged object.
+
+
+ create an implicitly tagged object that contains a zero
+ length sequence.
+
+
+ UTC time object.
+
+
+ return an UTC Time from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an UTC Time from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ The correct format for this is YYMMDDHHMMSSZ (it used to be that seconds were
+ never encoded. When you're creating one of these objects from scratch, that's
+ what you want to use, otherwise we'll try to deal with whatever Gets read from
+ the input stream... (this is why the input format is different from the GetTime()
+ method output).
+
+ @param time the time string.
+
+
+ base constructor from a DateTime object
+
+
+ return the time as a date based on whatever a 2 digit year will return. For
+ standardised processing use ToAdjustedDateTime().
+
+ @return the resulting date
+ @exception ParseException if the date string cannot be parsed.
+
+
+ return the time as an adjusted date
+ in the range of 1950 - 2049.
+
+ @return a date in the range of 1950 to 2049.
+ @exception ParseException if the date string cannot be parsed.
+
+
+ return the time - always in the form of
+ YYMMDDhhmmssGMT(+hh:mm|-hh:mm).
+
+ Normally in a certificate we would expect "Z" rather than "GMT",
+ however adding the "GMT" means we can just use:
+
+ dateF = new SimpleDateFormat("yyMMddHHmmssz");
+
+ To read in the time and Get a date which is compatible with our local
+ time zone.
+
+ Note: In some cases, due to the local date processing, this
+ may lead to unexpected results. If you want to stick the normal
+ convention of 1950 to 2049 use the GetAdjustedTime() method.
+
+
+
+ Return a time string as an adjusted date with a 4 digit year.
+ This goes in the range of 1950 - 2049.
+
+
+
+ Der UTF8String object.
+
+
+ return an UTF8 string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return an UTF8 string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor
+
+
+ Der UniversalString object.
+
+
+ return a Universal string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Universal string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ return a Videotex String from the passed in object
+
+ @param obj a DERVideotexString or an object that can be converted into one.
+ @exception IllegalArgumentException if the object cannot be converted.
+ @return a DERVideotexString instance, or null.
+
+
+ return a Videotex String 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 tagged object cannot
+ be converted.
+ @return a DERVideotexString instance, or null.
+
+
+ basic constructor - with bytes.
+ @param string the byte encoding of the characters making up the string.
+
+
+ Der VisibleString object.
+
+
+ return a Visible string from the passed in object.
+
+ @exception ArgumentException if the object cannot be converted.
+
+
+ return a Visible string from a tagged object.
+
+ @param obj the tagged object holding the object we want
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the tagged object cannot
+ be converted.
+
+
+ basic constructor - byte encoded string.
+
+
+ basic constructor
+
+
+ Marker interface for CHOICE objects - if you implement this in a roll-your-own
+ object, any attempt to tag the object implicitly will convert the tag to an
+ explicit one as the encoding rules require.
+
+ If you use this interface your class should also implement the getInstance
+ pattern which takes a tag object and the tagging mode used.
+
+
+
+ basic interface for Der string objects.
+
+
+ class for breaking up an Oid into it's component tokens, ala
+ java.util.StringTokenizer. We need this class as some of the
+ lightweight Java environment don't support classes like
+ StringTokenizer.
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+
+ CAKeyUpdAnnContent ::= SEQUENCE {
+ oldWithNew CmpCertificate, -- old pub signed with new priv
+ newWithOld CmpCertificate, -- new pub signed with old priv
+ newWithNew CmpCertificate -- new pub signed with new priv
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertConfirmContent ::= SEQUENCE OF CertStatus
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertOrEncCert ::= CHOICE {
+ certificate [0] CMPCertificate,
+ encryptedCert [1] EncryptedValue
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertRepMessage ::= SEQUENCE {
+ caPubs [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
+ OPTIONAL,
+ response SEQUENCE OF CertResponse
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertResponse ::= SEQUENCE {
+ certReqId INTEGER,
+ -- to match this response with corresponding request (a value
+ -- of -1 is to be used if certReqId is not specified in the
+ -- corresponding request)
+ status PKIStatusInfo,
+ certifiedKeyPair CertifiedKeyPair OPTIONAL,
+ rspInfo OCTET STRING OPTIONAL
+ -- analogous to the id-regInfo-utf8Pairs string defined
+ -- for regInfo in CertReqMsg [CRMF]
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertStatus ::= SEQUENCE {
+ certHash OCTET STRING,
+ -- the hash of the certificate, using the same hash algorithm
+ -- as is used to create and verify the certificate signature
+ certReqId INTEGER,
+ -- to match this confirmation with the corresponding req/rep
+ statusInfo PKIStatusInfo OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertifiedKeyPair ::= SEQUENCE {
+ certOrEncCert CertOrEncCert,
+ privateKey [0] EncryptedValue OPTIONAL,
+ -- see [CRMF] for comment on encoding
+ publicationInfo [1] PKIPublicationInfo OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ Challenge ::= SEQUENCE {
+ owf AlgorithmIdentifier OPTIONAL,
+
+ -- MUST be present in the first Challenge; MAY be omitted in
+ -- any subsequent Challenge in POPODecKeyChallContent (if
+ -- omitted, then the owf used in the immediately preceding
+ -- Challenge is to be used).
+
+ witness OCTET STRING,
+ -- the result of applying the one-way function (owf) to a
+ -- randomly-generated INTEGER, A. [Note that a different
+ -- INTEGER MUST be used for each Challenge.]
+ challenge OCTET STRING
+ -- the encryption (under the public key for which the cert.
+ -- request is being made) of Rand, where Rand is specified as
+ -- Rand ::= SEQUENCE {
+ -- int INTEGER,
+ -- - the randomly-generated INTEGER A (above)
+ -- sender GeneralName
+ -- - the sender's name (as included in PKIHeader)
+ -- }
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Note: the addition of attribute certificates is a BC extension.
+
+
+
+ CMPCertificate ::= CHOICE {
+ x509v3PKCert Certificate
+ x509v2AttrCert [1] AttributeCertificate
+ }
+
+ Note: the addition of attribute certificates is a BC extension.
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CrlAnnContent ::= SEQUENCE OF CertificateList
+
+ @return a basic ASN.1 object representation.
+
+
+
+ ErrorMsgContent ::= SEQUENCE {
+ pKIStatusInfo PKIStatusInfo,
+ errorCode INTEGER OPTIONAL,
+ -- implementation-specific error codes
+ errorDetails PKIFreeText OPTIONAL
+ -- implementation-specific error details
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ GenMsgContent ::= SEQUENCE OF InfoTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+
+ GenRepContent ::= SEQUENCE OF InfoTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+ Example InfoTypeAndValue contents include, but are not limited
+ to, the following (un-comment in this ASN.1 module and use as
+ appropriate for a given environment):
+
+ id-it-caProtEncCert OBJECT IDENTIFIER ::= {id-it 1}
+ CAProtEncCertValue ::= CMPCertificate
+ id-it-signKeyPairTypes OBJECT IDENTIFIER ::= {id-it 2}
+ SignKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier
+ id-it-encKeyPairTypes OBJECT IDENTIFIER ::= {id-it 3}
+ EncKeyPairTypesValue ::= SEQUENCE OF AlgorithmIdentifier
+ id-it-preferredSymmAlg OBJECT IDENTIFIER ::= {id-it 4}
+ PreferredSymmAlgValue ::= AlgorithmIdentifier
+ id-it-caKeyUpdateInfo OBJECT IDENTIFIER ::= {id-it 5}
+ CAKeyUpdateInfoValue ::= CAKeyUpdAnnContent
+ id-it-currentCRL OBJECT IDENTIFIER ::= {id-it 6}
+ CurrentCRLValue ::= CertificateList
+ id-it-unsupportedOIDs OBJECT IDENTIFIER ::= {id-it 7}
+ UnsupportedOIDsValue ::= SEQUENCE OF OBJECT IDENTIFIER
+ id-it-keyPairParamReq OBJECT IDENTIFIER ::= {id-it 10}
+ KeyPairParamReqValue ::= OBJECT IDENTIFIER
+ id-it-keyPairParamRep OBJECT IDENTIFIER ::= {id-it 11}
+ KeyPairParamRepValue ::= AlgorithmIdentifer
+ id-it-revPassphrase OBJECT IDENTIFIER ::= {id-it 12}
+ RevPassphraseValue ::= EncryptedValue
+ id-it-implicitConfirm OBJECT IDENTIFIER ::= {id-it 13}
+ ImplicitConfirmValue ::= NULL
+ id-it-confirmWaitTime OBJECT IDENTIFIER ::= {id-it 14}
+ ConfirmWaitTimeValue ::= GeneralizedTime
+ id-it-origPKIMessage OBJECT IDENTIFIER ::= {id-it 15}
+ OrigPKIMessageValue ::= PKIMessages
+ id-it-suppLangTags OBJECT IDENTIFIER ::= {id-it 16}
+ SuppLangTagsValue ::= SEQUENCE OF UTF8String
+
+ where
+
+ id-pkix OBJECT IDENTIFIER ::= {
+ iso(1) identified-organization(3)
+ dod(6) internet(1) security(5) mechanisms(5) pkix(7)}
+ and
+ id-it OBJECT IDENTIFIER ::= {id-pkix 4}
+
+
+
+
+ InfoTypeAndValue ::= SEQUENCE {
+ infoType OBJECT IDENTIFIER,
+ infoValue ANY DEFINED BY infoType OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ KeyRecRepContent ::= SEQUENCE {
+ status PKIStatusInfo,
+ newSigCert [0] CMPCertificate OPTIONAL,
+ caCerts [1] SEQUENCE SIZE (1..MAX) OF
+ CMPCertificate OPTIONAL,
+ keyPairHist [2] SEQUENCE SIZE (1..MAX) OF
+ CertifiedKeyPair OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ OobCertHash ::= SEQUENCE {
+ hashAlg [0] AlgorithmIdentifier OPTIONAL,
+ certId [1] CertId OPTIONAL,
+ hashVal BIT STRING
+ -- hashVal is calculated over the Der encoding of the
+ -- self-signed certificate with the identifier certID.
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PkiBody.
+ @param type one of the TYPE_* constants
+ @param content message content
+
+
+
+ PkiBody ::= CHOICE { -- message-specific body elements
+ ir [0] CertReqMessages, --Initialization Request
+ ip [1] CertRepMessage, --Initialization Response
+ cr [2] CertReqMessages, --Certification Request
+ cp [3] CertRepMessage, --Certification Response
+ p10cr [4] CertificationRequest, --imported from [PKCS10]
+ popdecc [5] POPODecKeyChallContent, --pop Challenge
+ popdecr [6] POPODecKeyRespContent, --pop Response
+ kur [7] CertReqMessages, --Key Update Request
+ kup [8] CertRepMessage, --Key Update Response
+ krr [9] CertReqMessages, --Key Recovery Request
+ krp [10] KeyRecRepContent, --Key Recovery Response
+ rr [11] RevReqContent, --Revocation Request
+ rp [12] RevRepContent, --Revocation Response
+ ccr [13] CertReqMessages, --Cross-Cert. Request
+ ccp [14] CertRepMessage, --Cross-Cert. Response
+ ckuann [15] CAKeyUpdAnnContent, --CA Key Update Ann.
+ cann [16] CertAnnContent, --Certificate Ann.
+ rann [17] RevAnnContent, --Revocation Ann.
+ crlann [18] CRLAnnContent, --CRL Announcement
+ pkiconf [19] PKIConfirmContent, --Confirmation
+ nested [20] NestedMessageContent, --Nested Message
+ genm [21] GenMsgContent, --General Message
+ genp [22] GenRepContent, --General Response
+ error [23] ErrorMsgContent, --Error Message
+ certConf [24] CertConfirmContent, --Certificate confirm
+ pollReq [25] PollReqContent, --Polling request
+ pollRep [26] PollRepContent --Polling response
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiConfirmContent ::= NULL
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PKIFailureInfo ::= BIT STRING {
+ badAlg (0),
+ -- unrecognized or unsupported Algorithm Identifier
+ badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
+ badRequest (2),
+ -- transaction not permitted or supported
+ badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
+ badCertId (4), -- no certificate could be found matching the provided criteria
+ badDataFormat (5),
+ -- the data submitted has the wrong format
+ wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
+ incorrectData (7), -- the requester's data is incorrect (for notary services)
+ missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
+ badPOP (9) -- the proof-of-possession failed
+ certRevoked (10),
+ certConfirmed (11),
+ wrongIntegrity (12),
+ badRecipientNonce (13),
+ timeNotAvailable (14),
+ -- the TSA's time source is not available
+ unacceptedPolicy (15),
+ -- the requested TSA policy is not supported by the TSA
+ unacceptedExtension (16),
+ -- the requested extension is not supported by the TSA
+ addInfoNotAvailable (17)
+ -- the additional information requested could not be understood
+ -- or is not available
+ badSenderNonce (18),
+ badCertTemplate (19),
+ signerNotTrusted (20),
+ transactionIdInUse (21),
+ unsupportedVersion (22),
+ notAuthorized (23),
+ systemUnavail (24),
+ systemFailure (25),
+ -- the request cannot be handled due to system failure
+ duplicateCertReq (26)
+
+
+
+ Basic constructor.
+
+
+ Return the number of string elements present.
+
+ @return number of elements present.
+
+
+ Return the UTF8STRING at index.
+
+ @param index index of the string of interest
+ @return the string at index.
+
+
+
+ PkiFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String
+
+
+
+ Value for a "null" recipient or sender.
+
+
+
+ PkiHeader ::= SEQUENCE {
+ pvno INTEGER { cmp1999(1), cmp2000(2) },
+ sender GeneralName,
+ -- identifies the sender
+ recipient GeneralName,
+ -- identifies the intended recipient
+ messageTime [0] GeneralizedTime OPTIONAL,
+ -- time of production of this message (used when sender
+ -- believes that the transport will be "suitable"; i.e.,
+ -- that the time will still be meaningful upon receipt)
+ protectionAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used for calculation of protection bits
+ senderKID [2] KeyIdentifier OPTIONAL,
+ recipKID [3] KeyIdentifier OPTIONAL,
+ -- to identify specific keys used for protection
+ transactionID [4] OCTET STRING OPTIONAL,
+ -- identifies the transaction; i.e., this will be the same in
+ -- corresponding request, response, certConf, and PKIConf
+ -- messages
+ senderNonce [5] OCTET STRING OPTIONAL,
+ recipNonce [6] OCTET STRING OPTIONAL,
+ -- nonces used to provide replay protection, senderNonce
+ -- is inserted by the creator of this message; recipNonce
+ -- is a nonce previously inserted in a related message by
+ -- the intended recipient of this message
+ freeText [7] PKIFreeText OPTIONAL,
+ -- this may be used to indicate context-specific instructions
+ -- (this field is intended for human consumption)
+ generalInfo [8] SEQUENCE SIZE (1..MAX) OF
+ InfoTypeAndValue OPTIONAL
+ -- this may be used to convey context-specific information
+ -- (this field not primarily intended for human consumption)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PKIHeader ::= SEQUENCE {
+ pvno INTEGER { cmp1999(1), cmp2000(2) },
+ sender GeneralName,
+ -- identifies the sender
+ recipient GeneralName,
+ -- identifies the intended recipient
+ messageTime [0] GeneralizedTime OPTIONAL,
+ -- time of production of this message (used when sender
+ -- believes that the transport will be "suitable"; i.e.,
+ -- that the time will still be meaningful upon receipt)
+ protectionAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used for calculation of protection bits
+ senderKID [2] KeyIdentifier OPTIONAL,
+ recipKID [3] KeyIdentifier OPTIONAL,
+ -- to identify specific keys used for protection
+ transactionID [4] OCTET STRING OPTIONAL,
+ -- identifies the transaction; i.e., this will be the same in
+ -- corresponding request, response, certConf, and PKIConf
+ -- messages
+ senderNonce [5] OCTET STRING OPTIONAL,
+ recipNonce [6] OCTET STRING OPTIONAL,
+ -- nonces used to provide replay protection, senderNonce
+ -- is inserted by the creator of this message; recipNonce
+ -- is a nonce previously inserted in a related message by
+ -- the intended recipient of this message
+ freeText [7] PKIFreeText OPTIONAL,
+ -- this may be used to indicate context-specific instructions
+ -- (this field is intended for human consumption)
+ generalInfo [8] SEQUENCE SIZE (1..MAX) OF
+ InfoTypeAndValue OPTIONAL
+ -- this may be used to convey context-specific information
+ -- (this field not primarily intended for human consumption)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PkiMessage.
+
+ @param header message header
+ @param body message body
+ @param protection message protection (may be null)
+ @param extraCerts extra certificates (may be null)
+
+
+
+ PkiMessage ::= SEQUENCE {
+ header PKIHeader,
+ body PKIBody,
+ protection [0] PKIProtection OPTIONAL,
+ extraCerts [1] SEQUENCE SIZE (1..MAX) OF CMPCertificate
+ OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiMessages ::= SEQUENCE SIZE (1..MAX) OF PkiMessage
+
+ @return a basic ASN.1 object representation.
+
+
+ @param status
+
+
+ @param status
+ @param statusString
+
+
+
+ PkiStatusInfo ::= SEQUENCE {
+ status PKIStatus, (INTEGER)
+ statusString PkiFreeText OPTIONAL,
+ failInfo PkiFailureInfo OPTIONAL (BIT STRING)
+ }
+
+ PKIStatus:
+ granted (0), -- you got exactly what you asked for
+ grantedWithMods (1), -- you got something like what you asked for
+ rejection (2), -- you don't get it, more information elsewhere in the message
+ waiting (3), -- the request body part has not yet been processed, expect to hear more later
+ revocationWarning (4), -- this message contains a warning that a revocation is imminent
+ revocationNotification (5), -- notification that a revocation has occurred
+ keyUpdateWarning (6) -- update already done for the oldCertId specified in CertReqMsg
+
+ PkiFailureInfo:
+ badAlg (0), -- unrecognized or unsupported Algorithm Identifier
+ badMessageCheck (1), -- integrity check failed (e.g., signature did not verify)
+ badRequest (2), -- transaction not permitted or supported
+ badTime (3), -- messageTime was not sufficiently close to the system time, as defined by local policy
+ badCertId (4), -- no certificate could be found matching the provided criteria
+ badDataFormat (5), -- the data submitted has the wrong format
+ wrongAuthority (6), -- the authority indicated in the request is different from the one creating the response token
+ incorrectData (7), -- the requester's data is incorrect (for notary services)
+ missingTimeStamp (8), -- when the timestamp is missing but should be there (by policy)
+ badPOP (9) -- the proof-of-possession failed
+
+
+
+
+
+ PbmParameter ::= SEQUENCE {
+ salt OCTET STRING,
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this string to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ owf AlgorithmIdentifier,
+ -- AlgId for a One-Way Function (SHA-1 recommended)
+ iterationCount INTEGER,
+ -- number of times the OWF is applied
+ -- note: implementations MAY wish to limit acceptable sizes
+ -- of this integer to values appropriate for their environment
+ -- in order to reduce the risk of denial-of-service attacks
+ mac AlgorithmIdentifier
+ -- the MAC AlgId (e.g., DES-MAC, Triple-DES-MAC [PKCS11],
+ } -- or HMAC [RFC2104, RFC2202])
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PollRepContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER,
+ checkAfter INTEGER, -- time in seconds
+ reason PKIFreeText OPTIONAL
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PollReqContent ::= SEQUENCE OF SEQUENCE {
+ certReqId INTEGER
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoDecKeyChallContent ::= SEQUENCE OF Challenge
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoDecKeyRespContent ::= SEQUENCE OF INTEGER
+
+ @return a basic ASN.1 object representation.
+
+
+
+ ProtectedPart ::= SEQUENCE {
+ header PKIHeader,
+ body PKIBody
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevAnnContent ::= SEQUENCE {
+ status PKIStatus,
+ certId CertId,
+ willBeRevokedAt GeneralizedTime,
+ badSinceDate GeneralizedTime,
+ crlDetails Extensions OPTIONAL
+ -- extra CRL details (e.g., crl number, reason, location, etc.)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevDetails ::= SEQUENCE {
+ certDetails CertTemplate,
+ -- allows requester to specify as much as they can about
+ -- the cert. for which revocation is requested
+ -- (e.g., for cases in which serialNumber is not available)
+ crlEntryDetails Extensions OPTIONAL
+ -- requested crlEntryExtensions
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevRepContent ::= SEQUENCE {
+ status SEQUENCE SIZE (1..MAX) OF PKIStatusInfo,
+ -- in same order as was sent in RevReqContent
+ revCerts [0] SEQUENCE SIZE (1..MAX) OF CertId OPTIONAL,
+ -- IDs for which revocation was requested
+ -- (same order as status)
+ crls [1] SEQUENCE SIZE (1..MAX) OF CertificateList OPTIONAL
+ -- the resulting CRLs (there may be more than one)
+ }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ RevReqContent ::= SEQUENCE OF RevDetails
+
+ @return a basic ASN.1 object representation.
+
+
+ return an Attribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attribute ::= SEQUENCE {
+ attrType OBJECT IDENTIFIER,
+ attrValues SET OF AttributeValue
+ }
+
+
+
+ Return the first attribute matching the given OBJECT IDENTIFIER
+
+
+ Return all the attributes matching the OBJECT IDENTIFIER oid. The vector will be
+ empty if there are no attributes of the required type present.
+
+ @param oid type of attribute required.
+ @return a vector of all the attributes found of type oid.
+
+
+ Return a new table with the passed in attribute added.
+
+ @param attrType
+ @param attrValue
+ @return
+
+
+
+ Attributes ::=
+ SET SIZE(1..MAX) OF Attribute -- according to RFC 5652
+
+ @return
+
+
+ return an AuthEnvelopedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @throws ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an AuthEnvelopedData object from the given object.
+
+ @param obj the object we want converted.
+ @throws ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthEnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ authEncryptedContentInfo EncryptedContentInfo,
+ authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+ AuthEnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ authEncryptedContentInfo EncryptedContentInfo,
+ authAttrs [1] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [2] IMPLICIT UnauthAttributes OPTIONAL }
+
+
+
+ return an AuthenticatedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @throws ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an AuthenticatedData object from the given object.
+
+ @param obj the object we want converted.
+ @throws ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthenticatedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithm,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ encapContentInfo EncapsulatedContentInfo,
+ authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
+
+ AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ MessageAuthenticationCode ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AuthenticatedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ macAlgorithm MessageAuthenticationCodeAlgorithm,
+ digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL,
+ encapContentInfo EncapsulatedContentInfo,
+ authAttrs [2] IMPLICIT AuthAttributes OPTIONAL,
+ mac MessageAuthenticationCode,
+ unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL }
+
+ AuthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ UnauthAttributes ::= SET SIZE (1..MAX) OF Attribute
+
+ MessageAuthenticationCode ::= OCTET STRING
+
+
+
+ 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) }
+
+
+ RFC 3274 - CMS Compressed Data.
+
+ CompressedData ::= Sequence {
+ version CMSVersion,
+ compressionAlgorithm CompressionAlgorithmIdentifier,
+ encapContentInfo EncapsulatedContentInfo
+ }
+
+
+
+ return a CompressedData object from a tagged object.
+
+ @param ato the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a CompressedData object from the given object.
+
+ @param _obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ RFC 3274 - CMS Compressed Data.
+
+ CompressedData ::= SEQUENCE {
+ version CMSVersion,
+ compressionAlgorithm CompressionAlgorithmIdentifier,
+ encapContentInfo EncapsulatedContentInfo
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= Sequence {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ return an EncryptedContentInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EncryptedContentInfo ::= Sequence {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+
+
+
+ EncryptedContentInfo ::= SEQUENCE {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+
+
+
+ EncryptedData ::= SEQUENCE {
+ version CMSVersion,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ return an EnvelopedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an EnvelopedData object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EnvelopedData ::= Sequence {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EnvelopedData ::= SEQUENCE {
+ version CMSVersion,
+ originatorInfo [0] IMPLICIT OriginatorInfo OPTIONAL,
+ recipientInfos RecipientInfos,
+ encryptedContentInfo EncryptedContentInfo,
+ unprotectedAttrs [1] IMPLICIT UnprotectedAttributes OPTIONAL
+ }
+
+
+
+ return a KekIdentifier object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a KekIdentifier object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KekIdentifier ::= Sequence {
+ keyIdentifier OCTET STRING,
+ date GeneralizedTime OPTIONAL,
+ other OtherKeyAttribute OPTIONAL
+ }
+
+
+
+ return a KekRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a KekRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KekRecipientInfo ::= Sequence {
+ version CMSVersion, -- always set to 4
+ kekID KekIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+ return an KeyAgreeRecipientIdentifier object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an KeyAgreeRecipientIdentifier object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeyAgreeRecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ rKeyId [0] IMPLICIT RecipientKeyIdentifier
+ }
+
+
+
+ return a KeyAgreeRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a KeyAgreeRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ * Produce an object suitable for an Asn1OutputStream.
+ *
+ * KeyAgreeRecipientInfo ::= Sequence {
+ * version CMSVersion, -- always set to 3
+ * originator [0] EXPLICIT OriginatorIdentifierOrKey,
+ * ukm [1] EXPLICIT UserKeyingMaterial OPTIONAL,
+ * keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ * recipientEncryptedKeys RecipientEncryptedKeys
+ * }
+ *
+ * UserKeyingMaterial ::= OCTET STRING
+ *
+
+
+ return a KeyTransRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeyTransRecipientInfo ::= Sequence {
+ version CMSVersion, -- always set to 0 or 2
+ rid RecipientIdentifier,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+
+ MetaData ::= SEQUENCE {
+ hashProtected BOOLEAN,
+ fileName UTF8String OPTIONAL,
+ mediaType IA5String OPTIONAL,
+ otherMetaData Attributes OPTIONAL
+ }
+
+ @return
+
+
+ return an OriginatorIdentifierOrKey object from a tagged object.
+
+ @param o the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an OriginatorIdentifierOrKey object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorIdentifierOrKey ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier,
+ originatorKey [1] OriginatorPublicKey
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ return an OriginatorInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an OriginatorInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorInfo ::= Sequence {
+ certs [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL
+ }
+
+
+
+ return an OriginatorPublicKey object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an OriginatorPublicKey object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OriginatorPublicKey ::= Sequence {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING
+ }
+
+
+
+ return an OtherKeyAttribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherKeyAttribute ::= Sequence {
+ keyAttrId OBJECT IDENTIFIER,
+ keyAttr ANY DEFINED BY keyAttrId OPTIONAL
+ }
+
+
+
+ return a OtherRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a OtherRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherRecipientInfo ::= Sequence {
+ oriType OBJECT IDENTIFIER,
+ oriValue ANY DEFINED BY oriType }
+
+
+
+ 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.
+
+
+ return a OtherRevocationInfoFormat object from the given object.
+
+ @param obj the object we want converted.
+ @exception IllegalArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an ASN1OutputStream.
+
+ OtherRevocationInfoFormat ::= SEQUENCE {
+ otherRevInfoFormat OBJECT IDENTIFIER,
+ otherRevInfo ANY DEFINED BY otherRevInfoFormat }
+
+
+
+ return a PasswordRecipientInfo object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param explicitly true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a PasswordRecipientInfo object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ PasswordRecipientInfo ::= Sequence {
+ version CMSVersion, -- Always set to 0
+ keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier
+ OPTIONAL,
+ keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
+ encryptedKey EncryptedKey }
+
+
+
+ return an RecipientEncryptedKey object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a RecipientEncryptedKey object from the given object.
+
+ @param obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientEncryptedKey ::= SEQUENCE {
+ rid KeyAgreeRecipientIdentifier,
+ encryptedKey EncryptedKey
+ }
+
+
+
+ return a RecipientIdentifier object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientInfo ::= CHOICE {
+ ktri KeyTransRecipientInfo,
+ kari [1] KeyAgreeRecipientInfo,
+ kekri [2] KekRecipientInfo,
+ pwri [3] PasswordRecipientInfo,
+ ori [4] OtherRecipientInfo }
+
+
+
+ return a RecipientKeyIdentifier object from a tagged object.
+
+ @param _ato the tagged object holding the object we want.
+ @param _explicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @exception ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return a RecipientKeyIdentifier object from the given object.
+
+ @param _obj the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RecipientKeyIdentifier ::= Sequence {
+ subjectKeyIdentifier SubjectKeyIdentifier,
+ date GeneralizedTime OPTIONAL,
+ other OtherKeyAttribute OPTIONAL
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+
+ ScvpReqRes ::= SEQUENCE {
+ request [0] EXPLICIT ContentInfo OPTIONAL,
+ response ContentInfo }
+
+ @return the ASN.1 primitive representation.
+
+
+ a signed data object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignedData ::= Sequence {
+ version CMSVersion,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encapContentInfo EncapsulatedContentInfo,
+ certificates [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+ }
+
+
+
+
+ SignedData ::= SEQUENCE {
+ version CMSVersion,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ encapContentInfo EncapsulatedContentInfo,
+ certificates [0] IMPLICIT CertificateSet OPTIONAL,
+ crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos
+ }
+
+
+
+ return a SignerIdentifier object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerIdentifier ::= CHOICE {
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ subjectKeyIdentifier [0] SubjectKeyIdentifier
+ }
+
+ SubjectKeyIdentifier ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerInfo ::= Sequence {
+ version Version,
+ SignerIdentifier sid,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
+ }
+
+ EncryptedDigest ::= OCTET STRING
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+ DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+
+
+ creates a time object from a given date - if the date is between 1950
+ and 2049 a UTCTime object is Generated, otherwise a GeneralizedTime
+ is used.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Time ::= CHOICE {
+ utcTime UTCTime,
+ generalTime GeneralizedTime }
+
+
+
+
+ TimeStampAndCRL ::= SEQUENCE {
+ timeStamp TimeStampToken, -- according to RFC 3161
+ crl CertificateList OPTIONAL -- according to RFC 5280
+ }
+
+ @return
+
+
+
+ TimeStampTokenEvidence ::=
+ SEQUENCE SIZE(1..MAX) OF TimeStampAndCrl
+
+ @return
+
+
+
+ TimeStampedData ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ dataUri IA5String OPTIONAL,
+ metaData MetaData OPTIONAL,
+ content OCTET STRING OPTIONAL,
+ temporalEvidence Evidence
+ }
+
+ @return
+
+
+ return an AuthEnvelopedData object from a tagged object.
+
+ @param obj the tagged object holding the object we want.
+ @param isExplicit true if the object is meant to be explicitly
+ tagged false otherwise.
+ @throws ArgumentException if the object held by the
+ tagged object cannot be converted.
+
+
+ return an AuthEnvelopedData object from the given object.
+
+ @param obj the object we want converted.
+ @throws ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ MQVuserKeyingMaterial ::= SEQUENCE {
+ ephemeralPublicKey OriginatorPublicKey,
+ addedukm [0] EXPLICIT UserKeyingMaterial OPTIONAL }
+
+
+
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY DEFINED BY type }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertId ::= SEQUENCE {
+ issuer GeneralName,
+ serialNumber INTEGER }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertReqMessages ::= SEQUENCE SIZE (1..MAX) OF CertReqMsg
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new CertReqMsg.
+ @param certReq CertRequest
+ @param popo may be null
+ @param regInfo may be null
+
+
+
+ CertReqMsg ::= SEQUENCE {
+ certReq CertRequest,
+ pop ProofOfPossession OPTIONAL,
+ -- content depends upon key type
+ regInfo SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertRequest ::= SEQUENCE {
+ certReqId INTEGER, -- ID for matching request and reply
+ certTemplate CertTemplate, -- Selected fields of cert to be issued
+ controls Controls OPTIONAL } -- Attributes affecting issuance
+
+ @return a basic ASN.1 object representation.
+
+
+
+ CertTemplate ::= SEQUENCE {
+ version [0] Version OPTIONAL,
+ serialNumber [1] INTEGER OPTIONAL,
+ signingAlg [2] AlgorithmIdentifier OPTIONAL,
+ issuer [3] Name OPTIONAL,
+ validity [4] OptionalValidity OPTIONAL,
+ subject [5] Name OPTIONAL,
+ publicKey [6] SubjectPublicKeyInfo OPTIONAL,
+ issuerUID [7] UniqueIdentifier OPTIONAL,
+ subjectUID [8] UniqueIdentifier OPTIONAL,
+ extensions [9] Extensions OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ Sets the X.509 version. Note: for X509v3, use 2 here.
+
+
+ Sets the issuer unique ID (deprecated in X.509v3)
+
+
+ Sets the subject unique ID (deprecated in X.509v3)
+
+
+
+ CertTemplate ::= SEQUENCE {
+ version [0] Version OPTIONAL,
+ serialNumber [1] INTEGER OPTIONAL,
+ signingAlg [2] AlgorithmIdentifier OPTIONAL,
+ issuer [3] Name OPTIONAL,
+ validity [4] OptionalValidity OPTIONAL,
+ subject [5] Name OPTIONAL,
+ publicKey [6] SubjectPublicKeyInfo OPTIONAL,
+ issuerUID [7] UniqueIdentifier OPTIONAL,
+ subjectUID [8] UniqueIdentifier OPTIONAL,
+ extensions [9] Extensions OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ Controls ::= SEQUENCE SIZE(1..MAX) OF AttributeTypeAndValue
+
+ @return a basic ASN.1 object representation.
+
+
+
+ EncKeyWithID ::= SEQUENCE {
+ privateKey PrivateKeyInfo,
+ identifier CHOICE {
+ string UTF8String,
+ generalName GeneralName
+ } OPTIONAL
+ }
+
+ @return
+
+
+
+ EncryptedKey ::= CHOICE {
+ encryptedValue EncryptedValue, -- deprecated
+ envelopedData [0] EnvelopedData }
+ -- The encrypted private key MUST be placed in the envelopedData
+ -- encryptedContentInfo encryptedContent OCTET STRING.
+
+
+
+
+ EncryptedValue ::= SEQUENCE {
+ intendedAlg [0] AlgorithmIdentifier OPTIONAL,
+ -- the intended algorithm for which the value will be used
+ symmAlg [1] AlgorithmIdentifier OPTIONAL,
+ -- the symmetric algorithm used to encrypt the value
+ encSymmKey [2] BIT STRING OPTIONAL,
+ -- the (encrypted) symmetric key used to encrypt the value
+ keyAlg [3] AlgorithmIdentifier OPTIONAL,
+ -- algorithm used to encrypt the symmetric key
+ valueHint [4] OCTET STRING OPTIONAL,
+ -- a brief description or identifier of the encValue content
+ -- (may be meaningful only to the sending entity, and used only
+ -- if EncryptedValue might be re-examined by the sending entity
+ -- in the future)
+ encValue BIT STRING }
+ -- the encrypted value itself
+
+ @return a basic ASN.1 object representation.
+
+
+
+ OptionalValidity ::= SEQUENCE {
+ notBefore [0] Time OPTIONAL,
+ notAfter [1] Time OPTIONAL } --at least one MUST be present
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PkiArchiveOptions ::= CHOICE {
+ encryptedPrivKey [0] EncryptedKey,
+ -- the actual value of the private key
+ keyGenParameters [1] KeyGenParameters,
+ -- parameters which allow the private key to be re-generated
+ archiveRemGenPrivKey [2] BOOLEAN }
+ -- set to TRUE if sender wishes receiver to archive the private
+ -- key of a key pair that the receiver generates in response to
+ -- this request; set to FALSE if no archival is desired.
+
+
+
+
+ PkiPublicationInfo ::= SEQUENCE {
+ action INTEGER {
+ dontPublish (0),
+ pleasePublish (1) },
+ pubInfos SEQUENCE SIZE (1..MAX) OF SinglePubInfo OPTIONAL }
+ -- pubInfos MUST NOT be present if action is "dontPublish"
+ -- (if action is "pleasePublish" and pubInfos is omitted,
+ -- "dontCare" is assumed)
+
+ @return a basic ASN.1 object representation.
+
+
+ Password-based MAC value for use with POPOSigningKeyInput.
+
+
+ Creates a new PKMACValue.
+ @param params parameters for password-based MAC
+ @param value MAC of the DER-encoded SubjectPublicKeyInfo
+
+
+ Creates a new PKMACValue.
+ @param aid CMPObjectIdentifiers.passwordBasedMAC, with PBMParameter
+ @param value MAC of the DER-encoded SubjectPublicKeyInfo
+
+
+
+ PKMACValue ::= SEQUENCE {
+ algId AlgorithmIdentifier,
+ -- algorithm value shall be PasswordBasedMac 1.2.840.113533.7.66.13
+ -- parameter value is PBMParameter
+ value BIT STRING }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ PopoPrivKey ::= CHOICE {
+ thisMessage [0] BIT STRING, -- Deprecated
+ -- possession is proven in this message (which contains the private
+ -- key itself (encrypted for the CA))
+ subsequentMessage [1] SubsequentMessage,
+ -- possession will be proven in a subsequent message
+ dhMAC [2] BIT STRING, -- Deprecated
+ agreeMAC [3] PKMACValue,
+ encryptedKey [4] EnvelopedData }
+
+
+
+ Creates a new Proof of Possession object for a signing key.
+ @param poposkIn the PopoSigningKeyInput structure, or null if the
+ CertTemplate includes both subject and publicKey values.
+ @param aid the AlgorithmIdentifier used to sign the proof of possession.
+ @param signature a signature over the DER-encoded value of poposkIn,
+ or the DER-encoded value of certReq if poposkIn is null.
+
+
+
+ PopoSigningKey ::= SEQUENCE {
+ poposkInput [0] PopoSigningKeyInput OPTIONAL,
+ algorithmIdentifier AlgorithmIdentifier,
+ signature BIT STRING }
+ -- The signature (using "algorithmIdentifier") is on the
+ -- DER-encoded value of poposkInput. NOTE: If the CertReqMsg
+ -- certReq CertTemplate contains the subject and publicKey values,
+ -- then poposkInput MUST be omitted and the signature MUST be
+ -- computed on the DER-encoded value of CertReqMsg certReq. If
+ -- the CertReqMsg certReq CertTemplate does not contain the public
+ -- key and subject values, then poposkInput MUST be present and
+ -- MUST be signed. This strategy ensures that the public key is
+ -- not present in both the poposkInput and CertReqMsg certReq
+ -- CertTemplate fields.
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a new PopoSigningKeyInput with sender name as authInfo.
+
+
+ Creates a new PopoSigningKeyInput using password-based MAC.
+
+
+ Returns the sender field, or null if authInfo is publicKeyMac
+
+
+ Returns the publicKeyMac field, or null if authInfo is sender
+
+
+
+ PopoSigningKeyInput ::= SEQUENCE {
+ authInfo CHOICE {
+ sender [0] GeneralName,
+ -- used only if an authenticated identity has been
+ -- established for the sender (e.g., a DN from a
+ -- previously-issued and currently-valid certificate
+ publicKeyMac PKMacValue },
+ -- used if no authenticated GeneralName currently exists for
+ -- the sender; publicKeyMac contains a password-based MAC
+ -- on the DER-encoded value of publicKey
+ publicKey SubjectPublicKeyInfo } -- from CertTemplate
+
+ @return a basic ASN.1 object representation.
+
+
+ Creates a ProofOfPossession with type raVerified.
+
+
+ Creates a ProofOfPossession for a signing key.
+
+
+ Creates a ProofOfPossession for key encipherment or agreement.
+ @param type one of TYPE_KEY_ENCIPHERMENT or TYPE_KEY_AGREEMENT
+
+
+
+ ProofOfPossession ::= CHOICE {
+ raVerified [0] NULL,
+ -- used if the RA has already verified that the requester is in
+ -- possession of the private key
+ signature [1] PopoSigningKey,
+ keyEncipherment [2] PopoPrivKey,
+ keyAgreement [3] PopoPrivKey }
+
+ @return a basic ASN.1 object representation.
+
+
+
+ SinglePubInfo ::= SEQUENCE {
+ pubMethod INTEGER {
+ dontCare (0),
+ x500 (1),
+ web (2),
+ ldap (3) },
+ pubLocation GeneralName OPTIONAL }
+
+ @return a basic ASN.1 object representation.
+
+
+ table of the available named parameters for GOST 3410-2001.
+
+
+ return the ECDomainParameters object for the given OID, null if it
+ isn't present.
+
+ @param oid an object identifier representing a named parameters, if present.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+
+ Gost28147-89-Parameters ::=
+ SEQUENCE {
+ iv Gost28147-89-IV,
+ encryptionParamSet OBJECT IDENTIFIER
+ }
+
+ Gost28147-89-IV ::= OCTET STRING (SIZE (8))
+
+
+
+ table of the available named parameters for GOST 3410-94.
+
+
+ return the GOST3410ParamSetParameters object for the given OID, null if it
+ isn't present.
+
+ @param oid an object identifier representing a named parameters, if present.
+
+
+ returns an enumeration containing the name strings for parameters
+ contained in this structure.
+
+
+
+ RFC 3126: 4.3.1 Certificate Values Attribute Definition
+
+ CertificateValues ::= SEQUENCE OF Certificate
+
+
+
+
+
+ CommitmentTypeIndication ::= SEQUENCE {
+ commitmentTypeId CommitmentTypeIdentifier,
+ commitmentTypeQualifier SEQUENCE SIZE (1..MAX) OF
+ CommitmentTypeQualifier OPTIONAL }
+
+
+
+ Commitment type qualifiers, used in the Commitment-Type-Indication attribute (RFC3126).
+
+
+ CommitmentTypeQualifier ::= SEQUENCE {
+ commitmentTypeIdentifier CommitmentTypeIdentifier,
+ qualifier ANY DEFINED BY commitmentTypeIdentifier OPTIONAL }
+
+
+
+ Creates a new CommitmentTypeQualifier
instance.
+
+ @param commitmentTypeIdentifier a CommitmentTypeIdentifier
value
+
+
+ Creates a new CommitmentTypeQualifier
instance.
+
+ @param commitmentTypeIdentifier a CommitmentTypeIdentifier
value
+ @param qualifier the qualifier, defined by the above field.
+
+
+ Creates a new CommitmentTypeQualifier
instance.
+
+ @param as CommitmentTypeQualifier
structure
+ encoded as an Asn1Sequence.
+
+
+ Returns a DER-encodable representation of this instance.
+
+ @return a Asn1Object
value
+
+
+
+ RFC 3126: 4.2.1 Complete Certificate Refs Attribute Definition
+
+ CompleteCertificateRefs ::= SEQUENCE OF OtherCertID
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CompleteRevocationRefs ::= SEQUENCE OF CrlOcspRef
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlIdentifier ::= SEQUENCE
+ {
+ crlissuer Name,
+ crlIssuedTime UTCTime,
+ crlNumber INTEGER OPTIONAL
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CRLListID ::= SEQUENCE
+ {
+ crls SEQUENCE OF CrlValidatedID
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlOcspRef ::= SEQUENCE {
+ crlids [0] CRLListID OPTIONAL,
+ ocspids [1] OcspListID OPTIONAL,
+ otherRev [2] OtherRevRefs OPTIONAL
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ CrlValidatedID ::= SEQUENCE {
+ crlHash OtherHash,
+ crlIdentifier CrlIdentifier OPTIONAL}
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspIdentifier ::= SEQUENCE {
+ ocspResponderID ResponderID,
+ -- As in OCSP response data
+ producedAt GeneralizedTime
+ -- As in OCSP response data
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspListID ::= SEQUENCE {
+ ocspResponses SEQUENCE OF OcspResponsesID
+ }
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OcspResponsesID ::= SEQUENCE {
+ ocspIdentifier OcspIdentifier,
+ ocspRepHash OtherHash OPTIONAL
+ }
+
+
+
+
+
+
+ OtherCertID ::= SEQUENCE {
+ otherCertHash OtherHash,
+ issuerSerial IssuerSerial OPTIONAL
+ }
+
+
+
+
+
+
+ OtherHash ::= CHOICE {
+ sha1Hash OtherHashValue, -- This contains a SHA-1 hash
+ otherHash OtherHashAlgAndValue
+ }
+
+ OtherHashValue ::= OCTET STRING
+
+
+
+
+
+ Summary description for OtherHashAlgAndValue.
+
+
+
+ OtherHashAlgAndValue ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashValue OtherHashValue
+ }
+
+ OtherHashValue ::= OCTET STRING
+
+
+
+
+
+ RFC 3126: 4.2.2 Complete Revocation Refs Attribute Definition
+
+ OtherRevRefs ::= SEQUENCE
+ {
+ otherRevRefType OtherRevRefType,
+ otherRevRefs ANY DEFINED BY otherRevRefType
+ }
+
+ OtherRevRefType ::= OBJECT IDENTIFIER
+
+
+
+
+
+ RFC 3126: 4.3.2 Revocation Values Attribute Definition
+
+ OtherRevVals ::= SEQUENCE
+ {
+ otherRevValType OtherRevValType,
+ otherRevVals ANY DEFINED BY otherRevValType
+ }
+
+ OtherRevValType ::= OBJECT IDENTIFIER
+
+
+
+
+
+
+ OtherSigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF OtherCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+
+
+
+
+ RFC 5126: 6.3.4. revocation-values Attribute Definition
+
+ RevocationValues ::= SEQUENCE {
+ crlVals [0] SEQUENCE OF CertificateList OPTIONAL,
+ ocspVals [1] SEQUENCE OF BasicOCSPResponse OPTIONAL,
+ otherRevVals [2] OtherRevVals OPTIONAL
+ }
+
+
+
+
+
+
+ SigPolicyQualifierInfo ::= SEQUENCE {
+ sigPolicyQualifierId SigPolicyQualifierId,
+ sigQualifier ANY DEFINED BY sigPolicyQualifierId
+ }
+
+ SigPolicyQualifierId ::= OBJECT IDENTIFIER
+
+
+
+
+
+
+ SignaturePolicyId ::= SEQUENCE {
+ sigPolicyIdentifier SigPolicyId,
+ sigPolicyHash SigPolicyHash,
+ sigPolicyQualifiers SEQUENCE SIZE (1..MAX) OF SigPolicyQualifierInfo OPTIONAL
+ }
+
+ SigPolicyId ::= OBJECT IDENTIFIER
+
+ SigPolicyHash ::= OtherHashAlgAndValue
+
+
+
+
+
+
+ SignaturePolicyIdentifier ::= CHOICE {
+ SignaturePolicyId SignaturePolicyId,
+ SignaturePolicyImplied SignaturePolicyImplied
+ }
+
+ SignaturePolicyImplied ::= NULL
+
+
+
+
+
+
+ SignerAttribute ::= SEQUENCE OF CHOICE {
+ claimedAttributes [0] ClaimedAttributes,
+ certifiedAttributes [1] CertifiedAttributes }
+
+ ClaimedAttributes ::= SEQUENCE OF Attribute
+ CertifiedAttributes ::= AttributeCertificate -- as defined in RFC 3281: see clause 4.1.
+
+
+
+ Signer-Location attribute (RFC3126).
+
+
+ SignerLocation ::= SEQUENCE {
+ countryName [0] DirectoryString OPTIONAL,
+ localityName [1] DirectoryString OPTIONAL,
+ postalAddress [2] PostalAddress OPTIONAL }
+
+ PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
+
+
+
+
+ SignerLocation ::= SEQUENCE {
+ countryName [0] DirectoryString OPTIONAL,
+ localityName [1] DirectoryString OPTIONAL,
+ postalAddress [2] PostalAddress OPTIONAL }
+
+ PostalAddress ::= SEQUENCE SIZE(1..6) OF DirectoryString
+
+ DirectoryString ::= CHOICE {
+ teletexString TeletexString (SIZE (1..MAX)),
+ printableString PrintableString (SIZE (1..MAX)),
+ universalString UniversalString (SIZE (1..MAX)),
+ utf8String UTF8String (SIZE (1.. MAX)),
+ bmpString BMPString (SIZE (1..MAX)) }
+
+
+
+ constructor
+
+
+
+ ContentHints ::= SEQUENCE {
+ contentDescription UTF8String (SIZE (1..MAX)) OPTIONAL,
+ contentType ContentType }
+
+
+
+ Create from OCTET STRING whose octets represent the identifier.
+
+
+ Create from byte array representing the identifier.
+
+
+ The definition of ContentIdentifier is
+
+ ContentIdentifier ::= OCTET STRING
+
+ id-aa-contentIdentifier OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 7 }
+
+
+ constructor
+
+
+
+ EssCertID ::= SEQUENCE {
+ certHash Hash,
+ issuerSerial IssuerSerial OPTIONAL }
+
+
+
+
+ EssCertIDv2 ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier
+ DEFAULT {algorithm id-sha256},
+ certHash Hash,
+ issuerSerial IssuerSerial OPTIONAL
+ }
+
+ Hash ::= OCTET STRING
+
+ IssuerSerial ::= SEQUENCE {
+ issuer GeneralNames,
+ serialNumber CertificateSerialNumber
+ }
+
+
+
+ constructor
+
+
+
+ OtherCertID ::= SEQUENCE {
+ otherCertHash OtherHash,
+ issuerSerial IssuerSerial OPTIONAL }
+
+ OtherHash ::= CHOICE {
+ sha1Hash OCTET STRING,
+ otherHash OtherHashAlgAndValue }
+
+ OtherHashAlgAndValue ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashValue OCTET STRING }
+
+
+
+
+ constructors
+
+
+ The definition of OtherSigningCertificate is
+
+ OtherSigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF OtherCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-ets-otherSigCert OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 19 }
+
+
+ constructors
+
+
+ The definition of SigningCertificate is
+
+ SigningCertificate ::= SEQUENCE {
+ certs SEQUENCE OF EssCertID,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-signingCertificate OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 12 }
+
+
+ The definition of SigningCertificateV2 is
+
+ SigningCertificateV2 ::= SEQUENCE {
+ certs SEQUENCE OF EssCertIDv2,
+ policies SEQUENCE OF PolicyInformation OPTIONAL
+ }
+
+ id-aa-signingCertificateV2 OBJECT IDENTIFIER ::= { iso(1)
+ member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9)
+ smime(16) id-aa(2) 47 }
+
+
+ The CscaMasterList object. This object can be wrapped in a
+ CMSSignedData to be published in LDAP.
+
+
+ CscaMasterList ::= SEQUENCE {
+ version CscaMasterListVersion,
+ certList SET OF Certificate }
+
+ CscaMasterListVersion :: INTEGER {v0(0)}
+
+
+
+ The DataGroupHash object.
+
+ DataGroupHash ::= SEQUENCE {
+ dataGroupNumber DataGroupNumber,
+ dataGroupHashValue OCTET STRING }
+
+ DataGroupNumber ::= INTEGER {
+ dataGroup1 (1),
+ dataGroup1 (2),
+ dataGroup1 (3),
+ dataGroup1 (4),
+ dataGroup1 (5),
+ dataGroup1 (6),
+ dataGroup1 (7),
+ dataGroup1 (8),
+ dataGroup1 (9),
+ dataGroup1 (10),
+ dataGroup1 (11),
+ dataGroup1 (12),
+ dataGroup1 (13),
+ dataGroup1 (14),
+ dataGroup1 (15),
+ dataGroup1 (16) }
+
+
+
+
+ The LDSSecurityObject object (V1.8).
+
+ LDSSecurityObject ::= SEQUENCE {
+ version LDSSecurityObjectVersion,
+ hashAlgorithm DigestAlgorithmIdentifier,
+ dataGroupHashValues SEQUENCE SIZE (2..ub-DataGroups) OF DataHashGroup,
+ ldsVersionInfo LDSVersionInfo OPTIONAL
+ -- if present, version MUST be v1 }
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier,
+
+ LDSSecurityObjectVersion :: INTEGER {V0(0)}
+
+
+
+
+ LDSVersionInfo ::= SEQUENCE {
+ ldsVersion PRINTABLE STRING
+ unicodeVersion PRINTABLE STRING
+ }
+
+ @return
+
+
+ The id-isismtt-cp-accredited OID indicates that the certificate is a
+ qualified certificate according to Directive 1999/93/EC of the European
+ Parliament and of the Council of 13 December 1999 on a Community
+ Framework for Electronic Signatures, which additionally conforms the
+ special requirements of the SigG and has been issued by an accredited CA.
+
+
+ Certificate extensionDate of certificate generation
+
+
+ DateOfCertGenSyntax ::= GeneralizedTime
+
+
+
+ Attribute to indicate that the certificate holder may sign in the name of
+ a third person. May also be used as extension in a certificate.
+
+
+ Attribute to indicate admissions to certain professions. May be used as
+ attribute in attribute certificate or as extension in a certificate
+
+
+ Monetary limit for transactions. The QcEuMonetaryLimit QC statement MUST
+ be used in new certificates in place of the extension/attribute
+ MonetaryLimit since January 1, 2004. For the sake of backward
+ compatibility with certificates already in use, SigG conforming
+ components MUST support MonetaryLimit (as well as QcEuLimitValue).
+
+
+ A declaration of majority. May be used as attribute in attribute
+ certificate or as extension in a certificate
+
+
+
+ Serial number of the smart card containing the corresponding private key
+
+
+ ICCSNSyntax ::= OCTET STRING (SIZE(8..20))
+
+
+
+
+ Reference for a file of a smartcard that stores the public key of this
+ certificate and that is used as �security anchor�.
+
+
+ PKReferenceSyntax ::= OCTET STRING (SIZE(20))
+
+
+
+ Some other restriction regarding the usage of this certificate. May be
+ used as attribute in attribute certificate or as extension in a
+ certificate.
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.Restriction
+
+
+
+ (Single)Request extension: Clients may include this extension in a
+ (single) Request to request the responder to send the certificate in the
+ response message along with the status information. Besides the LDAP
+ service, this extension provides another mechanism for the distribution
+ of certificates, which MAY optionally be provided by certificate
+ repositories.
+
+
+ RetrieveIfAllowed ::= BOOLEAN
+
+
+
+ SingleOCSPResponse extension: The certificate requested by the client by
+ inserting the RetrieveIfAllowed extension in the request, will be
+ returned in this extension.
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.Ocsp.RequestedCertificate
+
+
+ Base ObjectIdentifier for naming authorities
+
+
+ SingleOCSPResponse extension: Date, when certificate has been published
+ in the directory and status information has become available. Currently,
+ accrediting authorities enforce that SigG-conforming OCSP servers include
+ this extension in the responses.
+
+
+ CertInDirSince ::= GeneralizedTime
+
+
+
+ Hash of a certificate in OCSP.
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.Ocsp.CertHash
+
+
+
+ NameAtBirth ::= DirectoryString(SIZE(1..64)
+
+
+ Used in
+ {@link Org.BouncyCastle.Asn1.X509.SubjectDirectoryAttributes SubjectDirectoryAttributes}
+
+
+ Some other information of non-restrictive nature regarding the usage of
+ this certificate. May be used as attribute in atribute certificate or as
+ extension in a certificate.
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdditionalInformationSyntax
+
+
+ Indicates that an attribute certificate exists, which limits the
+ usability of this public key certificate. Whenever verifying a signature
+ with the help of this certificate, the content of the corresponding
+ attribute certificate should be concerned. This extension MUST be
+ included in a PKC, if a corresponding attribute certificate (having the
+ PKC as base certificate) contains some attribute that restricts the
+ usability of the PKC too. Attribute certificates with restricting content
+ MUST always be included in the signed document.
+
+
+ LiabilityLimitationFlagSyntax ::= BOOLEAN
+
+
+
+ ISIS-MTT PROFILE: The responder may include this extension in a response to
+ send the hash of the requested certificate to the responder. This hash is
+ cryptographically bound to the certificate and serves as evidence that the
+ certificate is known to the responder (i.e. it has been issued and is present
+ in the directory). Hence, this extension is a means to provide a positive
+ statement of availability as described in T8.[8]. As explained in T13.[1],
+ clients may rely on this information to be able to validate signatures after
+ the expiry of the corresponding certificate. Hence, clients MUST support this
+ extension. If a positive statement of availability is to be delivered, this
+ extension syntax and OID MUST be used.
+
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type CertHash:
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param hashAlgorithm The hash algorithm identifier.
+ @param certificateHash The hash of the whole DER encoding of the certificate.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ CertHash ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ certificateHash OCTET STRING
+ }
+
+
+ @return an Asn1Object
+
+
+ ISIS-MTT-Optional: The certificate requested by the client by inserting the
+ RetrieveIfAllowed extension in the request, will be returned in this
+ extension.
+
+ ISIS-MTT-SigG: The signature act allows publishing certificates only then,
+ when the certificate owner gives his isExplicit permission. Accordingly, there
+ may be �nondownloadable� certificates, about which the responder must provide
+ status information, but MUST NOT include them in the response. Clients may
+ get therefore the following three kind of answers on a single request
+ including the RetrieveIfAllowed extension:
+
+ - a) the responder supports the extension and is allowed to publish the
+ certificate: RequestedCertificate returned including the requested
+ certificate
+ - b) the responder supports the extension but is NOT allowed to publish
+ the certificate: RequestedCertificate returned including an empty OCTET
+ STRING
+ - c) the responder does not support the extension: RequestedCertificate is
+ not included in the response
+
+ Clients requesting RetrieveIfAllowed MUST be able to handle these cases. If
+ any of the OCTET STRING options is used, it MUST contain the DER encoding of
+ the requested certificate.
+
+
+ RequestedCertificate ::= CHOICE {
+ Certificate Certificate,
+ publicKeyCertificate [0] EXPLICIT OCTET STRING,
+ attributeCertificate [1] EXPLICIT OCTET STRING
+ }
+
+
+
+ Constructor from a given details.
+
+ Only one parameter can be given. All other must be null
.
+
+ @param certificate Given as Certificate
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ RequestedCertificate ::= CHOICE {
+ Certificate Certificate,
+ publicKeyCertificate [0] EXPLICIT OCTET STRING,
+ attributeCertificate [1] EXPLICIT OCTET STRING
+ }
+
+
+ @return an Asn1Object
+
+
+ Some other information of non-restrictive nature regarding the usage of this
+ certificate.
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+
+ Constructor from a given details.
+
+ @param information The describtion of the information.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ AdditionalInformationSyntax ::= DirectoryString (SIZE(1..2048))
+
+
+ @return an Asn1Object
+
+
+ Attribute to indicate admissions to certain professions.
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+
+ ISIS-MTT PROFILE: The relatively complex structure of AdmissionSyntax
+ supports the following concepts and requirements:
+
+ - External institutions (e.g. professional associations, chambers, unions,
+ administrative bodies, companies, etc.), which are responsible for granting
+ and verifying professional admissions, are indicated by means of the data
+ field admissionAuthority. An admission authority is indicated by a
+ GeneralName object. Here an X.501 directory name (distinguished name) can be
+ indicated in the field directoryName, a URL address can be indicated in the
+ field uniformResourceIdentifier, and an object identifier can be indicated in
+ the field registeredId.
+ - The names of authorities which are responsible for the administration of
+ title registers are indicated in the data field namingAuthority. The name of
+ the authority can be identified by an object identifier in the field
+ namingAuthorityId, by means of a text string in the field
+ namingAuthorityText, by means of a URL address in the field
+ 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
+ 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.
+ - See http://www.teletrust.de/anwend.asp?Id=30200&Sprache=E_&HomePG=0
+ for an application form and http://www.teletrust.de/links.asp?id=30220,11
+ for an overview of registered naming authorities.
+ - By means of the data type ProfessionInfo certain professions,
+ specializations, disciplines, fields of activity, etc. are identified. A
+ profession is represented by one or more text strings, resp. profession OIDs
+ in the fields professionItems and professionOIDs and by a registration number
+ in the field registrationNumber. An indication in text form must always be
+ present, whereas the other indications are optional. The component
+ addProfessionInfo may contain additional applicationspecific information in
+ DER-encoded form.
+
+
+ By means of different namingAuthority-OIDs or profession OIDs hierarchies of
+ professions, specializations, disciplines, fields of activity, etc. can be
+ expressed. The issuing admission authority should always be indicated (field
+ admissionAuthority), whenever a registration number is presented. Still,
+ information on admissions can be given without indicating an admission or a
+ naming authority by the exclusive use of the component professionItems. In
+ this case the certification authority is responsible for the verification of
+ the admission information.
+
+
+
+ This attribute is single-valued. Still, several admissions can be captured in
+ the sequence structure of the component contentsOfAdmissions of
+ AdmissionSyntax or in the component professionInfos of Admissions. The
+ component admissionAuthority of AdmissionSyntax serves as default value for
+ the component admissionAuthority of Admissions. Within the latter component
+ the default value can be overwritten, in case that another authority is
+ responsible. The component namingAuthority of Admissions serves as a default
+ value for the component namingAuthority of ProfessionInfo. Within the latter
+ component the default value can be overwritten, in case that another naming
+ authority needs to be recorded.
+
+ The length of the string objects is limited to 128 characters. It is
+ recommended to indicate a namingAuthorityURL in all issued attribute
+ certificates. If a namingAuthorityURL is indicated, the field professionItems
+ of ProfessionInfo should contain only registered titles. If the field
+ professionOIDs exists, it has to contain the OIDs of the professions listed
+ in professionItems in the same order. In general, the field professionInfos
+ should contain only one entry, unless the admissions that are to be listed
+ are logically connected (e.g. they have been issued under the same admission
+ number).
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.Admissions
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from given details.
+
+ @param admissionAuthority The admission authority.
+ @param contentsOfAdmissions The admissions.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ AdmissionSyntax ::= SEQUENCE
+ {
+ admissionAuthority GeneralName OPTIONAL,
+ contentsOfAdmissions SEQUENCE OF Admissions
+ }
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityId OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOIDs SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ @return Returns the admissionAuthority if present, null otherwise.
+
+
+ @return Returns the contentsOfAdmissions.
+
+
+ An Admissions structure.
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.ProfessionInfo
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.NamingAuthority
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ Parameter professionInfos
is mandatory.
+
+ @param admissionAuthority The admission authority.
+ @param namingAuthority The naming authority.
+ @param professionInfos The profession infos.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Admissions ::= SEQUENCE
+ {
+ admissionAuthority [0] EXPLICIT GeneralName OPTIONAL
+ namingAuthority [1] EXPLICIT NamingAuthority OPTIONAL
+ professionInfos SEQUENCE OF ProfessionInfo
+ }
+
+
+
+ @return an Asn1Object
+
+
+ A declaration of majority.
+
+
+ DeclarationOfMajoritySyntax ::= CHOICE
+ {
+ notYoungerThan [0] IMPLICIT INTEGER,
+ fullAgeAtCountry [1] IMPLICIT SEQUENCE
+ {
+ fullAge BOOLEAN DEFAULT TRUE,
+ country PrintableString (SIZE(2))
+ }
+ dateOfBirth [2] IMPLICIT GeneralizedTime
+ }
+
+
+ fullAgeAtCountry indicates the majority of the owner with respect to the laws
+ of a specific country.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ DeclarationOfMajoritySyntax ::= CHOICE
+ {
+ notYoungerThan [0] IMPLICIT INTEGER,
+ fullAgeAtCountry [1] IMPLICIT SEQUENCE
+ {
+ fullAge BOOLEAN DEFAULT TRUE,
+ country PrintableString (SIZE(2))
+ }
+ dateOfBirth [2] IMPLICIT GeneralizedTime
+ }
+
+
+ @return an Asn1Object
+
+
+ @return notYoungerThan if that's what we are, -1 otherwise
+
+
+ Monetary limit for transactions. The QcEuMonetaryLimit QC statement MUST be
+ used in new certificates in place of the extension/attribute MonetaryLimit
+ since January 1, 2004. For the sake of backward compatibility with
+ certificates already in use, components SHOULD support MonetaryLimit (as well
+ as QcEuLimitValue).
+
+ Indicates a monetary limit within which the certificate holder is authorized
+ to act. (This value DOES NOT express a limit on the liability of the
+ certification authority).
+
+
+ MonetaryLimitSyntax ::= SEQUENCE
+ {
+ currency PrintableString (SIZE(3)),
+ amount INTEGER,
+ exponent INTEGER
+ }
+
+
+ currency must be the ISO code.
+
+ value = amount�10*exponent
+
+
+ Constructor from a given details.
+
+
+ value = amount�10^exponent
+
+ @param currency The currency. Must be the ISO code.
+ @param amount The amount
+ @param exponent The exponent
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ MonetaryLimitSyntax ::= SEQUENCE
+ {
+ currency PrintableString (SIZE(3)),
+ amount INTEGER,
+ exponent INTEGER
+ }
+
+
+ @return an Asn1Object
+
+
+ Names of authorities which are responsible for the administration of title
+ registers.
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+
+
+
+ Profession OIDs should always be defined under the OID branch of the
+ responsible naming authority. At the time of this writing, the work group
+ �Recht, Wirtschaft, Steuern� (�Law, Economy, Taxes�) is registered as the
+ first naming authority under the OID id-isismtt-at-namingAuthorities.
+
+
+ Constructor from Asn1Sequence.
+
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ @return Returns the namingAuthorityID.
+
+
+ @return Returns the namingAuthorityText.
+
+
+ @return Returns the namingAuthorityUrl.
+
+
+ Constructor from given details.
+
+ All parameters can be combined.
+
+ @param namingAuthorityID ObjectIdentifier for naming authority.
+ @param namingAuthorityUrl URL for naming authority.
+ @param namingAuthorityText Textual representation of naming authority.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ NamingAuthority ::= SEQUENCE
+ {
+ namingAuthorityID OBJECT IDENTIFIER OPTIONAL,
+ namingAuthorityUrl IA5String OPTIONAL,
+ namingAuthorityText DirectoryString(SIZE(1..128)) OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ Attribute to indicate that the certificate holder may sign in the name of a
+ third person.
+
+ ISIS-MTT PROFILE: The corresponding ProcurationSyntax contains either the
+ name of the person who is represented (subcomponent thirdPerson) or a
+ reference to his/her base certificate (in the component signingFor,
+ subcomponent certRef), furthermore the optional components country and
+ typeSubstitution to indicate the country whose laws apply, and respectively
+ the type of procuration (e.g. manager, procuration, custody).
+
+
+ ISIS-MTT PROFILE: The GeneralName MUST be of type directoryName and MAY only
+ contain: - RFC3039 attributes, except pseudonym (countryName, commonName,
+ surname, givenName, serialNumber, organizationName, organizationalUnitName,
+ stateOrProvincename, localityName, postalAddress) and - SubjectDirectoryName
+ attributes (title, dateOfBirth, placeOfBirth, gender, countryOfCitizenship,
+ countryOfResidence and NameAtBirth).
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type ProcurationSyntax:
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+
+ Either generalName
or certRef
MUST be
+ null
.
+
+ @param country The country code whose laws apply.
+ @param typeOfSubstitution The type of procuration.
+ @param certRef Reference to certificate of the person who is represented.
+
+
+ Constructor from a given details.
+
+
+ Either generalName
or certRef
MUST be
+ null
.
+
+ @param country The country code whose laws apply.
+ @param typeOfSubstitution The type of procuration.
+ @param thirdPerson The GeneralName of the person who is represented.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ ProcurationSyntax ::= SEQUENCE {
+ country [1] EXPLICIT PrintableString(SIZE(2)) OPTIONAL,
+ typeOfSubstitution [2] EXPLICIT DirectoryString (SIZE(1..128)) OPTIONAL,
+ signingFor [3] EXPLICIT SigningFor
+ }
+
+ SigningFor ::= CHOICE
+ {
+ thirdPerson GeneralName,
+ certRef IssuerSerial
+ }
+
+
+ @return an Asn1Object
+
+
+ Professions, specializations, disciplines, fields of activity, etc.
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @see Org.BouncyCastle.Asn1.IsisMtt.X509.AdmissionSyntax
+
+
+ Rechtsanw�ltin
+
+
+ Rechtsanwalt
+
+
+ Rechtsbeistand
+
+
+ Steuerberaterin
+
+
+ Steuerberater
+
+
+ Steuerbevollm�chtigte
+
+
+ Steuerbevollm�chtigter
+
+
+ Notarin
+
+
+ Notar
+
+
+ Notarvertreterin
+
+
+ Notarvertreter
+
+
+ Notariatsverwalterin
+
+
+ Notariatsverwalter
+
+
+ Wirtschaftspr�ferin
+
+
+ Wirtschaftspr�fer
+
+
+ Vereidigte Buchpr�ferin
+
+
+ Vereidigter Buchpr�fer
+
+
+ Patentanw�ltin
+
+
+ Patentanwalt
+
+
+ Constructor from Asn1Sequence.
+
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from given details.
+
+ professionItems
is mandatory, all other parameters are
+ optional.
+
+ @param namingAuthority The naming authority.
+ @param professionItems Directory strings of the profession.
+ @param professionOids DERObjectIdentfier objects for the
+ profession.
+ @param registrationNumber Registration number.
+ @param addProfessionInfo Additional infos in encoded form.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ ProfessionInfo ::= SEQUENCE
+ {
+ namingAuthority [0] EXPLICIT NamingAuthority OPTIONAL,
+ professionItems SEQUENCE OF DirectoryString (SIZE(1..128)),
+ professionOids SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
+ registrationNumber PrintableString(SIZE(1..128)) OPTIONAL,
+ addProfessionInfo OCTET STRING OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ @return Returns the addProfessionInfo.
+
+
+ @return Returns the namingAuthority.
+
+
+ @return Returns the professionItems.
+
+
+ @return Returns the professionOids.
+
+
+ @return Returns the registrationNumber.
+
+
+ Some other restriction regarding the usage of this certificate.
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+
+ Constructor from DirectoryString.
+
+ The DirectoryString is of type RestrictionSyntax:
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+ @param restriction A IAsn1String.
+
+
+ Constructor from a given details.
+
+ @param restriction The description of the restriction.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ RestrictionSyntax ::= DirectoryString (SIZE(1..1024))
+
+
+
+ @return an Asn1Object
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ cast5CBCParameters ::= Sequence {
+ iv OCTET STRING DEFAULT 0,
+ -- Initialization vector
+ keyLength Integer
+ -- Key length, in bits
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ IDEA-CBCPar ::= Sequence {
+ iv OCTET STRING OPTIONAL -- exactly 8 octets
+ }
+
+
+
+ The NetscapeCertType object.
+
+ NetscapeCertType ::= BIT STRING {
+ SSLClient (0),
+ SSLServer (1),
+ S/MIME (2),
+ Object Signing (3),
+ Reserved (4),
+ SSL CA (5),
+ S/MIME CA (6),
+ Object Signing CA (7) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (X509NetscapeCertType.sslCA | X509NetscapeCertType.smimeCA)
+
+
+ This is designed to parse
+ the PublicKeyAndChallenge created by the KEYGEN tag included by
+ Mozilla based browsers.
+
+ PublicKeyAndChallenge ::= SEQUENCE {
+ spki SubjectPublicKeyInfo,
+ challenge IA5STRING
+ }
+
+
+
+
+ Utility class for fetching curves using their NIST names as published in FIPS-PUB 186-3
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ From RFC 3657
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ BasicOcspResponse ::= Sequence {
+ tbsResponseData ResponseData,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT Sequence OF Certificate OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CertID ::= Sequence {
+ hashAlgorithm AlgorithmIdentifier,
+ issuerNameHash OCTET STRING, -- Hash of Issuer's DN
+ issuerKeyHash OCTET STRING, -- Hash of Issuers public key
+ serialNumber CertificateSerialNumber }
+
+
+
+ create a CertStatus object with a tag of zero.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CertStatus ::= CHOICE {
+ good [0] IMPLICIT Null,
+ revoked [1] IMPLICIT RevokedInfo,
+ unknown [2] IMPLICIT UnknownInfo }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CrlID ::= Sequence {
+ crlUrl [0] EXPLICIT IA5String OPTIONAL,
+ crlNum [1] EXPLICIT Integer OPTIONAL,
+ crlTime [2] EXPLICIT GeneralizedTime OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OcspRequest ::= Sequence {
+ tbsRequest TBSRequest,
+ optionalSignature [0] EXPLICIT Signature OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OcspResponse ::= Sequence {
+ responseStatus OcspResponseStatus,
+ responseBytes [0] EXPLICIT ResponseBytes OPTIONAL }
+
+
+
+ The OcspResponseStatus enumeration.
+
+ OcspResponseStatus ::= Enumerated {
+ successful (0), --Response has valid confirmations
+ malformedRequest (1), --Illegal confirmation request
+ internalError (2), --Internal error in issuer
+ tryLater (3), --Try again later
+ --(4) is not used
+ sigRequired (5), --Must sign the request
+ unauthorized (6) --Request unauthorized
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Request ::= Sequence {
+ reqCert CertID,
+ singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponderID ::= CHOICE {
+ byName [1] Name,
+ byKey [2] KeyHash }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponseBytes ::= Sequence {
+ responseType OBJECT IDENTIFIER,
+ response OCTET STRING }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ResponseData ::= Sequence {
+ version [0] EXPLICIT Version DEFAULT v1,
+ responderID ResponderID,
+ producedAt GeneralizedTime,
+ responses Sequence OF SingleResponse,
+ responseExtensions [1] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ RevokedInfo ::= Sequence {
+ revocationTime GeneralizedTime,
+ revocationReason [0] EXPLICIT CRLReason OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ServiceLocator ::= Sequence {
+ issuer Name,
+ locator AuthorityInfoAccessSyntax OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Signature ::= Sequence {
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT Sequence OF Certificate OPTIONAL}
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SingleResponse ::= Sequence {
+ certID CertID,
+ certStatus CertStatus,
+ thisUpdate GeneralizedTime,
+ nextUpdate [0] EXPLICIT GeneralizedTime OPTIONAL,
+ singleExtensions [1] EXPLICIT Extensions OPTIONAL }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ TBSRequest ::= Sequence {
+ version [0] EXPLICIT Version DEFAULT v1,
+ requestorName [1] EXPLICIT GeneralName OPTIONAL,
+ requestList Sequence OF Request,
+ requestExtensions [2] EXPLICIT Extensions OPTIONAL }
+
+
+
+ return an Attribute object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attr ::= Sequence {
+ attrType OBJECT IDENTIFIER,
+ attrValues Set OF AttributeValue
+ }
+
+
+
+ Pkcs10 Certfication request object.
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+
+
+ Pkcs10 CertificationRequestInfo object.
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ContentInfo ::= Sequence {
+ contentType ContentType,
+ content
+ [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
+
+
+
+ The EncryptedData object.
+
+ EncryptedData ::= Sequence {
+ version Version,
+ encryptedContentInfo EncryptedContentInfo
+ }
+
+
+ EncryptedContentInfo ::= Sequence {
+ contentType ContentType,
+ contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
+ encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL
+ }
+
+ EncryptedContent ::= OCTET STRING
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ EncryptedPrivateKeyInfo ::= Sequence {
+ encryptionAlgorithm AlgorithmIdentifier {{KeyEncryptionAlgorithms}},
+ encryptedData EncryptedData
+ }
+
+ EncryptedData ::= OCTET STRING
+
+ KeyEncryptionAlgorithms ALGORITHM-IDENTIFIER ::= {
+ ... -- For local profiles
+ }
+
+
+
+
+ MacData ::= SEQUENCE {
+ mac DigestInfo,
+ macSalt OCTET STRING,
+ iterations INTEGER DEFAULT 1
+ -- Note: The default is for historic reasons and its use is deprecated. A
+ -- higher value, like 1024 is recommended.
+
+ @return the basic DERObject construction.
+
+
+ the infamous Pfx from Pkcs12
+
+
+ write out an RSA private key with its associated information
+ as described in Pkcs8.
+
+ PrivateKeyInfo ::= Sequence {
+ version Version,
+ privateKeyAlgorithm AlgorithmIdentifier {{PrivateKeyAlgorithms}},
+ privateKey PrivateKey,
+ attributes [0] IMPLICIT Attributes OPTIONAL
+ }
+ Version ::= Integer {v1(0)} (v1,...)
+
+ PrivateKey ::= OCTET STRING
+
+ Attributes ::= Set OF Attr
+
+
+
+ The default version
+
+
+
+ RSAES-OAEP-params ::= SEQUENCE {
+ hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
+ maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
+ pSourceAlgorithm [2] PKCS1PSourceAlgorithms DEFAULT pSpecifiedEmpty
+ }
+
+ OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-sha1 PARAMETERS NULL }|
+ { OID id-sha256 PARAMETERS NULL }|
+ { OID id-sha384 PARAMETERS NULL }|
+ { OID id-sha512 PARAMETERS NULL },
+ ... -- Allows for future expansion --
+ }
+ PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ ... -- Allows for future expansion --
+ }
+ PKCS1PSourceAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-pSpecified PARAMETERS OCTET STRING },
+ ... -- Allows for future expansion --
+ }
+
+ @return the asn1 primitive representing the parameters.
+
+
+ This outputs the key in Pkcs1v2 format.
+
+ RsaPrivateKey ::= Sequence {
+ version Version,
+ modulus Integer, -- n
+ publicExponent Integer, -- e
+ privateExponent Integer, -- d
+ prime1 Integer, -- p
+ prime2 Integer, -- q
+ exponent1 Integer, -- d mod (p-1)
+ exponent2 Integer, -- d mod (q-1)
+ coefficient Integer -- (inverse of q) mod p
+ }
+
+ Version ::= Integer
+
+ This routine is written to output Pkcs1 version 0, private keys.
+
+
+ The default version
+
+
+
+ RSASSA-PSS-params ::= SEQUENCE {
+ hashAlgorithm [0] OAEP-PSSDigestAlgorithms DEFAULT sha1,
+ maskGenAlgorithm [1] PKCS1MGFAlgorithms DEFAULT mgf1SHA1,
+ saltLength [2] INTEGER DEFAULT 20,
+ trailerField [3] TrailerField DEFAULT trailerFieldBC
+ }
+
+ OAEP-PSSDigestAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-sha1 PARAMETERS NULL }|
+ { OID id-sha256 PARAMETERS NULL }|
+ { OID id-sha384 PARAMETERS NULL }|
+ { OID id-sha512 PARAMETERS NULL },
+ ... -- Allows for future expansion --
+ }
+
+ PKCS1MGFAlgorithms ALGORITHM-IDENTIFIER ::= {
+ { OID id-mgf1 PARAMETERS OAEP-PSSDigestAlgorithms },
+ ... -- Allows for future expansion --
+ }
+
+ TrailerField ::= INTEGER { trailerFieldBC(1) }
+
+ @return the asn1 primitive representing the parameters.
+
+
+ a Pkcs#7 signed data object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignedData ::= Sequence {
+ version Version,
+ digestAlgorithms DigestAlgorithmIdentifiers,
+ contentInfo ContentInfo,
+ certificates
+ [0] IMPLICIT ExtendedCertificatesAndCertificates
+ OPTIONAL,
+ crls
+ [1] IMPLICIT CertificateRevocationLists OPTIONAL,
+ signerInfos SignerInfos }
+
+
+
+ a Pkcs#7 signer info object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SignerInfo ::= Sequence {
+ version Version,
+ issuerAndSerialNumber IssuerAndSerialNumber,
+ digestAlgorithm DigestAlgorithmIdentifier,
+ authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
+ digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
+ encryptedDigest EncryptedDigest,
+ unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
+ }
+
+ EncryptedDigest ::= OCTET STRING
+
+ DigestAlgorithmIdentifier ::= AlgorithmIdentifier
+
+ DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
+
+
+
+ the elliptic curve private key object from SEC 1
+
+
+ ECPrivateKey ::= SEQUENCE {
+ version INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1),
+ privateKey OCTET STRING,
+ parameters [0] Parameters OPTIONAL,
+ publicKey [1] BIT STRING OPTIONAL }
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ EllipticCurve OBJECT IDENTIFIER ::= {
+ iso(1) identified-organization(3) certicom(132) curve(0)
+ }
+
+
+ Handler class for dealing with S/MIME Capabilities
+
+
+ general preferences
+
+
+ encryption algorithms preferences
+
+
+ return an Attr object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ returns an ArrayList with 0 or more objects of all the capabilities
+ matching the passed in capability Oid. If the Oid passed is null the
+ entire set is returned.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SMIMECapabilities ::= Sequence OF SMIMECapability
+
+
+
+ general preferences
+
+
+ encryption algorithms preferences
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SMIMECapability ::= Sequence {
+ capabilityID OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY capabilityID OPTIONAL
+ }
+
+
+
+ Handler for creating a vector S/MIME Capabilities
+
+
+ The SmimeEncryptionKeyPreference object.
+
+ SmimeEncryptionKeyPreference ::= CHOICE {
+ issuerAndSerialNumber [0] IssuerAndSerialNumber,
+ receipentKeyId [1] RecipientKeyIdentifier,
+ subjectAltKeyIdentifier [2] SubjectKeyIdentifier
+ }
+
+
+
+ @param sKeyId the subjectKeyIdentifier value (normally the X.509 one)
+
+
+ elliptic curves defined in "ECC Brainpool Standard Curves and Curve Generation"
+ http://www.ecc-brainpool.org/download/draft_pkix_additional_ecc_dp.txt
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+
+ Accuracy ::= SEQUENCE {
+ seconds INTEGER OPTIONAL,
+ millis [0] INTEGER (1..999) OPTIONAL,
+ micros [1] INTEGER (1..999) OPTIONAL
+ }
+
+
+
+ @param o
+ @return a MessageImprint object.
+
+
+
+ MessageImprint ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ hashedMessage OCTET STRING }
+
+
+
+
+
+ TstInfo ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ policy TSAPolicyId,
+ messageImprint MessageImprint,
+ -- MUST have the same value as the similar field in
+ -- TimeStampReq
+ serialNumber INTEGER,
+ -- Time-Stamping users MUST be ready to accommodate integers
+ -- up to 160 bits.
+ genTime GeneralizedTime,
+ accuracy Accuracy OPTIONAL,
+ ordering BOOLEAN DEFAULT FALSE,
+ nonce INTEGER OPTIONAL,
+ -- MUST be present if the similar field was present
+ -- in TimeStampReq. In that case it MUST have the same value.
+ tsa [0] GeneralName OPTIONAL,
+ extensions [1] IMPLICIT Extensions OPTIONAL }
+
+
+
+
+
+ TimeStampReq ::= SEQUENCE {
+ version INTEGER { v1(1) },
+ messageImprint MessageImprint,
+ --a hash algorithm OID and the hash value of the data to be
+ --time-stamped
+ reqPolicy TSAPolicyId OPTIONAL,
+ nonce INTEGER OPTIONAL,
+ certReq BOOLEAN DEFAULT FALSE,
+ extensions [0] IMPLICIT Extensions OPTIONAL
+ }
+
+
+
+
+ TimeStampResp ::= SEQUENCE {
+ status PkiStatusInfo,
+ timeStampToken TimeStampToken OPTIONAL }
+
+
+
+ dump a Der object as a formatted string with indentation
+
+ @param obj the Asn1Object to be dumped out.
+
+
+ dump out a DER object as a formatted string, in non-verbose mode
+
+ @param obj the Asn1Encodable to be dumped out.
+ @return the resulting string.
+
+
+ Dump out the object as a string
+
+ @param obj the Asn1Encodable to be dumped out.
+ @param verbose if true, dump out the contents of octet and bit strings.
+ @return the resulting string.
+
+
+
+ DirectoryString ::= CHOICE {
+ teletexString TeletexString (SIZE (1..MAX)),
+ printableString PrintableString (SIZE (1..MAX)),
+ universalString UniversalString (SIZE (1..MAX)),
+ utf8String UTF8String (SIZE (1..MAX)),
+ bmpString BMPString (SIZE (1..MAX)) }
+
+
+
+ The AccessDescription object.
+
+ AccessDescription ::= SEQUENCE {
+ accessMethod OBJECT IDENTIFIER,
+ accessLocation GeneralName }
+
+
+
+ create an AccessDescription with the oid and location provided.
+
+
+
+ @return the access method.
+
+
+
+ @return the access location
+
+
+
+ Return the OID in the Algorithm entry of this identifier.
+
+
+
+
+ Return the parameters structure in the Parameters entry of this identifier.
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AlgorithmIdentifier ::= Sequence {
+ algorithm OBJECT IDENTIFIER,
+ parameters ANY DEFINED BY algorithm OPTIONAL }
+
+
+
+
+ Don't use this one if you are trying to be RFC 3281 compliant.
+ Use it for v1 attribute certificates only.
+
+ Our GeneralNames structure
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttCertIssuer ::= CHOICE {
+ v1Form GeneralNames, -- MUST NOT be used in this
+ -- profile
+ v2Form [0] V2Form -- v2 only
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttCertValidityPeriod ::= Sequence {
+ notBeforeTime GeneralizedTime,
+ notAfterTime GeneralizedTime
+ }
+
+
+
+ return an Attr object from the given object.
+
+ @param o the object we want converted.
+ @exception ArgumentException if the object cannot be converted.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Attr ::= Sequence {
+ attrType OBJECT IDENTIFIER,
+ attrValues Set OF AttributeValue
+ }
+
+
+
+ @param obj
+ @return
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttributeCertificate ::= Sequence {
+ acinfo AttributeCertificateInfo,
+ signatureAlgorithm AlgorithmIdentifier,
+ signatureValue BIT STRING
+ }
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ AttributeCertificateInfo ::= Sequence {
+ version AttCertVersion -- version is v2,
+ holder Holder,
+ issuer AttCertIssuer,
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attrCertValidityPeriod AttCertValidityPeriod,
+ attributes Sequence OF Attr,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+ }
+
+ AttCertVersion ::= Integer { v2(1) }
+
+
+
+ The AuthorityInformationAccess object.
+
+ id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 }
+
+ AuthorityInfoAccessSyntax ::=
+ Sequence SIZE (1..MAX) OF AccessDescription
+ AccessDescription ::= Sequence {
+ accessMethod OBJECT IDENTIFIER,
+ accessLocation GeneralName }
+
+ id-ad OBJECT IDENTIFIER ::= { id-pkix 48 }
+ id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 }
+ id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
+
+
+
+ create an AuthorityInformationAccess with the oid and location provided.
+
+
+ The AuthorityKeyIdentifier object.
+
+ id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 }
+
+ AuthorityKeyIdentifier ::= Sequence {
+ keyIdentifier [0] IMPLICIT KeyIdentifier OPTIONAL,
+ authorityCertIssuer [1] IMPLICIT GeneralNames OPTIONAL,
+ authorityCertSerialNumber [2] IMPLICIT CertificateSerialNumber OPTIONAL }
+
+ KeyIdentifier ::= OCTET STRING
+
+
+
+
+ *
+ * Calulates the keyidentifier using a SHA1 hash over the BIT STRING
+ * from SubjectPublicKeyInfo as defined in RFC2459.
+ *
+ * Example of making a AuthorityKeyIdentifier:
+ *
+ * SubjectPublicKeyInfo apki = new SubjectPublicKeyInfo((ASN1Sequence)new ASN1InputStream(
+ * publicKey.getEncoded()).readObject());
+ * AuthorityKeyIdentifier aki = new AuthorityKeyIdentifier(apki);
+ *
+ *
+ *
+
+
+ create an AuthorityKeyIdentifier with the GeneralNames tag and
+ the serial number provided as well.
+
+
+ create an AuthorityKeyIdentifier with the GeneralNames tag and
+ the serial number provided.
+
+
+ create an AuthorityKeyIdentifier with a precomputed key identifier
+
+
+ create an AuthorityKeyIdentifier with a precomupted key identifier
+ and the GeneralNames tag and the serial number provided as well.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+ create a cA=true object for the given path length constraint.
+
+ @param pathLenConstraint
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ BasicConstraints := Sequence {
+ cA Boolean DEFAULT FALSE,
+ pathLenConstraint Integer (0..MAX) OPTIONAL
+ }
+
+
+
+ Return the distribution points making up the sequence.
+
+ @return DistributionPoint[]
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ CrlDistPoint ::= Sequence SIZE {1..MAX} OF DistributionPoint
+
+
+
+ The CRLNumber object.
+
+ CRLNumber::= Integer(0..MAX)
+
+
+
+ The CRLReason enumeration.
+
+ CRLReason ::= Enumerated {
+ unspecified (0),
+ keyCompromise (1),
+ cACompromise (2),
+ affiliationChanged (3),
+ superseded (4),
+ cessationOfOperation (5),
+ certificateHold (6),
+ removeFromCRL (8),
+ privilegeWithdrawn (9),
+ aACompromise (10)
+ }
+
+
+
+ CertPolicyId, used in the CertificatePolicies and PolicyMappings
+ X509V3 Extensions.
+
+
+ CertPolicyId ::= OBJECT IDENTIFIER
+
+
+
+ PKIX RFC-2459
+
+ The X.509 v2 CRL syntax is as follows. For signature calculation,
+ the data that is to be signed is ASN.1 Der encoded.
+
+
+ CertificateList ::= Sequence {
+ tbsCertList TbsCertList,
+ signatureAlgorithm AlgorithmIdentifier,
+ signatureValue BIT STRING }
+
+
+
+ This class helps to support crossCerfificatePairs in a LDAP directory
+ according RFC 2587
+
+
+ crossCertificatePairATTRIBUTE::={
+ WITH SYNTAX CertificatePair
+ EQUALITY MATCHING RULE certificatePairExactMatch
+ ID joint-iso-ccitt(2) ds(5) attributeType(4) crossCertificatePair(40)}
+
+
+ The forward elements of the crossCertificatePair attribute of a
+ CA's directory entry shall be used to store all, except self-issued
+ certificates issued to this CA. Optionally, the reverse elements of the
+ crossCertificatePair attribute, of a CA's directory entry may contain a
+ subset of certificates issued by this CA to other CAs. When both the forward
+ and the reverse elements are present in a single attribute value, issuer name
+ in one certificate shall match the subject name in the other and vice versa,
+ and the subject public key in one certificate shall be capable of verifying
+ the digital signature on the other certificate and vice versa.
+
+ When a reverse element is present, the forward element value and the reverse
+ element value need not be stored in the same attribute value; in other words,
+ they can be stored in either a single attribute value or two attribute
+ values.
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type CertificatePair:
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param forward Certificates issued to this CA.
+ @param reverse Certificates issued by this CA to other CAs.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ CertificatePair ::= SEQUENCE {
+ forward [0] Certificate OPTIONAL,
+ reverse [1] Certificate OPTIONAL,
+ -- at least one of the pair shall be present -- }
+
+
+ @return a DERObject
+
+
+ @return Returns the forward.
+
+
+ @return Returns the reverse.
+
+
+ Construct a CertificatePolicies object containing one PolicyInformation.
+
+ @param name the name to be contained.
+
+
+ Produce an object suitable for an ASN1OutputStream.
+
+ CertificatePolicies ::= SEQUENCE SIZE {1..MAX} OF PolicyInformation
+
+
+
+ The DigestInfo object.
+
+ DigestInfo::=Sequence{
+ digestAlgorithm AlgorithmIdentifier,
+ digest OCTET STRING }
+
+
+
+ DisplayText
class, used in
+ CertificatePolicies
X509 V3 extensions (in policy qualifiers).
+
+ It stores a string in a chosen encoding.
+
+ DisplayText ::= CHOICE {
+ ia5String IA5String (SIZE (1..200)),
+ visibleString VisibleString (SIZE (1..200)),
+ bmpString BMPString (SIZE (1..200)),
+ utf8String UTF8String (SIZE (1..200)) }
+
+ @see PolicyQualifierInfo
+ @see PolicyInformation
+
+
+ Constant corresponding to ia5String encoding.
+
+
+
+ Constant corresponding to bmpString encoding.
+
+
+
+ Constant corresponding to utf8String encoding.
+
+
+
+ Constant corresponding to visibleString encoding.
+
+
+
+ Describe constant DisplayTextMaximumSize
here.
+
+
+
+ Creates a new DisplayText
instance.
+
+ @param type the desired encoding type for the text.
+ @param text the text to store. Strings longer than 200
+ characters are truncated.
+
+
+ Creates a new DisplayText
instance.
+
+ @param text the text to encapsulate. Strings longer than 200
+ characters are truncated.
+
+
+ Creates a new DisplayText
instance.
+ Useful when reading back a DisplayText
class
+ from it's Asn1Encodable form.
+
+ @param contents an Asn1Encodable
instance.
+
+
+ Returns the stored string
object.
+
+ @return the stored text as a string
.
+
+
+ The DistributionPoint object.
+
+ DistributionPoint ::= Sequence {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ reasons [1] ReasonFlags OPTIONAL,
+ cRLIssuer [2] GeneralNames OPTIONAL
+ }
+
+
+
+ The DistributionPointName object.
+
+ DistributionPointName ::= CHOICE {
+ fullName [0] GeneralNames,
+ nameRelativeToCRLIssuer [1] RDN
+ }
+
+
+
+ The extendedKeyUsage object.
+
+ extendedKeyUsage ::= Sequence SIZE (1..MAX) OF KeyPurposeId
+
+
+
+ Returns all extended key usages.
+ The returned ArrayList contains DerObjectIdentifier instances.
+ @return An ArrayList with all key purposes.
+
+
+ The GeneralName object.
+
+ GeneralName ::= CHOICE {
+ otherName [0] OtherName,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER}
+
+ OtherName ::= Sequence {
+ type-id OBJECT IDENTIFIER,
+ value [0] EXPLICIT ANY DEFINED BY type-id }
+
+ EDIPartyName ::= Sequence {
+ nameAssigner [0] DirectoryString OPTIONAL,
+ partyName [1] DirectoryString }
+
+
+
+ When the subjectAltName extension contains an Internet mail address,
+ the address MUST be included as an rfc822Name. The format of an
+ rfc822Name is an "addr-spec" as defined in RFC 822 [RFC 822].
+
+ When the subjectAltName extension contains a domain name service
+ label, the domain name MUST be stored in the dNSName (an IA5String).
+ The name MUST be in the "preferred name syntax," as specified by RFC
+ 1034 [RFC 1034].
+
+ When the subjectAltName extension contains a URI, the name MUST be
+ stored in the uniformResourceIdentifier (an IA5String). The name MUST
+ be a non-relative URL, and MUST follow the URL syntax and encoding
+ rules specified in [RFC 1738]. The name must include both a scheme
+ (e.g., "http" or "ftp") and a scheme-specific-part. The scheme-
+ specific-part must include a fully qualified domain name or IP
+ address as the host.
+
+ When the subjectAltName extension contains a iPAddress, the address
+ MUST be stored in the octet string in "network byte order," as
+ specified in RFC 791 [RFC 791]. The least significant bit (LSB) of
+ each octet is the LSB of the corresponding byte in the network
+ address. For IP Version 4, as specified in RFC 791, the octet string
+ MUST contain exactly four octets. For IP Version 6, as specified in
+ RFC 1883, the octet string MUST contain exactly sixteen octets [RFC
+ 1883].
+
+
+ Create a GeneralName for the given tag from the passed in string.
+
+ This constructor can handle:
+
+ - rfc822Name
+ - iPAddress
+ - directoryName
+ - dNSName
+ - uniformResourceIdentifier
+ - registeredID
+
+ For x400Address, otherName and ediPartyName there is no common string
+ format defined.
+
+ Note: A directory name can be encoded in different ways into a byte
+ representation. Be aware of this if the byte representation is used for
+ comparing results.
+
+
+ @param tag tag number
+ @param name string representation of name
+ @throws ArgumentException if the string encoding is not correct or
+ not supported.
+
+
+ Construct a GeneralNames object containing one GeneralName.
+ The name to be contained.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ GeneralNames ::= Sequence SIZE {1..MAX} OF GeneralName
+
+
+
+ Class for containing a restriction object subtrees in NameConstraints. See
+ RFC 3280.
+
+
+
+ GeneralSubtree ::= SEQUENCE
+ {
+ baseName GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.NameConstraints
+
+
+
+ Constructor from a given details.
+
+ According RFC 3280, the minimum and maximum fields are not used with any
+ name forms, thus minimum MUST be zero, and maximum MUST be absent.
+
+ If minimum is null
, zero is assumed, if
+ maximum is null
, maximum is absent.
+
+ @param baseName
+ A restriction.
+ @param minimum
+ Minimum
+
+ @param maximum
+ Maximum
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ GeneralSubtree ::= SEQUENCE
+ {
+ baseName GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL
+ }
+
+
+ @return a DERObject
+
+
+ The Holder object.
+
+ For an v2 attribute certificate this is:
+
+
+ Holder ::= SEQUENCE {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+ For an v1 attribute certificate this is:
+
+
+ subject CHOICE {
+ baseCertificateID [0] IssuerSerial,
+ -- associated with a Public Key Certificate
+ subjectName [1] GeneralNames },
+ -- associated with a name
+
+
+
+
+ Constructor for a holder for an v1 attribute certificate.
+
+ @param tagObj The ASN.1 tagged holder object.
+
+
+ Constructor for a holder for an v2 attribute certificate. *
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructs a holder from a IssuerSerial.
+ @param baseCertificateID The IssuerSerial.
+ @param version The version of the attribute certificate.
+
+
+ Returns 1 for v2 attribute certificates or 0 for v1 attribute
+ certificates.
+ @return The version of the attribute certificate.
+
+
+ Constructs a holder with an entityName for v2 attribute certificates or
+ with a subjectName for v1 attribute certificates.
+
+ @param entityName The entity or subject name.
+
+
+ Constructs a holder with an entityName for v2 attribute certificates or
+ with a subjectName for v1 attribute certificates.
+
+ @param entityName The entity or subject name.
+ @param version The version of the attribute certificate.
+
+
+ Constructs a holder from an object digest info.
+
+ @param objectDigestInfo The object digest info object.
+
+
+ Returns the entityName for an v2 attribute certificate or the subjectName
+ for an v1 attribute certificate.
+
+ @return The entityname or subjectname.
+
+
+ The Holder object.
+
+ Holder ::= Sequence {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+ Implementation of IetfAttrSyntax
as specified by RFC3281.
+
+
+
+
+
+
+
+
+ IetfAttrSyntax ::= Sequence {
+ policyAuthority [0] GeneralNames OPTIONAL,
+ values Sequence OF CHOICE {
+ octets OCTET STRING,
+ oid OBJECT IDENTIFIER,
+ string UTF8String
+ }
+ }
+
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ IssuerSerial ::= Sequence {
+ issuer GeneralNames,
+ serial CertificateSerialNumber,
+ issuerUid UniqueIdentifier OPTIONAL
+ }
+
+
+
+
+ IssuingDistributionPoint ::= SEQUENCE {
+ distributionPoint [0] DistributionPointName OPTIONAL,
+ onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE,
+ onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE,
+ onlySomeReasons [3] ReasonFlags OPTIONAL,
+ indirectCRL [4] BOOLEAN DEFAULT FALSE,
+ onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE }
+
+
+
+ Constructor from given details.
+
+ @param distributionPoint
+ May contain an URI as pointer to most current CRL.
+ @param onlyContainsUserCerts Covers revocation information for end certificates.
+ @param onlyContainsCACerts Covers revocation information for CA certificates.
+
+ @param onlySomeReasons
+ Which revocation reasons does this point cover.
+ @param indirectCRL
+ If true
then the CRL contains revocation
+ information about certificates ssued by other CAs.
+ @param onlyContainsAttributeCerts Covers revocation information for attribute certificates.
+
+
+ Constructor from Asn1Sequence
+
+
+ @return Returns the distributionPoint.
+
+
+ @return Returns the onlySomeReasons.
+
+
+ The KeyPurposeID object.
+
+ KeyPurposeID ::= OBJECT IDENTIFIER
+
+
+
+ The KeyUsage object.
+
+ id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
+
+ KeyUsage ::= BIT STRING {
+ digitalSignature (0),
+ nonRepudiation (1),
+ keyEncipherment (2),
+ dataEncipherment (3),
+ keyAgreement (4),
+ keyCertSign (5),
+ cRLSign (6),
+ encipherOnly (7),
+ decipherOnly (8) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (KeyUsage.keyEncipherment | KeyUsage.dataEncipherment)
+
+
+ Constructor from a given details.
+
+ permitted and excluded are Vectors of GeneralSubtree objects.
+
+ @param permitted Permitted subtrees
+ @param excluded Excluded subtrees
+
+
+ NoticeReference
class, used in
+ CertificatePolicies
X509 V3 extensions
+ (in policy qualifiers).
+
+
+ NoticeReference ::= Sequence {
+ organization DisplayText,
+ noticeNumbers Sequence OF Integer }
+
+
+
+ @see PolicyQualifierInfo
+ @see PolicyInformation
+
+
+ Creates a new NoticeReference
instance.
+
+ @param organization a String
value
+ @param numbers a Vector
value
+
+
+ Creates a new NoticeReference
instance.
+
+ @param organization a String
value
+ @param noticeNumbers an ASN1EncodableVector
value
+
+
+ Creates a new NoticeReference
instance.
+
+ @param organization displayText
+ @param noticeNumbers an ASN1EncodableVector
value
+
+
+ Creates a new NoticeReference
instance.
+ Useful for reconstructing a NoticeReference
+ instance from its encodable/encoded form.
+
+ @param as an Asn1Sequence
value obtained from either
+ calling @{link ToAsn1Object()} for a NoticeReference
+ instance or from parsing it from a Der-encoded stream.
+
+
+ Describe ToAsn1Object
method here.
+
+ @return a Asn1Object
value
+
+
+ ObjectDigestInfo ASN.1 structure used in v2 attribute certificates.
+
+
+
+ ObjectDigestInfo ::= SEQUENCE {
+ digestedObjectType ENUMERATED {
+ publicKey (0),
+ publicKeyCert (1),
+ otherObjectTypes (2) },
+ -- otherObjectTypes MUST NOT
+ -- be used in this profile
+ otherObjectTypeID OBJECT IDENTIFIER OPTIONAL,
+ digestAlgorithm AlgorithmIdentifier,
+ objectDigest BIT STRING
+ }
+
+
+
+
+
+ The public key is hashed.
+
+
+ The public key certificate is hashed.
+
+
+ An other object is hashed.
+
+
+ Constructor from given details.
+
+ If digestedObjectType
is not {@link #publicKeyCert} or
+ {@link #publicKey} otherObjectTypeID
must be given,
+ otherwise it is ignored.
+
+ @param digestedObjectType The digest object type.
+ @param otherObjectTypeID The object type ID for
+ otherObjectDigest
.
+ @param digestAlgorithm The algorithm identifier for the hash.
+ @param objectDigest The hash value.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+
+
+ ObjectDigestInfo ::= SEQUENCE {
+ digestedObjectType ENUMERATED {
+ publicKey (0),
+ publicKeyCert (1),
+ otherObjectTypes (2) },
+ -- otherObjectTypes MUST NOT
+ -- be used in this profile
+ otherObjectTypeID OBJECT IDENTIFIER OPTIONAL,
+ digestAlgorithm AlgorithmIdentifier,
+ objectDigest BIT STRING
+ }
+
+
+
+
+ PolicyMappings V3 extension, described in RFC3280.
+
+ PolicyMappings ::= Sequence SIZE (1..MAX) OF Sequence {
+ issuerDomainPolicy CertPolicyId,
+ subjectDomainPolicy CertPolicyId }
+
+
+ @see RFC 3280, section 4.2.1.6
+
+
+ Creates a new PolicyMappings
instance.
+
+ @param seq an Asn1Sequence
constructed as specified
+ in RFC 3280
+
+
+ Creates a new PolicyMappings
instance.
+
+ @param mappings a HashMap
value that maps
+ string
oids
+ to other string
oids.
+
+
+ PolicyQualifierId, used in the CertificatePolicies
+ X509V3 extension.
+
+
+ id-qt OBJECT IDENTIFIER ::= { id-pkix 2 }
+ id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 }
+ id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 }
+ PolicyQualifierId ::=
+ OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice )
+
+
+
+ Policy qualifiers, used in the X509V3 CertificatePolicies
+ extension.
+
+
+ PolicyQualifierInfo ::= Sequence {
+ policyQualifierId PolicyQualifierId,
+ qualifier ANY DEFINED BY policyQualifierId }
+
+
+
+ Creates a new PolicyQualifierInfo
instance.
+
+ @param policyQualifierId a PolicyQualifierId
value
+ @param qualifier the qualifier, defined by the above field.
+
+
+ Creates a new PolicyQualifierInfo
containing a
+ cPSuri qualifier.
+
+ @param cps the CPS (certification practice statement) uri as a
+ string
.
+
+
+ Creates a new PolicyQualifierInfo
instance.
+
+ @param as PolicyQualifierInfo
X509 structure
+ encoded as an Asn1Sequence.
+
+
+ Returns a Der-encodable representation of this instance.
+
+ @return a Asn1Object
value
+
+
+
+
+ PrivateKeyUsagePeriod ::= SEQUENCE
+ {
+ notBefore [0] GeneralizedTime OPTIONAL,
+ notAfter [1] GeneralizedTime OPTIONAL }
+
+
+
+
+ This outputs the key in Pkcs1v2 format.
+
+ RSAPublicKey ::= Sequence {
+ modulus Integer, -- n
+ publicExponent Integer, -- e
+ }
+
+
+
+ The ReasonFlags object.
+
+ ReasonFlags ::= BIT STRING {
+ unused(0),
+ keyCompromise(1),
+ cACompromise(2),
+ affiliationChanged(3),
+ superseded(4),
+ cessationOfOperation(5),
+ certficateHold(6)
+ }
+
+
+
+ @param reasons - the bitwise OR of the Key Reason flags giving the
+ allowed uses for the key.
+
+
+ Implementation of the RoleSyntax object as specified by the RFC3281.
+
+
+ RoleSyntax ::= SEQUENCE {
+ roleAuthority [0] GeneralNames OPTIONAL,
+ roleName [1] GeneralName
+ }
+
+
+
+ RoleSyntax factory method.
+ @param obj the object used to construct an instance of
+ RoleSyntax
. It must be an instance of RoleSyntax
+
or Asn1Sequence
.
+ @return the instance of RoleSyntax
built from the
+ supplied object.
+ @throws java.lang.ArgumentException if the object passed
+ to the factory is not an instance of RoleSyntax
or
+ Asn1Sequence
.
+
+
+ Constructor.
+ @param roleAuthority the role authority of this RoleSyntax.
+ @param roleName the role name of this RoleSyntax.
+
+
+ Constructor. Invoking this constructor is the same as invoking
+ new RoleSyntax(null, roleName)
.
+ @param roleName the role name of this RoleSyntax.
+
+
+ Utility constructor. Takes a string
argument representing
+ the role name, builds a GeneralName
to hold the role name
+ and calls the constructor that takes a GeneralName
.
+ @param roleName
+
+
+ Constructor that builds an instance of RoleSyntax
by
+ extracting the encoded elements from the Asn1Sequence
+ object supplied.
+ @param seq an instance of Asn1Sequence
that holds
+ the encoded elements used to build this RoleSyntax
.
+
+
+ Gets the role authority of this RoleSyntax.
+ @return an instance of GeneralNames
holding the
+ role authority of this RoleSyntax.
+
+
+ Gets the role name of this RoleSyntax.
+ @return an instance of GeneralName
holding the
+ role name of this RoleSyntax.
+
+
+ Gets the role name as a java.lang.string
object.
+ @return the role name of this RoleSyntax represented as a
+ string
object.
+
+
+ Gets the role authority as a string[]
object.
+ @return the role authority of this RoleSyntax represented as a
+ string[]
array.
+
+
+ Implementation of the method ToAsn1Object
as
+ required by the superclass ASN1Encodable
.
+
+
+ RoleSyntax ::= SEQUENCE {
+ roleAuthority [0] GeneralNames OPTIONAL,
+ roleName [1] GeneralName
+ }
+
+
+
+ This extension may contain further X.500 attributes of the subject. See also
+ RFC 3039.
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @see org.bouncycastle.asn1.x509.X509Name for AttributeType ObjectIdentifiers.
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type SubjectDirectoryAttributes:
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @param seq
+ The ASN.1 sequence.
+
+
+ Constructor from an ArrayList of attributes.
+
+ The ArrayList consists of attributes of type {@link Attribute Attribute}
+
+ @param attributes The attributes.
+
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ SubjectDirectoryAttributes ::= Attributes
+ Attributes ::= SEQUENCE SIZE (1..MAX) OF Attribute
+ Attribute ::= SEQUENCE
+ {
+ type AttributeType
+ values SET OF AttributeValue
+ }
+
+ AttributeType ::= OBJECT IDENTIFIER
+ AttributeValue ::= ANY DEFINED BY AttributeType
+
+
+ @return a DERObject
+
+
+ @return Returns the attributes.
+
+
+ The SubjectKeyIdentifier object.
+
+ SubjectKeyIdentifier::= OCTET STRING
+
+
+
+ Calculates the keyIdentifier using a SHA1 hash over the BIT STRING
+ from SubjectPublicKeyInfo as defined in RFC3280.
+
+ @param spki the subject public key info.
+
+
+ Return a RFC 3280 type 1 key identifier. As in:
+
+ (1) The keyIdentifier is composed of the 160-bit SHA-1 hash of the
+ value of the BIT STRING subjectPublicKey (excluding the tag,
+ length, and number of unused bits).
+
+ @param keyInfo the key info object containing the subjectPublicKey field.
+ @return the key identifier.
+
+
+ Return a RFC 3280 type 2 key identifier. As in:
+
+ (2) The keyIdentifier is composed of a four bit type field with
+ the value 0100 followed by the least significant 60 bits of the
+ SHA-1 hash of the value of the BIT STRING subjectPublicKey.
+
+ @param keyInfo the key info object containing the subjectPublicKey field.
+ @return the key identifier.
+
+
+ The object that contains the public key stored in a certficate.
+
+ The GetEncoded() method in the public keys in the JCE produces a DER
+ encoded one of these.
+
+
+ for when the public key is an encoded object - if the bitstring
+ can't be decoded this routine raises an IOException.
+
+ @exception IOException - if the bit string doesn't represent a Der
+ encoded object.
+
+
+ for when the public key is raw bits...
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ SubjectPublicKeyInfo ::= Sequence {
+ algorithm AlgorithmIdentifier,
+ publicKey BIT STRING }
+
+
+
+ PKIX RFC-2459 - TbsCertList object.
+
+ TbsCertList ::= Sequence {
+ version Version OPTIONAL,
+ -- if present, shall be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates Sequence OF Sequence {
+ userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL
+ -- if present, shall be v2
+ } OPTIONAL,
+ crlExtensions [0] EXPLICIT Extensions OPTIONAL
+ -- if present, shall be v2
+ }
+
+
+
+ The TbsCertificate object.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ extensions [ 3 ] Extensions OPTIONAL
+ }
+
+
+ Note: issuerUniqueID and subjectUniqueID are both deprecated by the IETF. This class
+ will parse them, but you really shouldn't be creating new ones.
+
+
+ Target structure used in target information extension for attribute
+ certificates from RFC 3281.
+
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+
+
+ The targetCert field is currently not supported and must not be used
+ according to RFC 3281.
+
+
+ Creates an instance of a Target from the given object.
+
+ obj
can be a Target or a {@link Asn1TaggedObject}
+
+ @param obj The object.
+ @return A Target instance.
+ @throws ArgumentException if the given object cannot be
+ interpreted as Target.
+
+
+ Constructor from Asn1TaggedObject.
+
+ @param tagObj The tagged object.
+ @throws ArgumentException if the encoding is wrong.
+
+
+ Constructor from given details.
+
+ Exactly one of the parameters must be not null
.
+
+ @param type the choice type to apply to the name.
+ @param name the general name.
+ @throws ArgumentException if type is invalid.
+
+
+ @return Returns the targetGroup.
+
+
+ @return Returns the targetName.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+
+ @return an Asn1Object
+
+
+ Target information extension for attributes certificates according to RFC
+ 3281.
+
+
+ SEQUENCE OF Targets
+
+
+
+
+ Creates an instance of a TargetInformation from the given object.
+
+ obj
can be a TargetInformation or a {@link Asn1Sequence}
+
+ @param obj The object.
+ @return A TargetInformation instance.
+ @throws ArgumentException if the given object cannot be interpreted as TargetInformation.
+
+
+ Constructor from a Asn1Sequence.
+
+ @param seq The Asn1Sequence.
+ @throws ArgumentException if the sequence does not contain
+ correctly encoded Targets elements.
+
+
+ Returns the targets in this target information extension.
+
+ The ArrayList is cloned before it is returned.
+
+ @return Returns the targets.
+
+
+ Constructs a target information from a single targets element.
+ According to RFC 3281 only one targets element must be produced.
+
+ @param targets A Targets instance.
+
+
+ According to RFC 3281 only one targets element must be produced. If
+ multiple targets are given they must be merged in
+ into one targets element.
+
+ @param targets An array with {@link Targets}.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ SEQUENCE OF Targets
+
+
+
+ According to RFC 3281 only one targets element must be produced. If
+ multiple targets are given in the constructor they are merged into one
+ targets element. If this was produced from a
+ {@link Org.BouncyCastle.Asn1.Asn1Sequence} the encoding is kept.
+
+ @return an Asn1Object
+
+
+ Targets structure used in target information extension for attribute
+ certificates from RFC 3281.
+
+
+ Targets ::= SEQUENCE OF Target
+
+ Target ::= CHOICE {
+ targetName [0] GeneralName,
+ targetGroup [1] GeneralName,
+ targetCert [2] TargetCert
+ }
+
+ TargetCert ::= SEQUENCE {
+ targetCertificate IssuerSerial,
+ targetName GeneralName OPTIONAL,
+ certDigestInfo ObjectDigestInfo OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.Target
+ @see org.bouncycastle.asn1.x509.TargetInformation
+
+
+ Creates an instance of a Targets from the given object.
+
+ obj
can be a Targets or a {@link Asn1Sequence}
+
+ @param obj The object.
+ @return A Targets instance.
+ @throws ArgumentException if the given object cannot be interpreted as Target.
+
+
+ Constructor from Asn1Sequence.
+
+ @param targets The ASN.1 SEQUENCE.
+ @throws ArgumentException if the contents of the sequence are
+ invalid.
+
+
+ Constructor from given targets.
+
+ The ArrayList is copied.
+
+ @param targets An ArrayList
of {@link Target}s.
+ @see Target
+ @throws ArgumentException if the ArrayList contains not only Targets.
+
+
+ Returns the targets in an ArrayList
.
+
+ The ArrayList is cloned before it is returned.
+
+ @return Returns the targets.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ Targets ::= SEQUENCE OF Target
+
+
+ @return an Asn1Object
+
+
+ creates a time object from a given date - if the date is between 1950
+ and 2049 a UTCTime object is Generated, otherwise a GeneralizedTime
+ is used.
+
+
+
+ Return our time as DateTime.
+
+ A date time.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Time ::= CHOICE {
+ utcTime UTCTime,
+ generalTime GeneralizedTime }
+
+
+
+ UserNotice
class, used in
+ CertificatePolicies
X509 extensions (in policy
+ qualifiers).
+
+ UserNotice ::= Sequence {
+ noticeRef NoticeReference OPTIONAL,
+ explicitText DisplayText OPTIONAL}
+
+
+
+ @see PolicyQualifierId
+ @see PolicyInformation
+
+
+ Creates a new UserNotice
instance.
+
+ @param noticeRef a NoticeReference
value
+ @param explicitText a DisplayText
value
+
+
+ Creates a new UserNotice
instance.
+
+ @param noticeRef a NoticeReference
value
+ @param str the explicitText field as a string.
+
+
+ Creates a new UserNotice
instance.
+ Useful from reconstructing a UserNotice
instance
+ from its encodable/encoded form.
+
+ @param as an ASN1Sequence
value obtained from either
+ calling @{link toASN1Object()} for a UserNotice
+ instance or from parsing it from a DER-encoded stream.
+
+
+ Generator for Version 1 TbsCertificateStructures.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ }
+
+
+
+
+ Generator for Version 2 AttributeCertificateInfo
+
+ AttributeCertificateInfo ::= Sequence {
+ version AttCertVersion -- version is v2,
+ holder Holder,
+ issuer AttCertIssuer,
+ signature AlgorithmIdentifier,
+ serialNumber CertificateSerialNumber,
+ attrCertValidityPeriod AttCertValidityPeriod,
+ attributes Sequence OF Attr,
+ issuerUniqueID UniqueIdentifier OPTIONAL,
+ extensions Extensions OPTIONAL
+ }
+
+
+
+
+ @param attribute
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ V2Form ::= Sequence {
+ issuerName GeneralNames OPTIONAL,
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ objectDigestInfo [1] ObjectDigestInfo OPTIONAL
+ -- issuerName MUST be present in this profile
+ -- baseCertificateID and objectDigestInfo MUST NOT
+ -- be present in this profile
+ }
+
+
+
+ Generator for Version 2 TbsCertList structures.
+
+ TbsCertList ::= Sequence {
+ version Version OPTIONAL,
+ -- if present, shall be v2
+ signature AlgorithmIdentifier,
+ issuer Name,
+ thisUpdate Time,
+ nextUpdate Time OPTIONAL,
+ revokedCertificates Sequence OF Sequence {
+ userCertificate CertificateSerialNumber,
+ revocationDate Time,
+ crlEntryExtensions Extensions OPTIONAL
+ -- if present, shall be v2
+ } OPTIONAL,
+ crlExtensions [0] EXPLICIT Extensions OPTIONAL
+ -- if present, shall be v2
+ }
+
+
+ Note: This class may be subject to change
+
+
+ Generator for Version 3 TbsCertificateStructures.
+
+ TbsCertificate ::= Sequence {
+ version [ 0 ] Version DEFAULT v1(0),
+ serialNumber CertificateSerialNumber,
+ signature AlgorithmIdentifier,
+ issuer Name,
+ validity Validity,
+ subject Name,
+ subjectPublicKeyInfo SubjectPublicKeyInfo,
+ issuerUniqueID [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ subjectUniqueID [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
+ extensions [ 3 ] Extensions OPTIONAL
+ }
+
+
+
+
+ an X509Certificate structure.
+
+ Certificate ::= Sequence {
+ tbsCertificate TbsCertificate,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING
+ }
+
+
+
+ The default converter for X509 DN entries when going from their
+ string value to ASN.1 strings.
+
+
+ Apply default conversion for the given value depending on the oid
+ and the character range of the value.
+
+ @param oid the object identifier for the DN entry
+ @param value the value associated with it
+ @return the ASN.1 equivalent for the string value.
+
+
+ an object for the elements in the X.509 V3 extension block.
+
+
+ Convert the value of the passed in extension to an object.
+ The extension to parse.
+ The object the value string contains.
+ If conversion is not possible.
+
+
+ Subject Directory Attributes
+
+
+ Subject Key Identifier
+
+
+ Key Usage
+
+
+ Private Key Usage Period
+
+
+ Subject Alternative Name
+
+
+ Issuer Alternative Name
+
+
+ Basic Constraints
+
+
+ CRL Number
+
+
+ Reason code
+
+
+ Hold Instruction Code
+
+
+ Invalidity Date
+
+
+ Delta CRL indicator
+
+
+ Issuing Distribution Point
+
+
+ Certificate Issuer
+
+
+ Name Constraints
+
+
+ CRL Distribution Points
+
+
+ Certificate Policies
+
+
+ Policy Mappings
+
+
+ Authority Key Identifier
+
+
+ Policy Constraints
+
+
+ Extended Key Usage
+
+
+ Freshest CRL
+
+
+ Inhibit Any Policy
+
+
+ Authority Info Access
+
+
+ Subject Info Access
+
+
+ Logo Type
+
+
+ BiometricInfo
+
+
+ QCStatements
+
+
+ Audit identity extension in attribute certificates.
+
+
+ NoRevAvail extension in attribute certificates.
+
+
+ TargetInformation extension in attribute certificates.
+
+
+ Constructor from Asn1Sequence.
+
+ the extensions are a list of constructed sequences, either with (Oid, OctetString) or (Oid, Boolean, OctetString)
+
+
+ constructor from a table of extensions.
+
+ it's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from a table of extensions with ordering.
+
+ It's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from two vectors
+
+ @param objectIDs an ArrayList of the object identifiers.
+ @param values an ArrayList of the extension values.
+
+
+ constructor from a table of extensions.
+
+ it's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from a table of extensions with ordering.
+
+ It's is assumed the table contains Oid/string pairs.
+
+
+ Constructor from two vectors
+
+ @param objectIDs an ArrayList of the object identifiers.
+ @param values an ArrayList of the extension values.
+
+
+ return an Enumeration of the extension field's object ids.
+
+
+ return the extension represented by the object identifier
+ passed in.
+
+ @return the extension if it's present, null otherwise.
+
+
+
+ Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
+
+ Extension ::= SEQUENCE {
+ extnId EXTENSION.&id ({ExtensionSet}),
+ critical BOOLEAN DEFAULT FALSE,
+ extnValue OCTET STRING }
+
+
+
+ Generator for X.509 extensions
+
+
+ Reset the generator
+
+
+
+ Add an extension with the given oid and the passed in value to be included
+ in the OCTET STRING associated with the extension.
+
+ OID for the extension.
+ True if critical, false otherwise.
+ The ASN.1 object to be included in the extension.
+
+
+
+ Add an extension with the given oid and the passed in byte array to be wrapped
+ in the OCTET STRING associated with the extension.
+
+ OID for the extension.
+ True if critical, false otherwise.
+ The byte array to be wrapped.
+
+
+ Return true if there are no extension present in this generator.
+ True if empty, false otherwise
+
+
+ Generate an X509Extensions object based on the current state of the generator.
+ An X509Extensions object
+
+
+
+ RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
+
+ RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue
+
+ AttributeTypeAndValue ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ value ANY }
+
+
+
+ country code - StringType(SIZE(2))
+
+
+ organization - StringType(SIZE(1..64))
+
+
+ organizational unit name - StringType(SIZE(1..64))
+
+
+ Title
+
+
+ common name - StringType(SIZE(1..64))
+
+
+ street - StringType(SIZE(1..64))
+
+
+ device serial number name - StringType(SIZE(1..64))
+
+
+ locality name - StringType(SIZE(1..64))
+
+
+ state, or province name - StringType(SIZE(1..64))
+
+
+ Naming attributes of type X520name
+
+
+ businessCategory - DirectoryString(SIZE(1..128)
+
+
+ postalCode - DirectoryString(SIZE(1..40)
+
+
+ dnQualifier - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 Pseudonym - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 DateOfBirth - GeneralizedTime - YYYYMMDD000000Z
+
+
+ RFC 3039 PlaceOfBirth - DirectoryString(SIZE(1..128)
+
+
+ RFC 3039 DateOfBirth - PrintableString (SIZE(1)) -- "M", "F", "m" or "f"
+
+
+ RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166
+ codes only
+
+
+ RFC 3039 CountryOfCitizenship - PrintableString (SIZE (2)) -- ISO 3166
+ codes only
+
+
+ ISIS-MTT NameAtBirth - DirectoryString(SIZE(1..64)
+
+
+ RFC 3039 PostalAddress - SEQUENCE SIZE (1..6) OF
+ DirectoryString(SIZE(1..30))
+
+
+ RFC 2256 dmdName
+
+
+ id-at-telephoneNumber
+
+
+ id-at-name
+
+
+ Email address (RSA PKCS#9 extension) - IA5String.
+ Note: if you're trying to be ultra orthodox, don't use this! It shouldn't be in here.
+
+
+ more from PKCS#9
+
+
+ email address in Verisign certificates
+
+
+ LDAP User id.
+
+
+ determines whether or not strings should be processed and printed
+ from back to front.
+
+
+ default look up table translating OID values into their common symbols following
+ the convention in RFC 2253 with a few extras
+
+
+ look up table translating OID values into their common symbols following the convention in RFC 2253
+
+
+ look up table translating OID values into their common symbols following the convention in RFC 1779
+
+
+
+ look up table translating common symbols into their OIDS.
+
+
+ Return a X509Name based on the passed in tagged object.
+
+ @param obj tag object holding name.
+ @param explicitly true if explicitly tagged false otherwise.
+ @return the X509Name
+
+
+ Constructor from Asn1Sequence
+
+ the principal will be a list of constructed sets, each containing an (OID, string) pair.
+
+
+ Constructor from a table of attributes with ordering.
+
+ it's is assumed the table contains OID/string pairs, and the contents
+ of the table are copied into an internal table as part of the
+ construction process. The ordering ArrayList should contain the OIDs
+ in the order they are meant to be encoded or printed in ToString.
+
+
+ Constructor from a table of attributes with ordering.
+
+ it's is assumed the table contains OID/string pairs, and the contents
+ of the table are copied into an internal table as part of the
+ construction process. The ordering ArrayList should contain the OIDs
+ in the order they are meant to be encoded or printed in ToString.
+
+ The passed in converter will be used to convert the strings into their
+ ASN.1 counterparts.
+
+
+ Takes two vectors one of the oids and the other of the values.
+
+
+ Takes two vectors one of the oids and the other of the values.
+
+ The passed in converter will be used to convert the strings into their
+ ASN.1 counterparts.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes with each
+ string value being converted to its associated ASN.1 type using the passed
+ in converter.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. If reverse
+ is true, create the encoded version of the sequence starting from the
+ last element in the string.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes with each
+ string value being converted to its associated ASN.1 type using the passed
+ in converter. If reverse is true the ASN.1 sequence representing the DN will
+ be built by starting at the end of the string, rather than the start.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. lookUp
+ should provide a table of lookups, indexed by lowercase only strings and
+ yielding a DerObjectIdentifier, other than that OID. and numeric oids
+ will be processed automatically.
+
+ If reverse is true, create the encoded version of the sequence
+ starting from the last element in the string.
+ @param reverse true if we should start scanning from the end (RFC 2553).
+ @param lookUp table of names and their oids.
+ @param dirName the X.500 string to be parsed.
+
+
+ Takes an X509 dir name as a string of the format "C=AU, ST=Victoria", or
+ some such, converting it into an ordered set of name attributes. lookUp
+ should provide a table of lookups, indexed by lowercase only strings and
+ yielding a DerObjectIdentifier, other than that OID. and numeric oids
+ will be processed automatically. The passed in converter is used to convert the
+ string values to the right of each equals sign to their ASN.1 counterparts.
+
+ @param reverse true if we should start scanning from the end, false otherwise.
+ @param lookUp table of names and oids.
+ @param dirName the string dirName
+ @param converter the converter to convert string values into their ASN.1 equivalents
+
+
+ return an IList of the oids in the name, in the order they were found.
+
+
+ return an IList of the values found in the name, in the order they
+ were found.
+
+
+ return an IList of the values found in the name, in the order they
+ were found, with the DN label corresponding to passed in oid.
+
+
+ The X509Name object to test equivalency against.
+ If true, the order of elements must be the same,
+ as well as the values associated with each element.
+
+
+ test for equivalence - note: case is ignored.
+
+
+ convert the structure to a string - if reverse is true the
+ oids and values are listed out starting with the last element
+ in the sequence (ala RFC 2253), otherwise the string will begin
+ with the first element of the structure. If no string definition
+ for the oid is found in oidSymbols the string value of the oid is
+ added. Two standard symbol tables are provided DefaultSymbols, and
+ RFC2253Symbols as part of this class.
+
+ @param reverse if true start at the end of the sequence and work back.
+ @param oidSymbols look up table strings for oids.
+
+
+ * It turns out that the number of standard ways the fields in a DN should be
+ * encoded into their ASN.1 counterparts is rapidly approaching the
+ * number of machines on the internet. By default the X509Name class
+ * will produce UTF8Strings in line with the current recommendations (RFC 3280).
+ *
+ * An example of an encoder look like below:
+ *
+ * public class X509DirEntryConverter
+ * : X509NameEntryConverter
+ * {
+ * public Asn1Object GetConvertedValue(
+ * DerObjectIdentifier oid,
+ * string value)
+ * {
+ * if (str.Length() != 0 && str.charAt(0) == '#')
+ * {
+ * return ConvertHexEncoded(str, 1);
+ * }
+ * if (oid.Equals(EmailAddress))
+ * {
+ * return new DerIA5String(str);
+ * }
+ * else if (CanBePrintable(str))
+ * {
+ * return new DerPrintableString(str);
+ * }
+ * else if (CanBeUTF8(str))
+ * {
+ * return new DerUtf8String(str);
+ * }
+ * else
+ * {
+ * return new DerBmpString(str);
+ * }
+ * }
+ * }
+ *
+ *
+
+
+ Convert an inline encoded hex string rendition of an ASN.1
+ object back into its corresponding ASN.1 object.
+
+ @param str the hex encoded object
+ @param off the index at which the encoding starts
+ @return the decoded object
+
+
+ return true if the passed in string can be represented without
+ loss as a PrintableString, false otherwise.
+
+
+ Convert the passed in string value into the appropriate ASN.1
+ encoded object.
+
+ @param oid the oid associated with the value in the DN.
+ @param value the value of the particular DN component.
+ @return the ASN.1 equivalent for the value.
+
+
+ class for breaking up an X500 Name into it's component tokens, ala
+ java.util.StringTokenizer. We need this class as some of the
+ lightweight Java environment don't support classes like
+ StringTokenizer.
+
+
+ The BiometricData object.
+
+ BiometricData ::= SEQUENCE {
+ typeOfBiometricData TypeOfBiometricData,
+ hashAlgorithm AlgorithmIdentifier,
+ biometricDataHash OCTET STRING,
+ sourceDataUri IA5String OPTIONAL }
+
+
+
+ The Iso4217CurrencyCode object.
+
+ Iso4217CurrencyCode ::= CHOICE {
+ alphabetic PrintableString (SIZE 3), --Recommended
+ numeric INTEGER (1..999) }
+ -- Alphabetic or numeric currency code as defined in ISO 4217
+ -- It is recommended that the Alphabetic form is used
+
+
+
+ The MonetaryValue object.
+
+ MonetaryValue ::= SEQUENCE {
+ currency Iso4217CurrencyCode,
+ amount INTEGER,
+ exponent INTEGER }
+ -- value = amount * 10^exponent
+
+
+
+ The QCStatement object.
+
+ QCStatement ::= SEQUENCE {
+ statementId OBJECT IDENTIFIER,
+ statementInfo ANY DEFINED BY statementId OPTIONAL}
+
+
+
+ The SemanticsInformation object.
+
+ SemanticsInformation ::= SEQUENCE {
+ semanticsIdentifier OBJECT IDENTIFIER OPTIONAL,
+ nameRegistrationAuthorities NameRegistrationAuthorities
+ OPTIONAL }
+ (WITH COMPONENTS {..., semanticsIdentifier PRESENT}|
+ WITH COMPONENTS {..., nameRegistrationAuthorities PRESENT})
+
+ NameRegistrationAuthorities ::= SEQUENCE SIZE (1..MAX) OF
+ GeneralName
+
+
+
+ The TypeOfBiometricData object.
+
+ TypeOfBiometricData ::= CHOICE {
+ predefinedBiometricType PredefinedBiometricType,
+ biometricDataOid OBJECT IDENTIFIER }
+
+ PredefinedBiometricType ::= INTEGER {
+ picture(0),handwritten-signature(1)}
+ (picture|handwritten-signature)
+
+
+
+ Structure for a name or pseudonym.
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @see org.bouncycastle.asn1.x509.sigi.PersonalData
+
+
+
+ Constructor from DERString.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+ @param pseudonym pseudonym value to use.
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param pseudonym The pseudonym.
+
+
+ Constructor from a given details.
+
+ @param surname The surname.
+ @param givenName A sequence of directory strings making up the givenName
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ NameOrPseudonym ::= CHOICE {
+ surAndGivenName SEQUENCE {
+ surName DirectoryString,
+ givenName SEQUENCE OF DirectoryString
+ },
+ pseudonym DirectoryString
+ }
+
+
+ @return an Asn1Object
+
+
+ Contains personal data for the otherName field in the subjectAltNames
+ extension.
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @see org.bouncycastle.asn1.x509.sigi.NameOrPseudonym
+ @see org.bouncycastle.asn1.x509.sigi.SigIObjectIdentifiers
+
+
+ Constructor from Asn1Sequence.
+
+ The sequence is of type NameOrPseudonym:
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @param seq The ASN.1 sequence.
+
+
+ Constructor from a given details.
+
+ @param nameOrPseudonym Name or pseudonym.
+ @param nameDistinguisher Name distinguisher.
+ @param dateOfBirth Date of birth.
+ @param placeOfBirth Place of birth.
+ @param gender Gender.
+ @param postalAddress Postal Address.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Returns:
+
+
+ PersonalData ::= SEQUENCE {
+ nameOrPseudonym NameOrPseudonym,
+ nameDistinguisher [0] INTEGER OPTIONAL,
+ dateOfBirth [1] GeneralizedTime OPTIONAL,
+ placeOfBirth [2] DirectoryString OPTIONAL,
+ gender [3] PrintableString OPTIONAL,
+ postalAddress [4] DirectoryString OPTIONAL
+ }
+
+
+ @return an Asn1Object
+
+
+ Object Identifiers of SigI specifciation (German Signature Law
+ Interoperability specification).
+
+
+ Key purpose IDs for German SigI (Signature Interoperability
+ Specification)
+
+
+ Certificate policy IDs for German SigI (Signature Interoperability
+ Specification)
+
+
+ Other Name IDs for German SigI (Signature Interoperability Specification)
+
+
+ To be used for for the generation of directory service certificates.
+
+
+ ID for PersonalData
+
+
+ Certificate is conform to german signature law.
+
+
+ A general class that reads all X9.62 style EC curve tables.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ return an enumeration of the names of the available curves.
+
+ @return an enumeration of the names of the available curves.
+
+
+ ASN.1 def for Diffie-Hellman key exchange KeySpecificInfo structure. See
+ RFC 2631, or X9.42, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ KeySpecificInfo ::= Sequence {
+ algorithm OBJECT IDENTIFIER,
+ counter OCTET STRING SIZE (4..4)
+ }
+
+
+
+ ANS.1 def for Diffie-Hellman key exchange OtherInfo structure. See
+ RFC 2631, or X9.42, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ OtherInfo ::= Sequence {
+ keyInfo KeySpecificInfo,
+ partyAInfo [0] OCTET STRING OPTIONAL,
+ suppPubInfo [2] OCTET STRING
+ }
+
+
+
+ table of the current named curves defined in X.962 EC-DSA.
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Parameters ::= CHOICE {
+ ecParameters ECParameters,
+ namedCurve CURVES.&id({CurveNames}),
+ implicitlyCA Null
+ }
+
+
+
+ ASN.1 def for Elliptic-Curve Curve structure. See
+ X9.62, for further details.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ Curve ::= Sequence {
+ a FieldElement,
+ b FieldElement,
+ seed BIT STRING OPTIONAL
+ }
+
+
+
+ ASN.1 def for Elliptic-Curve ECParameters structure. See
+ X9.62, for further details.
+
+
+ Return the ASN.1 entry representing the Curve.
+
+ @return the X9Curve for the curve in these parameters.
+
+
+ Return the ASN.1 entry representing the FieldID.
+
+ @return the X9FieldID for the FieldID in these parameters.
+
+
+ Return the ASN.1 entry representing the base point G.
+
+ @return the X9ECPoint for the base point in these parameters.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ECParameters ::= Sequence {
+ version Integer { ecpVer1(1) } (ecpVer1),
+ fieldID FieldID {{FieldTypes}},
+ curve X9Curve,
+ base X9ECPoint,
+ order Integer,
+ cofactor Integer OPTIONAL
+ }
+
+
+
+ class for describing an ECPoint as a Der object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ ECPoint ::= OCTET STRING
+
+
+ Octet string produced using ECPoint.GetEncoded().
+
+
+ Class for processing an ECFieldElement as a DER object.
+
+
+ Produce an object suitable for an Asn1OutputStream.
+
+ FieldElement ::= OCTET STRING
+
+
+
+ - if q is an odd prime then the field element is
+ processed as an Integer and converted to an octet string
+ according to x 9.62 4.3.1.
+ - if q is 2m then the bit string
+ contained in the field element is converted into an octet
+ string with the same ordering padded at the front if necessary.
+
+
+
+
+
+ ASN.1 def for Elliptic-Curve Field ID structure. See
+ X9.62, for further details.
+
+
+ Constructor for elliptic curves over prime fields
+ F2
.
+ @param primeP The prime p
defining the prime field.
+
+
+ Constructor for elliptic curves over binary fields
+ F2m
.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ Constructor for elliptic curves over binary fields
+ F2m
.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
..
+
+
+ Produce a Der encoding of the following structure.
+
+ FieldID ::= Sequence {
+ fieldType FIELD-ID.&id({IOSet}),
+ parameters FIELD-ID.&Type({IOSet}{@fieldType})
+ }
+
+
+
+ id-dsa-with-sha1 OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+ us(840) x9-57 (10040) x9cm(4) 3 }
+
+
+ X9.63
+
+
+ X9.42
+
+
+ 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
+ fails.
+
+
+ decode the base 64 encoded input data.
+
+ @return the offset the data starts in out.
+
+
+ Create a stream for reading a PGP armoured message, parsing up to a header
+ and then reading the data that follows.
+
+ @param input
+
+
+ Create an armoured input stream which will assume the data starts
+ straight away, or parse for headers first depending on the value of
+ hasHeaders.
+
+ @param input
+ @param hasHeaders true if headers are to be looked for, false otherwise.
+
+
+ @return true if we are inside the clear text section of a PGP
+ signed message.
+
+
+ @return true if the stream is actually at end of file.
+
+
+ Return the armor header line (if there is one)
+ @return the armor header line, null if none present.
+
+
+ Return the armor headers (the lines after the armor header line),
+ @return an array of armor headers, null if there aren't any.
+
+
+ Basic output stream.
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+
+ Set an additional header entry.
+
+ @param name the name of the header entry.
+ @param v the value of the header entry.
+
+
+ Reset the headers to only contain a Version string.
+
+
+ Start a clear text signed message.
+ @param hashAlgorithm
+
+
+ Note: Close() does not close the underlying stream. So it is possible to write
+ multiple objects using armoring to a single stream.
+
+
+ Reader for PGP objects.
+
+
+ Returns the next packet tag in the stream.
+
+
+
+ A stream that overlays our input stream, allowing the user to only read a segment of it.
+ NB: dataLength will be negative if the segment length is in the upper range above 2**31.
+
+
+
+ Base class for a PGP object.
+
+
+ Basic output stream.
+
+
+ Create a stream representing a general packet.
+ Output stream to write to.
+
+
+ Create a stream representing an old style partial object.
+ Output stream to write to.
+ The packet tag for the object.
+
+
+ Create a stream representing a general packet.
+ Output stream to write to.
+ Packet tag.
+ Size of chunks making up the packet.
+ If true, the header is written out in old format.
+
+
+ Create a new style partial input stream buffered into chunks.
+ Output stream to write to.
+ Packet tag.
+ Size of chunks making up the packet.
+
+
+ Create a new style partial input stream buffered into chunks.
+ Output stream to write to.
+ Packet tag.
+ Buffer to use for collecting chunks.
+
+
+ Flush the underlying stream.
+
+
+ Finish writing out the current packet without closing the underlying stream.
+
+
+ Generic compressed data object.
+
+
+ The algorithm tag value.
+
+
+ Basic tags for compression algorithms.
+
+
+ Basic type for a PGP packet.
+
+
+ Base class for a DSA public key.
+
+
+ The stream to read the packet from.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for a DSA secret key.
+
+
+ @param in
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ @return x
+
+
+ Base class for an ECDH Public Key.
+
+
+ The stream to read the packet from.
+
+
+ Base class for an ECDSA Public Key.
+
+
+ The stream to read the packet from.
+
+
+ Base class for an EC Public Key.
+
+
+ The stream to read the packet from.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an EC Secret Key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an ElGamal public key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an ElGamal secret key.
+
+
+ @param in
+
+
+ @param x
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Basic packet for an experimental packet.
+
+
+ Basic tags for hash algorithms.
+
+
+ Base interface for a PGP key.
+
+
+
+ The base format for this key - in the case of the symmetric keys it will generally
+ be raw indicating that the key is just a straight byte representation, for an asymmetric
+ key the format will be PGP, indicating the key is a string of MPIs encoded in PGP format.
+
+ "RAW" or "PGP".
+
+
+ Note: you can only read from this once...
+
+
+ Generic literal data packet.
+
+
+ The format tag value.
+
+
+ The modification time of the file in milli-seconds (since Jan 1, 1970 UTC)
+
+
+ A multiple precision integer
+
+
+ Basic type for a marker packet.
+
+
+ Basic packet for a modification detection code packet.
+
+
+ Generic signature object
+
+
+ The encryption algorithm tag.
+
+
+ The hash algorithm tag.
+
+
+ Basic PGP packet tag types.
+
+
+ Public Key Algorithm tag numbers.
+
+
+ Basic packet for a PGP public key.
+
+
+ Basic packet for a PGP public key.
+
+
+ Construct a version 4 public key packet.
+
+
+ Basic packet for a PGP public subkey
+
+
+ Construct a version 4 public subkey packet.
+
+
+ Base class for an RSA public key.
+
+
+ Construct an RSA public key from the passed in stream.
+
+
+ The modulus.
+ The public exponent.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ Base class for an RSA secret (or priate) key.
+
+
+ The format, as a string, always "PGP".
+
+
+ Return the standard PGP encoding of the key.
+
+
+ The string to key specifier class.
+
+
+ The hash algorithm.
+
+
+ The IV for the key generation algorithm.
+
+
+ The iteration count
+
+
+ The protection mode - only if GnuDummyS2K
+
+
+ Basic packet for a PGP secret key.
+
+
+ Basic packet for a PGP secret key.
+
+
+ Generic signature packet.
+
+
+ Generate a version 4 signature packet.
+
+ @param signatureType
+ @param keyAlgorithm
+ @param hashAlgorithm
+ @param hashedData
+ @param unhashedData
+ @param fingerprint
+ @param signature
+
+
+ Generate a version 2/3 signature packet.
+
+ @param signatureType
+ @param keyAlgorithm
+ @param hashAlgorithm
+ @param fingerprint
+ @param signature
+
+
+ return the keyId
+ @return the keyId that created the signature.
+
+
+ return the signature trailer that must be included with the data
+ to reconstruct the signature
+
+ @return byte[]
+
+
+ * return the signature as a set of integers - note this is normalised to be the
+ * ASN.1 encoding of what appears in the signature packet.
+
+
+ Return the byte encoding of the signature section.
+ @return uninterpreted signature bytes.
+
+
+ Return the creation time in milliseconds since 1 Jan., 1970 UTC.
+
+
+ Basic type for a PGP Signature sub-packet.
+
+
+ Return the generic data making up the packet.
+
+
+ Basic PGP signature sub-packet tag types.
+
+
+ reader for signature sub-packets
+
+
+ Basic type for a symmetric key encrypted packet.
+
+
+ Basic tags for symmetric key algorithms
+
+
+ Basic type for a symmetric encrypted session key packet
+
+
+ @return int
+
+
+ @return S2k
+
+
+ @return byte[]
+
+
+ @return int
+
+
+ Basic type for a trust packet.
+
+
+ Basic type for a user attribute packet.
+
+
+ Basic type for a user attribute sub-packet.
+
+
+ return the generic data making up the packet.
+
+
+ Basic PGP user attribute sub-packet tag types.
+
+
+ reader for user attribute sub-packets
+
+
+ Basic type for a user ID packet.
+
+
+ Basic type for a image attribute packet.
+
+
+ Packet embedded signature
+
+
+ packet giving signature creation time.
+
+
+ packet giving signature expiration time.
+
+
+ Identifier for the modification detection feature
+
+
+ Returns if modification detection is supported.
+
+
+ Returns if a particular feature is supported.
+
+
+ Sets support for a particular feature.
+
+
+ packet giving signature creation time.
+
+
+ packet giving time after creation at which the key expires.
+
+
+ Return the number of seconds after creation time a key is valid for.
+
+ @return second count for key validity.
+
+
+ Packet holding the key flag values.
+
+
+
+ Return the flag values contained in the first 4 octets (note: at the moment
+ the standard only uses the first one).
+
+
+
+ Class provided a NotationData object according to
+ RFC2440, Chapter 5.2.3.15. Notation Data
+
+
+ packet giving signature creation time.
+
+
+ packet giving whether or not the signature is signed using the primary user ID for the key.
+
+
+ packet giving whether or not is revocable.
+
+
+ packet giving signature creation time.
+
+
+ packet giving signature expiration time.
+
+
+ return time in seconds before signature expires after creation time.
+
+
+ packet giving the User ID of the signer.
+
+
+ packet giving trust.
+
+
+
+ Represents revocation key OpenPGP signature sub packet.
+
+
+
+
+ Represents revocation reason OpenPGP signature sub packet.
+
+
+
+ Compressed data objects
+
+
+ The algorithm used for compression
+
+
+ Get the raw input stream contained in the object.
+
+
+ Return an uncompressed input stream which allows reading of the compressed data.
+
+
+ Class for producing compressed data packets.
+
+
+
+
+ Return an output stream which will save the data being written to
+ the compressed object.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Stream to be used for output.
+ A Stream for output of the compressed data.
+
+
+
+
+
+
+
+ Return an output stream which will compress the data as it is written to it.
+ The stream will be written out in chunks according to the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+
+ Note: using this may break compatibility with RFC 1991 compliant tools.
+ Only recent OpenPGP implementations are capable of accepting these streams.
+
+
+ Stream to be used for output.
+ The buffer to use.
+ A Stream for output of the compressed data.
+
+
+
+
+
+
+ Close the compressed object.summary>
+
+
+
+ Thrown if the IV at the start of a data stream indicates the wrong key is being used.
+
+
+
+ Return the raw input stream for the data stream.
+
+
+ Return true if the message is integrity protected.
+ True, if there is a modification detection code namespace associated
+ with this stream.
+
+
+ Note: This can only be called after the message has been read.
+ True, if the message verifies, false otherwise
+
+
+ Generator for encrypted objects.
+
+
+ Existing SecureRandom constructor.
+ The symmetric algorithm to use.
+ Source of randomness.
+
+
+ Creates a cipher stream which will have an integrity packet associated with it.
+
+
+ Base constructor.
+ The symmetric algorithm to use.
+ Source of randomness.
+ PGP 2.6.x compatibility required.
+
+
+
+ Add a PBE encryption method to the encrypted object using the default algorithm (S2K_SHA1).
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Add a PBE encryption method to the encrypted object.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ Add a public key encrypted session key to the encrypted object.
+
+
+
+
+ If buffer is non null stream assumed to be partial, otherwise the length will be used
+ to output a fixed length packet.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+
+
+
+
+ Return an output stream which will encrypt the data as it is written to it.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+
+
+
+
+ Return an output stream which will encrypt the data as it is written to it.
+ The stream will be written out in chunks according to the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+
+
+
+
+
+ Close off the encrypted object - this is equivalent to calling Close() on the stream
+ returned by the Open() method.
+
+
+ Note: This does not close the underlying output stream, only the stream on top of
+ it created by the Open() method.
+
+
+
+
+ A holder for a list of PGP encryption method packets.
+
+
+ Generic exception class for PGP encoding/decoding problems.
+
+
+ Key flag values for the KeyFlags subpacket.
+
+
+
+ General class to handle JCA key pairs and convert them into OpenPGP ones.
+
+ A word for the unwary, the KeyId for an OpenPGP public key is calculated from
+ a hash that includes the time of creation, if you pass a different date to the
+ constructor below with the same public private key pair the KeyIs will not be the
+ same as for previous generations of the key, so ideally you only want to do
+ this once.
+
+
+
+
+ Create a key pair from a PgpPrivateKey and a PgpPublicKey.
+ The public key.
+ The private key.
+
+
+ The keyId associated with this key pair.
+
+
+
+ Generator for a PGP master and subkey ring.
+ This class will generate both the secret and public key rings
+
+
+
+
+ Create a new key ring generator using old style checksumming. It is recommended to use
+ SHA1 checksumming where possible.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+
+ If true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+
+ If true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+
+ Create a new key ring generator.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+ The certification level for keys on this ring.
+ The master key pair.
+ The id to be associated with the ring.
+ The algorithm to be used to protect secret keys.
+ The hash algorithm.
+ The passPhrase to be used to protect secret keys.
+ Checksum the secret keys with SHA1 rather than the older 16 bit checksum.
+ Packets to be included in the certification hash.
+ Packets to be attached unhashed to the certification.
+ input secured random.
+
+
+ Add a subkey to the key ring to be generated with default certification.
+
+
+
+ Add a subkey to the key ring to be generated with default certification.
+
+ The key pair.
+ The hash algorithm.
+
+
+
+ Add a subkey with specific hashed and unhashed packets associated with it and
+ default certification.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+
+
+
+
+ Add a subkey with specific hashed and unhashed packets associated with it and
+ default certification.
+
+ Public/private key pair.
+ Hashed packet values to be included in certification.
+ Unhashed packets values to be included in certification.
+ The hash algorithm.
+ exception adding subkey:
+
+
+
+ Return the secret key ring.
+
+
+ Return the public key ring that corresponds to the secret key ring.
+
+
+
+ Thrown if the key checksum is invalid.
+
+
+
+ Class for processing literal data objects.
+
+
+ The special name indicating a "for your eyes only" packet.
+
+
+ The format of the data stream - Binary or Text
+
+
+ The file name that's associated with the data stream.
+
+
+ Return the file name as an unintrepreted byte array.
+
+
+ The modification time for the file.
+
+
+ The raw input stream for the data stream.
+
+
+ The input stream representing the data stream.
+
+
+ Class for producing literal data packets.
+
+
+ The special name indicating a "for your eyes only" packet.
+
+
+
+ Generates literal data objects in the old format.
+ This is important if you need compatibility with PGP 2.6.x.
+
+ If true, uses old format.
+
+
+
+
+ Open a literal data packet, returning a stream to store the data inside the packet.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ The stream we want the packet in.
+ The format we are using.
+ The name of the 'file'.
+ The length of the data we will write.
+ The time of last modification we want stored.
+
+
+
+
+ Open a literal data packet, returning a stream to store the data inside the packet,
+ as an indefinite length stream. The stream is written out as a series of partial
+ packets with a chunk size determined by the size of the passed in buffer.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ Note: if the buffer is not a power of 2 in length only the largest power of 2
+ bytes worth of the buffer will be used.
+
+ The stream we want the packet in.
+ The format we are using.
+ The name of the 'file'.
+ The time of last modification we want stored.
+ The buffer to use for collecting data to put into chunks.
+
+
+
+
+ Open a literal data packet for the passed in FileInfo object, returning
+ an output stream for saving the file contents.
+
+
+ The stream created can be closed off by either calling Close()
+ on the stream or Close() on the generator. Closing the returned
+ stream does not close off the Stream parameter outStr.
+
+
+ The stream we want the packet in.
+ The format we are using.
+ The FileInfo object containg the packet details.
+
+
+
+ Close the literal data packet - this is equivalent to calling Close()
+ on the stream returned by the Open() method.
+
+
+
+
+ A PGP marker packet - in general these should be ignored other than where
+ the idea is to preserve the original input stream.
+
+
+
+
+ General class for reading a PGP object stream.
+
+ Note: if this class finds a PgpPublicKey or a PgpSecretKey it
+ will create a PgpPublicKeyRing, or a PgpSecretKeyRing for each
+ key found. If all you are trying to do is read a key ring file use
+ either PgpPublicKeyRingBundle or PgpSecretKeyRingBundle.
+
+
+
+ Return the next object in the stream, or null if the end is reached.
+ On a parse error
+
+
+
+ Return all available objects in a list.
+
+ An IList containing all objects from this factory, in order.
+
+
+ A one pass signature object.
+
+
+ Initialise the signature object for verification.
+
+
+ Verify the calculated signature against the passed in PgpSignature.
+
+
+ Holder for a list of PgpOnePassSignature objects.
+
+
+ Padding functions.
+
+
+ A password based encryption object.
+
+
+ Return the raw input stream for the data stream.
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Return the decrypted input stream, using the passed in passphrase.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ General class to contain a private key for use with other OpenPGP objects.
+
+
+
+ Create a PgpPrivateKey from a keyID, the associated public data packet, and a regular private key.
+
+ ID of the corresponding public key.
+ the public key data packet to be associated with this private key.
+ the private key data packet to be associated with this private key.
+
+
+ The keyId associated with the contained private key.
+
+
+ The public key packet associated with this private key, if available.
+
+
+ The contained private key.
+
+
+ General class to handle a PGP public key object.
+
+
+
+ Create a PgpPublicKey from the passed in lightweight one.
+
+
+ Note: the time passed in affects the value of the key's keyId, so you probably only want
+ to do this once for a lightweight key, or make sure you keep track of the time you used.
+
+ Asymmetric algorithm type representing the public key.
+ Actual public key to associate.
+ Date of creation.
+ If pubKey is not public.
+ On key creation problem.
+
+
+ Constructor for a sub-key.
+
+
+ Copy constructor.
+ The public key to copy.
+
+
+ The version of this key.
+
+
+ The creation time of this key.
+
+
+ The number of valid days from creation time - zero means no expiry.
+ WARNING: This method will return 1 for keys with version > 3 that expire in less than 1 day
+
+
+ Return the trust data associated with the public key, if present.
+ A byte array with trust data, null otherwise.
+
+
+ The number of valid seconds from creation time - zero means no expiry.
+
+
+ The keyId associated with the public key.
+
+
+ The fingerprint of the key
+
+
+
+ Check if this key has an algorithm type that makes it suitable to use for encryption.
+
+
+ Note: with version 4 keys KeyFlags subpackets should also be considered when present for
+ determining the preferred use of the key.
+
+
+ true if this key algorithm is suitable for encryption.
+
+
+
+ True, if this is a master key.
+
+
+ The algorithm code associated with the public key.
+
+
+ The strength of the key in bits.
+
+
+ The public key contained in the object.
+ A lightweight public key.
+ If the key algorithm is not recognised.
+
+
+ Allows enumeration of any user IDs associated with the key.
+ An IEnumerable of string objects.
+
+
+ Allows enumeration of any user attribute vectors associated with the key.
+ An IEnumerable of PgpUserAttributeSubpacketVector objects.
+
+
+ Allows enumeration of any signatures associated with the passed in id.
+ The ID to be matched.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of signatures associated with the passed in user attributes.
+ The vector of user attributes to be matched.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of signatures of the passed in type that are on this key.
+ The type of the signature to be returned.
+ An IEnumerable of PgpSignature objects.
+
+
+ Allows enumeration of all signatures/certifications associated with this key.
+ An IEnumerable with all signatures/certifications.
+
+
+ Return all signatures/certifications directly associated with this key (ie, not to a user id).
+
+ @return an iterator (possibly empty) with all signatures/certifications.
+
+
+ Check whether this (sub)key has a revocation signature on it.
+ True, if this (sub)key has been revoked.
+
+
+ Add a certification for an id to the given public key.
+ The key the certification is to be added to.
+ The ID the certification is associated with.
+ The new certification.
+ The re-certified key.
+
+
+ Add a certification for the given UserAttributeSubpackets to the given public key.
+ The key the certification is to be added to.
+ The attributes the certification is associated with.
+ The new certification.
+ The re-certified key.
+
+
+
+ Remove any certifications associated with a user attribute subpacket on a key.
+
+ The key the certifications are to be removed from.
+ The attributes to be removed.
+
+ The re-certified key, or null if the user attribute subpacket was not found on the key.
+
+
+
+ Remove any certifications associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that is to be removed.
+ The re-certified key, or null if the ID was not found on the key.
+
+
+ Remove a certification associated with a given ID on a key.
+ The key the certifications are to be removed from.
+ The ID that the certfication is to be removed from.
+ The certfication to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Remove a certification associated with a given user attributes on a key.
+ The key the certifications are to be removed from.
+ The user attributes that the certfication is to be removed from.
+ The certification to be removed.
+ The re-certified key, or null if the certification was not found.
+
+
+ Add a revocation or some other key certification to a key.
+ The key the revocation is to be added to.
+ The key signature to be added.
+ The new changed public key object.
+
+
+ Remove a certification from the key.
+ The key the certifications are to be removed from.
+ The certfication to be removed.
+ The modified key, null if the certification was not found.
+
+
+ A public key encrypted data object.
+
+
+ The key ID for the key used to encrypt the data.
+
+
+
+ Return the algorithm code for the symmetric algorithm used to encrypt the data.
+
+
+
+ Return the decrypted data stream for the packet.
+
+
+
+ Class to hold a single master public key and its subkeys.
+
+ Often PGP keyring files consist of multiple master keys, if you are trying to process
+ or construct one of these you should use the PgpPublicKeyRingBundle class.
+
+
+
+
+ Return the first public key in the ring.
+
+
+ Return the public key referred to by the passed in key ID if it is present.
+
+
+ Allows enumeration of all the public keys.
+ An IEnumerable of PgpPublicKey objects.
+
+
+
+ Returns a new key ring with the public key passed in either added or
+ replacing an existing one.
+
+ The public key ring to be modified.
+ The public key to be inserted.
+ A new PgpPublicKeyRing
+
+
+ Returns a new key ring with the public key passed in removed from the key ring.
+ The public key ring to be modified.
+ The public key to be removed.
+ A new PgpPublicKeyRing, or null if pubKey is not found.
+
+
+
+ Often a PGP key ring file is made up of a succession of master/sub-key key rings.
+ If you want to read an entire public key file in one hit this is the class for you.
+
+
+
+ Build a PgpPublicKeyRingBundle from the passed in input stream.
+ Input stream containing data.
+ If a problem parsing the stream occurs.
+ If an object is encountered which isn't a PgpPublicKeyRing.
+
+
+ Return the number of key rings in this collection.
+
+
+ Allow enumeration of the public key rings making up this collection.
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ If true, case is ignored in user ID comparisons.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Return the PGP public key associated with the given key id.
+ The ID of the public key to return.
+
+
+ Return the public key ring which contains the key referred to by keyId
+ key ID to match against
+
+
+
+ Return true if a key matching the passed in key ID is present, false otherwise.
+
+ key ID to look for.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle and
+ the passed in public key ring.
+
+ The PgpPublicKeyRingBundle the key ring is to be added to.
+ The key ring to be added.
+ A new PgpPublicKeyRingBundle merging the current one with the passed in key ring.
+ If the keyId for the passed in key ring is already present.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle with
+ the passed in public key ring removed.
+
+ The PgpPublicKeyRingBundle the key ring is to be removed from.
+ The key ring to be removed.
+ A new PgpPublicKeyRingBundle not containing the passed in key ring.
+ If the keyId for the passed in key ring is not present.
+
+
+ General class to handle a PGP secret key object.
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ If utf8PassPhrase is true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ If utf8PassPhrase is true, conversion of the passphrase to bytes uses Encoding.UTF8.GetBytes(), otherwise the conversion
+ is performed using Convert.ToByte(), which is the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Check if this key has an algorithm type that makes it suitable to use for signing.
+
+
+ Note: with version 4 keys KeyFlags subpackets should also be considered when present for
+ determining the preferred use of the key.
+
+
+ true if this key algorithm is suitable for use with signing.
+
+
+
+ True, if this is a master key.
+
+
+ Detect if the Secret Key's Private Key is empty or not
+
+
+ The algorithm the key is encrypted with.
+
+
+ The key ID of the public key associated with this key.
+
+
+ Return the S2K usage associated with this key.
+
+
+ Return the S2K used to process this key.
+
+
+ The public key associated with this key.
+
+
+ Allows enumeration of any user IDs associated with the key.
+ An IEnumerable of string objects.
+
+
+ Allows enumeration of any user attribute vectors associated with the key.
+ An IEnumerable of string objects.
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+ Extract a PgpPrivateKey from this secret key's encrypted contents.
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Return a copy of the passed in secret key, encrypted using a new password
+ and the passed in algorithm.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+ The PgpSecretKey to be copied.
+ The current password for the key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+ Replace the passed the public key on the passed in secret key.
+ Secret key to change.
+ New public key.
+ A new secret key.
+ If KeyId's do not match.
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys associating it with the passed in public key.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+
+ Parse a secret key from one of the GPG S expression keys.
+
+
+
+
+ Class to hold a single master secret key and its subkeys.
+
+ Often PGP keyring files consist of multiple master keys, if you are trying to process
+ or construct one of these you should use the PgpSecretKeyRingBundle class.
+
+
+
+
+ Return the public key for the master key.
+
+
+ Return the master private key.
+
+
+ Allows enumeration of the secret keys.
+ An IEnumerable of PgpSecretKey objects.
+
+
+
+ Return an iterator of the public keys in the secret key ring that
+ have no matching private key. At the moment only personal certificate data
+ appears in this fashion.
+
+ An IEnumerable of unattached, or extra, public keys.
+
+
+
+ Replace the public key set on the secret ring with the corresponding key off the public ring.
+
+ Secret ring to be changed.
+ Public ring containing the new public key set.
+
+
+
+ Return a copy of the passed in secret key ring, with the master key and sub keys encrypted
+ using a new password and the passed in algorithm.
+
+ The PgpSecretKeyRing to be copied.
+ The current password for key.
+ The new password for the key.
+ The algorithm to be used for the encryption.
+ Source of randomness.
+
+
+
+ Returns a new key ring with the secret key passed in either added or
+ replacing an existing one with the same key ID.
+
+ The secret key ring to be modified.
+ The secret key to be inserted.
+ A new PgpSecretKeyRing
+
+
+ Returns a new key ring with the secret key passed in removed from the key ring.
+ The secret key ring to be modified.
+ The secret key to be removed.
+ A new PgpSecretKeyRing, or null if secKey is not found.
+
+
+
+ Often a PGP key ring file is made up of a succession of master/sub-key key rings.
+ If you want to read an entire secret key file in one hit this is the class for you.
+
+
+
+ Build a PgpSecretKeyRingBundle from the passed in input stream.
+ Input stream containing data.
+ If a problem parsing the stream occurs.
+ If an object is encountered which isn't a PgpSecretKeyRing.
+
+
+ Return the number of rings in this collection.
+
+
+ Allow enumeration of the secret key rings making up this collection.
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Allow enumeration of the key rings associated with the passed in userId.
+ The user ID to be matched.
+ If true, userId need only be a substring of an actual ID string to match.
+ If true, case is ignored in user ID comparisons.
+ An IEnumerable of key rings which matched (possibly none).
+
+
+ Return the PGP secret key associated with the given key id.
+ The ID of the secret key to return.
+
+
+ Return the secret key ring which contains the key referred to by keyId
+ The ID of the secret key
+
+
+
+ Return true if a key matching the passed in key ID is present, false otherwise.
+
+ key ID to look for.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle and
+ the passed in secret key ring.
+
+ The PgpSecretKeyRingBundle the key ring is to be added to.
+ The key ring to be added.
+ A new PgpSecretKeyRingBundle merging the current one with the passed in key ring.
+ If the keyId for the passed in key ring is already present.
+
+
+
+ Return a new bundle containing the contents of the passed in bundle with
+ the passed in secret key ring removed.
+
+ The PgpSecretKeyRingBundle the key ring is to be removed from.
+ The key ring to be removed.
+ A new PgpSecretKeyRingBundle not containing the passed in key ring.
+ If the keyId for the passed in key ring is not present.
+
+
+ A PGP signature object.
+
+
+ The OpenPGP version number for this signature.
+
+
+ The key algorithm associated with this signature.
+
+
+ The hash algorithm associated with this signature.
+
+
+
+ Verify the signature as certifying the passed in public key as associated
+ with the passed in user attributes.
+
+ User attributes the key was stored under.
+ The key to be verified.
+ True, if the signature matches, false otherwise.
+
+
+
+ Verify the signature as certifying the passed in public key as associated
+ with the passed in ID.
+
+ ID the key was stored under.
+ The key to be verified.
+ True, if the signature matches, false otherwise.
+
+
+ Verify a certification for the passed in key against the passed in master key.
+ The key we are verifying against.
+ The key we are verifying.
+ True, if the certification is valid, false otherwise.
+
+
+ Verify a key certification, such as revocation, for the passed in key.
+ The key we are checking.
+ True, if the certification is valid, false otherwise.
+
+
+ The ID of the key that created the signature.
+
+
+ The creation time of this signature.
+
+
+
+ Return true if the signature has either hashed or unhashed subpackets.
+
+
+
+ Generator for PGP signatures.
+
+
+ Create a generator for the passed in keyAlgorithm and hashAlgorithm codes.
+
+
+ Initialise the generator for signing.
+
+
+ Initialise the generator for signing.
+
+
+ Return the one pass header associated with the current signature.
+
+
+ Return a signature object containing the current signature state.
+
+
+ Generate a certification for the passed in ID and key.
+ The ID we are certifying against the public key.
+ The key we are certifying against the ID.
+ The certification.
+
+
+ Generate a certification for the passed in userAttributes.
+ The ID we are certifying against the public key.
+ The key we are certifying against the ID.
+ The certification.
+
+
+ Generate a certification for the passed in key against the passed in master key.
+ The key we are certifying against.
+ The key we are certifying.
+ The certification.
+
+
+ Generate a certification, such as a revocation, for the passed in key.
+ The key we are certifying.
+ The certification.
+
+
+ A list of PGP signatures - normally in the signature block after literal data.
+
+
+ Generator for signature subpackets.
+
+
+
+ Add a TrustSignature packet to the signature. The values for depth and trust are largely
+ installation dependent but there are some guidelines in RFC 4880 - 5.2.3.13.
+
+ true if the packet is critical.
+ depth level.
+ trust amount.
+
+
+
+ Set the number of seconds a key is valid for after the time of its creation.
+ A value of zero means the key never expires.
+
+ True, if should be treated as critical, false otherwise.
+ The number of seconds the key is valid, or zero if no expiry.
+
+
+
+ Set the number of seconds a signature is valid for after the time of its creation.
+ A value of zero means the signature never expires.
+
+ True, if should be treated as critical, false otherwise.
+ The number of seconds the signature is valid, or zero if no expiry.
+
+
+
+ Set the creation time for the signature.
+
+ Note: this overrides the generation of a creation time when the signature
+ is generated.
+
+
+
+
+ Sets revocation reason sub packet
+
+
+
+
+ Sets revocation key sub packet
+
+
+
+
+ Sets issuer key sub packet
+
+
+
+ Container for a list of signature subpackets.
+
+
+ Return true if a particular subpacket type exists.
+
+ @param type type to look for.
+ @return true if present, false otherwise.
+
+
+ Return all signature subpackets of the passed in type.
+ @param type subpacket type code
+ @return an array of zero or more matching subpackets.
+
+
+
+ Return the number of seconds a signature is valid for after its creation date.
+ A value of zero means the signature never expires.
+
+ Seconds a signature is valid for.
+
+
+
+ Return the number of seconds a key is valid for after its creation date.
+ A value of zero means the key never expires.
+
+ Seconds a signature is valid for.
+
+
+ Return the number of packets this vector contains.
+
+
+ Container for a list of user attribute subpackets.
+
+
+ Basic utility class.
+
+
+
+ Conversion of the passphrase characters to bytes is performed using Convert.ToByte(), which is
+ the historical behaviour of the library (1.7 and earlier).
+
+
+
+
+ The passphrase is encoded to bytes using UTF8 (Encoding.UTF8.GetBytes).
+
+
+
+
+ Allows the caller to handle the encoding of the passphrase to bytes.
+
+
+
+ Write out the passed in file as a literal data packet.
+
+
+ Write out the passed in file as a literal data packet in partial packet format.
+
+
+
+ Return either an ArmoredInputStream or a BcpgInputStream based on whether
+ the initial characters of the stream are binary PGP encodings or not.
+
+
+
+ Generator for old style PGP V3 Signatures.
+
+
+ Create a generator for the passed in keyAlgorithm and hashAlgorithm codes.
+
+
+ Initialise the generator for signing.
+
+
+ Initialise the generator for signing.
+
+
+ Return the one pass header associated with the current signature.
+
+
+ Return a V3 signature object containing the current signature state.
+
+
+ Utility functions for looking a S-expression keys. This class will move when it finds a better home!
+
+ Format documented here:
+ http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=agent/keyformat.txt;h=42c4b1f06faf1bbe71ffadc2fee0fad6bec91a97;hb=refs/heads/master
+
+
+
+
+ The 'Signature' parameter is only available when generating unsigned attributes.
+
+
+
+ containing class for an CMS AuthEnveloped Data object
+
+
+ containing class for an CMS Authenticated Data object
+
+
+ return the object identifier for the content MAC algorithm.
+
+
+ return a store of the intended recipients for this message
+
+
+ return the ContentInfo
+
+
+ return a table of the digested attributes indexed by
+ the OID of the attribute.
+
+
+ return a table of the undigested attributes indexed by
+ the OID of the attribute.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ General class for generating a CMS authenticated-data message.
+
+ A simple example of usage.
+
+
+ CMSAuthenticatedDataGenerator fact = new CMSAuthenticatedDataGenerator();
+
+ fact.addKeyTransRecipient(cert);
+
+ CMSAuthenticatedData data = fact.generate(content, algorithm, "BC");
+
+
+
+ base constructor
+
+
+ constructor allowing specific source of randomness
+ @param rand instance of SecureRandom to use
+
+
+ generate an enveloped object that contains an CMS Enveloped Data
+ object using the given provider and the passed in key generator.
+
+
+ generate an authenticated object that contains an CMS Authenticated Data object
+
+
+ Parsing class for an CMS Authenticated Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one recipient can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ Example of use - assuming the first recipient matches the private key we have.
+
+ CMSAuthenticatedDataParser ad = new CMSAuthenticatedDataParser(inputStream);
+
+ RecipientInformationStore recipients = ad.getRecipientInfos();
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ CMSTypedStream recData = recipient.getContentStream(privateKey, "BC");
+
+ processDataStream(recData.getContentStream());
+
+ if (!Arrays.equals(ad.getMac(), recipient.getMac())
+ {
+ System.err.println("Data corrupted!!!!");
+ }
+ }
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CMSAuthenticatedDataParser ep = new CMSAuthenticatedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+
+ return the object identifier for the mac algorithm.
+
+
+ return the ASN.1 encoded encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a store of the intended recipients for this message
+
+
+ return a table of the unauthenticated attributes indexed by
+ the OID of the attribute.
+ @exception java.io.IOException
+
+
+ return a table of the unauthenticated attributes indexed by
+ the OID of the attribute.
+ @exception java.io.IOException
+
+
+ General class for generating a CMS authenticated-data message stream.
+
+ A simple example of usage.
+
+ CMSAuthenticatedDataStreamGenerator edGen = new CMSAuthenticatedDataStreamGenerator();
+
+ edGen.addKeyTransRecipient(cert);
+
+ ByteArrayOutputStream bOut = new ByteArrayOutputStream();
+
+ OutputStream out = edGen.open(
+ bOut, CMSAuthenticatedDataGenerator.AES128_CBC, "BC");*
+ out.write(data);
+
+ out.close();
+
+
+
+
+ base constructor
+
+
+ constructor allowing specific source of randomness
+ @param rand instance of SecureRandom to use
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ Use a BER Set to store the recipient information
+
+
+ generate an enveloped object that contains an CMS Enveloped Data
+ object using the given provider and the passed in key generator.
+ @throws java.io.IOException
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+
+
+ base constructor
+
+
+ constructor allowing specific source of randomness
+
+ @param rand instance of SecureRandom to use
+
+
+ containing class for an CMS Compressed Data object
+
+
+ Return the uncompressed content.
+
+ @return the uncompressed content
+ @throws CmsException if there is an exception uncompressing the data.
+
+
+ Return the uncompressed content, throwing an exception if the data size
+ is greater than the passed in limit. If the content is exceeded getCause()
+ on the CMSException will contain a StreamOverflowException
+
+ @param limit maximum number of bytes to read
+ @return the content read
+ @throws CMSException if there is an exception uncompressing the data.
+
+
+ return the ContentInfo
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ * General class for generating a compressed CMS message.
+ *
+ * A simple example of usage.
+ *
+ *
+ * CMSCompressedDataGenerator fact = new CMSCompressedDataGenerator();
+ * CMSCompressedData data = fact.Generate(content, algorithm);
+ *
+ *
+
+
+ Generate an object that contains an CMS Compressed Data
+
+
+ Class for reading a CMS Compressed Data stream.
+
+ CMSCompressedDataParser cp = new CMSCompressedDataParser(inputStream);
+
+ process(cp.GetContent().GetContentStream());
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CMSCompressedDataParser ep = new CMSCompressedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+ General class for generating a compressed CMS message stream.
+
+ A simple example of usage.
+
+
+ CMSCompressedDataStreamGenerator gen = new CMSCompressedDataStreamGenerator();
+
+ Stream cOut = gen.Open(outputStream, CMSCompressedDataStreamGenerator.ZLIB);
+
+ cOut.Write(data);
+
+ cOut.Close();
+
+
+
+ base constructor
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ Close the underlying data stream.
+ @throws IOException if the close fails.
+
+
+ containing class for an CMS Enveloped Data object
+
+
+ return the object identifier for the content encryption algorithm.
+
+
+ return a store of the intended recipients for this message
+
+
+ return the ContentInfo
+
+
+ return a table of the unprotected attributes indexed by
+ the OID of the attribute.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+
+ General class for generating a CMS enveloped-data message.
+
+ A simple example of usage.
+
+
+ CmsEnvelopedDataGenerator fact = new CmsEnvelopedDataGenerator();
+
+ fact.AddKeyTransRecipient(cert);
+
+ CmsEnvelopedData data = fact.Generate(content, algorithm);
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+
+ Generate an enveloped object that contains a CMS Enveloped Data
+ object using the passed in key generator.
+
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data object.
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data object.
+
+
+ Parsing class for an CMS Enveloped Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one recipient can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ Example of use - assuming the first recipient matches the private key we have.
+
+ CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(inputStream);
+
+ RecipientInformationStore recipients = ep.GetRecipientInfos();
+
+ Collection c = recipients.getRecipients();
+ Iterator it = c.iterator();
+
+ if (it.hasNext())
+ {
+ RecipientInformation recipient = (RecipientInformation)it.next();
+
+ CMSTypedStream recData = recipient.getContentStream(privateKey);
+
+ processDataStream(recData.getContentStream());
+ }
+
+ Note: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CmsEnvelopedDataParser ep = new CmsEnvelopedDataParser(new BufferedInputStream(inputStream, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+
+ return the object identifier for the content encryption algorithm.
+
+
+ return the ASN.1 encoded encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a store of the intended recipients for this message
+
+
+ return a table of the unprotected attributes indexed by
+ the OID of the attribute.
+ @throws IOException
+
+
+ General class for generating a CMS enveloped-data message stream.
+
+ A simple example of usage.
+
+ CmsEnvelopedDataStreamGenerator edGen = new CmsEnvelopedDataStreamGenerator();
+
+ edGen.AddKeyTransRecipient(cert);
+
+ MemoryStream bOut = new MemoryStream();
+
+ Stream out = edGen.Open(
+ bOut, CMSEnvelopedDataGenerator.AES128_CBC);*
+ out.Write(data);
+
+ out.Close();
+
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data.
+ Length of octet strings to buffer the data.
+
+
+ Use a BER Set to store the recipient information.
+
+
+
+ Generate an enveloped object that contains an CMS Enveloped Data
+ object using the passed in key generator.
+
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+ @throws IOException
+
+
+ generate an enveloped object that contains an CMS Enveloped Data object
+ @throws IOException
+
+
+ General class for generating a CMS enveloped-data message.
+
+ A simple example of usage.
+
+
+ CMSEnvelopedDataGenerator fact = new CMSEnvelopedDataGenerator();
+
+ fact.addKeyTransRecipient(cert);
+
+ CMSEnvelopedData data = fact.generate(content, algorithm, "BC");
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ add a recipient.
+
+ @param cert recipient's public key certificate
+ @exception ArgumentException if there is a problem with the certificate
+
+
+ add a recipient
+
+ @param key the public key used by the recipient
+ @param subKeyId the identifier for the recipient's public key
+ @exception ArgumentException if there is a problem with the key
+
+
+ add a KEK recipient.
+ @param key the secret key to use for wrapping
+ @param keyIdentifier the byte string that identifies the key
+
+
+ add a KEK recipient.
+ @param key the secret key to use for wrapping
+ @param keyIdentifier the byte string that identifies the key
+
+
+ Add a key agreement based recipient.
+
+ @param agreementAlgorithm key agreement algorithm to use.
+ @param senderPrivateKey private key to initialise sender side of agreement with.
+ @param senderPublicKey sender public key to include with message.
+ @param recipientCert recipient's public key certificate.
+ @param cekWrapAlgorithm OID for key wrapping algorithm to use.
+ @exception SecurityUtilityException if the algorithm requested cannot be found
+ @exception InvalidKeyException if the keys are inappropriate for the algorithm specified
+
+
+ Add multiple key agreement based recipients (sharing a single KeyAgreeRecipientInfo structure).
+
+ @param agreementAlgorithm key agreement algorithm to use.
+ @param senderPrivateKey private key to initialise sender side of agreement with.
+ @param senderPublicKey sender public key to include with message.
+ @param recipientCerts recipients' public key certificates.
+ @param cekWrapAlgorithm OID for key wrapping algorithm to use.
+ @exception SecurityUtilityException if the algorithm requested cannot be found
+ @exception InvalidKeyException if the keys are inappropriate for the algorithm specified
+
+
+
+ Generic routine to copy out the data we want processed.
+
+
+ This routine may be called multiple times.
+
+
+
+ a holding class for a byte array of data to be processed.
+
+
+ A clone of the byte array
+
+
+ a holding class for a file of data to be processed.
+
+
+ The file handle
+
+
+ general class for handling a pkcs7-signature message.
+
+ A simple example of usage - note, in the example below the validity of
+ the certificate isn't verified, just the fact that one of the certs
+ matches the given signer...
+
+
+ IX509Store certs = s.GetCertificates();
+ SignerInformationStore signers = s.GetSignerInfos();
+
+ foreach (SignerInformation signer in signers.GetSigners())
+ {
+ ArrayList certList = new ArrayList(certs.GetMatches(signer.SignerID));
+ X509Certificate cert = (X509Certificate) certList[0];
+
+ if (signer.Verify(cert.GetPublicKey()))
+ {
+ verified++;
+ }
+ }
+
+
+
+ Content with detached signature, digests precomputed
+
+ @param hashes a map of precomputed digests for content indexed by name of hash.
+ @param sigBlock the signature object.
+
+
+ base constructor - content with detached signature.
+
+ @param signedContent the content that was signed.
+ @param sigData the signature object.
+
+
+ base constructor - with encapsulated content
+
+
+ Return the version number for this object.
+
+
+ return the collection of signers that are associated with the
+ signatures for the message.
+
+
+ return a X509Store containing the attribute certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of attribute certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing the public key certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of public key certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing CRLs, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of CRLs
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+
+ Return the DerObjectIdentifier associated with the encapsulated
+ content info structure carried in the signed data.
+
+
+
+ return the ContentInfo
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Replace the signerinformation store associated with this
+ CmsSignedData object with the new one passed in. You would
+ probably only want to do this if you wanted to change the unsigned
+ attributes associated with a signer, or perhaps delete one.
+
+ @param signedData the signed data object to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @return a new signed data object.
+
+
+ Replace the certificate and CRL information associated with this
+ CmsSignedData object with the new one passed in.
+
+ @param signedData the signed data object to be used as a base.
+ @param x509Certs the new certificates to be used.
+ @param x509Crls the new CRLs to be used.
+ @return a new signed data object.
+ @exception CmsException if there is an error processing the stores
+
+
+ * general class for generating a pkcs7-signature message.
+ *
+ * A simple example of usage.
+ *
+ *
+ * IX509Store certs...
+ * IX509Store crls...
+ * CmsSignedDataGenerator gen = new CmsSignedDataGenerator();
+ *
+ * gen.AddSigner(privKey, cert, CmsSignedGenerator.DigestSha1);
+ * gen.AddCertificates(certs);
+ * gen.AddCrls(crls);
+ *
+ * CmsSignedData data = gen.Generate(content);
+ *
+ *
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ * add a signer - no attributes other than the default ones will be
+ * provided here.
+ *
+ * @param key signing key to use
+ * @param cert certificate containing corresponding public key
+ * @param digestOID digest algorithm OID
+
+
+ add a signer, specifying the digest encryption algorithm to use - no attributes other than the default ones will be
+ provided here.
+
+ @param key signing key to use
+ @param cert certificate containing corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+
+
+ add a signer, specifying the digest encryption algorithm to use - no attributes other than the default ones will be
+ provided here.
+
+
+ * add a signer with extra signed/unsigned attributes.
+ *
+ * @param key signing key to use
+ * @param cert certificate containing corresponding public key
+ * @param digestOID digest algorithm OID
+ * @param signedAttr table of attributes to be included in signature
+ * @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes.
+
+ @param key signing key to use
+ @param cert certificate containing corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+ @param signedAttr table of attributes to be included in signature
+ @param unsignedAttr table of attributes to be included as unsigned
+
+
+ * add a signer with extra signed/unsigned attributes.
+ *
+ * @param key signing key to use
+ * @param subjectKeyID subjectKeyID of corresponding public key
+ * @param digestOID digest algorithm OID
+ * @param signedAttr table of attributes to be included in signature
+ * @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes.
+
+ @param key signing key to use
+ @param subjectKeyID subjectKeyID of corresponding public key
+ @param encryptionOID digest encryption algorithm OID
+ @param digestOID digest algorithm OID
+ @param signedAttr table of attributes to be included in signature
+ @param unsignedAttr table of attributes to be included as unsigned
+
+
+ add a signer with extra signed/unsigned attributes based on generators.
+
+
+ add a signer, specifying the digest encryption algorithm, with extra signed/unsigned attributes based on generators.
+
+
+ add a signer with extra signed/unsigned attributes based on generators.
+
+
+ add a signer, including digest encryption algorithm, with extra signed/unsigned attributes based on generators.
+
+
+ generate a signed object that for a CMS Signed Data object
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data".
+
+
+ generate a set of one or more SignerInformation objects representing counter signatures on
+ the passed in SignerInformation object.
+
+ @param signer the signer to be countersigned
+ @param sigProvider the provider to be used for counter signing.
+ @return a store containing the signers.
+
+
+ Parsing class for an CMS Signed Data object from an input stream.
+
+ Note: that because we are in a streaming mode only one signer can be tried and it is important
+ that the methods on the parser are called in the appropriate order.
+
+
+ A simple example of usage for an encapsulated signature.
+
+
+ Two notes: first, in the example below the validity of
+ the certificate isn't verified, just the fact that one of the certs
+ matches the given signer, and, second, because we are in a streaming
+ mode the order of the operations is important.
+
+
+ CmsSignedDataParser sp = new CmsSignedDataParser(encapSigData);
+
+ sp.GetSignedContent().Drain();
+
+ IX509Store certs = sp.GetCertificates();
+ SignerInformationStore signers = sp.GetSignerInfos();
+
+ foreach (SignerInformation signer in signers.GetSigners())
+ {
+ ArrayList certList = new ArrayList(certs.GetMatches(signer.SignerID));
+ X509Certificate cert = (X509Certificate) certList[0];
+
+ Console.WriteLine("verify returns: " + signer.Verify(cert));
+ }
+
+ Note also: this class does not introduce buffering - if you are processing large files you should create
+ the parser with:
+
+ CmsSignedDataParser ep = new CmsSignedDataParser(new BufferedInputStream(encapSigData, bufSize));
+
+ where bufSize is a suitably large buffer size.
+
+
+ base constructor - with encapsulated content
+
+
+ base constructor
+
+ @param signedContent the content that was signed.
+ @param sigData the signature object.
+
+
+ Return the version number for the SignedData object
+
+ @return the version number
+
+
+ return the collection of signers that are associated with the
+ signatures for the message.
+ @throws CmsException
+
+
+ return a X509Store containing the attribute certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of attribute certificates
+ @exception org.bouncycastle.x509.NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing the public key certificates, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of public key certificates
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+ return a X509Store containing CRLs, if any, contained
+ in this message.
+
+ @param type type of store to create
+ @return a store of CRLs
+ @exception NoSuchStoreException if the store type isn't available.
+ @exception CmsException if a general exception prevents creation of the X509Store
+
+
+
+ Return the DerObjectIdentifier associated with the encapsulated
+ content info structure carried in the signed data.
+
+
+
+ Replace the signerinformation store associated with the passed
+ in message contained in the stream original with the new one passed in.
+ You would probably only want to do this if you wanted to change the unsigned
+ attributes associated with a signer, or perhaps delete one.
+
+ The output stream is returned unclosed.
+
+ @param original the signed data stream to be used as a base.
+ @param signerInformationStore the new signer information store to use.
+ @param out the stream to Write the new signed data object to.
+ @return out.
+
+
+ Replace the certificate and CRL information associated with this
+ CMSSignedData object with the new one passed in.
+
+ The output stream is returned unclosed.
+
+ @param original the signed data stream to be used as a base.
+ @param certsAndCrls the new certificates and CRLs to be used.
+ @param out the stream to Write the new signed data object to.
+ @return out.
+ @exception CmsException if there is an error processing the CertStore
+
+
+ General class for generating a pkcs7-signature message stream.
+
+ A simple example of usage.
+
+
+ IX509Store certs...
+ CmsSignedDataStreamGenerator gen = new CmsSignedDataStreamGenerator();
+
+ gen.AddSigner(privateKey, cert, CmsSignedDataStreamGenerator.DIGEST_SHA1);
+
+ gen.AddCertificates(certs);
+
+ Stream sigOut = gen.Open(bOut);
+
+ sigOut.Write(Encoding.UTF8.GetBytes("Hello World!"));
+
+ sigOut.Close();
+
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Set the underlying string size for encapsulated data
+
+ @param bufferSize length of octet strings to buffer the data.
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer, specifying the digest encryption algorithm - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes - specifying digest
+ encryption algorithm.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer - no attributes other than the default ones will be
+ provided here.
+ @throws NoSuchProviderException
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ add a signer with extra signed/unsigned attributes.
+ @throws NoSuchAlgorithmException
+ @throws InvalidKeyException
+
+
+ generate a signed object that for a CMS Signed Data object
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data".
+
+
+ generate a signed object that for a CMS Signed Data
+ object using the given provider - if encapsulate is true a copy
+ of the message will be included in the signature with the
+ default content type "data". If dataOutputStream is non null the data
+ being signed will be written to the stream as it is processed.
+ @param out stream the CMS object is to be written to.
+ @param encapsulate true if data should be encapsulated.
+ @param dataOutputStream output stream to copy the data being signed to.
+
+
+ generate a signed object that for a CMS Signed Data
+ object - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+
+
+ generate a signed object that for a CMS Signed Data
+ object using the given provider - if encapsulate is true a copy
+ of the message will be included in the signature. The content type
+ is set according to the OID represented by the string signedContentType.
+ @param out stream the CMS object is to be written to.
+ @param signedContentType OID for data to be signed.
+ @param encapsulate true if data should be encapsulated.
+ @param dataOutputStream output stream to copy the data being signed to.
+
+
+ Default type for the signed data.
+
+
+ Constructor allowing specific source of randomness
+ Instance of SecureRandom to use.
+
+
+ Add the attribute certificates contained in the passed in store to the
+ generator.
+
+ @param store a store of Version 2 attribute certificates
+ @throws CmsException if an error occurse processing the store.
+
+
+ Add a store of precalculated signers to the generator.
+
+ @param signerStore store of signers
+
+
+ Return a map of oids and byte arrays representing the digests calculated on the content during
+ the last generate.
+
+ @return a map of oids (as String objects) and byte[] representing digests.
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+ Return the digest encryption algorithm using one of the standard
+ JCA string representations rather than the algorithm identifier (if
+ possible).
+
+
+ Default authenticated attributes generator.
+
+
+ Initialise to use all defaults
+
+
+ Initialise with some extra attributes or overrides.
+
+ @param attributeTable initial attribute table to use.
+
+
+ Create a standard attribute table from the passed in parameters - this will
+ normally include contentType and messageDigest. If the constructor
+ using an AttributeTable was used, entries in it for contentType and
+ messageDigest will override the generated ones.
+
+ @param parameters source parameters for table generation.
+
+ @return a filled in IDictionary of attributes.
+
+
+ @param parameters source parameters
+ @return the populated attribute table
+
+
+ Default signed attributes generator.
+
+
+ Initialise to use all defaults
+
+
+ Initialise with some extra attributes or overrides.
+
+ @param attributeTable initial attribute table to use.
+
+
+ Create a standard attribute table from the passed in parameters - this will
+ normally include contentType, signingTime, and messageDigest. If the constructor
+ using an AttributeTable was used, entries in it for contentType, signingTime, and
+ messageDigest will override the generated ones.
+
+ @param parameters source parameters for table generation.
+
+ @return a filled in Hashtable of attributes.
+
+
+ @param parameters source parameters
+ @return the populated attribute table
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using a secret key known to the other side.
+
+
+ decrypt the content and return an input stream.
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using key agreement.
+
+
+ decrypt the content and return an input stream.
+
+
+ the KeyTransRecipientInformation class for a recipient who has been sent a secret
+ key encrypted using their public key that needs to be used to
+ extract the message.
+
+
+ decrypt the content and return it as a byte array.
+
+
+ a basic index for an originator.
+
+
+ Return the certificates stored in the underlying OriginatorInfo object.
+
+ @return a Store of X509CertificateHolder objects.
+
+
+ Return the CRLs stored in the underlying OriginatorInfo object.
+
+ @return a Store of X509CRLHolder objects.
+
+
+ Return the underlying ASN.1 object defining this SignerInformation object.
+
+ @return a OriginatorInfo.
+
+
+
+ PKCS5 scheme-2 - password converted to bytes assuming ASCII.
+
+
+
+ PKCS5 scheme-2 - password converted to bytes using UTF-8.
+
+
+ the RecipientInfo class for a recipient who has been sent a message
+ encrypted using a password.
+
+
+ return the object identifier for the key derivation algorithm, or null
+ if there is none present.
+
+ @return OID for key derivation algorithm, if present.
+
+
+ decrypt the content and return an input stream.
+
+
+
+ Generate a RecipientInfo object for the given key.
+
+
+ A
+
+
+ A
+
+
+ A
+
+
+
+
+ * return the object identifier for the key encryption algorithm.
+ *
+ * @return OID for key encryption algorithm.
+
+
+ * return the ASN.1 encoded key encryption algorithm parameters, or null if
+ * there aren't any.
+ *
+ * @return ASN.1 encoding of key encryption algorithm parameters.
+
+
+ Return the MAC calculated for the content stream. Note: this call is only meaningful once all
+ the content has been read.
+
+ @return byte array containing the mac.
+
+
+ Return the first RecipientInformation object that matches the
+ passed in selector. Null if there are no matches.
+
+ @param selector to identify a recipient
+ @return a single RecipientInformation object. Null if none matches.
+
+
+ Return the number of recipients in the collection.
+
+ @return number of recipients identified.
+
+
+ Return all recipients in the collection
+
+ @return a collection of recipients.
+
+
+ Return possible empty collection with recipients matching the passed in RecipientID
+
+ @param selector a recipient id to select against.
+ @return a collection of RecipientInformation objects.
+
+
+ a basic index for a signer.
+
+
+ If the passed in flag is true, the signer signature will be based on the data, not
+ a collection of signed attributes, and no signed attributes will be included.
+
+ @return the builder object
+
+
+ Provide a custom signed attribute generator.
+
+ @param signedGen a generator of signed attributes.
+ @return the builder object
+
+
+ Provide a generator of unsigned attributes.
+
+ @param unsignedGen a generator for signed attributes.
+ @return the builder object
+
+
+ Build a generator with the passed in certHolder issuer and serial number as the signerIdentifier.
+
+ @param contentSigner operator for generating the final signature in the SignerInfo with.
+ @param certHolder carrier for the X.509 certificate related to the contentSigner.
+ @return a SignerInfoGenerator
+ @throws OperatorCreationException if the generator cannot be built.
+
+
+ Build a generator with the passed in subjectKeyIdentifier as the signerIdentifier. If used you should
+ try to follow the calculation described in RFC 5280 section 4.2.1.2.
+
+ @param signerFactory operator factory for generating the final signature in the SignerInfo with.
+ @param subjectKeyIdentifier key identifier to identify the public key for verifying the signature.
+ @return a SignerInfoGenerator
+
+
+ an expanded SignerInfo block from a CMS Signed message
+
+
+ return the version number for this objects underlying SignerInfo structure.
+
+
+ return the object identifier for the signature.
+
+
+ return the signature parameters, or null if there aren't any.
+
+
+ return the content digest that was calculated during verification.
+
+
+ return the object identifier for the signature.
+
+
+ return the signature/encryption algorithm parameters, or null if
+ there aren't any.
+
+
+ return a table of the signed attributes - indexed by
+ the OID of the attribute.
+
+
+ return a table of the unsigned attributes indexed by
+ the OID of the attribute.
+
+
+ return the encoded signature
+
+
+ Return a SignerInformationStore containing the counter signatures attached to this
+ signer. If no counter signatures are present an empty store is returned.
+
+
+ return the DER encoding of the signed attributes.
+ @throws IOException if an encoding error occurs.
+
+
+ verify that the given public key successfully handles and confirms the
+ signature associated with this signer.
+
+
+ verify that the given certificate successfully handles and confirms
+ the signature associated with this signer and, if a signingTime
+ attribute is available, that the certificate was valid at the time the
+ signature was generated.
+
+
+ Return the base ASN.1 CMS structure that this object contains.
+
+ @return an object containing a CMS SignerInfo structure.
+
+
+ Return a signer information object with the passed in unsigned
+ attributes replacing the ones that are current associated with
+ the object passed in.
+
+ @param signerInformation the signerInfo to be used as the basis.
+ @param unsignedAttributes the unsigned attributes to add.
+ @return a copy of the original SignerInformationObject with the changed attributes.
+
+
+ Return a signer information object with passed in SignerInformationStore representing counter
+ signatures attached as an unsigned attribute.
+
+ @param signerInformation the signerInfo to be used as the basis.
+ @param counterSigners signer info objects carrying counter signature.
+ @return a copy of the original SignerInformationObject with the changed attributes.
+
+
+ Create a store containing a single SignerInformation object.
+
+ @param signerInfo the signer information to contain.
+
+
+ Create a store containing a collection of SignerInformation objects.
+
+ @param signerInfos a collection signer information objects to contain.
+
+
+ Return the first SignerInformation object that matches the
+ passed in selector. Null if there are no matches.
+
+ @param selector to identify a signer
+ @return a single SignerInformation object. Null if none matches.
+
+
+ The number of signers in the collection.
+
+
+ An ICollection of all signers in the collection
+
+
+ Return possible empty collection with signers matching the passed in SignerID
+
+ @param selector a signer id to select against.
+ @return a collection of SignerInformation objects.
+
+
+ Basic generator that just returns a preconstructed attribute table
+
+
+ a holding class for public/private parameter pairs.
+
+
+ basic constructor.
+
+ @param publicParam a public key parameters object.
+ @param privateParam the corresponding private key parameters.
+
+
+ return the public key parameters.
+
+ @return the public key parameters.
+
+
+ return the private key parameters.
+
+ @return the private key parameters.
+
+
+ The AEAD block ciphers already handle buffering internally, so this class
+ just takes care of implementing IBufferedCipher methods.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ a buffer wrapper for an asymmetric block cipher, allowing input
+ to be accumulated in a piecemeal fashion until final processing.
+
+
+ base constructor.
+
+ @param cipher the cipher this buffering object wraps.
+
+
+ return the amount of data sitting in the buffer.
+
+ @return the amount of data sitting in the buffer.
+
+
+ initialise the buffer and the underlying cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+
+
+ process the contents of the buffer using the underlying
+ cipher.
+
+ @return the result of the encryption/decryption process on the
+ buffer.
+ @exception InvalidCipherTextException if we are given a garbage block.
+
+
+ Reset the buffer
+
+
+ A wrapper class that allows block ciphers to be used to process data in
+ a piecemeal fashion. The BufferedBlockCipher outputs a block only when the
+ buffer is full and more data is being added, or on a doFinal.
+
+ Note: in the case where the underlying cipher is either a CFB cipher or an
+ OFB one the last block may not be a multiple of the block size.
+
+
+
+ constructor for subclasses
+
+
+ Create a buffered block cipher without padding.
+
+ @param cipher the underlying block cipher this buffering object wraps.
+ false otherwise.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the blocksize for the underlying cipher.
+
+ @return the blocksize for the underlying cipher.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output, or the input is not block size aligned and should be.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+ @exception DataLengthException if the input is not block size
+ aligned.
+
+
+ Reset the buffer and cipher. After resetting the object is in the same
+ state as it was after the last init (if there was one).
+
+
+ The base class for symmetric, or secret, cipher key generators.
+
+
+ initialise the key generator.
+
+ @param param the parameters to be used for key generation
+
+
+ Generate a secret key.
+
+ @return a byte array containing the key value.
+
+
+ this exception is thrown if a buffer that is meant to have output
+ copied into it turns out to be too short, or if we've been given
+ insufficient input. In general this exception will Get thrown rather
+ than an ArrayOutOfBounds exception.
+
+
+ base constructor.
+
+
+ create a DataLengthException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+ Wrapper removes exposure to the IMemoable interface on an IDigest implementation.
+
+
+ Base constructor.
+
+ @param baseDigest underlying digest to use.
+ @exception IllegalArgumentException if baseDigest is null
+
+
+ implementation of GOST R 34.11-94
+
+
+ Standard constructor
+
+
+ Constructor to allow use of a particular sbox with GOST28147
+ @see GOST28147Engine#getSBox(String)
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ base implementation of MD4 family style digest as outlined in
+ "Handbook of Applied Cryptography", pages 344 - 347.
+
+
+
+ Implementation of Keccak based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Return the size of block that the compression function is applied to in bytes.
+
+ @return internal byte length of a block.
+
+
+ Base class for SHA-384 and SHA-512.
+
+
+ Constructor for variable length word
+
+
+ Copy constructor. We are using copy constructors in place
+ of the object.Clone() interface as this interface is not
+ supported by J2ME.
+
+
+ adjust the byte counts so that byteCount2 represents the
+ upper long (less 3 bits) word of the byte count.
+
+
+ implementation of MD2
+ as outlined in RFC1319 by B.Kaliski from RSA Laboratories April 1992
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ Close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+
+ @param out the array the digest is to be copied into.
+ @param outOff the offset into the out array the digest is to start at.
+
+
+ reset the digest back to it's initial state.
+
+
+ update the message digest with a single byte.
+
+ @param in the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param in the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ implementation of MD4 as RFC 1320 by R. Rivest, MIT Laboratory for
+ Computer Science and RSA Data Security, Inc.
+
+ NOTE: This algorithm is only included for backwards compatibility
+ with legacy applications, it's not secure, don't use it for anything new!
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of MD5 as outlined in "Handbook of Applied Cryptography", pages 346 - 347.
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of RipeMD128
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+ implementation of RipeMD see,
+ http://www.esat.kuleuven.ac.be/~bosselae/ripemd160.html
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of RipeMD256.
+ Note: this algorithm offers the same level of security as RipeMD128.
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of RipeMD 320.
+ Note: this algorithm offers the same level of security as RipeMD160.
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+ reset the chaining variables to the IV values.
+
+
+
+ Implementation of SHA-3 based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+
+ Implementation of Chinese SM3 digest as described at
+ http://tools.ietf.org/html/draft-shen-sm3-hash-00
+ and at .... ( Chinese PDF )
+
+
+ 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.
+
+
+
+
+ Standard constructor
+
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+
+
+ reset the chaining variables
+
+
+
+ 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 "endianness" of the word processing!
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ SHA-224 as described in RFC 3874
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-224 512 32 224
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-256. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-384. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Draft FIPS 180-2 implementation of SHA-512. Note: As this is
+ based on a draft this implementation is subject to change.
+
+
+ block word digest
+ SHA-1 512 32 160
+ SHA-256 512 32 256
+ SHA-384 1024 64 384
+ SHA-512 1024 64 512
+
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ FIPS 180-4 implementation of SHA-512/t
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+
+ Implementation of SHAKE based on following KeccakNISTInterface.c from http://keccak.noekeon.org/
+
+
+ Following the naming conventions used in the C source code to enable easy review of the implementation.
+
+
+
+ Wrapper class that reduces the output length of a particular digest to
+ only the first n bytes of the digest function.
+
+
+ Base constructor.
+
+ @param baseDigest underlying digest to use.
+ @param length length in bytes of the output of doFinal.
+ @exception ArgumentException if baseDigest is null, or length is greater than baseDigest.GetDigestSize().
+
+
+
+ Implementation of the Skein parameterised hash function in 256, 512 and 1024 bit block sizes,
+ based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+
+ Constructs a Skein digest with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/digest size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Optionally initialises the Skein digest with the provided parameters.
+
+ See for details on the parameterisation of the Skein hash function.
+ the parameters to apply to this engine, or null
to use no parameters.
+
+
+
+ Implementation of the Skein family of parameterised hash functions in 256, 512 and 1024 bit block
+ sizes, based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+ This implementation is the basis for and , implementing the
+ parameter based configuration system that allows Skein to be adapted to multiple applications.
+ Initialising the engine with allows standard and arbitrary parameters to
+ be applied during the Skein hash function.
+
+ Implemented:
+
+ - 256, 512 and 1024 bit internal states.
+ - Full 96 bit input length.
+ - Parameters defined in the Skein specification, and arbitrary other pre and post message
+ parameters.
+ - Arbitrary output size in 1 byte intervals.
+
+
+ Not implemented:
+
+ - Sub-byte length input (bit padding).
+ - Tree hashing.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+ The parameter type for the Skein key.
+
+
+ The parameter type for the Skein configuration block.
+
+
+ The parameter type for the message.
+
+
+ The parameter type for the output transformation.
+
+
+ Precalculated UBI(CFG) states for common state/output combinations without key or other
+ pre-message params.
+
+
+ Point at which position might overflow long, so switch to add with carry logic
+
+
+ Bit 127 = final
+
+
+ Bit 126 = first
+
+
+ UBI uses a 128 bit tweak
+
+
+ Whether 64 bit position exceeded
+
+
+ Advances the position in the tweak by the specified value.
+
+
+ The Unique Block Iteration chaining mode.
+
+
+ Buffer for the current block of message data
+
+
+ Offset into the current message block
+
+
+ Buffer for message words for feedback into encrypted block
+
+
+ Underlying Threefish tweakable block cipher
+
+
+ Size of the digest output, in bytes
+
+
+ The current chaining/state value
+
+
+ The initial state value
+
+
+ The (optional) key parameter
+
+
+ Parameters to apply prior to the message
+
+
+ Parameters to apply after the message, but prior to output
+
+
+ The current UBI operation
+
+
+ Buffer for single byte update method
+
+
+
+ Constructs a Skein digest with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/digest size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Creates a SkeinEngine as an exact copy of an existing instance.
+
+
+
+
+ Initialises the Skein engine with the provided parameters. See for
+ details on the parameterisation of the Skein hash function.
+
+ the parameters to apply to this engine, or null
to use no parameters.
+
+
+ Calculate the initial (pre message block) chaining state.
+
+
+
+ Reset the engine to the initial state (with the key and any pre-message parameters , ready to
+ accept message input.
+
+
+
+ implementation of Tiger based on:
+
+ http://www.cs.technion.ac.il/~biham/Reports/Tiger
+
+
+ Standard constructor
+
+
+ Copy constructor. This will copy the state of the provided
+ message digest.
+
+
+ reset the chaining variables
+
+
+ Implementation of WhirlpoolDigest, based on Java source published by Barreto
+ and Rijmen.
+
+
+
+ Copy constructor. This will copy the state of the provided message
+ digest.
+
+
+ Reset the chaining variables
+
+
+ initialise a Serpent cipher.
+
+ @param encrypting whether or not we are for encryption.
+ @param params the parameters required to set up the cipher.
+ @throws IllegalArgumentException if the params argument is
+ inappropriate.
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @return the number of bytes processed and produced.
+ @throws DataLengthException if there isn't enough data in in, or
+ space in out.
+ @throws IllegalStateException if the cipher isn't initialised.
+
+
+ InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms.
+
+
+ S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms.
+
+
+ InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps.
+
+
+ S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms.
+
+
+ InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps.
+
+
+ S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms.
+
+
+ InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 terms
+
+
+ S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms.
+
+
+ InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms.
+
+
+ S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms.
+
+
+ InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms.
+
+
+ S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms.
+
+
+ InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms.
+
+
+ S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms.
+
+
+ InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms.
+
+
+ Apply the linear transformation to the register set.
+
+
+ Apply the inverse of the linear transformation to the register set.
+
+
+ Tnepres is a 128-bit 32-round block cipher with variable key lengths,
+ including 128, 192 and 256 bit keys conjectured to be at least as
+ secure as three-key triple-DES.
+
+ Tnepres is based on Serpent which was designed by Ross Anderson, Eli Biham and Lars Knudsen as a
+ candidate algorithm for the NIST AES Quest. Unfortunately there was an endianness issue
+ with test vectors in the AES submission and the resulting confusion lead to the Tnepres cipher
+ as well, which is a byte swapped version of Serpent.
+
+
+ For full details see The Serpent home page
+
+
+
+ Expand a user-supplied key material into a session key.
+
+ @param key The user-key bytes (multiples of 4) to use.
+ @exception ArgumentException
+
+
+ Encrypt one block of plaintext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ Decrypt one block of ciphertext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ an implementation of the AES (Rijndael), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor, they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations, 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each, for a total of 2Kbytes,
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first.
+
+ The slowest version uses no static tables at all and computes the values in each round.
+
+
+ This file contains the middle performance version with 2Kbytes of static tables for round precomputation.
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES 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.
+
+
+ an implementation of the AES (Rijndael)), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor), they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations), 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each), for a total of 2Kbytes),
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first
+
+ The slowest version uses no static tables at all and computes the values in each round
+
+
+ This file contains the fast version with 8Kbytes of static tables for round precomputation
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES 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.
+
+
+ an implementation of the AES (Rijndael), from FIPS-197.
+
+ For further details see: http://csrc.nist.gov/encryption/aes/.
+
+ This implementation is based on optimizations from Dr. Brian Gladman's paper and C code at
+ http://fp.gladman.plus.com/cryptography_technology/rijndael/
+
+ There are three levels of tradeoff of speed vs memory
+ Because java has no preprocessor, they are written as three separate classes from which to choose
+
+ The fastest uses 8Kbytes of static tables to precompute round calculations, 4 256 word tables for encryption
+ and 4 for decryption.
+
+ The middle performance version uses only one 256 word table for each, for a total of 2Kbytes,
+ adding 12 rotate operations per round to compute the values contained in the other tables from
+ the contents of the first
+
+ The slowest version uses no static tables at all and computes the values
+ in each round.
+
+
+ This file contains the slowest performance version with no static tables
+ for round precomputation, but it has the smallest foot print.
+
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on key size and block size
+ AES specified a fixed block size of 128 bits and key sizes 128/192/256 bits
+ This code is written assuming those are the only possible values
+
+
+ default constructor - 128 bit block size.
+
+
+ initialise an AES 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.
+
+
+
+ An implementation of the AES Key Wrapper from the NIST Key Wrap Specification.
+
+ For further details see: http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+ A class that provides Blowfish key encryption operations,
+ such as encoding data and generating keys.
+ All the algorithms herein are from Applied Cryptography
+ and implement a simplified cryptography interface.
+
+
+ initialise a Blowfish 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.
+
+
+ apply the encryption cycle to each value pair in the table.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Camellia - based on RFC 3713.
+
+
+ Camellia - based on RFC 3713, smaller implementation, about half the size of CamelliaEngine.
+
+
+
+ An implementation of the Camellia key wrapper based on RFC 3657/RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc3657.txt.
+
+
+
+ A class that provides CAST key encryption operations,
+ such as encoding data and generating keys.
+
+ All the algorithms herein are from the Internet RFC's
+
+ RFC2144 - Cast5 (64bit block, 40-128bit key)
+ RFC2612 - CAST6 (128bit block, 128-256bit key)
+
+ and implement a simplified cryptography interface.
+
+
+ initialise a CAST 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.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ The first of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ The second of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ The third of the three processing functions for the
+ encryption and decryption.
+
+ @param D the input to be processed
+ @param Kmi the mask to be used from Km[n]
+ @param Kri the rotation value to be used
+
+
+
+ Does the 16 rounds to encrypt the block.
+
+ @param L0 the LH-32bits of the plaintext block
+ @param R0 the RH-32bits of the plaintext block
+
+
+ A class that provides CAST6 key encryption operations,
+ such as encoding data and generating keys.
+
+ All the algorithms herein are from the Internet RFC
+
+ RFC2612 - CAST6 (128bit block, 128-256bit key)
+
+ and implement a simplified cryptography interface.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param src The plaintext buffer
+ @param srcIndex An offset into src
+ @param dst The ciphertext buffer
+ @param dstIndex An offset into dst
+
+
+ Does the 12 quad rounds rounds to encrypt the block.
+
+ @param A the 00-31 bits of the plaintext block
+ @param B the 32-63 bits of the plaintext block
+ @param C the 64-95 bits of the plaintext block
+ @param D the 96-127 bits of the plaintext block
+ @param result the resulting ciphertext
+
+
+ Does the 12 quad rounds rounds to decrypt the block.
+
+ @param A the 00-31 bits of the ciphertext block
+ @param B the 32-63 bits of the ciphertext block
+ @param C the 64-95 bits of the ciphertext block
+ @param D the 96-127 bits of the ciphertext block
+ @param result the resulting plaintext
+
+
+
+ Implementation of Daniel J. Bernstein's ChaCha stream cipher.
+
+
+
+
+ Creates a 20 rounds ChaCha engine.
+
+
+
+
+ Creates a ChaCha engine with a specific number of rounds.
+
+ the number of rounds (must be an even number).
+
+
+
+ ChacCha function.
+
+ The number of ChaCha rounds to execute
+ The input words.
+ The ChaCha state to modify.
+
+
+ A class that provides a basic DESede (or Triple DES) engine.
+
+
+ initialise a DESede 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.
+
+
+ * Wrap keys according to
+ *
+ * draft-ietf-smime-key-wrap-01.txt.
+ *
+ * Note:
+ *
+ * - this is based on a draft, and as such is subject to change - don't use this class for anything requiring long term storage.
+ * - if you are using this to wrap triple-des keys you need to set the
+ * parity bits on the key and, if it's a two-key triple-des key, pad it
+ * yourself.
+ *
+ *
+
+
+ Field engine
+
+
+ Field param
+
+
+ Field paramPlusIV
+
+
+ Field iv
+
+
+ Field forWrapping
+
+
+ Field IV2
+
+
+ Method init
+
+ @param forWrapping
+ @param param
+
+
+ Method GetAlgorithmName
+
+ @return
+
+
+ Method wrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+
+
+ Method unwrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+ @throws InvalidCipherTextException
+
+
+ Some key wrap algorithms make use of the Key Checksum defined
+ in CMS [CMS-Algorithms]. This is used to provide an integrity
+ check value for the key being wrapped. The algorithm is
+
+ - Compute the 20 octet SHA-1 hash on the key being wrapped.
+ - Use the first 8 octets of this hash as the checksum value.
+
+ @param key
+ @return
+ @throws Exception
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ @param key
+ @param checksum
+ @return
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ A class that provides a basic DES engine.
+
+
+ initialise a DES 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.
+
+
+ what follows is mainly taken from "Applied Cryptography", by
+ Bruce Schneier, however it also bears great resemblance to Richard
+ Outerbridge's D3DES...
+
+
+ Generate an integer based working key based on our secret key
+ and what we processing we are planning to do.
+
+ Acknowledgements for this routine go to James Gillogly and Phil Karn.
+ (whoever, and wherever they are!).
+
+
+ the DES engine.
+
+
+ this does your basic ElGamal algorithm.
+
+
+ initialise the ElGamal engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary ElGamal key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For ElGamal this is always one byte less than the size of P on
+ encryption, and twice the length as the size of P on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For ElGamal this is always one byte less than the size of P on
+ decryption, and twice the length as the size of P on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic ElGamal algorithm.
+
+ @param in the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param length the length of the data to be processed.
+ @return the result of the ElGamal process.
+ @exception DataLengthException the input block is too large.
+
+
+ implementation of GOST 28147-89
+
+
+ standard constructor.
+
+
+ initialise an Gost28147 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.
+
+
+ Return the S-Box associated with SBoxName
+ @param sBoxName name of the S-Box
+ @return byte array representing the S-Box
+
+
+ HC-128 is a software-efficient stream cipher created by Hongjun Wu. It
+ generates keystream from a 128-bit secret key and a 128-bit initialization
+ vector.
+
+ http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc128_p3.pdf
+
+ It is a third phase candidate in the eStream contest, and is patent-free.
+ No attacks are known as of today (April 2007). See
+
+ http://www.ecrypt.eu.org/stream/hcp3.html
+
+
+
+ Initialise a HC-128 cipher.
+
+ @param forEncryption whether or not we are for encryption. Irrelevant, as
+ encryption and decryption are the same.
+ @param params the parameters required to set up the cipher.
+ @throws ArgumentException if the params argument is
+ inappropriate (ie. the key is not 128 bit long).
+
+
+ HC-256 is a software-efficient stream cipher created by Hongjun Wu. It
+ generates keystream from a 256-bit secret key and a 256-bit initialization
+ vector.
+
+ http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc256_p3.pdf
+
+ Its brother, HC-128, is a third phase candidate in the eStream contest.
+ The algorithm is patent-free. No attacks are known as of today (April 2007).
+ See
+
+ http://www.ecrypt.eu.org/stream/hcp3.html
+
+
+
+ Initialise a HC-256 cipher.
+
+ @param forEncryption whether or not we are for encryption. Irrelevant, as
+ encryption and decryption are the same.
+ @param params the parameters required to set up the cipher.
+ @throws ArgumentException if the params argument is
+ inappropriate (ie. the key is not 256 bit long).
+
+
+ Implementation of Bob Jenkin's ISAAC (Indirection Shift Accumulate Add and Count).
+ see: http://www.burtleburtle.net/bob/rand/isaacafa.html
+
+
+ initialise an ISAAC 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.
+
+
+ A class that provides a basic International Data Encryption Algorithm (IDEA) engine.
+
+ 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!).
+
+
+ It can be found at ftp://ftp.funet.fi/pub/crypt/cryptography/symmetric/idea/
+
+
+ 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
+ www.mediacrypt.com for
+ further details. This announcement has been included at the request of
+ the patent holders.
+
+
+ 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.
+
+
+
+ standard constructor.
+
+
+ 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.
+
+
+ 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
+
+
+ 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.
+
+
+ This function computes multiplicative inverse using Euclid's Greatest
+ Common Divisor algorithm. Zero and one are self inverse.
+
+ i.e. x * MulInv(x) == 1 (modulo BASE)
+
+
+
+ Return the additive inverse of x.
+
+ i.e. x + AddInv(x) == 0
+
+
+
+ The function to invert the encryption subkey to the decryption subkey.
+ It also involves the multiplicative inverse and the additive inverse functions.
+
+
+ support class for constructing intergrated encryption ciphers
+ for doing basic message exchanges on top of key agreement ciphers
+
+
+ set up for use with stream mode, where the key derivation function
+ is used to provide a stream of bytes to xor with the message.
+
+ @param agree the key agreement used as the basis for the encryption
+ @param kdf the key derivation function used for byte generation
+ @param mac the message authentication code generator for the message
+
+
+ set up for use in conjunction with a block cipher to handle the
+ message.
+
+ @param agree the key agreement used as the basis for the encryption
+ @param kdf the key derivation function used for byte generation
+ @param mac the message authentication code generator for the message
+ @param cipher the cipher to used for encrypting the message
+
+
+ Initialise the encryptor.
+
+ @param forEncryption whether or not this is encryption/decryption.
+ @param privParam our private key parameters
+ @param pubParam the recipient's/sender's public key parameters
+ @param param encoding and derivation parameters.
+
+
+ NaccacheStern Engine. For details on this cipher, please see
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Initializes this algorithm. Must be called before all other Functions.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#init(bool,
+ org.bouncycastle.crypto.CipherParameters)
+
+
+ Returns the input block size of this algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#GetInputBlockSize()
+
+
+ Returns the output block size of this algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#GetOutputBlockSize()
+
+
+ Process a single Block using the Naccache-Stern algorithm.
+
+ @see org.bouncycastle.crypto.AsymmetricBlockCipher#ProcessBlock(byte[],
+ int, int)
+
+
+ Encrypts a BigInteger aka Plaintext with the public key.
+
+ @param plain
+ The BigInteger to encrypt
+ @return The byte[] representation of the encrypted BigInteger (i.e.
+ crypted.toByteArray())
+
+
+ Adds the contents of two encrypted blocks mod sigma
+
+ @param block1
+ the first encrypted block
+ @param block2
+ the second encrypted block
+ @return encrypt((block1 + block2) mod sigma)
+ @throws InvalidCipherTextException
+
+
+ Convenience Method for data exchange with the cipher.
+
+ Determines blocksize and splits data to blocksize.
+
+ @param data the data to be processed
+ @return the data after it went through the NaccacheSternEngine.
+ @throws InvalidCipherTextException
+
+
+ Computes the integer x that is expressed through the given primes and the
+ congruences with the chinese remainder theorem (CRT).
+
+ @param congruences
+ the congruences c_i
+ @param primes
+ the primes p_i
+ @return an integer x for that x % p_i == c_i
+
+
+ A Noekeon engine, using direct-key mode.
+
+
+ Create an instance of the Noekeon encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ The no-op engine that just copies bytes through, irrespective of whether encrypting and decrypting.
+ Provided for the sake of completeness.
+
+
+ an implementation of RC2 as described in RFC 2268
+ "A Description of the RC2(r) Encryption Algorithm" R. Rivest.
+
+
+ initialise a RC2 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.
+
+
+ return the result rotating the 16 bit number in x left by y
+
+
+ Wrap keys according to RFC 3217 - RC2 mechanism
+
+
+ Field engine
+
+
+ Field param
+
+
+ Field paramPlusIV
+
+
+ Field iv
+
+
+ Field forWrapping
+
+
+ Field IV2
+
+
+ Method init
+
+ @param forWrapping
+ @param param
+
+
+ Method GetAlgorithmName
+
+ @return
+
+
+ Method wrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+
+
+ Method unwrap
+
+ @param in
+ @param inOff
+ @param inLen
+ @return
+ @throws InvalidCipherTextException
+
+
+ Some key wrap algorithms make use of the Key Checksum defined
+ in CMS [CMS-Algorithms]. This is used to provide an integrity
+ check value for the key being wrapped. The algorithm is
+
+ - Compute the 20 octet SHA-1 hash on the key being wrapped.
+ - Use the first 8 octets of this hash as the checksum value.
+
+ @param key
+ @return
+ @throws Exception
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ @param key
+ @param checksum
+ @return
+ @see http://www.w3.org/TR/xmlenc-core/#sec-CMSKeyChecksum
+
+
+ initialise a RC4 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.
+
+
+ The specification for RC5 came from the RC5 Encryption Algorithm
+ publication in RSA CryptoBytes, Spring of 1995.
+ http://www.rsasecurity.com/rsalabs/cryptobytes.
+
+ This implementation has a word size of 32 bits.
+
+
+ Create an instance of the RC5 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-32 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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Encrypt the given block starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param in in byte buffer containing data to encrypt
+ @param inOff offset into src buffer
+ @param out out buffer where encrypted data is written
+ @param outOff offset into out buffer
+
+
+ Perform a left "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(32) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % 32
+
+
+ Perform a right "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(32) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % 32
+
+
+ The specification for RC5 came from the RC5 Encryption Algorithm
+ publication in RSA CryptoBytes, Spring of 1995.
+ http://www.rsasecurity.com/rsalabs/cryptobytes.
+
+ This implementation is set to work with a 64 bit word size.
+
+
+ Create an instance of the RC5 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-64 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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Encrypt the given block starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+
+ @param in in byte buffer containing data to encrypt
+ @param inOff offset into src buffer
+ @param out out buffer where encrypted data is written
+ @param outOff offset into out buffer
+
+
+ Perform a left "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ Perform a right "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ An RC6 engine.
+
+
+ Create an instance of the RC6 encryption algorithm
+ and set some defaults
+
+
+ initialise a RC5-32 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.
+
+
+ Re-key the cipher.
+
+ @param inKey the key to be used
+
+
+ Perform a left "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ Perform a right "spin" of the word. The rotation of the given
+ word x is rotated left by y bits.
+ Only the lg(wordSize) low-order bits of y
+ are used to determine the rotation amount. Here it is
+ assumed that the wordsize used is a power of 2.
+
+ @param x word to rotate
+ @param y number of bits to rotate % wordSize
+
+
+ an implementation of the RFC 3211 Key Wrap
+ Specification.
+
+
+
+ An implementation of the AES Key Wrapper from the NIST Key Wrap
+ Specification as described in RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc3394.txt
+ and http://csrc.nist.gov/encryption/kms/key-wrap.pdf.
+
+
+
+ this does your basic RSA algorithm with blinding
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic RSA algorithm.
+
+ @param inBuf the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @exception DataLengthException the input block is too large.
+
+
+ This does your basic RSA Chaum's blinding and unblinding as outlined in
+ "Handbook of Applied Cryptography", page 475. You need to use this if you are
+ trying to get another party to generate signatures without them being aware
+ of the message they are signing.
+
+
+ Initialise the blinding engine.
+
+ @param forEncryption true if we are encrypting (blinding), false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the RSA blinding algorithm.
+
+ @param in the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @throws DataLengthException the input block is too large.
+
+
+ this does your basic RSA algorithm.
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ an implementation of Rijndael, based on the documentation and reference implementation
+ by Paulo Barreto, Vincent Rijmen, for v2.0 August '99.
+
+ Note: this implementation is based on information prior to readonly NIST publication.
+
+
+
+ multiply two elements of GF(2^m)
+ needed for MixColumn and InvMixColumn
+
+
+ xor corresponding text input and round key input bytes
+
+
+ Row 0 remains unchanged
+ The other three rows are shifted a variable amount
+
+
+ Replace every byte of the input by the byte at that place
+ in the nonlinear S-box
+
+
+ Mix the bytes of every column in a linear way
+
+
+ Mix the bytes of every column in a linear way
+ This is the opposite operation of Mixcolumn
+
+
+ Calculate the necessary round keys
+ The number of calculations depends on keyBits and blockBits
+
+
+ default constructor - 128 bit block size.
+
+
+ basic constructor - set the cipher up for a given blocksize
+
+ @param blocksize the blocksize in bits, must be 128, 192, or 256.
+
+
+ initialise a Rijndael 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.
+
+
+ this does your basic RSA algorithm.
+
+
+ initialise the RSA engine.
+
+ @param forEncryption true if we are encrypting, false otherwise.
+ @param param the necessary RSA key parameters.
+
+
+ Return the maximum size for an input block to this engine.
+ For RSA this is always one byte less than the key size on
+ encryption, and the same length as the key size on decryption.
+
+ @return maximum size for an input block.
+
+
+ Return the maximum size for an output block to this engine.
+ For RSA this is always one byte less than the key size on
+ decryption, and the same length as the key size on encryption.
+
+ @return maximum size for an output block.
+
+
+ Process a single block using the basic RSA algorithm.
+
+ @param inBuf the input array.
+ @param inOff the offset into the input buffer where the data starts.
+ @param inLen the length of the data to be processed.
+ @return the result of the RSA process.
+ @exception DataLengthException the input block is too large.
+
+
+ Implementation of the SEED algorithm as described in RFC 4009
+
+
+
+ An implementation of the SEED key wrapper based on RFC 4010/RFC 3394.
+
+ For further details see: http://www.ietf.org/rfc/rfc4010.txt.
+
+
+
+
+ Implementation of Daniel J. Bernstein's Salsa20 stream cipher, Snuffle 2005
+
+
+
+ Constants
+
+
+
+ Creates a 20 round Salsa20 engine.
+
+
+
+
+ Creates a Salsa20 engine with a specific number of rounds.
+
+ the number of rounds (must be an even number).
+
+
+ Rotate left
+
+ @param x value to rotate
+ @param y amount to rotate x
+
+ @return rotated x
+
+
+ * Serpent is a 128-bit 32-round block cipher with variable key lengths,
+ * including 128, 192 and 256 bit keys conjectured to be at least as
+ * secure as three-key triple-DES.
+ *
+ * Serpent was designed by Ross Anderson, Eli Biham and Lars Knudsen as a
+ * candidate algorithm for the NIST AES Quest.
+ *
+ *
+ * For full details see The Serpent home page
+ *
+
+
+ Expand a user-supplied key material into a session key.
+
+ @param key The user-key bytes (multiples of 4) to use.
+ @exception ArgumentException
+
+
+ Encrypt one block of plaintext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ Decrypt one block of ciphertext.
+
+ @param input the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param output the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+
+
+ a class that provides a basic SKIPJACK engine.
+
+
+ initialise a SKIPJACK 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.
+
+
+ The G permutation
+
+
+ the inverse of the G permutation.
+
+
+ An TEA engine.
+
+
+ Create an instance of the TEA encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+
+ Implementation of the Threefish tweakable large block cipher in 256, 512 and 1024 bit block
+ sizes.
+
+
+ This is the 1.3 version of Threefish defined in the Skein hash function submission to the NIST
+ SHA-3 competition in October 2010.
+
+ Threefish was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+ This implementation inlines all round functions, unrolls 8 rounds, and uses 1.2k of static tables
+ to speed up key schedule injection.
+ 2 x block size state is retained by each cipher instance.
+
+
+
+
+ 256 bit block size - Threefish-256
+
+
+
+
+ 512 bit block size - Threefish-512
+
+
+
+
+ 1024 bit block size - Threefish-1024
+
+
+
+ Size of the tweak in bytes (always 128 bit/16 bytes)
+
+
+ Rounds in Threefish-256
+
+
+ Rounds in Threefish-512
+
+
+ Rounds in Threefish-1024
+
+
+ Max rounds of any of the variants
+
+
+ Key schedule parity constant
+
+
+ Block size in bytes
+
+
+ Block size in 64 bit words
+
+
+ Buffer for byte oriented processBytes to call internal word API
+
+
+ Tweak bytes (2 byte t1,t2, calculated t3 and repeat of t1,t2 for modulo free lookup
+
+
+ Key schedule words
+
+
+ The internal cipher implementation (varies by blocksize)
+
+
+
+ Constructs a new Threefish cipher, with a specified block size.
+
+ the block size in bits, one of , ,
+ .
+
+
+
+ Initialise the engine.
+
+ Initialise for encryption if true, for decryption if false.
+ an instance of or (to
+ use a 0 tweak)
+
+
+
+ Initialise the engine, specifying the key and tweak directly.
+
+ the cipher mode.
+ the words of the key, or null
to use the current key.
+ the 2 word (128 bit) tweak, or null
to use the current tweak.
+
+
+
+ Process a block of data represented as 64 bit words.
+
+ the number of 8 byte words processed (which will be the same as the block size).
+ a block sized buffer of words to process.
+ a block sized buffer of words to receive the output of the operation.
+ if either the input or output is not block sized
+ if this engine is not initialised
+
+
+
+ Read a single 64 bit word from input in LSB first order.
+
+
+
+
+ Write a 64 bit word to output in LSB first order.
+
+
+
+ Rotate left + xor part of the mix operation.
+
+
+ Rotate xor + rotate right part of the unmix operation.
+
+
+ The extended + repeated tweak words
+
+
+ The extended + repeated key words
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ Mix rotation constants defined in Skein 1.3 specification
+
+
+ A class that provides Twofish encryption operations.
+
+ This Java implementation is based on the Java reference
+ implementation provided by Bruce Schneier and developed
+ by Raif S. Naffah.
+
+
+ Define the fixed p0/p1 permutations used in keyed S-box lookup.
+ By changing the following constant definitions, the S-boxes will
+ automatically Get changed in the Twofish engine.
+
+
+ gSubKeys[] and gSBox[] are eventually used in the
+ encryption and decryption methods.
+
+
+ initialise a Twofish 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.
+
+
+ Encrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+ encryptBlock uses the pre-calculated gSBox[] and subKey[]
+ arrays.
+
+
+ Decrypt the given input starting at the given offset and place
+ the result in the provided buffer starting at the given offset.
+ The input will be an exact multiple of our blocksize.
+
+
+ Use (12, 8) Reed-Solomon code over GF(256) to produce
+ a key S-box 32-bit entity from 2 key material 32-bit
+ entities.
+
+ @param k0 first 32-bit entity
+ @param k1 second 32-bit entity
+ @return Remainder polynomial Generated using RS code
+
+
+ * Reed-Solomon code parameters: (12,8) reversible code:
+ *
+ *
+ * G(x) = x^4 + (a+1/a)x^3 + ax^2 + (a+1/a)x + 1
+ *
+ * where a = primitive root of field generator 0x14D
+ *
+
+
+ initialise a VMPC 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.
+
+
+
+ Implementation of Daniel J. Bernstein's XSalsa20 stream cipher - Salsa20 with an extended nonce.
+
+
+ XSalsa20 requires a 256 bit key, and a 192 bit nonce.
+
+
+
+
+ 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.
+
+
+
+ An XTEA engine.
+
+
+ Create an instance of the TEA encryption algorithm
+ and set some defaults
+
+
+ initialise
+
+ @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.
+
+
+ Re-key the cipher.
+
+ @param key the key to be used
+
+
+ Base interface for a public/private key block cipher.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The maximum size, in bytes, an input block may be.
+
+
+ The maximum size, in bytes, an output block will be.
+
+
+ Process a block.
+ The input buffer.
+ The offset into inBuf that the input block begins.
+ The length of the input block.
+ Input decrypts improperly.
+ Input is too large for the cipher.
+
+
+ interface that a public/private key pair generator should conform to.
+
+
+ intialise the key pair generator.
+
+ @param the parameters the key pair is to be initialised with.
+
+
+ return an AsymmetricCipherKeyPair containing the Generated keys.
+
+ @return an AsymmetricCipherKeyPair containing the Generated keys.
+
+
+ The basic interface that basic Diffie-Hellman implementations
+ conforms to.
+
+
+ initialise the agreement engine.
+
+
+ return the field size for the agreement algorithm in bytes.
+
+
+ given a public key from a given party calculate the next
+ message in the agreement sequence.
+
+
+ Base interface for a symmetric key block cipher.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The block size for this cipher, in bytes.
+
+
+ Indicates whether this cipher can handle partial blocks.
+
+
+ Process a block.
+ The input buffer.
+ The offset into inBuf that the input block begins.
+ The output buffer.
+ The offset into outBuf to write the output block.
+ If input block is wrong size, or outBuf too small.
+ The number of bytes processed and produced.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+
+ Operators that reduce their input to a single block return an object
+ of this type.
+
+
+
+
+ Return the final result of the operation.
+
+ A block of bytes, representing the result of an operation.
+
+
+
+ Store the final result of the operation by copying it into the destination array.
+
+ The number of bytes copied into destination.
+ The byte array to copy the result into.
+ The offset into destination to start copying the result at.
+
+
+ Block cipher engines are expected to conform to this interface.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ If true the cipher is initialised for encryption,
+ if false for decryption.
+ The key and other data required by the cipher.
+
+
+
+ Reset the cipher. After resetting the cipher is in the same state
+ as it was after the last init (if there was one).
+
+
+
+ all parameter classes implement this.
+
+
+ interface for classes implementing the Digital Signature Algorithm
+
+
+ initialise the signer for signature generation or signature
+ verification.
+
+ @param forSigning true if we are generating a signature, false
+ otherwise.
+ @param param key parameters for signature generation.
+
+
+ sign the passed in message (usually the output of a hash function).
+
+ @param message the message to be signed.
+ @return two big integers representing the r and s values respectively.
+
+
+ verify the message message against the signature values r and s.
+
+ @param message the message that was supposed to have been signed.
+ @param r the r signature value.
+ @param s the s signature value.
+
+
+ base interface for general purpose byte derivation functions.
+
+
+ return the message digest used as the basis for the function
+
+
+ Parameters for key/byte stream derivation classes
+
+
+ interface that a message digest conforms to.
+
+
+ return the algorithm name
+
+ @return the algorithm name
+
+
+ return the size, in bytes, of the digest produced by this message digest.
+
+ @return the size, in bytes, of the digest produced by this message digest.
+
+
+ return the size, in bytes, of the internal buffer used by this digest.
+
+ @return the size, in bytes, of the internal buffer used by this digest.
+
+
+ update the message digest with a single byte.
+
+ @param inByte the input byte to be entered.
+
+
+ update the message digest with a block of bytes.
+
+ @param input the byte array containing the data.
+ @param inOff the offset into the byte array where the data starts.
+ @param len the length of the data.
+
+
+ Close the digest, producing the final digest value. The doFinal
+ call leaves the digest reset.
+
+ @param output the array the digest is to be copied into.
+ @param outOff the offset into the out array the digest is to start at.
+
+
+ reset the digest back to it's initial state.
+
+
+
+ Base interface describing an entropy source for a DRBG.
+
+
+
+
+ Return whether or not this entropy source is regarded as prediction resistant.
+
+ true if this instance is prediction resistant; otherwise, false.
+
+
+
+ Return a byte array of entropy.
+
+ The entropy bytes.
+
+
+
+ Return the number of bits of entropy this source can produce.
+
+ The size, in bits, of the return value of getEntropy.
+
+
+
+ Base interface describing a provider of entropy sources.
+
+
+
+
+ Return an entropy source providing a block of entropy.
+
+ The size of the block of entropy required.
+ An entropy source providing bitsRequired blocks of entropy.
+
+
+ The base interface for implementations of message authentication codes (MACs).
+
+
+ Initialise the MAC.
+
+ @param param the key and other data required by the MAC.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Return the name of the algorithm the MAC implements.
+
+ @return the name of the algorithm the MAC implements.
+
+
+ Return the block size for this MAC (in bytes).
+
+ @return the block size for this MAC in bytes.
+
+
+ add a single byte to the mac for processing.
+
+ @param in the byte to be processed.
+ @exception InvalidOperationException if the MAC is not initialised.
+
+
+ @param in the array containing the input.
+ @param inOff the index in the array the data begins at.
+ @param len the length of the input starting at inOff.
+ @exception InvalidOperationException if the MAC is not initialised.
+ @exception DataLengthException if there isn't enough data in in.
+
+
+ Compute the final stage of the MAC writing the output to the out
+ parameter.
+
+ doFinal leaves the MAC in the same state it was after the last init.
+
+ @param out the array the MAC is to be output to.
+ @param outOff the offset into the out buffer the output is to start at.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the MAC is not initialised.
+
+
+ Reset the MAC. At the end of resetting the MAC should be in the
+ in the same state it was after the last init (if there was one).
+
+
+
+ Base interface for operators that serve as stream-based signature calculators.
+
+
+
+ The algorithm details object for this calculator.
+
+
+
+ Create a stream calculator for this signature calculator. The stream
+ calculator is used for the actual operation of entering the data to be signed
+ and producing the signature block.
+
+ A calculator producing an IBlockResult with a signature in it.
+
+
+
+ Base interface for cryptographic operations such as Hashes, MACs, and Signatures which reduce a stream of data
+ to a single value.
+
+
+
+ Return a "sink" stream which only exists to update the implementing object.
+ A stream to write to in order to update the implementing object.
+
+
+
+ Return the result of processing the stream. This value is only available once the stream
+ has been closed.
+
+ The result of processing the stream.
+
+
+ Return the name of the algorithm the signer implements.
+
+ @return the name of the algorithm the signer implements.
+
+
+ Initialise the signer for signing or verification.
+
+ @param forSigning true if for signing, false otherwise
+ @param param necessary parameters.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ return true if the internal state represents the signature described
+ in the passed in array.
+
+
+ reset the internal state
+
+
+ Signer with message recovery.
+
+
+ Returns true if the signer has recovered the full message as
+ part of signature verification.
+
+ @return true if full message recovered.
+
+
+ Returns a reference to what message was recovered (if any).
+
+ @return full/partial message, null if nothing.
+
+
+ Perform an update with the recovered message before adding any other data. This must
+ be the first update method called, and calling it will result in the signer assuming
+ that further calls to update will include message content past what is recoverable.
+
+ @param signature the signature that we are in the process of verifying.
+ @throws IllegalStateException
+
+
+ The interface stream ciphers conform to.
+
+
+ The name of the algorithm this cipher implements.
+
+
+ Initialise the cipher.
+ If true the cipher is initialised for encryption,
+ if false for decryption.
+ The key and other data required by the cipher.
+
+ If the parameters argument is inappropriate.
+
+
+
+ encrypt/decrypt a single byte returning the result.
+ the byte to be processed.
+ the result of processing the input byte.
+
+
+
+ Process a block of bytes from input putting the result into output.
+
+ The input byte array.
+
+ The offset into input where the data to be processed starts.
+
+ The number of bytes to be processed.
+ The output buffer the processed bytes go into.
+
+ The offset into output the processed data starts at.
+
+ If the output buffer is too small.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+
+ Operators that reduce their input to the validation of a signature produce this type.
+
+
+
+
+ Return true if the passed in data matches what is expected by the verification result.
+
+ The bytes representing the signature.
+ true if the signature verifies, false otherwise.
+
+
+
+ Return true if the length bytes from off in the source array match the signature
+ expected by the verification result.
+
+ Byte array containing the signature.
+ The offset into the source array where the signature starts.
+ The number of bytes in source making up the signature.
+ true if the signature verifies, false otherwise.
+
+
+
+ Base interface for operators that serve as stream-based signature verifiers.
+
+
+
+ The algorithm details object for this verifier.
+
+
+
+ Create a stream calculator for this verifier. The stream
+ calculator is used for the actual operation of entering the data to be verified
+ and producing a result which can be used to verify the original signature.
+
+ A calculator producing an IVerifier which can verify the signature.
+
+
+
+ Base interface for a provider to support the dynamic creation of signature verifiers.
+
+
+
+
+ Return a signature verfier for signature algorithm described in the passed in algorithm details object.
+
+ The details of the signature algorithm verification is required for.
+ A new signature verifier.
+
+
+ The name of the algorithm this cipher implements.
+
+
+
+ With FIPS PUB 202 a new kind of message digest was announced which supported extendable output, or variable digest sizes.
+ This interface provides the extra method required to support variable output on a digest implementation.
+
+
+
+ Output the results of the final calculation for this digest to outLen number of bytes.
+
+ @param out output array to write the output bytes to.
+ @param outOff offset to start writing the bytes at.
+ @param outLen the number of output bytes requested.
+ @return the number of bytes written
+
+
+ this exception is thrown whenever we find something we don't expect in a
+ message.
+
+
+ base constructor.
+
+
+ create a InvalidCipherTextException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+ The base class for parameters to key generators.
+
+
+ initialise the generator with a source of randomness
+ and a strength (in bits).
+
+ @param random the random byte source.
+ @param strength the size, in bits, of the keys we want to produce.
+
+
+ return the random source associated with this
+ generator.
+
+ @return the generators random source.
+
+
+ return the bit strength for keys produced by this generator,
+
+ @return the strength of the keys this generator produces (in bits).
+
+
+
+ This exception is thrown whenever a cipher requires a change of key, iv
+ or similar after x amount of bytes enciphered
+
+
+
+ super class for all Password Based Encyrption (Pbe) parameter generator classes.
+
+
+ base constructor.
+
+
+ initialise the Pbe generator.
+
+ @param password the password converted into bytes (see below).
+ @param salt the salt to be mixed with the password.
+ @param iterationCount the number of iterations the "mixing" function
+ is to be applied for.
+
+
+ return the password byte array.
+
+ @return the password byte array.
+
+
+ return the salt byte array.
+
+ @return the salt byte array.
+
+
+ return the iteration count.
+
+ @return the iteration count.
+
+
+ Generate derived parameters for a key of length keySize.
+
+ @param keySize the length, in bits, of the key required.
+ @return a parameters object representing a key.
+
+
+ Generate derived parameters for a key of length keySize, and
+ an initialisation vector (IV) of length ivSize.
+
+ @param keySize the length, in bits, of the key required.
+ @param ivSize the length, in bits, of the iv required.
+ @return a parameters object representing a key and an IV.
+
+
+ Generate derived parameters for a key of length keySize, specifically
+ for use with a MAC.
+
+ @param keySize the length, in bits, of the key required.
+ @return a parameters object representing a key.
+
+
+ converts a password to a byte array according to the scheme in
+ Pkcs5 (ascii, no padding)
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ converts a password to a byte array according to the scheme in
+ PKCS5 (UTF-8, no padding)
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ converts a password to a byte array according to the scheme in
+ Pkcs12 (unicode, big endian, 2 zero pad bytes at the end).
+
+ @param password a character array representing the password.
+ @return a byte array representing the password.
+
+
+ An EntropySourceProvider where entropy generation is based on a SecureRandom output using SecureRandom.generateSeed().
+
+
+ Create a entropy source provider based on the passed in SecureRandom.
+
+ @param secureRandom the SecureRandom to base EntropySource construction on.
+ @param isPredictionResistant boolean indicating if the SecureRandom is based on prediction resistant entropy or not (true if it is).
+
+
+ Return an entropy source that will create bitsRequired bits of entropy on
+ each invocation of getEntropy().
+
+ @param bitsRequired size (in bits) of entropy to be created by the provided source.
+ @return an EntropySource that generates bitsRequired bits of entropy on each call to its getEntropy() method.
+
+
+ A SP800-90A CTR DRBG.
+
+
+ Construct a SP800-90A CTR DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param engine underlying block cipher to use to support DRBG
+ @param keySizeInBits size of the key to use with the block cipher.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each internal round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Pad out a key for TDEA, setting odd parity for each byte.
+
+ @param keyMaster
+ @param keyOff
+ @param tmp
+ @param tmpOff
+
+
+ Used by both Dual EC and Hash.
+
+
+ A SP800-90A Hash DRBG.
+
+
+ Construct a SP800-90A Hash DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param digest source digest to use for DRB stream.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each internal round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ A SP800-90A HMAC DRBG.
+
+
+ Construct a SP800-90A Hash DRBG.
+
+ Minimum entropy requirement is the security strength requested.
+
+ @param hMac Hash MAC to base the DRBG on.
+ @param securityStrength security strength required (in bits)
+ @param entropySource source of entropy to use for seeding/reseeding.
+ @param personalizationString personalization string to distinguish this DRBG (may be null).
+ @param nonce nonce to further distinguish this DRBG (may be null).
+
+
+ Return the block size (in bits) of the DRBG.
+
+ @return the number of bits produced on each round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Interface to SP800-90A deterministic random bit generators.
+
+
+ Return the block size of the DRBG.
+
+ @return the block size (in bits) produced by each round of the DRBG.
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param additionalInput additional input to be added to the DRBG in this step.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the DRBG.
+
+ @param additionalInput additional input to be added to the DRBG in this step.
+
+
+ Generate numBytes worth of entropy from the passed in entropy source.
+
+ @param entropySource the entropy source to request the data from.
+ @param numBytes the number of bytes of entropy requested.
+ @return a byte array populated with the random data.
+
+
+ Builder class for making SecureRandom objects based on SP 800-90A Deterministic Random Bit Generators (DRBG).
+
+
+ Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with
+ predictionResistant set to false.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the default SecureRandom does for its generateSeed() call.
+
+
+
+ Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value
+ for prediction resistance.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the passed in SecureRandom does for its generateSeed() call.
+
+ @param entropySource
+ @param predictionResistant
+
+
+ Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
+
+ Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.
+
+ @param entropySourceProvider a provider of EntropySource objects.
+
+
+ Set the personalization string for DRBG SecureRandoms created by this builder
+ @param personalizationString the personalisation string for the underlying DRBG.
+ @return the current builder.
+
+
+ Set the security strength required for DRBGs used in building SecureRandom objects.
+
+ @param securityStrength the security strength (in bits)
+ @return the current builder.
+
+
+ Set the amount of entropy bits required for seeding and reseeding DRBGs used in building SecureRandom objects.
+
+ @param entropyBitsRequired the number of bits of entropy to be requested from the entropy source on each seed/reseed.
+ @return the current builder.
+
+
+ Build a SecureRandom based on a SP 800-90A Hash DRBG.
+
+ @param digest digest algorithm to use in the DRBG underneath the SecureRandom.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a Hash DRBG.
+
+
+ Build a SecureRandom based on a SP 800-90A CTR DRBG.
+
+ @param cipher the block cipher to base the DRBG on.
+ @param keySizeInBits key size in bits to be used with the block cipher.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a CTR DRBG.
+
+
+ Build a SecureRandom based on a SP 800-90A HMAC DRBG.
+
+ @param hMac HMAC algorithm to use in the DRBG underneath the SecureRandom.
+ @param nonce nonce value to use in DRBG construction.
+ @param predictionResistant specify whether the underlying DRBG in the resulting SecureRandom should reseed on each request for bytes.
+ @return a SecureRandom supported by a HMAC DRBG.
+
+
+
+ @param engine
+ @param entropySource
+
+
+ Populate a passed in array with random data.
+
+ @param output output array for generated bits.
+ @param predictionResistant true if a reseed should be forced, false otherwise.
+
+ @return number of bits generated, -1 if a reseed required.
+
+
+ Reseed the RNG.
+
+
+ Basic constructor, creates a builder using an EntropySourceProvider based on the default SecureRandom with
+ predictionResistant set to false.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the default SecureRandom does for its generateSeed() call.
+
+
+
+ Construct a builder with an EntropySourceProvider based on the passed in SecureRandom and the passed in value
+ for prediction resistance.
+
+ Any SecureRandom created from a builder constructed like this will make use of input passed to SecureRandom.setSeed() if
+ the passed in SecureRandom does for its generateSeed() call.
+
+ @param entropySource
+ @param predictionResistant
+
+
+ Create a builder which makes creates the SecureRandom objects from a specified entropy source provider.
+
+ Note: If this constructor is used any calls to setSeed() in the resulting SecureRandom will be ignored.
+
+ @param entropySourceProvider a provider of EntropySource objects.
+
+
+ Construct a X9.31 secure random generator using the passed in engine and key. If predictionResistant is true the
+ generator will be reseeded on each request.
+
+ @param engine a block cipher to use as the operator.
+ @param key the block cipher key to initialise engine with.
+ @param predictionResistant true if engine to be reseeded on each use, false otherwise.
+ @return a SecureRandom.
+
+
+
+ Uses Microsoft's RNGCryptoServiceProvider
+
+
+
+ Random generation based on the digest with counter. Calling AddSeedMaterial will
+ always increase the entropy of the hash.
+
+ Internal access to the digest is synchronized so a single one of these can be shared.
+
+
+
+ Generic interface for objects generating random bytes.
+
+
+ Add more seed material to the generator.
+ A byte array to be mixed into the generator's state.
+
+
+ Add more seed material to the generator.
+ A long value to be mixed into the generator's state.
+
+
+ Fill byte array with random values.
+ Array to be filled.
+
+
+ Fill byte array with random values.
+ Array to receive bytes.
+ Index to start filling at.
+ Length of segment to fill.
+
+
+
+ Takes bytes generated by an underling RandomGenerator and reverses the order in
+ each small window (of configurable size).
+
+ Access to internals is synchronized so a single one of these can be shared.
+
+
+
+
+ Add more seed material to the generator.
+ A byte array to be mixed into the generator's state.
+
+
+ Add more seed material to the generator.
+ A long value to be mixed into the generator's state.
+
+
+ Fill byte array with random values.
+ Array to be filled.
+
+
+ Fill byte array with random values.
+ Array to receive bytes.
+ Index to start filling at.
+ Length of segment to fill.
+
+
+ A thread based seed generator - one source of randomness.
+
+ Based on an idea from Marcus Lippert.
+
+
+
+ Generate seed bytes. Set fast to false for best quality.
+
+ If fast is set to true, the code should be round about 8 times faster when
+ generating a long sequence of random bytes. 20 bytes of random values using
+ the fast mode take less than half a second on a Nokia e70. If fast is set to false,
+ it takes round about 2500 ms.
+
+ @param numBytes the number of bytes to generate
+ @param fast true if fast mode should be used
+
+
+
+ Permutation generated by code:
+
+ // First 1850 fractional digit of Pi number.
+ byte[] key = new BigInteger("14159265358979323846...5068006422512520511").ToByteArray();
+ s = 0;
+ P = new byte[256];
+ for (int i = 0; i < 256; i++)
+ {
+ P[i] = (byte) i;
+ }
+ for (int m = 0; m < 768; m++)
+ {
+ s = P[(s + P[m & 0xff] + key[m % key.length]) & 0xff];
+ byte temp = P[m & 0xff];
+ P[m & 0xff] = P[s & 0xff];
+ P[s & 0xff] = temp;
+ }
+
+
+
+ Value generated in the same way as P.
+
+
+ a wrapper for block ciphers with a single byte block size, so that they
+ can be treated like stream ciphers.
+
+
+ basic constructor.
+
+ @param cipher the block cipher to be wrapped.
+ @exception ArgumentException if the cipher has a block size other than
+ one.
+
+
+ initialise the underlying cipher.
+
+ @param forEncryption true if we are setting up for encryption, false otherwise.
+ @param param the necessary parameters for the underlying cipher to be initialised.
+
+
+ return the name of the algorithm we are wrapping.
+
+ @return the name of the algorithm we are wrapping.
+
+
+ encrypt/decrypt a single byte returning the result.
+
+ @param in the byte to be processed.
+ @return the result of processing the input byte.
+
+
+ process a block of bytes from in putting the result into out.
+
+ @param in the input byte array.
+ @param inOff the offset into the in array where the data to be processed starts.
+ @param len the number of bytes to be processed.
+ @param out the output buffer the processed bytes go into.
+ @param outOff the offset into the output byte array the processed data stars at.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ reset the underlying cipher. This leaves it in the same state
+ it was at after the last init (if there was one).
+
+
+ a Diffie-Hellman key exchange engine.
+
+ note: This uses MTI/A0 key agreement in order to make the key agreement
+ secure against passive attacks. If you're doing Diffie-Hellman and both
+ parties have long term public keys you should look at using this. For
+ further information have a look at RFC 2631.
+
+ It's possible to extend this to more than two parties as well, for the moment
+ that is left as an exercise for the reader.
+
+
+ calculate our initial message.
+
+
+ given a message from a given party and the corresponding public key
+ calculate the next message in the agreement sequence. In this case
+ this will represent the shared secret.
+
+
+ a Diffie-Hellman key agreement class.
+
+ note: This is only the basic algorithm, it doesn't take advantage of
+ long term public keys if they are available. See the DHAgreement class
+ for a "better" implementation.
+
+
+ given a short term public key from a given party calculate the next
+ message in the agreement sequence.
+
+
+ Standard Diffie-Hellman groups from various IETF specifications.
+
+
+ P1363 7.2.1 ECSVDP-DH
+
+ ECSVDP-DH is Elliptic Curve Secret Value Derivation Primitive,
+ Diffie-Hellman version. It is based on the work of [DH76], [Mil86],
+ and [Kob87]. This primitive derives a shared secret value from one
+ party's private key and another party's public key, where both have
+ the same set of EC domain parameters. If two parties correctly
+ execute this primitive, they will produce the same output. This
+ primitive can be invoked by a scheme to derive a shared secret key;
+ specifically, it may be used with the schemes ECKAS-DH1 and
+ DL/ECKAS-DH2. It assumes that the input keys are valid (see also
+ Section 7.2.2).
+
+
+ P1363 7.2.2 ECSVDP-DHC
+
+ ECSVDP-DHC is Elliptic Curve Secret Value Derivation Primitive,
+ Diffie-Hellman version with cofactor multiplication. It is based on
+ the work of [DH76], [Mil86], [Kob87], [LMQ98] and [Kal98a]. This
+ primitive derives a shared secret value from one party's private key
+ and another party's public key, where both have the same set of EC
+ domain parameters. If two parties correctly execute this primitive,
+ they will produce the same output. This primitive can be invoked by a
+ scheme to derive a shared secret key; specifically, it may be used
+ with the schemes ECKAS-DH1 and DL/ECKAS-DH2. It does not assume the
+ validity of the input public key (see also Section 7.2.1).
+
+ Note: As stated P1363 compatibility mode with ECDH can be preset, and
+ in this case the implementation doesn't have a ECDH compatibility mode
+ (if you want that just use ECDHBasicAgreement and note they both implement
+ BasicAgreement!).
+
+
+
+ A participant in a Password Authenticated Key Exchange by Juggling (J-PAKE) exchange.
+
+ The J-PAKE exchange is defined by Feng Hao and Peter Ryan in the paper
+
+ "Password Authenticated Key Exchange by Juggling, 2008."
+
+ The J-PAKE protocol is symmetric.
+ There is no notion of a client or server, but rather just two participants.
+ An instance of JPakeParticipant represents one participant, and
+ is the primary interface for executing the exchange.
+
+ To execute an exchange, construct a JPakeParticipant on each end,
+ and call the following 7 methods
+ (once and only once, in the given order, for each participant, sending messages between them as described):
+
+ CreateRound1PayloadToSend() - and send the payload to the other participant
+ ValidateRound1PayloadReceived(JPakeRound1Payload) - use the payload received from the other participant
+ CreateRound2PayloadToSend() - and send the payload to the other participant
+ ValidateRound2PayloadReceived(JPakeRound2Payload) - use the payload received from the other participant
+ CalculateKeyingMaterial()
+ CreateRound3PayloadToSend(BigInteger) - and send the payload to the other participant
+ ValidateRound3PayloadReceived(JPakeRound3Payload, BigInteger) - use the payload received from the other participant
+
+ Each side should derive a session key from the keying material returned by CalculateKeyingMaterial().
+ The caller is responsible for deriving the session key using a secure key derivation function (KDF).
+
+ Round 3 is an optional key confirmation process.
+ If you do not execute round 3, then there is no assurance that both participants are using the same key.
+ (i.e. if the participants used different passwords, then their session keys will differ.)
+
+ If the round 3 validation succeeds, then the keys are guaranteed to be the same on both sides.
+
+ The symmetric design can easily support the asymmetric cases when one party initiates the communication.
+ e.g. Sometimes the round1 payload and round2 payload may be sent in one pass.
+ Also, in some cases, the key confirmation payload can be sent together with the round2 payload.
+ These are the trivial techniques to optimize the communication.
+
+ The key confirmation process is implemented as specified in
+ NIST SP 800-56A Revision 1,
+ Section 8.2 Unilateral Key Confirmation for Key Agreement Schemes.
+
+ This class is stateful and NOT threadsafe.
+ Each instance should only be used for ONE complete J-PAKE exchange
+ (i.e. a new JPakeParticipant should be constructed for each new J-PAKE exchange).
+
+
+
+
+ Convenience constructor for a new JPakeParticipant that uses
+ the JPakePrimeOrderGroups#NIST_3072 prime order group,
+ a SHA-256 digest, and a default SecureRandom implementation.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+
+
+
+ Convenience constructor for a new JPakeParticipant that uses
+ a SHA-256 digest, and a default SecureRandom implementation.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+ Prime order group. See JPakePrimeOrderGroups for standard groups.
+
+
+
+ Constructor for a new JPakeParticipant.
+
+ After construction, the State state will be STATE_INITIALIZED.
+
+ Throws NullReferenceException if any argument is null. Throws
+ ArgumentException if password is empty.
+
+ Unique identifier of this participant.
+ The two participants in the exchange must NOT share the same id.
+ Shared secret.
+ A defensive copy of this array is made (and cleared once CalculateKeyingMaterial() is called).
+ Caller should clear the input password as soon as possible.
+ Prime order group. See JPakePrimeOrderGroups for standard groups.
+ Digest to use during zero knowledge proofs and key confirmation
+ (SHA-256 or stronger preferred).
+ Source of secure random data for x1 and x2, and for the zero knowledge proofs.
+
+
+
+ Gets the current state of this participant.
+ See the STATE_* constants for possible values.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 1.
+
+ After execution, the State state} will be STATE_ROUND_1_CREATED}.
+
+
+
+
+ Validates the payload received from the other participant during round 1.
+
+ Must be called prior to CreateRound2PayloadToSend().
+
+ After execution, the State state will be STATE_ROUND_1_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws InvalidOperationException
+ if called multiple times.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 2.
+
+ ValidateRound1PayloadReceived(JPakeRound1Payload) must be called prior to this method.
+
+ After execution, the State state will be STATE_ROUND_2_CREATED.
+
+ Throws InvalidOperationException if called prior to ValidateRound1PayloadReceived(JPakeRound1Payload), or multiple times
+
+
+
+
+ Validates the payload received from the other participant during round 2.
+ Note that this DOES NOT detect a non-common password.
+ The only indication of a non-common password is through derivation
+ of different keys (which can be detected explicitly by executing round 3 and round 4)
+
+ Must be called prior to CalculateKeyingMaterial().
+
+ After execution, the State state will be STATE_ROUND_2_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws
+ InvalidOperationException if called prior to ValidateRound1PayloadReceived(JPakeRound1Payload), or multiple times
+
+
+
+
+ Calculates and returns the key material.
+ A session key must be derived from this key material using a secure key derivation function (KDF).
+ The KDF used to derive the key is handled externally (i.e. not by JPakeParticipant).
+
+ The keying material will be identical for each participant if and only if
+ each participant's password is the same. i.e. If the participants do not
+ share the same password, then each participant will derive a different key.
+ Therefore, if you immediately start using a key derived from
+ the keying material, then you must handle detection of incorrect keys.
+ If you want to handle this detection explicitly, you can optionally perform
+ rounds 3 and 4. See JPakeParticipant for details on how to execute
+ rounds 3 and 4.
+
+ The keying material will be in the range [0, p-1].
+
+ ValidateRound2PayloadReceived(JPakeRound2Payload) must be called prior to this method.
+
+ As a side effect, the internal password array is cleared, since it is no longer needed.
+
+ After execution, the State state will be STATE_KEY_CALCULATED.
+
+ Throws InvalidOperationException if called prior to ValidateRound2PayloadReceived(JPakeRound2Payload),
+ or if called multiple times.
+
+
+
+
+ Creates and returns the payload to send to the other participant during round 3.
+
+ See JPakeParticipant for more details on round 3.
+
+ After execution, the State state} will be STATE_ROUND_3_CREATED.
+ Throws InvalidOperationException if called prior to CalculateKeyingMaterial, or multiple
+ times.
+
+ The keying material as returned from CalculateKeyingMaterial().
+
+
+
+ Validates the payload received from the other participant during round 3.
+
+ See JPakeParticipant for more details on round 3.
+
+ After execution, the State state will be STATE_ROUND_3_VALIDATED.
+
+ Throws CryptoException if validation fails. Throws InvalidOperationException if called prior to
+ CalculateKeyingMaterial or multiple times
+
+ The round 3 payload received from the other participant.
+ The keying material as returned from CalculateKeyingMaterial().
+
+
+
+ A pre-computed prime order group for use during a J-PAKE exchange.
+
+ Typically a Schnorr group is used. In general, J-PAKE can use any prime order group
+ that is suitable for public key cryptography, including elliptic curve cryptography.
+
+ See JPakePrimeOrderGroups for convenient standard groups.
+
+ NIST publishes
+ many groups that can be used for the desired level of security.
+
+
+
+
+ Constructs a new JPakePrimeOrderGroup.
+
+ In general, you should use one of the pre-approved groups from
+ JPakePrimeOrderGroups, rather than manually constructing one.
+
+ The following basic checks are performed:
+
+ p-1 must be evenly divisible by q
+ g must be in [2, p-1]
+ g^q mod p must equal 1
+ p must be prime (within reasonably certainty)
+ q must be prime (within reasonably certainty)
+
+ The prime checks are performed using BigInteger#isProbablePrime(int),
+ and are therefore subject to the same probability guarantees.
+
+ These checks prevent trivial mistakes.
+ However, due to the small uncertainties if p and q are not prime,
+ advanced attacks are not prevented.
+ Use it at your own risk.
+
+ Throws NullReferenceException if any argument is null. Throws
+ InvalidOperationException is any of the above validations fail.
+
+
+
+
+ Constructor used by the pre-approved groups in JPakePrimeOrderGroups.
+ These pre-approved groups can avoid the expensive checks.
+ User-specified groups should not use this constructor.
+
+
+
+
+ Standard pre-computed prime order groups for use by J-PAKE.
+ (J-PAKE can use pre-computed prime order groups, same as DSA and Diffie-Hellman.)
+
+ This class contains some convenient constants for use as input for
+ constructing {@link JPAKEParticipant}s.
+
+ The prime order groups below are taken from Sun's JDK JavaDoc (docs/guide/security/CryptoSpec.html#AppB),
+ and from the prime order groups
+ published by NIST.
+
+
+
+
+ From Sun's JDK JavaDoc (docs/guide/security/CryptoSpec.html#AppB)
+ 1024-bit p, 160-bit q and 1024-bit g for 80-bit security.
+
+
+
+
+ From NIST.
+ 2048-bit p, 224-bit q and 2048-bit g for 112-bit security.
+
+
+
+
+ From NIST.
+ 3072-bit p, 256-bit q and 3072-bit g for 128-bit security.
+
+
+
+
+ The payload sent/received during the first round of a J-PAKE exchange.
+
+ Each JPAKEParticipant creates and sends an instance of this payload to
+ the other. The payload to send should be created via
+ JPAKEParticipant.CreateRound1PayloadToSend().
+
+ Each participant must also validate the payload received from the other.
+ The received payload should be validated via
+ JPAKEParticipant.ValidateRound1PayloadReceived(JPakeRound1Payload).
+
+
+
+
+ The id of the JPAKEParticipant who created/sent this payload.
+
+
+
+
+ The value of g^x1
+
+
+
+
+ The value of g^x2
+
+
+
+
+ The zero knowledge proof for x1.
+
+ This is a two element array, containing {g^v, r} for x1.
+
+
+
+
+ The zero knowledge proof for x2.
+
+ This is a two element array, containing {g^v, r} for x2.
+
+
+
+
+ The payload sent/received during the second round of a J-PAKE exchange.
+
+ Each JPAKEParticipant creates and sends an instance
+ of this payload to the other JPAKEParticipant.
+ The payload to send should be created via
+ JPAKEParticipant#createRound2PayloadToSend()
+
+ Each JPAKEParticipant must also validate the payload
+ received from the other JPAKEParticipant.
+ The received payload should be validated via
+ JPAKEParticipant#validateRound2PayloadReceived(JPakeRound2Payload)
+
+
+
+
+ The id of the JPAKEParticipant who created/sent this payload.
+
+
+
+
+ The value of A, as computed during round 2.
+
+
+
+
+ The zero knowledge proof for x2 * s.
+
+ This is a two element array, containing {g^v, r} for x2 * s.
+
+
+
+
+ The payload sent/received during the optional third round of a J-PAKE exchange,
+ which is for explicit key confirmation.
+
+ Each JPAKEParticipant creates and sends an instance
+ of this payload to the other JPAKEParticipant.
+ The payload to send should be created via
+ JPAKEParticipant#createRound3PayloadToSend(BigInteger)
+
+ Eeach JPAKEParticipant must also validate the payload
+ received from the other JPAKEParticipant.
+ The received payload should be validated via
+ JPAKEParticipant#validateRound3PayloadReceived(JPakeRound3Payload, BigInteger)
+
+
+
+
+ The id of the {@link JPAKEParticipant} who created/sent this payload.
+
+
+
+
+ The value of MacTag, as computed by round 3.
+
+ See JPAKEUtil#calculateMacTag(string, string, BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, org.bouncycastle.crypto.Digest)
+
+
+
+
+ Primitives needed for a J-PAKE exchange.
+
+ The recommended way to perform a J-PAKE exchange is by using
+ two JPAKEParticipants. Internally, those participants
+ call these primitive operations in JPakeUtilities.
+
+ The primitives, however, can be used without a JPAKEParticipant if needed.
+
+
+
+
+ Return a value that can be used as x1 or x3 during round 1.
+ The returned value is a random value in the range [0, q-1].
+
+
+
+
+ Return a value that can be used as x2 or x4 during round 1.
+ The returned value is a random value in the range [1, q-1].
+
+
+
+
+ Converts the given password to a BigInteger
+ for use in arithmetic calculations.
+
+
+
+
+ Calculate g^x mod p as done in round 1.
+
+
+
+
+ Calculate ga as done in round 2.
+
+
+
+
+ Calculate x2 * s as done in round 2.
+
+
+
+
+ Calculate A as done in round 2.
+
+
+
+
+ Calculate a zero knowledge proof of x using Schnorr's signature.
+ The returned array has two elements {g^v, r = v-x*h} for x.
+
+
+
+
+ Validates that g^x4 is not 1.
+ throws CryptoException if g^x4 is 1
+
+
+
+
+ Validates that ga is not 1.
+
+ As described by Feng Hao...
+ Alice could simply check ga != 1 to ensure it is a generator.
+ In fact, as we will explain in Section 3, (x1 + x3 + x4 ) is random over Zq even in the face of active attacks.
+ Hence, the probability for ga = 1 is extremely small - on the order of 2^160 for 160-bit q.
+
+ throws CryptoException if ga is 1
+
+
+
+
+ Validates the zero knowledge proof (generated by
+ calculateZeroKnowledgeProof(BigInteger, BigInteger, BigInteger, BigInteger, BigInteger, string, Digest, SecureRandom)
+ is correct.
+
+ throws CryptoException if the zero knowledge proof is not correct
+
+
+
+
+ Calculates the keying material, which can be done after round 2 has completed.
+ A session key must be derived from this key material using a secure key derivation function (KDF).
+ The KDF used to derive the key is handled externally (i.e. not by JPAKEParticipant).
+
+ KeyingMaterial = (B/g^{x2*x4*s})^x2
+
+
+
+
+ Validates that the given participant ids are not equal.
+ (For the J-PAKE exchange, each participant must use a unique id.)
+
+ Throws CryptoException if the participantId strings are equal.
+
+
+
+
+ Validates that the given participant ids are equal.
+ This is used to ensure that the payloads received from
+ each round all come from the same participant.
+
+
+
+
+ Validates that the given object is not null.
+ throws NullReferenceException if the object is null.
+
+ object in question
+ name of the object (to be used in exception message)
+
+
+
+ Calculates the MacTag (to be used for key confirmation), as defined by
+ NIST SP 800-56A Revision 1,
+ Section 8.2 Unilateral Key Confirmation for Key Agreement Schemes.
+
+ MacTag = HMAC(MacKey, MacLen, MacData)
+ MacKey = H(K || "JPAKE_KC")
+ MacData = "KC_1_U" || participantId || partnerParticipantId || gx1 || gx2 || gx3 || gx4
+
+ Note that both participants use "KC_1_U" because the sender of the round 3 message
+ is always the initiator for key confirmation.
+
+ HMAC = {@link HMac} used with the given {@link Digest}
+ H = The given {@link Digest}
+ MacLen = length of MacTag
+
+
+
+
+ Calculates the MacKey (i.e. the key to use when calculating the MagTag for key confirmation).
+
+ MacKey = H(K || "JPAKE_KC")
+
+
+
+
+ Validates the MacTag received from the partner participant.
+
+ throws CryptoException if the participantId strings are equal.
+
+
+
+ RFC 2631 Diffie-hellman KEK derivation function.
+
+
+ X9.63 based key derivation function for ECDH CMS.
+
+
+ Implements the client side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
+ This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
+ "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
+
+
+ Initialises the client to begin new authentication attempt
+ @param N The safe prime associated with the client's verifier
+ @param g The group parameter associated with the client's verifier
+ @param digest The digest algorithm associated with the client's verifier
+ @param random For key generation
+
+
+ Generates client's credentials given the client's salt, identity and password
+ @param salt The salt used in the client's verifier.
+ @param identity The user's identity (eg. username)
+ @param password The user's password
+ @return Client's public value to send to server
+
+
+ Generates client's verification message given the server's credentials
+ @param serverB The server's credentials
+ @return Client's verification message for the server
+ @throws CryptoException If server's credentials are invalid
+
+
+ Computes the client evidence message M1 using the previously received values.
+ To be called after calculating the secret S.
+ @return M1: the client side generated evidence message
+ @throws CryptoException
+
+
+ Authenticates the server evidence message M2 received and saves it only if correct.
+ @param M2: the server side generated evidence message
+ @return A boolean indicating if the server message M2 was the expected one.
+ @throws CryptoException
+
+
+ Computes the final session key as a result of the SRP successful mutual authentication
+ To be called after verifying the server evidence message M2.
+ @return Key: the mutually authenticated symmetric session key
+ @throws CryptoException
+
+
+ Implements the server side SRP-6a protocol. Note that this class is stateful, and therefore NOT threadsafe.
+ This implementation of SRP is based on the optimized message sequence put forth by Thomas Wu in the paper
+ "SRP-6: Improvements and Refinements to the Secure Remote Password Protocol, 2002"
+
+
+ Initialises the server to accept a new client authentication attempt
+ @param N The safe prime associated with the client's verifier
+ @param g The group parameter associated with the client's verifier
+ @param v The client's verifier
+ @param digest The digest algorithm associated with the client's verifier
+ @param random For key generation
+
+
+ Generates the server's credentials that are to be sent to the client.
+ @return The server's public value to the client
+
+
+ Processes the client's credentials. If valid the shared secret is generated and returned.
+ @param clientA The client's credentials
+ @return A shared secret BigInteger
+ @throws CryptoException If client's credentials are invalid
+
+
+ Authenticates the received client evidence message M1 and saves it only if correct.
+ To be called after calculating the secret S.
+ @param M1: the client side generated evidence message
+ @return A boolean indicating if the client message M1 was the expected one.
+ @throws CryptoException
+
+
+ Computes the server evidence message M2 using the previously verified values.
+ To be called after successfully verifying the client evidence message M1.
+ @return M2: the server side generated evidence message
+ @throws CryptoException
+
+
+ Computes the final session key as a result of the SRP successful mutual authentication
+ To be called after calculating the server evidence message M2.
+ @return Key: the mutual authenticated symmetric session key
+ @throws CryptoException
+
+
+ Computes the client evidence message (M1) according to the standard routine:
+ M1 = H( A | B | S )
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param A The public client value
+ @param B The public server value
+ @param S The secret calculated by both sides
+ @return M1 The calculated client evidence message
+
+
+ Computes the server evidence message (M2) according to the standard routine:
+ M2 = H( A | M1 | S )
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param A The public client value
+ @param M1 The client evidence message
+ @param S The secret calculated by both sides
+ @return M2 The calculated server evidence message
+
+
+ Computes the final Key according to the standard routine: Key = H(S)
+ @param digest The Digest used as the hashing function H
+ @param N Modulus used to get the pad length
+ @param S The secret calculated by both sides
+ @return
+
+
+ Generates new SRP verifier for user
+
+
+ Initialises generator to create new verifiers
+ @param N The safe prime to use (see DHParametersGenerator)
+ @param g The group parameter to use (see DHParametersGenerator)
+ @param digest The digest to use. The same digest type will need to be used later for the actual authentication
+ attempt. Also note that the final session key size is dependent on the chosen digest.
+
+
+ Creates a new SRP verifier
+ @param salt The salt to use, generally should be large and random
+ @param identity The user's identifying information (eg. username)
+ @param password The user's password
+ @return A new verifier for use in future SRP authentication
+
+
+ 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.
+
+
+ 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.
+
+
+ return the named curve name represented by the given object identifier.
+
+
+ returns an enumeration containing the name strings for curves
+ contained in this structure.
+
+
+ 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
+ should never use it with anything other than a hash (ie. even if the
+ message is small don't sign the message, sign it's hash) or some "random"
+ value. See your favorite search engine for details.
+
+
+ return the input block size. The largest message we can process
+ is (key_size_in_bits + 3)/16, which in our world comes to
+ key_size_in_bytes / 2.
+
+
+ return the maximum possible size for the output.
+
+
+ set the number of bits in the next message to be treated as
+ pad bits.
+
+
+ retrieve the number of pad bits in the last decoded message.
+
+
+ @exception InvalidCipherTextException if the decrypted block is not a valid ISO 9796 bit string
+
+
+ Optimal Asymmetric Encryption Padding (OAEP) - see PKCS 1 V 2.
+
+
+ @exception InvalidCipherTextException if the decrypted block turns out to
+ be badly formatted.
+
+
+ int to octet string.
+
+
+ mask generator function, as described in PKCS1v2.
+
+
+ this does your basic Pkcs 1 v1.5 padding - whether or not you should be using this
+ depends on your application - see Pkcs1 Version 2 for details.
+
+
+ some providers fail to include the leading zero in PKCS1 encoded blocks. If you need to
+ work with one of these set the system property Org.BouncyCastle.Pkcs1.Strict to false.
+
+
+ The same effect can be achieved by setting the static property directly
+
+ The static property is checked during construction of the encoding object, it is set to
+ true by default.
+
+
+
+ Basic constructor.
+ @param cipher
+
+
+ Constructor for decryption with a fixed plaintext length.
+
+ @param cipher The cipher to use for cryptographic operation.
+ @param pLen Length of the expected plaintext.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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
+
+
+ @exception InvalidCipherTextException if the decrypted block is not in Pkcs1 format.
+
+
+ Basic KDF generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on ISO 18033/P1363a.
+
+
+ Construct a KDF Parameters generator.
+
+ @param counterStart value of counter.
+ @param digest the digest to be used as the source of derived keys.
+
+
+ return the underlying digest.
+
+
+ fill len bytes of the output buffer with bytes generated from
+ the derivation function.
+
+ @throws ArgumentException if the size of the request will cause an overflow.
+ @throws DataLengthException if the out buffer is too small.
+
+
+ a basic Diffie-Hellman key pair generator.
+
+ This generates keys consistent for use with the basic algorithm for
+ Diffie-Hellman.
+
+
+ a Diffie-Hellman key pair generator.
+
+ This generates keys consistent for use in the MTI/A0 key agreement protocol
+ as described in "Handbook of Applied Cryptography", Pages 516-519.
+
+
+ which Generates the p and g values from the given parameters,
+ returning the DHParameters object.
+
+ Note: can take a while...
+
+
+ initialise the key generator - if strength is set to zero
+ the key Generated will be 192 bits in size, otherwise
+ strength can be 128 or 192 (or 112 or 168 if you don't count
+ parity bits), depending on whether you wish to do 2-key or 3-key
+ triple DES.
+
+ @param param the parameters to be used for key generation
+
+
+ initialise the key generator - if strength is set to zero
+ the key generated will be 64 bits in size, otherwise
+ strength can be 64 or 56 bits (if you don't count the parity bits).
+
+ @param param the parameters to be used for key generation
+
+
+ a DSA key pair generator.
+
+ This Generates DSA keys in line with the method described
+ in FIPS 186-3 B.1 FFC Key Pair Generation.
+
+
+ Generate suitable parameters for DSA, in line with FIPS 186-2, or FIPS 186-3.
+
+
+ Initialise the generator
+ This form can only be used for older DSA (pre-DSA2) parameters
+ the size of keys in bits (from 512 up to 1024, and a multiple of 64)
+ measure of robustness of primes (at least 80 for FIPS 186-2 compliance)
+ the source of randomness to use
+
+
+ Initialise the generator for DSA 2
+ You must use this Init method if you need to generate parameters for DSA 2 keys
+ An instance of DsaParameterGenerationParameters used to configure this generator
+
+
+ Generates a set of DsaParameters
+ Can take a while...
+
+
+ generate suitable parameters for DSA, in line with
+ FIPS 186-3 A.1 Generation of the FFC Primes p and q.
+
+
+ Given the domain parameters this routine generates an EC key
+ pair in accordance with X9.62 section 5.2.1 pages 26, 27.
+
+
+ a ElGamal key pair generator.
+
+ This Generates keys consistent for use with ElGamal as described in
+ page 164 of "Handbook of Applied Cryptography".
+
+
+ * which Generates the p and g values from the given parameters,
+ * returning the ElGamalParameters object.
+ *
+ * Note: can take a while...
+ *
+
+
+ a GOST3410 key pair generator.
+ This generates GOST3410 keys in line with the method described
+ in GOST R 34.10-94.
+
+
+ generate suitable parameters for GOST3410.
+
+
+ initialise the key generator.
+
+ @param size size of the key
+ @param typeProcedure type procedure A,B = 1; A',B' - else
+ @param random random byte source.
+
+
+ Procedure C
+ procedure generates the a value from the given p,q,
+ returning the a value.
+
+
+ which generates the p , q and a values from the given parameters,
+ returning the Gost3410Parameters object.
+
+
+ KFD2 generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on IEEE P1363/ISO 18033.
+
+
+ Construct a KDF1 byte generator.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ KDF2 generator for derived keys and ivs as defined by IEEE P1363a/ISO 18033
+
+ This implementation is based on IEEE P1363/ISO 18033.
+
+
+ Construct a KDF2 bytes generator. Generates key material
+ according to IEEE P1363 or ISO 18033 depending on the initialisation.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ Generator for MGF1 as defined in Pkcs 1v2
+
+
+ @param digest the digest to be used as the source of Generated bytes
+
+
+ return the underlying digest.
+
+
+ int to octet string.
+
+
+ fill len bytes of the output buffer with bytes Generated from
+ the derivation function.
+
+ @throws DataLengthException if the out buffer is too small.
+
+
+ Key generation parameters for NaccacheStern cipher. For details on this cipher, please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Generates a permuted ArrayList from the original one. The original List
+ is not modified
+
+ @param arr
+ the ArrayList to be permuted
+ @param rand
+ the source of Randomness for permutation
+ @return a new IList with the permuted elements.
+
+
+ Finds the first 'count' primes starting with 3
+
+ @param count
+ the number of primes to find
+ @return a vector containing the found primes as Integer
+
+
+ Generator for PBE derived keys and ivs as usd by OpenSSL.
+
+ The scheme is a simple extension of PKCS 5 V2.0 Scheme 1 using MD5 with an
+ iteration count of 1.
+
+
+
+ Construct a OpenSSL Parameters generator.
+
+
+ Initialise - note the iteration count for this algorithm is fixed at 1.
+
+ @param password password to use.
+ @param salt salt to use.
+
+
+ the derived key function, the ith hash of the password and the salt.
+
+
+ Generate a key parameter derived from the password, salt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the password, salt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+ @exception ArgumentException if keySize + ivSize is larger than the base hash size.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 12 V1.0.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs12 Page
+
+
+
+ Construct a Pkcs 12 Parameters generator.
+
+ @param digest the digest to be used as the source of derived keys.
+ @exception ArgumentException if an unknown digest is passed in.
+
+
+ add a + b + 1, returning the result in a. The a value is treated
+ as a BigInteger of length (b.Length * 8) bits. The result is
+ modulo 2^b.Length in case of overflow.
+
+
+ generation of a derived key ala Pkcs12 V1.0.
+
+
+ Generate a key parameter derived from the password, salt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the password, salt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 5 V2.0 Scheme 1.
+ Note this generator is limited to the size of the hash produced by the
+ digest used to drive it.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs5 Page
+
+
+
+ Construct a Pkcs 5 Scheme 1 Parameters generator.
+
+ @param digest the digest to be used as the source of derived keys.
+
+
+ the derived key function, the ith hash of the mPassword and the mSalt.
+
+
+ Generate a key parameter derived from the mPassword, mSalt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the mPassword, mSalt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+ @exception ArgumentException if keySize + ivSize is larger than the base hash size.
+
+
+ Generate a key parameter for use with a MAC derived from the mPassword,
+ mSalt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+ @exception ArgumentException if the key length larger than the base hash size.
+
+
+ Generator for Pbe derived keys and ivs as defined by Pkcs 5 V2.0 Scheme 2.
+ This generator uses a SHA-1 HMac as the calculation function.
+
+ The document this implementation is based on can be found at
+
+ RSA's Pkcs5 Page
+
+
+ construct a Pkcs5 Scheme 2 Parameters generator.
+
+
+ Generate a key parameter derived from the password, salt, and iteration
+ count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+ Generate a key with initialisation vector parameter derived from
+ the password, salt, and iteration count we are currently initialised
+ with.
+
+ @param keySize the size of the key we want (in bits)
+ @param ivSize the size of the iv we want (in bits)
+ @return a ParametersWithIV object.
+
+
+ Generate a key parameter for use with a MAC derived from the password,
+ salt, and iteration count we are currently initialised with.
+
+ @param keySize the size of the key we want (in bits)
+ @return a KeyParameter object.
+
+
+
+ Generates keys for the Poly1305 MAC.
+
+
+ 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.
+ The {@code r} value has a specific format with some bits required to be cleared, resulting in an
+ effective 106 bit key.
+ 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.
+
+
+
+
+
+ Initialises the key generator.
+
+
+ Poly1305 keys are always 256 bits, so the key length in the provided parameters is ignored.
+
+
+
+
+ Generates a 256 bit key in the format required for Poly1305 - e.g.
+ k[0] ... k[15], r[0] ... r[15]
with the required bits in r
cleared
+ as per .
+
+
+
+
+ Modifies an existing 32 byte key value to comply with the requirements of the Poly1305 key by
+ clearing required bits in the r
(second 16 bytes) portion of the key.
+ Specifically:
+
+ - r[3], r[7], r[11], r[15] have top four bits clear (i.e., are {0, 1, . . . , 15})
+ - r[4], r[8], r[12] have bottom two bits clear (i.e., are in {0, 4, 8, . . . , 252})
+
+
+ a 32 byte key value k[0] ... k[15], r[0] ... r[15]
+
+
+
+ Checks a 32 byte key for compliance with the Poly1305 key requirements, e.g.
+ k[0] ... k[15], r[0] ... r[15]
with the required bits in r
cleared
+ as per .
+
+ Key.
+ if the key is of the wrong length, or has invalid bits set
+ in the r
portion of the key.
+
+
+ Generate a random factor suitable for use with RSA blind signatures
+ as outlined in Chaum's blinding and unblinding as outlined in
+ "Handbook of Applied Cryptography", page 475.
+
+
+ Initialise the factor generator
+
+ @param param the necessary RSA key parameters.
+
+
+ Generate a suitable blind factor for the public key the generator was initialised with.
+
+ @return a random blind factor
+
+
+ an RSA key pair generator.
+
+
+ Choose a random prime value for use with RSA
+ the bit-length of the returned prime
+ the RSA public exponent
+ a prime p, with (p-1) relatively prime to e
+
+
+ CMAC - as specified at www.nuee.nagoya-u.ac.jp/labs/tiwata/omac/omac.html
+
+ CMAC is analogous to OMAC1 - see also en.wikipedia.org/wiki/CMAC
+
+ CMAC is a NIST recomendation - see
+ csrc.nist.gov/CryptoToolkit/modes/800-38_Series_Publications/SP800-38B.pdf
+
+ CMAC/OMAC1 is a blockcipher-based message authentication code designed and
+ analyzed by Tetsu Iwata and Kaoru Kurosawa.
+
+ CMAC/OMAC1 is a simple variant of the CBC MAC (Cipher Block Chaining Message
+ Authentication Code). OMAC stands for One-Key CBC MAC.
+
+ It supports 128- or 64-bits block ciphers, with any key size, and returns
+ a MAC with dimension less or equal to the block size of the underlying
+ cipher.
+
+
+
+ create a standard MAC based on a CBC block cipher (64 or 128 bit block).
+ This will produce an authentication code the length of the block size
+ of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8 and @lt;= 128.
+
+
+ Reset the mac generator.
+
+
+ standard CBC Block Cipher MAC - if no padding is specified the default of
+ pad of zeroes is used.
+
+
+ create a standard MAC based on a CBC block cipher. This will produce an
+ authentication code half the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a CBC block cipher. This will produce an
+ authentication code half the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used to complete the last block.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding the padding to be used to complete the last block.
+
+
+ Reset the mac generator.
+
+
+ implements a Cipher-FeedBack (CFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ create a standard MAC based on a CFB block cipher. This will produce an
+ authentication code half the length of the block size of the cipher, with
+ the CFB mode set to 8 bits.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+
+
+ create a standard MAC based on a CFB block cipher. This will produce an
+ authentication code half the length of the block size of the cipher, with
+ the CFB mode set to 8 bits.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CFB mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param cfbBitSize the size of an output block produced by the CFB mode.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses CFB mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param cfbBitSize the size of an output block produced by the CFB mode.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding a padding to be used.
+
+
+ Reset the mac generator.
+
+
+
+ The GMAC specialisation of Galois/Counter mode (GCM) detailed in NIST Special Publication
+ 800-38D.
+
+
+ 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).
+
+
+
+
+ Creates a GMAC based on the operation of a block cipher in GCM mode.
+
+
+ This will produce an authentication code the length of the block size of the cipher.
+
+ the cipher to be used in GCM mode to generate the MAC.
+
+
+
+ Creates a GMAC based on the operation of a 128 bit block cipher in GCM mode.
+
+
+ This will produce an authentication code the length of the block size of the cipher.
+
+ the cipher to be used in GCM mode to generate the MAC.
+ 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.
+
+
+
+ Initialises the GMAC - requires a
+ providing a and a nonce.
+
+
+
+ implementation of GOST 28147-89 MAC
+
+
+ HMAC implementation based on RFC2104
+
+ H(K XOR opad, H(K XOR ipad, text))
+
+
+ Reset the mac generator.
+
+
+ DES based CBC Block Cipher MAC according to ISO9797, algorithm 3 (ANSI X9.19 Retail MAC)
+
+ This could as well be derived from CBCBlockCipherMac, but then the property mac in the base
+ class must be changed to protected
+
+
+ create a Retail-MAC based on a CBC block cipher. This will produce an
+ authentication code of the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation. This must
+ be DESEngine.
+
+
+ create a Retail-MAC based on a CBC block cipher. This will produce an
+ authentication code of the length of the block size of the cipher.
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param padding the padding to be used to complete the last block.
+
+
+ create a Retail-MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses single DES CBC mode as the basis for the
+ MAC generation.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+
+
+ create a standard MAC based on a block cipher with the size of the
+ MAC been given in bits. This class uses single DES CBC mode as the basis for the
+ MAC generation. The final block is decrypted and then encrypted using the
+ middle and right part of the key.
+
+ Note: the size of the MAC must be at least 24 bits (FIPS Publication 81),
+ or 16 bits if being used as a data authenticator (FIPS Publication 113),
+ and in general should be less than the size of the block cipher as it reduces
+ the chance of an exhaustive attack (see Handbook of Applied Cryptography).
+
+ @param cipher the cipher to be used as the basis of the MAC generation.
+ @param macSizeInBits the size of the MAC in bits, must be a multiple of 8.
+ @param padding the padding to be used to complete the last block.
+
+
+ Reset the mac generator.
+
+
+
+ Poly1305 message authentication code, designed by D. J. Bernstein.
+
+
+ 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 poly1305-donna-unrolled C implementation
+ by Andrew M (@floodyberry).
+
+
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Polynomial key
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Precomputed 5 * r[1..4]
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Encrypted nonce
+
+
+ Current block of buffered input
+
+
+ Current offset in input buffer
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Polynomial accumulator
+
+
+ Constructs a Poly1305 MAC, where the key passed to init() will be used directly.
+
+
+ Constructs a Poly1305 MAC, using a 128 bit block cipher.
+
+
+
+ Initialises the Poly1305 MAC.
+
+ 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}.
+
+
+
+ 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).
+
+
+ "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..."
+
+
+
+ SipHash-2-4
+
+
+ SipHash-c-d
+ the number of compression rounds
+ the number of finalization rounds
+
+
+
+ Implementation of the Skein parameterised MAC function in 256, 512 and 1024 bit block sizes,
+ based on the Threefish tweakable block cipher.
+
+
+ This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3
+ competition in October 2010.
+
+ Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir
+ Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
+
+
+
+
+
+
+ 256 bit block size - Skein-256
+
+
+
+
+ 512 bit block size - Skein-512
+
+
+
+
+ 1024 bit block size - Skein-1024
+
+
+
+
+ Constructs a Skein MAC with an internal state size and output size.
+
+ the internal state size in bits - one of or
+ .
+ the output/MAC size to produce in bits, which must be an integral number of
+ bytes.
+
+
+
+ Optionally initialises the Skein digest with the provided parameters.
+
+ See for details on the parameterisation of the Skein hash function.
+ the parameters to apply to this engine, or null
to use no parameters.
+
+
+ implements Cipher-Block-Chaining (CBC) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of chaining.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CBC".
+
+
+ return the block size of the underlying cipher.
+
+ @return the block size of the underlying cipher.
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ Do the appropriate chaining step for CBC mode encryption.
+
+ @param in the array containing the data to be encrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate chaining step for CBC mode decryption.
+
+ @param in the array containing the data to be decrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the decrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Implements the Counter with Cipher Block Chaining mode (CCM) detailed in
+ NIST Special Publication 800-38C.
+
+ Note: this mode is a packet mode - it needs all the data up front.
+
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Returns a byte array containing the mac calculated as part of the
+ last encrypt or decrypt operation.
+
+ @return the last mac calculated.
+
+
+ Process a packet of data for either CCM decryption or encryption.
+
+ @param in data for processing.
+ @param inOff offset at which data starts in the input array.
+ @param inLen length of the data in the input array.
+ @return a byte array containing the processed input..
+ @throws IllegalStateException if the cipher is not appropriately set up.
+ @throws InvalidCipherTextException if the input data is truncated or the mac check fails.
+
+
+ Process a packet of data for either CCM decryption or encryption.
+
+ @param in data for processing.
+ @param inOff offset at which data starts in the input array.
+ @param inLen length of the data in the input array.
+ @param output output array.
+ @param outOff offset into output array to start putting processed bytes.
+ @return the number of bytes added to output.
+ @throws IllegalStateException if the cipher is not appropriately set up.
+ @throws InvalidCipherTextException if the input data is truncated or the mac check fails.
+ @throws DataLengthException if output buffer too short.
+
+
+ implements a Cipher-FeedBack (CFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/CFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate processing for CFB mode encryption.
+
+ @param in the array containing the data to be encrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate processing for CFB mode decryption.
+
+ @param in the array containing the data to be decrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ A Cipher Text Stealing (CTS) mode cipher. CTS allows block ciphers to
+ be used to produce cipher text which is the same outLength as the plain text.
+
+
+ Create a buffered block cipher that uses Cipher Text Stealing
+
+ @param cipher the underlying block cipher this buffering object wraps.
+
+
+ return the size of the output buffer required for an update of 'length' bytes.
+
+ @param length the outLength of the input.
+ @return the space required to accommodate a call to update
+ with length bytes of input.
+
+
+ return the size of the output buffer required for an update plus a
+ doFinal with an input of length bytes.
+
+ @param length the outLength of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with length bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param length the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if cipher text decrypts wrongly (in
+ case the exception will never Get thrown).
+
+
+ A Two-Pass Authenticated-Encryption Scheme Optimized for Simplicity and
+ Efficiency - by M. Bellare, P. Rogaway, D. Wagner.
+
+ http://www.cs.ucdavis.edu/~rogaway/papers/eax.pdf
+
+ EAX is an AEAD scheme based on CTR and OMAC1/CMAC, that uses a single block
+ cipher to encrypt and authenticate data. It's on-line (the length of a
+ message isn't needed to begin processing it), has good performances, it's
+ simple and provably secure (provided the underlying block cipher is secure).
+
+ Of course, this implementations is NOT thread-safe.
+
+
+ Constructor that accepts an instance of a block cipher engine.
+
+ @param cipher the engine to use
+
+
+
+ Implements the Galois/Counter mode (GCM) detailed in
+ NIST Special Publication 800-38D.
+
+
+
+
+ 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.
+
+
+
+ implements the GOST 28147 OFB counter mode (GCTR).
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ counter mode (must have a 64 bit block size).
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param encrypting if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param parameters the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/GCTR"
+ and the block size in bits
+
+
+ return the block size we are operating at (in bytes).
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the feedback vector back to the IV and reset the underlying
+ cipher.
+
+
+
+ A block cipher mode that includes authenticated encryption with a streaming mode
+ and optional associated data.
+
+
+
+ The name of the algorithm this cipher implements.
+
+
+ The block cipher underlying this algorithm.
+
+
+ Initialise the cipher.
+ Parameter can either be an AeadParameters or a ParametersWithIV object.
+ Initialise for encryption if true, for decryption if false.
+ The key or other data required by the cipher.
+
+
+ The block size for this cipher, in bytes.
+
+
+ Add a single byte to the associated data check.
+ If the implementation supports it, this will be an online operation and will not retain the associated data.
+ The byte to be processed.
+
+
+ Add a sequence of bytes to the associated data check.
+ If the implementation supports it, this will be an online operation and will not retain the associated data.
+ The input byte array.
+ The offset into the input array where the data to be processed starts.
+ The number of bytes to be processed.
+
+
+ Encrypt/decrypt a single byte.
+
+ @param input the byte to be processed.
+ @param outBytes the output buffer the processed byte goes into.
+ @param outOff the offset into the output byte array the processed data starts at.
+ @return the number of bytes written to out.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ Process a block of bytes from in putting the result into out.
+
+ @param inBytes the input byte array.
+ @param inOff the offset into the in array where the data to be processed starts.
+ @param len the number of bytes to be processed.
+ @param outBytes the output buffer the processed bytes go into.
+ @param outOff the offset into the output byte array the processed data starts at.
+ @return the number of bytes written to out.
+ @exception DataLengthException if the output buffer is too small.
+
+
+ Finish the operation either appending or verifying the MAC at the end of the data.
+
+ @param outBytes space for any resulting output data.
+ @param outOff offset into out to start copying the data at.
+ @return number of bytes written into out.
+ @throws InvalidOperationException if the cipher is in an inappropriate state.
+ @throws InvalidCipherTextException if the MAC fails to match.
+
+
+ Return the value of the MAC associated with the last stream processed.
+
+ @return MAC for plaintext data.
+
+
+ Return the size of the output buffer required for a ProcessBytes
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to ProcessBytes
+ with len bytes of input.
+
+
+ Return the size of the output buffer required for a ProcessBytes plus a
+ DoFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to ProcessBytes and DoFinal
+ with len bytes of input.
+
+
+
+ Reset the cipher to the same state as it was after the last init (if there was one).
+
+
+
+ An implementation of RFC 7253 on The OCB
+ Authenticated-Encryption Algorithm, licensed per:
+
+ License for
+ Open-Source Software Implementations of OCB (Jan 9, 2013) - 'License 1'
+ 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.
+
+ 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.
+
+
+ implements a Output-FeedBack (OFB) mode on top of a simple cipher.
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+ @param blockSize the block size in bits (note: a multiple of 8)
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/OFB"
+ and the block size in bits
+
+
+ return the block size we are operating at (in bytes).
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the feedback vector back to the IV and reset the underlying
+ cipher.
+
+
+ * Implements OpenPGP's rather strange version of Cipher-FeedBack (CFB) mode
+ * on top of a simple cipher. This class assumes the IV has been prepended
+ * to the data stream already, and just accomodates the reset after
+ * (blockSize + 2) bytes have been read.
+ *
+ * For further info see RFC 2440.
+ *
+
+
+ Basic constructor.
+
+ @param cipher the block cipher to be used as the basis of the
+ feedback mode.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ return the algorithm name and mode.
+
+ @return the name of the underlying algorithm followed by "/PGPCFB"
+ and the block size in bits.
+
+
+ return the block size we are operating at.
+
+ @return the block size we are operating at (in bytes).
+
+
+ Process one block of input from the array in and write it to
+ the out array.
+
+ @param in the array containing the input data.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the output data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ reset the chaining vector back to the IV and reset the underlying
+ cipher.
+
+
+ Initialise the cipher and, possibly, the initialisation vector (IV).
+ If an IV isn't passed as part of the parameter, the IV will be all zeros.
+ An IV which is too short is handled in FIPS compliant fashion.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param parameters the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ Encrypt one byte of data according to CFB mode.
+ @param data the byte to encrypt
+ @param blockOff offset in the current block
+ @returns the encrypted byte
+
+
+ Do the appropriate processing for CFB IV mode encryption.
+
+ @param in the array containing the data to be encrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Do the appropriate processing for CFB IV mode decryption.
+
+ @param in the array containing the data to be decrypted.
+ @param inOff offset into the in array the data starts at.
+ @param out the array the encrypted data will be copied into.
+ @param outOff the offset into the out array the output will start at.
+ @exception DataLengthException if there isn't enough data in in, or
+ space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+ @return the number of bytes processed and produced.
+
+
+ Implements the Segmented Integer Counter (SIC) mode on top of a simple
+ block cipher.
+
+
+ Basic constructor.
+
+ @param c the block cipher to be used.
+
+
+ return the underlying block cipher that we are wrapping.
+
+ @return the underlying block cipher that we are wrapping.
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Calculator factory class for signature generation in ASN.1 based profiles that use an AlgorithmIdentifier to preserve
+ signature algorithm details.
+
+
+
+
+ Base constructor.
+
+ The name of the signature algorithm to use.
+ The private key to be used in the signing operation.
+
+
+
+ Constructor which also specifies a source of randomness to be used if one is required.
+
+ The name of the signature algorithm to use.
+ The private key to be used in the signing operation.
+ The source of randomness to be used in signature calculation.
+
+
+
+ Allows enumeration of the signature names supported by the verifier provider.
+
+
+
+
+ Verifier class for signature verification in ASN.1 based profiles that use an AlgorithmIdentifier to preserve
+ signature algorithm details.
+
+
+
+
+ Base constructor.
+
+ The name of the signature algorithm to use.
+ The public key to be used in the verification operation.
+
+
+
+ Provider class which supports dynamic creation of signature verifiers.
+
+
+
+
+ Base constructor - specify the public key to be used in verification.
+
+ The public key to be used in creating verifiers provided by this object.
+
+
+
+ Allows enumeration of the signature names supported by the verifier provider.
+
+
+
+ Block cipher padders are expected to conform to this interface
+
+
+ Initialise the padder.
+
+ @param param parameters, if any required.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+ @exception InvalidCipherTextException if the padding is badly formed
+ or invalid.
+
+
+ A padder that adds ISO10126-2 padding to a block.
+
+
+ Initialise the padder.
+
+ @param random a SecureRandom if available.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds the padding according to the scheme referenced in
+ ISO 7814-4 - scheme 2 from ISO 9797-1. The first byte is 0x80, rest is 0x00
+
+
+ Initialise the padder.
+
+ @param random - a SecureRandom if available.
+
+
+ Return the name of the algorithm the padder implements.
+
+ @return the name of the algorithm the padder implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A wrapper class that allows block ciphers to be used to process data in
+ a piecemeal fashion with padding. The PaddedBufferedBlockCipher
+ outputs a block only when the buffer is full and more data is being added,
+ or on a doFinal (unless the current block in the buffer is a pad block).
+ The default padding mechanism used is the one outlined in Pkcs5/Pkcs7.
+
+
+ Create a buffered block cipher with the desired padding.
+
+ @param cipher the underlying block cipher this buffering object wraps.
+ @param padding the padding type.
+
+
+ Create a buffered block cipher Pkcs7 padding
+
+ @param cipher the underlying block cipher this buffering object wraps.
+
+
+ initialise the cipher.
+
+ @param forEncryption if true the cipher is initialised for
+ encryption, if false for decryption.
+ @param param the key and other data required by the cipher.
+ @exception ArgumentException if the parameters argument is
+ inappropriate.
+
+
+ return the minimum size of the output buffer required for an update
+ plus a doFinal with an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update and doFinal
+ with len bytes of input.
+
+
+ return the size of the output buffer required for an update
+ an input of len bytes.
+
+ @param len the length of the input.
+ @return the space required to accommodate a call to update
+ with len bytes of input.
+
+
+ process a single byte, producing an output block if necessary.
+
+ @param in the input byte.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ process an array of bytes, producing output if necessary.
+
+ @param in the input byte array.
+ @param inOff the offset at which the input data starts.
+ @param len the number of bytes to be copied out of the input array.
+ @param out the space for any output that might be produced.
+ @param outOff the offset from which the output will be copied.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there isn't enough space in out.
+ @exception InvalidOperationException if the cipher isn't initialised.
+
+
+ Process the last block in the buffer. If the buffer is currently
+ full and padding needs to be added a call to doFinal will produce
+ 2 * GetBlockSize() bytes.
+
+ @param out the array the block currently being held is copied into.
+ @param outOff the offset at which the copying starts.
+ @return the number of output bytes copied to out.
+ @exception DataLengthException if there is insufficient space in out for
+ the output or we are decrypting and the input is not block size aligned.
+ @exception InvalidOperationException if the underlying cipher is not
+ initialised.
+ @exception InvalidCipherTextException if padding is expected and not found.
+
+
+ A padder that adds Pkcs7/Pkcs5 padding to a block.
+
+
+ Initialise the padder.
+
+ @param random - a SecureRandom if available.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds Trailing-Bit-Compliment padding to a block.
+
+ This padding pads the block out compliment of the last bit
+ of the plain text.
+
+
+
+
+ Return the name of the algorithm the cipher implements.
+ the name of the algorithm the cipher implements.
+
+
+
+ Initialise the padder.
+ - a SecureRandom if available.
+
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+ Note: this assumes that the last block of plain text is always
+ passed to it inside in. i.e. if inOff is zero, indicating the
+ entire block is to be overwritten with padding the value of in
+ should be the same as the last block of plain text.
+
+
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds X9.23 padding to a block - if a SecureRandom is
+ passed in random padding is assumed, otherwise padding with zeros is used.
+
+
+ Initialise the padder.
+
+ @param random a SecureRandom if one is available.
+
+
+ Return the name of the algorithm the cipher implements.
+
+ @return the name of the algorithm the cipher implements.
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+ return the number of pad bytes present in the block.
+
+
+ A padder that adds Null byte padding to a block.
+
+
+ Return the name of the algorithm the cipher implements.
+
+
+ the name of the algorithm the cipher implements.
+
+
+
+ Initialise the padder.
+
+
+ - a SecureRandom if available.
+
+
+
+ add the pad bytes to the passed in block, returning the
+ number of bytes added.
+
+
+
+ return the number of pad bytes present in the block.
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+ @param associatedText associated text, if any
+
+
+ Base constructor.
+
+ @param key key to be used by underlying cipher
+ @param macSize macSize in bits
+ @param nonce nonce to be used
+ @param associatedText associated text, if any
+
+
+ The minimum bitlength of the private value.
+
+
+ The bitlength of the private value.
+
+
+ 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.
+
+
+ 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.
+
+
+ return true if the passed in key is a DES-EDE weak key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+ @param length number of bytes making up the key
+
+
+ return true if the passed in key is a DES-EDE weak key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 2/3 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 2 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ return true if the passed in key is a real 3 part DES-EDE key.
+
+ @param key bytes making up the key
+ @param offset offset into the byte array the key starts at
+
+
+ DES has 16 weak keys. This method will check
+ if the given DES key material is weak or semi-weak.
+ Key material that is too short is regarded as weak.
+
+ See "Applied
+ Cryptography" by Bruce Schneier for more information.
+
+ @return true if the given DES key material is weak or semi-weak,
+ false otherwise.
+
+
+ DES Keys use the LSB as the odd parity bit. This can
+ be used to check for corrupt keys.
+
+ @param bytes the byte array to set the parity on.
+
+
+ return the generator - g
+
+
+ return private value limit - l
+
+
+ parameters for Key derivation functions for ISO-18033
+
+
+ parameters for using an integrated cipher in stream mode.
+
+
+ @param derivation the derivation parameter for the KDF function.
+ @param encoding the encoding parameter for the KDF function.
+ @param macKeySize the size of the MAC key (in bits).
+
+
+ @param derivation the derivation parameter for the KDF function.
+ @param encoding the encoding parameter for the KDF function.
+ @param macKeySize the size of the MAC key (in bits).
+ @param cipherKeySize the size of the associated Cipher key (in bits).
+
+
+ parameters for Key derivation functions for IEEE P1363a
+
+
+ Parameters for mask derivation functions.
+
+
+ Parameters for NaccacheStern public private key generation. For details on
+ this cipher, please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Parameters for generating a NaccacheStern KeyPair.
+
+ @param random
+ The source of randomness
+ @param strength
+ The desired strength of the Key in Bits
+ @param certainty
+ the probability that the generated primes are not really prime
+ as integer: 2^(-certainty) is then the probability
+ @param countSmallPrimes
+ How many small key factors are desired
+
+
+ * Parameters for a NaccacheStern KeyPair.
+ *
+ * @param random
+ * The source of randomness
+ * @param strength
+ * The desired strength of the Key in Bits
+ * @param certainty
+ * the probability that the generated primes are not really prime
+ * as integer: 2^(-certainty) is then the probability
+ * @param cntSmallPrimes
+ * How many small key factors are desired
+ * @param debug
+ * Ignored
+
+
+ @return Returns the certainty.
+
+
+ @return Returns the countSmallPrimes.
+
+
+ Public key parameters for NaccacheStern cipher. For details on this cipher,
+ please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ @param privateKey
+
+
+ @return Returns the g.
+
+
+ @return Returns the lowerSigmaBound.
+
+
+ @return Returns the n.
+
+
+ Private key parameters for NaccacheStern cipher. For details on this cipher,
+ please see
+
+ http://www.gemplus.com/smart/rd/publications/pdf/NS98pkcs.pdf
+
+
+ Constructs a NaccacheSternPrivateKey
+
+ @param g
+ the public enryption parameter g
+ @param n
+ the public modulus n = p*q
+ @param lowerSigmaBound
+ the public lower sigma bound up to which data can be encrypted
+ @param smallPrimes
+ the small primes, of which sigma is constructed in the right
+ order
+ @param phi_n
+ the private modulus phi(n) = (p-1)(q-1)
+
+
+ Cipher parameters with a fixed salt value associated with them.
+
+
+
+ Parameters for the Skein hash function - a series of byte[] strings identified by integer tags.
+
+
+ Parameterised Skein can be used for:
+
+ - MAC generation, by providing a key.
+ - Randomised hashing, by providing a nonce.
+ - A hash function for digital signatures, associating a
+ public key with the message digest.
+ - A key derivation function, by providing a
+ key identifier.
+ - Personalised hashing, by providing a
+ recommended format or
+ arbitrary personalisation string.
+
+
+
+
+
+
+
+
+ The parameter type for a secret key, supporting MAC or KDF functions: 0
+
+
+
+
+ The parameter type for the Skein configuration block: 4
+
+
+
+
+ The parameter type for a personalisation string: 8
+
+
+
+
+ The parameter type for a public key: 12
+
+
+
+
+ The parameter type for a key identifier string: 16
+
+
+
+
+ The parameter type for a nonce: 20
+
+
+
+
+ The parameter type for the message: 48
+
+
+
+
+ The parameter type for the output transformation: 63
+
+
+
+
+ Obtains a map of type (int) to value (byte[]) for the parameters tracked in this object.
+
+
+
+
+ Obtains the value of the key parameter, or null
if not
+ set.
+
+ The key.
+
+
+
+ Obtains the value of the personalisation parameter, or
+ null
if not set.
+
+
+
+
+ Obtains the value of the public key parameter, or
+ null
if not set.
+
+
+
+
+ Obtains the value of the key identifier parameter, or
+ null
if not set.
+
+
+
+
+ Obtains the value of the nonce parameter, or null
if
+ not set.
+
+
+
+
+ A builder for .
+
+
+
+
+ Sets a parameters to apply to the Skein hash function.
+
+
+ Parameter types must be in the range 0,5..62, and cannot use the value 48
+ (reserved for message body).
+
+ Parameters with type < 48 are processed before
+ the message content, parameters with type > 48
+ are processed after the message and prior to output.
+
+ the type of the parameter, in the range 5..62.
+ the byte sequence of the parameter.
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Implements the recommended personalisation format for Skein defined in Section 4.11 of
+ the Skein 1.3 specification.
+
+
+ The format is YYYYMMDD email@address distinguisher
, encoded to a byte
+ sequence using UTF-8 encoding.
+
+ the date the personalised application of the Skein was defined.
+ the email address of the creation of the personalised application.
+ an arbitrary personalisation string distinguishing the application.
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Sets the parameter.
+
+
+
+
+ Constructs a new instance with the parameters provided to this
+ builder.
+
+
+
+
+ Parameters for tweakable block ciphers.
+
+
+
+
+ Gets the key.
+
+ the key to use, or null
to use the current key.
+
+
+
+ Gets the tweak value.
+
+ The tweak to use, or null
to use the current tweak.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ true if the internal state represents the signature described in the passed in array.
+
+
+ Reset the internal state
+
+
+ The Digital Signature Algorithm - as described in "Handbook of Applied
+ Cryptography", pages 452 - 453.
+
+
+ Default configuration, random K values.
+
+
+ Configuration with an alternate, possibly deterministic calculator of K.
+
+ @param kCalculator a K value calculator.
+
+
+ Generate a signature for the given message using the key we were
+ initialised with. For conventional DSA the message should be a SHA-1
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a DSA signature for
+ the passed in message for standard DSA the message should be a
+ SHA-1 hash of the real message to be verified.
+
+
+ EC-DSA as described in X9.62
+
+
+ Default configuration, random K values.
+
+
+ Configuration with an alternate, possibly deterministic calculator of K.
+
+ @param kCalculator a K value calculator.
+
+
+ Generate a signature for the given message using the key we were
+ initialised with. For conventional DSA the message should be a SHA-1
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a DSA signature for
+ the passed in message (for standard DSA the message should be
+ a SHA-1 hash of the real message to be verified).
+
+
+ GOST R 34.10-2001 Signature Algorithm
+
+
+ generate a signature for the given message using the key we were
+ initialised with. For conventional GOST3410 the message should be a GOST3411
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a GOST3410 signature for
+ the passed in message (for standard GOST3410 the message should be
+ a GOST3411 hash of the real message to be verified).
+
+
+ EC-NR as described in IEEE 1363-2000
+
+
+ generate a signature for the given message using the key we were
+ initialised with. Generally, the order of the curve should be at
+ least as long as the hash of the message of interest, and with
+ ECNR it *must* be at least as long.
+
+ @param digest the digest to be signed.
+ @exception DataLengthException if the digest is longer than the key allows
+
+
+ return true if the value r and s represent a signature for the
+ message passed in. Generally, the order of the curve should be at
+ least as long as the hash of the message of interest, and with
+ ECNR, it *must* be at least as long. But just in case the signer
+ applied mod(n) to the longer digest, this implementation will
+ apply mod(n) during verification.
+
+ @param digest the digest to be verified.
+ @param r the r value of the signature.
+ @param s the s value of the signature.
+ @exception DataLengthException if the digest is longer than the key allows
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ true if the internal state represents the signature described in the passed in array.
+
+
+ Reset the internal state
+
+
+ Gost R 34.10-94 Signature Algorithm
+
+
+ generate a signature for the given message using the key we were
+ initialised with. For conventional Gost3410 the message should be a Gost3411
+ hash of the message of interest.
+
+ @param message the message that will be verified later.
+
+
+ return true if the value r and s represent a Gost3410 signature for
+ the passed in message for standard Gost3410 the message should be a
+ Gost3411 hash of the real message to be verified.
+
+
+ initialise the signer for signing or verification.
+
+ @param forSigning
+ true if for signing, false otherwise
+ @param parameters
+ necessary parameters.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using the key
+ we were initialised with.
+
+
+ return true if the internal state represents the signature described in
+ the passed in array.
+
+
+ A deterministic K calculator based on the algorithm in section 3.2 of RFC 6979.
+
+
+ Base constructor.
+
+ @param digest digest to build the HMAC on.
+
+
+ Interface define calculators of K values for DSA/ECDSA.
+
+
+ Return true if this calculator is deterministic, false otherwise.
+
+ @return true if deterministic, otherwise false.
+
+
+ Non-deterministic initialiser.
+
+ @param n the order of the DSA group.
+ @param random a source of randomness.
+
+
+ Deterministic initialiser.
+
+ @param n the order of the DSA group.
+ @param d the DSA private value.
+ @param message the message being signed.
+
+
+ Return the next valid value of K.
+
+ @return a K value.
+
+
+ ISO9796-2 - mechanism using a hash function with recovery (scheme 2 and 3).
+
+ Note: the usual length for the salt is the length of the hash
+ function used in bytes.
+
+
+
+
+ Return a reference to the recoveredMessage message.
+
+ The full/partial recoveredMessage message.
+
+
+
+
+ Generate a signer with either implicit or explicit trailers for ISO9796-2, scheme 2 or 3.
+
+ base cipher to use for signature creation/verification
+ digest to use.
+ length of salt in bytes.
+ whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+
+ cipher to use.
+
+ digest to sign with.
+
+ length of salt in bytes.
+
+
+
+ Initialise the signer.
+ true if for signing, false if for verification.
+ parameters for signature generation/verification. If the
+ parameters are for generation they should be a ParametersWithRandom,
+ a ParametersWithSalt, or just an RsaKeyParameters object. If RsaKeyParameters
+ are passed in a SecureRandom will be created.
+
+ if wrong parameter type or a fixed
+ salt is passed in which is the wrong length.
+
+
+
+ compare two byte arrays - constant time.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ Generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+
+ Return true if the full message was recoveredMessage.
+
+ true on full message recovery, false otherwise, or if not sure.
+
+
+
+ int to octet string.
+ int to octet string.
+
+
+ long to octet string.
+
+
+ mask generator function, as described in Pkcs1v2.
+
+
+ ISO9796-2 - mechanism using a hash function with recovery (scheme 1)
+
+
+
+ Return a reference to the recoveredMessage message.
+
+ The full/partial recoveredMessage message.
+
+
+
+
+ Generate a signer with either implicit or explicit trailers for ISO9796-2.
+
+ base cipher to use for signature creation/verification
+ digest to use.
+ whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+
+ cipher to use.
+
+ digest to sign with.
+
+
+
+ compare two byte arrays - constant time.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ Generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+
+ Return true if the full message was recoveredMessage.
+
+ true on full message recovery, false otherwise.
+
+
+
+ RSA-PSS as described in Pkcs# 1 v 2.1.
+
+ Note: the usual value for the salt length is the number of
+ bytes in the hash function.
+
+
+
+ Basic constructor
+ the asymmetric cipher to use.
+ the digest to use.
+ the length of the salt to use (in bytes).
+
+
+ Basic constructor
+ the asymmetric cipher to use.
+ the digest to use.
+ the fixed salt to be used.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+
+ return true if the internal state represents the signature described
+ in the passed in array.
+
+
+
+ int to octet string.
+
+
+ mask generator function, as described in Pkcs1v2.
+
+
+
+ Load oid table.
+
+
+
+ Initialise the signer for signing or verification.
+
+ @param forSigning true if for signing, false otherwise
+ @param param necessary parameters.
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ Generate a signature for the message we've been loaded with using
+ the key we were initialised with.
+
+
+ return true if the internal state represents the signature described
+ in the passed in array.
+
+
+ X9.31-1998 - signing using a hash.
+
+ The message digest hash, H, is encapsulated to form a byte string as follows
+
+
+ EB = 06 || PS || 0xBA || H || TRAILER
+
+ where PS is a string of bytes all of value 0xBB of length such that |EB|=|n|, and TRAILER is the ISO/IEC 10118 part number†for the digest. The byte string, EB, is converted to an integer value, the message representative, f.
+
+
+ Generate a signer with either implicit or explicit trailers for X9.31.
+
+ @param cipher base cipher to use for signature creation/verification
+ @param digest digest to use.
+ @param implicit whether or not the trailer is implicit or gives the hash.
+
+
+ Constructor for a signer with an explicit digest trailer.
+
+ @param cipher cipher to use.
+ @param digest digest to sign with.
+
+
+ clear possible sensitive data
+
+
+ update the internal digest with the byte b
+
+
+ update the internal digest with the byte array in
+
+
+ reset the internal state
+
+
+ generate a signature for the loaded message using the key we were
+ initialised with.
+
+
+ return true if the signature represents a ISO9796-2 signature
+ for the passed in message.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 5246 7.2
+
+
+
+ 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.
+
+
+ An inappropriate message was received. This alert is always fatal and should never be
+ observed in communication between proper implementations.
+
+
+ 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).
+
+
+ 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.
+
+
+ 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).
+
+
+ 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.
+
+
+ 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.
+
+
+ This alert was used in SSLv3 but not any version of TLS. It MUST NOT be sent by compliant
+ implementations.
+
+
+ A certificate was corrupt, contained signatures that did not verify correctly, etc.
+
+
+ A certificate was of an unsupported type.
+
+
+ A certificate was revoked by its signer.
+
+
+ A certificate has expired or is not currently valid.
+
+
+ Some other (unspecified) issue arose in processing the certificate, rendering it
+ unacceptable.
+
+
+ A field in the handshake was out of range or inconsistent with other fields. This message is
+ always fatal.
+
+
+ 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.
+
+
+ A valid certificate was received, but when access control was applied, the sender decided not
+ to proceed with negotiation. This message is always fatal.
+
+
+ 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).
+
+
+ A handshake cryptographic operation failed, including being unable to correctly verify a
+ signature or validate a Finished message. This message is always fatal.
+
+
+ This alert was used in some earlier versions of TLS. It MUST NOT be sent by compliant
+ implementations.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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.
+
+
+ This alert is sent by clients that receive an invalid certificate status response (see
+ Section 3.6). This message is always fatal.
+
+
+ This alert is sent by servers when a certificate hash does not match a client provided
+ certificate_hash. This message is always fatal.
+
+
+ If the server does not recognize the PSK identity, it MAY respond with an
+ "unknown_psk_identity" alert message.
+
+
+ If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the highest protocol version
+ supported by the server is higher than the version indicated in ClientHello.client_version,
+ the server MUST respond with an inappropriate_fallback alert.
+
+
+
+ RFC 5246 7.2
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+
+ A queue for bytes.
+
+ This file could be more optimized.
+
+
+
+
+ The smallest number which can be written as 2^x which is bigger than i.
+
+
+ The initial size for our buffer.
+
+
+ The buffer where we store our data.
+
+
+ How many bytes at the beginning of the buffer are skipped.
+
+
+ How many bytes in the buffer are valid data.
+
+
+ Read data from the buffer.
+ The buffer where the read data will be copied to.
+ How many bytes to skip at the beginning of buf.
+ How many bytes to read at all.
+ How many bytes from our data to skip.
+
+
+ Add some data to our buffer.
+ A byte-array to read data from.
+ How many bytes to skip at the beginning of the array.
+ How many bytes to read from the array.
+
+
+ Remove some bytes from our data from the beginning.
+ How many bytes to remove.
+
+
+ The number of bytes which are available in this buffer.
+
+
+ Parsing and encoding of a Certificate struct from RFC 4346.
+
+
+ opaque ASN.1Cert<2^24-1>;
+
+ struct {
+ ASN.1Cert certificate_list<0..2^24-1>;
+ } Certificate;
+
+
+ @see Org.BouncyCastle.Asn1.X509.X509CertificateStructure
+
+
+ The certificates.
+
+
+ @return an array of {@link org.bouncycastle.asn1.x509.Certificate} representing a certificate
+ chain.
+
+
+ @return true
if this certificate chain contains no certificates, or
+ false
otherwise.
+
+
+ Encode this {@link Certificate} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link Certificate} from a {@link Stream}.
+
+ @param input the {@link Stream} to parse from.
+ @return a {@link Certificate} object.
+ @throws IOException
+
+
+ Parsing and encoding of a CertificateRequest struct from RFC 4346.
+
+
+ struct {
+ ClientCertificateType certificate_types<1..2^8-1>;
+ DistinguishedName certificate_authorities<3..2^16-1>
+ } CertificateRequest;
+
+
+ @see ClientCertificateType
+ @see X509Name
+
+
+ @param certificateTypes see {@link ClientCertificateType} for valid constants.
+ @param certificateAuthorities an {@link IList} of {@link X509Name}.
+
+
+ @return an array of certificate types
+ @see {@link ClientCertificateType}
+
+
+ @return an {@link IList} of {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
+
+
+ @return an {@link IList} of {@link X509Name}
+
+
+ Encode this {@link CertificateRequest} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link CertificateRequest} from a {@link Stream}.
+
+ @param context
+ the {@link TlsContext} of the current connection.
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link CertificateRequest} object.
+ @throws IOException
+
+
+ Encode this {@link CertificateStatus} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link CertificateStatus} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link CertificateStatus} object.
+ @throws IOException
+
+
+ Encode this {@link CertificateStatusRequest} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link CertificateStatusRequest} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link CertificateStatusRequest} object.
+ @throws IOException
+
+
+ @param type
+ see {@link CertChainType} for valid constants.
+ @param urlAndHashList
+ a {@link IList} of {@link UrlAndHash}.
+
+
+ @return {@link CertChainType}
+
+
+ @return an {@link IList} of {@link UrlAndHash}
+
+
+ Encode this {@link CertificateUrl} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ RFC 2246 A.5
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ A combined hash, which implements md5(m) || sha1(m).
+
+
+ @see org.bouncycastle.crypto.Digest#update(byte[], int, int)
+
+
+ @see org.bouncycastle.crypto.Digest#doFinal(byte[], int)
+
+
+ @see org.bouncycastle.crypto.Digest#reset()
+
+
+
+ RFC 2246 6.1
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ RFC 2246 6.2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Accept only the group parameters specified in RFC 5054 Appendix A.
+
+
+ Specify a custom set of acceptable group parameters.
+
+ @param groups a {@link Vector} of acceptable {@link SRP6GroupParameters}
+
+
+ Buffers input until the hash algorithm is determined.
+
+
+ @return a {@link SignatureAndHashAlgorithm} (or null before TLS 1.2).
+
+
+ Encode this {@link DigitallySigned} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check that there are no "extra" messages left in the current inbound flight
+
+
+ RFC 4347 4.1.2.5 Anti-replay
+
+ Support fast rejection of duplicate records by maintaining a sliding receive window
+
+
+ Check whether a received record with the given sequence number should be rejected as a duplicate.
+
+ @param seq the 48-bit DTLSPlainText.sequence_number field of a received record.
+ @return true if the record should be discarded without further processing.
+
+
+ Report that a received record with the given sequence number passed authentication checks.
+
+ @param seq the 48-bit DTLSPlainText.sequence_number field of an authenticated record.
+
+
+ When a new epoch begins, sequence numbers begin again at 0
+
+
+ RFC 4492 5.4. (Errata ID: 2389)
+
+
+
+ RFC 4492 5.4
+
+
+
+ Indicates the elliptic curve domain parameters are conveyed verbosely, and the
+ underlying finite field is a prime field.
+
+
+ Indicates the elliptic curve domain parameters are conveyed verbosely, and the
+ underlying finite field is a characteristic-2 field.
+
+
+ Indicates that a named curve is used. This option SHOULD be used when applicable.
+
+
+
+ RFC 4492 5.1.2
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ RFC 5705
+
+
+ RFC 5246 7.4.1.4.1
+
+
+ Encode this {@link HeartbeatExtension} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link HeartbeatExtension} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link HeartbeatExtension} object.
+ @throws IOException
+
+
+ Encode this {@link HeartbeatMessage} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link HeartbeatMessage} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link HeartbeatMessage} object.
+ @throws IOException
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+ RFC 2246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+
+ 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).
+
+
+
+ Encode this {@link NewSessionTicket} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link NewSessionTicket} from a {@link Stream}.
+
+ @param input the {@link Stream} to parse from.
+ @return a {@link NewSessionTicket} object.
+ @throws IOException
+
+
+ RFC 3546 3.6
+
+
+ @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.
+
+
+ @return an {@link IList} of {@link ResponderID}
+
+
+ @return OCSP request extensions
+
+
+ Encode this {@link OcspStatusRequest} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link OcspStatusRequest} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return an {@link OcspStatusRequest} object.
+ @throws IOException
+
+
+ RFC 5246
+
+ Note that the values here are implementation-specific and arbitrary. It is recommended not to
+ depend on the particular values (e.g. serialization).
+
+
+
+
+
+
+ An implementation of the TLS 1.0/1.1/1.2 record layer, allowing downgrade to SSLv3.
+
+
+ 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."
+
+
+ @return {@link ConnectionEnd}
+
+
+ @return {@link CipherSuite}
+
+
+ @return {@link CompressionMethod}
+
+
+ @return {@link PRFAlgorithm}
+
+
+ Encode this {@link ServerDHParams} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerDHParams} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link ServerDHParams} object.
+ @throws IOException
+
+
+ Encode this {@link ServerName} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerName} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link ServerName} object.
+ @throws IOException
+
+
+ @param serverNameList an {@link IList} of {@link ServerName}.
+
+
+ @return an {@link IList} of {@link ServerName}.
+
+
+ Encode this {@link ServerNameList} to a {@link Stream}.
+
+ @param output
+ the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerNameList} from a {@link Stream}.
+
+ @param input
+ the {@link Stream} to parse from.
+ @return a {@link ServerNameList} object.
+ @throws IOException
+
+
+ Encode this {@link ServerSRPParams} to an {@link OutputStream}.
+
+ @param output
+ the {@link OutputStream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link ServerSRPParams} from an {@link InputStream}.
+
+ @param input
+ the {@link InputStream} to parse from.
+ @return a {@link ServerSRPParams} object.
+ @throws IOException
+
+
+ RFC 5246 7.4.1.4.1 (in RFC 2246, there were no specific values assigned)
+
+
+ RFC 5246 7.4.1.4.1
+
+
+ @param hash {@link HashAlgorithm}
+ @param signature {@link SignatureAlgorithm}
+
+
+ @return {@link HashAlgorithm}
+
+
+ @return {@link SignatureAlgorithm}
+
+
+ Encode this {@link SignatureAndHashAlgorithm} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ Parse a {@link SignatureAndHashAlgorithm} from a {@link Stream}.
+
+ @param input the {@link Stream} to parse from.
+ @return a {@link SignatureAndHashAlgorithm} object.
+ @throws IOException
+
+
+ An implementation of {@link TlsSRPIdentityManager} that simulates the existence of "unknown" identities
+ to obscure the fact that there is no verifier for them.
+
+
+ Create a {@link SimulatedTlsSRPIdentityManager} that implements the algorithm from RFC 5054 2.5.1.3
+
+ @param group the {@link SRP6GroupParameters} defining the group that SRP is operating in
+ @param seedKey the secret "seed key" referred to in RFC 5054 2.5.1.3
+ @return an instance of {@link SimulatedTlsSRPIdentityManager}
+
+
+ HMAC implementation based on original internet draft for HMAC (RFC 2104)
+
+ The difference is that padding is concatentated versus XORed with the key
+
+ H(K + opad, H(K + ipad, text))
+
+
+ Base constructor for one of the standard digest algorithms that the byteLength of
+ the algorithm is know for. Behaviour is undefined for digests other than MD5 or SHA1.
+
+ @param digest the digest.
+
+
+ Reset the mac generator.
+
+
+ RFC 4680
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Called by the protocol handler to report the server certificate.
+
+
+ This method is responsible for certificate verification and validation
+
+ The server received
+
+
+
+
+ Return client credentials in response to server's certificate request
+
+
+ A containing server certificate request details
+
+
+ A to be used for client authentication
+ (or null for no client authentication)
+
+
+
+
+
+ A generic TLS 1.0-1.2 / SSLv3 block cipher. This can be used for AES or 3DES for example.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Called at the start of a new TLS session, before any other methods.
+
+
+ A
+
+
+
+ Return the session this client wants to resume, if any.
+ Note that the peer's certificate chain for the session (if any) may need to be periodically revalidated.
+
+ A representing the resumable session to be used for this connection,
+ or null to use a new session.
+
+
+
+
+ Return the to use for the TLSPlaintext.version field prior to
+ receiving the server version. NOTE: This method is not called for DTLS.
+
+
+ See 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."
+
+ The to use.
+
+
+
+ Get the list of cipher suites that this client supports.
+
+
+ An array of values, each specifying a supported cipher suite.
+
+
+
+
+ Get the list of compression methods that this client supports.
+
+
+ An array of values, each specifying a supported compression method.
+
+
+
+
+ Get the (optional) table of client extensions to be included in (extended) client hello.
+
+
+ A (Int32 -> byte[]). May be null.
+
+
+
+
+
+
+
+
+ Notifies the client of the session_id sent in the ServerHello.
+
+ An array of
+
+
+
+ Report the cipher suite that was selected by the server.
+
+
+ The protocol handler validates this value against the offered cipher suites
+
+
+
+ A
+
+
+
+
+ Report the compression method that was selected by the server.
+
+
+ The protocol handler validates this value against the offered compression methods
+
+
+
+ A
+
+
+
+
+ Report the extensions from an extended server hello.
+
+
+ Will only be called if we returned a non-null result from .
+
+
+ A (Int32 -> byte[])
+
+
+
+ A list of
+
+
+
+
+ Return an implementation of to negotiate the key exchange
+ part of the protocol.
+
+
+ A
+
+
+
+
+
+ Return an implementation of to handle authentication
+ part of the protocol.
+
+
+
+
+ A list of
+
+
+
+ RFC 5077 3.3. NewSessionTicket Handshake Message
+
+ 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. RFC 5077 4. Recommended Ticket Construction.
+
+ The ticket
+
+
+
+ Constructor for blocking mode.
+ @param stream The bi-directional stream of data to/from the server
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for blocking mode.
+ @param input The stream of data from the server
+ @param output The stream of data to the server
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for non-blocking mode.
+
+ When data is received, use {@link #offerInput(java.nio.ByteBuffer)} to
+ provide the received ciphertext, then use
+ {@link #readInput(byte[], int, int)} to read the corresponding cleartext.
+
+ Similarly, when data needs to be sent, use
+ {@link #offerOutput(byte[], int, int)} to provide the cleartext, then use
+ {@link #readOutput(byte[], int, int)} to get the corresponding
+ ciphertext.
+
+ @param secureRandom
+ Random number generator for various cryptographic functions
+
+
+ Initiates a TLS handshake in the role of client.
+
+ In blocking mode, this will not return until the handshake is complete.
+ In non-blocking mode, use {@link TlsPeer#NotifyHandshakeComplete()} to
+ receive a callback when the handshake is complete.
+
+ @param tlsClient The {@link TlsClient} to use for the handshake.
+ @throws IOException If in blocking mode and handshake was not successful.
+
+
+ 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()
+
+
+ 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.
+
+
+ (D)TLS DH key exchange.
+
+
+ (D)TLS ECDH key exchange (see RFC 4492).
+
+
+ (D)TLS ECDHE key exchange (see RFC 4492).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A generic interface for key exchange implementations in (D)TLS.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A generic TLS MAC implementation, acting as an HMAC based on some underlying Digest.
+
+
+
+ Generate a new instance of an TlsMac.
+
+ @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.
+
+
+ @return the MAC write secret
+
+
+ @return The output length of this MAC.
+
+
+ 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 length The length of the message.
+ @return A new byte-buffer containing the MAC value.
+
+
+
+ A NULL CipherSuite, with optional MAC.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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."
+
+
+ true
if the current time should be used in the gmt_unix_time field of
+ Random, or false
if gmt_unix_time should contain a cryptographically
+ random value.
+
+
+
+
+ Report whether the server supports secure renegotiation
+
+
+ The protocol handler automatically processes the relevant extensions
+
+
+ A , true if the server supports secure renegotiation
+
+
+
+
+
+ Return an implementation of to handle record compression.
+
+ A
+
+
+
+
+ Return an implementation of to use for encryption/decryption.
+
+ A
+
+
+
+ This method will be called when an alert is raised by the protocol.
+
+
+ A human-readable message explaining what caused this alert. May be null.
+ The Exception that caused this alert to be raised. May be null.
+
+
+ This method will be called when an alert is received from the remote peer.
+
+
+
+
+ Notifies the peer that the handshake has been successfully completed.
+
+
+
+ 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.
+
+
+ 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.
+
+
+ Send some application data to the remote system.
+
+ 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.
+
+
+ The secure bidirectional stream for this connection
+ Only allowed in blocking mode.
+
+
+ Offer input from an arbitrary source. Only allowed in non-blocking mode.
+
+ After this method returns, the input buffer is "owned" by this object. Other code
+ must not attempt to do anything with it.
+
+ This method will decrypt and process all records that are fully available.
+ If only part of a record is available, the buffer will be retained until the
+ remainder of the record is offered.
+
+ If any records containing application data were processed, the decrypted data
+ can be obtained using {@link #readInput(byte[], int, int)}. If any records
+ containing protocol data were processed, a response may have been generated.
+ You should always check to see if there is any available output after calling
+ this method by calling {@link #getAvailableOutputBytes()}.
+ @param input The input buffer to offer
+ @throws IOException If an error occurs while decrypting or processing a record
+
+
+ Gets the amount of received application data. A call to {@link #readInput(byte[], int, int)}
+ is guaranteed to be able to return at least this much data.
+
+ Only allowed in non-blocking mode.
+ @return The number of bytes of available application data
+
+
+ Retrieves received application data. Use {@link #getAvailableInputBytes()} to check
+ how much application data is currently available. This method functions similarly to
+ {@link InputStream#read(byte[], int, int)}, except that it never blocks. If no data
+ is available, nothing will be copied and zero will be returned.
+
+ Only allowed in non-blocking mode.
+ @param buffer The buffer to hold the application data
+ @param offset The start offset in the buffer at which the data is written
+ @param length The maximum number of bytes to read
+ @return The total number of bytes copied to the buffer. May be less than the
+ length specified if the length was greater than the amount of available data.
+
+
+ Offer output from an arbitrary source. Only allowed in non-blocking mode.
+
+ After this method returns, the specified section of the buffer will have been
+ processed. Use {@link #readOutput(byte[], int, int)} to get the bytes to
+ transmit to the other peer.
+
+ This method must not be called until after the handshake is complete! Attempting
+ to call it before the handshake is complete will result in an exception.
+ @param buffer The buffer containing application data to encrypt
+ @param offset The offset at which to begin reading data
+ @param length The number of bytes of data to read
+ @throws IOException If an error occurs encrypting the data, or the handshake is not complete
+
+
+ Gets the amount of encrypted data available to be sent. A call to
+ {@link #readOutput(byte[], int, int)} is guaranteed to be able to return at
+ least this much data.
+
+ Only allowed in non-blocking mode.
+ @return The number of bytes of available encrypted data
+
+
+ Retrieves encrypted data to be sent. Use {@link #getAvailableOutputBytes()} to check
+ how much encrypted data is currently available. This method functions similarly to
+ {@link InputStream#read(byte[], int, int)}, except that it never blocks. If no data
+ is available, nothing will be copied and zero will be returned.
+
+ Only allowed in non-blocking mode.
+ @param buffer The buffer to hold the encrypted data
+ @param offset The start offset in the buffer at which the data is written
+ @param length The maximum number of bytes to read
+ @return The total number of bytes copied to the buffer. May be less than the
+ length specified if the length was greater than the amount of available data.
+
+
+ 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.
+
+
+ Closes this connection.
+
+ @throws IOException If something goes wrong during closing.
+
+
+ Make sure the InputStream 'buf' now empty. Fail otherwise.
+
+ @param buf The InputStream to check.
+ @throws IOException If 'buf' is not empty.
+
+
+ 'sender' only relevant to SSLv3
+
+
+ Both streams can be the same object
+
+
+ (D)TLS PSK key exchange (RFC 4279).
+
+
+ (D)TLS and SSLv3 RSA key exchange.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A (Int32 -> byte[]). Will never be null.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Get the (optional) table of server extensions to be included in (extended) server hello.
+
+
+ A (Int32 -> byte[]). May be null.
+
+
+
+
+
+ A (). May be null.
+
+
+
+
+
+
+
+
+ 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 RFC 3546
+ 3.6. Certificate Status Request. If a non-null is returned, it
+ is sent to the client as a handshake message of type "certificate_status".
+
+ A to be sent to the client (or null for none).
+
+
+
+
+
+
+
+
+
+ ()
+
+
+
+
+ Called by the protocol handler to report the client certificate, only if GetCertificateRequest
+ returned non-null.
+
+ Note: this method is responsible for certificate verification and validation.
+ the effective client certificate (may be an empty chain).
+
+
+
+ RFC 5077 3.3. NewSessionTicket Handshake Message.
+
+ This method will be called (only) if a NewSessionTicket extension was sent by the server. See
+ RFC 5077 4. Recommended Ticket Construction for recommended format and protection.
+
+ The ticket)
+
+
+
+ Constructor for blocking mode.
+ @param stream The bi-directional stream of data to/from the client
+ @param output The stream of data to the client
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for blocking mode.
+ @param input The stream of data from the client
+ @param output The stream of data to the client
+ @param secureRandom Random number generator for various cryptographic functions
+
+
+ Constructor for non-blocking mode.
+
+ When data is received, use {@link #offerInput(java.nio.ByteBuffer)} to
+ provide the received ciphertext, then use
+ {@link #readInput(byte[], int, int)} to read the corresponding cleartext.
+
+ Similarly, when data needs to be sent, use
+ {@link #offerOutput(byte[], int, int)} to provide the cleartext, then use
+ {@link #readOutput(byte[], int, int)} to get the corresponding
+ ciphertext.
+
+ @param secureRandom
+ Random number generator for various cryptographic functions
+
+
+ Receives a TLS handshake in the role of server.
+
+ In blocking mode, this will not return until the handshake is complete.
+ In non-blocking mode, use {@link TlsPeer#notifyHandshakeComplete()} to
+ receive a callback when the handshake is complete.
+
+ @param tlsServer
+ @throws IOException If in blocking mode and handshake was not successful.
+
+
+
+
+
+ Check whether the given SRP group parameters are acceptable for use.
+
+ @param group the {@link SRP6GroupParameters} to check
+ @return true if (and only if) the specified group parameters are acceptable
+
+
+ Lookup the {@link TlsSRPLoginParameters} corresponding to the specified identity.
+
+ NOTE: To avoid "identity probing", unknown identities SHOULD be handled as recommended in RFC
+ 5054 2.5.1.3. {@link SimulatedTlsSRPIdentityManager} is provided for this purpose.
+
+ @param identity
+ the SRP identity sent by the connecting client
+ @return the {@link TlsSRPLoginParameters} for the specified identity, or else 'simulated'
+ parameters if the identity is not recognized. A null value is also allowed, but not
+ recommended.
+
+
+ (D)TLS SRP key exchange (RFC 5054).
+
+
+ RFC 5764 DTLS Extension to Establish Keys for SRTP.
+
+
+
+
+
+
+
+
+
+
+
+ Some helper functions for MicroTLS.
+
+
+ Add a 'signature_algorithms' extension to existing extensions.
+
+ @param extensions A {@link Hashtable} to add the extension to.
+ @param supportedSignatureAlgorithms {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+ @throws IOException
+
+
+ Get a 'signature_algorithms' extension from extensions.
+
+ @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
+
+
+ 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
+
+
+ Read 'signature_algorithms' extension data.
+
+ @param extensionData The extension data.
+ @return A {@link Vector} containing at least 1 {@link SignatureAndHashAlgorithm}.
+ @throws IOException
+
+
+ RFC 6066 5.
+
+
+ Encode this {@link UrlAndHash} to a {@link Stream}.
+
+ @param output the {@link Stream} to encode to.
+ @throws IOException
+
+
+ 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
+
+
+ RFC 5764 4.1.1
+
+
+ @param protectionProfiles see {@link SrtpProtectionProfile} for valid constants.
+ @param mki valid lengths from 0 to 255.
+
+
+ @return see {@link SrtpProtectionProfile} for valid constants.
+
+
+ @return valid lengths from 0 to 255.
+
+
+ RFC 4681
+
+
+ return a = a + b - b preserved.
+
+
+ unsigned comparison on two arrays - note the arrays may
+ start with leading zeros.
+
+
+ return z = x / y - done in place (z value preserved, x contains the
+ remainder)
+
+
+ return whether or not a BigInteger is probably prime with a
+ probability of 1 - (1/2)**certainty.
+ From Knuth Vol 2, pg 395.
+
+
+ Calculate the numbers u1, u2, and u3 such that:
+
+ u1 * a + u2 * b = u3
+
+ where u3 is the greatest common divider of a and b.
+ a and b using the extended Euclid algorithm (refer p. 323
+ of The Art of Computer Programming vol 2, 2nd ed).
+ This also seems to have the side effect of calculating
+ some form of multiplicative inverse.
+
+ @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
+ @return The greatest common divisor of a and b
+
+
+ return w with w = x * x - w is assumed to have enough space.
+
+
+ return x with x = y * z - x is assumed to have enough space.
+
+
+ Calculate mQuote = -m^(-1) mod b with b = 2^32 (32 = word size)
+
+
+ Montgomery multiplication: a = x * y * R^(-1) mod m
+
+ Based algorithm 14.36 of Handbook of Applied Cryptography.
+
+ m, x, y should have length n
+ a should have length (n + 1)
+ b = 2^32, R = b^n
+
+ The result is put in x
+
+ NOTE: the indices of x, y, m, a different in HAC and in Java
+
+
+ return x = x % y - done in place (y value preserved)
+
+
+ do a left shift - this returns a new array.
+
+
+ do a right shift - this does it in place.
+
+
+ do a right shift by one - this does it in place.
+
+
+ returns x = x - y - we assume x is >= y
+
+
+ Utility methods for generating primes and testing for primality.
+
+
+ Used to return the output from the
+ {@linkplain Primes#enhancedMRProbablePrimeTest(BigInteger, SecureRandom, int) Enhanced
+ Miller-Rabin Probabilistic Primality Test}
+
+
+ Used to return the output from the {@linkplain Primes#generateSTRandomPrime(Digest, int, byte[]) Shawe-Taylor Random_Prime Routine}
+
+
+ FIPS 186-4 C.6 Shawe-Taylor Random_Prime Routine
+
+ Construct a provable prime number using a hash function.
+
+ @param hash
+ the {@link Digest} instance to use (as "Hash()"). Cannot be null.
+ @param length
+ the length (in bits) of the prime to be generated. Must be at least 2.
+ @param inputSeed
+ the seed to be used for the generation of the requested prime. Cannot be null or
+ empty.
+ @return an {@link STOutput} instance containing the requested prime.
+
+
+ FIPS 186-4 C.3.2 Enhanced Miller-Rabin Probabilistic Primality Test
+
+ Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases. This is an
+ alternative to {@link #isMRProbablePrime(BigInteger, SecureRandom, int)} that provides more
+ information about a composite candidate, which may be useful when generating or validating
+ RSA moduli.
+
+ @param candidate
+ the {@link BigInteger} instance to test for primality.
+ @param random
+ the source of randomness to use to choose bases.
+ @param iterations
+ the number of randomly-chosen bases to perform the test for.
+ @return an {@link MROutput} instance that can be further queried for details.
+
+
+ A fast check for small divisors, up to some implementation-specific limit.
+
+ @param candidate
+ the {@link BigInteger} instance to test for division by small factors.
+
+ @return true
if the candidate is found to have any small factors,
+ false
otherwise.
+
+
+ FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test
+
+ Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases.
+
+ @param candidate
+ the {@link BigInteger} instance to test for primality.
+ @param random
+ the source of randomness to use to choose bases.
+ @param iterations
+ the number of randomly-chosen bases to perform the test for.
+ @return false
if any witness to compositeness is found amongst the chosen bases
+ (so candidate
is definitely NOT prime), or else true
+ (indicating primality with some probability dependent on the number of iterations
+ that were performed).
+
+
+ FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test (to a fixed base).
+
+ Run a single iteration of the Miller-Rabin algorithm against the specified base.
+
+ @param candidate
+ the {@link BigInteger} instance to test for primality.
+ @param baseValue
+ the base value to use for this iteration.
+ @return false
if the specified base is a witness to compositeness (so
+ candidate
is definitely NOT prime), or else true
.
+
+
+ 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 kP
.
+
+
+ Base class for an elliptic curve.
+
+
+ Adds PreCompInfo
for a point on this curve, under a given name. Used by
+ ECMultiplier
s to save the precomputation for this ECPoint
for use
+ by subsequent multiplication.
+
+ @param point
+ The ECPoint
to store precomputations for.
+ @param name
+ A String
used to index precomputations of different types.
+ @param preCompInfo
+ The values precomputed by the ECMultiplier
.
+
+
+ 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
+
+
+ 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. An (optional) z-scaling factor can be applied; effectively
+ each z coordinate is scaled by this value prior to normalization (but only one
+ actual multiplication is needed).
+
+ @param points
+ An array of points that will be updated in place with their normalized versions,
+ where necessary
+ @param off
+ The start of the range of points to normalize
+ @param len
+ The length of the range of points to normalize
+ @param iso
+ The (optional) z-scaling factor - can be null
+
+
+ Sets the default ECMultiplier
, unless already set.
+
+
+ Decode a point on this curve from its ASN.1 encoding. The different
+ encodings are taken account of, including point compression for
+ Fp
(X9.62 s 4.2.1 pg 17).
+ @return The decoded point.
+
+
+ Elliptic curve over Fp
+
+
+ The auxiliary values s0
and
+ s1
used for partial modular reduction for
+ Koblitz curves.
+
+
+ Solves a quadratic equation z2 + z = beta
(X9.62
+ D.1.6) The other solution is z + 1
.
+
+ @param beta
+ The value to solve the qradratic equation for.
+ @return the solution for z2 + z = beta
or
+ null
if no solution exists.
+
+
+ @return the auxiliary values s0
and
+ s1
used for partial modular reduction for
+ Koblitz curves.
+
+
+ Returns true if this is a Koblitz curve (ABC curve).
+ @return true if this is a Koblitz curve (ABC curve), false otherwise
+
+
+ Elliptic curves over F2m. The Weierstrass equation is given by
+ y2 + xy = x3 + ax2 + b
.
+
+
+ The exponent m
of F2m
.
+
+
+ TPB: The integer k
where xm +
+ xk + 1
represents the reduction polynomial
+ f(z)
.
+ PPB: The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ TPB: Always set to 0
+ PPB: The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ TPB: Always set to 0
+ PPB: The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ The point at infinity on this curve.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+
+
+ Constructor for Trinomial Polynomial Basis (TPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n
.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+
+
+ Constructor for Pentanomial Polynomial Basis (PPB).
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param a The coefficient a
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param b The coefficient b
in the Weierstrass equation
+ for non-supersingular elliptic curves over
+ F2m
.
+ @param order The order of the main subgroup of the elliptic curve.
+ @param cofactor The cofactor of the elliptic curve, i.e.
+ #Ea(F2m) = h * n
.
+
+
+ Return true if curve uses a Trinomial basis.
+
+ @return true if curve Trinomial, false otherwise.
+
+
+ return the field name for this field.
+
+ @return the string "Fp".
+
+
+ return a sqrt root - the routine verifies that the calculation
+ returns the right value - if none exists it returns null.
+
+
+ Class representing the Elements of the finite field
+ F2m
in polynomial basis (PB)
+ representation. Both trinomial (Tpb) and pentanomial (Ppb) polynomial
+ basis representations are supported. Gaussian normal basis (GNB)
+ representation is not supported.
+
+
+ Indicates gaussian normal basis representation (GNB). Number chosen
+ according to X9.62. GNB is not implemented at present.
+
+
+ Indicates trinomial basis representation (Tpb). Number chosen
+ according to X9.62.
+
+
+ Indicates pentanomial basis representation (Ppb). Number chosen
+ according to X9.62.
+
+
+ Tpb or Ppb.
+
+
+ The exponent m
of F2m
.
+
+
+ The LongArray
holding the bits.
+
+
+ Constructor for Ppb.
+ @param m The exponent m
of
+ F2m
.
+ @param k1 The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k2 The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param k3 The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+ @param x The BigInteger representing the value of the field element.
+
+
+ Constructor for Tpb.
+ @param m The exponent m
of
+ F2m
.
+ @param k The integer k
where xm +
+ xk + 1
represents the reduction
+ polynomial f(z)
.
+ @param x The BigInteger representing the value of the field element.
+
+
+ Checks, if the ECFieldElements a
and b
+ are elements of the same field F2m
+ (having the same representation).
+ @param a field element.
+ @param b field element to be compared.
+ @throws ArgumentException if a
and b
+ are not elements of the same field
+ F2m
(having the same
+ representation).
+
+
+ @return the representation of the field
+ F2m
, either of
+ {@link F2mFieldElement.Tpb} (trinomial
+ basis representation) or
+ {@link F2mFieldElement.Ppb} (pentanomial
+ basis representation).
+
+
+ @return the degree m
of the reduction polynomial
+ f(z)
.
+
+
+ @return Tpb: The integer k
where xm +
+ xk + 1
represents the reduction polynomial
+ f(z)
.
+ Ppb: The integer k1
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ @return Tpb: Always returns 0
+ Ppb: The integer k2
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ @return Tpb: Always set to 0
+ Ppb: The integer k3
where xm +
+ xk3 + xk2 + xk1 + 1
+ represents the reduction polynomial f(z)
.
+
+
+ base class for points on elliptic curves.
+
+
+ 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.
+
+
+ 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.
+
+
+ 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
+
+
+ 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
+
+
+ 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
+
+
+ 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
+
+
+ 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
+
+
+ return the field element encoded with point compression. (S 4.3.6)
+
+
+ Multiplies this ECPoint
by the given number.
+ @param k The multiplicator.
+ @return k * this
.
+
+
+ Elliptic curve points over Fp
+
+
+ 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
+
+
+ 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
+
+
+ Elliptic curve points over F2m
+
+
+ @param curve base curve
+ @param x x point
+ @param y y point
+
+
+ @param curve base curve
+ @param x x point
+ @param y y point
+ @param withCompression true if encode with point compression.
+
+
+ Constructor for point at infinity
+
+
+ Class representing a simple version of a big decimal. A
+ SimpleBigDecimal
is basically a
+ {@link java.math.BigInteger BigInteger} with a few digits on the right of
+ the decimal point. The number of (binary) digits on the right of the decimal
+ point is called the scale
of the SimpleBigDecimal
.
+ Unlike in {@link java.math.BigDecimal BigDecimal}, the scale is not adjusted
+ automatically, but must be set manually. All SimpleBigDecimal
s
+ taking part in the same arithmetic operation must have equal scale. The
+ result of a multiplication of two SimpleBigDecimal
s returns a
+ SimpleBigDecimal
with double scale.
+
+
+ Returns a SimpleBigDecimal
representing the same numerical
+ value as value
.
+ @param value The value of the SimpleBigDecimal
to be
+ created.
+ @param scale The scale of the SimpleBigDecimal
to be
+ created.
+ @return The such created SimpleBigDecimal
.
+
+
+ Constructor for SimpleBigDecimal
. The value of the
+ constructed SimpleBigDecimal
Equals bigInt /
+ 2scale
.
+ @param bigInt The bigInt
value parameter.
+ @param scale The scale of the constructed SimpleBigDecimal
.
+
+
+ Class holding methods for point multiplication based on the window
+ τ-adic nonadjacent form (WTNAF). The algorithms are based on the
+ paper "Improved Algorithms for Arithmetic on Anomalous Binary Curves"
+ by Jerome A. Solinas. The paper first appeared in the Proceedings of
+ Crypto 1997.
+
+
+ The window width of WTNAF. The standard value of 4 is slightly less
+ than optimal for running time, but keeps space requirements for
+ precomputation low. For typical curves, a value of 5 or 6 results in
+ a better running time. When changing this value, the
+ αu
's must be computed differently, see
+ e.g. "Guide to Elliptic Curve Cryptography", Darrel Hankerson,
+ Alfred Menezes, Scott Vanstone, Springer-Verlag New York Inc., 2004,
+ p. 121-122
+
+
+ 24
+
+
+ The αu
's for a=0
as an array
+ of ZTauElement
s.
+
+
+ The αu
's for a=0
as an array
+ of TNAFs.
+
+
+ The αu
's for a=1
as an array
+ of ZTauElement
s.
+
+
+ The αu
's for a=1
as an array
+ of TNAFs.
+
+
+ Computes the norm of an element λ
of
+ Z[τ]
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return The norm of λ
.
+
+
+ Computes the norm of an element λ
of
+ R[τ]
, where λ = u + vτ
+ and u
and u
are real numbers (elements of
+ R
).
+ @param mu The parameter μ
of the elliptic curve.
+ @param u The real part of the element λ
of
+ R[τ]
.
+ @param v The τ
-adic part of the element
+ λ
of R[τ]
.
+ @return The norm of λ
.
+
+
+ Rounds an element λ
of R[τ]
+ to an element of Z[τ]
, such that their difference
+ has minimal norm. λ
is given as
+ λ = λ0 + λ1τ
.
+ @param lambda0 The component λ0
.
+ @param lambda1 The component λ1
.
+ @param mu The parameter μ
of the elliptic curve. Must
+ equal 1 or -1.
+ @return The rounded element of Z[τ]
.
+ @throws ArgumentException if lambda0
and
+ lambda1
do not have same scale.
+
+
+ Approximate division by n
. For an integer
+ k
, the value λ = s k / n
is
+ computed to c
bits of accuracy.
+ @param k The parameter k
.
+ @param s The curve parameter s0
or
+ s1
.
+ @param vm The Lucas Sequence element Vm
.
+ @param a The parameter a
of the elliptic curve.
+ @param m The bit length of the finite field
+ Fm
.
+ @param c The number of bits of accuracy, i.e. the scale of the returned
+ SimpleBigDecimal
.
+ @return The value λ = s k / n
computed to
+ c
bits of accuracy.
+
+
+ Computes the τ
-adic NAF (non-adjacent form) of an
+ element λ
of Z[τ]
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return The τ
-adic NAF of λ
.
+
+
+ Applies the operation τ()
to an
+ AbstractF2mPoint
.
+ @param p The AbstractF2mPoint to which τ()
is applied.
+ @return τ(p)
+
+
+ Returns the parameter μ
of the elliptic curve.
+ @param curve The elliptic curve from which to obtain μ
.
+ The curve must be a Koblitz curve, i.e. a
Equals
+ 0
or 1
and b
Equals
+ 1
.
+ @return μ
of the elliptic curve.
+ @throws ArgumentException if the given ECCurve is not a Koblitz
+ curve.
+
+
+ Calculates the Lucas Sequence elements Uk-1
and
+ Uk
or Vk-1
and
+ Vk
.
+ @param mu The parameter μ
of the elliptic curve.
+ @param k The index of the second element of the Lucas Sequence to be
+ returned.
+ @param doV If set to true, computes Vk-1
and
+ Vk
, otherwise Uk-1
and
+ Uk
.
+ @return An array with 2 elements, containing Uk-1
+ and Uk
or Vk-1
+ and Vk
.
+
+
+ Computes the auxiliary value tw
. If the width is
+ 4, then for mu = 1
, tw = 6
and for
+ mu = -1
, tw = 10
+ @param mu The parameter μ
of the elliptic curve.
+ @param w The window width of the WTNAF.
+ @return the auxiliary value tw
+
+
+ Computes the auxiliary values s0
and
+ s1
used for partial modular reduction.
+ @param curve The elliptic curve for which to compute
+ s0
and s1
.
+ @throws ArgumentException if curve
is not a
+ Koblitz curve (Anomalous Binary Curve, ABC).
+
+
+ Partial modular reduction modulo
+ (τm - 1)/(τ - 1)
.
+ @param k The integer to be reduced.
+ @param m The bitlength of the underlying finite field.
+ @param a The parameter a
of the elliptic curve.
+ @param s The auxiliary values s0
and
+ s1
.
+ @param mu The parameter μ of the elliptic curve.
+ @param c The precision (number of bits of accuracy) of the partial
+ modular reduction.
+ @return ρ := k partmod (τm - 1)/(τ - 1)
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by a BigInteger
using the reduced τ
-adic
+ NAF (RTNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param k The BigInteger
by which to Multiply p
.
+ @return k * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the τ
-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to Multiply.
+ @param lambda The element λ
of
+ Z[τ]
.
+ @return λ * p
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the τ
-adic NAF (TNAF) method, given the TNAF
+ of λ
.
+ @param p The AbstractF2mPoint to Multiply.
+ @param u The the TNAF of λ
..
+ @return λ * p
+
+
+ Computes the [τ]
-adic window NAF of an element
+ λ
of Z[τ]
.
+ @param mu The parameter μ of the elliptic curve.
+ @param lambda The element λ
of
+ Z[τ]
of which to compute the
+ [τ]
-adic NAF.
+ @param width The window width of the resulting WNAF.
+ @param pow2w 2width.
+ @param tw The auxiliary value tw
.
+ @param alpha The αu
's for the window width.
+ @return The [τ]
-adic window NAF of
+ λ
.
+
+
+ Does the precomputation for WTNAF multiplication.
+ @param p The ECPoint
for which to do the precomputation.
+ @param a The parameter a
of the elliptic curve.
+ @return The precomputation array for p
.
+
+
+ Class representing an element of Z[τ]
. Let
+ λ
be an element of Z[τ]
. Then
+ λ
is given as λ = u + vτ
. The
+ components u
and v
may be used directly, there
+ are no accessor methods.
+ Immutable class.
+
+
+ The "real" part of λ
.
+
+
+ The "τ
-adic" part of λ
.
+
+
+ Constructor for an element λ
of
+ Z[τ]
.
+ @param u The "real" part of λ
.
+ @param v The "τ
-adic" part of
+ λ
.
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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(boolean)}
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ return a sqrt root - the routine verifies that the calculation returns the right value - if
+ none exists it returns null.
+
+
+ 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
+
+
+ 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)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ @deprecated Use ECCurve.createPoint to construct points
+
+
+ @deprecated per-point compression property will be removed, refer {@link #getEncoded(bool)}
+
+
+ Joye's double-add algorithm.
+
+
+ Interface for classes encapsulating a point multiplication algorithm
+ for ECPoint
s.
+
+
+ Multiplies the ECPoint p
by k
, i.e.
+ p
is added k
times to itself.
+ @param p The ECPoint
to be multiplied.
+ @param k The factor by which p
is multiplied.
+ @return p
multiplied by k
.
+
+
+ Class holding precomputation data for fixed-point multiplications.
+
+
+ Array holding the precomputed ECPoint
s used for a fixed
+ point multiplication.
+
+
+ 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.
+
+
+ Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left) using
+ mixed coordinates.
+
+
+ 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).
+
+
+ Montgomery ladder.
+
+
+ Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (left-to-right).
+
+
+ Class implementing the NAF (Non-Adjacent Form) multiplication algorithm (right-to-left).
+
+
+ Interface for classes storing precomputation data for multiplication
+ algorithms. Used as a Memento (see GOF patterns) for
+ WNafMultiplier
.
+
+
+ Class implementing the WNAF (Window Non-Adjacent Form) multiplication
+ algorithm.
+
+
+ Multiplies this
by an integer k
using the
+ Window NAF method.
+ @param k The integer by which this
is multiplied.
+ @return A new ECPoint
which equals this
+ multiplied by k
.
+
+
+ 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
+
+
+ Class holding precomputation data for the WNAF (Window Non-Adjacent Form)
+ algorithm.
+
+
+ Array holding the precomputed ECPoint
s used for a Window
+ NAF multiplication.
+
+
+ Array holding the negations of the precomputed ECPoint
s used
+ for a Window NAF multiplication.
+
+
+ Holds an ECPoint
representing Twice(this). Used for the
+ Window NAF multiplication to create or extend the precomputed values.
+
+
+ Computes the Window NAF (non-adjacent Form) of an integer.
+ @param width The width w
of the Window NAF. The width is
+ defined as the minimal number w
, such that for any
+ w
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:
+ k = ∑i=0l-1 ki2i
+
, where the ki
denote the elements of the
+ returned byte[]
.
+
+
+ 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
+
+
+ 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
+
+
+ Class implementing the WTNAF (Window
+ τ
-adic Non-Adjacent Form) algorithm.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by k
using the reduced τ
-adic NAF (RTNAF)
+ method.
+ @param p The AbstractF2mPoint to multiply.
+ @param k The integer by which to multiply k
.
+ @return p
multiplied by k
.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
using
+ the τ
-adic NAF (TNAF) method.
+ @param p The AbstractF2mPoint to multiply.
+ @param lambda The element λ
of
+ Z[τ]
of which to compute the
+ [τ]
-adic NAF.
+ @return p
multiplied by λ
.
+
+
+ Multiplies a {@link org.bouncycastle.math.ec.AbstractF2mPoint AbstractF2mPoint}
+ by an element λ
of Z[τ]
+ using the window τ
-adic NAF (TNAF) method, given the
+ WTNAF of λ
.
+ @param p The AbstractF2mPoint to multiply.
+ @param u The the WTNAF of λ
..
+ @return λ * p
+
+
+ Class holding precomputation data for the WTNAF (Window
+ τ
-adic Non-Adjacent Form) algorithm.
+
+
+ Array holding the precomputed AbstractF2mPoint
s used for the
+ WTNAF multiplication in
+ {@link org.bouncycastle.math.ec.multiplier.WTauNafMultiplier.multiply()
+ WTauNafMultiplier.multiply()}
.
+
+
+ 'Zeroless' Signed Digit Left-to-Right.
+
+
+ 'Zeroless' Signed Digit Right-to-Left.
+
+
+
+
+ BasicOcspResponse ::= SEQUENCE {
+ tbsResponseData ResponseData,
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL
+ }
+
+
+
+
+ The DER encoding of the tbsResponseData field.
+ In the event of an encoding error.
+
+
+ The certificates, if any, associated with the response.
+ In the event of an encoding error.
+
+
+
+ Verify the signature against the tbsResponseData object we contain.
+
+
+
+ The ASN.1 encoded representation of this object.
+
+
+ Generator for basic OCSP response objects.
+
+
+ basic constructor
+
+
+ construct with the responderID to be the SHA-1 keyHash of the passed in public key.
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param certStatus status of the certificate - null if okay
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param nextUpdate date when next update should be requested
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Add a response for a particular Certificate ID.
+
+ @param certID certificate ID details
+ @param thisUpdate date this response was valid on
+ @param nextUpdate date when next update should be requested
+ @param certStatus status of the certificate - null if okay
+ @param singleExtensions optional extensions
+
+
+ Set the extensions for the response.
+
+ @param responseExtensions the extension object to carry.
+
+
+
+ Generate the signed response using the passed in signature calculator.
+
+ Implementation of signing calculator factory.
+ The certificate chain associated with the response signer.
+ "produced at" date.
+
+
+
+ Return an IEnumerable of the signature names supported by the generator.
+
+ @return an IEnumerable containing recognised names.
+
+
+ create from an issuer certificate and the serial number of the
+ certificate it signed.
+ @exception OcspException if any problems occur creating the id fields.
+
+
+ return the serial number for the certificate associated
+ with this request.
+
+
+ Create a new CertificateID for a new serial number derived from a previous one
+ calculated for the same CA certificate.
+
+ @param original the previously calculated CertificateID for the CA.
+ @param newSerialNumber the serial number for the new certificate of interest.
+
+ @return a new CertificateID for newSerialNumber
+
+
+
+ OcspRequest ::= SEQUENCE {
+ tbsRequest TBSRequest,
+ optionalSignature [0] EXPLICIT Signature OPTIONAL }
+
+ TBSRequest ::= SEQUENCE {
+ version [0] EXPLICIT Version DEFAULT v1,
+ requestorName [1] EXPLICIT GeneralName OPTIONAL,
+ requestList SEQUENCE OF Request,
+ requestExtensions [2] EXPLICIT Extensions OPTIONAL }
+
+ Signature ::= SEQUENCE {
+ signatureAlgorithm AlgorithmIdentifier,
+ signature BIT STRING,
+ certs [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL}
+
+ Version ::= INTEGER { v1(0) }
+
+ Request ::= SEQUENCE {
+ reqCert CertID,
+ singleRequestExtensions [0] EXPLICIT Extensions OPTIONAL }
+
+ CertID ::= SEQUENCE {
+ hashAlgorithm AlgorithmIdentifier,
+ issuerNameHash OCTET STRING, -- Hash of Issuer's DN
+ issuerKeyHash OCTET STRING, -- Hash of Issuers public key
+ serialNumber CertificateSerialNumber }
+
+
+
+ Return the DER encoding of the tbsRequest field.
+ @return DER encoding of tbsRequest
+ @throws OcspException in the event of an encoding error.
+
+
+ return the object identifier representing the signature algorithm
+
+
+ If the request is signed return a possibly empty CertStore containing the certificates in the
+ request. If the request is not signed the method returns null.
+
+ @return null if not signed, a CertStore otherwise
+ @throws OcspException
+
+
+ Return whether or not this request is signed.
+
+ @return true if signed false otherwise.
+
+
+ Verify the signature against the TBSRequest object we contain.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Add a request for the given CertificateID.
+
+ @param certId certificate ID of interest
+
+
+ Add a request with extensions
+
+ @param certId certificate ID of interest
+ @param singleRequestExtensions the extensions to attach to the request
+
+
+ Set the requestor name to the passed in X509Principal
+
+ @param requestorName a X509Principal representing the requestor name.
+
+
+ Generate an unsigned request
+
+ @return the OcspReq
+ @throws OcspException
+
+
+ Return an IEnumerable of the signature names supported by the generator.
+
+ @return an IEnumerable containing recognised names.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ base generator for an OCSP response - at the moment this only supports the
+ generation of responses containing BasicOCSP responses.
+
+
+ note 4 is not used.
+
+
+ Carrier for a ResponderID.
+
+
+ wrapper for the RevokedInfo object
+
+
+ return the revocation reason. Note: this field is optional, test for it
+ with hasRevocationReason() first.
+ @exception InvalidOperationException if a reason is asked for and none is avaliable
+
+
+ Return the status object for the response - null indicates good.
+
+ @return the status object for the response, null if it is good.
+
+
+ return the NextUpdate value - note: this is an optional field so may
+ be returned as null.
+
+ @return nextUpdate, or null if not present.
+
+
+ wrapper for the UnknownInfo object
+
+
+
+ Utility class for creating IBasicAgreement objects from their names/Oids
+
+
+
+
+ Cipher Utility class contains methods that can not be specifically grouped into other classes.
+
+
+
+
+ Returns a ObjectIdentifier for a give encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ Utility class for creating IDigest objects from their names/Oids
+
+
+
+
+ Returns a ObjectIdentifier for a given digest mechanism.
+
+ A string representation of the digest meanism.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ A class containing methods to interface the BouncyCastle world to the .NET Crypto world.
+
+
+
+
+ Create an System.Security.Cryptography.X509Certificate from an X509Certificate Structure.
+
+
+ A System.Security.Cryptography.X509Certificate.
+
+
+
+ Utility class for creating HMac object from their names/Oids
+
+
+
+
+
+
+
+
+
+ Returns a ObjectIdentifier for a give encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the Oid is not available.
+
+
+
+ Create and auto-seed an instance based on the given algorithm.
+
+ Equivalent to GetInstance(algorithm, true)
+ e.g. "SHA256PRNG"
+
+
+
+ Create an instance based on the given algorithm, with optional auto-seeding
+
+ e.g. "SHA256PRNG"
+ If true, the instance will be auto-seeded.
+
+
+
+ To replicate existing predictable output, replace with GetInstance("SHA1PRNG", false), followed by SetSeed(seed)
+
+
+
+ Use the specified instance of IRandomGenerator as random source.
+
+ This constructor performs no seeding of either the IRandomGenerator or the
+ constructed SecureRandom. It is the responsibility of the client to provide
+ proper seed material as necessary/appropriate for the given IRandomGenerator
+ implementation.
+
+ The source to generate all random bytes from.
+
+
+ base constructor.
+
+
+ create a SecurityUtilityException with the given message.
+
+ @param message the message to be carried with the exception.
+
+
+
+ Signer Utility class contains methods that can not be specifically grouped into other classes.
+
+
+
+
+ Returns an ObjectIdentifier for a given encoding.
+
+ A string representation of the encoding.
+ A DerObjectIdentifier, null if the OID is not available.
+
+
+
+ Utility class for creating IWrapper objects from their names/Oids
+
+
+
+ PEM generator for the original set of PEM objects used in Open SSL.
+
+
+ Class for reading OpenSSL PEM encoded streams containing
+ X509 certificates, PKCS8 encoded keys and PKCS7 objects.
+
+ In the case of PKCS7 objects the reader will return a CMS ContentInfo object. Keys and
+ Certificates will be returned using the appropriate java.security type.
+
+
+ Create a new PemReader
+
+ @param reader the Reader
+
+
+ Create a new PemReader with a password finder
+
+ @param reader the Reader
+ @param pFinder the password finder
+
+
+ Reads in a X509Certificate.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a X509CRL.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a PKCS10 certification request.
+
+ @return the certificate request.
+ @throws IOException if an I/O error occured
+
+
+ Reads in a X509 Attribute Certificate.
+
+ @return the X509 Attribute Certificate
+ @throws IOException if an I/O error occured
+
+
+ Reads in a PKCS7 object. This returns a ContentInfo object suitable for use with the CMS
+ API.
+
+ @return the X509Certificate
+ @throws IOException if an I/O error occured
+
+
+ Read a Key Pair
+
+
+ General purpose writer for OpenSSL PEM objects.
+
+
+ The TextWriter object to write the output to.
+
+
+ Constructor for an unencrypted private key PEM object.
+
+ @param key private key to be encoded.
+
+
+ Constructor for an encrypted private key PEM object.
+
+ @param key private key to be encoded
+ @param algorithm encryption algorithm to use
+ @param provider provider to use
+ @throws NoSuchAlgorithmException if algorithm/mode cannot be found
+
+
+
+ A class for verifying and creating Pkcs10 Certification requests.
+
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+ see
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ Name of Sig Alg.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+ Matching Private key for nominated (above) public key to be used to sign the request.
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ The factory for signature calculators to sign the PKCS#10 request with.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+ Matching Private key for nominated (above) public key to be used to sign the request.
+
+
+
+ Get the public key.
+
+ The public key.
+
+
+
+ Verify Pkcs10 Cert Request is valid.
+
+ true = valid.
+
+
+
+ A class for creating and verifying Pkcs10 Certification requests (this is an extension on ).
+ The requests are made using delay signing. This is useful for situations where
+ the private key is in another environment and not directly accessible (e.g. HSM)
+ So the first step creates the request, then the signing is done outside this
+ object and the signature is then used to complete the request.
+
+
+ CertificationRequest ::= Sequence {
+ certificationRequestInfo CertificationRequestInfo,
+ signatureAlgorithm AlgorithmIdentifier{{ SignatureAlgorithms }},
+ signature BIT STRING
+ }
+
+ CertificationRequestInfo ::= Sequence {
+ version Integer { v1(0) } (v1,...),
+ subject Name,
+ subjectPKInfo SubjectPublicKeyInfo{{ PKInfoAlgorithms }},
+ attributes [0] Attributes{{ CRIAttributes }}
+ }
+
+ Attributes { ATTRIBUTE:IOSet } ::= Set OF Attr{{ IOSet }}
+
+ Attr { ATTRIBUTE:IOSet } ::= Sequence {
+ type ATTRIBUTE.&id({IOSet}),
+ values Set SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{\@type})
+ }
+
+ see
+
+
+
+ Instantiate a Pkcs10CertificationRequest object with the necessary credentials.
+
+ Name of Sig Alg.
+ X509Name of subject eg OU="My unit." O="My Organisatioin" C="au"
+ Public Key to be included in cert reqest.
+ ASN1Set of Attributes.
+
+ After the object is constructed use the and finally the
+ SignRequest methods to finalize the request.
+
+
+
+ simply return the cert entry for the private key
+
+
+ Utility class for reencoding PKCS#12 files to definite length.
+
+
+ Just re-encode the outer layer of the PKCS#12 file to definite length encoding.
+
+ @param berPKCS12File - original PKCS#12 file
+ @return a byte array representing the DER encoding of the PFX structure
+ @throws IOException
+
+
+ Re-encode the PKCS#12 structure to definite length encoding at the inner layer
+ as well, recomputing the MAC accordingly.
+
+ @param berPKCS12File - original PKCS12 file.
+ @param provider - provider to use for MAC calculation.
+ @return a byte array representing the DER encoding of the PFX structure.
+ @throws IOException on parsing, encoding errors.
+
+
+
+ Returns the revocationDate.
+
+
+
+
+ Returns the certStatus.
+
+
+
+ Returns an immutable Set
of X.509 attribute certificate
+ extensions that this PkixAttrCertChecker
supports or
+ null
if no extensions are supported.
+
+ Each element of the set is a String
representing the
+ Object Identifier (OID) of the X.509 extension that is supported.
+
+
+ All X.509 attribute certificate extensions that a
+ PkixAttrCertChecker
might possibly be able to process
+ should be included in the set.
+
+
+ @return an immutable Set
of X.509 extension OIDs (in
+ String
format) supported by this
+ PkixAttrCertChecker
, or null
if no
+ extensions are supported
+
+
+ Performs checks on the specified attribute certificate. Every handled
+ extension is rmeoved from the unresolvedCritExts
+ collection.
+
+ @param attrCert The attribute certificate to be checked.
+ @param certPath The certificate path which belongs to the attribute
+ certificate issuer public key certificate.
+ @param holderCertPath The certificate path which belongs to the holder
+ certificate.
+ @param unresolvedCritExts a Collection
of OID strings
+ representing the current set of unresolved critical extensions
+ @throws CertPathValidatorException if the specified attribute certificate
+ does not pass the check.
+
+
+ Returns a clone of this object.
+
+ @return a copy of this PkixAttrCertChecker
+
+
+ Build and validate a CertPath using the given parameter.
+
+ @param params PKIXBuilderParameters object containing all information to
+ build the CertPath
+
+
+ CertPathValidatorSpi implementation for X.509 Attribute Certificates la RFC 3281.
+
+ @see org.bouncycastle.x509.ExtendedPkixParameters
+
+
+ Validates an attribute certificate with the given certificate path.
+
+
+ params
must be an instance of
+ ExtendedPkixParameters
.
+
+ The target constraints in the params
must be an
+ X509AttrCertStoreSelector
with at least the attribute
+ certificate criterion set. Obey that also target informations may be
+ necessary to correctly validate this attribute certificate.
+
+ The attribute certificate issuer must be added to the trusted attribute
+ issuers with {@link ExtendedPkixParameters#setTrustedACIssuers(Set)}.
+
+ @param certPath The certificate path which belongs to the attribute
+ certificate issuer public key certificate.
+ @param params The PKIX parameters.
+ @return A PKIXCertPathValidatorResult
of the result of
+ validating the certPath
.
+ @throws InvalidAlgorithmParameterException if params
is
+ inappropriate for this validator.
+ @throws CertPathValidatorException if the verification fails.
+
+
+
+ Summary description for PkixBuilderParameters.
+
+
+
+ Returns an instance of PkixBuilderParameters
.
+
+ This method can be used to get a copy from other
+ PKIXBuilderParameters
, PKIXParameters
,
+ and ExtendedPKIXParameters
instances.
+
+
+ @param pkixParams The PKIX parameters to create a copy of.
+ @return An PkixBuilderParameters
instance.
+
+
+
+ Excluded certificates are not used for building a certification path.
+
+ the excluded certificates.
+
+
+
+ Sets the excluded certificates which are not used for building a
+ certification path. If the ISet
is null
an
+ empty set is assumed.
+
+
+ The given set is cloned to protect it against subsequent modifications.
+
+ The excluded certificates to set.
+
+
+ Can alse handle ExtendedPKIXBuilderParameters
and
+ PKIXBuilderParameters
.
+
+ @param params Parameters to set.
+ @see org.bouncycastle.x509.ExtendedPKIXParameters#setParams(java.security.cert.PKIXParameters)
+
+
+ Makes a copy of this PKIXParameters
object. Changes to the
+ copy will not affect the original and vice versa.
+
+ @return a copy of this PKIXParameters
object
+
+
+ An immutable sequence of certificates (a certification path).
+
+ This is an abstract class that defines the methods common to all CertPaths.
+ Subclasses can handle different kinds of certificates (X.509, PGP, etc.).
+
+ All CertPath objects have a type, a list of Certificates, and one or more
+ supported encodings. Because the CertPath class is immutable, a CertPath
+ cannot change in any externally visible way after being constructed. This
+ stipulation applies to all public fields and methods of this class and any
+ added or overridden by subclasses.
+
+ The type is a string that identifies the type of Certificates in the
+ certification path. For each certificate cert in a certification path
+ certPath, cert.getType().equals(certPath.getType()) must be true.
+
+ The list of Certificates is an ordered List of zero or more Certificates.
+ This List and all of the Certificates contained in it must be immutable.
+
+ Each CertPath object must support one or more encodings so that the object
+ can be translated into a byte array for storage or transmission to other
+ parties. Preferably, these encodings should be well-documented standards
+ (such as PKCS#7). One of the encodings supported by a CertPath is considered
+ the default encoding. This encoding is used if no encoding is explicitly
+ requested (for the {@link #getEncoded()} method, for instance).
+
+ All CertPath objects are also Serializable. CertPath objects are resolved
+ into an alternate {@link CertPathRep} object during serialization. This
+ allows a CertPath object to be serialized into an equivalent representation
+ regardless of its underlying implementation.
+
+ CertPath objects can be created with a CertificateFactory or they can be
+ returned by other classes, such as a CertPathBuilder.
+
+ By convention, X.509 CertPaths (consisting of X509Certificates), are ordered
+ starting with the target certificate and ending with a certificate issued by
+ the trust anchor. That is, the issuer of one certificate is the subject of
+ the following one. The certificate representing the
+ {@link TrustAnchor TrustAnchor} should not be included in the certification
+ path. Unvalidated X.509 CertPaths may not follow these conventions. PKIX
+ CertPathValidators will detect any departure from these conventions that
+ cause the certification path to be invalid and throw a
+ CertPathValidatorException.
+
+ Concurrent Access
+
+ All CertPath objects must be thread-safe. That is, multiple threads may
+ concurrently invoke the methods defined in this class on a single CertPath
+ object (or more than one) with no ill effects. This is also true for the List
+ returned by CertPath.getCertificates.
+
+ Requiring CertPath objects to be immutable and thread-safe allows them to be
+ passed around to various pieces of code without worrying about coordinating
+ access. Providing this thread-safety is generally not difficult, since the
+ CertPath and List objects in question are immutable.
+
+ @see CertificateFactory
+ @see CertPathBuilder
+
+ CertPath implementation for X.509 certificates.
+
+
+
+ @param certs
+
+
+ Creates a CertPath of the specified type.
+ This constructor is protected because most users should use
+ a CertificateFactory to create CertPaths.
+ @param type the standard name of the type of Certificatesin this path
+
+
+
+ Creates a CertPath of the specified type.
+ This constructor is protected because most users should use
+ a CertificateFactory to create CertPaths.
+
+ @param type the standard name of the type of Certificatesin this path
+
+
+
+ Returns an iteration of the encodings supported by this
+ certification path, with the default encoding
+ first. Attempts to modify the returned Iterator via its
+ remove method result in an UnsupportedOperationException.
+
+ @return an Iterator over the names of the supported encodings (as Strings)
+
+
+
+ Compares this certification path for equality with the specified object.
+ Two CertPaths are equal if and only if their types are equal and their
+ certificate Lists (and by implication the Certificates in those Lists)
+ are equal. A CertPath is never equal to an object that is not a CertPath.
+
+ This algorithm is implemented by this method. If it is overridden, the
+ behavior specified here must be maintained.
+
+ @param other
+ the object to test for equality with this certification path
+
+ @return true if the specified object is equal to this certification path,
+ false otherwise
+
+ @see Object#hashCode() Object.hashCode()
+
+
+ Returns the encoded form of this certification path, using
+ the default encoding.
+
+ @return the encoded bytes
+ @exception CertificateEncodingException if an encoding error occurs
+
+
+
+ Returns the encoded form of this certification path, using
+ the specified encoding.
+
+ @param encoding the name of the encoding to use
+ @return the encoded bytes
+ @exception CertificateEncodingException if an encoding error
+ occurs or the encoding requested is not supported
+
+
+
+
+ Returns the list of certificates in this certification
+ path.
+
+
+
+ Return a DERObject containing the encoded certificate.
+
+ @param cert the X509Certificate object to be encoded
+
+ @return the DERObject
+
+
+
+ Implements the PKIX CertPathBuilding algorithm for BouncyCastle.
+
+ @see CertPathBuilderSpi
+
+
+ Build and validate a CertPath using the given parameter.
+
+ @param params PKIXBuilderParameters object containing all information to
+ build the CertPath
+
+
+
+ Summary description for PkixCertPathBuilderException.
+
+
+
+
+ Summary description for PkixCertPathBuilderResult.
+
+
+
+ * Initializes the internal state of this PKIXCertPathChecker
.
+ *
+ * The forward
flag specifies the order that certificates
+ * will be passed to the {@link #check check} method (forward or reverse). A
+ * PKIXCertPathChecker
must support reverse checking
+ * and may support forward checking.
+ *
+ *
+ * @param forward
+ * the order that certificates are presented to the
+ * check
method. If true
,
+ * certificates are presented from target to most-trusted CA
+ * (forward); if false
, from most-trusted CA to
+ * target (reverse).
+ * @exception CertPathValidatorException
+ * if this PKIXCertPathChecker
is unable to
+ * check certificates in the specified order; it should never
+ * be thrown if the forward flag is false since reverse
+ * checking must be supported
+
+
+ Indicates if forward checking is supported. Forward checking refers to
+ the ability of the PKIXCertPathChecker
to perform its
+ checks when certificates are presented to the check
method
+ in the forward direction (from target to most-trusted CA).
+
+ @return true
if forward checking is supported,
+ false
otherwise
+
+
+ * Returns an immutable Set
of X.509 certificate extensions
+ * that this PKIXCertPathChecker
supports (i.e. recognizes,
+ * is able to process), or null
if no extensions are
+ * supported.
+ *
+ * Each element of the set is a String
representing the
+ * Object Identifier (OID) of the X.509 extension that is supported. The OID
+ * is represented by a set of nonnegative integers separated by periods.
+ *
+ * All X.509 certificate extensions that a PKIXCertPathChecker
+ * might possibly be able to process should be included in the set.
+ *
+ *
+ * @return an immutable Set
of X.509 extension OIDs (in
+ * String
format) supported by this
+ * PKIXCertPathChecker
, or null
if no
+ * extensions are supported
+
+
+ Performs the check(s) on the specified certificate using its internal
+ state and removes any critical extensions that it processes from the
+ specified collection of OID strings that represent the unresolved
+ critical extensions. The certificates are presented in the order
+ specified by the init
method.
+
+ @param cert
+ the Certificate
to be checked
+ @param unresolvedCritExts
+ a Collection
of OID strings representing the
+ current set of unresolved critical extensions
+ @exception CertPathValidatorException
+ if the specified certificate does not pass the check
+
+
+ Returns a clone of this object. Calls the Object.clone()
+ method. All subclasses which maintain state must support and override
+ this method, if necessary.
+
+ @return a copy of this PKIXCertPathChecker
+
+
+ The Service Provider Interface (SPI)
+ for the {@link CertPathValidator CertPathValidator} class. All
+ CertPathValidator
implementations must include a class (the
+ SPI class) that extends this class (CertPathValidatorSpi
)
+ and implements all of its methods. In general, instances of this class
+ should only be accessed through the CertPathValidator
class.
+ For details, see the Java Cryptography Architecture.
+
+ Concurrent Access
+
+ Instances of this class need not be protected against concurrent
+ access from multiple threads. Threads that need to access a single
+ CertPathValidatorSpi
instance concurrently should synchronize
+ amongst themselves and provide the necessary locking before calling the
+ wrapping CertPathValidator
object.
+
+ However, implementations of CertPathValidatorSpi
may still
+ encounter concurrency issues, since multiple threads each
+ manipulating a different CertPathValidatorSpi
instance need not
+ synchronize.
+
+ CertPathValidatorSpi implementation for X.509 Certificate validation a la RFC
+ 3280.
+
+
+
+ An exception indicating one of a variety of problems encountered when
+ validating a certification path.
+
+ A CertPathValidatorException
provides support for wrapping
+ exceptions. The {@link #getCause getCause} method returns the throwable,
+ if any, that caused this exception to be thrown.
+
+ A CertPathValidatorException
may also include the
+ certification path that was being validated when the exception was thrown
+ and the index of the certificate in the certification path that caused the
+ exception to be thrown. Use the {@link #getCertPath getCertPath} and
+ {@link #getIndex getIndex} methods to retrieve this information.
+
+ Concurrent Access
+
+ Unless otherwise specified, the methods defined in this class are not
+ thread-safe. Multiple threads that need to access a single
+ object concurrently should synchronize amongst themselves and
+ provide the necessary locking. Multiple threads each manipulating
+ separate objects need not synchronize.
+
+ @see CertPathValidator
+
+
+
+
+ Creates a PkixCertPathValidatorException
with the given detail
+ message. A detail message is a String
that describes this
+ particular exception.
+
+ the detail message
+
+
+
+ Creates a PkixCertPathValidatorException
with the specified
+ detail message and cause.
+
+ the detail message
+ the cause (which is saved for later retrieval by the
+ {@link #getCause getCause()} method). (A null
+ value is permitted, and indicates that the cause is
+ nonexistent or unknown.)
+
+
+
+ Creates a PkixCertPathValidatorException
with the specified
+ detail message, cause, certification path, and index.
+
+ the detail message (or null
if none)
+ the cause (or null
if none)
+ the certification path that was in the process of being
+ validated when the error was encountered
+ the index of the certificate in the certification path that *
+
+
+
+ Returns the detail message for this CertPathValidatorException
.
+
+ the detail message, or null
if neither the message nor cause were specified
+
+
+ Returns the certification path that was being validated when the
+ exception was thrown.
+
+ @return the CertPath
that was being validated when the
+ exception was thrown (or null
if not specified)
+
+
+ Returns the index of the certificate in the certification path that
+ caused the exception to be thrown. Note that the list of certificates in
+ a CertPath
is zero based. If no index has been set, -1 is
+ returned.
+
+ @return the index that has been set, or -1 if none has been set
+
+
+
+ Summary description for PkixCertPathValidatorResult.
+
+
+
+
+ Summary description for PkixCertPathValidatorUtilities.
+
+
+
+
+ key usage bits
+
+
+
+
+ Search the given Set of TrustAnchor's for one that is the
+ issuer of the given X509 certificate.
+
+ the X509 certificate
+ a Set of TrustAnchor's
+ the TrustAnchor
object if found or
+ null
if not.
+
+ @exception
+
+
+
+ Returns the issuer of an attribute certificate or certificate.
+
+ The attribute certificate or certificate.
+ The issuer as X500Principal
.
+
+
+ Return the next working key inheriting DSA parameters if necessary.
+
+ This methods inherits DSA parameters from the indexed certificate or
+ previous certificates in the certificate chain to the returned
+ PublicKey
. The list is searched upwards, meaning the end
+ certificate is at position 0 and previous certificates are following.
+
+
+ If the indexed certificate does not contain a DSA key this method simply
+ returns the public key. If the DSA key already contains DSA parameters
+ the key is also only returned.
+
+
+ @param certs The certification path.
+ @param index The index of the certificate which contains the public key
+ which should be extended with DSA parameters.
+ @return The public key of the certificate in list position
+ index
extended with DSA parameters if applicable.
+ @throws Exception if DSA parameters cannot be inherited.
+
+
+
+ Return a Collection of all certificates or attribute certificates found
+ in the X509Store's that are matching the certSelect criteriums.
+
+ a {@link Selector} object that will be used to select
+ the certificates
+ a List containing only X509Store objects. These
+ are used to search for certificates.
+ a Collection of all found or
+ objects.
+ May be empty but never null
.
+
+
+
+ Add the CRL issuers from the cRLIssuer field of the distribution point or
+ from the certificate if not given to the issuer criterion of the
+ selector
.
+
+ The issuerPrincipals
are a collection with a single
+ X500Principal
for X509Certificate
s. For
+ {@link X509AttributeCertificate}s the issuer may contain more than one
+ X500Principal
.
+
+
+ @param dp The distribution point.
+ @param issuerPrincipals The issuers of the certificate or attribute
+ certificate which contains the distribution point.
+ @param selector The CRL selector.
+ @param pkixParams The PKIX parameters containing the cert stores.
+ @throws Exception if an exception occurs while processing.
+ @throws ClassCastException if issuerPrincipals
does not
+ contain only X500Principal
s.
+
+
+ Fetches complete CRLs according to RFC 3280.
+
+ @param dp The distribution point for which the complete CRL
+ @param cert The X509Certificate
or
+ {@link org.bouncycastle.x509.X509AttributeCertificate} for
+ which the CRL should be searched.
+ @param currentDate The date for which the delta CRLs must be valid.
+ @param paramsPKIX The extended PKIX parameters.
+ @return A Set
of X509CRL
s with complete
+ CRLs.
+ @throws Exception if an exception occurs while picking the CRLs
+ or no CRLs are found.
+
+
+ Fetches delta CRLs according to RFC 3280 section 5.2.4.
+
+ @param currentDate The date for which the delta CRLs must be valid.
+ @param paramsPKIX The extended PKIX parameters.
+ @param completeCRL The complete CRL the delta CRL is for.
+ @return A Set
of X509CRL
s with delta CRLs.
+ @throws Exception if an exception occurs while picking the delta
+ CRLs.
+
+
+ Find the issuer certificates of a given certificate.
+
+ @param cert
+ The certificate for which an issuer should be found.
+ @param pkixParams
+ @return A Collection
object containing the issuer
+ X509Certificate
s. Never null
.
+
+ @exception Exception
+ if an error occurs.
+
+
+
+ Extract the value of the given extension, if it exists.
+
+ The extension object.
+ The object identifier to obtain.
+ Asn1Object
+ if the extension cannot be read.
+
+
+
+ crl checking
+ Return a Collection of all CRLs found in the X509Store's that are
+ matching the crlSelect criteriums.
+
+ a {@link X509CRLStoreSelector} object that will be used
+ to select the CRLs
+ a List containing only {@link org.bouncycastle.x509.X509Store
+ X509Store} objects. These are used to search for CRLs
+ a Collection of all found {@link X509CRL X509CRL} objects. May be
+ empty but never null
.
+
+
+
+ Returns the intersection of the permitted IP ranges in
+ permitted
with ip
.
+
+ @param permitted A Set
of permitted IP addresses with
+ their subnet mask as byte arrays.
+ @param ips The IP address with its subnet mask.
+ @return The Set
of permitted IP ranges intersected with
+ ip
.
+
+
+ Returns the union of the excluded IP ranges in excluded
+ with ip
.
+
+ @param excluded A Set
of excluded IP addresses with their
+ subnet mask as byte arrays.
+ @param ip The IP address with its subnet mask.
+ @return The Set
of excluded IP ranges unified with
+ ip
as byte arrays.
+
+
+ Calculates the union if two IP ranges.
+
+ @param ipWithSubmask1 The first IP address with its subnet mask.
+ @param ipWithSubmask2 The second IP address with its subnet mask.
+ @return A Set
with the union of both addresses.
+
+
+ Calculates the interesction if two IP ranges.
+
+ @param ipWithSubmask1 The first IP address with its subnet mask.
+ @param ipWithSubmask2 The second IP address with its subnet mask.
+ @return A Set
with the single IP address with its subnet
+ mask as a byte array or an empty Set
.
+
+
+ Concatenates the IP address with its subnet mask.
+
+ @param ip The IP address.
+ @param subnetMask Its subnet mask.
+ @return The concatenated IP address with its subnet mask.
+
+
+ Splits the IP addresses and their subnet mask.
+
+ @param ipWithSubmask1 The first IP address with the subnet mask.
+ @param ipWithSubmask2 The second IP address with the subnet mask.
+ @return An array with two elements. Each element contains the IP address
+ and the subnet mask in this order.
+
+
+ Based on the two IP addresses and their subnet masks the IP range is
+ computed for each IP address - subnet mask pair and returned as the
+ minimum IP address and the maximum address of the range.
+
+ @param ip1 The first IP address.
+ @param subnetmask1 The subnet mask of the first IP address.
+ @param ip2 The second IP address.
+ @param subnetmask2 The subnet mask of the second IP address.
+ @return A array with two elements. The first/second element contains the
+ min and max IP address of the first/second IP address and its
+ subnet mask.
+
+
+ Checks if the IP ip
is included in the permitted ISet
+ permitted
.
+
+ @param permitted A Set
of permitted IP addresses with
+ their subnet mask as byte arrays.
+ @param ip The IP address.
+ @throws PkixNameConstraintValidatorException
+ if the IP is not permitted.
+
+
+ Checks if the IP ip
is included in the excluded ISet
+ excluded
.
+
+ @param excluded A Set
of excluded IP addresses with their
+ subnet mask as byte arrays.
+ @param ip The IP address.
+ @throws PkixNameConstraintValidatorException
+ if the IP is excluded.
+
+
+ Checks if the IP address ip
is constrained by
+ constraint
.
+
+ @param ip The IP address.
+ @param constraint The constraint. This is an IP address concatenated with
+ its subnetmask.
+ @return true
if constrained, false
+ otherwise.
+
+
+ The common part of email1
and email2
is
+ added to the union union
. If email1
and
+ email2
have nothing in common they are added both.
+
+ @param email1 Email address constraint 1.
+ @param email2 Email address constraint 2.
+ @param union The union.
+
+
+ The most restricting part from email1
and
+ email2
is added to the intersection intersect
.
+
+ @param email1 Email address constraint 1.
+ @param email2 Email address constraint 2.
+ @param intersect The intersection.
+
+
+ Checks if the given GeneralName is in the permitted ISet.
+
+ @param name The GeneralName
+ @throws PkixNameConstraintValidatorException
+ If the name
+
+
+ Check if the given GeneralName is contained in the excluded ISet.
+
+ @param name The GeneralName.
+ @throws PkixNameConstraintValidatorException
+ If the name
is
+ excluded.
+
+
+ Updates the permitted ISet of these name constraints with the intersection
+ with the given subtree.
+
+ @param permitted The permitted subtrees
+
+
+ Adds a subtree to the excluded ISet of these name constraints.
+
+ @param subtree A subtree with an excluded GeneralName.
+
+
+ Returns the maximum IP address.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The maximum IP address.
+
+
+ Returns the minimum IP address.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The minimum IP address.
+
+
+ Compares IP address ip1
with ip2
. If ip1
+ is equal to ip2 0 is returned. If ip1 is bigger 1 is returned, -1
+ otherwise.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return 0 if ip1 is equal to ip2, 1 if ip1 is bigger, -1 otherwise.
+
+
+ Returns the logical OR of the IP addresses ip1
and
+ ip2
.
+
+ @param ip1 The first IP address.
+ @param ip2 The second IP address.
+ @return The OR of ip1
and ip2
.
+
+
+ Stringifies an IPv4 or v6 address with subnet mask.
+
+ @param ip The IP with subnet mask.
+ @return The stringified IP address.
+
+
+
+ Summary description for PkixParameters.
+
+
+
+ This is the default PKIX validity model. Actually there are two variants
+ of this: The PKIX model and the modified PKIX model. The PKIX model
+ verifies that all involved certificates must have been valid at the
+ current time. The modified PKIX model verifies that all involved
+ certificates were valid at the signing time. Both are indirectly choosen
+ with the {@link PKIXParameters#setDate(java.util.Date)} method, so this
+ methods sets the Date when all certificates must have been
+ valid.
+
+
+ This model uses the following validity model. Each certificate must have
+ been valid at the moment where is was used. That means the end
+ certificate must have been valid at the time the signature was done. The
+ CA certificate which signed the end certificate must have been valid,
+ when the end certificate was signed. The CA (or Root CA) certificate must
+ have been valid, when the CA certificate was signed and so on. So the
+ {@link PKIXParameters#setDate(java.util.Date)} method sets the time, when
+ the end certificate must have been valid. It is used e.g.
+ in the German signature law.
+
+
+ Creates an instance of PKIXParameters with the specified Set of
+ most-trusted CAs. Each element of the set is a TrustAnchor.
+
+ Note that the Set is copied to protect against subsequent modifications.
+
+ @param trustAnchors
+ a Set of TrustAnchors
+
+ @exception InvalidAlgorithmParameterException
+ if the specified Set is empty
+ (trustAnchors.isEmpty() == true)
+ @exception NullPointerException
+ if the specified Set is null
+ @exception ClassCastException
+ if any of the elements in the Set are not of type
+ java.security.cert.TrustAnchor
+
+
+ Returns the required constraints on the target certificate. The
+ constraints are returned as an instance of CertSelector. If
+ null
, no constraints are defined.
+
+ Note that the CertSelector returned is cloned to protect against
+ subsequent modifications.
+
+ @return a CertSelector specifying the constraints on the target
+ certificate (or null
)
+
+ @see #setTargetCertConstraints(CertSelector)
+
+
+ Sets the required constraints on the target certificate. The constraints
+ are specified as an instance of CertSelector. If null, no constraints are
+ defined.
+
+ Note that the CertSelector specified is cloned to protect against
+ subsequent modifications.
+
+ @param selector
+ a CertSelector specifying the constraints on the target
+ certificate (or null
)
+
+ @see #getTargetCertConstraints()
+
+
+ Returns an immutable Set of initial policy identifiers (OID strings),
+ indicating that any one of these policies would be acceptable to the
+ certificate user for the purposes of certification path processing. The
+ default return value is an empty Set
, which is
+ interpreted as meaning that any policy would be acceptable.
+
+ @return an immutable Set
of initial policy OIDs in String
+ format, or an empty Set
(implying any policy is
+ acceptable). Never returns null
.
+
+ @see #setInitialPolicies(java.util.Set)
+
+
+ Sets the Set
of initial policy identifiers (OID strings),
+ indicating that any one of these policies would be acceptable to the
+ certificate user for the purposes of certification path processing. By
+ default, any policy is acceptable (i.e. all policies), so a user that
+ wants to allow any policy as acceptable does not need to call this
+ method, or can call it with an empty Set
(or
+ null
).
+
+ Note that the Set is copied to protect against subsequent modifications.
+
+
+ @param initialPolicies
+ a Set of initial policy OIDs in String format (or
+ null
)
+
+ @exception ClassCastException
+ if any of the elements in the set are not of type String
+
+ @see #getInitialPolicies()
+
+
+ Sets a List
of additional certification path checkers. If
+ the specified List contains an object that is not a PKIXCertPathChecker,
+ it is ignored.
+
+ Each PKIXCertPathChecker
specified implements additional
+ checks on a certificate. Typically, these are checks to process and
+ verify private extensions contained in certificates. Each
+ PKIXCertPathChecker
should be instantiated with any
+ initialization parameters needed to execute the check.
+
+ This method allows sophisticated applications to extend a PKIX
+ CertPathValidator
or CertPathBuilder
. Each
+ of the specified PKIXCertPathCheckers will be called, in turn, by a PKIX
+ CertPathValidator
or CertPathBuilder
for
+ each certificate processed or validated.
+
+ Regardless of whether these additional PKIXCertPathCheckers are set, a
+ PKIX CertPathValidator
or CertPathBuilder
+ must perform all of the required PKIX checks on each certificate. The one
+ exception to this rule is if the RevocationEnabled flag is set to false
+ (see the {@link #setRevocationEnabled(boolean) setRevocationEnabled}
+ method).
+
+ Note that the List supplied here is copied and each PKIXCertPathChecker
+ in the list is cloned to protect against subsequent modifications.
+
+ @param checkers
+ a List of PKIXCertPathCheckers. May be null, in which case no
+ additional checkers will be used.
+ @exception ClassCastException
+ if any of the elements in the list are not of type
+ java.security.cert.PKIXCertPathChecker
+ @see #getCertPathCheckers()
+
+
+ Returns the List of certification path checkers. Each PKIXCertPathChecker
+ in the returned IList is cloned to protect against subsequent modifications.
+
+ @return an immutable List of PKIXCertPathCheckers (may be empty, but not
+ null
)
+
+ @see #setCertPathCheckers(java.util.List)
+
+
+ Adds a PKIXCertPathChecker
to the list of certification
+ path checkers. See the {@link #setCertPathCheckers setCertPathCheckers}
+ method for more details.
+
+ Note that the PKIXCertPathChecker
is cloned to protect
+ against subsequent modifications.
+
+ @param checker a PKIXCertPathChecker
to add to the list of
+ checks. If null
, the checker is ignored (not added to list).
+
+
+ Method to support Clone()
under J2ME.
+ super.Clone()
does not exist and fields are not copied.
+
+ @param params Parameters to set. If this are
+ ExtendedPkixParameters
they are copied to.
+
+
+ Whether delta CRLs should be used for checking the revocation status.
+ Defaults to false
.
+
+
+ The validity model.
+ @see #CHAIN_VALIDITY_MODEL
+ @see #PKIX_VALIDITY_MODEL
+
+
+ Sets the Bouncy Castle Stores for finding CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ The IList
is cloned.
+
+
+ @param stores A list of stores to use.
+ @see #getStores
+ @throws ClassCastException if an element of stores
is not
+ a {@link Store}.
+
+
+ Adds a Bouncy Castle {@link Store} to find CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ This method should be used to add local stores, like collection based
+ X.509 stores, if available. Local stores should be considered first,
+ before trying to use additional (remote) locations, because they do not
+ need possible additional network traffic.
+
+ If store
is null
it is ignored.
+
+
+ @param store The store to add.
+ @see #getStores
+
+
+ Adds an additional Bouncy Castle {@link Store} to find CRLs, certificates,
+ attribute certificates or cross certificates.
+
+ You should not use this method. This method is used for adding additional
+ X.509 stores, which are used to add (remote) locations, e.g. LDAP, found
+ during X.509 object processing, e.g. in certificates or CRLs. This method
+ is used in PKIX certification path processing.
+
+ If store
is null
it is ignored.
+
+
+ @param store The store to add.
+ @see #getStores()
+
+
+ Returns an IList
of additional Bouncy Castle
+ Store
s used for finding CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ @return an immutable IList
of additional Bouncy Castle
+ Store
s. Never null
.
+
+ @see #addAddionalStore(Store)
+
+
+ Returns an IList
of Bouncy Castle
+ Store
s used for finding CRLs, certificates, attribute
+ certificates or cross certificates.
+
+ @return an immutable IList
of Bouncy Castle
+ Store
s. Never null
.
+
+ @see #setStores(IList)
+
+
+ Returns if additional {@link X509Store}s for locations like LDAP found
+ in certificates or CRLs should be used.
+
+ @return Returns true
if additional stores are used.
+
+
+ Sets if additional {@link X509Store}s for locations like LDAP found in
+ certificates or CRLs should be used.
+
+ @param enabled true
if additional stores are used.
+
+
+ Returns the required constraints on the target certificate or attribute
+ certificate. The constraints are returned as an instance of
+ IX509Selector
. If null
, no constraints are
+ defined.
+
+
+ The target certificate in a PKIX path may be a certificate or an
+ attribute certificate.
+
+ Note that the IX509Selector
returned is cloned to protect
+ against subsequent modifications.
+
+ @return a IX509Selector
specifying the constraints on the
+ target certificate or attribute certificate (or null
)
+ @see #setTargetConstraints
+ @see X509CertStoreSelector
+ @see X509AttributeCertStoreSelector
+
+
+ Sets the required constraints on the target certificate or attribute
+ certificate. The constraints are specified as an instance of
+ IX509Selector
. If null
, no constraints are
+ defined.
+
+ The target certificate in a PKIX path may be a certificate or an
+ attribute certificate.
+
+ Note that the IX509Selector
specified is cloned to protect
+ against subsequent modifications.
+
+
+ @param selector a IX509Selector
specifying the constraints on
+ the target certificate or attribute certificate (or
+ null
)
+ @see #getTargetConstraints
+ @see X509CertStoreSelector
+ @see X509AttributeCertStoreSelector
+
+
+ Returns the trusted attribute certificate issuers. If attribute
+ certificates is verified the trusted AC issuers must be set.
+
+ The returned ISet
consists of TrustAnchor
s.
+
+ The returned ISet
is immutable. Never null
+
+
+ @return Returns an immutable set of the trusted AC issuers.
+
+
+ Sets the trusted attribute certificate issuers. If attribute certificates
+ is verified the trusted AC issuers must be set.
+
+ The trustedACIssuers
must be a ISet
of
+ TrustAnchor
+
+ The given set is cloned.
+
+
+ @param trustedACIssuers The trusted AC issuers to set. Is never
+ null
.
+ @throws ClassCastException if an element of stores
is not
+ a TrustAnchor
.
+
+
+ Returns the necessary attributes which must be contained in an attribute
+ certificate.
+
+ The returned ISet
is immutable and contains
+ String
s with the OIDs.
+
+
+ @return Returns the necessary AC attributes.
+
+
+ Sets the necessary which must be contained in an attribute certificate.
+
+ The ISet
must contain String
s with the
+ OIDs.
+
+ The set is cloned.
+
+
+ @param necessaryACAttributes The necessary AC attributes to set.
+ @throws ClassCastException if an element of
+ necessaryACAttributes
is not a
+ String
.
+
+
+ Returns the attribute certificates which are not allowed.
+
+ The returned ISet
is immutable and contains
+ String
s with the OIDs.
+
+
+ @return Returns the prohibited AC attributes. Is never null
.
+
+
+ Sets the attribute certificates which are not allowed.
+
+ The ISet
must contain String
s with the
+ OIDs.
+
+ The set is cloned.
+
+
+ @param prohibitedACAttributes The prohibited AC attributes to set.
+ @throws ClassCastException if an element of
+ prohibitedACAttributes
is not a
+ String
.
+
+
+ Returns the attribute certificate checker. The returned set contains
+ {@link PKIXAttrCertChecker}s and is immutable.
+
+ @return Returns the attribute certificate checker. Is never
+ null
.
+
+
+ Sets the attribute certificate checkers.
+
+ All elements in the ISet
must a {@link PKIXAttrCertChecker}.
+
+
+ The given set is cloned.
+
+
+ @param attrCertCheckers The attribute certificate checkers to set. Is
+ never null
.
+ @throws ClassCastException if an element of attrCertCheckers
+ is not a PKIXAttrCertChecker
.
+
+
+
+ Summary description for PkixPolicyNode.
+
+
+
+ Constructors
+
+
+
+ This class helps to handle CRL revocation reasons mask. Each CRL handles a
+ certain set of revocation reasons.
+
+
+
+
+ Constructs are reason mask with the reasons.
+
+ The reasons.
+
+
+
+ A reason mask with no reason.
+
+
+
+
+ A mask with all revocation reasons.
+
+
+
+ Adds all reasons from the reasons mask to this mask.
+
+ @param mask The reasons mask to add.
+
+
+
+ Returns true
if this reasons mask contains all possible
+ reasons.
+
+ true if this reasons mask contains all possible reasons.
+
+
+
+
+ Intersects this mask with the given reasons mask.
+
+ mask The mask to intersect with.
+ The intersection of this and teh given mask.
+
+
+
+ Returns true if the passed reasons mask has new reasons.
+
+ The reasons mask which should be tested for new reasons.
+ true if the passed reasons mask has new reasons.
+
+
+
+ Returns the reasons in this mask.
+
+
+
+ If the complete CRL includes an issuing distribution point (IDP) CRL
+ extension check the following:
+
+ (i) If the distribution point name is present in the IDP CRL extension
+ and the distribution field is present in the DP, then verify that one of
+ the names in the IDP matches one of the names in the DP. If the
+ distribution point name is present in the IDP CRL extension and the
+ distribution field is omitted from the DP, then verify that one of the
+ names in the IDP matches one of the names in the cRLIssuer field of the
+ DP.
+
+
+ (ii) If the onlyContainsUserCerts boolean is asserted in the IDP CRL
+ extension, verify that the certificate does not include the basic
+ constraints extension with the cA boolean asserted.
+
+
+ (iii) If the onlyContainsCACerts boolean is asserted in the IDP CRL
+ extension, verify that the certificate includes the basic constraints
+ extension with the cA boolean asserted.
+
+
+ (iv) Verify that the onlyContainsAttributeCerts boolean is not asserted.
+
+
+ @param dp The distribution point.
+ @param cert The certificate.
+ @param crl The CRL.
+ @throws AnnotatedException if one of the conditions is not met or an error occurs.
+
+
+ If the DP includes cRLIssuer, then verify that the issuer field in the
+ complete CRL matches cRLIssuer in the DP and that the complete CRL
+ contains an
+ g distribution point extension with the indirectCRL
+ boolean asserted. Otherwise, verify that the CRL issuer matches the
+ certificate issuer.
+
+ @param dp The distribution point.
+ @param cert The certificate ot attribute certificate.
+ @param crl The CRL for cert
.
+ @throws AnnotatedException if one of the above conditions does not apply or an error
+ occurs.
+
+
+ Obtain and validate the certification path for the complete CRL issuer.
+ If a key usage extension is present in the CRL issuer's certificate,
+ verify that the cRLSign bit is set.
+
+ @param crl CRL which contains revocation information for the certificate
+ cert
.
+ @param cert The attribute certificate or certificate to check if it is
+ revoked.
+ @param defaultCRLSignCert The issuer certificate of the certificate cert
.
+ @param defaultCRLSignKey The public key of the issuer certificate
+ defaultCRLSignCert
.
+ @param paramsPKIX paramsPKIX PKIX parameters.
+ @param certPathCerts The certificates on the certification path.
+ @return A Set
with all keys of possible CRL issuer
+ certificates.
+ @throws AnnotatedException if the CRL is not valid or the status cannot be checked or
+ some error occurs.
+
+
+ Checks a distribution point for revocation information for the
+ certificate cert
.
+
+ @param dp The distribution point to consider.
+ @param paramsPKIX PKIX parameters.
+ @param cert Certificate to check if it is revoked.
+ @param validDate The date when the certificate revocation status should be
+ checked.
+ @param defaultCRLSignCert The issuer certificate of the certificate cert
.
+ @param defaultCRLSignKey The public key of the issuer certificate
+ defaultCRLSignCert
.
+ @param certStatus The current certificate revocation status.
+ @param reasonMask The reasons mask which is already checked.
+ @param certPathCerts The certificates of the certification path.
+ @throws AnnotatedException if the certificate is revoked or the status cannot be checked
+ or some error occurs.
+
+
+ Checks a certificate if it is revoked.
+
+ @param paramsPKIX PKIX parameters.
+ @param cert Certificate to check if it is revoked.
+ @param validDate The date when the certificate revocation status should be
+ checked.
+ @param sign The issuer certificate of the certificate cert
.
+ @param workingPublicKey The public key of the issuer certificate sign
.
+ @param certPathCerts The certificates of the certification path.
+ @throws AnnotatedException if the certificate is revoked or the status cannot be checked
+ or some error occurs.
+
+
+ If use-deltas is set, verify the issuer and scope of the delta CRL.
+
+ @param deltaCRL The delta CRL.
+ @param completeCRL The complete CRL.
+ @param pkixParams The PKIX paramaters.
+ @throws AnnotatedException if an exception occurs.
+
+
+ Checks if an attribute certificate is revoked.
+
+ @param attrCert Attribute certificate to check if it is revoked.
+ @param paramsPKIX PKIX parameters.
+ @param issuerCert The issuer certificate of the attribute certificate
+ attrCert
.
+ @param validDate The date when the certificate revocation status should
+ be checked.
+ @param certPathCerts The certificates of the certification path to be
+ checked.
+
+ @throws CertPathValidatorException if the certificate is revoked or the
+ status cannot be checked or some error occurs.
+
+
+ Searches for a holder public key certificate and verifies its
+ certification path.
+
+ @param attrCert the attribute certificate.
+ @param pkixParams The PKIX parameters.
+ @return The certificate path of the holder certificate.
+ @throws Exception if
+
+ - no public key certificate can be found although holder
+ information is given by an entity name or a base certificate
+ ID
+ - support classes cannot be created
+ - no certification path for the public key certificate can
+ be built
+
+
+
+
+ Checks a distribution point for revocation information for the
+ certificate attrCert
.
+
+ @param dp The distribution point to consider.
+ @param attrCert The attribute certificate which should be checked.
+ @param paramsPKIX PKIX parameters.
+ @param validDate The date when the certificate revocation status should
+ be checked.
+ @param issuerCert Certificate to check if it is revoked.
+ @param reasonMask The reasons mask which is already checked.
+ @param certPathCerts The certificates of the certification path to be
+ checked.
+ @throws Exception if the certificate is revoked or the status
+ cannot be checked or some error occurs.
+
+
+
+ A trust anchor or most-trusted Certification Authority (CA).
+
+ This class represents a "most-trusted CA", which is used as a trust anchor
+ for validating X.509 certification paths. A most-trusted CA includes the
+ public key of the CA, the CA's name, and any constraints upon the set of
+ paths which may be validated using this key. These parameters can be
+ specified in the form of a trusted X509Certificate or as individual
+ parameters.
+
+
+
+
+ Creates an instance of TrustAnchor with the specified X509Certificate and
+ optional name constraints, which are intended to be used as additional
+ constraints when validating an X.509 certification path.
+ The name constraints are specified as a byte array. This byte array
+ should contain the DER encoded form of the name constraints, as they
+ would appear in the NameConstraints structure defined in RFC 2459 and
+ X.509. The ASN.1 definition of this structure appears below.
+
+
+ NameConstraints ::= SEQUENCE {
+ permittedSubtrees [0] GeneralSubtrees OPTIONAL,
+ excludedSubtrees [1] GeneralSubtrees OPTIONAL }
+
+ GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree
+
+ GeneralSubtree ::= SEQUENCE {
+ base GeneralName,
+ minimum [0] BaseDistance DEFAULT 0,
+ maximum [1] BaseDistance OPTIONAL }
+
+ BaseDistance ::= INTEGER (0..MAX)
+
+ GeneralName ::= CHOICE {
+ otherName [0] OtherName,
+ rfc822Name [1] IA5String,
+ dNSName [2] IA5String,
+ x400Address [3] ORAddress,
+ directoryName [4] Name,
+ ediPartyName [5] EDIPartyName,
+ uniformResourceIdentifier [6] IA5String,
+ iPAddress [7] OCTET STRING,
+ registeredID [8] OBJECT IDENTIFIER}
+
+
+ Note that the name constraints byte array supplied is cloned to protect
+ against subsequent modifications.
+
+ a trusted X509Certificate
+ a byte array containing the ASN.1 DER encoding of a
+ NameConstraints extension to be used for checking name
+ constraints. Only the value of the extension is included, not
+ the OID or criticality flag. Specify null to omit the
+ parameter.
+ if the specified X509Certificate is null
+
+
+
+ Creates an instance of TrustAnchor where the
+ most-trusted CA is specified as an X500Principal and public key.
+
+
+
+ Name constraints are an optional parameter, and are intended to be used
+ as additional constraints when validating an X.509 certification path.
+
+ The name constraints are specified as a byte array. This byte array
+ contains the DER encoded form of the name constraints, as they
+ would appear in the NameConstraints structure defined in RFC 2459
+ and X.509. The ASN.1 notation for this structure is supplied in the
+ documentation for the other constructors.
+
+ Note that the name constraints byte array supplied here is cloned to
+ protect against subsequent modifications.
+
+
+ the name of the most-trusted CA as X509Name
+ the public key of the most-trusted CA
+
+ a byte array containing the ASN.1 DER encoding of a NameConstraints extension to
+ be used for checking name constraints. Only the value of the extension is included,
+ not the OID or criticality flag. Specify null to omit the parameter.
+
+
+ if caPrincipal or pubKey is null
+
+
+
+
+ Creates an instance of TrustAnchor
where the most-trusted
+ CA is specified as a distinguished name and public key. Name constraints
+ are an optional parameter, and are intended to be used as additional
+ constraints when validating an X.509 certification path.
+
+ The name constraints are specified as a byte array. This byte array
+ contains the DER encoded form of the name constraints, as they would
+ appear in the NameConstraints structure defined in RFC 2459 and X.509.
+
+ the X.500 distinguished name of the most-trusted CA in RFC
+ 2253 string format
+ the public key of the most-trusted CA
+ a byte array containing the ASN.1 DER encoding of a
+ NameConstraints extension to be used for checking name
+ constraints. Only the value of the extension is included, not
+ the OID or criticality flag. Specify null to omit the
+ parameter.
+ throws NullPointerException, IllegalArgumentException
+
+
+
+ Returns the most-trusted CA certificate.
+
+
+
+
+ Returns the name of the most-trusted CA as an X509Name.
+
+
+
+
+ Returns the name of the most-trusted CA in RFC 2253 string format.
+
+
+
+
+ Returns the public key of the most-trusted CA.
+
+
+
+
+ Decode the name constraints and clone them if not null.
+
+
+
+
+ Returns a formatted string describing the TrustAnchor
.
+
+ a formatted string describing the TrustAnchor
+
+
+ Recognised hash algorithms for the time stamp protocol.
+
+
+ Fetches the signature time-stamp attributes from a SignerInformation object.
+ Checks that the MessageImprint for each time-stamp matches the signature field.
+ (see RFC 3161 Appendix A).
+
+ @param signerInfo a SignerInformation to search for time-stamps
+ @return a collection of TimeStampToken objects
+ @throws TSPValidationException
+
+
+ Validate the passed in certificate as being of the correct type to be used
+ for time stamping. To be valid it must have an ExtendedKeyUsage extension
+ which has a key purpose identifier of id-kp-timeStamping.
+
+ @param cert the certificate of interest.
+ @throws TspValidationException if the certicate fails on one of the check points.
+
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Exception thrown if a TSP request or response fails to validate.
+
+ If a failure code is associated with the exception it can be retrieved using
+ the getFailureCode() method.
+
+
+ Return the failure code associated with this exception - if one is set.
+
+ @return the failure code if set, -1 otherwise.
+
+
+ Base class for an RFC 3161 Time Stamp Request.
+
+
+ Create a TimeStampRequest from the past in byte array.
+
+ @param req byte array containing the request.
+ @throws IOException if the request is malformed.
+
+
+ Create a TimeStampRequest from the past in input stream.
+
+ @param in input stream containing the request.
+ @throws IOException if the request is malformed.
+
+
+ Validate the timestamp request, checking the digest to see if it is of an
+ accepted type and whether it is of the correct length for the algorithm specified.
+
+ @param algorithms a set of string OIDS giving accepted algorithms.
+ @param policies if non-null a set of policies we are willing to sign under.
+ @param extensions if non-null a set of extensions we are willing to accept.
+ @throws TspException if the request is invalid, or processing fails.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Generator for RFC 3161 Time Stamp Request objects.
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ @throws IOException
+
+
+ add a given extension field for the standard extensions tag
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ @throws IOException
+
+
+ add a given extension field for the standard extensions tag
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+ Base class for an RFC 3161 Time Stamp Response object.
+
+
+ Create a TimeStampResponse from a byte array containing an ASN.1 encoding.
+
+ @param resp the byte array containing the encoded response.
+ @throws TspException if the response is malformed.
+ @throws IOException if the byte array doesn't represent an ASN.1 encoding.
+
+
+ Create a TimeStampResponse from an input stream containing an ASN.1 encoding.
+
+ @param input the input stream containing the encoded response.
+ @throws TspException if the response is malformed.
+ @throws IOException if the stream doesn't represent an ASN.1 encoding.
+
+
+ Check this response against to see if it a well formed response for
+ the passed in request. Validation will include checking the time stamp
+ token if the response status is GRANTED or GRANTED_WITH_MODS.
+
+ @param request the request to be checked against
+ @throws TspException if the request can not match this response.
+
+
+ return the ASN.1 encoded representation of this object.
+
+
+ Generator for RFC 3161 Time Stamp Responses.
+
+
+ Return an appropriate TimeStampResponse.
+
+ If genTime is null a timeNotAvailable error response will be returned.
+
+ @param request the request this response is for.
+ @param serialNumber serial number for the response token.
+ @param genTime generation time for the response token.
+ @param provider provider to use for signature calculation.
+ @return
+ @throws NoSuchAlgorithmException
+ @throws NoSuchProviderException
+ @throws TSPException
+
+
+
+ Generate a TimeStampResponse with chosen status and FailInfoField.
+
+ @param status the PKIStatus to set.
+ @param failInfoField the FailInfoField to set.
+ @param statusString an optional string describing the failure.
+ @return a TimeStampResponse with a failInfoField and optional statusString
+ @throws TSPException in case the response could not be created
+
+
+ Validate the time stamp token.
+
+ To be valid the token must be signed by the passed in certificate and
+ the certificate must be the one referred to by the SigningCertificate
+ attribute included in the hashed attributes of the token. The
+ certificate must also have the ExtendedKeyUsageExtension with only
+ KeyPurposeID.IdKPTimeStamping and have been valid at the time the
+ timestamp was created.
+
+
+ A successful call to validate means all the above are true.
+
+
+
+ Return the underlying CmsSignedData object.
+
+ @return the underlying CMS structure.
+
+
+ Return a ASN.1 encoded byte stream representing the encoded object.
+
+ @throws IOException if encoding fails.
+
+
+ basic creation - only the default attributes will be included here.
+
+
+ create with a signer with extra signed/unsigned attributes.
+
+
+ @return the nonce value, null if there isn't one.
+
+
+ General array utilities.
+
+
+
+ Are two arrays equal.
+
+ Left side.
+ Right side.
+ True if equal.
+
+
+
+ A constant time equals comparison - does not terminate early if
+ test will fail.
+
+ first array
+ second array
+ true if arrays equal, false otherwise.
+
+
+ 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.
+
+
+ BigInteger utilities.
+
+
+ Return the passed in value as an unsigned byte array.
+
+ @param value value to be converted.
+ @return a byte array without a leading zero byte if present in the signed encoding.
+
+
+ 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.
+
+
+ Return a random BigInteger not less than 'min' and not greater than 'max'
+
+ @param min the least value that may be generated
+ @param max the greatest value that may be generated
+ @param random the source of randomness
+ @return a random BigInteger value in the range [min,max]
+
+
+
+ Produce a copy of this object with its configuration and in its current state.
+
+
+ The returned object may be used simply to store the state, or may be used as a similar object
+ starting from the copied state.
+
+
+
+
+ Restore a copied object state into this object.
+
+
+ Implementations of this method should try to avoid or minimise memory allocation to perform the reset.
+
+ an object originally {@link #copy() copied} from an object of the same type as this instance.
+ if the provided object is not of the correct type.
+ if the other parameter is in some other way invalid.
+
+
+ Exception to be thrown on a failure to reset an object implementing Memoable.
+
+ The exception extends InvalidCastException to enable users to have a single handling case,
+ only introducing specific handling of this one if required.
+
+
+
+ Basic Constructor.
+
+ @param msg message to be associated with this exception.
+
+
+ General string utilities.
+
+
+
+ Return the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC) for a given DateTime value.
+
+ A UTC DateTime value not before epoch.
+ Number of whole milliseconds after epoch.
+ 'dateTime' is before epoch.
+
+
+
+ Create a DateTime value from the number of milliseconds since the Unix epoch (1 Jan., 1970 UTC).
+
+ Number of milliseconds since the epoch.
+ A UTC DateTime value
+
+
+
+ Return the current number of milliseconds since the Unix epoch (1 Jan., 1970 UTC).
+
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+ @return a byte array containing the base 64 encoded data.
+
+
+ encode the input data producing a base 64 encoded byte array.
+
+ @return a byte array containing the base 64 encoded data.
+
+
+ Encode the byte data to base 64 writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Encode the byte data to base 64 writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the base 64 encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ encode the input data producing a base 64 output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ A buffering class to allow translation from one format to another to
+ be done in discrete chunks.
+
+
+
+
+ Create a buffered Decoder.
+
+ The translater to use.
+ The size of the buffer.
+
+
+
+ Process one byte of data.
+
+ Data in.
+ Byte array for the output.
+ The offset in the output byte array to start writing from.
+ The amount of output bytes.
+
+
+
+ Process data from a byte array.
+
+ The input data.
+ Start position within input data array.
+ Amount of data to process from input data array.
+ Array to store output.
+ Position in output array to start writing from.
+ The amount of output bytes.
+
+
+
+ A class that allows encoding of data using a specific encoder to be processed in chunks.
+
+
+
+
+ Create.
+
+ The translator to use.
+ Size of the chunks.
+
+
+
+ Process one byte of data.
+
+ The byte.
+ An array to store output in.
+ Offset within output array to start writing from.
+
+
+
+
+ Process data from a byte array.
+
+ Input data Byte array containing data to be processed.
+ Start position within input data array.
+ Amount of input data to be processed.
+ Output data array.
+ Offset within output data array to start writing to.
+ The amount of data written.
+
+
+
+ Class to decode and encode Hex.
+
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ encode the input data producing a Hex encoded byte array.
+
+ @return a byte array containing the Hex encoded data.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Hex encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded input data. It is assumed the input data is valid.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ encode the input data producing a Hex output stream.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the Hex encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+
+ A hex translator.
+
+
+
+
+ Return encoded block size.
+
+ 2
+
+
+
+ Encode some data.
+
+ Input data array.
+ Start position within input data array.
+ The amount of data to process.
+ The output data array.
+ The offset within the output data array to start writing from.
+ Amount of data encoded.
+
+
+
+ Returns the decoded block size.
+
+ 1
+
+
+
+ Decode data from a byte array.
+
+ The input data array.
+ Start position within input data array.
+ The amounty of data to process.
+ The output data array.
+ The position within the output data array to start writing from.
+ The amount of data written.
+
+
+ Encode and decode byte arrays (typically from binary to 7-bit ASCII
+ encodings).
+
+
+
+ Translator interface.
+
+
+
+ Convert binary data to and from UrlBase64 encoding. This is identical to
+ Base64 encoding, except that the padding character is "." and the other
+ non-alphanumeric characters are "-" and "_" instead of "+" and "/".
+
+ The purpose of UrlBase64 encoding is to provide a compact encoding of binary
+ data that is safe for use as an URL parameter. Base64 encoding does not
+ produce encoded values that are safe for use in URLs, since "/" can be
+ interpreted as a path delimiter; "+" is the encoded form of a space; and
+ "=" is used to separate a name from the corresponding value in an URL
+ parameter.
+
+
+
+ Encode the input data producing a URL safe base 64 encoded byte array.
+
+ @return a byte array containing the URL safe base 64 encoded data.
+
+
+ Encode the byte data writing it to the given output stream.
+
+ @return the number of bytes produced.
+
+
+ Decode the URL safe base 64 encoded input data - white space will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ decode the URL safe base 64 encoded byte data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ decode the URL safe base 64 encoded string data - whitespace will be ignored.
+
+ @return a byte array representing the decoded data.
+
+
+ Decode the URL safe base 64 encoded string data writing it to the given output stream,
+ whitespace characters will be ignored.
+
+ @return the number of bytes produced.
+
+
+ Convert binary data to and from UrlBase64 encoding. This is identical to
+ Base64 encoding, except that the padding character is "." and the other
+ non-alphanumeric characters are "-" and "_" instead of "+" and "/".
+
+ The purpose of UrlBase64 encoding is to provide a compact encoding of binary
+ data that is safe for use as an URL parameter. Base64 encoding does not
+ produce encoded values that are safe for use in URLs, since "/" can be
+ interpreted as a path delimiter; "+" is the encoded form of a space; and
+ "=" is used to separate a name from the corresponding value in an URL
+ parameter.
+
+
+
+
+ Pipe all bytes from inStr to outStr, throwing StreamFlowException if greater
+ than limit bytes in inStr.
+
+
+ A
+
+
+ A
+
+
+ A
+
+ The number of bytes actually transferred, if not greater than limit
+
+
+
+
+ A
+
+
+
+
+
+ A
+
+
+ A
+
+
+
+
+
+ A
+
+
+
+
+ A generic PEM writer, based on RFC 1421
+
+
+ Base constructor.
+
+ @param out output stream to use.
+
+
+ Return the number of bytes or characters required to contain the
+ passed in object if it is PEM encoded.
+
+ @param obj pem object to be output
+ @return an estimate of the number of bytes
+
+
+ Validate the given IPv4 or IPv6 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid address, false otherwise
+
+
+ Validate the given IPv4 or IPv6 address and netmask.
+
+ @param address the IP address as a string.
+
+ @return true if a valid address with netmask, false otherwise
+
+
+ Validate the given IPv4 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid IPv4 address, false otherwise
+
+
+ Validate the given IPv6 address.
+
+ @param address the IP address as a string.
+
+ @return true if a valid IPv4 address, false otherwise
+
+
+
+ Summary description for DeflaterOutputStream.
+
+
+
+
+ Summary description for DeflaterOutputStream.
+
+
+
+
+ The Holder object.
+
+ Holder ::= SEQUENCE {
+ baseCertificateID [0] IssuerSerial OPTIONAL,
+ -- the issuer and serial number of
+ -- the holder's Public Key Certificate
+ entityName [1] GeneralNames OPTIONAL,
+ -- the name of the claimant or role
+ objectDigestInfo [2] ObjectDigestInfo OPTIONAL
+ -- used to directly authenticate the holder,
+ -- for example, an executable
+ }
+
+
+
+
+ Constructs a holder for v2 attribute certificates with a hash value for
+ some type of object.
+
+ digestedObjectType
can be one of the following:
+
+ - 0 - publicKey - A hash of the public key of the holder must be
+ passed.
+ - 1 - publicKeyCert - A hash of the public key certificate of the
+ holder must be passed.
+ - 2 - otherObjectDigest - A hash of some other object type must be
+ passed.
otherObjectTypeID
must not be empty.
+
+
+ This cannot be used if a v1 attribute certificate is used.
+
+ @param digestedObjectType The digest object type.
+ @param digestAlgorithm The algorithm identifier for the hash.
+ @param otherObjectTypeID The object type ID if
+ digestedObjectType
is
+ otherObjectDigest
.
+ @param objectDigest The hash value.
+
+
+ Returns the digest object type if an object digest info is used.
+
+
+ - 0 - publicKey - A hash of the public key of the holder must be
+ passed.
+ - 1 - publicKeyCert - A hash of the public key certificate of the
+ holder must be passed.
+ - 2 - otherObjectDigest - A hash of some other object type must be
+ passed.
otherObjectTypeID
must not be empty.
+
+
+
+ @return The digest object type or -1 if no object digest info is set.
+
+
+ Returns the other object type ID if an object digest info is used.
+
+ @return The other object type ID or null
if no object
+ digest info is set.
+
+
+ Returns the hash if an object digest info is used.
+
+ @return The hash or null
if no object digest info is set.
+
+
+ Returns the digest algorithm ID if an object digest info is used.
+
+ @return The digest algorithm ID or null
if no object
+ digest info is set.
+
+
+ Return any principal objects inside the attribute certificate holder entity names field.
+
+ @return an array of IPrincipal objects (usually X509Name), null if no entity names field is set.
+
+
+ Return the principals associated with the issuer attached to this holder
+
+ @return an array of principals, null if no BaseCertificateID is set.
+
+
+ Return the serial number associated with the issuer attached to this holder.
+
+ @return the certificate serial number, null if no BaseCertificateID is set.
+
+
+ Carrying class for an attribute certificate issuer.
+
+
+ Set the issuer directly with the ASN.1 structure.
+
+ @param issuer The issuer
+
+
+ Return any principal objects inside the attribute certificate issuer object.
+ An array of IPrincipal objects (usually X509Principal).
+
+
+ Interface for an X.509 Attribute Certificate.
+
+
+ The version number for the certificate.
+
+
+ The serial number for the certificate.
+
+
+ The UTC DateTime before which the certificate is not valid.
+
+
+ The UTC DateTime after which the certificate is not valid.
+
+
+ The holder of the certificate.
+
+
+ The issuer details for the certificate.
+
+
+ Return the attributes contained in the attribute block in the certificate.
+ An array of attributes.
+
+
+ Return the attributes with the same type as the passed in oid.
+ The object identifier we wish to match.
+ An array of matched attributes, null if there is no match.
+
+
+ Return an ASN.1 encoded byte array representing the attribute certificate.
+ An ASN.1 encoded byte array.
+ If the certificate cannot be encoded.
+
+
+
+ Get all critical extension values, by oid
+
+ IDictionary with string (OID) keys and Asn1OctetString values
+
+
+
+ Get all non-critical extension values, by oid
+
+ IDictionary with string (OID) keys and Asn1OctetString values
+
+
+
+ A utility class that will extract X509Principal objects from X.509 certificates.
+
+ Use this in preference to trying to recreate a principal from a string, not all
+ DNs are what they should be, so it's best to leave them encoded where they
+ can be.
+
+
+
+ Return the issuer of the given cert as an X509Principal.
+
+
+ Return the subject of the given cert as an X509Principal.
+
+
+ Return the issuer of the given CRL as an X509Principal.
+
+
+
+ A factory to produce Public Key Info Objects.
+
+
+
+
+ Create a Subject Public Key Info object for a given public key.
+
+ One of ElGammalPublicKeyParameters, DSAPublicKeyParameter, DHPublicKeyParameters, RsaKeyParameters or ECPublicKeyParameters
+ A subject public key info object.
+ Throw exception if object provided is not one of the above.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate object and initializes it with the data
+ read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the certificates
+ read from the given input stream inStream.
+
+
+ Class for carrying the values in an X.509 Attribute.
+
+
+ @param at an object representing an attribute.
+
+
+ Create an X.509 Attribute with the type given by the passed in oid and
+ the value represented by an ASN.1 Set containing value.
+
+ @param oid type of the attribute
+ @param value value object to go into the atribute's value set.
+
+
+ Create an X.59 Attribute with the type given by the passed in oid and the
+ value represented by an ASN.1 Set containing the objects in value.
+
+ @param oid type of the attribute
+ @param value vector of values to go in the attribute's value set.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ An Object representing an X509 Certificate.
+ Has static methods for loading Certificates encoded in many forms that return X509Certificate Objects.
+
+
+
+
+ Return true if the current time is within the start and end times nominated on the certificate.
+
+ true id certificate is valid for the current time.
+
+
+
+ Return true if the nominated time is within the start and end times nominated on the certificate.
+
+ The time to test validity against.
+ True if certificate is valid for nominated time.
+
+
+
+ Checks if the current date is within certificate's validity period.
+
+
+
+
+ Checks if the given date is within certificate's validity period.
+
+ if the certificate is expired by given date
+ if the certificate is not yet valid on given date
+
+
+
+ Return the certificate's version.
+
+ An integer whose value Equals the version of the cerficate.
+
+
+
+ Return a BigInteger containing the serial number.
+
+ The Serial number.
+
+
+
+ Get the Issuer Distinguished Name. (Who signed the certificate.)
+
+ And X509Object containing name and value pairs.
+
+
+
+ Get the subject of this certificate.
+
+ An X509Name object containing name and value pairs.
+
+
+
+ The time that this certificate is valid from.
+
+ A DateTime object representing that time in the local time zone.
+
+
+
+ The time that this certificate is valid up to.
+
+ A DateTime object representing that time in the local time zone.
+
+
+
+ Return the Der encoded TbsCertificate data.
+ This is the certificate component less the signature.
+ To Get the whole certificate call the GetEncoded() member.
+
+ A byte array containing the Der encoded Certificate component.
+
+
+
+ The signature.
+
+ A byte array containg the signature of the certificate.
+
+
+
+ A meaningful version of the Signature Algorithm. (EG SHA1WITHRSA)
+
+ A sting representing the signature algorithm.
+
+
+
+ Get the Signature Algorithms Object ID.
+
+ A string containg a '.' separated object id.
+
+
+
+ Get the signature algorithms parameters. (EG DSA Parameters)
+
+ A byte array containing the Der encoded version of the parameters or null if there are none.
+
+
+
+ Get the issuers UID.
+
+ A DerBitString.
+
+
+
+ Get the subjects UID.
+
+ A DerBitString.
+
+
+
+ Get a key usage guidlines.
+
+
+
+
+ Get the public key of the subject of the certificate.
+
+ The public key parameters.
+
+
+
+ Return a Der encoded version of this certificate.
+
+ A byte array.
+
+
+
+ Verify the certificate's signature using the nominated public key.
+
+ An appropriate public key parameter object, RsaPublicKeyParameters, DsaPublicKeyParameters or ECDsaPublicKeyParameters
+ True if the signature is valid.
+ If key submitted is not of the above nominated types.
+
+
+
+ Verify the certificate's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the certificate's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the certificate algorithm is invalid.
+
+
+
+ This class contains a cross certificate pair. Cross certificates pairs may
+ contain two cross signed certificates from two CAs. A certificate from the
+ other CA to this CA is contained in the forward certificate, the certificate
+ from this CA to the other CA is contained in the reverse certificate.
+
+
+
+ Constructor
+ Certificate from the other CA to this CA.
+ Certificate from this CA to the other CA.
+
+
+ Constructor from a ASN.1 CertificatePair structure.
+ The CertificatePair ASN.1 object.
+
+
+ Returns the certificate from the other CA to this CA.
+
+
+ Returns the certificate from this CA to the other CA.
+
+
+ class for dealing with X509 certificates.
+
+ At the moment this will deal with "-----BEGIN CERTIFICATE-----" to "-----END CERTIFICATE-----"
+ base 64 encoded certs, as well as the BER binaries of certificates and some classes of PKCS#7
+ objects.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate object and initializes it with the data
+ read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the certificates
+ read from the given input stream inStream.
+
+
+ The following extensions are listed in RFC 2459 as relevant to CRLs
+
+ Authority Key Identifier
+ Issuer Alternative Name
+ CRL Number
+ Delta CRL Indicator (critical)
+ Issuing Distribution Point (critical)
+
+
+
+ Verify the CRL's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the CRL's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the CRL algorithm is invalid.
+
+
+ Returns a string representation of this CRL.
+
+ @return a string representation of this CRL.
+
+
+ Checks whether the given certificate is on this CRL.
+
+ @param cert the certificate to check for.
+ @return true if the given certificate is on this CRL,
+ false otherwise.
+
+
+ The following extensions are listed in RFC 2459 as relevant to CRL Entries
+
+ ReasonCode Hode Instruction Code Invalidity Date Certificate Issuer
+ (critical)
+
+
+ Constructor for CRLEntries of indirect CRLs. If isIndirect
+ is false
{@link #getCertificateIssuer()} will always
+ return null
, previousCertificateIssuer
is
+ ignored. If this isIndirect
is specified and this CrlEntry
+ has no certificate issuer CRL entry extension
+ previousCertificateIssuer
is returned by
+ {@link #getCertificateIssuer()}.
+
+ @param c
+ TbsCertificateList.CrlEntry object.
+ @param isIndirect
+ true
if the corresponding CRL is a indirect
+ CRL.
+ @param previousCertificateIssuer
+ Certificate issuer of the previous CrlEntry.
+
+
+
+ Create loading data from byte array.
+
+
+
+
+
+ Create loading data from byte array.
+
+
+
+
+ Generates a certificate revocation list (CRL) object and initializes
+ it with the data read from the input stream inStream.
+
+
+ Returns a (possibly empty) collection view of the CRLs read from
+ the given input stream inStream.
+
+ The inStream may contain a sequence of DER-encoded CRLs, or
+ a PKCS#7 CRL set. This is a PKCS#7 SignedData object, with the
+ only significant field being crls. In particular the signature
+ and the contents are ignored.
+
+
+
+ Get non critical extensions.
+
+ A set of non critical extension oids.
+
+
+
+ Get any critical extensions.
+
+ A sorted list of critical entension.
+
+
+
+ Get the value of a given extension.
+
+ The object ID of the extension.
+ An Asn1OctetString object if that extension is found or null if not.
+
+
+ A holding class for constructing an X509 Key Usage extension.
+
+
+ id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 }
+
+ KeyUsage ::= BIT STRING {
+ digitalSignature (0),
+ nonRepudiation (1),
+ keyEncipherment (2),
+ dataEncipherment (3),
+ keyAgreement (4),
+ keyCertSign (5),
+ cRLSign (6),
+ encipherOnly (7),
+ decipherOnly (8) }
+
+
+
+ Basic constructor.
+
+ @param usage - the bitwise OR of the Key Usage flags giving the
+ allowed uses for the key.
+ e.g. (X509KeyUsage.keyEncipherment | X509KeyUsage.dataEncipherment)
+
+
+ Return the digest algorithm using one of the standard JCA string
+ representations rather than the algorithm identifier (if possible).
+
+
+
+ Class to Generate X509V1 Certificates.
+
+
+
+
+ Default Constructor.
+
+
+
+
+ Reset the generator.
+
+
+
+
+ Set the certificate's serial number.
+
+ Make serial numbers long, if you have no serial number policy make sure the number is at least 16 bytes of secure random data.
+ You will be surprised how ugly a serial number collision can get.
+ The serial number.
+
+
+
+ Set the issuer distinguished name.
+ The issuer is the entity whose private key is used to sign the certificate.
+
+ The issuers DN.
+
+
+
+ Set the date that this certificate is to be valid from.
+
+
+
+
+
+ Set the date after which this certificate will no longer be valid.
+
+
+
+
+
+ Set the subject distinguished name.
+ The subject describes the entity associated with the public key.
+
+
+
+
+
+ Set the public key that this certificate identifies.
+
+
+
+
+
+ Set the signature algorithm that will be used to sign this certificate.
+ This can be either a name or an OID, names are treated as case insensitive.
+
+ string representation of the algorithm name
+
+
+
+ Generate a new X509Certificate.
+
+ The private key of the issuer used to sign this certificate.
+ An X509Certificate.
+
+
+
+ Generate a new X509Certificate specifying a SecureRandom instance that you would like to use.
+
+ The private key of the issuer used to sign this certificate.
+ The Secure Random you want to use.
+ An X509Certificate.
+
+
+
+ Generate a new X509Certificate using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An X509Certificate.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ An implementation of a version 2 X.509 Attribute Certificate.
+
+
+
+ Verify the certificate's signature using a verifier created using the passed in verifier provider.
+
+ An appropriate provider for verifying the certificate's signature.
+ True if the signature is valid.
+ If verifier provider is not appropriate or the certificate algorithm is invalid.
+
+
+ Class to produce an X.509 Version 2 AttributeCertificate.
+
+
+ Reset the generator
+
+
+ Set the Holder of this Attribute Certificate.
+
+
+ Set the issuer.
+
+
+ Set the serial number for the certificate.
+
+
+
+ Set the signature algorithm. This can be either a name or an OID, names
+ are treated as case insensitive.
+
+ The algorithm name.
+
+
+ Add an attribute.
+
+
+ Add a given extension field for the standard extensions tag.
+
+
+
+ Add a given extension field for the standard extensions tag.
+ The value parameter becomes the contents of the octet string associated
+ with the extension.
+
+
+
+
+ Generate an X509 certificate, based on the current issuer and subject.
+
+
+
+
+ Generate an X509 certificate, based on the current issuer and subject,
+ using the supplied source of randomness, if required.
+
+
+
+
+ Generate a new X.509 Attribute Certificate using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An IX509AttributeCertificate.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ class to produce an X.509 Version 2 CRL.
+
+
+ reset the generator
+
+
+ Set the issuer distinguished name - the issuer is the entity whose private key is used to sign the
+ certificate.
+
+
+ Reason being as indicated by CrlReason, i.e. CrlReason.KeyCompromise
+ or 0 if CrlReason is not to be used
+
+
+
+ Add a CRL entry with an Invalidity Date extension as well as a CrlReason extension.
+ Reason being as indicated by CrlReason, i.e. CrlReason.KeyCompromise
+ or 0 if CrlReason is not to be used
+
+
+
+ Add a CRL entry with extensions.
+
+
+
+ Add the CRLEntry objects contained in a previous CRL.
+
+ @param other the X509Crl to source the other entries from.
+
+
+
+ Set the signature algorithm that will be used to sign this CRL.
+
+
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+ add a given extension field for the standard extensions tag (tag 0)
+
+
+
+ Generate an X.509 CRL, based on the current issuer and subject.
+
+ The private key of the issuer that is signing this certificate.
+ An X509Crl.
+
+
+
+ Generate an X.509 CRL, based on the current issuer and subject using the specified secure random.
+
+ The private key of the issuer that is signing this certificate.
+ Your Secure Random instance.
+ An X509Crl.
+
+
+
+ Generate a new X509Crl using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An X509Crl.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+
+ A class to Generate Version 3 X509Certificates.
+
+
+
+
+ Reset the Generator.
+
+
+
+
+ Set the certificate's serial number.
+
+ Make serial numbers long, if you have no serial number policy make sure the number is at least 16 bytes of secure random data.
+ You will be surprised how ugly a serial number collision can Get.
+ The serial number.
+
+
+
+ Set the distinguished name of the issuer.
+ The issuer is the entity which is signing the certificate.
+
+ The issuer's DN.
+
+
+
+ Set the date that this certificate is to be valid from.
+
+
+
+
+
+ Set the date after which this certificate will no longer be valid.
+
+
+
+
+
+ Set the DN of the entity that this certificate is about.
+
+
+
+
+
+ Set the public key that this certificate identifies.
+
+
+
+
+
+ Set the signature algorithm that will be used to sign this certificate.
+
+
+
+
+
+ Set the subject unique ID - note: it is very rare that it is correct to do this.
+
+
+
+
+
+ Set the issuer unique ID - note: it is very rare that it is correct to do this.
+
+
+
+
+
+ Add a given extension field for the standard extensions tag (tag 3).
+
+ string containing a dotted decimal Object Identifier.
+ Is it critical.
+ The value.
+
+
+
+ Add an extension to this certificate.
+
+ Its Object Identifier.
+ Is it critical.
+ The value.
+
+
+
+ Add an extension using a string with a dotted decimal OID.
+
+ string containing a dotted decimal Object Identifier.
+ Is it critical.
+ byte[] containing the value of this extension.
+
+
+
+ Add an extension to this certificate.
+
+ Its Object Identifier.
+ Is it critical.
+ byte[] containing the value of this extension.
+
+
+
+ Add a given extension field for the standard extensions tag (tag 3),
+ copying the extension value from another certificate.
+
+
+
+ add a given extension field for the standard extensions tag (tag 3)
+ copying the extension value from another certificate.
+ @throws CertificateParsingException if the extension cannot be extracted.
+
+
+
+ Generate an X509Certificate.
+
+ The private key of the issuer that is signing this certificate.
+ An X509Certificate.
+
+
+
+ Generate an X509Certificate using your own SecureRandom.
+
+ The private key of the issuer that is signing this certificate.
+ You Secure Random instance.
+ An X509Certificate.
+
+
+
+ Generate a new X509Certificate using the passed in SignatureCalculator.
+
+ A signature calculator factory with the necessary algorithm details.
+ An X509Certificate.
+
+
+
+ Allows enumeration of the signature names supported by the generator.
+
+
+
+ A high level authority key identifier.
+
+
+ Constructor which will take the byte[] returned from getExtensionValue()
+
+ @param encodedValue a DER octet encoded string with the extension structure in it.
+ @throws IOException on parsing errors.
+
+
+ Create an AuthorityKeyIdentifier using the passed in certificate's public
+ key, issuer and serial number.
+
+ @param certificate the certificate providing the information.
+ @throws CertificateParsingException if there is a problem processing the certificate
+
+
+ Create an AuthorityKeyIdentifier using just the hash of the
+ public key.
+
+ @param pubKey the key to generate the hash from.
+ @throws InvalidKeyException if there is a problem using the key.
+
+
+ A high level subject key identifier.
+
+
+ Constructor which will take the byte[] returned from getExtensionValue()
+
+ @param encodedValue a DER octet encoded string with the extension structure in it.
+ @throws IOException on parsing errors.
+
+
+ This class is an Selector
like implementation to select
+ attribute certificates from a given set of criteria.
+
+ @see org.bouncycastle.x509.X509AttributeCertificate
+ @see org.bouncycastle.x509.X509Store
+
+
+
+ Decides if the given attribute certificate should be selected.
+
+ The attribute certificate to be checked.
+ true
if the object matches this selector.
+
+
+ The attribute certificate which must be matched.
+ If null is given, any will do.
+
+
+ The criteria for validity
+ If null is given any will do.
+
+
+ The holder.
+ If null is given any will do.
+
+
+ The issuer.
+ If null is given any will do.
+
+
+ The serial number.
+ If null is given any will do.
+
+
+ Adds a target name criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target names.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name The name as a GeneralName (not null
)
+
+
+ Adds a target name criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target names.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name a byte array containing the name in ASN.1 DER encoded form of a GeneralName
+ @throws IOException if a parsing error occurs.
+
+
+ Adds a collection with target names criteria. If null
is
+ given any will do.
+
+ The collection consists of either GeneralName objects or byte[] arrays representing
+ DER encoded GeneralName structures.
+
+
+ @param names A collection of target names.
+ @throws IOException if a parsing error occurs.
+ @see #AddTargetName(byte[])
+ @see #AddTargetName(GeneralName)
+
+
+ Gets the target names. The collection consists of List
s
+ made up of an Integer
in the first entry and a DER encoded
+ byte array or a String
in the second entry.
+ The returned collection is immutable.
+
+ @return The collection of target names
+ @see #setTargetNames(Collection)
+
+
+ Adds a target group criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target groups.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param group The group as GeneralName form (not null
)
+
+
+ Adds a target group criterion for the attribute certificate to the target
+ information extension criteria. The X509AttributeCertificate
+ must contain at least one of the specified target groups.
+
+ Each attribute certificate may contain a target information extension
+ limiting the servers where this attribute certificate can be used. If
+ this extension is not present, the attribute certificate is not targeted
+ and may be accepted by any server.
+
+
+ @param name a byte array containing the group in ASN.1 DER encoded form of a GeneralName
+ @throws IOException if a parsing error occurs.
+
+
+ Adds a collection with target groups criteria. If null
is
+ given any will do.
+
+ The collection consists of GeneralName
objects or byte[]
+ representing DER encoded GeneralNames.
+
+
+ @param names A collection of target groups.
+ @throws IOException if a parsing error occurs.
+ @see #AddTargetGroup(byte[])
+ @see #AddTargetGroup(GeneralName)
+
+
+ Gets the target groups. The collection consists of List
s
+ made up of an Integer
in the first entry and a DER encoded
+ byte array or a String
in the second entry.
+ The returned collection is immutable.
+
+ @return The collection of target groups.
+ @see #setTargetGroups(Collection)
+
+
+
+ This class is an IX509Selector
implementation to select
+ certificate pairs, which are e.g. used for cross certificates. The set of
+ criteria is given from two X509CertStoreSelector
objects,
+ each of which, if present, must match the respective component of a pair.
+
+
+
+ The certificate pair which is used for testing on equality.
+
+
+ The certificate selector for the forward part.
+
+
+ The certificate selector for the reverse part.
+
+
+
+ Decides if the given certificate pair should be selected. If
+ obj is not a X509CertificatePair
, this method
+ returns false
.
+
+ The X509CertificatePair
to be tested.
+ true
if the object matches this selector.
+
+
+
+ An ISet
of DerObjectIdentifier
objects.
+
+
+
+ A simple collection backed store.
+
+
+ Basic constructor.
+
+ @param collection - initial contents for the store, this is copied.
+
+
+ Return the matches in the collection for the passed in selector.
+
+ @param selector the selector to match against.
+ @return a possibly empty collection of matching objects.
+
+
+ This class contains a collection for collection based X509Store
s.
+
+
+
+ Constructor.
+
+ The collection is copied.
+
+
+ The collection containing X.509 object types.
+ If collection is null.
+
+
+ Returns a copy of the ICollection
.
+
+
+ Returns a formatted string describing the parameters.
+
+
+
+ An ICollection
of X509Name
objects
+
+
+
+ The attribute certificate being checked. This is not a criterion.
+ Rather, it is optional information that may help a {@link X509Store} find
+ CRLs that would be relevant when checking revocation for the specified
+ attribute certificate. If null
is specified, then no such
+ optional information is provided.
+
+ @param attrCert the IX509AttributeCertificate
being checked (or
+ null
)
+ @see #getAttrCertificateChecking()
+
+
+ If true
only complete CRLs are returned. Defaults to
+ false
.
+
+ @return true
if only complete CRLs are returned.
+
+
+ Returns if this selector must match CRLs with the delta CRL indicator
+ extension set. Defaults to false
.
+
+ @return Returns true
if only CRLs with the delta CRL
+ indicator extension are selected.
+
+
+ The issuing distribution point.
+
+ The issuing distribution point extension is a CRL extension which
+ identifies the scope and the distribution point of a CRL. The scope
+ contains among others information about revocation reasons contained in
+ the CRL. Delta CRLs and complete CRLs must have matching issuing
+ distribution points.
+
+ The byte array is cloned to protect against subsequent modifications.
+
+ You must also enable or disable this criteria with
+ {@link #setIssuingDistributionPointEnabled(bool)}.
+
+ @param issuingDistributionPoint The issuing distribution point to set.
+ This is the DER encoded OCTET STRING extension value.
+ @see #getIssuingDistributionPoint()
+
+
+ Whether the issuing distribution point criteria should be applied.
+ Defaults to false
.
+
+ You may also set the issuing distribution point criteria if not a missing
+ issuing distribution point should be assumed.
+
+ @return Returns if the issuing distribution point check is enabled.
+
+
+ The maximum base CRL number. Defaults to null
.
+
+ @return Returns the maximum base CRL number.
+ @see #setMaxBaseCRLNumber(BigInteger)
+
+
+
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.dll
new file mode 100644
index 00000000..4b237405
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.dll.config b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.dll.config
new file mode 100644
index 00000000..bd80214e
--- /dev/null
+++ b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.dll.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.pdb
new file mode 100644
index 00000000..c82f6fda
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/MimeKit.dll b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/MimeKit.dll
new file mode 100644
index 00000000..8a58db8f
Binary files /dev/null and b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/MimeKit.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/MimeKit.xml b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/MimeKit.xml
new file mode 100644
index 00000000..8fc68d18
--- /dev/null
+++ b/Src/Exchange.DkimSigner/bin/Exchange 2016 CU1/MimeKit.xml
@@ -0,0 +1,38398 @@
+
+
+
+ MimeKit
+
+
+
+
+ A MIME part with a Content-Type of application/pgp-encrypted.
+
+
+ An application/pgp-encrypted part will typically be the first child of
+ a part and contains only a Version
+ header.
+
+
+
+
+ Initializes a new instance of the
+ class based on the .
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME part with a Content-Type of application/pgp-encrypted
+ and content matching "Version: 1\n".
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A MIME part with a Content-Type of application/pgp-signature.
+
+
+ An application/pgp-signature part contains detatched pgp signature data
+ and is typically contained within a part.
+ To verify the signature, use the
+ method on the parent multipart/signed part.
+
+
+
+
+ Initializes a new instance of the
+ class based on the .
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with a Content-Type of application/pgp-signature.
+
+
+ Creates a new MIME part with a Content-Type of application/pgp-signature
+ and the as its content.
+
+ The content stream.
+
+ is null.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ An S/MIME part with a Content-Type of application/pkcs7-mime.
+
+
+ An application/pkcs7-mime is an S/MIME part and may contain encrypted,
+ signed or compressed data (or any combination of the above).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME part with a Content-Type of application/pkcs7-mime
+ and the as its content.
+ Unless you are writing your own pkcs7 implementation, you'll probably
+ want to use the ,
+ , and/or
+ method to create new instances
+ of this class.
+
+ The S/MIME type.
+ The content stream.
+
+ is null.
+
+
+ is not a valid value.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Gets the value of the "smime-type" parameter.
+
+
+ Gets the value of the "smime-type" parameter.
+
+ The value of the "smime-type" parameter.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Decompresses the content.
+
+
+ Decompresses the content using the specified .
+
+ The decompressed .
+ The S/MIME context to use for decompressing.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "compressed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decompresses the content.
+
+
+ Decompresses the content using the default .
+
+ The decompressed .
+
+ The "smime-type" parameter on the Content-Type header is not "compressed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypts the content.
+
+
+ Decrypts the content using the specified .
+
+ The decrypted .
+ The S/MIME context to use for decrypting.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "enveloped-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypts the content.
+
+
+ Decrypts the content using the default .
+
+ The decrypted .
+
+ The "smime-type" parameter on the Content-Type header is not "certs-only".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports the certificates contained in the content.
+
+
+ Imports the certificates contained in the content.
+
+ The S/MIME context to import certificates into.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "certs-only".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+ The list of digital signatures.
+ The S/MIME context to use for verifying the signature.
+ The unencapsulated entity.
+
+ is null.
+
+
+ The "smime-type" parameter on the Content-Type header is not "signed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+
+ Verifies the signed-data and returns the unencapsulated .
+
+ The list of digital signatures.
+ The unencapsulated entity.
+
+ The "smime-type" parameter on the Content-Type header is not "signed-data".
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Compresses the specified entity.
+
+
+ Compresses the specified entity using the specified .
+ Most mail clients, even among those that support S/MIME,
+ do not support compression.
+
+ The compressed entity.
+ The S/MIME context to use for compressing.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Compresses the specified entity.
+
+
+ Compresses the specified entity using the default .
+ Most mail clients, even among those that support S/MIME,
+ do not support compression.
+
+ The compressed entity.
+ The entity.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the supplied .
+
+ The encrypted entity.
+ The S/MIME context to use for encrypting.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the default .
+
+ The encrypted entity.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the supplied .
+
+ The encrypted entity.
+ The S/MIME context to use for encrypting.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ Valid certificates could not be found for one or more of the .
+
+
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified entity.
+
+
+ Encrypts the entity to the specified recipients using the default .
+
+ The encrypted entity.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ Valid certificates could not be found for one or more of the .
+
+
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer and .
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The S/MIME context to use for signing.
+ The signer.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer.
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The signer.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer, digest algorithm and .
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The S/MIME context to use for signing.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm.
+ For better interoperability with other mail clients, you should use
+
+ instead as the multipart/signed format is supported among a much larger
+ subset of mail client software.
+
+ The signed entity.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The S/MIME context to use for signing and encrypting.
+ The signer.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The signer.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The S/MIME context to use for signing and encrypting.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+ -or-
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encrypts the specified entity.
+
+
+ Cryptographically signs entity using the supplied signer and then
+ encrypts the result to the specified recipients.
+
+ The signed and encrypted entity.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The entity.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A signing certificate could not be found for .
+ -or-
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ An S/MIME part with a Content-Type of application/pkcs7-signature.
+
+
+ An application/pkcs7-signature part contains detatched pkcs7 signature data
+ and is typically contained within a part.
+ To verify the signature, use the
+ method on the parent multipart/signed part.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with a Content-Type of application/pkcs7-signature.
+
+
+ Creates a new MIME part with a Content-Type of application/pkcs7-signature
+ and the as its content.
+
+ The content stream.
+
+ is null.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ An exception that is thrown when a certificate could not be found for a specified mailbox.
+
+
+ An exception that is thrown when a certificate could not be found for a specified mailbox.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The mailbox that could not be resolved to a valid certificate.
+ A message explaining the error.
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the mailbox address that could not be resolved to a certificate.
+
+
+ Gets the mailbox address that could not be resolved to a certificate.
+
+ The mailbox address.
+
+
+
+ An S/MIME recipient.
+
+
+ If the X.509 certificates are known for each of the recipients, you
+ may wish to use a as opposed to having
+ the do its own certificate
+ lookups for each .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+
+ The recipient's certificate.
+ The recipient identifier type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+ The will be initialized to
+ .
+
+ The recipient's certificate.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+
+ The recipient's certificate.
+ The recipient identifier type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the property will be set to
+ the Triple-DES encryption algorithm, which should be safe to assume for all modern
+ S/MIME v3.x client implementations.
+ The will be initialized to
+ .
+
+ The recipient's certificate.
+
+ is null.
+
+
+
+
+ Gets the recipient's certificate.
+
+
+ The certificate is used for the purpose of encrypting data.
+
+ The certificate.
+
+
+
+ Gets the recipient identifier type.
+
+
+ Specifies how the certificate should be looked up on the recipient's end.
+
+ The recipient identifier type.
+
+
+
+ Gets or sets the known S/MIME encryption capabilities of the
+ recipient's mail client, in their preferred order.
+
+
+ Provides the with an array of
+ encryption algorithms that are known to be supported by the
+ recpipient's client software and should be in the recipient's
+ order of preference.
+
+ The encryption algorithms.
+
+
+
+ A collection of objects.
+
+
+ If the X.509 certificates are known for each of the recipients, you
+ may wish to use a as opposed to
+ using the methods that take a list of
+ objects.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the number of recipients in the collection.
+
+
+ Indicates the number of recipients in the collection.
+
+ The number of recipients in the collection.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified recipient.
+
+
+ Adds the specified recipient.
+
+ The recipient.
+
+ is null.
+
+
+
+
+ Clears the recipient collection.
+
+
+ Removes all of the recipients from the collection.
+
+
+
+
+ Checks if the collection contains the specified recipient.
+
+
+ Determines whether or not the collection contains the specified recipient.
+
+ true if the specified recipient exists;
+ otherwise false.
+ The recipient.
+
+ is null.
+
+
+
+
+ Copies all of the recipients in the to the specified array.
+
+
+ Copies all of the recipients within the into the array,
+ starting at the specified array index.
+
+ The array.
+ The array index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified recipient.
+
+
+ Removes the specified recipient.
+
+ true if the recipient was removed; otherwise false.
+ The recipient.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the collection of recipients.
+
+
+ Gets an enumerator for the collection of recipients.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the collection of recipients.
+
+
+ Gets an enumerator for the collection of recipients.
+
+ The enumerator.
+
+
+
+ An S/MIME signer.
+
+
+ If the X.509 certificate is known for the signer, you may wish to use a
+ as opposed to having the
+ do its own certificate lookup for the signer's .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will be set to
+ and both the
+ and properties
+ will be initialized to empty tables.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will be set to
+ and both the
+ and properties
+ will be initialized to empty tables.
+
+ The chain of certificates starting with the signer's certificate back to the root.
+ The signer's private key.
+
+ is null.
+ -or-
+ is null.
+
+
+ did not contain any certificates.
+ -or-
+ The certificate cannot be used for signing.
+ -or-
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will
+ be set to and both the
+ and properties will be
+ initialized to empty tables.
+
+ The signer's certificate.
+ The signer's private key.
+
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The initial value of the will
+ be set to and both the
+ and properties will be
+ initialized to empty tables.
+
+ The signer's certificate.
+
+ is null.
+
+
+ cannot be used for signing.
+
+
+
+
+ Gets the signer's certificate.
+
+
+ The signer's certificate that contains a public key that can be used for
+ verifying the digital signature.
+
+ The signer's certificate.
+
+
+
+ Gets the certificate chain.
+
+
+ Gets the certificate chain.
+
+ The certificate chain.
+
+
+
+ Gets or sets the digest algorithm.
+
+
+ Specifies which digest algorithm to use to generate the
+ cryptographic hash of the content being signed.
+
+ The digest algorithm.
+
+
+
+ Gets the private key.
+
+
+ The private key used for signing.
+
+ The private key.
+
+
+
+ Gets or sets the signed attributes.
+
+
+ A table of attributes that should be included in the signature.
+
+ The signed attributes.
+
+
+
+ Gets or sets the unsigned attributes.
+
+
+ A table of attributes that should not be signed in the signature,
+ but still included in transport.
+
+ The unsigned attributes.
+
+
+
+ An abstract cryptography context.
+
+
+ Generally speaking, applications should not use a
+ directly, but rather via higher level APIs such as ,
+ and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the signature protocol.
+
+
+ The signature protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The signature protocol.
+
+
+
+ Gets the encryption protocol.
+
+
+ The encryption protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The encryption protocol.
+
+
+
+ Gets the key exchange protocol.
+
+
+ The key exchange protocol is really only used for PGP.
+
+ The key exchange protocol.
+
+
+
+ Checks whether or not the specified protocol is supported by the .
+
+
+ Used in order to make sure that the protocol parameter value specified in either a multipart/signed
+ or multipart/encrypted part is supported by the supplied cryptography context.
+
+ true if the protocol is supported; otherwise false
+ The protocol.
+
+ is null.
+
+
+
+
+ Gets the string name of the digest algorithm for use with the micalg parameter of a multipart/signed part.
+
+
+ Maps the to the appropriate string identifier
+ as used by the micalg parameter value of a multipart/signed Content-Type
+ header.
+
+ The micalg value.
+ The digest algorithm.
+
+ is out of range.
+
+
+
+
+ Gets the digest algorithm from the micalg parameter value in a multipart/signed part.
+
+
+ Maps the micalg parameter value string back to the appropriate .
+
+ The digest algorithm.
+ The micalg parameter value.
+
+ is null.
+
+
+
+
+ Cryptographically signs the content.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+
+
+ Verifies the specified content using the detached signatureData.
+
+
+ Verifies the specified content using the detached signatureData.
+
+ A list of digital signatures.
+ The content.
+ The signature data.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ A certificate could not be found for one or more of the .
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+
+
+ Imports the public certificates or keys from the specified stream.
+
+
+ Imports the public certificates or keys from the specified stream.
+
+ The raw certificate or key data.
+
+ is null.
+
+
+ Importing keys is not supported by this cryptography context.
+
+
+
+
+ Exports the keys for the specified mailboxes.
+
+
+ Exports the keys for the specified mailboxes.
+
+ A new instance containing the exported keys.
+ The mailboxes.
+
+ is null.
+
+
+ was empty.
+
+
+ Exporting keys is not supported by this cryptography context.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resources used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After
+ calling , you must release all references to the so
+ the garbage collector can reclaim the memory that the was occupying.
+
+
+
+ Creates a new for the specified protocol.
+
+
+ Creates a new for the specified protocol.
+ The default types can over overridden by calling
+ the method with the preferred type.
+
+ The for the protocol.
+ The protocol.
+
+ is null.
+
+
+ There are no supported s that support
+ the specified .
+
+
+
+
+ Registers a default or .
+
+
+ Registers the specified type as the default or
+ .
+
+ A custom subclass of or
+ .
+
+ is null.
+
+
+ is not a subclass of
+ or .
+ -or-
+ does not have a parameterless constructor.
+
+
+
+
+ Useful extensions for working with System.Data types.
+
+
+
+
+ Creates a with the specified name and value and then adds it to the command's parameters.
+
+ The database command.
+ The parameter name.
+ The parameter value.
+
+
+
+ A default implementation that uses
+ an SQLite database as a certificate and private key store.
+
+
+ The default S/MIME context is designed to be usable on any platform
+ where there exists a .NET runtime by storing certificates, CRLs, and
+ (encrypted) private keys in a SQLite database.
+
+
+
+
+ The default database path for certificates, private keys and CRLs.
+
+
+ On Microsoft Windows-based systems, this path will be something like C:\Users\UserName\AppData\Roaming\mimekit\smime.db.
+ On Unix systems such as Linux and Mac OS X, this path will be ~/.mimekit/smime.db.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Allows the program to specify its own location for the SQLite database. If the file does not exist,
+ it will be created and the necessary tables and indexes will be constructed.
+ Requires linking with Mono.Data.Sqlite.
+
+ The path to the SQLite database.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ Mono.Data.Sqlite is not available.
+
+
+ The user does not have access to read the specified file.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Allows the program to specify its own password for the default database.
+ Requires linking with Mono.Data.Sqlite.
+
+ The password used for encrypting and decrypting the private keys.
+
+ Mono.Data.Sqlite is not available.
+
+
+ The user does not have access to read the database at the default location.
+
+
+ An error occurred reading the database at the default location.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Not recommended for production use as the password to unlock the private keys is hard-coded.
+ Requires linking with Mono.Data.Sqlite.
+
+
+ Mono.Data.Sqlite is not available.
+
+
+ The user does not have access to read the database at the default location.
+
+
+ An error occurred reading the database at the default location.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is useful for supplying a custom .
+
+ The certificate database.
+
+ is null.
+
+
+
+
+ Gets the X.509 certificate matching the specified selector.
+
+
+ Gets the first certificate that matches the specified selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key for the certificate matching the specified selector.
+
+
+ Gets the private key for the first certificate that matches the specified selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ A trusted anchor is a trusted root-level X.509 certificate,
+ generally issued by a Certificate Authority (CA).
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ An intermediate certificate is any certificate that exists between the root
+ certificate issued by a Certificate Authority (CA) and the certificate at
+ the end of the chain.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ A Certificate Revocation List (CRL) is a list of certificate serial numbers issued
+ by a particular Certificate Authority (CA) that have been revoked, either by the CA
+ itself or by the owner of the revoked certificate.
+
+ The certificate revocation lists.
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate certificate and
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate signing certificate
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Imports a certificate.
+
+
+ Imports the specified certificate into the database.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Imports a certificate revocation list.
+
+
+ Imports the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports all of the certificates and keys from the pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports a DER-encoded certificate stream.
+
+
+ Imports all of the certificates in the DER-encoded stream.
+
+ The raw certificate(s).
+ true if the certificates are trusted.
+
+ is null.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A digest algorithm.
+
+
+ Digest algorithms are secure hashing algorithms that are used
+ to generate unique fixed-length signatures for arbitrary data.
+ The most commonly used digest algorithms are currently MD5
+ and SHA-1, however, MD5 was successfully broken in 2008 and should
+ be avoided. In late 2013, Microsoft announced that they would be
+ retiring their use of SHA-1 in their products by 2016 with the
+ assumption that its days as an unbroken digest algorithm were
+ numbered. It is speculated that the SHA-1 digest algorithm will
+ be vulnerable to collisions, and thus no longer considered secure,
+ by 2018.
+ Microsoft and other vendors plan to move to the SHA-2 suite of
+ digest algorithms which includes the following 4 variants: SHA-224,
+ SHA-256, SHA-384, and SHA-512.
+
+
+
+
+ No digest algorithm specified.
+
+
+
+
+ The MD5 digest algorithm.
+
+
+
+
+ The SHA-1 digest algorithm.
+
+
+
+
+ The Ripe-MD/160 digest algorithm.
+
+
+
+
+ The double-SHA digest algorithm.
+
+
+
+
+ The MD2 digest algorithm.
+
+
+
+
+ The TIGER/192 digest algorithm.
+
+
+
+
+ The HAVAL 5-pass 160-bit digest algorithm.
+
+
+
+
+ The SHA-256 digest algorithm.
+
+
+
+
+ The SHA-384 digest algorithm.
+
+
+
+
+ The SHA-512 digest algorithm.
+
+
+
+
+ The SHA-224 digest algorithm.
+
+
+
+
+ The MD4 digest algorithm.
+
+
+
+
+ A collection of digital signatures.
+
+
+ When verifying a digitally signed MIME part such as a
+ or a , you will get back a collection of
+ digital signatures. Typically, a signed message will only have a single signature
+ (created by the sender of the message), but it is possible for there to be
+ multiple signatures.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The signatures.
+
+
+
+ An exception that is thrown when an error occurrs in .
+
+
+ For more information about the error condition, check the property.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+ is null.
+
+
+
+
+ A base implementation for DKIM body filters.
+
+
+ A base implementation for DKIM body filters.
+
+
+
+
+ Get or set whether the last filtered character was a newline.
+
+
+ Gets or sets whether the last filtered character was a newline.
+
+
+
+
+ Get or set whether the current line is empty.
+
+
+ Gets or sets whether the current line is empty.
+
+
+
+
+ Get or set the number of consecutive empty lines encountered.
+
+
+ Gets or sets the number of consecutive empty lines encountered.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ A DKIM canonicalization algorithm.
+
+
+ Empirical evidence demonstrates that some mail servers and relay systems
+ modify email in transit, potentially invalidating a signature. There are two
+ competing perspectives on such modifications. For most signers, mild modification
+ of email is immaterial to the authentication status of the email. For such signers,
+ a canonicalization algorithm that survives modest in-transit modification is
+ preferred.
+ Other signers demand that any modification of the email, however minor,
+ result in a signature verification failure. These signers prefer a canonicalization
+ algorithm that does not tolerate in-transit modification of the signed email.
+
+
+
+
+ The simple canonicalization algorithm tolerates almost no modification
+ by mail servers while the message is in-transit.
+
+
+
+
+ The relaxed canonicalization algorithm tolerates common modifications
+ by mail servers while the message is in-transit such as whitespace
+ replacement and header field line rewrapping.
+
+
+
+
+ A DKIM hash stream.
+
+
+ A DKIM hash stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The signature algorithm.
+ The max length of data to hash.
+
+
+
+ Generate the hash.
+
+
+ Generates the hash.
+
+ The hash.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ A is not readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ A is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ A is not seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ Writing to a cannot timeout.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a indicates the
+ number of bytes that have been written to it.
+
+ The length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Since it is possible to seek within a ,
+ it is possible that the position will not always be identical to the
+ length of the stream, but typically it will be.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reading from a is not supported.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Increments the property by the number of bytes written.
+ If the updated position is greater than the current length of the stream, then
+ the property will be updated to be identical to the
+ position.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Updates the within the stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Since a does not actually do anything other than
+ count bytes, this method is a no-op.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the to the specified value and updates
+ to the specified value if (and only if)
+ the current position is greater than the new length value.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A filter for the DKIM relaxed body canonicalization.
+
+
+ A filter for the DKIM relaxed body canonicalization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A DKIM signature algorithm.
+
+
+ A DKIM signature algorithm.
+
+
+
+
+ The RSA-SHA1 signature algorithm.
+
+
+
+
+ The RSA-SHA256 signature algorithm.
+
+
+
+
+ A DKIM signature stream.
+
+
+ A DKIM signature stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The digest signer.
+
+ is null.
+
+
+
+
+ Get the digest signer.
+
+
+ Gets the digest signer.
+
+ The signer.
+
+
+
+ Generate the signature.
+
+
+ Generates the signature.
+
+ The signature.
+
+
+
+ Verify the DKIM signature.
+
+
+ Verifies the DKIM signature.
+
+ true if signature is valid; otherwise, false.
+ The base64 encoded DKIM signature from the b= parameter.
+
+ is null.
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ A is not readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ A is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ A is not seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ Writing to a cannot timeout.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a indicates the
+ number of bytes that have been written to it.
+
+ The length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Since it is possible to seek within a ,
+ it is possible that the position will not always be identical to the
+ length of the stream, but typically it will be.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reading from a is not supported.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Increments the property by the number of bytes written.
+ If the updated position is greater than the current length of the stream, then
+ the property will be updated to be identical to the
+ position.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Updates the within the stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Since a does not actually do anything other than
+ count bytes, this method is a no-op.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the to the specified value and updates
+ to the specified value if (and only if)
+ the current position is greater than the new length value.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A DKIM signer.
+
+
+ A DKIM signer.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The signer's private key.
+ The domain that the signer represents.
+ The selector subdividing the domain.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The file containing the private key.
+ The domain that the signer represents.
+ The selector subdividing the domain.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The file did not contain a private key.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Gets the private key.
+
+
+ The private key used for signing.
+
+ The private key.
+
+
+
+ Get the domain that the signer represents.
+
+
+ Gets the domain that the signer represents.
+
+ The domain.
+
+
+
+ Get the selector subdividing the domain.
+
+
+ Gets the selector subdividing the domain.
+
+ The selector.
+
+
+
+ Get or set the agent or user identifier.
+
+
+ Gets or sets the agent or user identifier.
+
+ The agent or user identifier.
+
+
+
+ Get or set the algorithm to use for signing.
+
+
+ Gets or sets the algorithm to use for signing.
+
+ The signature algorithm.
+
+
+
+ Get or set the public key query method.
+
+
+ Gets or sets the public key query method.
+ The value should be a colon-separated list of query methods used to
+ retrieve the public key (plain-text; OPTIONAL, default is "dns/txt"). Each
+ query method is of the form "type[/options]", where the syntax and
+ semantics of the options depend on the type and specified options.
+
+ The public key query method.
+
+
+
+ A filter for the DKIM simple body canonicalization.
+
+
+ A filter for the DKIM simple body canonicalization.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ Encryption algorithms supported by S/MIME and OpenPGP.
+
+
+ Represents the available encryption algorithms for use with S/MIME and OpenPGP.
+ RC-2/40 was required by all S/MIME v2 implementations. However, since the
+ mid-to-late 1990's, RC-2/40 has been considered to be extremely weak and starting with
+ S/MIME v3.0 (published in 1999), all S/MIME implementations are required to implement
+ support for Triple-DES (aka 3DES) and should no longer encrypt using RC-2/40 unless
+ explicitly requested to do so by the user.
+ These days, most S/MIME implementations support the AES-128 and AES-256
+ algorithms which are the recommended algorithms specified in S/MIME v3.2 and
+ should be preferred over the use of Triple-DES unless the client capabilities
+ of one or more of the recipients is unknown (or only supports Triple-DES).
+
+
+
+
+ The AES 128-bit encryption algorithm.
+
+
+
+
+ The AES 192-bit encryption algorithm.
+
+
+
+
+ The AES 256-bit encryption algorithm.
+
+
+
+
+ The Camellia 128-bit encryption algorithm.
+
+
+
+
+ The Camellia 192-bit encryption algorithm.
+
+
+
+
+ The Camellia 256-bit encryption algorithm.
+
+
+
+
+ The Cast-5 128-bit encryption algorithm.
+
+
+
+
+ The DES 56-bit encryption algorithm.
+
+
+ This is extremely weak encryption and should not be used
+ without consent from the user.
+
+
+
+
+ The Triple-DES encryption algorithm.
+
+
+ This is the weakest recommended encryption algorithm for use
+ starting with S/MIME v3 and should only be used as a fallback
+ if it is unknown what encryption algorithms are supported by
+ the recipient's mail client.
+
+
+
+
+ The IDEA 128-bit encryption algorithm.
+
+
+
+
+ The blowfish encryption algorithm (OpenPGP only).
+
+
+
+
+ The twofish encryption algorithm (OpenPGP only).
+
+
+
+
+ The RC2 40-bit encryption algorithm (S/MIME only).
+
+
+ This is extremely weak encryption and should not be used
+ without consent from the user.
+
+
+
+
+ The RC2 64-bit encryption algorithm (S/MIME only).
+
+
+ This is very weak encryption and should not be used
+ without consent from the user.
+
+
+
+
+ The RC2 128-bit encryption algorithm (S/MIME only).
+
+
+
+
+ A that uses the GnuPG keyrings.
+
+
+ A that uses the GnuPG keyrings.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ An interface for a digital certificate.
+
+
+ An interface for a digital certificate.
+
+
+
+
+ Gets the public key algorithm supported by the certificate.
+
+
+ Gets the public key algorithm supported by the certificate.
+
+ The public key algorithm.
+
+
+
+ Gets the date that the certificate was created.
+
+
+ Gets the date that the certificate was created.
+
+ The creation date.
+
+
+
+ Gets the expiration date of the certificate.
+
+
+ Gets the expiration date of the certificate.
+
+ The expiration date.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets the email address of the owner of the certificate.
+
+
+ Gets the email address of the owner of the certificate.
+
+ The email address.
+
+
+
+ Gets the name of the owner of the certificate.
+
+
+ Gets the name of the owner of the certificate.
+
+ The name of the owner.
+
+
+
+ An interface for a digital signature.
+
+
+ An interface for a digital signature.
+
+
+
+
+ Gets certificate used by the signer.
+
+
+ Gets certificate used by the signer.
+
+ The signer's certificate.
+
+
+
+ Gets the public key algorithm used for the signature.
+
+
+ Gets the public key algorithm used for the signature.
+
+ The public key algorithm.
+
+
+
+ Gets the digest algorithm used for the signature.
+
+
+ Gets the digest algorithm used for the signature.
+
+ The digest algorithm.
+
+
+
+ Gets the creation date of the digital signature.
+
+
+ Gets the creation date of the digital signature.
+
+ The creation date.
+
+
+
+ Verifies the digital signature.
+
+
+ Verifies the digital signature.
+
+ true if the signature is valid; otherwise false.
+
+ An error verifying the signature has occurred.
+
+
+
+
+ An interface for a service which locates and retrieves DKIM public keys (probably via DNS).
+
+
+ An interface for a service which locates and retrieves DKIM public keys (probably via DNS).
+ Since MimeKit itself does not implement DNS, it is up to the client to implement public key lookups
+ via DNS.
+
+
+
+
+
+ Locate and retrieves the public key for the given domain and selector.
+
+
+ Locates and retrieves the public key for the given domain and selector.
+
+ The public key.
+ A colon-separated list of query methods used to retrieve the public key. The default is "dns/txt".
+ The domain.
+ The selector.
+ The cancellation token.
+
+
+
+ An interface for an X.509 Certificate database.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+
+
+
+
+ Find the specified certificate.
+
+
+ Searches the database for the specified certificate, returning the matching
+ record with the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate.
+ The desired fields.
+
+
+
+ Finds the certificates matching the specified selector.
+
+
+ Searches the database for certificates matching the selector, returning all
+ matching certificates.
+
+ The matching certificates.
+ The match selector or null to return all certificates.
+
+
+
+ Finds the private keys matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning the
+ private keys for each matching record.
+
+ The matching certificates.
+ The match selector or null to return all private keys.
+
+
+
+ Finds the certificate records for the specified mailbox.
+
+
+ Searches the database for certificates matching the specified mailbox that are valid
+ for the date and time specified, returning all matching records populated with the
+ desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The mailbox.
+ The date and time.
+ true if a private key is required.
+ The desired fields.
+
+
+
+ Finds the certificate records matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning all
+ of the matching records populated with the desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The match selector or null to match all certificates.
+ true if only trusted certificates should be returned.
+ The desired fields.
+
+
+
+ Add the specified certificate record.
+
+
+ Adds the specified certificate record to the database.
+
+ The certificate record.
+
+
+
+ Remove the specified certificate record.
+
+
+ Removes the specified certificate record from the database.
+
+ The certificate record.
+
+
+
+ Update the specified certificate record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The certificate record.
+ The fields to update.
+
+
+
+ Finds the CRL records for the specified issuer.
+
+
+ Searches the database for CRL records matching the specified issuer, returning
+ all matching records populated with the desired fields.
+
+ The matching CRL records populated with the desired fields.
+ The issuer.
+ The desired fields.
+
+
+
+ Finds the specified certificate revocation list.
+
+
+ Searches the database for the specified CRL, returning the matching record with
+ the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate revocation list.
+ The desired fields.
+
+
+
+ Add the specified CRL record.
+
+
+ Adds the specified CRL record to the database.
+
+ The CRL record.
+
+
+
+ Remove the specified CRL record.
+
+
+ Removes the specified CRL record from the database.
+
+ The CRL record.
+
+
+
+ Update the specified CRL record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The CRL record.
+
+
+
+ Gets a certificate revocation list store.
+
+
+ Gets a certificate revocation list store.
+
+ A certificate recovation list store.
+
+
+
+ A multipart MIME part with a ContentType of multipart/encrypted containing an encrypted MIME part.
+
+
+ This mime-type is common when dealing with PGP/MIME but is not used for S/MIME.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for signing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ THe specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+ -or-
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for signing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ The private key for could not be found.
+
+
+ A public key for one or more of the could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for singing and encrypting.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by signing and encrypting the specified entity.
+
+
+ Signs the entity using the supplied signer and digest algorithm and then encrypts to
+ the specified recipients, encapsulating the result in a new multipart/encrypted part.
+
+ A new instance containing
+ the signed and encrypted version of the specified entity.
+ The signer to use to sign the entity.
+ The digest algorithm to use for signing.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The was out of range.
+
+
+ A default has not been registered.
+ -or-
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ THe specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+ -or-
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ A default has not been registered.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ THe specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The OpenPGP cryptography context to use for encrypting.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The encryption algorithm.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+ -or-
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Create a multipart/encrypted MIME part by encrypting the specified entity.
+
+
+ Encrypts the entity to the specified recipients, encapsulating the result in a
+ new multipart/encrypted part.
+
+ A new instance containing
+ the encrypted version of the specified entity.
+ The recipients for the encrypted entity.
+ The entity to sign and encrypt.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+
+
+ A default has not been registered.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the and extracts any digital signatures in cases
+ where the content was also signed.
+
+ The decrypted entity.
+ The OpenPGP cryptography context to use for decrypting.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ is null.
+
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ The provided does not support the protocol parameter.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the part.
+
+ The decrypted entity.
+ The OpenPGP cryptography context to use for decrypting.
+
+ is null.
+
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ The provided does not support the protocol parameter.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the and extracts any digital signatures in cases
+ where the content was also signed.
+
+ The decrypted entity.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ A suitable for
+ decrypting could not be found.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the part.
+
+
+ Decrypts the part.
+
+ The decrypted entity.
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ A suitable for
+ decrypting could not be found.
+
+
+ The private key could not be found to decrypt the encrypted data.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ A signed multipart, as used by both S/MIME and PGP/MIME protocols.
+
+
+ The first child of a multipart/signed is the content while the second child
+ is the detached signature data. Any other children are not defined and could
+ be anything.
+
+
+
+
+ Initializes a new instance of the class.
+
+ This constructor is used by .
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer and digest algorithm in
+ order to generate a detached signature and then adds the entity along with the
+ detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The cryptography context to use for signing.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ A signing certificate could not be found for .
+
+
+ The private key could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer and digest algorithm in
+ order to generate a detached signature and then adds the entity along with the
+ detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The OpenPGP context to use for signing.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ An error occurred in the OpenPGP subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer and digest algorithm in
+ order to generate a detached signature and then adds the entity along with the
+ detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The signer.
+ The digest algorithm to use for signing.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+
+
+ The was out of range.
+
+
+ A cryptography context suitable for signing could not be found.
+ -or-
+ The is not supported.
+
+
+ An error occurred in the OpenPGP subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer in order
+ to generate a detached signature and then adds the entity along with
+ the detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The S/MIME context to use for signing.
+ The signer.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Creates a new .
+
+
+ Cryptographically signs the entity using the supplied signer in order
+ to generate a detached signature and then adds the entity along with
+ the detached signature data to a new multipart/signed part.
+
+ A new instance.
+ The signer.
+ The entity to sign.
+
+ is null.
+ -or-
+ is null.
+
+
+ A cryptography context suitable for signing could not be found.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Verifies the multipart/signed part.
+
+
+ Verifies the multipart/signed part using the supplied cryptography context.
+
+ A signer info collection.
+ The cryptography context to use for verifying the signature.
+
+ is null.
+
+
+ The multipart is malformed in some way.
+
+
+ does not support verifying the signature part.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the multipart/signed part.
+
+
+ Verifies the multipart/signed part using the default cryptography context.
+
+ A signer info collection.
+
+ The protocol parameter was not specified.
+ -or-
+ The multipart is malformed in some way.
+
+
+ A cryptography context suitable for verifying the signature could not be found.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ An X.509 certificate database built on PostgreSQL.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+ This particular database uses PostgreSQL to store the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new and opens a connection to the
+ PostgreSQL database using the specified connection string.
+
+ The connection string.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ is empty.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the provided Npgsql database connection.
+
+ The Npgsql connection.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the command to create the certificates table.
+
+
+ Constructs the command to create a certificates table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the command to create the CRLs table.
+
+
+ Constructs the command to create a CRLs table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ An abstract OpenPGP cryptography context which can be used for PGP/MIME.
+
+
+ Generally speaking, applications should not use a
+ directly, but rather via higher level APIs such as
+ and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Subclasses choosing to use this constructor MUST set the ,
+ , , and the
+ properties themselves.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the specified public and private keyring paths.
+
+ The public keyring file path.
+ The secret keyring file path.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred while reading one of the keyring files.
+
+
+ An error occurred while parsing one of the keyring files.
+
+
+
+
+ Gets or sets the default encryption algorithm.
+
+
+ Gets or sets the default encryption algorithm.
+
+ The encryption algorithm.
+
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Gets the public keyring path.
+
+
+ Gets the public keyring path.
+
+ The public key ring path.
+
+
+
+ Gets the secret keyring path.
+
+
+ Gets the secret keyring path.
+
+ The secret key ring path.
+
+
+
+ Gets the public keyring bundle.
+
+
+ Gets the public keyring bundle.
+
+ The public keyring bundle.
+
+
+
+ Gets the secret keyring bundle.
+
+
+ Gets the secret keyring bundle.
+
+ The secret keyring bundle.
+
+
+
+ Gets the signature protocol.
+
+
+ The signature protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The signature protocol.
+
+
+
+ Gets the encryption protocol.
+
+
+ The encryption protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The encryption protocol.
+
+
+
+ Gets the key exchange protocol.
+
+
+ Gets the key exchange protocol.
+
+ The key exchange protocol.
+
+
+
+ Checks whether or not the specified protocol is supported.
+
+
+ Used in order to make sure that the protocol parameter value specified in either a multipart/signed
+ or multipart/encrypted part is supported by the supplied cryptography context.
+
+ true if the protocol is supported; otherwise false
+ The protocol.
+
+ is null.
+
+
+
+
+ Gets the string name of the digest algorithm for use with the micalg parameter of a multipart/signed part.
+
+
+ Maps the to the appropriate string identifier
+ as used by the micalg parameter value of a multipart/signed Content-Type
+ header. For example:
+
+ AlgorithmName
+ - pgp-md5
+ - pgp-sha1
+ - pgp-ripemd160
+ - pgp-md2
+ - pgp-tiger192
+ - pgp-haval-5-160
+ - pgp-sha256
+ - pgp-sha384
+ - pgp-sha512
+ - pgp-sha224
+
+
+ The micalg value.
+ The digest algorithm.
+
+ is out of range.
+
+
+
+
+ Gets the digest algorithm from the micalg parameter value in a multipart/signed part.
+
+
+ Maps the micalg parameter value string back to the appropriate .
+
+ The digest algorithm.
+ The micalg parameter value.
+
+ is null.
+
+
+
+
+ Gets the public key associated with the mailbox address.
+
+
+ Gets the public key associated with the mailbox address.
+
+ The encryption key.
+ The mailbox.
+
+ is null.
+
+
+ The public key for the specified could not be found.
+
+
+
+
+ Gets the public keys for the specified mailbox addresses.
+
+
+ Gets the public keys for the specified mailbox addresses.
+
+ The encryption keys.
+ The mailboxes.
+
+ is null.
+
+
+ A public key for one or more of the could not be found.
+
+
+
+
+ Gets the signing key associated with the mailbox address.
+
+
+ Gets the signing key associated with the mailbox address.
+
+ The signing key.
+ The mailbox.
+
+ is null.
+
+
+ A private key for the specified could not be found.
+
+
+
+
+ Gets the password for key.
+
+
+ Gets the password for key.
+
+ The password for key.
+ The key.
+
+ The user chose to cancel the password request.
+
+
+
+
+ Gets the private key from the specified secret key.
+
+
+ Gets the private key from the specified secret key.
+
+ The private key.
+ The secret key.
+
+ is null.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Gets the private key.
+
+
+ Gets the private key.
+
+ The private key.
+ The key identifier.
+
+ The specified secret key could not be found.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Gets the equivalent for the
+ specified .
+
+
+ Maps a to the equivalent .
+
+ The hash algorithm.
+ The digest algorithm.
+
+ is out of range.
+
+
+ is not a supported digest algorithm.
+
+
+
+
+ Cryptographically signs the content.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing key could not be found for .
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs the content.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Gets the equivalent for the specified
+ .
+
+
+ Gets the equivalent for the specified
+ .
+
+ The digest algorithm.
+ The hash algorithm.
+
+ is out of range.
+
+
+ does not have an equivalent value.
+
+
+
+
+ Gets the equivalent for the specified
+ .
+
+
+ Gets the equivalent for the specified
+ .
+
+ The public-key algorithm.
+ The public-key algorithm.
+
+ is out of range.
+
+
+ does not have an equivalent value.
+
+
+
+
+ Verifies the specified content using the detached signatureData.
+
+
+ Verifies the specified content using the detached signatureData.
+
+ A list of digital signatures.
+ The content.
+ The signature data.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ A public key could not be found for one or more of the .
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ A public key could not be found for one or more of the .
+
+
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified encryption algorithm is not supported.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified is not supported by this context.
+
+
+ The private key could not be found for .
+
+
+ A public key could not be found for one or more of the .
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified encryption algorithm is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The encryption algorithm.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The specified encryption algorithm is not supported.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+
+ Cryptographically signs and encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The signer.
+ The digest algorithm to use for signing.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be used for signing.
+ -or-
+ One or more of the recipient keys cannot be used for encrypting.
+ -or-
+ No recipients were specified.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+ The decrypted stream.
+ The encrypted data.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted stream.
+ The encrypted data.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+
+ Decrypts the specified encryptedData and extracts the digital signers if the content was also signed.
+
+ The decrypted .
+ The encrypted data.
+ A list of digital signatures if the data was both signed and encrypted.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+ The private key could not be found to decrypt the stream.
+
+
+ The user chose to cancel the password prompt.
+
+
+ 3 bad attempts were made to unlock the secret key.
+
+
+ An OpenPGP error occurred.
+
+
+
+
+ Saves the public key-ring bundle.
+
+
+ Atomically saves the public key-ring bundle to the path specified by .
+ Called by if any public keys were successfully imported.
+
+
+ An error occured while saving the public key-ring bundle.
+
+
+
+
+ Saves the secret key-ring bundle.
+
+
+ Atomically saves the secret key-ring bundle to the path specified by .
+ Called by if any secret keys were successfully imported.
+
+
+ An error occured while saving the secret key-ring bundle.
+
+
+
+
+ Imports a public pgp keyring.
+
+
+ Imports a public pgp keyring.
+
+ The pgp keyring.
+
+ is null.
+
+
+
+
+ Imports a public pgp keyring bundle.
+
+
+ Imports a public pgp keyring bundle.
+
+ The pgp keyring bundle.
+
+ is null.
+
+
+
+
+ Imports public pgp keys from the specified stream.
+
+
+ Imports public pgp keys from the specified stream.
+
+ The raw key data.
+
+ is null.
+
+
+ An error occurred while parsing the raw key-ring data
+ -or-
+ An error occured while saving the public key-ring bundle.
+
+
+
+
+ Imports a secret pgp keyring.
+
+
+ Imports a secret pgp keyring.
+
+ The pgp keyring.
+
+ is null.
+
+
+
+
+ Imports a secret pgp keyring bundle.
+
+
+ Imports a secret pgp keyring bundle.
+
+ The pgp keyring bundle.
+
+ is null.
+
+
+
+
+ Imports secret pgp keys from the specified stream.
+
+
+ Imports secret pgp keys from the specified stream.
+ The stream should consist of an armored secret keyring bundle
+ containing 1 or more secret keyrings.
+
+ The raw key data.
+
+ is null.
+
+
+ An error occurred while parsing the raw key-ring data
+ -or-
+ An error occured while saving the public key-ring bundle.
+
+
+
+
+ Exports the public keys for the specified mailboxes.
+
+
+ Exports the public keys for the specified mailboxes.
+
+ A new instance containing the exported public keys.
+ The mailboxes.
+
+ is null.
+
+
+ was empty.
+
+
+
+
+ Exports the specified public keys.
+
+
+ Exports the specified public keys.
+
+ A new instance containing the exported public keys.
+ The keys.
+
+ is null.
+
+
+
+
+ Exports the specified public keys.
+
+
+ Exports the specified public keys.
+
+ A new instance containing the exported public keys.
+ The keys.
+
+ is null.
+
+
+
+
+ An OpenPGP digital certificate.
+
+
+ An OpenPGP digital certificate.
+
+
+
+
+ Gets the public key.
+
+
+ Gets the public key.
+
+ The public key.
+
+
+
+ Gets the public key algorithm supported by the certificate.
+
+
+ Gets the public key algorithm supported by the certificate.
+
+ The public key algorithm.
+
+
+
+ Gets the date that the certificate was created.
+
+
+ Gets the date that the certificate was created.
+
+ The creation date.
+
+
+
+ Gets the expiration date of the certificate.
+
+
+ Gets the expiration date of the certificate.
+
+ The expiration date.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets the email address of the owner of the certificate.
+
+
+ Gets the email address of the owner of the certificate.
+
+ The email address.
+
+
+
+ Gets the name of the owner of the certificate.
+
+
+ Gets the name of the owner of the certificate.
+
+ The name of the owner.
+
+
+
+ An OpenPGP digital signature.
+
+
+ An OpenPGP digital signature.
+
+
+
+
+ Gets certificate used by the signer.
+
+
+ Gets certificate used by the signer.
+
+ The signer's certificate.
+
+
+
+ Gets the public key algorithm used for the signature.
+
+
+ Gets the public key algorithm used for the signature.
+
+ The public key algorithm.
+
+
+
+ Gets the digest algorithm used for the signature.
+
+
+ Gets the digest algorithm used for the signature.
+
+ The digest algorithm.
+
+
+
+ Gets the creation date of the digital signature.
+
+
+ Gets the creation date of the digital signature.
+
+ The creation date.
+
+
+
+ Verifies the digital signature.
+
+
+ Verifies the digital signature.
+
+ true if the signature is valid; otherwise false.
+
+ An error verifying the signature has occurred.
+
+
+
+
+ An exception that is thrown when a private key could not be found for a specified mailbox or key id.
+
+
+ An exception that is thrown when a private key could not be found for a specified mailbox or key id.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The mailbox that could not be resolved to a valid private key.
+ A message explaining the error.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The key id that could not be resolved to a valid certificate.
+ A message explaining the error.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The key id that could not be resolved to a valid certificate.
+ A message explaining the error.
+
+ is null.
+
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the key id that could not be found.
+
+
+ Gets the key id that could not be found.
+
+ The key id.
+
+
+
+ An enumeration of public key algorithms.
+
+
+ An enumeration of public key algorithms.
+
+
+
+
+ No public key algorithm specified.
+
+
+
+
+ The RSA algorithm.
+
+
+
+
+ The RSA encryption-only algorithm.
+
+
+
+
+ The RSA sign-only algorithm.
+
+
+
+
+ The El-Gamal encryption-only algorithm.
+
+
+
+
+ The DSA algorithm.
+
+
+
+
+ The elliptic curve algorithm.
+
+
+
+
+ The elliptic curve DSA algorithm.
+
+
+
+
+ The El-Gamal algorithm.
+
+
+
+
+ The Diffie-Hellman algorithm.
+
+
+
+
+ An exception that is thrown when a public key could not be found for a specified mailbox.
+
+
+ An exception that is thrown when a public key could not be found for a specified mailbox.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The mailbox that could not be resolved to a valid private key.
+ A message explaining the error.
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the key id that could not be found.
+
+
+ Gets the key id that could not be found.
+
+ The key id.
+
+
+
+ A secure mailbox address which includes a fingerprint for a certificate.
+
+
+ When signing or encrypting a message, it is necessary to look up the
+ X.509 certificate in order to do the actual sign or encrypt operation. One
+ way of accomplishing this is to use the email address of sender or recipient
+ as a unique identifier. However, a better approach is to use the fingerprint
+ (or 'thumbprint' in Microsoft parlance) of the user's certificate.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified fingerprint.
+
+ The name of the mailbox.
+ The address of the mailbox.
+ The fingerprint of the certificate belonging to the owner of the mailbox.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the fingerprint of the certificate and/or key to use for signing or encrypting.
+
+
+
+
+ A fingerprint is a SHA-1 hash of the raw certificate data and is often used
+ as a unique identifier for a particular certificate in a certificate store.
+
+ The fingerprint of the certificate.
+
+
+
+ A Secure MIME (S/MIME) cryptography context.
+
+
+ Generally speaking, applications should not use a
+ directly, but rather via higher level APIs such as
+ and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Enables the following encryption algorithms by default:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Gets the signature protocol.
+
+
+ The signature protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The signature protocol.
+
+
+
+ Gets the encryption protocol.
+
+
+ The encryption protocol is used by
+ in order to determine what the protocol parameter of the Content-Type
+ header should be.
+
+ The encryption protocol.
+
+
+
+ Gets the key exchange protocol.
+
+
+ Gets the key exchange protocol.
+
+ The key exchange protocol.
+
+
+
+ Checks whether or not the specified protocol is supported by the .
+
+
+ Used in order to make sure that the protocol parameter value specified in either a multipart/signed
+ or multipart/encrypted part is supported by the supplied cryptography context.
+
+ true if the protocol is supported; otherwise false
+ The protocol.
+
+ is null.
+
+
+
+
+ Gets the string name of the digest algorithm for use with the micalg parameter of a multipart/signed part.
+
+
+ Maps the to the appropriate string identifier
+ as used by the micalg parameter value of a multipart/signed Content-Type
+ header. For example:
+
+ AlgorithmName
+ - md5
+ - sha-1
+ - sha-224
+ - sha-256
+ - sha-384
+ - sha-512
+
+
+ The micalg value.
+ The digest algorithm.
+
+ is out of range.
+
+
+
+
+ Gets the digest algorithm from the micalg parameter value in a multipart/signed part.
+
+
+ Maps the micalg parameter value string back to the appropriate .
+
+ The digest algorithm.
+ The micalg parameter value.
+
+ is null.
+
+
+
+
+ Gets the preferred rank order for the encryption algorithms; from the strongest to the weakest.
+
+
+ Gets the preferred rank order for the encryption algorithms; from the strongest to the weakest.
+
+ The preferred encryption algorithm ranking.
+
+
+
+ Gets the enabled encryption algorithms in ranked order.
+
+
+ Gets the enabled encryption algorithms in ranked order.
+
+ The enabled encryption algorithms.
+
+
+
+ Enables the encryption algorithm.
+
+
+ Enables the encryption algorithm.
+
+ The encryption algorithm.
+
+
+
+ Disables the encryption algorithm.
+
+
+ Disables the encryption algorithm.
+
+ The encryption algorithm.
+
+
+
+ Checks whether the specified encryption algorithm is enabled.
+
+
+ Determines whether the specified encryption algorithm is enabled.
+
+ true if the specified encryption algorithm is enabled; otherwise, false.
+ Algorithm.
+
+
+
+ Gets the X.509 certificate matching the specified selector.
+
+
+ Gets the first certificate that matches the specified selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key for the certificate matching the specified selector.
+
+
+ Gets the private key for the first certificate that matches the specified selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ A trusted anchor is a trusted root-level X.509 certificate,
+ generally issued by a certificate authority (CA).
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ An intermediate certificate is any certificate that exists between the root
+ certificate issued by a Certificate Authority (CA) and the certificate at
+ the end of the chain.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ A Certificate Revocation List (CRL) is a list of certificate serial numbers issued
+ by a particular Certificate Authority (CA) that have been revoked, either by the CA
+ itself or by the owner of the revoked certificate.
+
+ The certificate revocation lists.
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate certificate and
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address.
+
+ A .
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets a collection of CmsRecipients for the specified mailboxes.
+
+
+ Gets a collection of CmsRecipients for the specified mailboxes.
+
+ A .
+ The mailboxes.
+
+ is null.
+
+
+ A certificate for one or more of the specified could not be found.
+
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate signing certificate
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Gets the OID for the digest algorithm.
+
+
+ Gets the OID for the digest algorithm.
+
+ The digest oid.
+ The digest algorithm.
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+
+
+ Compresses the specified stream.
+
+
+ Compresses the specified stream.
+
+ A new instance
+ containing the compressed content.
+ The stream to compress.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decompress the specified stream.
+
+
+ Decompress the specified stream.
+
+ The decompressed mime part.
+ The stream to decompress.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encapsulates the content using the specified signer.
+
+
+ Cryptographically signs and encapsulates the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs and encapsulates the content using the specified signer and digest algorithm.
+
+
+ Cryptographically signs and encapsulates the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the content using the specified signer.
+
+
+ Cryptographically signs the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+
+ Cryptographically signs the content using the specified signer and digest algorithm.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Attempts to map a
+ to a .
+
+
+ Attempts to map a
+ to a .
+
+ true if the algorithm identifier was successfully mapped; false otherwise.
+ The algorithm identifier.
+ The encryption algorithm.
+
+ is null.
+
+
+
+
+ Verifies the specified content using the detached signatureData.
+
+
+ Verifies the specified content using the detached signatureData.
+
+ A list of the digital signatures.
+ The content.
+ The detached signature data.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Verifies the digital signatures of the specified signedData and extract the original content.
+
+
+ Verifies the digital signatures of the specified signedData and extract the original content.
+
+ The list of digital signatures.
+ The signed data.
+ The unencapsulated entity.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Gets the preferred encryption algorithm to use for encrypting to the specified recipients.
+
+
+ Gets the preferred encryption algorithm to use for encrypting to the specified recipients
+ based on the encryption algorithms supported by each of the recipients, the
+ , and the .
+ If the supported encryption algorithms are unknown for any recipient, it is assumed that
+ the recipient supports at least the Triple-DES encryption algorithm.
+
+ The preferred encryption algorithm.
+ The recipients.
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted content.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Encrypts the specified content for the specified recipients.
+
+
+ Encrypts the specified content for the specified recipients.
+
+ A new instance
+ containing the encrypted data.
+ The recipients.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ A certificate for one or more of the could not be found.
+
+
+ A certificate could not be found for one or more of the .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypts the specified encryptedData.
+
+
+ Decrypts the specified encryptedData.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ Importing keys is not supported by this cryptography context.
+
+
+
+
+ Exports the certificates for the specified mailboxes.
+
+
+ Exports the certificates for the specified mailboxes.
+
+ A new instance containing
+ the exported keys.
+ The mailboxes.
+
+ is null.
+
+
+ No mailboxes were specified.
+
+
+ A certificate for one or more of the could not be found.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Imports the specified certificate.
+
+
+ Imports the specified certificate.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Imports the specified certificate revocation list.
+
+
+ Imports the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Imports certificates (as from a certs-only application/pkcs-mime part)
+ from the specified stream.
+
+
+ Imports certificates (as from a certs-only application/pkcs-mime part)
+ from the specified stream.
+
+ The raw key data.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ An S/MIME digital certificate.
+
+
+ An S/MIME digital certificate.
+
+
+
+
+ Gets the .
+
+
+ Gets the .
+
+ The certificate.
+
+
+
+ Gets the public key algorithm supported by the certificate.
+
+
+ Gets the public key algorithm supported by the certificate.
+
+ The public key algorithm.
+
+
+
+ Gets the date that the certificate was created.
+
+
+ Gets the date that the certificate was created.
+
+ The creation date.
+
+
+
+ Gets the expiration date of the certificate.
+
+
+ Gets the expiration date of the certificate.
+
+ The expiration date.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets the email address of the owner of the certificate.
+
+
+ Gets the email address of the owner of the certificate.
+
+ The email address.
+
+
+
+ Gets the name of the owner of the certificate.
+
+
+ Gets the name of the owner of the certificate.
+
+ The name of the owner.
+
+
+
+ An S/MIME digital signature.
+
+
+ An S/MIME digital signature.
+
+
+
+
+ Gets the signer info.
+
+
+ Gets the signer info.
+
+ The signer info.
+
+
+
+ Gets the list of encryption algorithms, in preferential order,
+ that the signer's client supports.
+
+
+ Gets the list of encryption algorithms, in preferential order,
+ that the signer's client supports.
+
+ The S/MIME encryption algorithms.
+
+
+
+ Gets the certificate chain.
+
+
+ If building the certificate chain failed, this value will be null and
+ will be set.
+
+ The certificate chain.
+
+
+
+ The exception that occurred, if any, while building the certificate chain.
+
+
+ This will only be set if building the certificate chain failed.
+
+ The exception.
+
+
+
+ Gets certificate used by the signer.
+
+
+ Gets certificate used by the signer.
+
+ The signer's certificate.
+
+
+
+ Gets the public key algorithm used for the signature.
+
+
+ Gets the public key algorithm used for the signature.
+
+ The public key algorithm.
+
+
+
+ Gets the digest algorithm used for the signature.
+
+
+ Gets the digest algorithm used for the signature.
+
+ The digest algorithm.
+
+
+
+ Gets the creation date of the digital signature.
+
+
+ Gets the creation date of the digital signature.
+
+ The creation date.
+
+
+
+ Verifies the digital signature.
+
+
+ Verifies the digital signature.
+
+ true if the signature is valid; otherwise false.
+
+ An error verifying the signature has occurred.
+
+
+
+
+ The type of S/MIME data that an application/pkcs7-mime part contains.
+
+
+ The type of S/MIME data that an application/pkcs7-mime part contains.
+
+
+
+
+ S/MIME compressed data.
+
+
+
+
+ S/MIME enveloped data.
+
+
+
+
+ S/MIME signed data.
+
+
+
+
+ S/MIME certificate data.
+
+
+
+
+ The S/MIME data type is unknown.
+
+
+
+
+ An abstract X.509 certificate database built on generic SQL storage.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+ This particular database uses SQLite to store the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the provided database connection.
+
+ The database .
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the command to create the certificates table.
+
+
+ Constructs the command to create a certificates table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the command to create the CRLs table.
+
+
+ Constructs the command to create a CRLs table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+ The database command.
+ The certificate.
+ The fields to return.
+
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+ The database command.
+ The mailbox.
+ The date and time for which the certificate should be valid.
+ true
+ The fields to return.
+
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+ The database command.
+ Selector.
+ If set to true trusted only.
+ true
+ The fields to return.
+
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+ The database command.
+ The issuer.
+ The fields to return.
+
+
+
+ Gets the database command to select the record for the specified CRL.
+
+
+ Gets the database command to select the record for the specified CRL.
+
+ The database command.
+ The X.509 CRL.
+ The fields to return.
+
+
+
+ Gets the database command to select all CRLs in the table.
+
+
+ Gets the database command to select all CRLs in the table.
+
+ The database command.
+
+
+
+ Gets the database command to delete the specified certificate record.
+
+
+ Gets the database command to delete the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to delete the specified CRL record.
+
+
+ Gets the database command to delete the specified CRL record.
+
+ The database command.
+ The record.
+
+
+
+ Gets the database command to insert the specified certificate record.
+
+
+ Gets the database command to insert the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to insert the specified CRL record.
+
+
+ Gets the database command to insert the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Gets the database command to update the specified record.
+
+
+ Gets the database command to update the specified record.
+
+ The database command.
+ The certificate record.
+ The fields to update.
+
+
+
+ Gets the database command to update the specified CRL record.
+
+
+ Gets the database command to update the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ An X.509 certificate database built on SQLite.
+
+
+ An X.509 certificate database is used for storing certificates, metdata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+ This particular database uses SQLite to store the data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new and opens a connection to the
+ SQLite database at the specified path using the Mono.Data.Sqlite binding to the native
+ SQLite library.
+ If Mono.Data.Sqlite is not available or if an alternative binding to the native
+ SQLite library is preferred, then consider using
+ instead.
+
+ The file name.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The user does not have access to read the specified file.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the provided SQLite database connection.
+
+ The SQLite connection.
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the command to create the certificates table.
+
+
+ Constructs the command to create a certificates table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ Gets the command to create the CRLs table.
+
+
+ Constructs the command to create a CRLs table suitable for storing
+ objects.
+
+ The .
+ The .
+
+
+
+ The method to use for identifying a certificate.
+
+
+ The method to use for identifying a certificate.
+
+
+
+
+ The identifier type is unknown.
+
+
+
+
+ Identify the certificate by its Issuer and Serial Number properties.
+
+
+
+
+ Identify the certificate by the sha1 hash of its public key.
+
+
+
+
+ An S/MIME context that does not persist certificates, private keys or CRLs.
+
+
+ A is a special S/MIME context that
+ does not use a persistent store for certificates, private keys, or CRLs.
+ Instead, certificates, private keys, and CRLs are maintained in memory only.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the X.509 certificate matching the specified selector.
+
+
+ Gets the first certificate that matches the specified selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key for the certificate matching the specified selector.
+
+
+ Gets the private key for the first certificate that matches the specified selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ A trusted anchor is a trusted root-level X.509 certificate,
+ generally issued by a certificate authority (CA).
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ An intermediate certificate is any certificate that exists between the root
+ certificate issued by a Certificate Authority (CA) and the certificate at
+ the end of the chain.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ A Certificate Revocation List (CRL) is a list of certificate serial numbers issued
+ by a particular Certificate Authority (CA) that have been revoked, either by the CA
+ itself or by the owner of the revoked certificate.
+
+ The certificate revocation lists.
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate certificate and
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address.
+
+ A .
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets the for the specified mailbox.
+
+
+ Constructs a with the appropriate signing certificate
+ for the specified mailbox.
+ If the mailbox is a , the
+ property will be used instead of
+ the mailbox address for database lookups.
+
+ A .
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Imports the specified certificate.
+
+
+ Imports the specified certificate.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Imports the specified certificate revocation list.
+
+
+ Imports the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ An S/MIME cryptography context that uses Windows' .
+
+
+ An S/MIME cryptography context that uses Windows' .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The X.509 store location.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Constructs an S/MIME context using the current user's X.509 store location.
+
+
+
+
+ Gets the X.509 store location.
+
+
+ Gets the X.509 store location.
+
+ The store location.
+
+
+
+ Gets the X.509 certificate based on the selector.
+
+
+ Gets the X.509 certificate based on the selector.
+
+ The certificate on success; otherwise null.
+ The search criteria for the certificate.
+
+
+
+ Gets the private key based on the provided selector.
+
+
+ Gets the private key based on the provided selector.
+
+ The private key on success; otherwise null.
+ The search criteria for the private key.
+
+
+
+ Gets the trusted anchors.
+
+
+ Gets the trusted anchors.
+
+ The trusted anchors.
+
+
+
+ Gets the intermediate certificates.
+
+
+ Gets the intermediate certificates.
+
+ The intermediate certificates.
+
+
+
+ Gets the certificate revocation lists.
+
+
+ Gets the certificate revocation lists.
+
+ The certificate revocation lists.
+
+
+
+ Gets the X.509 certificate associated with the .
+
+
+ Gets the X.509 certificate associated with the .
+
+ The certificate.
+ The mailbox.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Gets the cms signer for the specified .
+
+
+ Gets the cms signer for the specified .
+
+ The cms signer.
+ The mailbox.
+ The preferred digest algorithm.
+
+ A certificate for the specified could not be found.
+
+
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+
+ Updates the known S/MIME capabilities of the client used by the recipient that owns the specified certificate.
+
+ The certificate.
+ The encryption algorithm capabilities of the client (in preferred order).
+ The timestamp.
+
+
+
+ Sign and encapsulate the content using the specified signer.
+
+
+ Sign and encapsulate the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Sign the content using the specified signer.
+
+
+ Sign the content using the specified signer.
+
+ A new instance
+ containing the detached signature data.
+ The signer.
+ The digest algorithm to use for signing.
+ The content.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The specified is not supported by this context.
+
+
+ A signing certificate could not be found for .
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Decrypt the encrypted data.
+
+
+ Decrypt the encrypted data.
+
+ The decrypted .
+ The encrypted data.
+
+ is null.
+
+
+ An error occurred in the cryptographic message syntax subsystem.
+
+
+
+
+ Import the specified certificate.
+
+
+ Import the specified certificate.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Import the specified certificate revocation list.
+
+
+ Import the specified certificate revocation list.
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+
+ Imports certificates and keys from a pkcs12-encoded stream.
+
+ The raw certificate and key data.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ Importing keys is not supported by this cryptography context.
+
+
+
+
+ An X.509 certificate chain.
+
+
+ An X.509 certificate chain.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new X.509 certificate chain.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new X.509 certificate chain based on the specified collection of certificates.
+
+ A collection of certificates.
+
+
+
+ Gets the index of the specified certificate within the chain.
+
+
+ Finds the index of the specified certificate, if it exists.
+
+ The index of the specified certificate if found; otherwise -1.
+ The certificate to get the index of.
+
+ is null.
+
+
+
+
+ Inserts the certificate at the specified index.
+
+
+ Inserts the certificate at the specified index in the certificates.
+
+ The index to insert the certificate.
+ The certificate.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the certificate at the specified index.
+
+
+ Removes the certificate at the specified index.
+
+ The index of the certificate to remove.
+
+ is out of range.
+
+
+
+
+ Gets or sets the certificate at the specified index.
+
+
+ Gets or sets the certificate at the specified index.
+
+ The internet certificate at the specified index.
+ The index of the certificate to get or set.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the number of certificates in the chain.
+
+
+ Indicates the number of certificates in the chain.
+
+ The number of certificates.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified certificate to the chain.
+
+
+ Adds the specified certificate to the chain.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Adds the specified range of certificates to the chain.
+
+
+ Adds the specified range of certificates to the chain.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Clears the certificate chain.
+
+
+ Removes all of the certificates from the chain.
+
+
+
+
+ Checks if the chain contains the specified certificate.
+
+
+ Determines whether or not the certificate chain contains the specified certificate.
+
+ true if the specified certificate exists;
+ otherwise false.
+ The certificate.
+
+ is null.
+
+
+
+
+ Copies all of the certificates in the chain to the specified array.
+
+
+ Copies all of the certificates within the chain into the array,
+ starting at the specified array index.
+
+ The array to copy the certificates to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified certificate from the chain.
+
+
+ Removes the specified certificate from the chain.
+
+ true if the certificate was removed; otherwise false.
+ The certificate.
+
+ is null.
+
+
+
+
+ Removes the specified range of certificates from the chain.
+
+
+ Removes the specified range of certificates from the chain.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the list of certificates.
+
+
+ Gets an enumerator for the list of certificates.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of certificates.
+
+
+ Gets an enumerator for the list of certificates.
+
+ The enumerator.
+
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ An X.509 certificate database.
+
+
+ An X.509 certificate database is used for storing certificates, metadata related to the certificates
+ (such as encryption algorithms supported by the associated client), certificate revocation lists (CRLs),
+ and private keys.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The password is used to encrypt and decrypt private keys in the database and cannot be null.
+
+ The password used for encrypting and decrypting the private keys.
+
+ is null.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Gets or sets the algorithm used for encrypting the private keys.
+
+
+ The encryption algorithm should be one of the PBE (password-based encryption) algorithms
+ supported by Bouncy Castle.
+ The default algorithm is SHA-256 + AES256.
+
+ The encryption algorithm.
+
+
+
+ Gets or sets the minimum iterations.
+
+
+ The default minimum number of iterations is 1024.
+
+ The minimum iterations.
+
+
+
+ Gets or sets the size of the salt.
+
+
+ The default salt size is 20.
+
+ The size of the salt.
+
+
+
+ Gets the column names for the specified fields.
+
+
+ Gets the column names for the specified fields.
+
+ The column names.
+ The fields.
+
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+
+ Gets the database command to select the record matching the specified certificate.
+
+ The database command.
+ The certificate.
+ The fields to return.
+
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+
+ Gets the database command to select the certificate records for the specified mailbox.
+
+ The database command.
+ The mailbox.
+ The date and time for which the certificate should be valid.
+ true if the certificate must have a private key.
+ The fields to return.
+
+
+
+ Gets the database command to select certificate records matching the specified selector.
+
+
+ Gets the database command to select certificate records matching the specified selector.
+
+ The database command.
+ Selector.
+ true if only trusted certificates should be matched.
+ true if the certificate must have a private key.
+ The fields to return.
+
+
+
+ Gets the column names for the specified fields.
+
+
+ Gets the column names for the specified fields.
+
+ The column names.
+ The fields.
+
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+
+ Gets the database command to select the CRL records matching the specified issuer.
+
+ The database command.
+ The issuer.
+ The fields to return.
+
+
+
+ Gets the database command to select the record for the specified CRL.
+
+
+ Gets the database command to select the record for the specified CRL.
+
+ The database command.
+ The X.509 CRL.
+ The fields to return.
+
+
+
+ Gets the database command to select all CRLs in the table.
+
+
+ Gets the database command to select all CRLs in the table.
+
+ The database command.
+
+
+
+ Gets the database command to delete the specified certificate record.
+
+
+ Gets the database command to delete the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to delete the specified CRL record.
+
+
+ Gets the database command to delete the specified CRL record.
+
+ The database command.
+ The record.
+
+
+
+ Gets the value for the specified column.
+
+
+ Gets the value for the specified column.
+
+ The value.
+ The certificate record.
+ The column name.
+
+ is not a known column name.
+
+
+
+
+ Gets the value for the specified column.
+
+
+ Gets the value for the specified column.
+
+ The value.
+ The CRL record.
+ The column name.
+
+ is not a known column name.
+
+
+
+
+ Gets the database command to insert the specified certificate record.
+
+
+ Gets the database command to insert the specified certificate record.
+
+ The database command.
+ The certificate record.
+
+
+
+ Gets the database command to insert the specified CRL record.
+
+
+ Gets the database command to insert the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Gets the database command to update the specified record.
+
+
+ Gets the database command to update the specified record.
+
+ The database command.
+ The certificate record.
+ The fields to update.
+
+
+
+ Gets the database command to update the specified CRL record.
+
+
+ Gets the database command to update the specified CRL record.
+
+ The database command.
+ The CRL record.
+
+
+
+ Find the specified certificate.
+
+
+ Searches the database for the specified certificate, returning the matching
+ record with the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Finds the certificates matching the specified selector.
+
+
+ Searches the database for certificates matching the selector, returning all
+ matching certificates.
+
+ The matching certificates.
+ The match selector or null to return all certificates.
+
+
+
+ Finds the private keys matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning the
+ private keys for each matching record.
+
+ The matching certificates.
+ The match selector or null to return all private keys.
+
+
+
+ Finds the certificate records for the specified mailbox.
+
+
+ Searches the database for certificates matching the specified mailbox that are valid
+ for the date and time specified, returning all matching records populated with the
+ desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The mailbox.
+ The date and time.
+ true if a private key is required.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Finds the certificate records matching the specified selector.
+
+
+ Searches the database for certificate records matching the selector, returning all
+ of the matching records populated with the desired fields.
+
+ The matching certificate records populated with the desired fields.
+ The match selector or null to match all certificates.
+ true if only trusted certificates should be returned.
+ The desired fields.
+
+
+
+ Add the specified certificate record.
+
+
+ Adds the specified certificate record to the database.
+
+ The certificate record.
+
+ is null.
+
+
+
+
+ Remove the specified certificate record.
+
+
+ Removes the specified certificate record from the database.
+
+ The certificate record.
+
+ is null.
+
+
+
+
+ Update the specified certificate record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The certificate record.
+ The fields to update.
+
+ is null.
+
+
+
+
+ Finds the CRL records for the specified issuer.
+
+
+ Searches the database for CRL records matching the specified issuer, returning
+ all matching records populated with the desired fields.
+
+ The matching CRL records populated with the desired fields.
+ The issuer.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Finds the specified certificate revocation list.
+
+
+ Searches the database for the specified CRL, returning the matching record with
+ the desired fields populated.
+
+ The matching record if found; otherwise null.
+ The certificate revocation list.
+ The desired fields.
+
+ is null.
+
+
+
+
+ Add the specified CRL record.
+
+
+ Adds the specified CRL record to the database.
+
+ The CRL record.
+
+ is null.
+
+
+
+
+ Remove the specified CRL record.
+
+
+ Removes the specified CRL record from the database.
+
+ The CRL record.
+
+ is null.
+
+
+
+
+ Update the specified CRL record.
+
+
+ Updates the specified fields of the record in the database.
+
+ The CRL record.
+
+ is null.
+
+
+
+
+ Gets a certificate revocation list store.
+
+
+ Gets a certificate revocation list store.
+
+ A certificate recovation list store.
+
+
+
+ Gets a collection of matching certificates matching the specified selector.
+
+
+ Gets a collection of matching certificates matching the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resource used by the object.
+
+ Call when you are finished using the
+ . The method leaves the
+ in an unusable state. After calling
+ , you must release all references to the
+ so the garbage collector can reclaim the memory that
+ the was occupying.
+
+
+
+ X509Certificate extension methods.
+
+
+ A collection of useful extension methods for an .
+
+
+
+
+ Gets the issuer name info.
+
+
+ For a list of available identifiers, see .
+
+ The issuer name info.
+ The certificate.
+ The name identifier.
+
+ is null.
+
+
+
+
+ Gets the issuer name info.
+
+
+ For a list of available identifiers, see .
+
+ The issuer name info.
+ The certificate.
+ The name identifier.
+
+ is null.
+
+
+
+
+ Gets the common name of the certificate.
+
+
+ Gets the common name of the certificate.
+
+ The common name.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the subject name of the certificate.
+
+
+ Gets the subject name of the certificate.
+
+ The subject name.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the subject email address of the certificate.
+
+
+ The email address component of the certificate's Subject identifier is
+ sometimes used as a way of looking up certificates for a particular
+ user if a fingerprint is not available.
+
+ The subject email address.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ A fingerprint is a SHA-1 hash of the raw certificate data and is often used
+ as a unique identifier for a particular certificate in a certificate store.
+
+ The fingerprint.
+ The certificate.
+
+ is null.
+
+
+
+
+ Gets the key usage flags.
+
+
+ The X.509 Key Usage Flags are used to determine which operations a certificate
+ may be used for.
+
+ The key usage flags.
+ The certificate.
+
+ is null.
+
+
+
+
+ X.509 certificate record fields.
+
+
+ The record fields are used when querying the
+ for certificates.
+
+
+
+
+ The "id" field is typically just the ROWID in the database.
+
+
+
+
+ The "trusted" field is a boolean value indicating whether the certificate
+ is trusted.
+
+
+
+
+ The "algorithms" field is used for storing the last known list of
+ values that are supported by the
+ client associated with the certificate.
+
+
+
+
+ The "algorithms updated" field is used to store the timestamp of the
+ most recent update to the Algorithms field.
+
+
+
+
+ The "certificate" field is sued for storing the binary data of the actual
+ certificate.
+
+
+
+
+ The "private key" field is used to store the encrypted binary data of the
+ private key associated with the certificate, if available.
+
+
+
+
+ An X.509 certificate record.
+
+
+ Represents an X.509 certificate record loaded from a database.
+
+
+
+
+ Gets the identifier.
+
+
+ The id is typically the ROWID of the certificate in the database and is not
+ generally useful outside of the internals of the database implementation.
+
+ The identifier.
+
+
+
+ Gets the basic constraints of the certificate.
+
+
+ Gets the basic constraints of the certificate.
+
+ The basic constraints of the certificate.
+
+
+
+ Gets or sets a value indicating whether the certificate is trusted.
+
+
+ Indiciates whether or not the certificate is trusted.
+
+ true if the certificate is trusted; otherwise, false.
+
+
+
+ Gets the key usage flags for the certificate.
+
+
+ Gets the key usage flags for the certificate.
+
+ The X.509 key usage.
+
+
+
+ Gets the starting date and time where the certificate is valid.
+
+
+ Gets the starting date and time where the certificate is valid.
+
+ The date and time.
+
+
+
+ Gets the end date and time where the certificate is valid.
+
+
+ Gets the end date and time where the certificate is valid.
+
+ The date and time.
+
+
+
+ Gets the certificate issuer's name.
+
+
+ Gets the certificate issuer's name.
+
+ The issuer's name.
+
+
+
+ Gets the serial number of the certificate.
+
+
+ Gets the serial number of the certificate.
+
+ The serial number.
+
+
+
+ Gets the subject email address.
+
+
+ Gets the subject email address.
+
+ The subject email address.
+
+
+
+ Gets the fingerprint of the certificate.
+
+
+ Gets the fingerprint of the certificate.
+
+ The fingerprint.
+
+
+
+ Gets or sets the encryption algorithm capabilities.
+
+
+ Gets or sets the encryption algorithm capabilities.
+
+ The encryption algorithms.
+
+
+
+ Gets or sets the date when the algorithms were last updated.
+
+
+ Gets or sets the date when the algorithms were last updated.
+
+ The date the algorithms were updated.
+
+
+
+ Gets the certificate.
+
+
+ Gets the certificate.
+
+ The certificate.
+
+
+
+ Gets the private key.
+
+
+ Gets the private key.
+
+ The private key.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new certificate record with a private key for storing in a
+ .
+
+ The certificate.
+ The private key.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a private key.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new certificate record for storing in a .
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is only meant to be used by implementors of
+ when loading records from the database.
+
+
+
+
+ A store for X.509 certificates and keys.
+
+
+ A store for X.509 certificates and keys.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Enumerates the certificates currently in the store.
+
+
+ Enumerates the certificates currently in the store.
+
+ The certificates.
+
+
+
+ Gets the private key for the specified certificate.
+
+
+ Gets the private key for the specified certificate, if it exists.
+
+ The private key on success; otherwise null.
+ The certificate.
+
+
+
+ Adds the specified certificate to the store.
+
+
+ Adds the specified certificate to the store.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Adds the specified range of certificates to the store.
+
+
+ Adds the specified range of certificates to the store.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Removes the specified certificate from the store.
+
+
+ Removes the specified certificate from the store.
+
+ The certificate.
+
+ is null.
+
+
+
+
+ Removes the specified range of certificates from the store.
+
+
+ Removes the specified range of certificates from the store.
+
+ The certificates.
+
+ is null.
+
+
+
+
+ Imports the certificate(s) from the specified stream.
+
+
+ Imports the certificate(s) from the specified stream.
+
+ The stream to import.
+
+ is null.
+
+
+ An error occurred reading the stream.
+
+
+
+
+ Imports the certificate(s) from the specified file.
+
+
+ Imports the certificate(s) from the specified file.
+
+ The name of the file to import.
+
+ is null.
+
+
+ The specified file could not be found.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Imports the certificate(s) from the specified byte array.
+
+
+ Imports the certificate(s) from the specified byte array.
+
+ The raw certificate data.
+
+ is null.
+
+
+
+
+ Imports certificates and private keys from the specified stream.
+
+
+ Imports certificates and private keys from the specified pkcs12 stream.
+
+ The stream to import.
+ The password to unlock the stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred reading the stream.
+
+
+
+
+ Imports certificates and private keys from the specified file.
+
+
+ Imports certificates and private keys from the specified pkcs12 stream.
+
+ The name of the file to import.
+ The password to unlock the file.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified file could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An error occurred reading the file.
+
+
+
+
+ Imports certificates and private keys from the specified byte array.
+
+
+ Imports certificates and private keys from the specified pkcs12 stream.
+
+ The raw certificate data.
+ The password to unlock the raw data.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Exports the certificates to an unencrypted stream.
+
+
+ Exports the certificates to an unencrypted stream.
+
+ The output stream.
+
+ is null.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Exports the certificates to an unencrypted file.
+
+
+ Exports the certificates to an unencrypted file.
+
+ The file path to write to.
+
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified path exceeds the maximum allowed path length of the system.
+
+
+ A directory in the specified path does not exist.
+
+
+ The user does not have access to create the specified file.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+ The output stream.
+ The password to use to lock the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+
+ Exports the specified stream and password to a pkcs12 encrypted file.
+
+ The file path to write to.
+ The password to use to lock the private keys.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified path exceeds the maximum allowed path length of the system.
+
+
+ A directory in the specified path does not exist.
+
+
+ The user does not have access to create the specified file.
+
+
+ An error occurred while writing to the stream.
+
+
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+
+ Gets an enumerator of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+
+ Gets a collection of matching X.509 certificates based on the specified selector.
+
+ The matching certificates.
+ The match criteria.
+
+
+
+ X.509 certificate revocation list record fields.
+
+
+ The record fields are used when querying the
+ for certificate revocation lists.
+
+
+
+
+ The "id" field is typically just the ROWID in the database.
+
+
+
+
+ The "delta" field is a boolean value indicating whether the certificate
+ revocation list is a delta.
+
+
+
+
+ The "issuer name" field stores the issuer name of the certificate revocation list.
+
+
+
+
+ The "this update" field stores the date and time of the most recent update.
+
+
+
+
+ The "next update" field stores the date and time of the next scheduled update.
+
+
+
+
+ The "crl" field stores the raw binary data of the certificate revocation list.
+
+
+
+
+ An X.509 certificate revocation list (CRL) record.
+
+
+ Represents an X.509 certificate revocation list record loaded from a database.
+
+
+
+
+ Gets the identifier.
+
+
+ The id is typically the ROWID of the certificate revocation list in the
+ database and is not generally useful outside of the internals of the
+ database implementation.
+
+ The identifier.
+
+
+
+ Gets whether or not this certificate revocation list is a delta.
+
+
+ Indicates whether or not this certificate revocation list is a delta.
+
+ true if th crl is delta; otherwise, false.
+
+
+
+ Gets the issuer name of the certificate revocation list.
+
+
+ Gets the issuer name of the certificate revocation list.
+
+ The issuer's name.
+
+
+
+ Gets the date and time of the most recent update.
+
+
+ Gets the date and time of the most recent update.
+
+ The date and time.
+
+
+
+ Gets the end date and time where the certificate is valid.
+
+
+ Gets the end date and time where the certificate is valid.
+
+ The date and time.
+
+
+
+ Gets the certificate revocation list.
+
+
+ Gets the certificate revocation list.
+
+ The certificate revocation list.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new CRL record for storing in a .
+
+ The certificate revocation list.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is only meant to be used by implementors of
+ when loading records from the database.
+
+
+
+
+ X.509 key usage flags.
+
+
+ The X.509 Key Usage Flags can be used to determine what operations
+ a certificate can be used for.
+ A value of indicates that
+ there are no restrictions on the use of the
+ .
+
+
+
+
+ No limitations for the key usage are set.
+
+
+ The key may be used for anything.
+
+
+
+
+ The key may only be used for enciphering data during key agreement.
+
+
+ When both the bit and the
+ bit are both set, the key
+ may be used only for enciphering data while
+ performing key agreement.
+
+
+
+
+ The key may be used for verifying signatures on
+ certificate revocation lists (CRLs).
+
+
+
+
+ The key may be used for verifying signatures on certificates.
+
+
+
+
+ The key is meant to be used for key agreement.
+
+
+
+
+ The key may be used for data encipherment.
+
+
+
+
+ The key is meant to be used for key encipherment.
+
+
+
+
+ The key may be used to verify digital signatures used to
+ provide a non-repudiation service.
+
+
+
+
+ The key may be used for digitally signing data.
+
+
+
+
+ The key may only be used for deciphering data during key agreement.
+
+
+ When both the bit and the
+ bit are both set, the key
+ may be used only for deciphering data while
+ performing key agreement.
+
+
+
+
+ Incrementally decodes content encoded with the base64 encoding.
+
+
+ Base64 is an encoding often used in MIME to encode binary content such
+ as images and other types of multi-media to ensure that the data remains
+ intact when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new base64 decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the base64 encoding.
+
+
+ Base64 is an encoding often used in MIME to encode binary content such
+ as images and other types of multi-media to ensure that the data remains
+ intact when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new base64 encoder.
+
+ true if this encoder will be used to encode rfc2047 encoded-word payloads; false otherwise.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new base64 encoder.
+
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with a Uri hex encoding.
+
+
+ This is mostly meant for decoding parameter values encoded using
+ the rules specified by rfc2184 and rfc2231.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new hex decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using a Uri hex encoding.
+
+
+ This is mostly meant for decoding parameter values encoded using
+ the rules specified by rfc2184 and rfc2231.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new hex encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ An interface for incrementally decoding content.
+
+
+ An interface for incrementally decoding content.
+
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ An interface for incrementally encoding content.
+
+
+ An interface for incrementally encoding content.
+
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ A pass-through decoder implementing the interface.
+
+
+ Simply copies data as-is from the input buffer into the output buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoding to return in the property.
+
+ Creates a new pass-through decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ A pass-through encoder implementing the interface.
+
+
+ Simply copies data as-is from the input buffer into the output buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+ The encoding to return in the property.
+
+ Creates a new pass-through encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Copies the input buffer into the output buffer, verbatim.
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Q-Encoding mode.
+
+
+ The encoding mode for the 'Q' encoding used in rfc2047.
+
+
+
+
+ A mode for encoding phrases, as defined by rfc822.
+
+
+
+
+ A mode for encoding text.
+
+
+
+
+ Incrementally encodes content using a variation of the quoted-printable encoding
+ that is specifically meant to be used for rfc2047 encoded-word tokens.
+
+
+ The Q-Encoding is an encoding often used in MIME to encode textual content outside
+ of the ASCII range within an rfc2047 encoded-word token in order to ensure that
+ the text remains intact when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new rfc2047 quoted-printable encoder.
+
+ The rfc2047 encoding mode.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with the quoted-printable encoding.
+
+
+ Quoted-Printable is an encoding often used in MIME to textual content outside
+ of the ASCII range in order to ensure that the text remains intact when sent
+ via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new quoted-printable decoder.
+
+
+ true if this decoder will be used to decode rfc2047 encoded-word payloads; false otherwise.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new quoted-printable decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the quoted-printable encoding.
+
+
+ Quoted-Printable is an encoding often used in MIME to encode textual content
+ outside of the ASCII range in order to ensure that the text remains intact
+ when sent via 7bit transports such as SMTP.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new quoted-printable encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with the Unix-to-Unix encoding.
+
+
+ The UUEncoding is an encoding that predates MIME and was used to encode
+ binary content such as images and other types of multi-media to ensure
+ that the data remained intact when sent via 7bit transports such as SMTP.
+ These days, the UUEncoding has largely been deprecated in favour of
+ the base64 encoding, however, some older mail clients still use it.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new Unix-to-Unix decoder.
+
+
+ If true, decoding begins immediately rather than after finding a begin-line.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new Unix-to-Unix decoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the Unix-to-Unix encoding.
+
+
+ The UUEncoding is an encoding that predates MIME and was used to encode
+ binary content such as images and other types of multi-media to ensure
+ that the data remained intact when sent via 7bit transports such as SMTP.
+ These days, the UUEncoding has largely been deprecated in favour of
+ the base64 encoding, however, some older mail clients still use it.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new Unix-to-Unix encoder.
+
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ Incrementally decodes content encoded with the yEnc encoding.
+
+
+ The yEncoding is an encoding that is most commonly used with Usenet and
+ is a binary encoding that includes a 32-bit cyclic redundancy check.
+ For more information, see www.yenc.org.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new yEnc decoder.
+
+
+ If true, decoding begins immediately rather than after finding an =ybegin line.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new yEnc decoder.
+
+
+
+
+ Gets the checksum.
+
+
+ Gets the checksum.
+
+ The checksum.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current decoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to decode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ A pointer to the beginning of the input buffer.
+ The length of the input buffer.
+ A pointer to the beginning of the output buffer.
+
+
+
+ Decodes the specified input into the output buffer.
+
+
+ Decodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ decoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the decoder.
+
+
+ Resets the state of the decoder.
+
+
+
+
+ Incrementally encodes content using the yEnc encoding.
+
+
+ The yEncoding is an encoding that is most commonly used with Usenet and
+ is a binary encoding that includes a 32-bit cyclic redundancy check.
+ For more information, see www.yenc.org.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new yEnc encoder.
+
+ The line length to use.
+
+
+
+ Gets the checksum.
+
+
+ Gets the checksum.
+
+ The checksum.
+
+
+
+ Clone the with its current state.
+
+
+ Creates a new with exactly the same state as the current encoder.
+
+ A new with identical state.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Estimates the length of the output.
+
+
+ Estimates the number of bytes needed to encode the specified number of input bytes.
+
+ The estimated output length.
+ The input length.
+
+
+
+ Encodes the specified input into the output buffer.
+
+
+ Encodes the specified input into the output buffer.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Encodes the specified input into the output buffer, flushing any internal buffer state as well.
+
+
+ Encodes the specified input into the output buffer, flusing any internal state as well.
+ The output buffer should be large enough to hold all of the
+ encoded input. For estimating the size needed for the output buffer,
+ see .
+
+ The number of bytes written to the output buffer.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer.
+ The output buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ is not large enough to contain the encoded content.
+ Use the method to properly determine the
+ necessary length of the byte array.
+
+
+
+
+ Resets the encoder.
+
+
+ Resets the state of the encoder.
+
+
+
+
+ A bounded stream, confined to reading and writing data to a limited subset of the overall source stream.
+
+
+ Wraps an arbitrary stream, limiting I/O operations to a subset of the source stream.
+ If the is -1, then the end of the stream is unbound.
+ When a is set to parse a persistent stream, it will construct
+ s using bounded streams instead of loading the content into memory.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ If the is less than 0, then the end of the stream
+ is unbounded.
+
+ The underlying stream.
+ The offset in the base stream that will mark the start of this substream.
+ The offset in the base stream that will mark the end of this substream.
+ true to leave the baseStream open after the
+ is disposed; otherwise, false.
+
+ is null.
+
+
+ is less than zero.
+ -or-
+ is greater than or equal to zero
+ -and- is less than .
+
+
+
+
+ Gets the underlying stream.
+
+
+ All I/O is performed on the base stream.
+
+ The underlying stream.
+
+
+
+ Gets the start boundary offset of the underlying stream.
+
+
+ The start boundary is the byte offset into the
+ that marks the beginning of the substream.
+
+ The start boundary offset of the underlying stream.
+
+
+
+ Gets the end boundary offset of the underlying stream.
+
+
+ The end boundary is the byte offset into the
+ that marks the end of the substream. If the value is less than 0,
+ then the end of the stream is treated as unbound.
+
+ The end boundary offset of the underlying stream.
+
+
+
+ Checks whether or not the underlying stream will remain open after
+ the is disposed.
+
+
+ Checks whether or not the underlying stream will remain open after
+ the is disposed.
+
+ true if the underlying stream should remain open after the
+ is disposed; otherwise, false.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The will only support reading if the
+ supports it.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The will only support writing if the
+ supports it.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ The will only support seeking if the
+ supports it.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not I/O operations can timeout.
+
+
+ The will only support timing out if the
+ supports it.
+
+ true if I/O operations can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ If the property is greater than or equal to 0,
+ then the length will be calculated by subtracting the
+ from the . If the end of the stream is unbound, then the
+ will be subtracted from the length of the
+ .
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ The is relative to the .
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+ Gets or sets the 's read timeout.
+
+ A value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+ Gets or sets the 's write timeout.
+
+ A value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads data from the , not allowing it to
+ read beyond the .
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Writes data to the , not allowing it to
+ write beyond the .
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Seeks within the confines of the and the .
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support seeking.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Flushes the .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Updates the to be plus
+ the specified new length. If the needs to be grown
+ to allow this, then the length of the will also be
+ updated.
+
+ The desired length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+ The stream does not support setting the length.
+
+
+ An I/O error occurred.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ If the property is false, then
+ the is also disposed.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A chained stream.
+
+
+ Chains multiple streams together such that reading or writing beyond the end
+ of one stream spills over into the next stream in the chain. The idea is to
+ make it appear is if the chain of streams is all one continuous stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Add the specified stream to the chained stream.
+
+
+ Adds the stream to the end of the chain.
+
+ The stream.
+ true if the
+ should remain open after the is disposed;
+ otherwise, false.
+
+ is null.
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The only supports reading if all of its
+ streams support it.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The only supports writing if all of its
+ streams support it.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ The only supports seeking if all of its
+ streams support it.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not I/O operations can timeout.
+
+
+ The only supports timeouts if all of its
+ streams support them.
+
+ true if I/O operations can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a is the combined lenths of all
+ of its chained streams.
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ It is always possible to get the position of a ,
+ but setting the position is only possible if all of its streams are seekable.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads up to the requested number of bytes if reading is supported. If the
+ current child stream does not have enough remaining data to complete the
+ read, the read will progress into the next stream in the chain in order
+ to complete the read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Writes the requested number of bytes if writing is supported. If the
+ current child stream does not have enough remaining space to fit the
+ complete buffer, the data will spill over into the next stream in the
+ chain in order to complete the write.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Seeks to the specified position within the stream if all child streams
+ support seeking.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support seeking.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ If all of the child streams support writing, then the current child stream
+ will be flushed.
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Setting the length of a is not supported.
+
+ The desired length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+ The stream does not support setting the length.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A stream which filters data as it is read or written.
+
+
+ Passes data through each as the data is read or written.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a filtered stream using the specified source stream.
+
+ The underlying stream to filter.
+
+ is null.
+
+
+
+
+ Gets the underlying source stream.
+
+
+ In general, it is not a good idea to manipulate the underlying
+ source stream because most s store
+ important state about previous bytes read from or written to
+ the source stream.
+
+ The underlying source stream.
+
+
+
+ Adds the specified filter.
+
+
+ Adds the to the end of the list of filters
+ that data will pass through as data is read from or written to the
+ underlying source stream.
+
+ The filter.
+
+ is null.
+
+
+
+
+ Checks if the filtered stream contains the specified filter.
+
+
+ Determines whether or not the filtered stream contains the specified filter.
+
+ true if the specified filter exists;
+ otherwise false.
+ The filter.
+
+ is null.
+
+
+
+
+ Remove the specified filter.
+
+
+ Removes the specified filter from the list if it exists.
+
+ true if the filter was removed; otherwise false.
+ The filter.
+
+ is null.
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The will only support reading if the
+ supports it.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The will only support writing if the
+ supports it.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ Seeking is not supported by the .
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not I/O operations can timeout.
+
+
+ The will only support timing out if the
+ supports it.
+
+ true if I/O operations can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ Getting the length of a is not supported.
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Getting and setting the position of a is not supported.
+
+ The position of the stream.
+
+ The stream does not support seeking.
+
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+ Gets or sets the read timeout on the stream.
+
+ A value, in miliseconds, that determines how long the stream will attempt to read before timing out.
+
+
+
+ Gets or sets a value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+ Gets or sets the write timeout on the stream.
+
+ A value, in miliseconds, that determines how long the stream will attempt to write before timing out.
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads up to the requested number of bytes, passing the data read from the stream
+ through each of the filters before finally copying the result into the provided buffer.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+ The cancellation token.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads up to the requested number of bytes, passing the data read from the stream
+ through each of the filters before finally copying the result into the provided buffer.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Filters the provided buffer through each of the filters before finally writing
+ the result to the underlying stream.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ The cancellation token.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Filters the provided buffer through each of the filters before finally writing
+ the result to the underlying stream.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Seeking is not supported by the .
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ The stream does not support seeking.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Flushes the state of all filters, writing any output to the underlying
+ stream and then calling on the .
+
+ The cancellation token.
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Flushes the state of all filters, writing any output to the underlying
+ stream and then calling on the .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Setting the length of a is not supported.
+
+ The desired length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+ The stream does not support setting the length.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ An interface allowing for a cancellable stream reading operation.
+
+
+ This interface is meant to extend the functionality of a ,
+ allowing the to have much finer-grained canellability.
+ When a custom stream implementation also implements this interface,
+ the will opt to use this interface
+ instead of the normal
+ API to read data from the stream.
+ This is really useful when parsing a message or other MIME entity
+ directly from a network-based stream.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ When a custom stream implementation also implements this interface,
+ the will opt to use this interface
+ instead of the normal
+ API to read data from the stream.
+ This is really useful when parsing a message or other MIME entity
+ directly from a network-based stream.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+ The cancellation token.
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ When a custom stream implementation also implements this interface,
+ writing a or
+ to the custom stream will opt to use this interface
+ instead of the normal
+ API to write data to the stream.
+ This is really useful when writing a message or other MIME entity
+ directly to a network-based stream.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+ The cancellation token
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+ The cancellation token.
+
+
+
+ A stream useful for measuring the amount of data written.
+
+
+ A keeps track of the number of bytes
+ that have been written to it. This is useful, for example, when you
+ need to know how large a is without
+ actually writing it to disk or into a memory buffer.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ A is not readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ A is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ A is always seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ Writing to a cannot timeout.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ The length of a indicates the
+ number of bytes that have been written to it.
+
+ The length of the stream in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Since it is possible to seek within a ,
+ it is possible that the position will not always be identical to the
+ length of the stream, but typically it will be.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reading from a is not supported.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ The stream has been disposed.
+
+
+ The stream does not support reading.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Increments the property by the number of bytes written.
+ If the updated position is greater than the current length of the stream, then
+ the property will be updated to be identical to the
+ position.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Updates the within the stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ Since a does not actually do anything other than
+ count bytes, this method is a no-op.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the to the specified value and updates
+ to the specified value if (and only if)
+ the current position is greater than the new length value.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ An efficient memory stream implementation that sacrifices the ability to
+ get access to the internal byte buffer in order to drastically improve
+ performance.
+
+
+ Instead of resizing an internal byte array, the
+ chains blocks of non-contiguous memory. This helps improve performance by avoiding
+ unneeded copying of data from the old array to the newly allocated array as well
+ as the zeroing of the newly allocated array.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with an initial memory block
+ of 2048 bytes.
+
+
+
+
+ Copies the memory stream into a byte array.
+
+
+ Copies all of the stream data into a newly allocated byte array.
+
+ The array.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The is always readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ The is always writable.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ The is always seekable.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Checks whether or not reading and writing to the stream can timeout.
+
+
+ The does not support timing out.
+
+ true if reading and writing to the stream can timeout; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ Gets the length of the stream, in bytes.
+
+ The length of the stream, in bytes.
+
+ The stream has been disposed.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Gets or sets the current position within the stream.
+
+ The position of the stream.
+
+ An I/O error occurred.
+
+
+ The stream does not support seeking.
+
+
+ The stream has been disposed.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ Writes the entire buffer to the stream and advances the current position
+ within the stream by the number of bytes written, adding memory blocks as
+ needed in order to contain the newly written bytes.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ The stream does not support writing.
+
+
+ An I/O error occurred.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ Sets the position within the current stream.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ is not a valid .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ This method does not do anything.
+
+
+ The stream has been disposed.
+
+
+
+
+ Sets the length of the stream.
+
+
+ Sets the length of the stream.
+
+ The desired length of the stream in bytes.
+
+ is out of range.
+
+
+ The stream has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ A filter that armors lines beginning with "From " by encoding the 'F' with the
+ Quoted-Printable encoding.
+
+
+ From-armoring is a workaround to prevent receiving clients (or servers)
+ that uses the mbox file format for local storage from munging the line
+ by prepending a ">", as is typical with the mbox format.
+ This armoring technique ensures that the receiving client will still
+ be able to verify S/MIME signatures.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter that can be used to determine the most efficient Content-Transfer-Encoding.
+
+
+ Keeps track of the content that gets passed through the filter in order to
+ determine the most efficient to use.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the best encoding given the specified constraints.
+
+
+ Gets the best encoding given the specified constraints.
+
+ The best encoding.
+ The encoding constraint.
+ The maximum allowable line length (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A charset filter for incrementally converting text streams from
+ one charset encoding to another.
+
+
+ Incrementally converts text from one charset encoding to another.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new to convert text from the specified
+ source encoding into the target charset encoding.
+
+ Source encoding name.
+ Target encoding name.
+
+ is null.
+ -or-
+ is null.
+
+
+ The is not supported by the system.
+ -or-
+ The is not supported by the system.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new to convert text from the specified
+ source encoding into the target charset encoding.
+
+ Source code page.
+ Target code page.
+
+ is less than zero or greater than 65535.
+ -or-
+ is less than zero or greater than 65535.
+
+
+ The is not supported by the system.
+ -or-
+ The is not supported by the system.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new to convert text from the specified
+ source encoding into the target charset encoding.
+
+ Source encoding.
+ Target encoding.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets the source encoding.
+
+
+ Gets the source encoding.
+
+ The source encoding.
+
+
+
+ Gets the target encoding.
+
+
+ Gets the target encoding.
+
+ The target encoding.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter for decoding MIME content.
+
+
+ Uses a to incrementally decode data.
+
+
+
+
+ Gets the decoder used by this filter.
+
+
+ Gets the decoder used by this filter.
+
+ The decoder.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the decoder supports.
+
+ The encoding.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the specified decoder.
+
+ A specific decoder for the filter to use.
+
+ is null.
+
+
+
+
+ Create a filter that will decode the specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new decoder filter.
+ The encoding to create a filter for.
+
+
+
+ Create a filter that will decode the specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new decoder filter.
+ The name of the encoding to create a filter for.
+
+ is null.
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter that will convert from Windows/DOS line endings to Unix line endings.
+
+
+ Converts from Windows/DOS line endings to Unix line endings.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ Ensure that the stream ends with a new line.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter for encoding MIME content.
+
+
+ Uses a to incrementally encode data.
+
+
+
+
+ Gets the encoder used by this filter.
+
+
+ Gets the encoder used by this filter.
+
+ The encoder.
+
+
+
+ Gets the encoding.
+
+
+ Gets the encoding that the encoder supports.
+
+ The encoding.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new using the specified encoder.
+
+ A specific encoder for the filter to use.
+
+
+
+ Create a filter that will encode using specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new encoder filter.
+ The encoding to create a filter for.
+
+
+
+ Create a filter that will encode using specified encoding.
+
+
+ Creates a new for the specified encoding.
+
+ A new encoder filter.
+ The name of the encoding to create a filter for.
+
+ is null.
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ An interface for incrementally filtering data.
+
+
+ An interface for incrementally filtering data.
+
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A base implementation for MIME filters.
+
+
+ A base implementation for MIME filters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the output buffer.
+
+
+ Gets the output buffer.
+
+ The output buffer.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ Saves the remaining input for the next round of processing.
+
+
+ Saves the remaining input for the next round of processing.
+
+ The input buffer.
+ The starting index of the buffer to save.
+ The length of the buffer to save, starting at .
+
+
+
+ Ensures that the output buffer is greater than or equal to the specified size.
+
+
+ Ensures that the output buffer is greater than or equal to the specified size.
+
+ The minimum size needed.
+ If set to true, the current output should be preserved.
+
+
+
+ A filter that simply passes data through without any processing.
+
+
+ Passes data through without any processing.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filters the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Filters the specified input, flushing all internally buffered data to the output.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes of the input to filter.
+ The starting index of the output in the returned buffer.
+ The length of the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter for stripping trailing whitespace from lines in a textual stream.
+
+
+ Strips trailing whitespace from lines in a textual stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A filter that will convert from Unix line endings to Windows/DOS line endings.
+
+
+ Converts from Unix line endings to Windows/DOS line endings.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ Ensure that the stream ends with a new line.
+
+
+
+ Filter the specified input.
+
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ The length of the input buffer, starting at .
+ The output index.
+ The output length.
+ If set to true, all internally buffered data should be flushed to the output buffer.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A flowed text to HTML converter.
+
+
+ Used to convert flowed text (as described in rfc3676) into HTML.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new flowed text to HTML converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set whether the trailing space on a wrapped line should be deleted.
+
+
+ Gets or sets whether the trailing space on a wrapped line should be deleted.
+ The flowed text format defines a Content-Type parameter called "delsp" which can
+ have a value of "yes" or "no". If the parameter exists and the value is "yes", then
+ should be set to true, otherwise
+ should be set to false.
+
+
+
+
+ true if the trailing space on a wrapped line should be deleted; otherwise, false.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Get or set the header format.
+
+
+ Gets or sets the header format.
+
+ The header format.
+
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+ The html tag callback.
+
+
+
+ Get or set whether or not the converter should only output an HTML fragment.
+
+
+ Gets or sets whether or not the converter should only output an HTML fragment.
+
+ true if the converter should only output an HTML fragment; otherwise, false.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A flowed text to text converter.
+
+
+ Unwraps the flowed text format described in rfc3676.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new flowed text to text converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set whether the trailing space on a wrapped line should be deleted.
+
+
+ Gets or sets whether the trailing space on a wrapped line should be deleted.
+ The flowed text format defines a Content-Type parameter called "delsp" which can
+ have a value of "yes" or "no". If the parameter exists and the value is "yes", then
+ should be set to true, otherwise
+ should be set to false.
+
+ true if the trailing space on a wrapped line should be deleted; otherwise, false.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ An enumeration of possible header and footer formats.
+
+
+ An enumeration of possible header and footer formats.
+
+
+
+
+ The header or footer contains plain text.
+
+
+
+
+ The header or footer contains properly formatted HTML.
+
+
+
+
+ An HTML attribute.
+
+
+ An HTML attribute.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new HTML attribute with the given id and value.
+
+ The attribute identifier.
+ The attribute value.
+
+ is not a valid value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new HTML attribute with the given name and value.
+
+ The attribute name.
+ The attribute value.
+
+ is null.
+
+
+
+
+ Get the HTML attribute identifier.
+
+
+ Gets the HTML attribute identifier.
+
+
+
+
+ The attribute identifier.
+
+
+
+ Get the name of the attribute.
+
+
+ Gets the name of the attribute.
+
+
+
+
+ The name of the attribute.
+
+
+
+ Get the value of the attribute.
+
+
+ Gets the value of the attribute.
+
+
+
+
+ The value of the attribute.
+
+
+
+ A readonly collection of HTML attributes.
+
+
+ A readonly collection of HTML attributes.
+
+
+
+
+ An empty attribute collection.
+
+
+ An empty attribute collection.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ A collection of attributes.
+
+
+
+ Get the number of attributes in the collection.
+
+
+ Gets the number of attributes in the collection.
+
+ The number of attributes in the collection.
+
+
+
+ Get the at the specified index.
+
+
+ Gets the at the specified index.
+
+ The HTML attribute at the specified index.
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets an enumerator for the attribute collection.
+
+
+ Gets an enumerator for the attribute collection.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the attribute collection.
+
+
+ Gets an enumerator for the attribute collection.
+
+ The enumerator.
+
+
+
+ HTML attribute identifiers.
+
+
+ HTML attribute identifiers.
+
+
+
+
+ An unknown HTML attribute identifier.
+
+
+
+
+ The "abbr" attribute.
+
+
+
+
+ The "accept" attribute.
+
+
+
+
+ The "accept-charset" attribute.
+
+
+
+
+ The "accesskey" attribute.
+
+
+
+
+ The "action" attribute.
+
+
+
+
+ The "align" attribute.
+
+
+
+
+ The "alink" attribute.
+
+
+
+
+ The "alt" attribute.
+
+
+
+
+ The "archive" attribute.
+
+
+
+
+ The "axis" attribute.
+
+
+
+
+ The "background" attribute.
+
+
+
+
+ The "bgcolor" attribute.
+
+
+
+
+ The "border" attribute.
+
+
+
+
+ The "cellpadding" attribute.
+
+
+
+
+ The "cellspacing" attribute.
+
+
+
+
+ The "char" attribute.
+
+
+
+
+ The "charoff" attribute.
+
+
+
+
+ The "charset" attribute.
+
+
+
+
+ The "checked" attribute.
+
+
+
+
+ The "cite" attribute.
+
+
+
+
+ The "class" attribute.
+
+
+
+
+ The "classid" attribute.
+
+
+
+
+ The "clear" attribute.
+
+
+
+
+ The "code" attribute.
+
+
+
+
+ The "codebase" attribute.
+
+
+
+
+ The "codetype" attribute.
+
+
+
+
+ The "color" attribute.
+
+
+
+
+ The "cols" attribute.
+
+
+
+
+ The "colspan" attribute.
+
+
+
+
+ The "compact" attribute.
+
+
+
+
+ The "content" attribute.
+
+
+
+
+ The "coords" attribute.
+
+
+
+
+ The "data" attribute.
+
+
+
+
+ The "datetime" attribute.
+
+
+
+
+ The "declare" attribute.
+
+
+
+
+ The "defer" attribute.
+
+
+
+
+ The "dir" attribute.
+
+
+
+
+ The "disabled" attribute.
+
+
+
+
+ The "dynsrc" attribute.
+
+
+
+
+ The "enctype" attribute.
+
+
+
+
+ The "face" attribute.
+
+
+
+
+ The "for" attribute.
+
+
+
+
+ The "frame" attribute.
+
+
+
+
+ The "frameborder" attribute.
+
+
+
+
+ The "headers" attribute.
+
+
+
+
+ The "height" attribute.
+
+
+
+
+ The "href" attribute.
+
+
+
+
+ The "hreflang" attribute.
+
+
+
+
+ The "hspace" attribute.
+
+
+
+
+ The "http-equiv" attribute.
+
+
+
+
+ The "id" attribute.
+
+
+
+
+ The "ismap" attribute.
+
+
+
+
+ The "label" attribute.
+
+
+
+
+ The "lang" attribute.
+
+
+
+
+ The "language" attribute.
+
+
+
+
+ The "leftmargin" attribute.
+
+
+
+
+ The "link" attribute.
+
+
+
+
+ The "longdesc" attribute.
+
+
+
+
+ The "lowsrc" attribute.
+
+
+
+
+ The "marginheight" attribute.
+
+
+
+
+ The "marginwidth" attribute.
+
+
+
+
+ The "maxlength" attribute.
+
+
+
+
+ The "media" attribute.
+
+
+
+
+ The "method" attribute.
+
+
+
+
+ The "multiple" attribute.
+
+
+
+
+ The "name" attribute.
+
+
+
+
+ The "nohref" attribute.
+
+
+
+
+ The "noresize" attribute.
+
+
+
+
+ The "noshade" attribute.
+
+
+
+
+ The "nowrap" attribute.
+
+
+
+
+ The "object" attribute.
+
+
+
+
+ The "profile" attribute.
+
+
+
+
+ The "prompt" attribute.
+
+
+
+
+ The "readonly" attribute.
+
+
+
+
+ The "rel" attribute.
+
+
+
+
+ The "rev" attribute.
+
+
+
+
+ The "rows" attribute.
+
+
+
+
+ The "rowspan" attribute.
+
+
+
+
+ The "rules" attribute.
+
+
+
+
+ The "scheme" attribute.
+
+
+
+
+ The "scope" attribute.
+
+
+
+
+ The "scrolling" attribute.
+
+
+
+
+ The "selected" attribute.
+
+
+
+
+ The "shape" attribute.
+
+
+
+
+ The "size" attribute.
+
+
+
+
+ The "span" attribute.
+
+
+
+
+ The "src" attribute.
+
+
+
+
+ The "standby" attribute.
+
+
+
+
+ The "start" attribute.
+
+
+
+
+ The "style" attribute.
+
+
+
+
+ The "summary" attribute.
+
+
+
+
+ The "tabindex" attribute.
+
+
+
+
+ The "target" attribute.
+
+
+
+
+ The "text" attribute.
+
+
+
+
+ The "title" attribute.
+
+
+
+
+ The "topmargin" attribute.
+
+
+
+
+ The "type" attribute.
+
+
+
+
+ The "usemap" attribute.
+
+
+
+
+ The "valign" attribute.
+
+
+
+
+ The "value" attribute.
+
+
+
+
+ The "valuetype" attribute.
+
+
+
+
+ The "version" attribute.
+
+
+
+
+ The "vlink" attribute.
+
+
+
+
+ The "vspace" attribute.
+
+
+
+
+ The "width" attribute.
+
+
+
+
+ The "xmlns" attribute.
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent attribute name.
+
+
+ Converts the enum value into the equivalent attribute name.
+
+ The attribute name.
+ The enum value.
+
+
+
+ Converts the attribute name into the equivalent attribute id.
+
+
+ Converts the attribute name into the equivalent attribute id.
+
+ The attribute id.
+ The attribute name.
+
+
+
+ An HTML entity decoder.
+
+
+ An HTML entity decoder.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Push the specified character into the HTML entity decoder.
+
+
+ Pushes the specified character into the HTML entity decoder.
+ The first character pushed MUST be the '&' character.
+
+ true if the character was accepted; otherwise, false.
+ The character.
+
+ is the first character being pushed and was not the '&' character.
+
+
+
+
+ Get the decoded entity value.
+
+
+ Gets the decoded entity value.
+
+ The value.
+
+
+
+ Reset the entity decoder.
+
+
+ Resets the entity decoder.
+
+
+
+
+ An HTML namespace.
+
+
+ An HTML namespace.
+
+
+
+
+ The namespace is "http://www.w3.org/1999/xhtml".
+
+
+
+
+ The namespace is "http://www.w3.org/1998/Math/MathML".
+
+
+
+
+ The namespace is "http://www.w3.org/2000/svg".
+
+
+
+
+ The namespace is "http://www.w3.org/1999/xlink".
+
+
+
+
+ The namespace is "http://www.w3.org/XML/1998/namespace".
+
+
+
+
+ The namespace is "http://www.w3.org/2000/xmlns/".
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent namespace url.
+
+
+ Converts the enum value into the equivalent namespace url.
+
+ The tag name.
+ The enum value.
+
+
+
+ Converts the tag name into the equivalent tag id.
+
+
+ Converts the tag name into the equivalent tag id.
+
+ The tag id.
+ The namespace.
+
+
+
+ An HTML tag callback delegate.
+
+
+ The delegate is called when a converter
+ is ready to write a new HTML tag, allowing developers to customize
+ whether the tag gets written at all, which attributes get written, etc.
+
+
+
+
+ The HTML tag context.
+ The HTML writer.
+
+
+
+ An HTML tag context.
+
+
+ An HTML tag context used with the delegate.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The HTML tag identifier.
+
+ is invalid.
+
+
+
+
+ Get the HTML tag attributes.
+
+
+ Gets the HTML tag attributes.
+
+
+
+
+ The attributes.
+
+
+
+ Get or set whether or not the end tag should be deleted.
+
+
+ Gets or sets whether or not the end tag should be deleted.
+
+ true if the end tag should be deleted; otherwise, false.
+
+
+
+ Get or set whether or not the tag should be deleted.
+
+
+ Gets or sets whether or not the tag should be deleted.
+
+ true if the tag should be deleted; otherwise, false.
+
+
+
+ Get or set whether or not the should be invoked for the end tag.
+
+
+ Gets or sets whether or not the should be invoked for the end tag.
+
+ true if the callback should be invoked for end tag; otherwise, false.
+
+
+
+ Get whether or not the tag is an empty element.
+
+
+ Gets whether or not the tag is an empty element.
+
+ true if the tag is an empty element; otherwise, false.
+
+
+
+ Get whether or not the tag is an end tag.
+
+
+ Gets whether or not the tag is an end tag.
+
+
+
+
+ true if the tag is an end tag; otherwise, false.
+
+
+
+ Get or set whether or not the inner content of the tag should be suppressed.
+
+
+ Gets or sets whether or not the inner content of the tag should be suppressed.
+
+ true if the inner content should be suppressed; otherwise, false.
+
+
+
+ Get the HTML tag identifier.
+
+
+ Gets the HTML tag identifier.
+
+
+
+
+ The HTML tag identifier.
+
+
+
+ Get the HTML tag name.
+
+
+ Gets the HTML tag name.
+
+
+
+
+ The HTML tag name.
+
+
+
+ Write the HTML tag.
+
+
+ Writes the HTML tag to the given .
+
+ The HTML writer.
+
+ is null.
+
+
+
+
+ Write the HTML tag.
+
+
+ Writes the HTML tag to the given .
+
+
+
+
+ The HTML writer.
+ true if the should also be written; otherwise, false.
+
+ is null.
+
+
+
+
+ HTML tag identifiers.
+
+
+ HTML tag identifiers.
+
+
+
+
+ An unknown HTML tag identifier.
+
+
+
+
+ The HTML <a> tag.
+
+
+
+
+ The HTML <abbr> tag.
+
+
+
+
+ The HTML <acronym> tag.
+
+
+
+
+ The HTML <address> tag.
+
+
+
+
+ The HTML <applet> tag.
+
+
+
+
+ The HTML <area> tag.
+
+
+
+
+ The HTML <article> tag.
+
+
+
+
+ The HTML <aside> tag.
+
+
+
+
+ The HTML <audio> tag.
+
+
+
+
+ The HTML <b> tag.
+
+
+
+
+ The HTML <base> tag.
+
+
+
+
+ The HTML <basefont> tag.
+
+
+
+
+ The HTML <bdi> tag.
+
+
+
+
+ The HTML <bdo> tag.
+
+
+
+
+ The HTML <bgsound> tag.
+
+
+
+
+ The HTML <big> tag.
+
+
+
+
+ The HTML <blink> tag.
+
+
+
+
+ The HTML <blockquote> tag.
+
+
+
+
+ The HTML <body> tag.
+
+
+
+
+ The HTML <br> tag.
+
+
+
+
+ The HTML <button> tag.
+
+
+
+
+ The HTML <canvas> tag.
+
+
+
+
+ The HTML <caption> tag.
+
+
+
+
+ The HTML <center> tag.
+
+
+
+
+ The HTML <cite> tag.
+
+
+
+
+ The HTML <code> tag.
+
+
+
+
+ The HTML <col> tag.
+
+
+
+
+ The HTML <colgroup> tag.
+
+
+
+
+ The HTML <command> tag.
+
+
+
+
+ The HTML comment tag.
+
+
+
+
+ The HTML <datalist> tag.
+
+
+
+
+ The HTML <dd> tag.
+
+
+
+
+ The HTML <del> tag.
+
+
+
+
+ The HTML <details> tag.
+
+
+
+
+ The HTML <dfn> tag.
+
+
+
+
+ The HTML <dialog> tag.
+
+
+
+
+ The HTML <dir> tag.
+
+
+
+
+ The HTML <div> tag.
+
+
+
+
+ The HTML <dl> tag.
+
+
+
+
+ The HTML <dt> tag.
+
+
+
+
+ The HTML <em> tag.
+
+
+
+
+ The HTML <embed> tag.
+
+
+
+
+ The HTML <fieldset> tag.
+
+
+
+
+ The HTML <figcaption> tag.
+
+
+
+
+ The HTML <figure> tag.
+
+
+
+
+ The HTML <font> tag.
+
+
+
+
+ The HTML <footer> tag.
+
+
+
+
+ The HTML <form> tag.
+
+
+
+
+ The HTML <frame> tag.
+
+
+
+
+ The HTML <frameset> tag.
+
+
+
+
+ The HTML <h1> tag.
+
+
+
+
+ The HTML <h2> tag.
+
+
+
+
+ The HTML <h3> tag.
+
+
+
+
+ The HTML <h4> tag.
+
+
+
+
+ The HTML <h5> tag.
+
+
+
+
+ The HTML <h6> tag.
+
+
+
+
+ The HTML <head> tag.
+
+
+
+
+ The HTML <header> tag.
+
+
+
+
+ The HTML <hr> tag.
+
+
+
+
+ The HTML <html> tag.
+
+
+
+
+ The HTML <i> tag.
+
+
+
+
+ The HTML <iframe> tag.
+
+
+
+
+ The HTML <image> tag.
+
+
+
+
+ The HTML <input> tag.
+
+
+
+
+ The HTML <ins> tag.
+
+
+
+
+ The HTML <isindex> tag.
+
+
+
+
+ The HTML <kbd> tag.
+
+
+
+
+ The HTML <keygen> tag.
+
+
+
+
+ The HTML <label> tag.
+
+
+
+
+ The HTML <legend> tag.
+
+
+
+
+ The HTML <li> tag.
+
+
+
+
+ The HTML <link> tag.
+
+
+
+
+ The HTML <listing> tag.
+
+
+
+
+ The HTML <main> tag.
+
+
+
+
+ The HTML <map> tag.
+
+
+
+
+ The HTML <mark> tag.
+
+
+
+
+ The HTML <marquee> tag.
+
+
+
+
+ The HTML <menu> tag.
+
+
+
+
+ The HTML <menuitem> tag.
+
+
+
+
+ The HTML <meta> tag.
+
+
+
+
+ The HTML <meter> tag.
+
+
+
+
+ The HTML <nav> tag.
+
+
+
+
+ The HTML <nextid> tag.
+
+
+
+
+ The HTML <nobr> tag.
+
+
+
+
+ The HTML <noembed> tag.
+
+
+
+
+ The HTML <noframes> tag.
+
+
+
+
+ The HTML <noscript> tag.
+
+
+
+
+ The HTML <object> tag.
+
+
+
+
+ The HTML <ol> tag.
+
+
+
+
+ The HTML <optgroup> tag.
+
+
+
+
+ The HTML <option> tag.
+
+
+
+
+ The HTML <output> tag.
+
+
+
+
+ The HTML <p> tag.
+
+
+
+
+ The HTML <param> tag.
+
+
+
+
+ The HTML <plaintext> tag.
+
+
+
+
+ The HTML <pre> tag.
+
+
+
+
+ The HTML <progress> tag.
+
+
+
+
+ The HTML <q> tag.
+
+
+
+
+ The HTML <rp> tag.
+
+
+
+
+ The HTML <rt> tag.
+
+
+
+
+ The HTML <ruby> tag.
+
+
+
+
+ The HTML <s> tag.
+
+
+
+
+ The HTML <samp> tag.
+
+
+
+
+ The HTML <script> tag.
+
+
+
+
+ The HTML <section> tag.
+
+
+
+
+ The HTML <select> tag.
+
+
+
+
+ The HTML <small> tag.
+
+
+
+
+ The HTML <source> tag.
+
+
+
+
+ The HTML <span> tag.
+
+
+
+
+ The HTML <strike> tag.
+
+
+
+
+ The HTML <strong> tag.
+
+
+
+
+ The HTML <style> tag.
+
+
+
+
+ The HTML <sub> tag.
+
+
+
+
+ The HTML <summary> tag.
+
+
+
+
+ The HTML <sup> tag.
+
+
+
+
+ The HTML <table> tag.
+
+
+
+
+ The HTML <tbody> tag.
+
+
+
+
+ The HTML <td> tag.
+
+
+
+
+ The HTML <textarea> tag.
+
+
+
+
+ The HTML <tfoot> tag.
+
+
+
+
+ The HTML <th> tag.
+
+
+
+
+ The HTML <thread> tag.
+
+
+
+
+ The HTML <time> tag.
+
+
+
+
+ The HTML <title> tag.
+
+
+
+
+ The HTML <tr> tag.
+
+
+
+
+ The HTML <track> tag.
+
+
+
+
+ The HTML <tt> tag.
+
+
+
+
+ The HTML <u> tag.
+
+
+
+
+ The HTML <ul> tag.
+
+
+
+
+ The HTML <var> tag.
+
+
+
+
+ The HTML <video> tag.
+
+
+
+
+ The HTML <wbr> tag.
+
+
+
+
+ The HTML <xml> tag.
+
+
+
+
+ The HTML <xmp> tag.
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent tag name.
+
+
+ Converts the enum value into the equivalent tag name.
+
+ The tag name.
+ The enum value.
+
+
+
+ Converts the tag name into the equivalent tag id.
+
+
+ Converts the tag name into the equivalent tag id.
+
+ The tag id.
+ The tag name.
+
+
+
+ Determines whether or not the HTML tag is an empty element.
+
+
+ Determines whether or not the HTML tag is an empty element.
+
+ true if the tag is an empty element; otherwise, false.
+ Identifier.
+
+
+
+ Determines whether or not the HTML tag is a formatting element.
+
+
+ Determines whether or not the HTML tag is a formatting element.
+
+ true if the HTML tag is a formatting element; otherwise, false.
+ The HTML tag identifier.
+
+
+
+ An HTML to HTML converter.
+
+
+ Used to convert HTML into HTML.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new HTML to HTML converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set whether or not executable scripts should be stripped from the output.
+
+
+ Gets or sets whether or not executable scripts should be stripped from the output.
+
+ true if executable scripts should be filtered; otherwise, false.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Get or set the header format.
+
+
+ Gets or sets the header format.
+
+ The header format.
+
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+ The html tag callback.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ An abstract HTML token class.
+
+
+ An abstract HTML token class.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The kind of token.
+
+
+
+ Get the kind of HTML token that this object represents.
+
+
+ Gets the kind of HTML token that this object represents.
+
+ The kind of token.
+
+
+
+ Write the HTML token to a .
+
+
+ Writes the HTML token to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ An HTML comment token.
+
+
+ An HTML comment token.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The comment text.
+ true if the comment is bogus; otherwise, false.
+
+ is null.
+
+
+
+
+ Get the comment.
+
+
+ Gets the comment.
+
+ The comment.
+
+
+
+ Get whether or not the comment is a bogus comment.
+
+
+ Gets whether or not the comment is a bogus comment.
+
+ true if the comment is bogus; otherwise, false.
+
+
+
+ Write the HTML comment to a .
+
+
+ Writes the HTML comment to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML token constisting of character data.
+
+
+ An HTML token consisting of character data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The kind of character data.
+ The character data.
+
+ is not a valid .
+
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The character data.
+
+ is null.
+
+
+
+
+ Get the character data.
+
+
+ Gets the character data.
+
+ The character data.
+
+
+
+ Write the HTML character data to a .
+
+
+ Writes the HTML character data to a ,
+ encoding it if it isn't already encoded.
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML token constisting of [CDATA[.
+
+
+ An HTML token consisting of [CDATA[.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The character data.
+
+ is null.
+
+
+
+
+ Write the HTML character data to a .
+
+
+ Writes the HTML character data to a ,
+ encoding it if it isn't already encoded.
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML token constisting of script data.
+
+
+ An HTML token consisting of script data.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The script data.
+
+ is null.
+
+
+
+
+ Write the HTML script data to a .
+
+
+ Writes the HTML script data to a ,
+ encoding it if it isn't already encoded.
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML tag token.
+
+
+ An HTML tag token.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The name of the tag.
+ The attributes.
+ true if the tag is an empty element; otherwise, false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The name of the tag.
+ true if the tag is an end tag; otherwise, false.
+
+ is null.
+
+
+
+
+ Get the attributes.
+
+
+ Gets the attributes.
+
+ The attributes.
+
+
+
+ Get the HTML tag identifier.
+
+
+ Gets the HTML tag identifier.
+
+ The HTML tag identifier.
+
+
+
+ Get whether or not the tag is an empty element.
+
+
+ Gets whether or not the tag is an empty element.
+
+ true if the tag is an empty element; otherwise, false.
+
+
+
+ Get whether or not the tag is an end tag.
+
+
+ Gets whether or not the tag is an end tag.
+
+ true if the tag is an end tag; otherwise, false.
+
+
+
+ Get the name of the tag.
+
+
+ Gets the name of the tag.
+
+ The name.
+
+
+
+ Write the HTML tag to a .
+
+
+ Writes the HTML tag to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML DOCTYPE token.
+
+
+ An HTML DOCTYPE token.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Get whether or not quirks-mode should be forced.
+
+
+ Gets whether or not quirks-mode should be forced.
+
+ true if quirks-mode should be forced; otherwise, false.
+
+
+
+ Get or set the DOCTYPE name.
+
+
+ Gets or sets the DOCTYPE name.
+
+ The name.
+
+
+
+ Get or set the public identifier.
+
+
+ Gets or sets the public identifier.
+
+ The public identifier.
+
+
+
+ Get the public keyword that was used.
+
+
+ Gets the public keyword that was used.
+
+ The public keyword or null if it wasn't used.
+
+
+
+ Get or set the system identifier.
+
+
+ Gets or sets the system identifier.
+
+ The system identifier.
+
+
+
+ Get the system keyword that was used.
+
+
+ Gets the system keyword that was used.
+
+ The system keyword or null if it wasn't used.
+
+
+
+ Write the DOCTYPE tag to a .
+
+
+ Writes the DOCTYPE tag to a .
+
+ The output.
+
+ is null.
+
+
+
+
+ An HTML tokenizer.
+
+
+ Tokenizes HTML text, emitting an for each token it encounters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The .
+
+
+
+ Get or set whether or not the tokenizer should decode character references.
+
+
+ Gets or sets whether or not the tokenizer should decode character references.
+ Character references in attribute values will still be decoded
+ even if this value is set to false.
+
+ true if character references should be decoded; otherwise, false.
+
+
+
+ Get the current HTML namespace detected by the tokenizer.
+
+
+ Gets the current HTML namespace detected by the tokenizer.
+
+ The html namespace.
+
+
+
+ Gets the current line number.
+
+
+ This property is most commonly used for error reporting, but can be called
+ at any time. The starting value for this property is 1.
+ Combined with , a value of 1,1 indicates
+ the start of the document.
+
+ The current line number.
+
+
+
+ Gets the current line position.
+
+
+ This property is most commonly used for error reporting, but can be called
+ at any time. The starting value for this property is 1.
+ Combined with , a value of 1,1 indicates
+ the start of the document.
+
+ The current line number.
+
+
+
+ Get the current state of the tokenizer.
+
+
+ Gets the current state of the tokenizer.
+
+ The current state of the tokenizer.
+
+
+
+ Create a DOCTYPE token.
+
+
+ Creates a DOCTYPE token.
+
+ The DOCTYPE token.
+
+
+
+ Create an HTML comment token.
+
+
+ Creates an HTML comment token.
+
+ The HTML comment token.
+ The comment.
+ true if the comment is bogus; otherwise, false.
+
+
+
+ Create an HTML character data token.
+
+
+ Creates an HTML character data token.
+
+ The HTML character data token.
+ The character data.
+
+
+
+ Create an HTML character data token.
+
+
+ Creates an HTML character data token.
+
+ The HTML character data token.
+ The character data.
+
+
+
+ Create an HTML script data token.
+
+
+ Creates an HTML script data token.
+
+ The HTML script data token.
+ The script data.
+
+
+
+ Create an HTML tag token.
+
+
+ Creates an HTML tag token.
+
+ The HTML tag token.
+ The tag name.
+ true if the tag is an end tag; otherwise, false.
+
+
+
+ Create an attribute.
+
+
+ Creates an attribute.
+
+ The attribute.
+ THe attribute name.
+
+
+
+ Reads the next token.
+
+
+ Reads the next token.
+
+ true if the next token was read; otherwise, false.
+ THe token that was read.
+
+
+
+ The HTML tokenizer state.
+
+
+ The HTML tokenizer state.
+
+
+
+
+ The data state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#data-state.
+
+
+
+
+ The character reference in data state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#character-reference-in-data-state.
+
+
+
+
+ The RCDATA state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-state.
+
+
+
+
+ The character reference in RCDATA state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#character-reference-in-rcdata-state.
+
+
+
+
+ The RAWTEXT state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-state.
+
+
+
+
+ The script data state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-state.
+
+
+
+
+ The PLAINTEXT state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#plaintext-state.
+
+
+
+
+ The tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#tag-open-state.
+
+
+
+
+ The end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#end-tag-open-state.
+
+
+
+
+ The tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#tag-name-state.
+
+
+
+
+ The RCDATA less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-less-than-sign-state.
+
+
+
+
+ The RCDATA end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-end-tag-open-state.
+
+
+
+
+ The RCDATA end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rcdata-end-tag-name-state.
+
+
+
+
+ The RAWTEXT less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-less-than-sign-state.
+
+
+
+
+ The RAWTEXT end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-end-tag-open-state.
+
+
+
+
+ The RAWTEXT end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#rawtext-end-tag-name-state.
+
+
+
+
+ The script data less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-less-than-sign-state.
+
+
+
+
+ The script data end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-end-tag-open-state.
+
+
+
+
+ The script data end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-end-tag-name-state.
+
+
+
+
+ The script data escape start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escape-start-state.
+
+
+
+
+ The script data escape start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escape-start-dash-state.
+
+
+
+
+ The script data escaped state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-state.
+
+
+
+
+ The script data escaped dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-dash-state.
+
+
+
+
+ The script data escaped dash dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-dash-dash-state.
+
+
+
+
+ The script data escaped less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-less-than-sign-state.
+
+
+
+
+ The script data escaped end tag open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-end-tag-open-state.
+
+
+
+
+ The script data escaped end tag name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-escaped-end-tag-name-state.
+
+
+
+
+ The script data double escape start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escape-start-state.
+
+
+
+
+ The script data double escaped state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-state.
+
+
+
+
+ The script data double escaped dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-dash-state.
+
+
+
+
+ The script data double escaped dash dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-dash-dash-state.
+
+
+
+
+ The script data double escaped less-than state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escaped-less-than-sign-state.
+
+
+
+
+ The script data double escape end state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#script-data-double-escape-end-state.
+
+
+
+
+ The before attribute name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-attribute-name-state.
+
+
+
+
+ The attribute name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#attribute-name-state.
+
+
+
+
+ The after attribute name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-attribute-name-state.
+
+
+
+
+ The beforw attribute value state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-attribute-value-state.
+
+
+
+
+ The attribute value quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#attribute-value-(double-quoted)-state.
+
+
+
+
+ The attribute value unquoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#attribute-value-(unquoted)-state.
+
+
+
+
+ The character reference in attribute value state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#character-reference-in-attribute-value-state.
+
+
+
+
+ The after attribute value quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-attribute-value-(quoted)-state.
+
+
+
+
+ The self-closing start tag state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#self-closing-start-tag-state.
+
+
+
+
+ The bogus comment state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#bogus-comment-state.
+
+
+
+
+ The markup declaration open state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#markup-declaration-open-state.
+
+
+
+
+ The comment start state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-start-state.
+
+
+
+
+ The comment start dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-start-dash-state.
+
+
+
+
+ The comment state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-state.
+
+
+
+
+ The comment end dash state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-end-dash-state.
+
+
+
+
+ The comment end state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-end-state.
+
+
+
+
+ The comment end bang state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#comment-end-bang-state.
+
+
+
+
+ The DOCTYPE state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-state.
+
+
+
+
+ The before DOCTYPE name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-doctype-name-state.
+
+
+
+
+ The DOCTYPE name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-name-state.
+
+
+
+
+ The after DOCTYPE name state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-name-state.
+
+
+
+
+ The after DOCTYPE public keyword state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-public-keyword-state.
+
+
+
+
+ The before DOCTYPE public identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-doctype-public-identifier-state.
+
+
+
+
+ The DOCTYPE public identifier quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-public-identifier-(double-quoted)-state.
+
+
+
+
+ The after DOCTYPE public identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-public-identifier-state.
+
+
+
+
+ The between DOCTYPE public and system identifiers state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#between-doctype-public-and-system-identifiers-state.
+
+
+
+
+ The after DOCTYPE system keyword state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-system-keyword-state.
+
+
+
+
+ The before DOCTYPE system identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#before-doctype-system-identifier-state.
+
+
+
+
+ The DOCTYPE system identifier quoted state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#doctype-system-identifier-(double-quoted)-state.
+
+
+
+
+ The after DOCTYPE system identifier state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#after-doctype-system-identifier-state.
+
+
+
+
+ The bogus DOCTYPE state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#bogus-doctype-state.
+
+
+
+
+ The CDATA section state as described at
+
+ http://www.w3.org/TR/html5/syntax.html#cdata-section-state.
+
+
+
+
+ The end of file state.
+
+
+
+
+ The kinds of tokens that the can emit.
+
+
+ The kinds of tokens that the can emit.
+
+
+
+
+ A token consisting of [CDATA[.
+
+
+
+
+ An HTML comment token.
+
+
+
+
+ A token consisting of character data.
+
+
+
+
+ An HTML DOCTYPE token.
+
+
+
+
+ A token consisting of script data.
+
+
+
+
+ An HTML tag token.
+
+
+
+
+ A collection of HTML-related utility methods.
+
+
+ A collection of HTML-related utility methods.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The to output the result.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The encoded attribute value.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The to output the result.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The to output the result.
+ The attribute value to encode.
+ The character to use for quoting the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The encoded attribute value.
+ The attribute value to encode.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+ The character to use for quoting the attribute value.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the value.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode an HTML attribute value.
+
+
+ Encodes an HTML attribute value.
+
+ The encoded attribute value.
+ The attribute value to encode.
+ The character to use for quoting the attribute value.
+
+ is null.
+
+
+ is not a valid quote character.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ The to output the result.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ THe encoded character data.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ The to output the result.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ The to output the result.
+ The character data to encode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ THe encoded character data.
+ The character data to encode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Encode HTML character data.
+
+
+ Encodes HTML character data.
+
+ THe encoded character data.
+ The character data to encode.
+
+ is null.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The to output the result.
+ The character data to decode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The to output the result.
+ The character data to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The decoded character data.
+ The character data to decode.
+ The starting index of the character data.
+ The number of characters in the data.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the data.
+
+
+
+
+ Decode HTML character data.
+
+
+ Decodes HTML character data.
+
+ The decoded character data.
+ The character data to decode.
+
+ is null.
+
+
+
+
+ An HTML writer.
+
+
+ An HTML writer.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The output stream.
+ The encoding to use for the output.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The output text writer.
+
+ is null.
+
+
+
+
+ Releas unmanaged resources and perform other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Get the current state of the writer.
+
+
+ Gets the current state of the writer.
+
+ The state of the writer.
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+ The attribute identifier.
+ A buffer containing the attribute value.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+
+ is not a valid HTML attribute identifier.
+
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+ The attribute name.
+ A buffer containing the attribute value.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ is an invalid attribute name.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+ The attribute identifier.
+ The attribute value.
+
+ is not a valid HTML attribute identifier.
+
+
+ is null.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+
+
+
+ The attribute name.
+ The attribute value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is an invalid attribute name.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute to the output stream.
+
+
+ Writes the attribute to the output stream.
+
+
+
+
+ The attribute.
+
+ is null.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute name to the output stream.
+
+
+ Writes the attribute name to the output stream.
+
+ The attribute identifier.
+
+ is not a valid HTML attribute identifier.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute name to the output stream.
+
+
+ Writes the attribute name to the output stream.
+
+
+
+
+ The attribute name.
+
+ is null.
+
+
+ is an invalid attribute name.
+
+
+ The is not in a state that allows writing attributes.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute value to the output stream.
+
+
+ Writes the attribute value to the output stream.
+
+ A buffer containing the attribute value.
+ The starting index of the attribute value.
+ The number of characters in the attribute value.
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The is not in a state that allows writing attribute values.
+
+
+ The has been disposed.
+
+
+
+
+ Write the attribute value to the output stream.
+
+
+ Writes the attribute value to the output stream.
+
+
+
+
+ The attribute value.
+
+ is null.
+
+
+ The is not in a state that allows writing attribute values.
+
+
+ The has been disposed.
+
+
+
+
+ Write an empty element tag.
+
+
+ Writes an empty element tag.
+
+ The HTML tag identifier.
+
+ is not a valid HTML tag identifier.
+
+
+ The has been disposed.
+
+
+
+
+ Write an empty element tag.
+
+
+ Writes an empty element tag.
+
+ The name of the HTML tag.
+
+ is null.
+
+
+ is not a valid HTML tag.
+
+
+ The has been disposed.
+
+
+
+
+ Write an end tag.
+
+
+ Writes an end tag.
+
+ The HTML tag identifier.
+
+ is not a valid HTML tag identifier.
+
+
+ The has been disposed.
+
+
+
+
+ Write an end tag.
+
+
+ Writes an end tag.
+
+ The name of the HTML tag.
+
+ is null.
+
+
+ is not a valid HTML tag.
+
+
+ The has been disposed.
+
+
+
+
+ Write a buffer containing HTML markup directly to the output, without escaping special characters.
+
+
+ Writes a buffer containing HTML markup directly to the output, without escaping special characters.
+
+ The buffer containing HTML markup.
+ The index of the first character to write.
+ The number of characters to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The has been disposed.
+
+
+
+
+ Write a string containing HTML markup directly to the output, without escaping special characters.
+
+
+ Writes a string containing HTML markup directly to the output, without escaping special characters.
+
+ The string containing HTML markup.
+
+ is null.
+
+
+ The has been disposed.
+
+
+
+
+ Write a start tag.
+
+
+ Writes a start tag.
+
+ The HTML tag identifier.
+
+ is not a valid HTML tag identifier.
+
+
+ The has been disposed.
+
+
+
+
+ Write a start tag.
+
+
+ Writes a start tag.
+
+ The name of the HTML tag.
+
+ is null.
+
+
+ is not a valid HTML tag.
+
+
+ The has been disposed.
+
+
+
+
+ Write text to the output stream, escaping special characters.
+
+
+ Writes text to the output stream, escaping special characters.
+
+ The text buffer.
+ The index of the first character to write.
+ The number of characters to write.
+
+ is null.
+
+
+ is less than zero or greater than the length of
+ .
+ -or-
+ and do not specify
+ a valid range in the .
+
+
+ The has been disposed.
+
+
+
+
+ Write text to the output stream, escaping special characters.
+
+
+ Writes text to the output stream, escaping special characters.
+
+ The text.
+
+ is null.
+
+
+ The has been disposed.
+
+
+
+
+ Write a token to the output stream.
+
+
+ Writes a token that was emitted by the
+ to the output stream.
+
+ The HTML token.
+
+ is null.
+
+
+ The has been disposed.
+
+
+
+
+ Flush any remaining state to the output stream.
+
+
+ Flushes any remaining state to the output stream.
+
+
+ The has been disposed.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases any unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resource used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After calling
+ , you must release all references to the so the garbage
+ collector can reclaim the memory that the was occupying.
+
+
+
+ An enumeration of possible states of a .
+
+
+ An enumeration of possible states of a .
+
+
+
+
+ The is not within a tag. In this state, the
+ can only write a tag or text.
+
+
+
+
+ The is inside a tag but has not started to write an attribute. In this
+ state, the can write an attribute, another tag, or text.
+
+
+
+
+ The is inside an attribute. In this state, the
+ can append a value to the current attribute, start the next attribute, or write another tag or text.
+
+
+
+
+ An abstract class for converting text from one format to another.
+
+
+ An abstract class for converting text from one format to another.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes a new instance of the class.
+
+
+
+
+ Get or set whether the encoding of the input is detected from the byte order mark or
+ determined by the property.
+
+
+ Gets or sets whether the encoding of the input is detected from the byte order mark or
+ determined by the property.
+
+ true if detect encoding from byte order mark; otherwise, false.
+
+
+
+ Get or set the input encoding.
+
+
+ Gets or sets the input encoding.
+
+ The input encoding.
+
+ is null.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get or set the output encoding.
+
+
+ Gets or sets the output encoding.
+
+ The output encoding.
+
+ is null.
+
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the size of the input stream buffer.
+
+
+ Gets or sets the size of the input stream buffer.
+
+ The size of the input stream buffer.
+
+ is less than or equal to 0.
+
+
+
+
+ Get or set the size of the output stream buffer.
+
+
+ Gets or sets the size of the output stream buffer.
+
+ The size of the output stream buffer.
+
+ is less than or equal to 0.
+
+
+
+
+ Convert the contents of from the to the
+ and writes the resulting text to .
+
+
+ Converts the contents of from the to the
+ and writes the resulting text to .
+
+ The source stream.
+ The destination stream.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The source stream.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert the contents of from the to the
+ and writes the resulting text to .
+
+
+ Converts the contents of from the to the
+ and writes the resulting text to .
+
+ The text reader.
+ The destination stream.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Convert text from the to the .
+
+
+ Converts text from the to the .
+
+
+
+
+ The converted text.
+ The text to convert.
+
+ is null.
+
+
+
+
+ An enumeration of text formats.
+
+
+ An enumeration of text formats.
+
+
+
+
+ The plain text format.
+
+
+
+
+ The flowed text format (as described in rfc3676).
+
+
+
+
+ The HTML text format.
+
+
+
+
+ The enriched text format.
+
+
+
+
+ The compressed rich text format.
+
+
+
+
+ The rich text format.
+
+
+
+
+ A text to flowed text converter.
+
+
+ Wraps text to conform with the flowed text format described in rfc3676.
+ The Content-Type header for the wrapped output text should be set to
+ text/plain; format=flowed; delsp=yes.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new text to flowed text converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A text to HTML converter.
+
+
+ Used to convert plain text into HTML.
+
+
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new text to HTML converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Get or set the header format.
+
+
+ Gets or sets the header format.
+
+ The header format.
+
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+
+ Get or set the method to use for custom
+ filtering of HTML tags and content.
+
+ The html tag callback.
+
+
+
+ Get or set whether or not the converter should only output an HTML fragment.
+
+
+ Gets or sets whether or not the converter should only output an HTML fragment.
+
+ true if the converter should only output an HTML fragment; otherwise, false.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A text to text converter.
+
+
+ A text to text converter.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new text to text converter.
+
+
+
+
+ Get the input format.
+
+
+ Gets the input format.
+
+ The input format.
+
+
+
+ Get the output format.
+
+
+ Gets the output format.
+
+ The output format.
+
+
+
+ Get or set the text that will be appended to the end of the output.
+
+
+ Gets or sets the text that will be appended to the end of the output.
+ The footer must be set before conversion begins.
+
+ The footer.
+
+
+
+ Get or set the footer format.
+
+
+ Gets or sets the footer format.
+
+ The footer format.
+
+
+
+ Get or set text that will be prepended to the beginning of the output.
+
+
+ Gets or sets the text that will be prepended to the beginning of the output.
+ The header must be set before conversion begins.
+
+ The header.
+
+
+
+ Convert the contents of from the to the
+ and uses the to write the resulting text.
+
+
+ Converts the contents of from the to the
+ and uses the to write the resulting text.
+
+ The text reader.
+ The text writer.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ An Aho-Corasick Trie graph.
+
+
+ An Aho-Corasick Trie graph.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ true if searching should ignore case; otherwise, false.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Add the specified search pattern.
+
+
+ Adds the specified search pattern.
+
+ The search pattern.
+
+ is null.
+
+
+ cannot be an empty string.
+
+
+
+
+ Search the text for any of the patterns added to the trie.
+
+
+ Searches the text for any of the patterns added to the trie.
+
+ The first index of a matched pattern if successful; otherwise, -1.
+ The text to search.
+ The starting index of the text.
+ The number of characters to search, starting at .
+ The pattern that was matched.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the string.
+
+
+
+
+ Search the text for any of the patterns added to the trie.
+
+
+ Searches the text for any of the patterns added to the trie.
+
+ The first index of a matched pattern if successful; otherwise, -1.
+ The text to search.
+ The starting index of the text.
+ The pattern that was matched.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Search the text for any of the patterns added to the trie.
+
+
+ Searches the text for any of the patterns added to the trie.
+
+ The first index of a matched pattern if successful; otherwise, -1.
+ The text to search.
+ The pattern that was matched.
+
+ is null.
+
+
+
+
+ A filter to decompress a compressed RTF stream.
+
+
+ Used to decompress a compressed RTF stream.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new converter filter.
+
+
+
+
+ Gets the compression mode.
+
+
+ At least 12 bytes from the stream must be processed before this property value will
+ be accurate.
+
+ The compression mode.
+
+
+
+ Gets a value indicating whether the crc32 is valid.
+
+
+ Until all data has been processed, this property will always return false.
+
+ true if the crc32 is valid; otherwise, false.
+
+
+
+ Filter the specified input.
+
+ Filters the specified input buffer starting at the given index,
+ spanning across the specified number of bytes.
+ The filtered output.
+ The input buffer.
+ The starting index of the input buffer.
+ Length.
+ Output index.
+ Output length.
+ If set to true flush.
+
+
+
+ Resets the filter.
+
+
+ Resets the filter.
+
+
+
+
+ A RTF compression mode.
+
+
+ A RTF compression mode.
+
+
+
+
+ The compression mode is not known.
+
+
+
+
+ The RTF stream is not compressed.
+
+
+
+
+ The RTF stream is compressed.
+
+
+
+
+ The TNEF attach flags.
+
+
+ The enum contains a list of possible values for
+ the property.
+
+
+
+
+ No AttachFlags set.
+
+
+
+
+ The attachment is invisible in HTML bodies.
+
+
+
+
+ The attachment is invisible in RTF bodies.
+
+
+
+
+ The attachment is referenced (and rendered) by the HTML body.
+
+
+
+
+ The TNEF attach method.
+
+
+ The enum contains a list of possible values for
+ the property.
+
+
+
+
+ No AttachMethod specified.
+
+
+
+
+ The attachment is a binary blob and SHOULD appear in the
+ attribute.
+
+
+
+
+ The attachment is an embedded TNEF message stream and MUST appear
+ in the property of the
+ attribute.
+
+
+
+
+ The attachment is an OLE stream and MUST appear
+ in the property of the
+ attribute.
+
+
+
+
+ A TNEF attribute level.
+
+
+ A TNEF attribute level.
+
+
+
+
+ The attribute is a message-level attribute.
+
+
+
+
+ The attribute is an attachment-level attribute.
+
+
+
+
+ A TNEF attribute tag.
+
+
+ A TNEF attribute tag.
+
+
+
+
+ A Null TNEF attribute.
+
+
+
+
+ The Owner TNEF attribute.
+
+
+
+
+ The SentFor TNEF attribute.
+
+
+
+
+ The Delegate TNEF attribute.
+
+
+
+
+ The OriginalMessageClass TNEF attribute.
+
+
+
+
+ The DateStart TNEF attribute.
+
+
+
+
+ The DateEnd TNEF attribute.
+
+
+
+
+ The AidOwner TNEF attribute.
+
+
+
+
+ The RequestResponse TNEF attribute.
+
+
+
+
+ The From TNEF attribute.
+
+
+
+
+ The Subject TNEF attribute.
+
+
+
+
+ The DateSent TNEF attribute.
+
+
+
+
+ The DateReceived TNEF attribute.
+
+
+
+
+ The MessageStatus TNEF attribute.
+
+
+
+
+ The MessageClass TNEF attribute.
+
+
+
+
+ The MessageId TNEF attribute.
+
+
+
+
+ The ParentId TNEF attribute.
+
+
+
+
+ The ConversationId TNEF attribute.
+
+
+
+
+ The Body TNEF attribute.
+
+
+
+
+ The Priority TNEF attribute.
+
+
+
+
+ The AttachData TNEF attribute.
+
+
+
+
+ The AttachTitle TNEF attribute.
+
+
+
+
+ The AttachMetaFile TNEF attribute.
+
+
+
+
+ The AttachCreateDate TNEF attribute.
+
+
+
+
+ The AttachModifyDate TNEF attribute.
+
+
+
+
+ The DateModified TNEF attribute.
+
+
+
+
+ The AttachTransportFilename TNEF attribute.
+
+
+
+
+ The AttachRenderData TNEF attribute.
+
+
+
+
+ The MapiProperties TNEF attribute.
+
+
+
+
+ The RecipientTable TNEF attribute.
+
+
+
+
+ The Attachment TNEF attribute.
+
+
+
+
+ The TnefVersion TNEF attribute.
+
+
+
+
+ The OemCodepage TNEF attribute.
+
+
+
+
+ A TNEF compliance mode.
+
+
+ A TNEF compliance mode.
+
+
+
+
+ Use a loose compliance mode, attempting to ignore invalid or corrupt data.
+
+
+
+
+ Use a very strict compliance mode, aborting the parser at the first sign of
+ invalid or corrupted data.
+
+
+
+
+ A bitfield of potential TNEF compliance issues.
+
+
+ A bitfield of potential TNEF compliance issues.
+
+
+
+
+ The TNEF stream has no errors.
+
+
+
+
+ The TNEF stream has too many attributes.
+
+
+
+
+ The TNEF stream has one or more invalid attributes.
+
+
+
+
+ The TNEF stream has one or more attributes with invalid checksums.
+
+
+
+
+ The TNEF stream has one more more attributes with an invalid length.
+
+
+
+
+ The TNEF stream has one or more attributes with an invalid level.
+
+
+
+
+ The TNEF stream has one or more attributes with an invalid value.
+
+
+
+
+ The TNEF stream has one or more attributes with an invalid date value.
+
+
+
+
+ The TNEF stream has one or more invalid MessageClass attributes.
+
+
+
+
+ The TNEF stream has one or more invalid MessageCodepage attributes.
+
+
+
+
+ The TNEF stream has one or more invalid property lengths.
+
+
+
+
+ The TNEF stream has one or more invalid row counts.
+
+
+
+
+ The TNEF stream has an invalid signature value.
+
+
+
+
+ The TNEF stream has an invalid version value.
+
+
+
+
+ The TNEF stream is nested too deeply.
+
+
+
+
+ The TNEF stream is truncated.
+
+
+
+
+ The TNEF stream has one or more unsupported property types.
+
+
+
+
+ A TNEF exception.
+
+
+ A occurs when when a TNEF stream is found to be
+ corrupted and cannot be read any futher.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+
+
+
+ A TNEF name identifier.
+
+
+ A TNEF name identifier.
+
+
+
+
+ Gets the property set GUID.
+
+
+ Gets the property set GUID.
+
+ The property set GUID.
+
+
+
+ Gets the kind of TNEF name identifier.
+
+
+ Gets the kind of TNEF name identifier.
+
+ The kind of identifier.
+
+
+
+ Gets the name, if available.
+
+
+ If the is , then this property will be available.
+
+ The name.
+
+
+
+ Gets the identifier, if available.
+
+
+ If the is , then this property will be available.
+
+ The identifier.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new with the specified integer identifier.
+
+ The property set GUID.
+ The identifier.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new with the specified string identifier.
+
+ The property set GUID.
+ The name.
+
+
+
+ Serves as a hash function for a object.
+
+
+ Serves as a hash function for a object.
+
+ A hash code for this instance that is suitable for use in hashing algorithms
+ and data structures such as a hash table.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ The kind of TNEF name identifier.
+
+
+ The kind of TNEF name identifier.
+
+
+
+
+ The property name is an integer.
+
+
+
+
+ The property name is a string.
+
+
+
+
+ A MIME part containing Microsoft TNEF data.
+
+
+ Represents an application/ms-tnef or application/vnd.ms-tnef part.
+ TNEF (Transport Neutral Encapsulation Format) attachments are most often
+ sent by Microsoft Outlook clients.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with a Content-Type of application/vnd.ms-tnef
+ and a Content-Disposition value of "attachment" and a filename paremeter with a
+ value of "winmail.dat".
+
+
+
+
+ Converts the TNEF content into a .
+
+
+ TNEF data often contains properties that map to
+ headers. TNEF data also often contains file attachments which will be
+ mapped to MIME parts.
+
+ A message representing the TNEF data in MIME format.
+
+ The property is null.
+
+
+
+
+ Extracts the embedded attachments from the TNEF data.
+
+
+ Parses the TNEF data and extracts all of the embedded file attachments.
+
+ The attachments.
+
+ The property is null.
+
+
+
+
+ A TNEF property identifier.
+
+
+ A TNEF property identifier.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_DIR.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_PAB.
+
+
+
+
+ The MAPI property PR_AB_PROVIDER_ID.
+
+
+
+
+ The MAPI property PR_AB_PROVIDERS.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH_UPDATE.
+
+
+
+
+ The MAPI property PR_ACCESS.
+
+
+
+
+ The MAPI property PR_ACCESS_LEVEL.
+
+
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+
+
+ The MAPI property PR_ACKNOWLEDGEMENT_MODE.
+
+
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT_ALLOWED.
+
+
+
+
+ The MAPI property PR_ANR.
+
+
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ASSOC_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_ATTACH_ADDITIONAL_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_ATTACH_DATA_BIN or PR_ATTACH_DATA_OBJ.
+
+
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+
+
+ The MAPI property PR_ATTACH_ENCODING.
+
+
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_FLAGS.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACHMENT_X400_PARAMETERS.
+
+
+
+
+ The MAPI property PR_ATTACH_METHOD.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_SEQUENCE.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_NETSCAPE_MAC_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_NUM.
+
+
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_RENDERING.
+
+
+
+
+ The MAPI property PR_ATTACH_SIZE.
+
+
+
+
+ The MAPI property PR_ATTACH_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+
+
+ The MAPI property PR_AUTHORIZING_USERS.
+
+
+
+
+ The MAPI property PR_AUTO_FORWARDED.
+
+
+
+
+ The MAPI property PR_AUTO_FORWARDING_COMMENT.
+
+
+
+
+ The MAPI property PR_AUTO_RESPONSE_SUPPRESS.
+
+
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BIRTHDAY.
+
+
+
+
+ The MAPI property PR_BODY.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_BODY_CRC.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CELLULAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+
+
+ The MAPI property PR_CLIENT_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_COMMENT.
+
+
+
+
+ The MAPI property PR_COMMON_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+
+
+ The MAPI property PR_CONTACT_DEFAULT_ADDRESS_INDEX.
+
+
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+
+
+ The MAPI property PR_CONTACT_ENTRYIDS.
+
+
+
+
+ The MAPI property PR_CONTACT_VERSION.
+
+
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+
+
+ The MAPI property PR_CONTAINER_CONTENTS.
+
+
+
+
+ The MAPI property PR_CONTAINER_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTAINER_HIERARCHY.
+
+
+
+
+ The MAPI property PR_CONTAINER_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID.
+
+
+
+
+ The MAPI property PR_CONTENT_CORRELATOR.
+
+
+
+
+ The MAPI property PR_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+
+
+ The MAPI property PR_CONTENT_INTEGRITY_CHECK.
+
+
+
+
+ The MAPI property PR_CONTENT_LENGTH.
+
+
+
+
+ The MAPI property PR_CONTENT_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_CONTENTS_SORT_ORDER.
+
+
+
+
+ The MAPI property PR_CONTENT_UNREAD.
+
+
+
+
+ The MAPI property PR_CONTROL_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTROL_ID.
+
+
+
+
+ The MAPI property PR_CONTROL_STRUCTURE.
+
+
+
+
+ The MAPI property PR_CONTROL_TYPE.
+
+
+
+
+ The MAPI property PR_CONVERSATION_INDEX.
+
+
+
+
+ The MAPI property PR_CONVERSATION_KEY.
+
+
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+
+
+ The MAPI property PR_CONVERSATION_EITS.
+
+
+
+
+ The MAPI property PR_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERSION_WITH_LOSS_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERTED_EITS.
+
+
+
+
+ The MAPI property PR_CORRELATE.
+
+
+
+
+ The MAPI property PR_CORRELATE_MTSID.
+
+
+
+
+ The MAPI property PR_COUNTRY.
+
+
+
+
+ The MAPI property PR_CREATE_TEMPLATES.
+
+
+
+
+ The MAPI property PR_CREATION_TIME.
+
+
+
+
+ The MAPI property PR_CREATION_VERSION.
+
+
+
+
+ The MAPI property PR_CURRENT_VERSION.
+
+
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+
+
+ The MAPI property PR_DEFAULT_PROFILE.
+
+
+
+
+ The MAPI property PR_DEFAULT_STORE.
+
+
+
+
+ The MAPI property PR_DEFAULT_VIEW_ENTRYID.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_DL.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_MAILUSER.
+
+
+
+
+ The MAPI property PR_DEFERRED_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_DELEGATION.
+
+
+
+
+ The MAPI property PR_DELETE_AFTER_SUBMIT.
+
+
+
+
+ The MAPI property PR_DELIVER_TIME.
+
+
+
+
+ The MAPI property PR_DELIVERY_POINT.
+
+
+
+
+ The MAPI property PR_DELTAX.
+
+
+
+
+ The MAPI property PR_DELTAY.
+
+
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+
+
+ The MAPI property PR_DEPTH.
+
+
+
+
+ The MAPI property PR_DETAILS_TABLE.
+
+
+
+
+ The MAPI property PR_DISCARD_REASON.
+
+
+
+
+ The MAPI property PR_DISCLOSE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCLOSURE_OF_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCRETE_VALUES.
+
+
+
+
+ The MAPI property PR_DISC_VAL.
+
+
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_DISPLAY_TYPE.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_END_DATE.
+
+
+
+
+ The MAPI property PR_ENTRYID.
+
+
+
+
+ The MAPI property PR_EXPAND_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPAND_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_EXPLICIT_CONVERSION.
+
+
+
+
+ The MAPI property PR_FILTERING_HOOKS.
+
+
+
+
+ The MAPI property PR_FINDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_FOLDER_ASSOCIATED_CONTENTS.
+
+
+
+
+ The MAPI property PR_FOLDER_TYPE.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+
+
+ The MAPI property PR_FORM_CLSID.
+
+
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_GUID.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+
+
+ The MAPI property PR_FORM_HIDDEN.
+
+
+
+
+ The MAPI property PR_FORM_HOST_MAP.
+
+
+
+
+ The MAPI property PR_FORM_MESSAGE_BEHAVIOR.
+
+
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+
+
+ The MAPI property PR_GENDER.
+
+
+
+
+ The MAPI property PR_GENERATION.
+
+
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_HASTTACH.
+
+
+
+
+ The MAPI property PR_HEADER_FOLDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_HOBBIES.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ICON.
+
+
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+
+
+ The MAPI property PR_IDENTITY_ENTRYID.
+
+
+
+
+ The MAPI property PR_IDENTITY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IMPLICIT_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_IMPORTANCE.
+
+
+
+
+ The MAPI property PR_INCOMPLETE_COPY.
+
+
+
+
+ The Internet mail override charset.
+
+
+
+
+ The Internet mail override format.
+
+
+
+
+ The MAPI property PR_INITIAL_DETAILS_PANE.
+
+
+
+
+ The MAPI property PR_INITIALS.
+
+
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+
+
+ The MAPI property PR_INSTANCE_KEY.
+
+
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+
+
+ The MAPI property PR_INTERNET_ARTICLE_NUMBER.
+
+
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+
+
+ The MAPI property PR_INTERNET_CPID.
+
+
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+
+
+ The MAPI property PR_INTERNET_LINES.
+
+
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+
+
+ The MAPI property PR_IPM_ID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+
+
+ The MAPI property PR_KEYWORD.
+
+
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+
+
+ The MAPI property PR_LAST_MODIFICATION_TIME.
+
+
+
+
+ The MAPI property PR_LATEST_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LOCALITY.
+
+
+
+
+ The MAPI property PR_LOCALLY_DELIVERED.
+
+
+
+
+ The MAPI property PR_LOCATION.
+
+
+
+
+ The MAPI property PR_LOCK_BRANCH_ID.
+
+
+
+
+ The MAPI property PR_LOCK_DEPTH.
+
+
+
+
+ The MAPI property PR_LOCK_ENLISTMENT_CONTEXT.
+
+
+
+
+ The MAPI property PR_LOCK_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_LOCK_PERSISTENT.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_DID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_FID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_MID.
+
+
+
+
+ The MAPI property PR_LOCK_SCOPE.
+
+
+
+
+ The MAPI property PR_LOCK_TIMEOUT.
+
+
+
+
+ The MAPI property PR_LOCK_TYPE.
+
+
+
+
+ The MAPI property PR_MAIL_PERMISSION.
+
+
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+
+
+ The MAPI property PR_MAPPING_SIGNATURE.
+
+
+
+
+ The MAPI property PR_MDB_PROVIDER.
+
+
+
+
+ The MAPI property PR_MESSAGE_ATTACHMENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CC_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CODEPAGE.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_DOWNLOAD_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_FLAGS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIP_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_SECURITY_LABEL.
+
+
+
+
+ The MAPI property PR_MESSAGE_SIZE.
+
+
+
+
+ The MAPI property PR_MESSAGE_SUBMISSION_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_TOKEN.
+
+
+
+
+ The MAPI property PR_MESSAGE_TO_ME.
+
+
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+
+
+ The MAPI property PR_MINI_ICON.
+
+
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_MSG_STATUS.
+
+
+
+
+ The MAPI property PR_NDR_DIAG_CODE.
+
+
+
+
+ The MAPI property PR_NDR_REASON_CODE.
+
+
+
+
+ The MAPI property PR_NDR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+
+
+ The MAPI property PR_NICKNAME.
+
+
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_NOTIFICATION_REQUESTED.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_REASON.
+
+
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+
+
+ The MAPI property PR_NT_SECURITY_DESCRIPTOR.
+
+
+
+
+ The MAPI property PR_NULL.
+
+
+
+
+ The MAPI property PR_OBJECT_TYPE.
+
+
+
+
+ The MAPI property PR_OBSOLETE_IPMS.
+
+
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OOF_REPLY_TIME.
+
+
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_ORIG_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_ORIGINAL_EITS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIPIENT_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINATING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_RETURN_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGIN_CHECK.
+
+
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OWNER_APPT_ID.
+
+
+
+
+ The MAPI property PR_OWN_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+
+
+ The MAPI property PR_PARENT_ENTRYID.
+
+
+
+
+ The MAPI property PR_PARENT_KEY.
+
+
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_MODE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_REPORT_REQUEST.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_PROHIBITED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_RENDITION_ATTRIBUTES.
+
+
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_POST_REPLY_DENIED.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_PREPROCESS.
+
+
+
+
+ The MAPI property PR_PRIMARY_CAPABILITY.
+
+
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIORITY.
+
+
+
+
+ The MAPI property PR_PROFESSION.
+
+
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROP_ID_SECURE_MAX.
+
+
+
+
+ The MAPI property PR_PROP_ID_SECURE_MIN.
+
+
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+
+
+ The MAPI property PR_PROVIDER_ORDINAL.
+
+
+
+
+ The MAPI property PR_PROVIDER_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_PROVIDER_UID.
+
+
+
+
+ The MAPI property PR_PUID.
+
+
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_ENTRYID.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_REQUESTED.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIPT_TIME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ENTRYID.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIVE_FOLDER_SETTINGS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_REASSIGNMENT_PROHIBITED.
+
+
+
+
+ The MAPI property PR_RECIPIENT_STATUS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_TYPE.
+
+
+
+
+ The MAPI property PR_RECORD_KEY.
+
+
+
+
+ The MAPI property PR_REDIRECTION_HISTORY.
+
+
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_REGISTERED_MAIL_TYPE.
+
+
+
+
+ The MAPI property PR_RELATED_IPMS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+
+
+ The MAPI property PR_REMOTE_VALIDATE_OK.
+
+
+
+
+ The MAPI property PR_RENDERING_POSITION.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_ENTRIES.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+
+
+ The MAPI property PR_REPLY_REQUESTED.
+
+
+
+
+ The MAPI property PR_REPLY_TIME.
+
+
+
+
+ The MAPI property PR_REPORT_ENTRYID.
+
+
+
+
+ The MAPI property PR_REPORTING_DLL_NAME.
+
+
+
+
+ The MAPI property PR_REPORTING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+
+
+ The MAPI property PR_REPORT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_REPORT_TAG.
+
+
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+
+
+ The MAPI property PR_REPORT_TIME.
+
+
+
+
+ The MAPI property PR_REQUESTED_DELIVERY_METHOD.
+
+
+
+
+ The MAPI property PR_RESOURCE_FLAGS.
+
+
+
+
+ The MAPI property PR_RESOURCE_METHODS.
+
+
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+
+
+ The MAPI property PR_RESOURCE_TYPE.
+
+
+
+
+ The MAPI property PR_RESPONSE_REQUESTED.
+
+
+
+
+ The MAPI property PR_RESPONSIBILITY.
+
+
+
+
+ The MAPI property PR_RETURNED_IPM.
+
+
+
+
+ The MAPI property PR_ROWID.
+
+
+
+
+ The MAPI property PR_ROW_TYPE.
+
+
+
+
+ The MAPI property PR_RTF_COMPRESSED.
+
+
+
+
+ The MAPI property PR_RTF_IN_SYNC.
+
+
+
+
+ The MAPI property PR_SYNC_BODY_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_CRC.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_PREFIX_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_TRAILING_COUNT.
+
+
+
+
+ The MAPI property PR_SEARCH.
+
+
+
+
+ The MAPI property PR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SECURITY.
+
+
+
+
+ The MAPI property PR_SELECTABLE.
+
+
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SEND_INTERNET_ENCODING.
+
+
+
+
+ The MAPI property PR_SEND_RECALL_REPORT.
+
+
+
+
+ The MAPI property PR_SEND_RICH_INFO.
+
+
+
+
+ The MAPI property PR_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_ENTRY_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_EXTRA_UIDS.
+
+
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+
+
+ The MAPI property PR_SERVICES.
+
+
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_UID.
+
+
+
+
+ The MAPI property PR_SEVEN_BIT_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+
+
+ The MAPI property PR_SPOOLER_STATUS.
+
+
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+
+
+ The MAPI property PR_START_DATE.
+
+
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_STATUS.
+
+
+
+
+ The MAPI property PR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+
+
+ The MAPI property PR_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_STORE_PROVIDERS.
+
+
+
+
+ The MAPI property PR_STORE_RECORD_KEY.
+
+
+
+
+ The MAPI property PR_STORE_STATE.
+
+
+
+
+ The MAPI property PR_STORE_SUPPORT_MASK.
+
+
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+
+
+ The MAPI property PR_SUBFOLDERS.
+
+
+
+
+ The MAPI property PR_SUBJECT.
+
+
+
+
+ The MAPI property PR_SUBJECT_IPM.
+
+
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+
+
+ The MAPI property PR_SUBMIT_FLAGS.
+
+
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+
+
+ The MAPI property PR_SURNAME.
+
+
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+
+
+ The MAPI property PR_TEMPLATEID.
+
+
+
+
+ The MAPI property PR_TITLE.
+
+
+
+
+ The MAPI property PR_TNEF_CORRELATION_KEY.
+
+
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_TRANSPORT_KEY.
+
+
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_PROVIDERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_STATUS.
+
+
+
+
+ The MAPI property PR_TTYTDD_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_TYPE_OF_MTS_USER.
+
+
+
+
+ The MAPI property PR_USER_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_USER_X509_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_VALID_FOLDER_MASK.
+
+
+
+
+ The MAPI property PR_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_WEDDING_ANNIVERSARY.
+
+
+
+
+ The MAPI property PR_X400_CONTENT_TYPE.
+
+
+
+
+ The MAPI property PR_X400_DEFERRED_DELIVERY_CANCEL.
+
+
+
+
+ The MAPI property PR_XPOS.
+
+
+
+
+ The MAPI property PR_YPOS.
+
+
+
+
+ A TNEF property reader.
+
+
+ A TNEF property reader.
+
+
+
+
+ Gets a value indicating whether the current property is an embedded TNEF message.
+
+
+ Gets a value indicating whether the current property is an embedded TNEF message.
+
+ true if the current property is an embedded TNEF message; otherwise, false.
+
+
+
+ Gets a value indicating whether or not the current property has multiple values.
+
+
+ Gets a value indicating whether or not the current property has multiple values.
+
+ true if the current property has multiple values; otherwise, false.
+
+
+
+ Gets a value indicating whether or not the current property is a named property.
+
+
+ Gets a value indicating whether or not the current property is a named property.
+
+ true if the current property is a named property; otherwise, false.
+
+
+
+ Gets a value indicating whether the current property contains object values.
+
+
+ Gets a value indicating whether the current property contains object values.
+
+ true if the current property contains object values; otherwise, false.
+
+
+
+ Gets the number of properties available.
+
+
+ Gets the number of properties available.
+
+ The property count.
+
+
+
+ Gets the property name identifier.
+
+
+ Gets the property name identifier.
+
+ The property name identifier.
+
+
+
+ Gets the property tag.
+
+
+ Gets the property tag.
+
+ The property tag.
+
+
+
+ Gets the length of the raw value.
+
+
+ Gets the length of the raw value.
+
+ The length of the raw value.
+
+
+
+ Gets the raw value stream offset.
+
+
+ Gets the raw value stream offset.
+
+ The raw value stream offset.
+
+
+
+ Gets the number of table rows available.
+
+
+ Gets the number of table rows available.
+
+ The row count.
+
+
+
+ Gets the number of values available.
+
+
+ Gets the number of values available.
+
+ The value count.
+
+
+
+ Gets the type of the value.
+
+
+ Gets the type of the value.
+
+ The type of the value.
+
+
+
+ Gets the embedded TNEF message reader.
+
+
+ Gets the embedded TNEF message reader.
+
+ The embedded TNEF message reader.
+
+ The property does not contain any more values.
+ -or-
+ The property value is not an embedded message.
+
+
+
+
+ Gets the raw value of the attribute or property as a stream.
+
+
+ Gets the raw value of the attribute or property as a stream.
+
+ The raw value stream.
+
+ The property does not contain any more values.
+
+
+
+
+ Advances to the next MAPI property.
+
+
+ Advances to the next MAPI property.
+
+ true if there is another property available to be read; otherwise false.
+
+ The TNEF data is corrupt or invalid.
+
+
+
+
+ Advances to the next table row of properties.
+
+
+ Advances to the next table row of properties.
+
+ true if there is another row available to be read; otherwise false.
+
+ The TNEF data is corrupt or invalid.
+
+
+
+
+ Advances to the next value in the TNEF stream.
+
+
+ Advances to the next value in the TNEF stream.
+
+ true if there is another value available to be read; otherwise false.
+
+ The TNEF data is corrupt or invalid.
+
+
+
+
+ Reads the raw attribute or property value as a sequence of bytes.
+
+
+ Reads the raw attribute or property value as a sequence of bytes.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ An I/O error occurred.
+
+
+
+
+ Reads the raw attribute or property value as a sequence of unicode characters.
+
+
+ Reads the raw attribute or property value as a sequence of unicode characters.
+
+ The total number of characters read into the buffer. This can be less than the number of characters
+ requested if that many bytes are not currently available, or zero (0) if the end of the stream has been
+ reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of characters to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain characters starting
+ at the specified .
+
+
+ An I/O error occurred.
+
+
+
+
+ Reads the value.
+
+
+ Reads an attribute or property value as its native type.
+
+ The value.
+
+ There are no more values to read or the value could not be read.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a boolean.
+
+
+ Reads any integer-based attribute or property value as a boolean.
+
+ The value as a boolean.
+
+ There are no more values to read or the value could not be read as a boolean.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a byte array.
+
+
+ Reads any string, binary blob, Class ID, or Object attribute or property value as a byte array.
+
+ The value as a byte array.
+
+ There are no more values to read or the value could not be read as a byte array.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a date and time.
+
+
+ Reads any date and time attribute or property value as a .
+
+ The value as a date and time.
+
+ There are no more values to read or the value could not be read as a date and time.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a double.
+
+
+ Reads any numeric attribute or property value as a double.
+
+ The value as a double.
+
+ There are no more values to read or the value could not be read as a double.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a float.
+
+
+ Reads any numeric attribute or property value as a float.
+
+ The value as a float.
+
+ There are no more values to read or the value could not be read as a float.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a GUID.
+
+
+ Reads any Class ID value as a GUID.
+
+ The value as a GUID.
+
+ There are no more values to read or the value could not be read as a GUID.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a 16-bit integer.
+
+
+ Reads any integer-based attribute or property value as a 16-bit integer.
+
+ The value as a 16-bit integer.
+
+ There are no more values to read or the value could not be read as a 16-bit integer.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a 32-bit integer.
+
+
+ Reads any integer-based attribute or property value as a 32-bit integer.
+
+ The value as a 32-bit integer.
+
+ There are no more values to read or the value could not be read as a 32-bit integer.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a 64-bit integer.
+
+
+ Reads any integer-based attribute or property value as a 64-bit integer.
+
+ The value as a 64-bit integer.
+
+ There are no more values to read or the value could not be read as a 64-bit integer.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Reads the value as a string.
+
+
+ Reads any string or binary blob values as a string.
+
+ The value as a string.
+
+ There are no more values to read or the value could not be read as a string.
+
+
+ The TNEF stream is truncated and the value could not be read.
+
+
+
+
+ Serves as a hash function for a object.
+
+
+ Serves as a hash function for a object.
+
+ A hash code for this instance that is suitable for use in hashing algorithms
+ and data structures such as a hash table.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ A TNEF property tag.
+
+
+ A TNEF property tag.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_DIR.
+
+
+ The MAPI property PR_AB_DEFAULT_DIR.
+
+
+
+
+ The MAPI property PR_AB_DEFAULT_PAB.
+
+
+ The MAPI property PR_AB_DEFAULT_PAD.
+
+
+
+
+ The MAPI property PR_AB_PROVIDER_ID.
+
+
+ The MAPI property PR_AB_PROVIDER_ID.
+
+
+
+
+ The MAPI property PR_AB_PROVIDERS.
+
+
+ The MAPI property PR_AB_PROVIDERS.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH.
+
+
+ The MAPI property PR_AB_SEARCH_PATH.
+
+
+
+
+ The MAPI property PR_AB_SEARCH_PATH_UPDATE.
+
+
+ The MAPI property PR_AB_SEARCH_PATH_UPDATE.
+
+
+
+
+ The MAPI property PR_ACCESS.
+
+
+ The MAPI property PR_ACCESS.
+
+
+
+
+ The MAPI property PR_ACCESS_LEVEL.
+
+
+ The MAPI property PR_ACCESS_LEVEL.
+
+
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+ The MAPI property PR_ACCOUNT.
+
+
+
+
+ The MAPI property PR_ACKNOWLEDGEMENT_MODE.
+
+
+ The MAPI property PR_ACKNOWLEDGEMENT_MODE.
+
+
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+ The MAPI property PR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT.
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT_ALLOWED.
+
+
+ The MAPI property PR_ALTERNATE_RECIPIENT_ALLOWED.
+
+
+
+
+ The MAPI property PR_ANR.
+
+
+ The MAPI property PR_ANR.
+
+
+
+
+ The MAPI property PR_ANR.
+
+
+ The MAPI property PR_ANR.
+
+
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+ The MAPI property PR_ASSISTANT.
+
+
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_ASSISTANT_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ASSOC_CONTENT_COUNT.
+
+
+ The MAPI property PR_ASSOC_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_ATTACH_ADDITIONAL_INFO.
+
+
+ The MAPI property PR_ATTACH_ADDITIONAL_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+ The MAPI property PR_ATTACH_CONTENT_BASE.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+ The MAPI property PR_ATTACH_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+ The MAPI property PR_ATTACH_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+ The MAPI property PR_ATTACH_DATA.
+
+
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+ The MAPI property PR_ATTACH_DISPOSITION.
+
+
+
+
+ The MAPI property PR_ATTACH_ENCODING.
+
+
+ The MAPI property PR_ATTACH_ENCODING.
+
+
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+ The MAPI property PR_ATTACH_EXTENSION.
+
+
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+ The MAPI property PR_ATTACH_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_FLAGS.
+
+
+ The MAPI property PR_ATTACH_FLAGS.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+ The MAPI property PR_ATTACH_LONG_FILENAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_LONG_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACHMENT_X400_PARAMETERS.
+
+
+ The MAPI property PR_ATTACHMENT_X400_PARAMETERS.
+
+
+
+
+ The MAPI property PR_ATTACH_METHOD.
+
+
+ The MAPI property PR_ATTACH_METHOD.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_SEQUENCE.
+
+
+ The MAPI property PR_ATTACH_MIME_SEQUENCE.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+ The MAPI property PR_ATTACH_MIME_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_NETSCAPE_MAC_INFO.
+
+
+ The MAPI property PR_ATTACH_NETSCAPE_MAC_INFO.
+
+
+
+
+ The MAPI property PR_ATTACH_NUM.
+
+
+ The MAPI property PR_ATTACH_NUM.
+
+
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+ The MAPI property PR_ATTACH_PATHNAME.
+
+
+
+
+ The MAPI property PR_ATTACH_RENDERING.
+
+
+ The MAPI property PR_ATTACH_RENDERING.
+
+
+
+
+ The MAPI property PR_ATTACH_SIZE.
+
+
+ The MAPI property PR_ATTACH_SIZE.
+
+
+
+
+ The MAPI property PR_ATTACH_TAG.
+
+
+ The MAPI property PR_ATTACH_TAG.
+
+
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+ The MAPI property PR_ATTACH_TRANSPORT_NAME.
+
+
+
+
+ The MAPI property PR_AUTHORIZING_USERS.
+
+
+ The MAPI property PR_AUTHORIZING_USERS.
+
+
+
+
+ The MAPI property PR_AUTOFORWARDED.
+
+
+ The MAPI property PR_AUTOFORWARDED.
+
+
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+ The MAPI property PR_AUTOFORWARDING_COMMENT.
+
+
+
+
+ The MAPI property PR_AUTORESPONSE_SUPPRESS.
+
+
+ The MAPI property PR_AUTORESPONSE_SUPPRESS.
+
+
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BEEPER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BIRTHDAY.
+
+
+ The MAPI property PR_BIRTHDAY.
+
+
+
+
+ The MAPI property PR_BODY.
+
+
+ The MAPI property PR_BODY.
+
+
+
+
+ The MAPI property PR_BODY.
+
+
+ The MAPI property PR_BODY.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+ The MAPI property PR_BODY_CONTENT_ID.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+ The MAPI property PR_BODY_CONTENT_LOCATION.
+
+
+
+
+ The MAPI property PR_BODY_CRC.
+
+
+ The MAPI property PR_BODY_CRC.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+ The MAPI property PR_BODY_HTML.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_BUSINESS2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+ The MAPI property PR_BUSINESS_ADDRESS_POSTAL_STREET.
+
+
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+ The MAPI property PR_BUSINESS_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+ The MAPI property PR_BUSINESS_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CALLBACK_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_CAR_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+ The MAPI property PR_CHILDRENS_NAMES.
+
+
+
+
+ The MAPI property PR_CLIENT_SUBMIT_TIME.
+
+
+ The MAPI property PR_CLIENT_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_COMMENT.
+
+
+ The MAPI property PR_COMMENT.
+
+
+
+
+ The MAPI property PR_COMMENT.
+
+
+ The MAPI property PR_COMMENT.
+
+
+
+
+ The MAPI property PR_COMMON_VIEWS_ENTRYID.
+
+
+ The MAPI property PR_COMMON_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+ The MAPI property PR_COMPANY_MAIN_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+ The MAPI property PR_COMPANY_NAME.
+
+
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+ The MAPI property PR_COMPUTER_NETWORK_NAME.
+
+
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+ The MAPI property PR_CONTACT_ADDRTYPES.
+
+
+
+
+ The MAPI property PR_CONTACT_DEFAULT_ADDRESS_INDEX.
+
+
+ The MAPI property PR_CONTACT_DEFAULT_ADDRESS_INDEX.
+
+
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+ The MAPI property PR_CONTACT_EMAIL_ADDRESSES.
+
+
+
+
+ The MAPI property PR_CONTACT_ENTRYIDS.
+
+
+ The MAPI property PR_CONTACT_ENTRYIDS.
+
+
+
+
+ The MAPI property PR_CONTACT_VERSION.
+
+
+ The MAPI property PR_CONTACT_VERSION.
+
+
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+ The MAPI property PR_CONTAINER_CLASS.
+
+
+
+
+ The MAPI property PR_CONTAINER_CONTENTS.
+
+
+ The MAPI property PR_CONTAINER_CONTENTS.
+
+
+
+
+ The MAPI property PR_CONTAINER_FLAGS.
+
+
+ The MAPI property PR_CONTAINER_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTAINER_HIERARCHY.
+
+
+ The MAPI property PR_CONTAINER_HIERARCHY.
+
+
+
+
+ The MAPI property PR_CONTAINER_MODIFY_VERSION.
+
+
+ The MAPI property PR_CONTAINER_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID.
+
+
+ The MAPI property PR_CONTENT_CONFIDENTIALITY_ALGORITHM_ID.
+
+
+
+
+ The MAPI property PR_CONTENT_CORRELATOR.
+
+
+ The MAPI property PR_CONTENT_CORRELATOR.
+
+
+
+
+ The MAPI property PR_CONTENT_COUNT.
+
+
+ The MAPI property PR_CONTENT_COUNT.
+
+
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+ The MAPI property PR_CONTENT_IDENTIFIER.
+
+
+
+
+ The MAPI property PR_CONTENT_INTEGRITY_CHECK.
+
+
+ The MAPI property PR_CONTENT_INTEGRITY_CHECK.
+
+
+
+
+ The MAPI property PR_CONTENT_LENGTH.
+
+
+ The MAPI property PR_CONTENT_LENGTH.
+
+
+
+
+ The MAPI property PR_CONTENT_RETURN_REQUESTED.
+
+
+ The MAPI property PR_CONTENT_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_CONTENTS_SORT_ORDER.
+
+
+ The MAPI property PR_CONTENTS_SORT_ORDER.
+
+
+
+
+ The MAPI property PR_CONTENT_UNREAD.
+
+
+ The MAPI property PR_CONTENT_UNREAD.
+
+
+
+
+ The MAPI property PR_CONTROL_FLAGS.
+
+
+ The MAPI property PR_CONTROL_FLAGS.
+
+
+
+
+ The MAPI property PR_CONTROL_ID.
+
+
+ The MAPI property PR_CONTROL_ID.
+
+
+
+
+ The MAPI property PR_CONTROL_STRUCTURE.
+
+
+ The MAPI property PR_CONTROL_STRUCTURE.
+
+
+
+
+ The MAPI property PR_CONTROL_TYPE.
+
+
+ The MAPI property PR_CONTROL_TYPE.
+
+
+
+
+ The MAPI property PR_CONVERSATION_INDEX.
+
+
+ The MAPI property PR_CONVERSATION_INDEX.
+
+
+
+
+ The MAPI property PR_CONVERSATION_KEY.
+
+
+ The MAPI property PR_CONVERSATION_KEY.
+
+
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+ The MAPI property PR_CONVERSATION_TOPIC.
+
+
+
+
+ The MAPI property PR_CONVERSION_EITS.
+
+
+ The MAPI property PR_CONVERSION_EITS.
+
+
+
+
+ The MAPI property PR_CONVERSION_PROHIBITED.
+
+
+ The MAPI property PR_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERSION_WITH_LOSS_PROHIBITED.
+
+
+ The MAPI property PR_CONVERSION_WITH_LOSS_PROHIBITED.
+
+
+
+
+ The MAPI property PR_CONVERTED_EITS.
+
+
+ The MAPI property PR_CONVERTED_EITS.
+
+
+
+
+ The MAPI property PR_CORRELATE.
+
+
+ The MAPI property PR_CORRELATE.
+
+
+
+
+ The MAPI property PR_CORRELATE_MTSID.
+
+
+ The MAPI property PR_CORRELATE_MTSID.
+
+
+
+
+ The MAPI property PR_COUNTRY.
+
+
+ The MAPI property PR_COUNTRY.
+
+
+
+
+ The MAPI property PR_COUNTRY.
+
+
+ The MAPI property PR_COUNTRY.
+
+
+
+
+ The MAPI property PR_CREATE_TEMPLATES.
+
+
+ The MAPI property PR_CREATE_TEMPLATES.
+
+
+
+
+ The MAPI property PR_CREATION_TIME.
+
+
+ The MAPI property PR_CREATION_TIME.
+
+
+
+
+ The MAPI property PR_CREATION_VERSION.
+
+
+ The MAPI property PR_CREATION_VERSION.
+
+
+
+
+ The MAPI property PR_CURRENT_VERSION.
+
+
+ The MAPI property PR_CURRENT_VERSION.
+
+
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+ The MAPI property PR_CUSTOMER_ID.
+
+
+
+
+ The MAPI property PR_DEFAULT_PROFILE.
+
+
+ The MAPI property PR_DEFAULT_PROFILE.
+
+
+
+
+ The MAPI property PR_DEFAULT_STORE.
+
+
+ The MAPI property PR_DEFAULT_STORE.
+
+
+
+
+ The MAPI property PR_DEFAULT_VIEW_ENTRYID.
+
+
+ The MAPI property PR_DEFAULT_VIEW_ENTRYID.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_DL.
+
+
+ The MAPI property PR_DEF_CREATE_DL.
+
+
+
+
+ The MAPI property PR_DEF_CREATE_MAILUSER.
+
+
+ The MAPI property PR_DEF_CREATE_MAILUSER.
+
+
+
+
+ The MAPI property PR_DEFERRED_DELIVERY_TIME.
+
+
+ The MAPI property PR_DEFERRED_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_DELEGATION.
+
+
+ The MAPI property PR_DELEGATION.
+
+
+
+
+ The MAPI property PR_DELETE_AFTER_SUBMIT.
+
+
+ The MAPI property PR_DELETE_AFTER_SUBMIT.
+
+
+
+
+ The MAPI property PR_DELIVER_TIME.
+
+
+ The MAPI property PR_DELIVER_TIME.
+
+
+
+
+ The MAPI property PR_DELIVERY_POINT.
+
+
+ The MAPI property PR_DELIVERY_POINT.
+
+
+
+
+ The MAPI property PR_DELTAX.
+
+
+ The MAPI property PR_DELTAX.
+
+
+
+
+ The MAPI property PR_DELTAY.
+
+
+ The MAPI property PR_DELTAY.
+
+
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+ The MAPI property PR_DEPARTMENT_NAME.
+
+
+
+
+ The MAPI property PR_DEPTH.
+
+
+ The MAPI property PR_DEPTH.
+
+
+
+
+ The MAPI property PR_DETAILS_TABLE.
+
+
+ The MAPI property PR_DETAILS_TABLE.
+
+
+
+
+ The MAPI property PR_DISCARD_REASON.
+
+
+ The MAPI property PR_DISCARD_REASON.
+
+
+
+
+ The MAPI property PR_DISCLOSE_RECIPIENTS.
+
+
+ The MAPI property PR_DISCLOSE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCLOSURE_OF_RECIPIENTS.
+
+
+ The MAPI property PR_DISCLOSURE_OF_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_DISCRETE_VALUES.
+
+
+ The MAPI property PR_DISCRETE_VALUES.
+
+
+
+
+ The MAPI property PR_DISC_VAL.
+
+
+ The MAPI property PR_DISC_VAL.
+
+
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+ The MAPI property PR_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+ The MAPI property PR_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+ The MAPI property PR_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+ The MAPI property PR_DISPLAY_NAME_PREFIX.
+
+
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+ The MAPI property PR_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_DISPLAY_TYPE.
+
+
+ The MAPI property PR_DISPLAY_TYPE.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_HISTORY.
+
+
+ The MAPI property PR_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_DL_EXPANSION_PROHIBITED.
+
+
+ The MAPI property PR_DL_EXPANSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_END_DATE.
+
+
+ The MAPI property PR_END_DATE.
+
+
+
+
+ The MAPI property PR_ENTRYID.
+
+
+ The MAPI property PR_ENTRYID.
+
+
+
+
+ The MAPI property PR_EXPAND_BEGIN_TIME.
+
+
+ The MAPI property PR_EXPAND_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_BEGIN_TIME.
+
+
+ The MAPI property PR_EXPANDED_BEGIN_TIME.
+
+
+
+
+ The MAPI property PR_EXPANDED_END_TIME.
+
+
+ The MAPI property PR_EXPANDED_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPAND_END_TIME.
+
+
+ The MAPI property PR_EXPAND_END_TIME.
+
+
+
+
+ The MAPI property PR_EXPIRY_TIME.
+
+
+ The MAPI property PR_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_EXPLICIT_CONVERSION.
+
+
+ The MAPI property PR_EXPLICIT_CONVERSION.
+
+
+
+
+ The MAPI property PR_FILTERING_HOOKS.
+
+
+ The MAPI property PR_FILTERING_HOOKS.
+
+
+
+
+ The MAPI property PR_FINDER_ENTRYID.
+
+
+ The MAPI property PR_FINDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_FOLDER_ASSOCIATED_CONTENTS.
+
+
+ The MAPI property PR_FOLDER_ASSOCIATED_CONTENTS.
+
+
+
+
+ The MAPI property PR_FOLDER_TYPE.
+
+
+ The MAPI property PR_FOLDER_TYPE.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+ The MAPI property PR_FORM_CATEGORY.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+ The MAPI property PR_FORM_CATEGORY_SUB.
+
+
+
+
+ The MAPI property PR_FORM_CLSID.
+
+
+ The MAPI property PR_FORM_CLSID.
+
+
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+ The MAPI property PR_FORM_CONTACT_NAME.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_GUID.
+
+
+ The MAPI property PR_FORM_DESIGNER_GUID.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+ The MAPI property PR_FORM_DESIGNER_NAME.
+
+
+
+
+ The MAPI property PR_FORM_HIDDEN.
+
+
+ The MAPI property PR_FORM_HIDDEN.
+
+
+
+
+ The MAPI property PR_FORM_HOST_MAP.
+
+
+ The MAPI property PR_FORM_HOST_MAP.
+
+
+
+
+ The MAPI property PR_FORM_MESSAGE_BEHAVIOR.
+
+
+ The MAPI property PR_FORM_MESSAGE_BEHAVIOR.
+
+
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+ The MAPI property PR_FORM_VERSION.
+
+
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+ The MAPI property PR_FTP_SITE.
+
+
+
+
+ The MAPI property PR_GENDER.
+
+
+ The MAPI property PR_GENDER.
+
+
+
+
+ The MAPI property PR_GENERATION.
+
+
+ The MAPI property PR_GENERATION.
+
+
+
+
+ The MAPI property PR_GENERATION.
+
+
+ The MAPI property PR_GENERATION.
+
+
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+ The MAPI property PR_GIVEN_NAME.
+
+
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+ The MAPI property PR_GOVERNMENT_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_HASATTACH.
+
+
+ The MAPI property PR_HASATTACH.
+
+
+
+
+ The MAPI property PR_HEADER_FOLDER_ENTRYID.
+
+
+ The MAPI property PR_HEADER_FOLDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_HOBBIES.
+
+
+ The MAPI property PR_HOBBIES.
+
+
+
+
+ The MAPI property PR_HOBBIES.
+
+
+ The MAPI property PR_HOBBIES.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+ The MAPI property PR_HOME_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_HOME_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_HOME_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_HOME_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_HOME_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+ The MAPI property PR_HOME_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+ The MAPI property PR_HOME_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_HOME_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_ICON.
+
+
+ The MAPI property PR_ICON.
+
+
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+ The MAPI property PR_IDENTITY_DISPLAY.
+
+
+
+
+ The MAPI property PR_IDENTITY_ENTRYID.
+
+
+ The MAPI property PR_IDENTITY_ENTRYID.
+
+
+
+
+ The MAPI property PR_IDENTITY_SEARCH_KEY.
+
+
+ The MAPI property PR_IDENTITY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IMPLICIT_CONVERSION_PROHIBITED.
+
+
+ The MAPI property PR_IMPLICIT_CONVERSION_PROHIBITED.
+
+
+
+
+ The MAPI property PR_IMPORTANCE.
+
+
+ The MAPI property PR_IMPORTANCE.
+
+
+
+
+ The MAPI property PR_INCOMPLETE_COPY.
+
+
+ The MAPI property PR_INCOMPLETE_COPY.
+
+
+
+
+ The Internet mail override charset.
+
+
+ The Internet mail override charset.
+
+
+
+
+ The Internet mail override format.
+
+
+ The Internet mail override format.
+
+
+
+
+ The MAPI property PR_INITIAL_DETAILS_PANE.
+
+
+ The MAPI property PR_INITIAL_DETAILS_PANE.
+
+
+
+
+ The MAPI property PR_INITIALS.
+
+
+ The MAPI property PR_INITIALS.
+
+
+
+
+ The MAPI property PR_INITIALS.
+
+
+ The MAPI property PR_INITIALS.
+
+
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+ The MAPI property PR_IN_REPLY_TO_ID.
+
+
+
+
+ The MAPI property PR_INSTANCE_KEY.
+
+
+ The MAPI property PR_INSTANCE_KEY.
+
+
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+ The MAPI property PR_INTERNET_APPROVED.
+
+
+
+
+ The MAPI property PR_INTERNET_ARTICLE_NUMBER.
+
+
+ The MAPI property PR_INTERNET_ARTICLE_NUMBER.
+
+
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+ The MAPI property PR_INTERNET_CONTROL.
+
+
+
+
+ The MAPI property PR_INTERNET_CPID.
+
+
+ The MAPI property PR_INTERNET_CPID.
+
+
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+ The MAPI property PR_INTERNET_DISTRIBUTION.
+
+
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+ The MAPI property PR_INTERNET_FOLLOWUP_TO.
+
+
+
+
+ The MAPI property PR_INTERNET_LINES.
+
+
+ The MAPI property PR_INTERNET_LINES.
+
+
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+ The MAPI property PR_INTERNET_MESSAGE_ID.
+
+
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+ The MAPI property PR_INTERNET_NEWSGROUPS.
+
+
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+ The MAPI property PR_INTERNET_NNTP_PATH.
+
+
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+ The MAPI property PR_INTERNET_ORGANIZATION.
+
+
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+ The MAPI property PR_INTERNET_PRECEDENCE.
+
+
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+ The MAPI property PR_INTERNET_REFERENCES.
+
+
+
+
+ The MAPI property PR_IPM_ID.
+
+
+ The MAPI property PR_IPM_ID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_ENTRYID.
+
+
+ The MAPI property PR_IPM_OUTBOX_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_OUTBOX_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_OUTBOX_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_RETURN_REQUESTED.
+
+
+ The MAPI property PR_IPM_RETURN_REQUESTED.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_ENTRYID.
+
+
+ The MAPI property PR_IPM_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SENTMAIL_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_SENTMAIL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_ENTRYID.
+
+
+ The MAPI property PR_IPM_SUBTREE_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_SUBTREE_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_SUBTREE_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_ENTRYID.
+
+
+ The MAPI property PR_IPM_WASTEBASKET_ENTRYID.
+
+
+
+
+ The MAPI property PR_IPM_WASTEBASKET_SEARCH_KEY.
+
+
+ The MAPI property PR_IPM_WASTEBASKET_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+ The MAPI property PR_ISDN_NUMBER.
+
+
+
+
+ The MAPI property PR_KEYWORD.
+
+
+ The MAPI property PR_KEYWORD.
+
+
+
+
+ The MAPI property PR_KEYWORD.
+
+
+ The MAPI property PR_KEYWORD.
+
+
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+ The MAPI property PR_LANGUAGE.
+
+
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+ The MAPI property PR_LANGUAGES.
+
+
+
+
+ The MAPI property PR_LAST_MODIFICATION_TIME.
+
+
+ The MAPI property PR_LAST_MODIFICATION_TIME.
+
+
+
+
+ The MAPI property PR_LATEST_DELIVERY_TIME.
+
+
+ The MAPI property PR_LATEST_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+ The MAPI property PR_LIST_HELP.
+
+
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+ The MAPI property PR_LIST_SUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+ The MAPI property PR_LIST_UNSUBSCRIBE.
+
+
+
+
+ The MAPI property PR_LOCALITY.
+
+
+ The MAPI property PR_LOCALITY.
+
+
+
+
+ The MAPI property PR_LOCALITY.
+
+
+ The MAPI property PR_LOCALITY.
+
+
+
+
+ The MAPI property PR_LOCATION.
+
+
+ The MAPI property PR_LOCATION.
+
+
+
+
+ The MAPI property PR_LOCATION.
+
+
+ The MAPI property PR_LOCATION.
+
+
+
+
+ The MAPI property PR_LOCK_BRANCH_ID.
+
+
+ The MAPI property PR_LOCK_BRANCH_ID.
+
+
+
+
+ The MAPI property PR_LOCK_DEPTH.
+
+
+ The MAPI property PR_LOCK_DEPTH.
+
+
+
+
+ The MAPI property PR_LOCK_ENLISTMENT_CONTEXT.
+
+
+ The MAPI property PR_LOCK_ENLISTMENT_CONTEXT.
+
+
+
+
+ The MAPI property PR_LOCK_EXPIRY_TIME.
+
+
+ The MAPI property PR_LOCK_EXPIRY_TIME.
+
+
+
+
+ The MAPI property PR_LOCK_PERSISTENT.
+
+
+ The MAPI property PR_LOCK_PERSISTENT.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_DID.
+
+
+ The MAPI property PR_LOCK_RESOURCE_DID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_FID.
+
+
+ The MAPI property PR_LOCK_RESOURCE_FID.
+
+
+
+
+ The MAPI property PR_LOCK_RESOURCE_MID.
+
+
+ The MAPI property PR_LOCK_RESOURCE_MID.
+
+
+
+
+ The MAPI property PR_LOCK_SCOPE.
+
+
+ The MAPI property PR_LOCK_SCOPE.
+
+
+
+
+ The MAPI property PR_LOCK_TIMEOUT.
+
+
+ The MAPI property PR_LOCK_TIMEOUT.
+
+
+
+
+ The MAPI property PR_LOCK_TYPE.
+
+
+ The MAPI property PR_LOCK_TYPE.
+
+
+
+
+ The MAPI property PR_MAIL_PERMISSION.
+
+
+ The MAPI property PR_MAIL_PERMISSION.
+
+
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+ The MAPI property PR_MANAGER_NAME.
+
+
+
+
+ The MAPI property PR_MAPPING_SIGNATURE.
+
+
+ The MAPI property PR_MAPPING_SIGNATURE.
+
+
+
+
+ The MAPI property PR_MDB_PROVIDER.
+
+
+ The MAPI property PR_MDB_PROVIDER.
+
+
+
+
+ The MAPI property PR_MESSAGE_ATTACHMENTS.
+
+
+ The MAPI property PR_MESSAGE_ATTACHMENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CC_ME.
+
+
+ The MAPI property PR_MESSAGE_CC_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+ The MAPI property PR_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_MESSAGE_CODEPAGE.
+
+
+ The MAPI property PR_MESSAGE_CODEPAGE.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_ID.
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_TIME.
+
+
+ The MAPI property PR_MESSAGE_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_DOWNLOAD_TIME.
+
+
+ The MAPI property PR_MESSAGE_DOWNLOAD_TIME.
+
+
+
+
+ The MAPI property PR_MESSAGE_FLAGS.
+
+
+ The MAPI property PR_MESSAGE_FLAGS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIPIENTS.
+
+
+ The MAPI property PR_MESSAGE_RECIPIENTS.
+
+
+
+
+ The MAPI property PR_MESSAGE_RECIP_ME.
+
+
+ The MAPI property PR_MESSAGE_RECIP_ME.
+
+
+
+
+ The MAPI property PR_MESSAGE_SECURITY_LABEL.
+
+
+ The MAPI property PR_MESSAGE_SECURITY_LABEL.
+
+
+
+
+ The MAPI property PR_MESSAGE_SIZE.
+
+
+ The MAPI property PR_MESSAGE_SIZE.
+
+
+
+
+ The MAPI property PR_MESSAGE_SUBMISSION_ID.
+
+
+ The MAPI property PR_MESSAGE_SUBMISSION_ID.
+
+
+
+
+ The MAPI property PR_MESSAGE_TOKEN.
+
+
+ The MAPI property PR_MESSAGE_TOKEN.
+
+
+
+
+ The MAPI property PR_MESSAGE_TO_ME.
+
+
+ The MAPI property PR_MESSAGE_TO_ME.
+
+
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+ The MAPI property PR_MHS_COMMON_NAME.
+
+
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+ The MAPI property PR_MIDDLE_NAME.
+
+
+
+
+ The MAPI property PR_MINI_ICON.
+
+
+ The MAPI property PR_MINI_ICON.
+
+
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_MOBILE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_MODIFY_VERSION.
+
+
+ The MAPI property PR_MODIFY_VERSION.
+
+
+
+
+ The MAPI property PR_MSG_STATUS.
+
+
+ The MAPI property PR_MSG_STATUS.
+
+
+
+
+ The MAPI property PR_NDR_DIAG_CODE.
+
+
+ The MAPI property PR_NDR_DIAG_CODE.
+
+
+
+
+ The MAPI property PR_NDR_REASON_CODE.
+
+
+ The MAPI property PR_NDR_REASON_CODE.
+
+
+
+
+ The MAPI property PR_NDR_STATUS_CODE.
+
+
+ The MAPI property PR_NDR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+ The MAPI property PR_NEWSGROUP_NAME.
+
+
+
+
+ The MAPI property PR_NICKNAME.
+
+
+ The MAPI property PR_NICKNAME.
+
+
+
+
+ The MAPI property PR_NICKNAME.
+
+
+ The MAPI property PR_NICKNAME.
+
+
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+ The MAPI property PR_NNTP_XREF.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_NOTIFICATION_REQUESTED.
+
+
+ The MAPI property PR_NON_RECEIPT_NOTIFICATION_REQUESTED.
+
+
+
+
+ The MAPI property PR_NON_RECEIPT_REASON.
+
+
+ The MAPI property PR_NON_RECEIPT_REASON.
+
+
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+ The MAPI property PR_NORMALIZED_SUBJECT.
+
+
+
+
+ The MAPI property PR_NT_SECURITY_DESCRIPTOR.
+
+
+ The MAPI property PR_NT_SECURITY_DESCRIPTOR.
+
+
+
+
+ The MAPI property PR_NULL.
+
+
+ The MAPI property PR_NULL.
+
+
+
+
+ The MAPI property PR_OBJECT_TYPE.
+
+
+ The MAPI property PR_OBJECT_TYPE.
+
+
+
+
+ The MAPI property PR_OBSOLETE_IPMS.
+
+
+ The MAPI property PR_OBSOLETE_IPMS.
+
+
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE2_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+ The MAPI property PR_OFFICE_LOCATION.
+
+
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OFFICE_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OOF_REPLY_TYPE.
+
+
+ The MAPI property PR_OOF_REPLY_TYPE.
+
+
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+ The MAPI property PR_ORGANIZATIONAL_ID_NUMBER.
+
+
+
+
+ The MAPI property PR_ORIG_ENTRYID.
+
+
+ The MAPI property PR_ORIG_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_AUTHOR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DELIVERY_TIME.
+
+
+ The MAPI property PR_ORIGINAL_DELIVERY_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_BCC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_CC.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+ The MAPI property PR_ORIGINAL_DISPLAY_TO.
+
+
+
+
+ The MAPI property PR_ORIGINAL_EITS.
+
+
+ The MAPI property PR_ORIGINAL_EITS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ENTRYID.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIP_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIPIENT_NAME.
+
+
+ The MAPI property PR_ORIGINALLY_INTENDED_RECIPIENT_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENDER_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENSITIVITY.
+
+
+ The MAPI property PR_ORIGINAL_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ENTRYID.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY.
+
+
+ The MAPI property PR_ORIGINAL_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+ The MAPI property PR_ORIGINAL_SUBJECT.
+
+
+
+
+ The MAPI property PR_ORIGINAL_SUBMIT_TIME.
+
+
+ The MAPI property PR_ORIGINAL_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_ORIGINATING_MTA_CERTIFICATE.
+
+
+ The MAPI property PR_ORIGINATING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY.
+
+
+ The MAPI property PR_ORIGINATOR_AND_DL_EXPANSION_HISTORY.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_CERTIFICATE.
+
+
+ The MAPI property PR_ORIGINATOR_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED.
+
+
+ The MAPI property PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED.
+
+
+ The MAPI property PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT.
+
+
+ The MAPI property PR_ORIGINATOR_REQUESTED_ALTERNATE_RECIPIENT.
+
+
+
+
+ The MAPI property PR_ORIGINATOR_RETURN_ADDRESS.
+
+
+ The MAPI property PR_ORIGINATOR_RETURN_ADDRESS.
+
+
+
+
+ The MAPI property PR_ORIGIN_CHECK.
+
+
+ The MAPI property PR_ORIGIN_CHECK.
+
+
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+ The MAPI property PR_ORIG_MESSAGE_CLASS.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_CITY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+ The MAPI property PR_OTHER_ADDRESS_COUNTRY.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_OTHER_ADDRESS_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+ The MAPI property PR_OTHER_ADDRESS_STREET.
+
+
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_OTHER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_OWNER_APPT_ID.
+
+
+ The MAPI property PR_OWNER_APPT_ID.
+
+
+
+
+ The MAPI property PR_OWN_STORE_ENTRYID.
+
+
+ The MAPI property PR_OWN_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PAGER_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+ The MAPI property PR_PARENT_DISPLAY.
+
+
+
+
+ The MAPI property PR_PARENT_ENTRYID.
+
+
+ The MAPI property PR_PARENT_ENTRYID.
+
+
+
+
+ The MAPI property PR_PARENT_KEY.
+
+
+ The MAPI property PR_PARENT_KEY.
+
+
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+ The MAPI property PR_PERSONAL_HOME_PAGE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY.
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_BUREAU_FAX_DELIVERY.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_MODE.
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_MODE.
+
+
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_REPORT_REQUEST.
+
+
+ The MAPI property PR_PHYSICAL_DELIVERY_REPORT_REQUEST.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS.
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED.
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_ADDRESS_REQUESTED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_PROHIBITED.
+
+
+ The MAPI property PR_PHYSICAL_FORWARDING_PROHIBITED.
+
+
+
+
+ The MAPI property PR_PHYSICAL_RENDITION_ATTRIBUTES.
+
+
+ The MAPI property PR_PHYSICAL_RENDITION_ATTRIBUTES.
+
+
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+ The MAPI property PR_POSTAL_ADDRESS.
+
+
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+ The MAPI property PR_POSTAL_CODE.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_ENTRIES.
+
+
+ The MAPI property PR_POST_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+ The MAPI property PR_POST_OFFICE_BOX.
+
+
+
+
+ The MAPI property PR_POST_REPLY_DENIED.
+
+
+ The MAPI property PR_POST_REPLY_DENIED.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_ENTRIES.
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_ENTRIES.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+ The MAPI property PR_POST_REPLY_FOLDER_NAMES.
+
+
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+ The MAPI property PR_PREFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_PREPROCESS.
+
+
+ The MAPI property PR_PREPROCESS.
+
+
+
+
+ The MAPI property PR_PRIMARY_CAPABILITY.
+
+
+ The MAPI property PR_PRIMARY_CAPABILITY.
+
+
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_FAX_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_PRIMARY_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_PRIORITY.
+
+
+ The MAPI property PR_PRIORITY.
+
+
+
+
+ The MAPI property PR_PROFESSION.
+
+
+ The MAPI property PR_PROFESSION.
+
+
+
+
+ The MAPI property PR_PROFESSION.
+
+
+ The MAPI property PR_PROFESSION.
+
+
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+ The MAPI property PR_PROFILE_NAME.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY.
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY.
+
+
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY_REQUESTED.
+
+
+ The MAPI property PR_PROOF_OF_DELIVERY_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION.
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION.
+
+
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION_REQUESTED.
+
+
+ The MAPI property PR_PROOF_OF_SUBMISSION_REQUESTED.
+
+
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+ The MAPI property PR_PROVIDER_DISPLAY.
+
+
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+ The MAPI property PR_PROVIDER_DLL_NAME.
+
+
+
+
+ The MAPI property PR_PROVIDER_ORDINAL.
+
+
+ The MAPI property PR_PROVIDER_ORDINAL.
+
+
+
+
+ The MAPI property PR_PROVIDER_SUBMIT_TIME.
+
+
+ The MAPI property PR_PROVIDER_SUBMIT_TIME.
+
+
+
+
+ The MAPI property PR_PROVIDER_UID.
+
+
+ The MAPI property PR_PROVIDER_UID.
+
+
+
+
+ The MAPI property PR_PUID.
+
+
+ The MAPI property PR_PUID.
+
+
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+ The MAPI property PR_RADIO_TELEPHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ENTRYID.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_RCVD_REPRESENTING_SEARCH_KEY.
+
+
+ The MAPI property PR_RCVD_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_ENTRYID.
+
+
+ The MAPI property PR_READ_RECEIPT_ENTRYID.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_REQUESTED.
+
+
+ The MAPI property PR_READ_RECEIPT_REQUESTED.
+
+
+
+
+ The MAPI property PR_READ_RECEIPT_SEARCH_KEY.
+
+
+ The MAPI property PR_READ_RECEIPT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIPT_TIME.
+
+
+ The MAPI property PR_RECEIPT_TIME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+ The MAPI property PR_RECEIVED_BY_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_RECEIVED_BY_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_ENTRYID.
+
+
+ The MAPI property PR_RECEIVED_BY_ENTRYID.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+ The MAPI property PR_RECEIVED_BY_NAME.
+
+
+
+
+ The MAPI property PR_RECEIVED_BY_SEARCH_KEY.
+
+
+ The MAPI property PR_RECEIVED_BY_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_RECEIVE_FOLDER_SETTINGS.
+
+
+ The MAPI property PR_RECEIVE_FOLDER_SETTINGS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_CERTIFICATE.
+
+
+ The MAPI property PR_RECIPIENT_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+ The MAPI property PR_RECIPIENT_NUMBER_FOR_ADVICE.
+
+
+
+
+ The MAPI property PR_RECIPIENT_REASSIGNMENT_PROHIBITED.
+
+
+ The MAPI property PR_RECIPIENT_REASSIGNMENT_PROHIBITED.
+
+
+
+
+ The MAPI property PR_RECIPIENT_STATUS.
+
+
+ The MAPI property PR_RECIPIENT_STATUS.
+
+
+
+
+ The MAPI property PR_RECIPIENT_TYPE.
+
+
+ The MAPI property PR_RECIPIENT_TYPE.
+
+
+
+
+ The MAPI property PR_REDIRECTION_HISTORY.
+
+
+ The MAPI property PR_REDIRECTION_HISTORY.
+
+
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+ The MAPI property PR_REFERRED_BY_NAME.
+
+
+
+
+ The MAPI property PR_REGISTERED_MAIL_TYPE.
+
+
+ The MAPI property PR_REGISTERED_MAIL_TYPE.
+
+
+
+
+ The MAPI property PR_RELATED_IPMS.
+
+
+ The MAPI property PR_RELATED_IPMS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS.
+
+
+ The MAPI property PR_REMOTE_PROGRESS.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+ The MAPI property PR_REMOTE_PROGRESS_TEXT.
+
+
+
+
+ The MAPI property PR_REMOTE_VALIDATE_OK.
+
+
+ The MAPI property PR_REMOTE_VALIDATE_OK.
+
+
+
+
+ The MAPI property PR_RENDERING_POSITION.
+
+
+ The MAPI property PR_RENDERING_POSITION.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_ENTRIES.
+
+
+ The MAPI property PR_REPLY_RECIPIENT_ENTRIES.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+ The MAPI property PR_REPLY_RECIPIENT_NAMES.
+
+
+
+
+ The MAPI property PR_REPLY_REQUESTED.
+
+
+ The MAPI property PR_REPLY_REQUESTED.
+
+
+
+
+ The MAPI property PR_REPLY_TIME.
+
+
+ The MAPI property PR_REPLY_TIME.
+
+
+
+
+ The MAPI property PR_REPORT_ENTRYID.
+
+
+ The MAPI property PR_REPORT_ENTRYID.
+
+
+
+
+ The MAPI property PR_REPORTING_DL_NAME.
+
+
+ The MAPI property PR_REPORTING_DL_NAME.
+
+
+
+
+ The MAPI property PR_REPORTING_MTA_CERTIFICATE.
+
+
+ The MAPI property PR_REPORTING_MTA_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+ The MAPI property PR_REPORT_NAME.
+
+
+
+
+ The MAPI property PR_REPORT_SEARCH_KEY.
+
+
+ The MAPI property PR_REPORT_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_REPORT_TAG.
+
+
+ The MAPI property PR_REPORT_TAG.
+
+
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+ The MAPI property PR_REPORT_TEXT.
+
+
+
+
+ The MAPI property PR_REPORT_TIME.
+
+
+ The MAPI property PR_REPORT_TIME.
+
+
+
+
+ The MAPI property PR_REQUESTED_DELIVERY_METHOD.
+
+
+ The MAPI property PR_REQUESTED_DELIVERY_METHOD.
+
+
+
+
+ The MAPI property PR_RESOURCE_FLAGS.
+
+
+ The MAPI property PR_RESOURCE_FLAGS.
+
+
+
+
+ The MAPI property PR_RESOURCE_METHODS.
+
+
+ The MAPI property PR_RESOURCE_METHODS.
+
+
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+ The MAPI property PR_RESOURCE_PATH.
+
+
+
+
+ The MAPI property PR_RESOURCE_TYPE.
+
+
+ The MAPI property PR_RESOURCE_TYPE.
+
+
+
+
+ The MAPI property PR_RESPONSE_REQUESTED.
+
+
+ The MAPI property PR_RESPONSE_REQUESTED.
+
+
+
+
+ The MAPI property PR_RESPONSIBILITY.
+
+
+ The MAPI property PR_RESPONSIBILITY.
+
+
+
+
+ The MAPI property PR_RETURNED_IPM.
+
+
+ The MAPI property PR_RETURNED_IPM.
+
+
+
+
+ The MAPI property PR_ROWID.
+
+
+ The MAPI property PR_ROWID.
+
+
+
+
+ The MAPI property PR_ROW_TYPE.
+
+
+ The MAPI property PR_ROW_TYPE.
+
+
+
+
+ The MAPI property PR_RTF_COMPRESSED.
+
+
+ The MAPI property PR_RTF_COMPRESSED.
+
+
+
+
+ The MAPI property PR_RTF_IN_SYNC.
+
+
+ The MAPI property PR_RTF_IN_SYNC.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_COUNT.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_CRC.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_CRC.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+ The MAPI property PR_RTF_SYNC_BODY_TAG.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_PREFIX_COUNT.
+
+
+ The MAPI property PR_RTF_SYNC_PREFIX_COUNT.
+
+
+
+
+ The MAPI property PR_RTF_SYNC_TRAILING_COUNT.
+
+
+ The MAPI property PR_RTF_SYNC_TRAILING_COUNT.
+
+
+
+
+ The MAPI property PR_SEARCH.
+
+
+ The MAPI property PR_SEARCH.
+
+
+
+
+ The MAPI property PR_SEARCH_KEY.
+
+
+ The MAPI property PR_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SECURITY.
+
+
+ The MAPI property PR_SECURITY.
+
+
+
+
+ The MAPI property PR_SELECTABLE.
+
+
+ The MAPI property PR_SELECTABLE.
+
+
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+ The MAPI property PR_SENDER_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENDER_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENDER_ENTRYID.
+
+
+ The MAPI property PR_SENDER_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+ The MAPI property PR_SENDER_NAME.
+
+
+
+
+ The MAPI property PR_SENDER_SEARCH_KEY.
+
+
+ The MAPI property PR_SENDER_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SEND_INTERNET_ENCODING.
+
+
+ The MAPI property PR_SEND_INTERNET_ENCODING.
+
+
+
+
+ The MAPI property PR_SEND_RECALL_REPORT
+
+
+ The MAPI property PR_SEND_RECALL_REPORT.
+
+
+
+
+ The MAPI property PR_SEND_RICH_INFO.
+
+
+ The MAPI property PR_SEND_RICH_INFO.
+
+
+
+
+ The MAPI property PR_SENSITIVITY.
+
+
+ The MAPI property PR_SENSITIVITY.
+
+
+
+
+ The MAPI property PR_SENTMAIL_ENTRYID.
+
+
+ The MAPI property PR_SENTMAIL_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+ The MAPI property PR_SENT_REPRESENTING_ADDRTYPE.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+ The MAPI property PR_SENT_REPRESENTING_EMAIL_ADDRESS.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_ENTRYID.
+
+
+ The MAPI property PR_SENT_REPRESENTING_ENTRYID.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+ The MAPI property PR_SENT_REPRESENTING_NAME.
+
+
+
+
+ The MAPI property PR_SENT_REPRESENTING_SEARCH_KEY.
+
+
+ The MAPI property PR_SENT_REPRESENTING_SEARCH_KEY.
+
+
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+ The MAPI property PR_SERVICE_DELETE_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+ The MAPI property PR_SERVICE_DLL_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_ENTRY_NAME.
+
+
+ The MAPI property PR_SERVICE_ENTRY_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_EXTRA_UIDS.
+
+
+ The MAPI property PR_SERVICE_EXTRA_UIDS.
+
+
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+ The MAPI property PR_SERVICE_NAME.
+
+
+
+
+ The MAPI property PR_SERVICES.
+
+
+ The MAPI property PR_SERVICES.
+
+
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+ The MAPI property PR_SERVICE_SUPPORT_FILES.
+
+
+
+
+ The MAPI property PR_SERVICE_UID.
+
+
+ The MAPI property PR_SERVICE_UID.
+
+
+
+
+ The MAPI property PR_SEVEN_BIT_DISPLAY_NAME.
+
+
+ The MAPI property PR_SEVEN_BIT_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+ The MAPI property PR_SMTP_ADDRESS.
+
+
+
+
+ The MAPI property PR_SPOOLER_STATUS.
+
+
+ The MAPI property PR_SPOOLER_STATUS.
+
+
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+ The MAPI property PR_SPOUSE_NAME.
+
+
+
+
+ The MAPI property PR_START_DATE.
+
+
+ The MAPI property PR_START_DATE.
+
+
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+ The MAPI property PR_STATE_OR_PROVINCE.
+
+
+
+
+ The MAPI property PR_STATUS.
+
+
+ The MAPI property PR_STATUS.
+
+
+
+
+ The MAPI property PR_STATUS_CODE.
+
+
+ The MAPI property PR_STATUS_CODE.
+
+
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+ The MAPI property PR_STATUS_STRING.
+
+
+
+
+ The MAPI property PR_STORE_ENTRYID.
+
+
+ The MAPI property PR_STORE_ENTRYID.
+
+
+
+
+ The MAPI property PR_STORE_PROVIDERS.
+
+
+ The MAPI property PR_STORE_PROVIDERS.
+
+
+
+
+ The MAPI property PR_STORE_RECORD_KEY.
+
+
+ The MAPI property PR_STORE_RECORD_KEY.
+
+
+
+
+ The MAPI property PR_STORE_STATE.
+
+
+ The MAPI property PR_STORE_STATE.
+
+
+
+
+ The MAPI property PR_STORE_SUPPORT_MASK.
+
+
+ The MAPI property PR_STORE_SUPPORT_MASK.
+
+
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+ The MAPI property PR_STREET_ADDRESS.
+
+
+
+
+ The MAPI property PR_SUBFOLDERS.
+
+
+ The MAPI property PR_SUBFOLDERS.
+
+
+
+
+ The MAPI property PR_SUBJECT.
+
+
+ The MAPI property PR_SUBJECT.
+
+
+
+
+ The MAPI property PR_SUBJECT.
+
+
+ The MAPI property PR_SUBJECT.
+
+
+
+
+ The MAPI property PR_SUBJECT_IPM.
+
+
+ The MAPI property PR_SUBJECT_IPM.
+
+
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+ The MAPI property PR_SUBJECT_PREFIX.
+
+
+
+
+ The MAPI property PR_SUBMIT_FLAGS.
+
+
+ The MAPI property PR_SUBMIT_FLAGS.
+
+
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+ The MAPI property PR_SUPERSEDES.
+
+
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+ The MAPI property PR_SUPPLEMENTARY_INFO.
+
+
+
+
+ The MAPI property PR_SURNAME.
+
+
+ The MAPI property PR_SURNAME.
+
+
+
+
+ The MAPI property PR_SURNAME.
+
+
+ The MAPI property PR_SURNAME.
+
+
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+ The MAPI property PR_TELEX_NUMBER.
+
+
+
+
+ The MAPI property PR_TEMPLATEID.
+
+
+ The MAPI property PR_TEMPLATEID.
+
+
+
+
+ The MAPI property PR_TITLE.
+
+
+ The MAPI property PR_TITLE.
+
+
+
+
+ The MAPI property PR_TITLE.
+
+
+ The MAPI property PR_TITLE.
+
+
+
+
+ The MAPI property PR_TNEF_CORRELATION_KEY.
+
+
+ The MAPI property PR_TNEF_CORRELATION_KEY.
+
+
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+ The MAPI property PR_TRANSMITABLE_DISPLAY_NAME.
+
+
+
+
+ The MAPI property PR_TRANSPORT_KEY.
+
+
+ The MAPI property PR_TRANSPORT_KEY.
+
+
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+ The MAPI property PR_TRANSPORT_MESSAGE_HEADERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_PROVIDERS.
+
+
+ The MAPI property PR_TRANSPORT_PROVIDERS.
+
+
+
+
+ The MAPI property PR_TRANSPORT_STATUS.
+
+
+ The MAPI property PR_TRANSPORT_STATUS.
+
+
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+ The MAPI property PR_TTYDD_PHONE_NUMBER.
+
+
+
+
+ The MAPI property PR_TYPE_OF_MTS_USER.
+
+
+ The MAPI property PR_TYPE_OF_MTS_USER.
+
+
+
+
+ The MAPI property PR_USER_CERTIFICATE.
+
+
+ The MAPI property PR_USER_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_USER_X509_CERTIFICATE.
+
+
+ The MAPI property PR_USER_X509_CERTIFICATE.
+
+
+
+
+ The MAPI property PR_VALID_FOLDER_MASK.
+
+
+ The MAPI property PR_VALID_FOLDER_MASK.
+
+
+
+
+ The MAPI property PR_VIEWS_ENTRYID.
+
+
+ The MAPI property PR_VIEWS_ENTRYID.
+
+
+
+
+ The MAPI property PR_WEDDING_ANNIVERSARY.
+
+
+ The MAPI property PR_WEDDING_ANNIVERSARY.
+
+
+
+
+ The MAPI property PR_X400_CONTENT_TYPE.
+
+
+ The MAPI property PR_X400_CONTENT_TYPE.
+
+
+
+
+ The MAPI property PR_X400_DEFERRED_DELIVERY_CANCEL.
+
+
+ The MAPI property PR_X400_DEFERRED_DELIVERY_CANCEL.
+
+
+
+
+ The MAPI property PR_XPOS.
+
+
+ The MAPI property PR_XPOS.
+
+
+
+
+ The MAPI property PR_YPOS.
+
+
+ The MAPI property PR_YPOS.
+
+
+
+
+ Gets the property identifier.
+
+
+ Gets the property identifier.
+
+ The identifier.
+
+
+
+ Gets a value indicating whether or not the property contains multiple values.
+
+
+ Gets a value indicating whether or not the property contains multiple values.
+
+ true if the property contains multiple values; otherwise, false.
+
+
+
+ Gets a value indicating whether or not the property has a special name.
+
+
+ Gets a value indicating whether or not the property has a special name.
+
+ true if the property has a special name; otherwise, false.
+
+
+
+ Gets a value indicating whether the property value type is valid.
+
+
+ Gets a value indicating whether the property value type is valid.
+
+ true if the property value type is valid; otherwise, false.
+
+
+
+ Gets the property's value type (including the multi-valued bit).
+
+
+ Gets the property's value type (including the multi-valued bit).
+
+ The property's value type.
+
+
+
+ Gets the type of the value that the property contains.
+
+
+ Gets the type of the value that the property contains.
+
+ The type of the value.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new based on a 32-bit integer tag as read from
+ a TNEF stream.
+
+ The property tag.
+
+
+
+ Initializes a new instance of the struct.
+
+
+ Creates a new based on a
+ and .
+
+ The property identifier.
+ The property type.
+
+
+
+ Casts an integer tag value into a TNEF property tag.
+
+
+ Casts an integer tag value into a TNEF property tag.
+
+ A that represents the integer tag value.
+ The integer tag value.
+
+
+
+ Casts a TNEF property tag into a 32-bit integer value.
+
+
+ Casts a TNEF property tag into a 32-bit integer value.
+
+ A 32-bit integer value representing the TNEF property tag.
+ The TNEF property tag.
+
+
+
+ Serves as a hash function for a object.
+
+
+ Serves as a hash function for a object.
+
+ A hash code for this instance that is suitable for use in hashing algorithms
+ and data structures such as a hash table.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Returns a new where the type has been changed to .
+
+
+ Returns a new where the type has been changed to .
+
+ The unicode equivalent of the property tag.
+
+
+
+ The type of value that a TNEF property contains.
+
+
+ The type of value that a TNEF property contains.
+
+
+
+
+ The type of the property is unspecified.
+
+
+
+
+ The property has a null value.
+
+
+
+
+ The property has a signed 16-bit value.
+
+
+
+
+ The property has a signed 32-bit value.
+
+
+
+
+ THe property has a 32-bit floating point value.
+
+
+
+
+ The property has a 64-bit floating point value.
+
+
+
+
+ The property has a 64-bit integer value representing 1/10000th of a monetary unit (i.e., 1/100th of a cent).
+
+
+
+
+ The property has a 64-bit integer value specifying the number of 100ns periods since Jan 1, 1601.
+
+
+
+
+ The property has a 32-bit error value.
+
+
+
+
+ The property has a boolean value.
+
+
+
+
+ The property has an embedded object value.
+
+
+
+
+ The property has a signed 64-bit value.
+
+
+
+
+ The property has a null-terminated 8-bit character string value.
+
+
+
+
+ The property has a null-terminated unicode character string value.
+
+
+
+
+ The property has a 64-bit integer value specifying the number of 100ns periods since Jan 1, 1601.
+
+
+
+
+ The property has an OLE GUID value.
+
+
+
+
+ The property has a binary blob value.
+
+
+
+
+ A flag indicating that the property contains multiple values.
+
+
+
+
+ A TNEF reader.
+
+
+ A TNEF reader.
+
+
+
+
+ Gets the attachment key value.
+
+
+ Gets the attachment key value.
+
+ The attachment key value.
+
+
+
+ Gets the current attribute's level.
+
+
+ Gets the current attribute's level.
+
+ The current attribute's level.
+
+
+
+ Gets the length of the current attribute's raw value.
+
+
+ Gets the length of the current attribute's raw value.
+
+ The length of the current attribute's raw value.
+
+
+
+ Gets the stream offset of the current attribute's raw value.
+
+
+ Gets the stream offset of the current attribute's raw value.
+
+ The stream offset of the current attribute's raw value.
+
+
+
+ Gets the current attribute's tag.
+
+
+ Gets the current attribute's tag.
+
+ The current attribute's tag.
+
+
+
+ Gets the compliance mode.
+
+
+ Gets the compliance mode.
+
+ The compliance mode.
+
+
+
+ Gets the current compliance status of the TNEF stream.
+
+
+ Gets the current compliance status of the TNEF stream.
+ As the reader progresses, this value may change if errors are encountered.
+
+ The compliance status.
+
+
+
+ Gets the message codepage.
+
+
+ Gets the message codepage.
+
+ The message codepage.
+
+
+
+ Gets the TNEF property reader.
+
+
+ Gets the TNEF property reader.
+
+ The TNEF property reader.
+
+
+
+ Gets the current stream offset.
+
+
+ Gets the current stream offset.
+
+ The stream offset.
+
+
+
+ Gets the TNEF version.
+
+
+ Gets the TNEF version.
+
+ The TNEF version.
+
+
+
+ Initializes a new instance of the class.
+
+
+ When reading a TNEF stream using the mode,
+ a will be thrown immediately at the first sign of
+ invalid or corrupted data.
+ When reading a TNEF stream using the mode,
+ however, compliance issues are accumulated in the
+ property, but exceptions are not raised unless the stream is too corrupted to continue.
+
+ The input stream.
+ The default message codepage.
+ The compliance mode.
+
+ is null.
+
+
+ is not a valid codepage.
+
+
+ is not a supported codepage.
+
+
+ The TNEF stream is corrupted or invalid.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new for the specified input stream.
+
+ The input stream.
+
+ is null.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before the
+ is reclaimed by garbage collection.
+
+
+
+
+ Advances to the next attribute in the TNEF stream.
+
+
+ Advances to the next attribute in the TNEF stream.
+
+ true if there is another attribute available to be read; otherwise false.
+
+ The TNEF stream is corrupted or invalid.
+
+
+
+
+ Reads the raw attribute value data from the underlying TNEF stream.
+
+
+ Reads the raw attribute value data from the underlying TNEF stream.
+
+ The total number of bytes read into the buffer. This can be less than the number
+ of bytes requested if that many bytes are not available, or zero (0) if the end of the
+ value has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Resets the compliance status.
+
+
+ Resets the compliance status.
+
+
+
+
+ Closes the TNEF reader and the underlying stream.
+
+
+ Closes the TNEF reader and the underlying stream.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resource used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After calling
+ , you must release all references to the so the garbage
+ collector can reclaim the memory that the was occupying.
+
+
+
+ A stream for reading raw values from a or .
+
+
+ A stream for reading raw values from a or .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a stream for reading a raw value from the .
+
+ The .
+ The end offset.
+
+
+
+ Checks whether or not the stream supports reading.
+
+
+ The is always readable.
+
+ true if the stream supports reading; otherwise, false.
+
+
+
+ Checks whether or not the stream supports writing.
+
+
+ Writing to a is not supported.
+
+ true if the stream supports writing; otherwise, false.
+
+
+
+ Checks whether or not the stream supports seeking.
+
+
+ Seeking within a is not supported.
+
+ true if the stream supports seeking; otherwise, false.
+
+
+
+ Gets the length of the stream, in bytes.
+
+
+ Getting the length of a is not supported.
+
+ The length of the stream in bytes.
+
+ The stream does not support seeking.
+
+
+
+
+ Gets or sets the current position within the stream.
+
+
+ Getting and setting the position of a is not supported.
+
+ The position of the stream.
+
+ The stream does not support seeking.
+
+
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+
+ Reads a sequence of bytes from the stream and advances the position
+ within the stream by the number of bytes read.
+
+ The total number of bytes read into the buffer. This can be less than the number of bytes requested if that many
+ bytes are not currently available, or zero (0) if the end of the stream has been reached.
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+ The stream has been disposed.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes a sequence of bytes to the stream and advances the current
+ position within this stream by the number of bytes written.
+
+
+ The does not support writing.
+
+ The buffer to write.
+ The offset of the first byte to write.
+ The number of bytes to write.
+
+ The stream does not support writing.
+
+
+
+
+ Sets the position within the current stream.
+
+
+ The does not support seeking.
+
+ The new position within the stream.
+ The offset into the stream relative to the .
+ The origin to seek from.
+
+ The stream does not support seeking.
+
+
+
+
+ Clears all buffers for this stream and causes any buffered data to be written
+ to the underlying device.
+
+
+ The does not support writing.
+
+
+ The stream does not support writing.
+
+
+
+
+ Sets the length of the stream.
+
+
+ The does not support setting the length.
+
+ The desired length of the stream in bytes.
+
+ The stream does not support setting the length.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ The underlying is not disposed.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ The 32-bit cyclic redundancy check (CRC) algorithm.
+
+
+ A cyclic redundancy check is a form of integrity check to make sure
+ that a block of data has not been corrupted.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new CRC32 context.
+
+ The initial value.
+
+
+
+ Clones the CRC32 context and state.
+
+
+ Clones the CRC32 context and state.
+
+
+
+
+ Gets the computed checksum.
+
+
+ Gets the computed checksum.
+
+ The checksum.
+
+
+
+ Updates the CRC based on the specified block of data.
+
+
+ Updates the CRC based on the specified block of data.
+
+ The buffer to read data into.
+ The offset into the buffer to start reading data.
+ The number of bytes to read.
+
+ is null.
+
+
+ is less than zero or greater than the length of .
+ -or-
+ The is not large enough to contain bytes starting
+ at the specified .
+
+
+
+
+ Updates the CRC based on the specified byte.
+
+
+ Updates the CRC based on the specified byte.
+
+ The byte value.
+
+
+
+ Resets the checksum so that the context can be reused.
+
+
+ Resets the checksum so that the context can be reused.
+
+
+
+
+ Utility methods to parse and format rfc822 date strings.
+
+
+ Utility methods to parse and format rfc822 date strings.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed date.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed date.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the specified index.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed date.
+
+ is null.
+
+
+ is not within the range of the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the supplied buffer starting at the specified index.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed date.
+
+ is null.
+
+
+ is not within the range of the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified buffer.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified buffer.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified text.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input text.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses an rfc822 date and time from the specified text.
+
+ true, if the date was successfully parsed, false otherwise.
+ The input text.
+ The parsed date.
+
+ is null.
+
+
+
+
+ Formats the as an rfc822 date string.
+
+
+ Formats the date and time in the format specified by rfc822, suitable for use
+ in the Date header of MIME messages.
+
+ The formatted string.
+ The date.
+
+
+
+ MIME utility methods.
+
+
+ Various utility methods that don't belong anywhere else.
+
+
+
+
+ A string comparer that performs a case-insensitive ordinal string comparison.
+
+
+ A string comparer that performs a case-insensitive ordinal string comparison.
+
+
+
+
+ Generates a Message-Id.
+
+
+ Generates a new Message-Id using the supplied domain.
+
+ The message identifier.
+ A domain to use.
+
+ is null.
+
+
+ is invalid.
+
+
+
+
+ Generates a Message-Id.
+
+
+ Generates a new Message-Id using the local machine's domain.
+
+ The message identifier.
+
+
+
+ Enumerates the message-id references such as those that can be found in
+ the In-Reply-To or References header.
+
+
+ Incrementally parses Message-Ids (such as those from a References header
+ in a MIME message) from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The references.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Enumerates the message-id references such as those that can be found in
+ the In-Reply-To or References header.
+
+
+ Incrementally parses Message-Ids (such as those from a References header
+ in a MIME message) from the specified text.
+
+ The references.
+ The text to parse.
+
+ is null.
+
+
+
+
+ Parses a Message-Id header value.
+
+
+ Parses the Message-Id value, returning the addr-spec portion of the msg-id token.
+
+ The addr-spec portion of the msg-id token.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Parses a Message-Id header value.
+
+
+ Parses the Message-Id value, returning the addr-spec portion of the msg-id token.
+
+ The addr-spec portion of the msg-id token.
+ The text to parse.
+
+ is null.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the version was successfully parsed, false otherwise.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+ The parsed version.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the specified text.
+
+ true, if the version was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed version.
+
+ is null.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the version was successfully parsed, false otherwise.
+ The raw byte buffer to parse.
+ The index into the buffer to start parsing.
+ The length of the buffer to parse.
+ The parsed version.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse a version from a header such as Mime-Version.
+
+
+ Parses a MIME version string from the specified text.
+
+ true, if the version was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed version.
+
+ is null.
+
+
+
+
+ Tries to parse the value of a Content-Transfer-Encoding header.
+
+
+ Parses a Content-Transfer-Encoding header value.
+
+ true, if the encoding was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed encoding.
+
+ is null.
+
+
+
+
+ Quotes the specified text.
+
+
+ Quotes the specified text, enclosing it in double-quotes and escaping
+ any backslashes and double-quotes within.
+
+ The quoted text.
+ The text to quote.
+
+ is null.
+
+
+
+
+ Unquotes the specified text.
+
+
+ Unquotes the specified text, removing any escaped backslashes within.
+
+ The unquoted text.
+ The text to unquote.
+
+ is null.
+
+
+
+
+ An optimized version of StringComparer.OrdinalIgnoreCase.
+
+
+ An optimized version of StringComparer.OrdinalIgnoreCase.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Compare the input strings for equality.
+
+
+ Compares the input strings for equality.
+
+ trueif and refer to the same object,
+ or and are equal,
+ or and are null;
+ otherwise, false.
+ A string to compare to .
+ A string to compare to .
+
+
+
+ Get the hash code for the specified string.
+
+
+ Get the hash code for the specified string.
+
+ A 32-bit signed hash code calculated from the value of the parameter.
+ The string.
+
+ is null.
+
+
+
+
+ Utility methods for encoding and decoding rfc2047 encoded-word tokens.
+
+
+ Utility methods for encoding and decoding rfc2047 encoded-word tokens.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) starting at the given index and spanning across
+ the specified number of bytes using the supplied parser options.
+
+ The decoded phrase.
+ The parser options to use.
+ The phrase to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) starting at the given index and spanning across
+ the specified number of bytes using the default parser options.
+
+ The decoded phrase.
+ The phrase to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) within the specified buffer using the supplied parser options.
+
+ The decoded phrase.
+ The parser options to use.
+ The phrase to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Decodes the phrase.
+
+
+ Decodes the phrase(s) within the specified buffer using the default parser options.
+
+ The decoded phrase.
+ The phrase to decode.
+
+ is null.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer starting at the given index and spanning
+ across the specified number of bytes using the supplied parser options.
+
+ The decoded text.
+ The parser options to use.
+ The text to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer starting at the given index and spanning
+ across the specified number of bytes using the default parser options.
+
+ The decoded text.
+ The text to decode.
+ The starting index.
+ The number of bytes to decode.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer using the specified parser options.
+
+ The decoded text.
+ The parser options to use.
+ The text to decode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Decodes unstructured text.
+
+
+ Decodes the unstructured text buffer using the default parser options.
+
+ The decoded text.
+ The text to decode.
+
+ is null.
+
+
+
+
+ Encodes the phrase.
+
+
+ Encodes the phrase according to the rules of rfc2047 using
+ the specified charset encoding and formatting options.
+
+ The encoded phrase.
+ The formatting options
+ The charset encoding.
+ The phrase to encode.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encodes the phrase.
+
+
+ Encodes the phrase according to the rules of rfc2047 using
+ the specified charset encoding.
+
+ The encoded phrase.
+ The charset encoding.
+ The phrase to encode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encodes the unstructured text.
+
+
+ Encodes the unstructured text according to the rules of rfc2047
+ using the specified charset encoding and formatting options.
+
+ The encoded text.
+ The formatting options
+ The charset encoding.
+ The text to encode.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Encodes the unstructured text.
+
+
+ Encodes the unstructured text according to the rules of rfc2047
+ using the specified charset encoding.
+
+ The encoded text.
+ The charset encoding.
+ The text to encode.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ A collection of attachments.
+
+
+ The is only used when building a message body with a .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+ If is true, then the attachments
+ are treated as if they are linked to another .
+
+ If set to true; the attachments are treated as linked resources.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the number of attachments currently in the collection.
+
+
+ Indicates the number of attachments in the collection.
+
+ The number of attachments.
+
+
+
+ Gets whther or not the collection is read-only.
+
+
+ A is never read-only.
+
+ true if the collection is read only; otherwise, false.
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The attachment at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified data as an attachment using the supplied Content-Type.
+ The file name parameter is used to set the Content-Location.
+ For a list of known mime-types and their associated file extensions, see
+ http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+
+ The newly added attachment .
+ The name of the file.
+ The file data.
+ The mime-type of the file.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified data as an attachment using the supplied Content-Type.
+ The file name parameter is used to set the Content-Location.
+ For a list of known mime-types and their associated file extensions, see
+ http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+
+ The newly added attachment .
+ The name of the file.
+ The content stream.
+ The mime-type of the file.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+ -or-
+ The stream cannot be read.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the data as an attachment, using the specified file name for deducing
+ the mime-type by extension and for setting the Content-Location.
+
+ The newly added attachment .
+ The name of the file.
+ The file data to attach.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the stream as an attachment, using the specified file name for deducing
+ the mime-type by extension and for setting the Content-Location.
+
+ The newly added attachment .
+ The name of the file.
+ The content stream.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+ -or-
+ The stream cannot be read
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified file as an attachment using the supplied Content-Type.
+ For a list of known mime-types and their associated file extensions, see
+ http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
+
+ The newly added attachment .
+ The name of the file.
+ The mime-type of the file.
+
+ is null.
+ -or-
+ is null.
+
+
+ The specified file path is empty.
+
+
+ The specified file could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified file as an attachment.
+
+ The newly added attachment .
+ The name of the file.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Add the specified attachment.
+
+
+ Adds the specified as an attachment.
+
+ The attachment.
+
+ is null.
+
+
+
+
+ Clears the attachment collection.
+
+
+ Removes all attachments from the collection.
+
+
+
+
+ Checks if the collection contains the specified attachment.
+
+
+ Determines whether or not the collection contains the specified attachment.
+
+ true if the specified attachment exists;
+ otherwise false.
+ The attachment.
+
+ is null.
+
+
+
+
+ Copies all of the attachments in the collection to the specified array.
+
+
+ Copies all of the attachments within the into the array,
+ starting at the specified array index.
+
+ The array to copy the attachments to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the index of the requested attachment, if it exists.
+
+
+ Finds the index of the specified attachment, if it exists.
+
+ The index of the requested attachment; otherwise -1.
+ The attachment.
+
+ is null.
+
+
+
+
+ Inserts the specified attachment at the given index.
+
+
+ Inserts the attachment at the specified index.
+
+ The index to insert the attachment.
+ The attachment.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified attachment.
+
+
+ Removes the specified attachment.
+
+ true if the attachment was removed; otherwise false.
+ The attachment.
+
+ is null.
+
+
+
+
+ Removes the attachment at the specified index.
+
+
+ Removes the attachment at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets an enumerator for the list of attachments.
+
+
+ Gets an enumerator for the list of attachments.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of attachments.
+
+
+ Gets an enumerator for the list of attachments.
+
+ The enumerator.
+
+
+
+ A message body builder.
+
+
+ is a helper class for building common MIME body structures.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the attachments.
+
+
+ Represents a collection of file attachments that will be included in the message.
+
+ The attachments.
+
+
+
+ Gets the linked resources.
+
+
+ Linked resources are a special type of attachment which are linked to from the .
+
+ The linked resources.
+
+
+
+ Gets or sets the text body.
+
+
+ Represents the plain-text formatted version of the message body.
+
+ The text body.
+
+
+
+ Gets or sets the html body.
+
+
+ Represents the html formatted version of the message body and may link to any of the .
+
+ The html body.
+
+
+
+ Constructs the message body based on the text-based bodies, the linked resources, and the attachments.
+
+
+ Combines the , , ,
+ and into the proper MIME structure suitable for display in many common
+ mail clients.
+
+ The message body.
+
+
+
+ A class representing a Content-Disposition header value.
+
+
+ The Content-Disposition header is a way for the originating client to
+ suggest to the receiving client whether to present the part to the user
+ as an attachment or as part of the content (inline).
+
+
+
+
+ The attachment disposition.
+
+
+ Indicates that the should be treated as an attachment.
+
+
+
+
+ The form-data disposition.
+
+
+ Indicates that the should be treated as form data.
+
+
+
+
+ The inline disposition.
+
+
+ Indicates that the should be rendered inline.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ The disposition should either be
+ or .
+
+ The disposition.
+
+ is null.
+
+
+ is not "attachment" or "inline".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This is identical to with a disposition
+ value of .
+
+
+
+
+ Gets or sets the disposition.
+
+
+ The disposition is typically either "attachment" or "inline".
+
+ The disposition.
+
+ is null.
+
+
+ is an invalid disposition value.
+
+
+
+
+ Gets or sets a value indicating whether the is an attachment.
+
+
+ A convenience property to determine if the entity should be considered an attachment or not.
+
+ true if the is an attachment; otherwise, false.
+
+
+
+ Gets the parameters.
+
+
+ In addition to specifying whether the entity should be treated as an
+ attachment vs displayed inline, the Content-Disposition header may also
+ contain parameters to provide further information to the receiving client
+ such as the file attributes.
+
+ The parameters.
+
+
+
+ Gets or sets the name of the file.
+
+
+ When set, this can provide a useful hint for a default file name for the
+ content when the user decides to save it to disk.
+
+ The name of the file.
+
+
+
+ Gets or sets the creation-date parameter.
+
+
+ Refers to the date and time that the content file was created on the
+ originating system. This parameter serves little purpose and is
+ typically not used by mail clients.
+
+ The creation date.
+
+
+
+ Gets or sets the modification-date parameter.
+
+
+ Refers to the date and time that the content file was last modified on
+ the originating system. This parameter serves little purpose and is
+ typically not used by mail clients.
+
+ The modification date.
+
+
+
+ Gets or sets the read-date parameter.
+
+
+ Refers to the date and time that the content file was last read on the
+ originating system. This parameter serves little purpose and is typically
+ not used by mail clients.
+
+ The read date.
+
+
+
+ Gets or sets the size parameter.
+
+
+ When set, the size parameter typically refers to the original size of the
+ content on disk. This parameter is rarely used by mail clients as it serves
+ little purpose.
+
+ The size.
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the ,
+ optionally encoding the parameters as they would be encoded for trabsport.
+
+ The serialized string.
+ The formatting options.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the ,
+ optionally encoding the parameters as they would be encoded for trabsport.
+
+ The serialized string.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+
+
+
+
+ Returns a that represents the current
+ .
+
+
+ Creates a string-representation of the .
+
+ A that represents the current
+ .
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed disposition.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed disposition.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the specified buffer.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Disposition value from the specified buffer.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed disposition.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied text.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The parser options.
+ The text to parse.
+ The parsed disposition.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Disposition value from the supplied text.
+
+ true, if the disposition was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed disposition.
+
+ is null.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the supplied buffer.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the specified text.
+
+ The parsed .
+ The parser options.
+ The input text.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Disposition value from the specified text.
+
+ The parsed .
+ The input text.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ An enumeration of all supported content transfer encodings.
+ .
+
+
+ Some older mail software is unable to properly deal with
+ data outside of the ASCII range, so it is sometimes
+ necessary to encode the content of MIME entities.
+
+
+
+
+ The default encoding (aka no encoding at all).
+
+
+
+
+ The 7bit content transfer encoding.
+
+
+ This encoding should be restricted to textual content
+ in the US-ASCII range.
+
+
+
+
+ The 8bit content transfer encoding.
+
+
+ This encoding should be restricted to textual content
+ outside of the US-ASCII range but may not be supported
+ by all transport services such as older SMTP servers
+ that do not support the 8BITMIME extension.
+
+
+
+
+ The binary content transfer encoding.
+
+
+ This encoding is simply unencoded binary data. Typically not
+ supported by standard message transport services such as SMTP.
+
+
+
+
+ The base64 content transfer encoding.
+ .
+
+
+ This encoding is typically used for encoding binary data
+ or textual content in a largely 8bit charset encoding and
+ is supported by all message transport services.
+
+
+
+
+ The quoted printable content transfer encoding.
+ .
+
+
+ This encoding is used for textual content that is in a charset
+ that has a minority of characters outside of the US-ASCII range
+ (such as ISO-8859-1 and other single-byte charset encodings) and
+ is supported by all message transport services.
+
+
+
+
+ The uuencode content transfer encoding.
+ .
+
+
+ This is an obsolete encoding meant for encoding binary
+ data and has largely been superceeded by .
+
+
+
+
+ Encapsulates a content stream used by .
+
+
+ A represents the content of a .
+ The content has both a stream and an encoding (typically ).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ When creating new s, the
+ should typically be unless the
+ has already been encoded.
+
+ The content stream.
+ The stream encoding.
+
+ is null.
+
+
+ does not support reading.
+ -or-
+ does not support seeking.
+
+
+
+
+ Gets or sets the content encoding.
+
+
+ If the was parsed from an existing stream, the
+ encoding will be identical to the ,
+ otherwise it will typically be .
+
+ The content encoding.
+
+
+
+ Gets the content stream.
+
+
+ Gets the content stream.
+
+ The stream.
+
+
+
+ Opens the decoded content stream.
+
+
+ Provides a means of reading the decoded content without having to first write it to another
+ stream using .
+
+ The decoded content stream.
+
+
+
+ Copies the content stream to the specified output stream.
+
+
+ This is equivalent to simply using to
+ copy the content stream to the output stream except that this method is
+ cancellable.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Decodes the content stream into another stream.
+
+
+ Uses the to decode the content stream to the output stream.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ A class representing a Content-Type header value.
+
+
+ The Content-Type header is a way for the originating client to
+ suggest to the receiving client the mime-type of the content and,
+ depending on that mime-type, presentation options such as charset.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new based on the media type and subtype provided.
+
+ Media type.
+ Media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets or sets the type of the media.
+
+
+ Represents the media type of the . Examples include
+ "text", "image", and "application". This string should
+ always be treated as case-insensitive.
+
+ The type of the media.
+
+ is null.
+
+
+
+
+ Gets or sets the media subtype.
+
+
+ Represents the media subtype of the . Examples include
+ "html", "jpeg", and "octet-stream". This string should
+ always be treated as case-insensitive.
+
+ The media subtype.
+
+ is null.
+
+
+
+
+ Gets the parameters.
+
+
+ In addition to the media type and subtype, the Content-Type header may also
+ contain parameters to provide further hints to the receiving client as to
+ how to process or display the content.
+
+ The parameters.
+
+
+
+ Gets or sets the boundary parameter.
+
+
+ This is a special parameter on entities, designating to the
+ parser a unique string that should be considered the boundary marker for each sub-part.
+
+ The boundary.
+
+
+
+ Gets or sets the charset parameter.
+
+
+ Text-based entities will often include a charset parameter
+ so that the receiving client can properly render the text.
+
+ The charset.
+
+
+
+ Gets or sets the format parameter.
+
+
+ The format parameter is typically use with text/plain
+ entities and will either have a value of "fixed" or "flowed".
+
+ The charset.
+
+
+
+ Gets the simple mime-type.
+
+
+ Gets the simple mime-type.
+
+ The mime-type.
+
+
+
+ Gets or sets the name parameter.
+
+
+ The name parameter is a way for the originiating client to suggest
+ to the receiving client a display-name for the content, which may
+ be used by the receiving client if it cannot display the actual
+ content to the user.
+
+ The name.
+
+
+
+ Checks if the this instance of matches
+ the specified media type and subtype.
+
+
+ If the specified or
+ are "*", they match anything.
+
+ true if the matches the
+ provided media type and subtype.
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Checks if the this instance of matches
+ the specified MIME media type and subtype.
+
+
+ If the specified or
+ are "*", they match anything.
+
+ true if the matches the
+ provided media type and subtype.
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the , optionally encoding
+ the parameters as they would be encoded for transport.
+
+ The serialized string.
+ The formatting options.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Serializes the to a string,
+ optionally encoding the parameters.
+
+
+ Creates a string-representation of the , optionally encoding
+ the parameters as they would be encoded for transport.
+
+ The serialized string.
+ The charset to be used when encoding the parameter values.
+ If set to true, the parameter values will be encoded.
+
+ is null.
+
+
+
+
+ Returns a that represents the current
+ .
+
+
+ Creates a string-representation of the .
+
+ A that represents the current
+ .
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed content type.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed content type.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The parser options.
+ The input buffer.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed content type.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Type value from the specified text.
+
+ true, if the content type was successfully parsed, false otherwise.
+ THe parser options.
+ The text to parse.
+ The parsed content type.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a Content-Type value from the specified text.
+
+ true, if the content type was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed content type.
+
+ is null.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+ The length of the buffer.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The input buffer.
+ The start index of the buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ The parsed .
+ The parser options.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified input buffer into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified buffer.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified text.
+
+ The parsed .
+ The parser options.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ Parse the specified text into a new instance of the class.
+
+
+ Parses a Content-Type value from the specified text.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ The could not be parsed.
+
+
+
+
+ A domain list.
+
+
+ Represents a list of domains, such as those that an email was routed through.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new based on the domains provided.
+
+ A domain list.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the index of the requested domain, if it exists.
+
+
+ Finds the index of the specified domain, if it exists.
+
+ The index of the requested domain; otherwise -1.
+ The domain.
+
+ is null.
+
+
+
+
+ Insert the domain at the specified index.
+
+
+ Inserts the domain at the specified index in the list.
+
+ The index to insert the domain.
+ The domain to insert.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the domain at the specified index.
+
+
+ Removes the domain at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the domain at the specified index.
+
+
+ Gets or sets the domain at the specified index.
+
+ The domain at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Add the specified domain.
+
+
+ Adds the specified domain to the end of the list.
+
+ The domain.
+
+ is null.
+
+
+
+
+ Clears the domain list.
+
+
+ Removes all of the domains in the list.
+
+
+
+
+ Checks if the contains the specified domain.
+
+
+ Determines whether or not the domain list contains the specified domain.
+
+ true if the specified domain is contained;
+ otherwise false.
+ The domain.
+
+ is null.
+
+
+
+
+ Copies all of the domains in the to the specified array.
+
+
+ Copies all of the domains within the into the array,
+ starting at the specified array index.
+
+ The array to copy the domains to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified domain.
+
+
+ Removes the first instance of the specified domain from the list if it exists.
+
+ true if the domain was removed; otherwise false.
+ The domain.
+
+ is null.
+
+
+
+
+ Gets the number of domains in the .
+
+
+ Indicates the number of domains in the list.
+
+ The number of domains.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Gets an enumerator for the list of domains.
+
+
+ Gets an enumerator for the list of domains.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of domains.
+
+
+ Gets an enumerator for the list of domains.
+
+ The enumerator.
+
+
+
+ Returns a string representation of the list of domains.
+
+
+ Each non-empty domain string will be prepended by an '@'.
+ If there are multiple domains in the list, they will be separated by a comma.
+
+ A string representing the .
+
+
+
+ Tries to parse a list of domains.
+
+
+ Attempts to parse a from the text buffer starting at the
+ specified index. The index will only be updated if a was
+ successfully parsed.
+
+ true if a was successfully parsed;
+ false otherwise.
+ The buffer to parse.
+ The index to start parsing.
+ An index of the end of the input.
+ A flag indicating whether or not an
+ exception should be thrown on error.
+ The parsed DomainList.
+
+
+
+ Tries to parse a list of domains.
+
+
+ Attempts to parse a from the supplied text. The index
+ will only be updated if a was successfully parsed.
+
+ true if a was successfully parsed;
+ false otherwise.
+ The text to parse.
+ The parsed DomainList.
+
+ is null.
+
+
+
+
+ A content encoding constraint.
+
+
+ Not all message transports support binary or 8-bit data, so it becomes
+ necessary to constrain the content encoding to a subset of the possible
+ Content-Transfer-Encoding values.
+
+
+
+
+ There are no encoding constraints, the content may contain any byte.
+
+
+
+
+ The content may contain bytes with the high bit set, but must not contain any zero-bytes.
+
+
+
+
+ The content may only contain bytes within the 7-bit ASCII range.
+
+
+
+
+ A New-Line format.
+
+
+ There are two commonly used line-endings used by modern Operating Systems.
+ Unix-based systems such as Linux and Mac OS use a single character ('\n' aka LF)
+ to represent the end of line where-as Windows (or DOS) uses a sequence of two
+ characters ("\r\n" aka CRLF). Most text-based network protocols such as SMTP,
+ POP3, and IMAP use the CRLF sequence as well.
+
+
+
+
+ The Unix New-Line format ("\n").
+
+
+
+
+ The DOS New-Line format ("\r\n").
+
+
+
+
+ Format options for serializing various MimeKit objects.
+
+
+ Represents the available options for formatting MIME messages
+ and entities when writing them to a stream.
+
+
+
+
+ The default formatting options.
+
+
+ If a custom is not passed to methods such as
+ ,
+ the default options will be used.
+
+
+
+
+ Gets the maximum line length used by the encoders. The encoders
+ use this value to determine where to place line breaks.
+
+
+ Specifies the maximum line length to use when line-wrapping headers.
+
+ The maximum line length.
+
+
+
+ Gets or sets the new-line format.
+
+
+ Specifies the new-line encoding to use when writing the message
+ or entity to a stream.
+
+ The new-line format.
+
+ cannot be changed.
+
+
+
+
+ Gets the message headers that should be hidden.
+
+
+ Specifies the set of headers that should be removed when
+ writing a to a stream.
+ This is primarily meant for the purposes of removing Bcc
+ and Resent-Bcc headers when sending via a transport such as
+ SMTP.
+
+ The message headers.
+
+
+
+ Gets or sets whether the new "Internationalized Email" formatting standards should be used.
+
+
+ The new "Internationalized Email" format is defined by
+ rfc6530 and
+ rfc6532.
+ This feature should only be used when formatting messages meant to be sent via
+ SMTP using the SMTPUTF8 extension (rfc6531)
+ or when appending messages to an IMAP folder via UTF8 APPEND
+ (rfc6855).
+
+ true if the new internationalized formatting should be used; otherwise, false.
+
+ cannot be changed.
+
+
+
+
+ Gets or sets whether the formatter should allow mixed charsets in the headers.
+
+
+ When this option is enabled, the MIME formatter will try to use US-ASCII and/or
+ ISO-8859-1 to encode headers when appropriate rather than being forced to use the
+ specified charset for all encoded-word tokens in order to maximize readability.
+ Unfortunately, mail clients like Outlook and Thunderbird do not treat
+ encoded-word tokens individually and assume that all tokens are encoded using the
+ charset declared in the first encoded-word token despite the specification
+ explicitly stating that each encoded-word token should be treated independently.
+ The Thunderbird bug can be tracked at
+
+ https://bugzilla.mozilla.org/show_bug.cgi?id=317263.
+
+ true if the formatter should be allowed to use ISO-8859-1 when encoding headers; otherwise, false.
+
+
+
+ The method to use for encoding Content-Type and Content-Disposition parameter values.
+
+
+ The method to use for encoding Content-Type and Content-Disposition parameter
+ values when the is set to
+ .
+ The MIME specifications specify that the proper method for encoding Content-Type
+ and Content-Disposition parameter values is the method described in
+ rfc2231. However, it is common for
+ some older email clients to improperly encode using the method described in
+ rfc2047 instead.
+
+ The parameter encoding method that will be used.
+
+ is not a valid value.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new set of formatting options for use with methods such as
+ .
+
+
+
+
+ Clones an instance of .
+
+
+ Clones the formatting options.
+
+ An exact copy of the .
+
+
+
+ Get the default formatting options in a thread-safe way.
+
+
+ Gets the default formatting options in a thread-safe way.
+
+ The default formatting options.
+
+
+
+ An address group, as specified by rfc0822.
+
+
+ Group addresses are rarely used anymore. Typically, if you see a group address,
+ it will be of the form: "undisclosed-recipients: ;".
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and list of addresses. The
+ specified text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the group.
+ A list of addresses.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and list of addresses.
+
+ The name of the group.
+ A list of addresses.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name. The specified
+ text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the group.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name.
+
+ The name of the group.
+
+
+
+ Clone the group address.
+
+
+ Clones the group address.
+
+ The cloned group address.
+
+
+
+ Gets the members of the group.
+
+
+ Represents the member addresses of the group. Typically the member addresses
+ will be of the variety, but it is possible
+ for groups to contain other groups.
+
+ The list of members.
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ Returns a string containing the formatted group of addresses. If the
+ parameter is true, then the name of the group and all member addresses will be encoded
+ according to the rules defined in rfc2047, otherwise the names will not be encoded at all and
+ will therefor only be suitable for display purposes.
+
+ A string representing the .
+ The formatting options.
+ If set to true, the will be encoded.
+
+ is null.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Compares two group addresses to determine if they are identical or not.
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed group address.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed group address.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed group address.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed group address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed group address.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed group address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed group address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The text.
+ The parsed group address.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a group address or
+ there is more than a single group address, then parsing will fail.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ A class representing a Message or MIME header.
+
+
+ Represents a single header field and value pair.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The character encoding that should be used to
+ encode the header value.
+ The header identifier.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The charset that should be used to encode the
+ header value.
+ The header identifier.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+ is not supported.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair with the UTF-8 encoding.
+
+ The header identifier.
+ The value of the header.
+
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The character encoding that should be used
+ to encode the header value.
+ The name of the header field.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair. The encoding is used to determine which charset to use
+ when encoding the value according to the rules of rfc2047.
+
+ The charset that should be used to encode the
+ header value.
+ The name of the header field.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is not supported.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message or entity header for the specified field and
+ value pair with the UTF-8 encoding.
+
+ The name of the header field.
+ The value of the header.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Clone the header.
+
+
+ Clones the header, copying the current RawValue.
+
+ A copy of the header with its current state.
+
+
+
+ Gets the stream offset of the beginning of the header.
+
+
+ If the offset is set, it refers to the byte offset where it
+ was found in the stream it was parsed from.
+
+ The stream offset.
+
+
+
+ Gets the name of the header field.
+
+
+ Represents the field name of the header.
+
+ The name of the header field.
+
+
+
+ Gets the header identifier.
+
+
+ This property is mainly used for switch-statements for performance reasons.
+
+ The header identifier.
+
+
+
+ Gets the raw field name of the header.
+
+
+ Contains the raw field name of the header.
+
+ The raw field name of the header.
+
+
+
+ Gets the raw value of the header.
+
+
+ Contains the raw value of the header, before any decoding or charset conversion.
+
+ The raw value of the header.
+
+
+
+ Gets or sets the header value.
+
+
+ Represents the decoded header value and is suitable for displaying to the user.
+
+ The header value.
+
+ is null.
+
+
+
+
+ Gets the header value using the specified character encoding.
+
+
+ If the raw header value does not properly encode non-ASCII text, the decoder
+ will fall back to a default charset encoding. Sometimes, however, this
+ default charset fallback is wrong and the mail client may wish to override
+ that default charset on a per-header basis.
+ By using this method, the client is able to override the fallback charset
+ on a per-header basis.
+
+ The value.
+ The character encoding to use as a fallback.
+
+
+
+ Gets the header value using the specified charset.
+
+
+ If the raw header value does not properly encode non-ASCII text, the decoder
+ will fall back to a default charset encoding. Sometimes, however, this
+ default charset fallback is wrong and the mail client may wish to override
+ that default charset on a per-header basis.
+ By using this method, the client is able to override the fallback charset
+ on a per-header basis.
+
+ The value.
+ The charset to use as a fallback.
+
+
+
+ Sets the header value using the specified formatting options and character encoding.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ The formatting options.
+ A character encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the header value using the specified character encoding.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ A character encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the header value using the specified formatting options and charset.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ The formatting options.
+ A charset encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is not supported.
+
+
+
+
+ Sets the header value using the specified charset.
+
+
+ When a particular charset is desired for encoding the header value
+ according to the rules of rfc2047, this method should be used
+ instead of the setter.
+
+ A charset encoding.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not supported.
+
+
+
+
+ Returns a string representation of the header.
+
+
+ Formats the header field and value in a way that is suitable for display.
+
+ A string representing the .
+
+
+
+ Unfold the specified header value.
+
+
+ Unfolds the header value so that it becomes suitable for display.
+ Since is already unfolded, this method is really
+ only needed when working with raw header strings.
+
+ The unfolded header value.
+ The header text.
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the header was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed header.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the specified index.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the supplied buffer starting at the specified index.
+
+ true, if the header was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed header.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the specified buffer.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a header from the specified buffer.
+
+ true, if the header was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed header.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a header from the specified text.
+
+ true, if the header was successfully parsed, false otherwise.
+ The parser options to use.
+ The text to parse.
+ The parsed header.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a header from the specified text.
+
+ true, if the header was successfully parsed, false otherwise.
+ The text to parse.
+ The parsed header.
+
+ is null.
+
+
+
+
+ An enumeration of common header fields.
+
+
+ Comparing enum values is not only faster, but less error prone than
+ comparing strings.
+
+
+
+
+ The Ad-Hoc header field.
+
+
+
+
+ The Apparently-To header field.
+
+
+
+
+ The Approved header field.
+
+
+
+
+ The Article header field.
+
+
+
+
+ The Bcc header field.
+
+
+
+
+ The Bytes header field.
+
+
+
+
+ The Cc header field.
+
+
+
+
+ The Comments header field.
+
+
+
+
+ The Content-Base header field.
+
+
+
+
+ The Content-Class header field.
+
+
+
+
+ The Content-Description header field.
+
+
+
+
+ The Content-Disposition header field.
+
+
+
+
+ The Content-Duration header field.
+
+
+
+
+ The Content-Id header field.
+
+
+
+
+ The Content-Language header field.
+
+
+
+
+ The Content-Length header field.
+
+
+
+
+ The Content-Location header field.
+
+
+
+
+ The Content-Md5 header field.
+
+
+
+
+ The Content-Transfer-Encoding header field.
+
+
+
+
+ The Content-Type header field.
+
+
+
+
+ The Control header field.
+
+
+
+
+ The Date header field.
+
+
+
+
+ The Deferred-Delivery header field.
+
+
+
+
+ The Disposition-Notification-Options header field.
+
+
+
+
+ The Disposition-Notification-To header field.
+
+
+
+
+ The Distribution header field.
+
+
+
+
+ The DKIM-Signature header field.
+
+
+
+
+ The DomainKey-Signature header field.
+
+
+
+
+ The Encoding header field.
+
+
+
+
+ The Encrypted header field.
+
+
+
+
+ The Expires header field.
+
+
+
+
+ The Expiry-Date header field.
+
+
+
+
+ The Followup-To header field.
+
+
+
+
+ The From header field.
+
+
+
+
+ The Importance header field.
+
+
+
+
+ The In-Reply-To header field.
+
+
+
+
+ The Keywords header field.
+
+
+
+
+ The Lines header field.
+
+
+
+
+ The List-Help header field.
+
+
+
+
+ The List-Subscribe header field.
+
+
+
+
+ The List-Unsubscribe header field.
+
+
+
+
+ The Message-Id header field.
+
+
+
+
+ The MIME-Version header field.
+
+
+
+
+ The Newsgroups header field.
+
+
+
+
+ The Nntp-Posting-Host header field.
+
+
+
+
+ The Organization header field.
+
+
+
+
+ The Original-Recipient header field.
+
+
+
+
+ The Path header field.
+
+
+
+
+ The Precedence header field.
+
+
+
+
+ The Priority header field.
+
+
+
+
+ The Received header field.
+
+
+
+
+ The References header field.
+
+
+
+
+ The Reply-By header field.
+
+
+
+
+ The Reply-To header field.
+
+
+
+
+ The Resent-Bcc header field.
+
+
+
+
+ The Resent-Cc header field.
+
+
+
+
+ The Resent-Date header field.
+
+
+
+
+ The Resent-From header field.
+
+
+
+
+ The Resent-Message-Id header field.
+
+
+
+
+ The Resent-Reply-To header field.
+
+
+
+
+ The Resent-Sender header field.
+
+
+
+
+ The Resent-To header field.
+
+
+
+
+ The Return-Path header field.
+
+
+
+
+ The Return-Receipt-To header field.
+
+
+
+
+ The Sender header field.
+
+
+
+
+ The Sensitivity header field.
+
+
+
+
+ The Status header field.
+
+
+
+
+ The Subject header field.
+
+
+
+
+ The Summary header field.
+
+
+
+
+ The Supersedes header field.
+
+
+
+
+ The To header field.
+
+
+
+
+ The User-Agent header field.
+
+
+
+
+ The X-Mailer header field.
+
+
+
+
+ The X-MSMail-Priority header field.
+
+
+
+
+ The X-Priority header field.
+
+
+
+
+ The X-Status header field.
+
+
+
+
+ An unknown header field.
+
+
+
+
+ extension methods.
+
+
+ extension methods.
+
+
+
+
+ Converts the enum value into the equivalent header field name.
+
+
+ Converts the enum value into the equivalent header field name.
+
+ The header name.
+ The enum value.
+
+
+
+ A list of s.
+
+
+ Represents a list of headers as found in a
+ or .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new empty header list.
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The header identifier.
+ The header value.
+
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The name of the header field.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The header identifier.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Adds a header with the specified field and value.
+
+
+ Adds a new header for the specified field and value pair.
+
+ The name of the header field.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Checks if the contains a header with the specified field name.
+
+
+ Determines whether or not the header list contains the specified header.
+
+ true if the requested header exists;
+ otherwise false.
+ The header identifier.
+
+ is not a valid .
+
+
+
+
+ Checks if the contains a header with the specified field name.
+
+
+ Determines whether or not the header list contains the specified header.
+
+ true if the requested header exists;
+ otherwise false.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Gets the index of the requested header, if it exists.
+
+
+ Finds the first index of the specified header, if it exists.
+
+ The index of the requested header; otherwise -1.
+ The header id.
+
+ is not a valid .
+
+
+
+
+ Gets the index of the requested header, if it exists.
+
+
+ Finds the first index of the specified header, if it exists.
+
+ The index of the requested header; otherwise -1.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The header identifier.
+ The header value.
+
+ is null.
+
+
+ is not a valid .
+ -or-
+ is out of range.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The name of the header field.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is out of range.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The header identifier.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+ -or-
+ is out of range.
+
+
+
+
+ Inserts a header with the specified field and value at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The name of the header field.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is out of range.
+
+
+
+
+ Gets the last index of the requested header, if it exists.
+
+
+ Finds the last index of the specified header, if it exists.
+
+ The last index of the requested header; otherwise -1.
+ The header id.
+
+ is not a valid .
+
+
+
+
+ Gets the last index of the requested header, if it exists.
+
+
+ Finds the last index of the specified header, if it exists.
+
+ The last index of the requested header; otherwise -1.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Removes the first occurance of the specified header field.
+
+
+ Removes the first occurance of the specified header field, if any exist.
+
+ true if the first occurance of the specified
+ header was removed; otherwise false.
+ The header identifier.
+
+ is is not a valid .
+
+
+
+
+ Removes the first occurance of the specified header field.
+
+
+ Removes the first occurance of the specified header field, if any exist.
+
+ true if the first occurance of the specified
+ header was removed; otherwise false.
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Removes all of the headers matching the specified field name.
+
+
+ Removes all of the headers matching the specified field name.
+
+ The header identifier.
+
+ is not a valid .
+
+
+
+
+ Removes all of the headers matching the specified field name.
+
+
+ Removes all of the headers matching the specified field name.
+
+ The name of the header field.
+
+ is null.
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The header identifier.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The header identifier.
+ The header value.
+
+ is null.
+
+
+ is not a valid .
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The name of the header field.
+ The character encoding to use for the value.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The name of the header field.
+ The header value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+ The value of the first occurrance of the specified header if it exists; otherwise null.
+ The header identifier.
+
+ is null.
+
+
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+
+ Gets or sets the value of the first occurance of a header
+ with the specified field name.
+
+ The value of the first occurrance of the specified header if it exists; otherwise null.
+ The name of the header field.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes all of the headers to the output stream.
+
+ The formatting options.
+ The output stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes all of the headers to the output stream.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Gets the number of headers in the list.
+
+
+ Gets the number of headers in the list.
+
+ The number of headers.
+
+
+
+ Gets whether or not the header list is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified header.
+
+
+ Adds the specified header to the end of the header list.
+
+ The header to add.
+
+ is null.
+
+
+
+
+ Clears the header list.
+
+
+ Removes all of the headers from the list.
+
+
+
+
+ Checks if the contains the specified header.
+
+
+ Determines whether or not the header list contains the specified header.
+
+ true if the specified header is contained;
+ otherwise, false.
+ The header.
+
+ is null.
+
+
+
+
+ Copies all of the headers in the to the specified array.
+
+
+ Copies all of the headers within the into the array,
+ starting at the specified array index.
+
+ The array to copy the headers to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified header.
+
+
+ Removes the specified header from the list if it exists.
+
+ true if the specified header was removed;
+ otherwise false.
+ The header.
+
+ is null.
+
+
+
+
+ Replaces all headers with identical field names with the single specified header.
+
+
+ Replaces all headers with identical field names with the single specified header.
+ If no headers with the specified field name exist, it is simply added.
+
+ The header.
+
+ is null.
+
+
+
+
+ Gets the index of the requested header, if it exists.
+
+
+ Finds the index of the specified header, if it exists.
+
+ The index of the requested header; otherwise -1.
+ The header.
+
+ is null.
+
+
+
+
+ Inserts the specified header at the given index.
+
+
+ Inserts the header at the specified index in the list.
+
+ The index to insert the header.
+ The header.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the header at the specified index.
+
+
+ Removes the header at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The header at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets an enumerator for the list of headers.
+
+
+ Gets an enumerator for the list of headers.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of headers.
+
+
+ Gets an enumerator for the list of headers.
+
+ The enumerator.
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+
+ The parsed list of headers.
+ The parser options.
+ The stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+
+ The parsed list of headers.
+ The stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the specified .
+
+ The parsed list of headers.
+ The parser options.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the default .
+
+ The parsed list of headers.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Header list changed action.
+
+
+ Specifies the way that a was changed.
+
+
+
+
+ A header was added.
+
+
+
+
+ A header was changed.
+
+
+
+
+ A header was removed.
+
+
+
+
+ The header list was cleared.
+
+
+
+
+ A collection of groups.
+
+
+ A collection of groups used with
+ .
+
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Gets the number of groups in the collection.
+
+
+ Gets the number of groups in the collection.
+
+ The number of groups.
+
+
+
+ Gets whether or not the header list collection is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The group of headers at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Adds the group of headers to the collection.
+
+
+ Adds the group of headers to the collection.
+
+ The group of headers.
+
+ is null.
+
+
+
+
+ Clears the header list collection.
+
+
+ Removes all of the groups from the collection.
+
+
+
+
+ Checks if the collection contains the specified group of headers.
+
+
+ Determines whether or not the collection contains the specified group of headers.
+
+ true if the specified group of headers is contained;
+ otherwise, false.
+ The group of headers.
+
+ is null.
+
+
+
+
+ Copies all of the header groups in the to the specified array.
+
+
+ Copies all of the header groups within the into the array,
+ starting at the specified array index.
+
+ The array to copy the headers to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified header group.
+
+
+ Removes the specified header group from the collection, if it exists.
+
+ true if the specified header group was removed;
+ otherwise false.
+ The group of headers.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the groups of headers.
+
+
+ Gets an enumerator for the groups of headers.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the groups of headers.
+
+
+ Gets an enumerator for the groups of headers.
+
+ The enumerator.
+
+
+
+ An interface for content stream encapsulation as used by .
+
+
+ Implemented by .
+
+
+
+
+ Gets the content encoding.
+
+
+ If the is not encoded, this value will be
+ . Otherwise, it will be
+ set to the raw content encoding of the stream.
+
+ The encoding.
+
+
+
+ Gets the content stream.
+
+
+ Gets the content stream.
+
+ The stream.
+
+
+
+ Opens the decoded content stream.
+
+
+ Provides a means of reading the decoded content without having to first write it to another
+ stream using .
+
+ The decoded content stream.
+
+
+
+ Decodes the content stream into another stream.
+
+
+ If the content stream is encoded, this method will decode it into the
+ output stream using a suitable decoder.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was cancelled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Copies the content stream to the specified output stream.
+
+
+ Copies the data from into .
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was cancelled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ An internet address, as specified by rfc0822.
+
+
+ A can be any type of address defined by the
+ original Internet Message specification.
+ There are effectively two (2) types of addresses: mailboxes and groups.
+ Mailbox addresses are what are most commonly known as email addresses and are
+ represented by the class.
+ Group addresses are themselves lists of addresses and are represented by the
+ class. While rare, it is still important to handle these
+ types of addresses. They typically only contain mailbox addresses, but may also
+ contain other group addresses.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes the and properties of the internet address.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox or group.
+
+ is null.
+
+
+
+
+ Gets or sets the character encoding to use when encoding the name of the address.
+
+
+ The character encoding is used to convert the property, if it is set,
+ to a stream of bytes when encoding the internet address for transport.
+
+ The character encoding.
+
+ is null.
+
+
+
+
+ Gets or sets the display name of the address.
+
+
+ A name is optional and is typically set to the name of the person
+ or group that own the internet address.
+
+ The name of the address.
+
+
+
+ Clone the address.
+
+
+ Clones the address.
+
+ The cloned address.
+
+
+
+ Compares two internet addresses.
+
+
+ Compares two internet addresses for the purpose of sorting.
+
+ The sort order of the current internet address compared to the other internet address.
+ The internet address to compare to.
+
+ is null.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Compares two internet addresses to determine if they are identical or not.
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ If the parameter is true, then this method will return
+ an encoded version of the internet address according to the rules described in rfc2047.
+ However, if the parameter is false, then this method will
+ return a string suitable only for display purposes.
+
+ A string representing the .
+ The formatting options.
+ If set to true, the will be encoded.
+
+ is null.
+
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ If the parameter is true, then this method will return
+ an encoded version of the internet address according to the rules described in rfc2047.
+ However, if the parameter is false, then this method will
+ return a string suitable only for display purposes.
+
+ A string representing the .
+ If set to true, the will be encoded.
+
+
+
+ Returns a string representation of a suitable for display.
+
+
+ The string returned by this method is suitable only for display purposes.
+
+ A string representing the .
+
+
+
+ Raises the internal changed event used by to keep headers in sync.
+
+
+ This method is called whenever a property of the internet address is changed.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed address.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed address.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed address.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed address.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The text.
+ The parsed address.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single or . If the buffer contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single or . If the text contains
+ more data, then parsing will fail.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ A list of email addresses.
+
+
+ An may contain any number of addresses of any type
+ defined by the original Internet Message specification.
+ There are effectively two (2) types of addresses: mailboxes and groups.
+ Mailbox addresses are what are most commonly known as email addresses and are
+ represented by the class.
+ Group addresses are themselves lists of addresses and are represented by the
+ class. While rare, it is still important to handle these
+ types of addresses. They typically only contain mailbox addresses, but may also
+ contain other group addresses.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new containing the supplied addresses.
+
+ An initial list of addresses.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new, empty, .
+
+
+
+
+ Recursively gets all of the mailboxes contained within the .
+
+
+ This API is useful for collecting a flattened list of
+ recipients for use with sending via SMTP or for encrypting via S/MIME or PGP/MIME.
+
+ The mailboxes.
+
+
+
+ Gets the index of the specified address.
+
+
+ Finds the index of the specified address, if it exists.
+
+ The index of the specified address if found; otherwise -1.
+ The address to get the index of.
+
+ is null.
+
+
+
+
+ Inserts the address at the specified index.
+
+
+ Inserts the address at the specified index in the list.
+
+ The index to insert the address.
+ The address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the address at the specified index.
+
+
+ Removes the address at the specified index.
+
+ The index of the address to remove.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The internet address at the specified index.
+ The index of the address to get or set.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the number of addresses in the .
+
+
+ Indicates the number of addresses in the list.
+
+ The number of addresses.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified address.
+
+
+ Adds the specified address to the end of the address list.
+
+ The address.
+
+ is null.
+
+
+
+
+ Adds a collection of addresses.
+
+
+ Adds a range of addresses to the end of the address list.
+
+ A colelction of addresses.
+
+ is null.
+
+
+
+
+ Clears the address list.
+
+
+ Removes all of the addresses from the list.
+
+
+
+
+ Checks if the contains the specified address.
+
+
+ Determines whether or not the address list contains the specified address.
+
+ true if the specified address exists;
+ otherwise false.
+ The address.
+
+ is null.
+
+
+
+
+ Copies all of the addresses in the to the specified array.
+
+
+ Copies all of the addresses within the into the array,
+ starting at the specified array index.
+
+ The array to copy the addresses to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified address.
+
+
+ Removes the specified address.
+
+ true if the address was removed; otherwise false.
+ The address.
+
+ is null.
+
+
+
+
+ Gets an enumerator for the list of addresses.
+
+
+ Gets an enumerator for the list of addresses.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of addresses.
+
+
+ Gets an enumerator for the list of addresses.
+
+ The enumerator.
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Determines whether the specified is equal to the current .
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Compares two internet address lists.
+
+
+ Compares two internet address lists for the purpose of sorting.
+
+ The sort order of the current internet address list compared to the other internet address list.
+ The internet address list to compare to.
+
+ is null.
+
+
+
+
+ Returns a string representation of the email addresses in the ,
+ optionally encoding them for transport.
+
+
+ If is true, each address in the list will be encoded
+ according to the rules defined in rfc2047.
+ If there are multiple addresses in the list, they will be separated by a comma.
+
+ A string representing the .
+ The formatting options.
+ If set to true, each in the list will be encoded.
+
+
+
+ Returns a string representation of the email addresses in the ,
+ optionally encoding them for transport.
+
+
+ If is true, each address in the list will be encoded
+ according to the rules defined in rfc2047.
+ If there are multiple addresses in the list, they will be separated by a comma.
+
+ A string representing the .
+ If set to true, each in the list will be encoded.
+
+
+
+ Returns a string representation of the email addresses in the .
+
+
+ If there are multiple addresses in the list, they will be separated by a comma.
+
+ A string representing the .
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed addresses.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed addresses.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed addresses.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed addresses.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ true, if the address list was successfully parsed, false otherwise.
+ The text.
+ The parsed addresses.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the given index
+ and spanning across the specified number of bytes.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the supplied buffer starting at the specified index.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a list of addresses from the specified buffer.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a list of addresses from the specified text.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Explicit cast to convert a to a
+ .
+
+
+ Casts a to a
+ in cases where you might want to make use of the System.Net.Mail APIs.
+
+ The equivalent .
+ The addresses.
+
+ contains one or more group addresses and cannot be converted.
+
+
+
+
+ Explicit cast to convert a
+ to a .
+
+
+ Casts a to a
+ in cases where you might want to make use of the the superior MimeKit APIs.
+
+ The equivalent .
+ The mail address.
+
+
+
+ A mailbox address, as specified by rfc822.
+
+
+ Represents a mailbox address (commonly referred to as an email address)
+ for a single recipient.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name, address and route. The
+ specified text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name, address and route.
+
+ The name of the mailbox.
+ The route of the mailbox.
+ The address of the mailbox.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and address. The
+ specified text encoding is used when encoding the name according to the rules of rfc2047.
+
+ The character encoding to be used for encoding the name.
+ The name of the mailbox.
+ The address of the mailbox.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified name and address.
+
+ The name of the mailbox.
+ The address of the mailbox.
+
+ is null.
+
+
+
+
+ Clone the mailbox address.
+
+
+ Clones the mailbox address.
+
+ The cloned mailbox address.
+
+
+
+ Gets the mailbox route.
+
+
+ A route is convention that is rarely seen in modern email systems, but is supported
+ for compatibility with email archives.
+
+ The mailbox route.
+
+
+
+ Gets or sets the mailbox address.
+
+
+ Represents the actual email address and is in the form of "name@example.com".
+
+ The mailbox address.
+
+ is null.
+
+
+
+
+ Gets whether or not the address is an international address.
+
+
+ International addresses are addresses that contain international
+ characters in either their local-parts or their domains.
+ For more information, see section 3.2 of
+ rfc6532.
+
+ true if the address is an international address; otherwise, false.
+
+
+
+ Returns a string representation of the ,
+ optionally encoding it for transport.
+
+
+ Returns a string containing the formatted mailbox address. If the
+ parameter is true, then the mailbox name will be encoded according to the rules defined
+ in rfc2047, otherwise the name will not be encoded at all and will therefor only be suitable
+ for display purposes.
+
+ A string representing the .
+ The formatting options.
+ If set to true, the will be encoded.
+
+ is null.
+
+
+
+
+ Determines whether the specified is equal to the current .
+
+
+ Compares two mailbox addresses to determine if they are identical or not.
+
+ The to compare with the current .
+ true if the specified is equal to the current
+ ; otherwise, false.
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed mailbox address.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+ The parsed mailbox address.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed mailbox address.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The starting index of the input buffer.
+ The parsed mailbox address.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The input buffer.
+ The parsed mailbox address.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Tries to parse the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The input buffer.
+ The parsed mailbox address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The parser options to use.
+ The text.
+ The parsed mailbox address.
+
+ is null.
+
+
+
+
+ Tries to parse the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ true, if the address was successfully parsed, false otherwise.
+ The text.
+ The parsed mailbox address.
+
+ is null.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+ -or-
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+ The number of bytes in the input buffer to parse.
+
+ is null.
+
+
+ and do not specify
+ a valid range in the byte array.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+ The starting index of the input buffer.
+
+ is null.
+
+
+ is out of range.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The input buffer.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given input buffer into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The input buffer.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The parser options to use.
+ The text.
+
+ is null.
+ -or-
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Parses the given text into a new instance.
+
+
+ Parses a single . If the address is not a mailbox address or
+ there is more than a single mailbox address, then parsing will fail.
+
+ The parsed .
+ The text.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Explicit cast to convert a to a
+ .
+
+
+ Casts a to a
+ in cases where you might want to make use of the System.Net.Mail APIs.
+
+ The equivalent .
+ The mailbox.
+
+
+
+ Explicit cast to convert a
+ to a .
+
+
+ Casts a to a
+ in cases where you might want to make use of the the superior MimeKit APIs.
+
+ The equivalent .
+ The mail address.
+
+
+
+ A message delivery status MIME part.
+
+
+ A message delivery status MIME part is a machine readable notification denoting the
+ delivery status of a message and has a MIME-type of message/delivery-status.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Get the groups of delivery status fields.
+
+
+ Gets the groups of delivery status fields. The first group of fields
+ contains the per-message fields while each of the following groups
+ contains fields that pertain to particular recipients of the message.
+
+ The fields.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A message disposition notification MIME part.
+
+
+ A message disposition notification MIME part is a machine readable notification
+ denoting the disposition of a message once it has been successfully delivered
+ and has a MIME-type of message/disposition-notification.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+
+
+
+ Get the disposition notification fields.
+
+
+ Gets the disposition notification fields.
+
+ The fields.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A list of Message-Ids.
+
+
+ Used by the property.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new, empty, .
+
+
+
+
+ Clones the .
+
+
+ Creates an exact copy of the .
+
+ An exact copy of the .
+
+
+
+ Gets the index of the requested Message-Id, if it exists.
+
+
+ Finds the index of the specified Message-Id, if it exists.
+
+ The index of the requested Message-Id; otherwise -1.
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Insert the Message-Id at the specified index.
+
+
+ Inserts the Message-Id at the specified index in the list.
+
+ The index to insert the Message-Id.
+ The Message-Id to insert.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the Message-Id at the specified index.
+
+
+ Removes the Message-Id at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the Message-Id at the specified index.
+
+ The Message-Id at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Add the specified Message-Id.
+
+
+ Adds the specified Message-Id to the end of the list.
+
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Add a collection of Message-Id items.
+
+
+ Adds a collection of Message-Id items to append to the list.
+
+ The Message-Id items to add.
+
+ is null.
+
+
+
+
+ Clears the Message-Id list.
+
+
+ Removes all of the Message-Ids in the list.
+
+
+
+
+ Checks if the contains the specified Message-Id.
+
+
+ Determines whether or not the list contains the specified Message-Id.
+
+ true if the specified Message-Id is contained;
+ otherwise false.
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Copies all of the Message-Ids in the to the specified array.
+
+
+ Copies all of the Message-Ids within the into the array,
+ starting at the specified array index.
+
+ The array to copy the Message-Ids to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified Message-Id.
+
+
+ Removes the first instance of the specified Message-Id from the list if it exists.
+
+ true if the specified Message-Id was removed;
+ otherwise false.
+ The Message-Id.
+
+ is null.
+
+
+
+
+ Gets the number of Message-Ids in the .
+
+
+ Indicates the number of Message-Ids in the list.
+
+ The number of Message-Ids.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+
+ Gets an enumerator for the list of Message-Ids.
+
+ The enumerator.
+
+
+
+ Returns a string representation of the list of Message-Ids.
+
+
+ Each Message-Id will be surrounded by angle brackets.
+ If there are multiple Message-Ids in the list, they will be separated by whitespace.
+
+ A string representing the .
+
+
+
+ An enumeration of message importance values.
+
+
+ Indicates the importance of a message.
+
+
+
+
+ The message is of low importance.
+
+
+
+
+ The message is of normal importance.
+
+
+
+
+ The message is of high importance.
+
+
+
+
+ A MIME part containing a as its content.
+
+
+ Represents MIME entities such as those with a Content-Type of message/rfc822 or message/news.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The message subtype.
+ An array of initialization parameters: headers and message parts.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains more than one .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME message entity with the specified subtype.
+
+ The message subtype.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message/rfc822 MIME entity.
+
+
+
+
+ Gets or sets the message content.
+
+
+ Gets or sets the message content.
+
+ The message content.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the output stream.
+
+
+ Writes the MIME entity and its message to the output stream.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ A MIME part containing a partial message as its content.
+
+
+ The "message/partial" MIME-type is used to split large messages into
+ multiple parts, typically to work around transport systems that have size
+ limitations (for example, some SMTP servers limit have a maximum message
+ size that they will accept).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new message/partial entity.
+ Three (3) parameters must be specified in the Content-Type header
+ of a message/partial: id, number, and total.
+ The "id" parameter is a unique identifier used to match the parts together.
+ The "number" parameter is the sequential (1-based) index of the partial message fragment.
+ The "total" parameter is the total number of pieces that make up the complete message.
+
+ The id value shared among the partial message parts.
+ The (1-based) part number for this partial message part.
+ The total number of partial message parts.
+
+ is null.
+
+
+ is less than 1.
+ -or-
+ is less than .
+
+
+
+
+ Gets the "id" parameter of the Content-Type header.
+
+
+ The "id" parameter is a unique identifier used to match the parts together.
+
+ The identifier.
+
+
+
+ Gets the "number" parameter of the Content-Type header.
+
+
+ The "number" parameter is the sequential (1-based) index of the partial message fragment.
+
+ The part number.
+
+
+
+ Gets the "total" parameter of the Content-Type header.
+
+
+ The "total" parameter is the total number of pieces that make up the complete message.
+
+ The total number of parts.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Splits the specified message into multiple messages.
+
+
+ Splits the specified message into multiple messages, each with a
+ message/partial body no larger than the max size specified.
+
+ An enumeration of partial messages.
+ The message.
+ The maximum size for each message body.
+
+ is null.
+
+
+ is less than 1.
+
+
+
+
+ Joins the specified message/partial parts into the complete message.
+
+
+ Combines all of the message/partial fragments into its original,
+ complete, message.
+
+ The re-combined message.
+ The parser options to use.
+ The list of partial message parts.
+
+ is null.
+ -or-
+ is null.
+
+
+ The last partial does not have a Total.
+ -or-
+ The number of partials provided does not match the expected count.
+ -or-
+ One or more partials is missing.
+
+
+
+
+ Joins the specified message/partial parts into the complete message.
+
+
+ Combines all of the message/partial fragments into its original,
+ complete, message.
+
+ The re-combined message.
+ The list of partial message parts.
+
+ is null.
+
+
+
+
+ An enumeration of message priority values.
+
+
+ Indicates the priority of a message.
+
+
+
+
+ The message has normal priority.
+
+
+
+
+ The message has non-urgent priority.
+
+
+
+
+ The message has urgent priority.
+
+
+
+
+ An abstract MIME entity.
+
+
+ A MIME entity is really just a node in a tree structure of MIME parts in a MIME message.
+ There are 3 basic types of entities: , ,
+ and (which is actually just a special variation of
+ who's content is another MIME message/document). All other types are
+ derivatives of one of those.
+
+
+
+
+ Initializes a new instance of the class
+ based on the .
+
+
+ Custom subclasses MUST implement this constructor
+ in order to register it using .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes the based on the provided media type and subtype.
+
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Initializes the to the one provided.
+
+ The content type.
+
+ is null.
+
+
+
+
+ Tries to use the given object to initialize the appropriate property.
+
+
+ Initializes the appropriate property based on the type of the object.
+
+ The object.
+ true if the object was recognized and used; false otherwise.
+
+
+
+ Gets the list of headers.
+
+
+ Represents the list of headers for a MIME part. Typically, the headers of
+ a MIME part will be various Content-* headers such as Content-Type or
+ Content-Disposition, but may include just about anything.
+
+ The list of headers.
+
+
+
+ Gets or sets the content disposition.
+
+
+ Represents the pre-parsed Content-Disposition header value, if present.
+ If the Content-Disposition header is not set, then this property will
+ be null.
+
+ The content disposition.
+
+
+
+ Gets the type of the content.
+
+
+ The Content-Type header specifies information about the type of content contained
+ within the MIME entity.
+
+ The type of the content.
+
+
+
+ Gets or sets the base content URI.
+
+
+ The Content-Base header specifies the base URI for the
+ in cases where the is a relative URI.
+ The Content-Base URI must be an absolute URI.
+ For more information, see rfc2110.
+
+ The base content URI or null.
+
+ is not an absolute URI.
+
+
+
+
+ Gets or sets the content location.
+
+
+ The Content-Location header specifies the URI for a MIME entity and can be
+ either absolute or relative.
+ Setting a Content-Location URI allows other objects
+ within the same multipart/related container to reference this part by URI. This
+ can be useful, for example, when constructing an HTML message body that needs to
+ reference image attachments.
+ For more information, see rfc2110.
+
+ The content location or null.
+
+
+
+ Gets or sets the content identifier.
+
+
+ The Content-Id header is used for uniquely identifying a particular entity and
+ uses the same syntax as the Message-Id header on MIME messages.
+ Setting a Content-Id allows other objects within the same
+ multipart/related container to reference this part by its unique identifier, typically
+ by using a "cid:" URI in an HTML-formatted message body. This can be useful, for example,
+ when the HTML-formatted message body needs to reference image attachments.
+
+ The content identifier.
+
+
+
+ Gets a value indicating whether this is an attachment.
+
+
+ If the Content-Disposition header is set and has a value of "attachment",
+ then this property returns true. Otherwise it is assumed that the
+ is not meant to be treated as an attachment.
+
+ true if this is an attachment; otherwise, false.
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+
+ A that represents the current .
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum allowable length for a line (not counting the CRLF). Must be between 72 and 998 (inclusive).
+
+ is not between 72 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the headers to the output stream, followed by a blank line.
+ Subclasses should override this method to write the content of the entity.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the headers to the output stream, followed by a blank line.
+ Subclasses should override this method to write the content of the entity.
+
+ The formatting options.
+ The output stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the entity to the output stream.
+
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the entity to the output stream.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the provided formatting options.
+
+ The formatting options.
+ The file.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the provided formatting options.
+
+ The formatting options.
+ The file.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the default formatting options.
+
+ The file.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the to the specified file.
+
+
+ Writes the to the specified file using the default formatting options.
+
+ The file.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Removes the header.
+
+
+ Removes all headers matching the specified name without
+ calling .
+
+ The name of the header.
+
+
+
+ Sets the header.
+
+
+ Sets the header to the specified value without
+ calling .
+
+ The name of the header.
+ The value of the header.
+
+
+
+ Sets the header using the raw value.
+
+
+ Sets the header to the specified value without
+ calling .
+
+ The name of the header.
+ The raw value of the header.
+
+
+
+ Called when the headers change in some way.
+
+
+ Whenever a header is added, changed, or removed, this method will
+ be called in order to allow custom subclasses
+ to update their state.
+ Overrides of this method should call the base method so that their
+ superclass may also update its own state.
+
+ The type of change.
+ The header being added, changed or removed.
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed MIME entity.
+ The parser options.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+
+ The parsed MIME entity.
+ The parser options.
+ The stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed MIME entity.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+
+ The parsed MIME entity.
+ The stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the specified .
+
+ The parsed entity.
+ The parser options.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the give file path,
+ using the default .
+
+ The parsed entity.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified content stream.
+
+
+ This method is mostly meant for use with APIs such as
+ where the headers are parsed separately from the content.
+
+ The parsed MIME entity.
+ The parser options.
+ The Content-Type of the stream.
+ The content stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified content stream.
+
+
+ This method is mostly meant for use with APIs such as
+ where the headers are parsed separately from the content.
+
+ The parsed MIME entity.
+ The Content-Type of the stream.
+ The content stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ MIME entity constructor arguments.
+
+
+ MIME entity constructor arguments.
+
+
+
+
+ The format of the MIME stream.
+
+
+ The format of the MIME stream.
+
+
+
+
+ The stream contains a single MIME entity or message.
+
+
+
+
+ The stream is in the Unix mbox format and may contain
+ more than a single message.
+
+
+
+
+ The default stream format.
+
+
+
+
+ An iterator for a MIME tree structure.
+
+
+ Walks the MIME tree structure of a in depth-first order.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new for the specified message.
+
+ The message.
+
+ is null.
+
+
+
+
+ Releases unmanaged resources and performs other cleanup operations before
+ the is reclaimed by garbage collection.
+
+
+ Releases unmanaged resources and performs other cleanup operations before
+ the is reclaimed by garbage collection.
+
+
+
+
+ Gets the top-level message.
+
+
+ Gets the top-level message.
+
+ The message.
+
+
+
+ Gets the parent of the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Parent property;
+ otherwise, Parent throws a . Parent
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+ If the current entity is the top-level entity of the message, then the parent
+ will be null; otherwise the parent will be either be a
+ or a .
+
+ The parent entity.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Current property;
+ otherwise, Current throws a . Current
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+
+ The current entity.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Current property;
+ otherwise, Current throws a . Current
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+
+ The current entity.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the path specifier for the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the PathSpecifier property;
+ otherwise, PathSpecifier throws a .
+ PathSpecifier also throws a if the
+ last call to returned false, which indicates the end of
+ the message.
+
+ The path specifier.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Gets the depth of the current entity.
+
+
+ After an iterator is created or after the method is called,
+ the method must be called to advance the iterator to the
+ first entity of the message before reading the value of the Depth property;
+ otherwise, Depth throws a . Depth
+ also throws a if the last call to
+ returned false, which indicates the end of the message.
+
+ The depth.
+
+ Either has not been called or
+ has moved beyond the end of the message.
+
+
+
+
+ Advances the iterator to the next depth-first entity of the tree structure.
+
+
+ After an iterator is created or after the method is called,
+ an iterator is positioned before the first entity of the message, and the first
+ call to the MoveNext method moves the iterator to the first entity of the message.
+ If MoveNext advances beyond the last entity of the message, MoveNext returns false.
+ When the iterator is at this position, subsequent calls to MoveNext also return
+ false until is called.
+
+ true if the iterator was successfully advanced to the next entity; otherwise, false.
+
+
+
+ Advances to the entity specified by the path specifier.
+
+
+ Advances the iterator to the entity specified by the path specifier which
+ must be in the same format as returned by .
+ If the iterator has already advanced beyond the entity at the specified
+ path, the iterator will and advance as normal.
+
+ true if advancing to the specified entity was successful; otherwise, false.
+ The path specifier.
+
+ is null.
+
+
+ is empty.
+
+
+ is in an invalid format.
+
+
+
+
+ Resets the iterator to its initial state.
+
+
+ Resets the iterator to its initial state.
+
+
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+
+ Releases the unmanaged resources used by the and
+ optionally releases the managed resources.
+
+ true to release both managed and unmanaged resources;
+ false to release only the unmanaged resources.
+
+
+
+ Releases all resources used by the object.
+
+ Call when you are finished using the . The
+ method leaves the in an unusable state. After
+ calling , you must release all references to the so
+ the garbage collector can reclaim the memory that the was occupying.
+
+
+
+ A MIME message.
+
+
+ A message consists of header fields and, optionally, a body.
+ The body of the message can either be plain text or it can be a
+ tree of MIME entities such as a text/plain MIME part and a collection
+ of file attachments.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ An array of initialization parameters: headers and message parts.
+
+ is null.
+
+
+ contains more than one .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME message, specifying details at creation time.
+
+ The list of addresses in the From header.
+ The list of addresses in the To header.
+ The subject of the message.
+ The body of the message.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new MIME message.
+
+
+
+
+ Gets or sets the mbox marker.
+
+
+ Set by the when parsing attached message/rfc822 parts
+ so that the message/rfc822 part can be reserialized back to its original form.
+
+ The mbox marker.
+
+
+
+ Gets the list of headers.
+
+
+ Represents the list of headers for a message. Typically, the headers of
+ a message will contain transmission headers such as From and To along
+ with metadata headers such as Subject and Date, but may include just
+ about anything.
+ To access any MIME headers other than
+ , you will need to access the
+ property of the .
+
+
+ The list of headers.
+
+
+
+ Get or set the value of the Importance header.
+
+
+ Gets or sets the value of the Importance header.
+
+ The importance.
+
+ is not a valid .
+
+
+
+
+ Get or set the value of the Priority header.
+
+
+ Gets or sets the value of the Priority header.
+
+ The priority.
+
+ is not a valid .
+
+
+
+
+ Gets or sets the address in the Sender header.
+
+
+ The sender may differ from the addresses in if
+ the message was sent by someone on behalf of someone else.
+
+ The address in the Sender header.
+
+
+
+ Gets or sets the address in the Resent-Sender header.
+
+
+ The resent sender may differ from the addresses in if
+ the message was sent by someone on behalf of someone else.
+
+ The address in the Resent-Sender header.
+
+
+
+ Gets the list of addresses in the From header.
+
+
+ The "From" header specifies the author(s) of the message.
+ If more than one is added to the
+ list of "From" addresses, the should be set to the
+ single of the personal actually sending
+ the message.
+
+ The list of addresses in the From header.
+
+
+
+ Gets the list of addresses in the Resent-From header.
+
+
+ The "Resent-From" header specifies the author(s) of the messagebeing
+ resent.
+ If more than one is added to the
+ list of "Resent-From" addresses, the should
+ be set to the single of the personal actually
+ sending the message.
+
+ The list of addresses in the Resent-From header.
+
+
+
+ Gets the list of addresses in the Reply-To header.
+
+
+ When the list of addresses in the Reply-To header is not empty,
+ it contains the address(es) where the author(s) of the message prefer
+ that replies be sent.
+ When the list of addresses in the Reply-To header is empty,
+ replies should be sent to the mailbox(es) specified in the From
+ header.
+
+ The list of addresses in the Reply-To header.
+
+
+
+ Gets the list of addresses in the Resent-Reply-To header.
+
+
+ When the list of addresses in the Resent-Reply-To header is not empty,
+ it contains the address(es) where the author(s) of the resent message prefer
+ that replies be sent.
+ When the list of addresses in the Resent-Reply-To header is empty,
+ replies should be sent to the mailbox(es) specified in the Resent-From
+ header.
+
+ The list of addresses in the Resent-Reply-To header.
+
+
+
+ Gets the list of addresses in the To header.
+
+
+ The addresses in the To header are the primary recipients of
+ the message.
+
+ The list of addresses in the To header.
+
+
+
+ Gets the list of addresses in the Resent-To header.
+
+
+ The addresses in the Resent-To header are the primary recipients of
+ the message.
+
+ The list of addresses in the Resent-To header.
+
+
+
+ Gets the list of addresses in the Cc header.
+
+
+ The addresses in the Cc header are secondary recipients of the message
+ and are usually not the individuals being directly addressed in the
+ content of the message.
+
+ The list of addresses in the Cc header.
+
+
+
+ Gets the list of addresses in the Resent-Cc header.
+
+
+ The addresses in the Resent-Cc header are secondary recipients of the message
+ and are usually not the individuals being directly addressed in the
+ content of the message.
+
+ The list of addresses in the Resent-Cc header.
+
+
+
+ Gets the list of addresses in the Bcc header.
+
+
+ Recipients in the Blind-Carpbon-Copy list will not be visible to
+ the other recipients of the message.
+
+ The list of addresses in the Bcc header.
+
+
+
+ Gets the list of addresses in the Resent-Bcc header.
+
+
+ Recipients in the Resent-Bcc list will not be visible to
+ the other recipients of the message.
+
+ The list of addresses in the Resent-Bcc header.
+
+
+
+ Gets or sets the subject of the message.
+
+
+ The Subject is typically a short string denoting the topic of the message.
+ Replies will often use "Re: " followed by the Subject of the original message.
+
+ The subject of the message.
+
+ is null.
+
+
+
+
+ Gets or sets the date of the message.
+
+
+ If the date is not explicitly set before the message is written to a stream,
+ the date will default to the exact moment when it is written to said stream.
+
+ The date of the message.
+
+
+
+ Gets or sets the Resent-Date of the message.
+
+
+ Gets or sets the Resent-Date of the message.
+
+ The Resent-Date of the message.
+
+
+
+ Gets or sets the list of references to other messages.
+
+
+ The References header contains a chain of Message-Ids back to the
+ original message that started the thread.
+
+ The references.
+
+
+
+ Gets or sets the Message-Id that this message is in reply to.
+
+
+ If the message is a reply to another message, it will typically
+ use the In-Reply-To header to specify the Message-Id of the
+ original message being replied to.
+
+ The message id that this message is in reply to.
+
+ is improperly formatted.
+
+
+
+
+ Gets or sets the message identifier.
+
+
+ The Message-Id is meant to be a globally unique identifier for
+ a message.
+ can be used
+ to generate this value.
+
+ The message identifier.
+
+ is null.
+
+
+ is improperly formatted.
+
+
+
+
+ Gets or sets the Resent-Message-Id header.
+
+
+ The Resent-Message-Id is meant to be a globally unique identifier for
+ a message.
+ can be used
+ to generate this value.
+
+ The Resent-Message-Id.
+
+ is null.
+
+
+ is improperly formatted.
+
+
+
+
+ Gets or sets the MIME-Version.
+
+
+ The MIME-Version header specifies the version of the MIME specification
+ that the message was created for.
+
+ The MIME version.
+
+ is null.
+
+
+
+
+ Gets or sets the body of the message.
+
+
+ The body of the message can either be plain text or it can be a
+ tree of MIME entities such as a text/plain MIME part and a collection
+ of file attachments.
+ For a convenient way of constructing message bodies, see the
+ class.
+
+ The body of the message.
+
+
+
+ Gets the text body of the message if it exists.
+
+
+ Gets the text content of the first text/plain body part that is found (in depth-first
+ search order) which is not an attachment.
+
+ The text body if it exists; otherwise, null.
+
+
+
+ Gets the html body of the message if it exists.
+
+
+ Gets the HTML-formatted body of the message if it exists.
+
+ The html body if it exists; otherwise, null.
+
+
+
+ Gets the text body in the specified format.
+
+
+ Gets the text body in the specified format, if it exists.
+
+ The text body in the desired format if it exists; otherwise, null.
+ The desired text format.
+
+
+
+ Gets the body parts of the message.
+
+
+ Traverses over the MIME tree, enumerating all of the objects,
+ but does not traverse into the bodies of attached messages.
+
+ The body parts.
+
+
+
+ Gets the attachments.
+
+
+ Traverses over the MIME tree, enumerating all of the objects that
+ have a Content-Disposition header set to "attachment".
+
+ The attachments.
+
+
+
+ Returns a that represents the current .
+
+
+ Returns a that represents the current .
+ Note: In general, the string returned from this method SHOULD NOT be used for serializing
+ the message to disk. It is recommended that you use instead.
+
+ A that represents the current .
+
+
+
+ Dispatches to the specific visit method for this MIME message.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the message for transport using the specified encoding constraints.
+
+
+ Prepares the message for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum allowable length for a line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the message to the specified output stream.
+
+
+ Writes the message to the output stream using the provided formatting options.
+
+ The formatting options.
+ The output stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the message to the specified output stream.
+
+
+ Writes the message to the output stream using the default formatting options.
+
+ The output stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the message to the specified file.
+
+
+ Writes the message to the specified file using the provided formatting options.
+
+ The formatting options.
+ The file.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Writes the message to the specified file.
+
+
+ Writes the message to the specified file using the default formatting options.
+
+ The file.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ The operation was canceled via the cancellation token.
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to write to the specified file.
+
+
+ An I/O error occurred.
+
+
+
+
+ Digitally sign the message using a DomainKeys Identified Mail (DKIM) signature.
+
+
+ Digitally signs the message using a DomainKeys Identified Mail (DKIM) signature.
+
+ The formatting options.
+ The DKIM signer.
+ The list of header fields to sign.
+ The header canonicalization algorithm.
+ The body canonicalization algorithm.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ does not contain the 'From' header.
+ -or-
+ contains one or more of the following headers: Return-Path,
+ Received, Comments, Keywords, Bcc, Resent-Bcc, or DKIM-Signature.
+
+
+
+
+ Digitally sign the message using a DomainKeys Identified Mail (DKIM) signature.
+
+
+ Digitally signs the message using a DomainKeys Identified Mail (DKIM) signature.
+
+ The DKIM signer.
+ The headers to sign.
+ The header canonicalization algorithm.
+ The body canonicalization algorithm.
+
+ is null.
+ -or-
+ is null.
+
+
+ does not contain the 'From' header.
+ -or-
+ contains one or more of the following headers: Return-Path,
+ Received, Comments, Keywords, Bcc, Resent-Bcc, or DKIM-Signature.
+
+
+
+
+ Verify the specified DKIM-Signature header.
+
+
+ Verifies the specified DKIM-Signature header.
+
+ true if the DKIM-Signature is valid; otherwise, false.
+ The formatting options.
+ The DKIM-Signature header.
+ The public key locator service.
+ The cancellation token.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ is not a DKIM-Signature header.
+
+
+ The DKIM-Signature header value is malformed.
+
+
+ The operation was canceled via the cancellation token.
+
+
+
+
+ Verify the specified DKIM-Signature header.
+
+
+ Verifies the specified DKIM-Signature header.
+
+ true if the DKIM-Signature is valid; otherwise, false.
+ The DKIM-Signature header.
+ The public key locator service.
+ The cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a DKIM-Signature header.
+
+
+ The DKIM-Signature header value is malformed.
+
+
+ The operation was canceled via the cancellation token.
+
+
+
+
+ Sign the message using the specified cryptography context and digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+
+ The cryptography context.
+ The digest algorithm.
+
+ is null.
+
+
+ The has not been set.
+ -or-
+ A sender has not been specified.
+
+
+ The was out of range.
+
+
+ The is not supported.
+
+
+ A signing certificate could not be found for the sender.
+
+
+ The private key could not be found for the sender.
+
+
+
+
+ Sign the message using the specified cryptography context and the SHA-1 digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+
+ The cryptography context.
+
+ is null.
+
+
+ The has not been set.
+ -or-
+ A sender has not been specified.
+
+
+ A signing certificate could not be found for the sender.
+
+
+ The private key could not be found for the sender.
+
+
+
+
+ Encrypt the message to the sender and all of the recipients
+ using the specified cryptography context.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be encrypted to all of the addresses specified in the Resent headers
+ (Resent-Sender, Resent-From, Resent-To, Resent-Cc, and Resent-Bcc),
+ otherwise the message will be encrypted to all of the addresses specified in
+ the standard address headers (Sender, From, To, Cc, and Bcc).
+
+ The cryptography context.
+
+ is null.
+
+
+ An unknown type of cryptography context was used.
+
+
+ The has not been set.
+ -or-
+ No recipients have been specified.
+
+
+ A certificate could not be found for one or more of the recipients.
+
+
+ The public key could not be found for one or more of the recipients.
+
+
+
+
+ Sign and encrypt the message to the sender and all of the recipients using
+ the specified cryptography context and the specified digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+ Likewise, if either of the Resent-Sender or Resent-From headers are set, then the
+ message will be encrypted to all of the addresses specified in the Resent headers
+ (Resent-Sender, Resent-From, Resent-To, Resent-Cc, and Resent-Bcc),
+ otherwise the message will be encrypted to all of the addresses specified in
+ the standard address headers (Sender, From, To, Cc, and Bcc).
+
+ The cryptography context.
+ The digest algorithm.
+
+ is null.
+
+
+ An unknown type of cryptography context was used.
+
+
+ The was out of range.
+
+
+ The has not been set.
+ -or-
+ The sender has been specified.
+ -or-
+ No recipients have been specified.
+
+
+ The is not supported.
+
+
+ A certificate could not be found for the signer or one or more of the recipients.
+
+
+ The private key could not be found for the sender.
+
+
+ The public key could not be found for one or more of the recipients.
+
+
+
+
+ Sign and encrypt the message to the sender and all of the recipients using
+ the specified cryptography context and the SHA-1 digest algorithm.
+
+
+ If either of the Resent-Sender or Resent-From headers are set, then the message
+ will be signed using the Resent-Sender (or first mailbox in the Resent-From)
+ address as the signer address, otherwise the Sender or From address will be
+ used instead.
+ Likewise, if either of the Resent-Sender or Resent-From headers are set, then the
+ message will be encrypted to all of the addresses specified in the Resent headers
+ (Resent-Sender, Resent-From, Resent-To, Resent-Cc, and Resent-Bcc),
+ otherwise the message will be encrypted to all of the addresses specified in
+ the standard address headers (Sender, From, To, Cc, and Bcc).
+
+ The cryptography context.
+
+ is null.
+
+
+ An unknown type of cryptography context was used.
+
+
+ The has not been set.
+ -or-
+ The sender has been specified.
+ -or-
+ No recipients have been specified.
+
+
+ A certificate could not be found for the signer or one or more of the recipients.
+
+
+ The private key could not be found for the sender.
+
+
+ The public key could not be found for one or more of the recipients.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed message.
+ The parser options.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ specified .
+
+ The parsed message.
+ The parser options.
+ The stream.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save mmeory usage, but also improve
+ performance.
+
+ The parsed message.
+ The stream.
+ true if the stream is persistent; otherwise false.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified stream.
+
+
+ Loads a from the given stream, using the
+ default .
+
+ The parsed message.
+ The stream.
+ A cancellation token.
+
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the given path, using the
+ specified .
+
+ The parsed message.
+ The parser options.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Load a from the specified file.
+
+
+ Loads a from the file at the given path, using the
+ default .
+
+ The parsed message.
+ The name of the file to load.
+ A cancellation token.
+
+ is null.
+
+
+ is a zero-length string, contains only white space, or
+ contains one or more invalid characters as defined by
+ .
+
+
+ is an invalid file path.
+
+
+ The specified file path could not be found.
+
+
+ The user does not have access to read the specified file.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Creates a new from a .
+
+
+ Creates a new from a .
+
+ The equivalent .
+ The message.
+
+ is null.
+
+
+
+
+ Explicit cast to convert a to a
+ .
+
+
+ Allows creation of messages using Microsoft's System.Net.Mail APIs.
+
+ The equivalent .
+ The message.
+
+
+
+ A MIME message and entity parser.
+
+
+ A MIME parser is used to parse and
+ objects from arbitrary streams.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new that will parse the specified stream.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Gets a value indicating whether the parser has reached the end of the input stream.
+
+
+ Gets a value indicating whether the parser has reached the end of the input stream.
+
+ true if this parser has reached the end of the input stream;
+ otherwise, false.
+
+
+
+ Gets the current position of the parser within the stream.
+
+
+ Gets the current position of the parser within the stream.
+
+ The stream offset.
+
+
+
+ Gets the most recent mbox marker offset.
+
+
+ Gets the most recent mbox marker offset.
+
+ The mbox marker offset.
+
+
+
+ Gets the most recent mbox marker.
+
+
+ Gets the most recent mbox marker.
+
+ The mbox marker.
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The parser options.
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ The format of the stream.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Sets the stream to parse.
+
+
+ Sets the stream to parse.
+ If is true and is seekable, then
+ the will not copy the content of s into memory. Instead,
+ it will use a to reference a substream of .
+ This has the potential to not only save memory usage, but also improve
+ performance.
+ It should be noted, however, that disposing will make it impossible
+ for to read the content.
+
+ The stream to parse.
+ true if the stream is persistent; otherwise false.
+
+ is null.
+
+
+
+
+ Parses a list of headers from the stream.
+
+
+ Parses a list of headers from the stream.
+
+ The parsed list of headers.
+ A cancellation token.
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the headers.
+
+
+ An I/O error occurred.
+
+
+
+
+ Parses an entity from the stream.
+
+
+ Parses an entity from the stream.
+
+ The parsed entity.
+ A cancellation token.
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the entity.
+
+
+ An I/O error occurred.
+
+
+
+
+ Parses a message from the stream.
+
+
+ Parses a message from the stream.
+
+ The parsed message.
+ A cancellation token.
+
+ The operation was canceled via the cancellation token.
+
+
+ There was an error parsing the message.
+
+
+ An I/O error occurred.
+
+
+
+
+ Enumerates the messages in the stream.
+
+
+ This is mostly useful when parsing mbox-formatted streams.
+
+ The enumerator.
+
+
+
+ Enumerates the messages in the stream.
+
+
+ This is mostly useful when parsing mbox-formatted streams.
+
+ The enumerator.
+
+
+
+ A leaf-node MIME part that contains content such as the message body text or an attachment.
+
+
+ A leaf-node MIME part that contains content such as the message body text or an attachment.
+
+
+
+
+ Initializes a new instance of the class
+ based on the .
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified media type and subtype.
+
+
+ Creates a new with the specified media type and subtype.
+
+ The media type.
+ The media subtype.
+ An array of initialization parameters: headers and part content.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains more than one or
+ .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified media type and subtype.
+
+
+ Creates a new with the specified media type and subtype.
+
+ The media type.
+ The media subtype.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified content type.
+
+
+ Creates a new with the specified Content-Type value.
+
+ The content type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class
+ with the specified content type.
+
+
+ Creates a new with the specified Content-Type value.
+
+ The content type.
+
+ is null.
+
+
+ could not be parsed.
+
+
+
+
+ Initializes a new instance of the class
+ with the default Content-Type of application/octet-stream.
+
+
+ Creates a new with a Content-Type of application/octet-stream.
+
+
+
+
+ Gets or sets the duration of the content if available.
+
+
+ The Content-Duration header specifies duration of timed media,
+ such as audio or video, in seconds.
+
+ The duration of the content.
+
+ is negative.
+
+
+
+
+ Gets or sets the md5sum of the content.
+
+
+ The Content-MD5 header specifies the base64-encoded MD5 checksum of the content
+ in its canonical format.
+ For more information, see http://www.ietf.org/rfc/rfc1864.txt
+
+ The md5sum of the content.
+
+
+
+ Gets or sets the content transfer encoding.
+
+
+ The Content-Transfer-Encoding header specifies an auxiliary encoding
+ that was applied to the content in order to allow it to pass through
+ mail transport mechanisms (such as SMTP) which may have limitations
+ in the byte ranges that it accepts. For example, many SMTP servers
+ do not accept data outside of the 7-bit ASCII range and so sending
+ binary attachments or even non-English text is not possible without
+ applying an encoding such as base64 or quoted-printable.
+
+ The content transfer encoding.
+
+
+
+ Gets or sets the name of the file.
+
+
+ First checks for the "filename" parameter on the Content-Disposition header. If
+ that does not exist, then the "name" parameter on the Content-Type header is used.
+ When setting the filename, both the "filename" parameter on the Content-Disposition
+ header and the "name" parameter on the Content-Type header are set.
+
+ The name of the file.
+
+
+
+ Gets or sets the MIME content.
+
+
+ Gets or sets the MIME content.
+
+ The MIME content.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Calculates the most efficient content encoding given the specified constraint.
+
+
+ If no is set, will be returned.
+
+ The most efficient content encoding.
+ The encoding constraint.
+ A cancellation token.
+
+ is not a valid value.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Calculates the most efficient content encoding given the specified constraint.
+
+
+ If no is set, will be returned.
+
+ The most efficient content encoding.
+ The encoding constraint.
+ The maximum allowable length for a line (not counting the CRLF). Must be between 72 and 998 (inclusive).
+ A cancellation token.
+
+ is not between 72 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Computes the MD5 checksum of the content.
+
+
+ Computes the MD5 checksum of the MIME content in its canonical
+ format and then base64-encodes the result.
+
+ The md5sum of the content.
+
+ The is null.
+
+
+
+
+ Verifies the Content-Md5 value against an independently computed md5sum.
+
+
+ Computes the MD5 checksum of the MIME content and compares it with the
+ value in the Content-MD5 header, returning true if and only if
+ the values match.
+
+ true, if content MD5 checksum was verified, false otherwise.
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the MIME part to the output stream.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Called when the headers change in some way.
+
+
+ Updates the , ,
+ and properties if the corresponding headers have changed.
+
+ The type of change.
+ The header being added, changed or removed.
+
+
+
+ A mapping of file name extensions to the corresponding MIME-type.
+
+
+ A mapping of file name extensions to the corresponding MIME-type.
+
+
+
+
+ Gets the MIME-type of the file.
+
+
+ Gets the MIME-type of the file based on the file extension.
+
+ The MIME-type.
+ The file name.
+
+ is null.
+
+
+
+
+ Represents a visitor for MIME trees.
+
+
+ This class is designed to be inherited to create more specialized classes whose
+ functionality requires traversing, examining or copying a MIME tree.
+
+
+
+
+
+
+
+ Dispatches the entity to one of the more specialized visit methods in this class.
+
+
+ Dispatches the entity to one of the more specialized visit methods in this class.
+
+ The MIME entity.
+
+
+
+ Dispatches the message to one of the more specialized visit methods in this class.
+
+
+ Dispatches the message to one of the more specialized visit methods in this class.
+
+ The MIME message.
+
+
+
+ Visit the application/pgp-encrypted MIME entity.
+
+
+ Visits the application/pgp-encrypted MIME entity.
+
+
+ The application/pgp-encrypted MIME entity.
+
+
+
+ Visit the application/pgp-signature MIME entity.
+
+
+ Visits the application/pgp-signature MIME entity.
+
+
+ The application/pgp-signature MIME entity.
+
+
+
+ Visit the application/pkcs7-mime MIME entity.
+
+
+ Visits the application/pkcs7-mime MIME entity.
+
+ The application/pkcs7-mime MIME entity.
+
+
+
+ Visit the application/pkcs7-signature MIME entity.
+
+
+ Visits the application/pkcs7-signature MIME entity.
+
+
+ The application/pkcs7-signature MIME entity.
+
+
+
+ Visit the message/disposition-notification MIME entity.
+
+
+ Visits the message/disposition-notification MIME entity.
+
+ The message/disposition-notification MIME entity.
+
+
+
+ Visit the message/delivery-status MIME entity.
+
+
+ Visits the message/delivery-status MIME entity.
+
+ The message/delivery-status MIME entity.
+
+
+
+ Visit the message contained within a message/rfc822 or message/news MIME entity.
+
+
+ Visits the message contained within a message/rfc822 or message/news MIME entity.
+
+ The message/rfc822 or message/news MIME entity.
+
+
+
+ Visit the message/rfc822 or message/news MIME entity.
+
+
+ Visits the message/rfc822 or message/news MIME entity.
+
+
+
+
+ The message/rfc822 or message/news MIME entity.
+
+
+
+ Visit the message/partial MIME entity.
+
+
+ Visits the message/partial MIME entity.
+
+ The message/partial MIME entity.
+
+
+
+ Visit the abstract MIME entity.
+
+
+ Visits the abstract MIME entity.
+
+ The MIME entity.
+
+
+
+ Visit the body of the message.
+
+
+ Visits the body of the message.
+
+ The message.
+
+
+
+ Visit the MIME message.
+
+
+ Visits the MIME message.
+
+ The MIME message.
+
+
+
+ Visit the abstract MIME part entity.
+
+
+ Visits the MIME part entity.
+
+
+
+
+ The MIME part entity.
+
+
+
+ Visit the children of a .
+
+
+ Visits the children of a .
+
+ Multipart.
+
+
+
+ Visit the abstract multipart MIME entity.
+
+
+ Visits the abstract multipart MIME entity.
+
+ The multipart MIME entity.
+
+
+
+ Visit the multipart/alternative MIME entity.
+
+
+ Visits the multipart/alternative MIME entity.
+
+
+
+
+ The multipart/alternative MIME entity.
+
+
+
+ Visit the multipart/encrypted MIME entity.
+
+
+ Visits the multipart/encrypted MIME entity.
+
+ The multipart/encrypted MIME entity.
+
+
+
+ Visit the multipart/related MIME entity.
+
+
+ Visits the multipart/related MIME entity.
+
+
+
+
+ The multipart/related MIME entity.
+
+
+
+ Visit the multipart/report MIME entity.
+
+
+ Visits the multipart/report MIME entity.
+
+
+
+
+ The multipart/report MIME entity.
+
+
+
+ Visit the multipart/signed MIME entity.
+
+
+ Visits the multipart/signed MIME entity.
+
+ The multipart/signed MIME entity.
+
+
+
+ Visit the text-based MIME part entity.
+
+
+ Visits the text-based MIME part entity.
+
+
+
+
+ The text-based MIME part entity.
+
+
+
+ Visit the Microsoft TNEF MIME part entity.
+
+
+ Visits the Microsoft TNEF MIME part entity.
+
+
+
+
+ The Microsoft TNEF MIME part entity.
+
+
+
+ A multipart MIME entity which may contain a collection of MIME entities.
+
+
+ All multipart MIME entities will have a Content-Type with a media type of "multipart".
+ The most common multipart MIME entity used in email is the "multipart/mixed" entity.
+ Four (4) initial subtypes were defined in the original MIME specifications: mixed, alternative,
+ digest, and parallel.
+ The "multipart/mixed" type is a sort of general-purpose container. When used in email, the
+ first entity is typically the "body" of the message while additional entities are most often
+ file attachments.
+ Speaking of message "bodies", the "multipart/alternative" type is used to offer a list of
+ alternative formats for the main body of the message (usually they will be "text/plain" and
+ "text/html"). These alternatives are in order of increasing faithfulness to the original document
+ (in other words, the last entity will be in a format that, when rendered, will most closely match
+ what the sending client's WYSISYG editor produced).
+ The "multipart/digest" type will typically contain a digest of MIME messages and is most
+ commonly used by mailing-list software.
+ The "multipart/parallel" type contains entities that are all meant to be shown (or heard)
+ in parallel.
+ Another commonly used type is the "multipart/related" type which contains, as one might expect,
+ inter-related MIME parts which typically reference each other via URIs based on the Content-Id and/or
+ Content-Location headers.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified subtype.
+
+ The multipart media sub-type.
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with the specified subtype.
+
+ The multipart media sub-type.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new with a ContentType of multipart/mixed.
+
+
+
+
+ Gets or sets the boundary.
+
+
+ Gets or sets the boundary parameter on the Content-Type header.
+
+ The boundary.
+
+ is null.
+
+
+
+
+ Gets or sets the preamble.
+
+
+ A multipart preamble appears before the first child entity of the
+ multipart and is typically used only in the top-level multipart
+ of the message to specify that the message is in MIME format and
+ therefore requires a MIME compliant email application to render
+ it correctly.
+
+ The preamble.
+
+
+
+ Gets or sets the epilogue.
+
+
+ A multipart epiloque is the text that appears after the closing boundary
+ of the multipart and is typically either empty or a single new line
+ character sequence.
+
+ The epilogue.
+
+
+
+ Gets or sets whether the end boundary should be written.
+
+
+ Gets or sets whether the end boundary should be written.
+
+ true if the end boundary should be written; otherwise, false.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Prepare the MIME entity for transport using the specified encoding constraints.
+
+
+ Prepares the MIME entity for transport using the specified encoding constraints.
+
+ The encoding constraint.
+ The maximum number of octets allowed per line (not counting the CRLF). Must be between 60 and 998 (inclusive).
+
+ is not between 60 and 998 (inclusive).
+ -or-
+ is not a valid value.
+
+
+
+
+ Writes the to the specified output stream.
+
+
+ Writes the multipart MIME entity and its subparts to the output stream.
+
+ The formatting options.
+ The output stream.
+ true if only the content should be written; otherwise, false.
+ A cancellation token.
+
+ is null.
+ -or-
+ is null.
+
+
+ The operation was canceled via the cancellation token.
+
+
+ An I/O error occurred.
+
+
+
+
+ Gets the number of parts in the multipart.
+
+
+ Indicates the number of parts in the multipart.
+
+ The number of parts in the multipart.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified part.
+
+
+ Adds the specified part to the multipart.
+
+ The part to add.
+
+ is null.
+
+
+
+
+ Clears the multipart.
+
+
+ Removes all of the parts within the multipart.
+
+
+
+
+ Checks if the contains the specified part.
+
+
+ Determines whether or not the multipart contains the specified part.
+
+ true if the specified part exists;
+ otherwise false.
+ The part to check for.
+
+ is null.
+
+
+
+
+ Copies all of the entities in the to the specified array.
+
+
+ Copies all of the entities within the into the array,
+ starting at the specified array index.
+
+ The array to copy the headers to.
+ The index into the array.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified part.
+
+
+ Removes the specified part, if it exists within the multipart.
+
+ true if the part was removed; otherwise false.
+ The part to remove.
+
+ is null.
+
+
+
+
+ Gets the index of the specified part.
+
+
+ Finds the index of the specified part, if it exists.
+
+ The index of the specified part if found; otherwise -1.
+ The part.
+
+ is null.
+
+
+
+
+ Inserts the part at the specified index.
+
+
+ Inserts the part into the multipart at the specified index.
+
+ The index.
+ The part.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Removes the part at the specified index.
+
+
+ Removes the part at the specified index.
+
+ The index.
+
+ is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The entity at the specified index.
+ The index.
+
+ is null.
+
+
+ is out of range.
+
+
+
+
+ Gets the enumerator for the children of the .
+
+
+ Gets the enumerator for the children of the .
+
+ The enumerator.
+
+
+
+ Gets the enumerator for the children of the .
+
+
+ Gets the enumerator for the children of the .
+
+ The enumerator.
+
+
+
+ A multipart/alternative MIME entity.
+
+
+ A multipart/alternative MIME entity contains, as one might expect, is used to offer a list of
+ alternative formats for the main body of the message (usually they will be "text/plain" and
+ "text/html"). These alternatives are in order of increasing faithfulness to the original document
+ (in other words, the last entity will be in a format that, when rendered, will most closely match
+ what the sending client's WYSISYG editor produced).
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+
+
+
+ Get the text of the text/plain alternative.
+
+
+ Gets the text of the text/plain alternative, if it exists.
+
+ The text if a text/plain alternative exists; otherwise, null.
+
+
+
+ Get the HTML-formatted text of the text/html alternative.
+
+
+ Gets the HTML-formatted text of the text/html alternative, if it exists.
+
+ The HTML if a text/html alternative exists; otherwise, null.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Get the text body in the specified format.
+
+
+ Gets the text body in the specified format, if it exists.
+
+ The text body in the desired format if it exists; otherwise, null.
+ The desired text format.
+
+
+
+ A multipart/related MIME entity.
+
+
+ A multipart/related MIME entity contains, as one might expect, inter-related MIME parts which
+ typically reference each other via URIs based on the Content-Id and/or Content-Location headers.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+
+
+
+ Gets or sets the root document of the multipart/related part and the appropriate Content-Type parameters.
+
+
+ Gets or sets the root document that references the other MIME parts within the multipart/related.
+ When getting the root document, the "start" parameter of the Content-Type header is used to
+ determine which of the parts is the root. If the "start" parameter does not exist or does not reference
+ any of the child parts, then the first child is assumed to be the root.
+ When setting the root document MIME part, the Content-Type header of the multipart/related part is also
+ updated with a appropriate "start" and "type" parameters.
+
+ The root MIME part.
+
+ is null.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Checks if the contains a part matching the specified URI.
+
+
+ Determines whether or not the multipart/related entity contains a part matching the specified URI.
+
+ true if the specified part exists; otherwise false.
+ The URI of the MIME part.
+
+ is null.
+
+
+
+
+ Gets the index of the part matching the specified URI.
+
+
+ Finds the index of the part matching the specified URI, if it exists.
+ If the URI scheme is "cid", then matching is performed based on the Content-Id header
+ values, otherwise the Content-Location headers are used. If the provided URI is absolute and a child
+ part's Content-Location is relative, then then the child part's Content-Location URI will be combined
+ with the value of its Content-Base header, if available, otherwise it will be combined with the
+ multipart/related part's Content-Base header in order to produce an absolute URI that can be
+ compared with the provided absolute URI.
+
+ The index of the part matching the specified URI if found; otherwise -1.
+ The URI of the MIME part.
+
+ is null.
+
+
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+ A stream for reading the decoded content of the MIME part specified by the provided URI.
+ The URI.
+ The mime-type of the content.
+ The charset of the content (if the content is text-based)
+
+ is null.
+
+
+ The MIME part for the specified URI could not be found.
+
+
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+
+ Opens a stream for reading the decoded content of the MIME part specified by the provided URI.
+
+ A stream for reading the decoded content of the MIME part specified by the provided URI.
+ The URI.
+
+ is null.
+
+
+ The MIME part for the specified URI could not be found.
+
+
+
+
+ A multipart/report MIME entity.
+
+
+ A multipart/related MIME entity is a general container part for electronic mail
+ reports of any kind.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+ The type of the report.
+ An array of initialization parameters: headers and MIME entities.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new part.
+
+
+ is null.
+
+
+
+
+ Gets or sets the type of the report.
+
+
+ Gets or sets the type of the report.
+ The report type should be the subtype of the second
+ of the multipart/report.
+
+ The type of the report.
+
+ is null.
+
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ A header parameter as found in the Content-Type and Content-Disposition headers.
+
+
+ Content-Type and Content-Disposition headers often have parameters that specify
+ further information about how to interpret the content.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter with the specified name and value.
+
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+ is not supported.
+
+
+
+
+ Gets the parameter name.
+
+
+ Gets the parameter name.
+
+ The parameter name.
+
+
+
+ Gets or sets the parameter value character encoding.
+
+
+ Gets or sets the parameter value character encoding.
+
+ The character encoding.
+
+
+
+ Gets or sets the parameter encoding method to use.
+
+
+ Gets or sets the parameter encoding method to use.
+ The MIME specifications specify that the proper method for encoding Content-Type
+ and Content-Disposition parameter values is the method described in
+ rfc2231. However, it is common for
+ some older email clients to improperly encode using the method described in
+ rfc2047 instead.
+ If set to , the encoding
+ method used will default to the value set on the .
+
+ The encoding method.
+
+ is not a valid value.
+
+
+
+
+ Gets or sets the parameter value.
+
+
+ Gets or sets the parameter value.
+
+ The parameter value.
+
+ is null.
+
+
+
+
+ Returns a string representation of the .
+
+
+ Formats the parameter name and value in the form name="value".
+
+ A string representation of the .
+
+
+
+ The method to use for encoding Content-Type and Content-Disposition parameter values.
+
+
+ The MIME specifications specify that the proper method for encoding Content-Type and
+ Content-Disposition parameter values is the method described in
+ rfc2231. However, it is common for
+ some older email clients to improperly encode using the method described in
+ rfc2047 instead.
+
+
+
+
+ Use the default encoding method set on the .
+
+
+
+
+ Use the encoding method described in rfc2231.
+
+
+
+
+ Use the encoding method described in rfc2047 (for compatibility with older,
+ non-rfc-compliant email clients).
+
+
+
+
+ A list of parameters, as found in the Content-Type and Content-Disposition headers.
+
+
+ Parameters are used by both and .
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new parameter list.
+
+
+
+
+ Adds a parameter with the specified name and value.
+
+
+ Adds a new parameter to the list with the specified name and value.
+
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Adds a parameter with the specified name and value.
+
+
+ Adds a new parameter to the list with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ contains illegal characters.
+
+
+
+
+ Adds a parameter with the specified name and value.
+
+
+ Adds a new parameter to the list with the specified name and value.
+
+ The character encoding.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+ -or-
+ is null.
+
+
+ cannot be empty.
+ -or-
+ contains illegal characters.
+
+
+ is not supported.
+
+
+
+
+ Checks if the contains a parameter with the specified name.
+
+
+ Determines whether or not the parameter list contains a parameter with the specified name.
+
+ true if the requested parameter exists;
+ otherwise false.
+ The parameter name.
+
+ is null.
+
+
+
+
+ Gets the index of the requested parameter, if it exists.
+
+
+ Finds the index of the parameter with the specified name, if it exists.
+
+ The index of the requested parameter; otherwise -1.
+ The parameter name.
+
+ is null.
+
+
+
+
+ Inserts a parameter with the specified name and value at the given index.
+
+
+ Inserts a new parameter with the given name and value at the specified index.
+
+ The index to insert the parameter.
+ The parameter name.
+ The parameter value.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+ is out of range.
+
+
+
+
+ Removes the specified parameter.
+
+
+ Removes the parameter with the specified name from the list, if it exists.
+
+ true if the specified parameter was removed;
+ otherwise false.
+ The parameter name.
+
+ is null.
+
+
+
+
+ Gets or sets the value of a parameter with the specified name.
+
+
+ Gets or sets the value of a parameter with the specified name.
+
+ The value of the specified parameter if it exists; otherwise null.
+ The parameter name.
+
+ is null.
+ -or-
+ is null.
+
+
+ The contains illegal characters.
+
+
+
+
+ Gets the parameter with the specified name.
+
+
+ Gets the parameter with the specified name.
+
+ true if the parameter exists; otherwise, false.
+ The parameter name.
+ The parameter.
+
+ is null.
+
+
+
+
+ Gets the value of the parameter with the specified name.
+
+
+ Gets the value of the parameter with the specified name.
+
+ true if the parameter exists; otherwise, false.
+ The parameter name.
+ The parameter value.
+
+ is null.
+
+
+
+
+ Gets the number of parameters in the .
+
+
+ Indicates the number of parameters in the list.
+
+ The number of parameters.
+
+
+
+ Gets a value indicating whether this instance is read only.
+
+
+ A is never read-only.
+
+ true if this instance is read only; otherwise, false.
+
+
+
+ Adds the specified parameter.
+
+
+ Adds the specified parameter to the end of the list.
+
+ The parameter to add.
+
+ The is null.
+
+
+ A parameter with the same name as
+ already exists.
+
+
+
+
+ Clears the parameter list.
+
+
+ Removes all of the parameters from the list.
+
+
+
+
+ Checks if the contains the specified parameter.
+
+
+ Determines whether or not the parameter list contains the specified parameter.
+
+ true if the specified parameter is contained;
+ otherwise false.
+ The parameter.
+
+ The is null.
+
+
+
+
+ Copies all of the contained parameters to the specified array.
+
+
+ Copies all of the parameters within the into the array,
+ starting at the specified array index.
+
+ The array to copy the parameters to.
+ The index into the array.
+
+
+
+ Removes the specified parameter.
+
+
+ Removes the specified parameter from the list.
+
+ true if the specified parameter was removed;
+ otherwise false.
+ The parameter.
+
+ The is null.
+
+
+
+
+ Gets the index of the requested parameter, if it exists.
+
+
+ Finds the index of the specified parameter, if it exists.
+
+ The index of the requested parameter; otherwise -1.
+ The parameter.
+
+ The is null.
+
+
+
+
+ Inserts the specified parameter at the given index.
+
+
+ Inserts the parameter at the specified index in the list.
+
+ The index to insert the parameter.
+ The parameter.
+
+ The is null.
+
+
+ The is out of range.
+
+
+ A parameter with the same name as
+ already exists.
+
+
+
+
+ Removes the parameter at the specified index.
+
+
+ Removes the parameter at the specified index.
+
+ The index.
+
+ The is out of range.
+
+
+
+
+ Gets or sets the at the specified index.
+
+
+ Gets or sets the at the specified index.
+
+ The parameter at the specified index.
+ The index.
+
+ The is null.
+
+
+ The is out of range.
+
+
+ A parameter with the same name as
+ already exists.
+
+
+
+
+ Gets an enumerator for the list of parameters.
+
+
+ Gets an enumerator for the list of parameters.
+
+ The enumerator.
+
+
+
+ Gets an enumerator for the list of parameters.
+
+
+ Gets an enumerator for the list of parameters.
+
+ The enumerator.
+
+
+
+ Returns a string representation of the parameters in the .
+
+
+ If there are multiple parameters in the list, they will be separated by a semicolon.
+
+ A string representing the .
+
+
+
+ A Parse exception as thrown by the various Parse methods in MimeKit.
+
+
+ A can be thrown by any of the Parse() methods
+ in MimeKit. Each exception instance will have a
+ which marks the byte offset of the token that failed to parse as well
+ as a which marks the byte offset where the error
+ occurred.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The serialization info.
+ The stream context.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+ The byte offset of the token.
+ The byte offset of the error.
+ The inner exception.
+
+
+
+ Initializes a new instance of the class.
+
+
+ Creates a new .
+
+ The error message.
+ The byte offset of the token.
+ The byte offset of the error.
+
+
+
+ When overridden in a derived class, sets the
+ with information about the exception.
+
+
+ Sets the
+ with information about the exception.
+
+ The serialization info.
+ The streaming context.
+
+ is null.
+
+
+
+
+ Gets the byte index of the token that was malformed.
+
+
+ The token index is the byte offset at which the token started.
+
+ The byte index of the token.
+
+
+
+ Gets the index of the byte that caused the error.
+
+
+ The error index is the byte offset at which the parser encountered an error.
+
+ The index of the byte that caused error.
+
+
+
+ Parser options as used by as well as various Parse and TryParse methods in MimeKit.
+
+
+ allows you to change and/or override default parsing options used by methods such
+ as and others.
+
+
+
+
+ The default parser options.
+
+
+ If a is not supplied to or other Parse and TryParse
+ methods throughout MimeKit, will be used.
+
+
+
+
+ Gets or sets the compliance mode that should be used when parsing rfc822 addresses.
+
+
+ In general, you'll probably want this value to be
+ (the default) as it allows maximum interoperability with existing (broken) mail clients
+ and other mail software such as sloppily written perl scripts (aka spambots).
+ Even in mode, the address
+ parser is fairly liberal in what it accepts. Setting it to
+ just makes it try harder to deal with garbage input.
+
+ The RFC compliance mode.
+
+
+
+ Gets or sets the compliance mode that should be used when parsing Content-Type and Content-Disposition parameters.
+
+
+ In general, you'll probably want this value to be
+ (the default) as it allows maximum interoperability with existing (broken) mail clients
+ and other mail software such as sloppily written perl scripts (aka spambots).
+ Even in mode, the parameter
+ parser is fairly liberal in what it accepts. Setting it to
+ just makes it try harder to deal with garbage input.
+
+ The RFC compliance mode.
+
+
+
+ Gets or sets the compliance mode that should be used when decoding rfc2047 encoded words.
+
+
+ In general, you'll probably want this value to be
+ (the default) as it allows maximum interoperability with existing (broken) mail clients
+ and other mail software such as sloppily written perl scripts (aka spambots).
+
+ The RFC compliance mode.
+
+
+
+ Gets or sets a value indicating whether the Content-Length value should be
+ respected when parsing mbox streams.
+
+
+ For more details about why this may be useful, you can find more information
+ at
+ http://www.jwz.org/doc/content-length.html.
+
+ true if the Content-Length value should be respected;
+ otherwise, false.
+
+
+
+ Gets or sets the charset encoding to use as a fallback for 8bit headers.
+
+
+ and
+
+ use this charset encoding as a fallback when decoding 8bit text into unicode. The first
+ charset encoding attempted is UTF-8, followed by this charset encoding, before finally
+ falling back to iso-8859-1.
+
+ The charset encoding.
+
+
+
+ Initializes a new instance of the class.
+
+
+ By default, new instances of enable rfc2047 work-arounds
+ (which are needed for maximum interoperability with mail software used in the wild)
+ and do not respect the Content-Length header value.
+
+
+
+
+ Clones an instance of .
+
+
+ Clones a set of options, allowing you to change a specific option
+ without requiring you to change the original.
+
+ An identical copy of the current instance.
+
+
+
+ Registers the subclass for the specified mime-type.
+
+ The MIME type.
+ A custom subclass of .
+
+ Your custom class should not subclass
+ directly, but rather it should subclass
+ , ,
+ , or one of their derivatives.
+
+
+ is null.
+ -or-
+ is null.
+
+
+ is not a subclass of ,
+ , or .
+ -or-
+ does not have a constructor that takes
+ only a argument.
+
+
+
+
+ An RFC compliance mode.
+
+
+ An RFC compliance mode.
+
+
+
+
+ Attempt to be much more liberal accepting broken and/or invalid formatting.
+
+
+
+
+ Do not attempt to be overly liberal in accepting broken and/or invalid formatting.
+
+
+
+
+ A Textual MIME part.
+
+
+ Unless overridden, all textual parts parsed by the ,
+ such as text/plain or text/html, will be represented by a .
+ For more information about text media types, see section 4.1 of
+ rfc2046.
+
+
+
+
+ Initializes a new instance of the class.
+
+
+ This constructor is used by .
+
+ Information used by the constructor.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with the specified text subtype.
+
+
+ Creates a new with the specified subtype.
+
+ The media subtype.
+ An array of initialization parameters: headers, charset encoding and text.
+
+ is null.
+ -or-
+ is null.
+
+
+ contains more than one .
+ -or-
+ contains more than one .
+ -or-
+ contains one or more arguments of an unknown type.
+
+
+
+
+ Initializes a new instance of the
+ class with the specified text subtype.
+
+
+ Creates a new with the specified subtype.
+
+ The media subtype.
+
+ is null.
+
+
+
+
+ Initializes a new instance of the
+ class with a Content-Type of text/plain.
+
+
+ Creates a default with a mime-type of text/plain.
+
+
+
+
+ Gets whether or not this text part contains enriched text.
+
+
+ Checks whether or not the text part's Content-Type is text/enriched or its
+ predecessor, text/richtext (not to be confused with text/rtf).
+
+ true if the text is enriched; otherwise, false.
+
+
+
+ Gets whether or not this text part contains flowed text.
+
+
+ Checks whether or not the text part's Content-Type is text/plain and
+ has a format parameter with a value of flowed.
+
+ true if the text is flowed; otherwise, false.
+
+
+
+ Gets whether or not this text part contains HTML.
+
+
+ Checks whether or not the text part's Content-Type is text/html.
+
+ true if the text is html; otherwise, false.
+
+
+
+ Gets whether or not this text part contains plain text.
+
+
+ Checks whether or not the text part's Content-Type is text/plain.
+
+ true if the text is html; otherwise, false.
+
+
+
+ Gets whether or not this text part contains RTF.
+
+
+ Checks whether or not the text part's Content-Type is text/rtf.
+
+ true if the text is RTF; otherwise, false.
+
+
+
+ Gets the decoded text content.
+
+
+ If the charset parameter on the
+ is set, it will be used in order to convert the raw content into unicode.
+ If that fails or if the charset parameter is not set, iso-8859-1 will be
+ used instead.
+ For more control, use
+ or .
+
+ The text.
+
+
+
+ Dispatches to the specific visit method for this MIME entity.
+
+
+ This default implementation for nodes
+ calls . Override this
+ method to call into a more specific method on a derived visitor class
+ of the class. However, it should still
+ support unknown visitors by calling
+ .
+
+ The visitor.
+
+ is null.
+
+
+
+
+ Determines whether or not the text is in the specified format.
+
+
+ Determines whether or not the text is in the specified format.
+
+ true if the text is in the specified format; otherwise, false.
+ The text format.
+
+
+
+ Gets the decoded text content using the provided charset encoding to
+ override the charset specified in the Content-Type parameters.
+
+
+ Uses the provided charset encoding to convert the raw text content
+ into a unicode string, overriding any charset specified in the
+ Content-Type header.
+
+ The decoded text.
+ The charset encoding to use.
+
+ is null.
+
+
+
+
+ Gets the decoded text content using the provided charset to override
+ the charset specified in the Content-Type parameters.
+
+
+ Uses the provided charset encoding to convert the raw text content
+ into a unicode string, overriding any charset specified in the
+ Content-Type header.
+
+ The decoded text.
+ The charset encoding to use.
+
+ is null.
+
+
+ The is not supported.
+
+
+
+
+ Sets the text content and the charset parameter in the Content-Type header.
+
+
+ This method is similar to setting the property,
+ but allows specifying a charset encoding to use. Also updates the
+ property.
+
+ The charset encoding.
+ The text content.
+
+ is null.
+ -or-
+ is null.
+
+
+
+
+ Sets the text content and the charset parameter in the Content-Type header.
+
+
+ This method is similar to setting the property,
+ but allows specifying a charset encoding to use. Also updates the
+ property.
+
+ The charset encoding.
+ The text content.
+
+ is null.
+ -or-
+ is null.
+
+
+ The is not supported.
+
+
+
+
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.dll
index aa076383..9a24622c 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.pdb
index 360f8c21..c4cfefe5 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2016 Preview/ExchangeDkimSigner.pdb differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.dll b/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.dll
index f3a4f2d7..14b22be0 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.dll and b/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.dll differ
diff --git a/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.pdb b/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.pdb
index 7baa8cf1..8b655d70 100644
Binary files a/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.pdb and b/Src/Exchange.DkimSigner/bin/Exchange 2016 RTM/ExchangeDkimSigner.pdb differ