<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DidiSoft Ltd. OpenPGP solutions</title>
	<atom:link href="http://www.didisoft.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.didisoft.com</link>
	<description>Java OpenPGP, .NET OpenPGP, Software Libraries and tools</description>
	<lastBuildDate>Mon, 23 Apr 2012 08:49:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>OpenPGP Library for .NET version 1.7.3 is available</title>
		<link>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-version-1-7-3-is-available/</link>
		<comments>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-version-1-7-3-is-available/#comments</comments>
		<pubDate>Wed, 21 Mar 2012 10:53:12 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[OpenPGP Library for .NET]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1667</guid>
		<description><![CDATA[We are happy to announce that version 1.7.3 of OpenPGP Library for .NET is available for download. This version ships with additional functionality and we have fixed a few bugs that we have found recently. Below is a short introduction to the new features that you can find in this release. Inspecting the contents of [...]]]></description>
			<content:encoded><![CDATA[<p>We are happy to announce that version <strong>1.7.3</strong> of <a title="OpenPGP Library for C# and VB.NET" href="/net-openpgp/">OpenPGP Library for .NET</a> is available for download.</p>
<p>This version ships with additional functionality and we have fixed a few bugs that we have found recently. Below is a short introduction to the new features that you can find in this release.</p>
<p><strong>Inspecting the contents of an OpenPGP archive</strong></p>
<p>This features is useful if we want to investigate the contents of an OpenPGP archive without decrypting it. The classes that provide this functionality are located in the DidiSoft.Pgp.Inspect namespace. Below is a quick example in C#.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0000FF;">String</span> privateKey <span style="color: #008000;">=</span> <span style="color: #996633;">@&quot;DataFiles/private.key&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0000FF;">String</span> privateKeyPassword <span style="color: #008000;">=</span> <span style="color: #996633;">&quot;changeit&quot;</span><span style="color: #008000;">;</span>
<span style="color: #0000FF;">String</span> encryptedFile <span style="color: #008000;">=</span> <span style="color: #996633;">@&quot;DataFiles/encrypted.pgp&quot;</span><span style="color: #008000;">;</span>
&nbsp;
PGPInspectLib inspectLib <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PGPInspectLib<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
ContentItem<span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> files <span style="color: #008000;">=</span> inspectLib.<span style="color: #0000FF;">ListOpenPgpFile</span><span style="color: #000000;">&#40;</span>encryptedFile, privateKey, privateKeyPassword<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">foreach</span> <span style="color: #000000;">&#40;</span>ContentItem file <span style="color: #0600FF;">in</span> files<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
	Console.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#40;</span>file.<span style="color: #0000FF;">FileName</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
	Console.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#40;</span>file.<span style="color: #0000FF;">IsDirectory</span> <span style="color: #008000;">?</span> <span style="color: #996633;">&quot; DIR&quot;</span> <span style="color: #008000;">:</span> <span style="color: #996633;">&quot; &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>file.<span style="color: #0000FF;">ModificationTime</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p><strong>Operations with detached signatures</strong><br />
Below is a C# example that demonstrates how to create a detached OpenPGP signature for a file.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">using</span> <span style="color: #008080;">DidiSoft.Pgp</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0000FF;">class</span> DetachedSignDemo
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Demo<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
   <span style="color: #000000;">&#123;</span>
       PGPLib pgp <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> PGPLib<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
       <span style="color: #0000FF;">bool</span> asciiArmor <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
       pgp.<span style="color: #0000FF;">DetachedSignFile</span><span style="color: #000000;">&#40;</span><span style="color: #996633;">@&quot;C:\Test\INPUT.txt&quot;</span>,
                            <span style="color: #996633;">@&quot;C:\Test\private_key.asc&quot;</span>,
                            <span style="color: #996633;">&quot;private key password&quot;</span>,
                            <span style="color: #996633;">@&quot;C:\Test\INPUT.txt.sig&quot;</span>,
                           asciiArmor<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>&nbsp;</p>
<p><strong>Methods for achieving the OpenPGP Web of Trust</strong></p>
<p>The OpenPGP Web of Trust is a concept introduced first in 1992 by Phil Zimmermann. It provides a decentralized way of maintaining trust relationship between OpenPGP keys with signatures.</p>
<p>Below is a list of all the changes in this version.</p>
<p>[*] : Bug<br />
[+] : New<br />
[-] : Removed<br />
[!] : Modification</p>
<p>Version 1.7.3<br />
Published on March 20, 2012</p>
<p><strong>I. Fixed bugs</strong></p>
<p>[*] Fixed encrypting folders with long names (more than 100 characters)</p>
<p>[*] Fixed cleanup of half encrypted files after an exception for all methods.</p>
<p>[*] Fixed bug when creating an uncompressed one pass signed and encrypted archive.</p>
<p>[!] Decripting methods now check the integrity protection of the data and throws Didisoft.Pgp.Exceptions.IntegrityCheckException</p>
<p><strong>II. KeyStore modifications</strong></p>
<p>[!] KeyStore.GenerateKeyPair now returns a KeyPairInformation instance representing the generated key<br />
[!] KeyStore.ImportKeyRing now returns an array of KeyPairInformation instances representing the imported key(s)<br />
[!] KeyStore.ImportPublicKey now returns an array of KeyPairInformation instances representing the imported key<br />
[!] KeyStore.ImportPrivateKey now returns an array of KeyPairInformation instances representing the imported key</p>
<p><strong>III. Inspecting the contents of OpenPGP encrypted data</strong></p>
<p>Added namespace Didisoft.Pgp.Inspect</p>
<p>[+] Added class Didisoft.Pgp.PGPInspectLib that provides methods for inspecting the content of OpenPGP data<br />
[+] Added class Didisoft.Pgp.ContentItem that represents information for an item in an OpenPGP archive</p>
<p><strong>IV. Web of Trust</strong></p>
<p>[+] Added enum TrustLevel that holds supported trust values</p>
<p>Added methods for marking a public key as Trusted introducer<br />
[+] KeyStore.SignPublicKeyAsTrustedIntroducer(long keyId, long signKeyId, String signPassword)<br />
[+] KeyStore.SignPublicKeyAsTrustedIntroducer(String keyUserId, String signKeyUserId, String signPassword)</p>
<p>Added methods for signing a public key<br />
[+] KeyStore.SignPublicKey(long keyId, long signKeyId, String signPassword)<br />
[+] KeyStore.SignPublicKey(String keyUserId, String signKeyUserId, String signPassword)</p>
<p>Added methods for explicitly setting the Trust of a key located in a KeyStore<br />
[+] KeyStore.SetTrust(String keyUserId, TrustLevel trustValue)<br />
[+] KeyStore.SetTrust(long keyId, TrustLevel trustValue)</p>
<p>Added methods and property for checking the trust value of a given key<br />
[+] KeyStore.IsTrusted(String keyUserId)<br />
[+] KeyStore.IsTrusted(long keyId)<br />
[+] KeyPairInformation.Trust</p>
<p><strong>V. Detached signatures</strong></p>
<p>[+] PGPLib.DetachedSignFile creates a detached OpenPGP signature for a file<br />
[+] PGPLib.DetachedSignStream creates a detached OpenPGP signature for a data stream<br />
[+] PGPLib.DetachedSignString creates a detached OpenPGP signature for string message<br />
[+] PGPLib.DetachedVerifyStream verifies a detached OpenPGP signature against a data stream<br />
[+] PGPLib.DetachedVerifyString verifies a detached OpenPGP signature against a string message</p>
<p><strong>VI. Partial match User Id&#8217;s</strong></p>
<p>[+] Added property KeyStore.PartialMatchuserIds &#8211; if enabled the methods that search keys in a KeyStore by User Id<br />
will match them on part of the User Id as well</p>
<p><strong>VII. Expired and revoked keys</strong></p>
<p>[+] Added property PGPLib.UseExpiredKeys &#8211; check are the encryption keys expired<br />
[+] Added property PGPLib.UseRevokedKeys &#8211; check are the encryption keys revoked</p>
<p><strong>VIII. New Exceptions:</strong></p>
<p>[+] Added class Didisoft.Pgp.Exceptions.IntegrityCheckException (extends PGPException)<br />
thrown if an integrity protected OpenPGP archive is corrupted</p>
<p>[+] Added Didisoft.Pgp.Exceptions.KeyIsExpiredException (extends PGPException)<br />
thrown from all Encrypt and SignAndEncrypt methods when the supplied public key is expired.<br />
Can be suppressed with PGPLib.UseExpiredKeys</p>
<p>[+] Added Didisoft.Pgp.Exceptions.KeyIsRevokedException (extends PGPException)<br />
thrown from all Encrypt and SignAndEncrypt methods when the supplied public key is revoked.<br />
Can be suppressed with PGPLib.UseRevokedKeys</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-version-1-7-3-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenPGP Library for Java version 2.5.8 is out</title>
		<link>http://www.didisoft.com/java-openpgp-library/openpgp-library-for-java-version-2-5-8-is-out/</link>
		<comments>http://www.didisoft.com/java-openpgp-library/openpgp-library-for-java-version-2-5-8-is-out/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 10:08:47 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[OpenPGP Library for Java]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1648</guid>
		<description><![CDATA[We are happy to announce that a new improved version of OpenPGP Library for Java is available for download. This new version offers some new features and improvements that we hope will help you in your OpenPGP related software development. Below is a quick introduction to some of the new features that you will find in [...]]]></description>
			<content:encoded><![CDATA[<p>We are happy to announce that a new improved version of <a title="Java OpenPGP library" href="/java-openpgp/">OpenPGP Library for Java</a> is available for download.</p>
<p>This new version offers some new features and improvements that we hope will help you in your OpenPGP related software development.</p>
<p>Below is a quick introduction to some of the new features that you will find in <strong>version 2.5.8</strong>.</p>
<p><strong>OpenPGP archive content inspection tools</strong></p>
<p>In this release we have added a new package <em>com.didisoft.pgp.inspect </em>that offers classes that can be used to inspect the contents of an OpenPGP archive without decrypting it. Here is a quick example that shows how we can use it:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.didisoft.pgp.inspect.*</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> InspectEncryptedFileContents <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">// create an isntance of the inspection library</span>
        PGPInspectLib inspectLib <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PGPInspectLib<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #003399;">String</span> privateKey <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;private_key.asc&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">String</span> privateKeyPassword <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;password&quot;</span><span style="color: #339933;">;</span>
        <span style="color: #003399;">String</span> encryptedFile <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;encrypted.pgp&quot;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #666666; font-style: italic;">// Inspect the contents of an OpenPGP archive</span>
        ContentItem<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> files <span style="color: #339933;">=</span> inspectLib.<span style="color: #006633;">listOpenPGPFile</span><span style="color: #009900;">&#40;</span>encryptedFile, privateKey, privateKeyPassword<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> files.<span style="color: #006633;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>files<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getFileName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">print</span><span style="color: #009900;">&#40;</span>files<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">isDirectory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">?</span> <span style="color: #0000ff;">&quot;directory&quot;</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">&quot;  file  &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>files<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getModificationDate</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Logging</strong></p>
<p>The library now offers logging on level FINE. The default logging level provided by JRE is INFO, so we have to explicitly enable level FINE for the library by adding the line below to our logging configuration file:</p>
<pre>com.didisoft.pgp.level=FINE</pre>
<p><strong>Web of Trust</strong></p>
<p>This version of the library provides methods that assign trust value to your partners&#8217; keys and thus you can create your local Web of Trust. An additional tutorial will explain in details the OpenPGP web of trust because this is a more wide subject.</p>
<p>Below is a list of changes in version 2.5.8:</p>
<p>[*] : Bug<br />
[+] : New<br />
[-] : Removed<br />
[!] : Modification</p>
<p>[+] Introduced Java logging on livel FINE for inspecting the internal work of the Library</p>
<p>[*] Fixed bug when creating an uncompressed one pass signed and encrypted archive.<br />
[!] Decripting methods now check the integrity protection of the data</p>
<p>[!] KeyStore.generateKeyPair now returns a KeyPairInformation instance representing the generated key<br />
[!] KeyStore.importKeyRing now returns an array of KeyPairInformation instances representing the imported keys<br />
[!] KeyStore.importPublicKey now returns an array of KeyPairInformation instances representing the imported keys<br />
[!] KeyStore.importPrivateKey now returns an array of KeyPairInformation instances representing the imported keys</p>
<p>[+] Added interface TrustLevel that holds constants for the most common trust values</p>
<p>Added package com.didisoft.pgp.inspect<br />
[+] Added class com.didisoft.pgp.inspect.PGPInspectLib that provides methods for inspecting the content of OpenPGP data<br />
[+] Added class com.didisoft.pgp.inspect.ConteentItem that represents information for an item in an OpenPGP archive</p>
<p>Added methods for marking a public key as trusted introducer<br />
[+] KeyStore.signPublicKeyAsTrustedIntroducer(long keyId, long signKeyId, String signPassword)<br />
[+] KeyStore.signPublicKeyAsTrustedIntroducer(String keyUserId, String signKeyUserId, String signPassword)</p>
<p>Added methods for explicitly setting the trust of a key located in a KeyStore<br />
[+] KeyStore.setTrust(String keyUserId, byte trustValue)<br />
[+] KeyStore.setTrust(long keyId, byte trustValue)</p>
<p>Added methods for checking the trust value of a given key<br />
[+] KeyStore.isTrusted(String keyUserId)<br />
[+] KeyStore.isTrusted(long keyId)<br />
[+] KeyPairInformation.getTrust()</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/java-openpgp-library/openpgp-library-for-java-version-2-5-8-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenPGP is evolving</title>
		<link>http://www.didisoft.com/didisoft/openpgp-evolving/</link>
		<comments>http://www.didisoft.com/didisoft/openpgp-evolving/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 10:55:21 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[DidiSoft]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1628</guid>
		<description><![CDATA[The OpenPGP standard is evolving. In the near future the OpenPGP standard will be expanded with Eliptic Curve cryptography also knows as ECC. At the moment still as a draft is a new change proposal for extending the bucket of OpenPGP symmetric cipher algorithms with Eliptic Curve Diffie Hellman (ECDH) and Eliptic Curve Digital Signature [...]]]></description>
			<content:encoded><![CDATA[<p>The OpenPGP standard is evolving. In the near future the <strong>OpenPGP standard will be expanded with Eliptic Curve cryptography</strong> also knows as ECC.</p>
<p><img class="alignnone size-full wp-image-1629" style="float: left;" title="ECC in OpenPGP" src="http://www.didisoft.com/wp-content/uploads/openpgp.jpg" alt="" width="125" height="125" />At the moment still as a draft is a new <a title="ECC in OpenPGP" href="https://datatracker.ietf.org/doc/draft-jivsov-openpgp-ecc/">change proposal</a> for extending the bucket of OpenPGP symmetric cipher algorithms with Eliptic Curve Diffie Hellman (ECDH) and Eliptic Curve Digital Signature algorithm (ECDSA) is being developed.</p>
<p>The author of the draft is Mr. Jivsov from Symantec. The ECDSA  algorithm packet will have value 19 and the ECDH packet will probably be (yet to be assigned) 18. The proposed named curves that will be used are NIST P-256, NIST P-384 and NIST P-521.</p>
<p>We will be looking forward this great change to become an official IETF standard.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/didisoft/openpgp-evolving/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenPGP Library for .NET Roadmap 2012</title>
		<link>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-roadmap-2012/</link>
		<comments>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-roadmap-2012/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 15:05:33 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[OpenPGP Library for .NET]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1576</guid>
		<description><![CDATA[This is our official roadmap for DidiSoft OpenPGP Library for .NET for year 2012. As always there can be slight changes during the year but we are going to inform you when a new feature set is ready. Sign up for our newsletter if you haven’t done so yet and stay tuned. Upcoming features this [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img class="alignnone size-full wp-image-1169" style="float: left;" title="OpenPGP Library for .NET" src="http://www.didisoft.com/wp-content/uploads/netopenpgpbox3small.gif" alt="C# and VB.NET PGP Library" width="151" height="182" /></strong></p>
<p>This is our official roadmap for DidiSoft <a href="/net-openpgp/">OpenPGP Library for .NET</a> for year 2012.</p>
<p>As always there can be slight changes during the year but we are going to inform you when a new feature set is ready.</p>
<p>Sign up for our <a href="http://eepurl.com/bxRhD">newsletter</a> if you haven’t done so yet and stay tuned.</p>
<p><strong>Upcoming features this year</strong></p>
<ul>
<li>Check is a key revoked or expired before usage. Manage keys&#8217; trust. (planned for Q1)</li>
<li>Print diagnostics information (planned for Q2)</li>
<li>Analyzing the contents of an OpenPGP archive prior decrypting (planned for Q3)</li>
<li>Ability to use directly X.509 certificates as keys and ADK (additional decryption keys) support (planned for Q4)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-roadmap-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenPGP Library for Java Roadmap 2012</title>
		<link>http://www.didisoft.com/java-openpgp-library/openpgp-library-for-java-roadmap-2012/</link>
		<comments>http://www.didisoft.com/java-openpgp-library/openpgp-library-for-java-roadmap-2012/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 14:57:18 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[OpenPGP Library for Java]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1572</guid>
		<description><![CDATA[Happy New Year 2012 This year we have planned a few new features to be added to DidiSoft OpenPGP Library for Java. Some of them may appear upfront from the schedule, but as always we give a high priority to features that have been requested by our customers. We are going to keep you posted [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Happy New Year 2012</strong></p>
<p>This year we have planned a few new features to be added to DidiSoft <a href="/java-openpgp/">OpenPGP Library for Java</a>.</p>
<p>Some of them may appear upfront from the schedule, but as always we give a high priority to features that have been requested by our customers.</p>
<p>We are going to keep you posted through our official <a href="http://eepurl.com/bSmPr">newsletter for OpenPGP Library for Java</a>.</p>
<p><a href="http://www.didisoft.com/wp-content/uploads/javaopenpgpbox3small.gif"><img class="alignnone size-full wp-image-1168" style="float: left;" title="Java OpenPGP Library" src="http://www.didisoft.com/wp-content/uploads/javaopenpgpbox3small.gif" alt="Java PGP Library" width="150" height="181" /></a>New features planned for this year:</p>
<ul>
<li>Logging through java.logging (planned for Q1)</li>
<li>Analyzing the contents of an OpenPGP archive prior decrypting (planned for Q3)</li>
<li>Ability to use directly X.509 certificates as keys (planned for Q3)</li>
</ul>
<p>At the end of the year (Q4) the library will ship by default with Bouncy Castle jar files version 1.46 (at the moment you can replace manually version 1.45 with 1.46) and will have a separate builds optimized for Java 5 and Java 6.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/java-openpgp-library/openpgp-library-for-java-roadmap-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Winter holidays 2011</title>
		<link>http://www.didisoft.com/didisoft/winter-holidays-2011/</link>
		<comments>http://www.didisoft.com/didisoft/winter-holidays-2011/#comments</comments>
		<pubDate>Sat, 24 Dec 2011 19:32:52 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[DidiSoft]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1567</guid>
		<description><![CDATA[Greetings! As we close out the 2011 year, we want to announce the official holidays when our support and sales departments will not be available. Our office will be closed on Monday 26th of December 2011 and on the 2nd of January 2011. We&#8217;ll be back on the 3rd of January! Happy Holidays from DidiSoft!]]></description>
			<content:encoded><![CDATA[<p>Greetings! As we close out the 2011 year, we want to announce the official holidays when our support and sales departments will not be available.</p>
<p>Our office will be closed on Monday 26<sub>th</sub> of December 2011 and on the 2<sub>nd</sub> of January 2011.<br />
We&#8217;ll be back on the 3<sub>rd</sub> of January!</p>
<h2>Happy Holidays from DidiSoft!</h2>
<p><img class="alignnone size-full wp-image-1568" title="Happy New Year 2012 " src="http://www.didisoft.com/wp-content/uploads/snow1.jpg" alt="" width="200" height="150" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/didisoft/winter-holidays-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unknown object in stream 21</title>
		<link>http://www.didisoft.com/kb/unknown-object-in-stream-21/</link>
		<comments>http://www.didisoft.com/kb/unknown-object-in-stream-21/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 08:27:13 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[.NET PGP]]></category>
		<category><![CDATA[Knowledge Base]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1358</guid>
		<description><![CDATA[We have received recently an email from one of our customers that have encountered an exception with message &#8220;Unknown object in stream 21&#8220;. The scenario when this exception occurred was: she tried to encrypt with an ASCII armored public key received from a partner with different operating system. The reason for the above exception was [...]]]></description>
			<content:encoded><![CDATA[<p>We have received recently an email from one of our customers that have encountered an exception with message &#8220;<strong>Unknown object in stream 21</strong>&#8220;.</p>
<p>The scenario when this exception occurred was: she tried to encrypt with an ASCII armored public key received from a partner with different operating system. The reason for the above exception was a strange line ending in the public key file.</p>
<p>We have updated <a title="PGP Library for .NET" href="/net-openpgp/">OpenPGP Library for .NET</a> to correct in memory the line ending of the public key file and if you encounter the same exception please update your production copy of the library through the Customers&#8217; section.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/kb/unknown-object-in-stream-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenPGP Library for .NET 1.7.2 is available</title>
		<link>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-1-7-2-is-available/</link>
		<comments>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-1-7-2-is-available/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 09:01:30 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[OpenPGP Library for .NET]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1343</guid>
		<description><![CDATA[We are happy to announce that version 1.7.2 of OpenPGP Library for .NET is available for download. Existing customers can download the new version from our customers&#8217; section located at http://didisoft.com/customers/ Below is a list describing the changes in this release. As always the new version is fully backward compatible with the previous one, so [...]]]></description>
			<content:encoded><![CDATA[<p><a title="OpenPGP Library for .NET" href="http://www.didisoft.com/net-openpgp/"><img class="alignnone size-full wp-image-1169" style="float: right;" title="OpenPGP Library for .NET" src="http://www.didisoft.com/wp-content/uploads/netopenpgpbox3small.gif" alt="C# and VB.NET PGP Library" width="151" height="182" /></a>We are happy to announce that <strong>version 1.7.2</strong> of <a title="OpenPGP Library for .NET" href="http://www.didisoft.com/net-openpgp/">OpenPGP Library for .NET</a> is available for download.</p>
<p>Existing customers can download the new version from our customers&#8217; section located at <a href="http://didisoft.com/customers/">http://didisoft.com/customers/</a></p>
<p>Below is a list describing the changes in this release. As always the new version is fully backward compatible with the previous one, so you can safely update your current version.</p>
<p> Version 1.7.2<br />
  Release date: November 09, 2011</p>
<p><span style="text-decoration: underline;">Legend:</span></p>
<p><em> [*] : Bug</em><br />
 <em>  [+] : New</em><br />
 <em>  [-] : Removed</em><br />
 <em>  [!] : Modification</em></p>
<p><span style="text-decoration: underline;">List of changes in version 1.7.2</span></p>
<p> [*] Fixed bug in <strong>PGPLib</strong> when encrypting with no compression!</p>
<p> [+] Added new exception DidiSoft.Pgp.Exceptions.<strong>NonPGPDataException</strong>, that indicates that the input is not a valid OpenPGP message</p>
<p> Modified methods that throw <strong>NonPGPDataException</strong> :</p>
<p> [!] PGPLib.DecryptAndVerifyFile &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file    <br />
  [!] PGPLib.DecryptAndVerifyFilePBE &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptAndVerifyString &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input string is not a valid OpenPGP message<br />
  [!] PGPLib.DecryptFile &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptStream &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
  [!] PGPLib.DecryptBytes &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
  [!] PGPLib.DecryptString &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
  [!] PGPLib.DecryptTo &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptFilePBE &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptStreamInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptFileInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptStreamPBEInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.DecryptFilePBEInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.VerifyString &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
  [!] PGPLib.VerifyFile &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
  [!] PGPLib.VerifyStream &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
  [!] PGPLib.DecryptPBETo &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file</p>
<p> DidiSoft.Pgp.<strong>KeyPairInformation</strong> changes:<br />
  <br />
  [+] Added method KeyPairInformation.CheckPassword(password) &#8211;  checks if a password for a private key is correct<br />
  [+] Added property KeyPairInformation.IsExpired &#8211; returns if this key is expired<br />
  [+] Added method KeyPairInformation.IsExpiredOnDate(date) &#8211; returns whether this key will be expired on a given date</p>
<p> DidiSoft.Pgp.<strong>KeyStore</strong> changes:</p>
<p> [+] Added static method KeyStore.OpenInMemory() &#8211; creates an in memory KeyStore<br />
  [+] Added static method KeyStore.OpenFile(file, password) &#8211; equivalent to the constructor KeyStore(file, password) <br />
  [+] Added method KeyStore.IsInMemory &#8211; checks if this KeyStore is located in memory<br />
  [+] Added method KeyStore.GetSecretKeysData() &#8211; returns the private keys containing in this KeyStore serialized as bytes<br />
  [+] Added method KeyStore.GetPublicKeysData() &#8211; returns the public keys containing in this KeyStore serialized as bytes<br />
  [+] Added method KeyStore.GetPublicKeysWithUserId(userId) &#8211; returns the public keys with the specified userId serialized as bytes<br />
  [+] Added method KeyStore.GetPublicKeyWithKeyId(keyId) &#8211; returns the public keys with the specified keyId serialized as bytes<br />
  [!] KeyStore.ImportPublicKey now throws a WrongPublicKeyException if there is no public key in the input file<br />
  [!] KeyStore.ImportPrivateKey now throws a WrongPrivateKeyException if there is no private key in the input file<br />
  [+] Added overloaded method KeyStore.ImportPrivateKey(file)<br />
  [+] Added overloaded method KeyStore.ImportPrivateKey(file)<br />
  [+] Added method KeyStore.ExportPublicKeyStream(userId) &#8211; exports a public key into a Stream <br />
  [+] Added method KeyStore.ExportPublicKeyStream(keyId) &#8211; exports a public key into a Stream <br />
  [+] Added method KeyStore.LoadFromStream(stream) &#8211; suitable for loading a previously serialized in memory Keystore<br />
  [+] Added method KeyStore.SaveToStream(stream) &#8211; suitable for storing an in memory Keystore<br />
  [+] Added method KeyStore.CheckPassword(file, password) &#8211; checks if a password for a KeyStore is correct</p>
<p>[*] Fixed bug in PGPLib when encrypting with no compression!</p>
<p>[+] Added new exception DidiSoft.Pgp.Exceptions.NonPGPDataException, that indicates that the input is not a valid OpenPGP message</p>
<p>Modified methods that throw <em>NonPGPDataException</em> :</p>
<p>[!] PGPLib.DecryptAndVerifyFile &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file    <br />
 [!] PGPLib.DecryptAndVerifyFilePBE &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptAndVerifyString &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input string is not a valid OpenPGP message<br />
 [!] PGPLib.DecryptFile &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptStream &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
 [!] PGPLib.DecryptBytes &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
 [!] PGPLib.DecryptString &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
 [!] PGPLib.DecryptTo &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptFilePBE &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptStreamInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptFileInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptStreamPBEInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.DecryptFilePBEInFolder &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.VerifyString &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
 [!] PGPLib.VerifyFile &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file<br />
 [!] PGPLib.VerifyStream &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input data is not a valid OpenPGP message<br />
 [!] PGPLib.DecryptPBETo &#8211; throws DidiSoft.Pgp.Exceptions.NonPGPDataException if the input file is not a valid OpenPGP file</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/net-openpgp-library/openpgp-library-for-net-1-7-2-is-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unknown KeySpec type ElGamalPrivateKeySpec</title>
		<link>http://www.didisoft.com/kb/unknown-keyspec-type-elgamalprivatekeyspec/</link>
		<comments>http://www.didisoft.com/kb/unknown-keyspec-type-elgamalprivatekeyspec/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 19:34:55 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[Java PGP]]></category>
		<category><![CDATA[Knowledge Base]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1335</guid>
		<description><![CDATA[Some customers that have deployed DidiSoft OpenPGP Library for Java as part of a web application, have noticed that the exception below is thrown when they perform a hot deploy on the application server: org.bouncycastle.openpgp.PGPException: Exception constructing key    at org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Unknown Source)    at org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Unknown Source) &#8230; Caused by: java.security.spec.InvalidKeySpecException: Unknown KeySpec type: org.bouncycastle.jce.spec.ElGamalPrivateKeySpec    [...]]]></description>
			<content:encoded><![CDATA[<p>Some customers that have deployed DidiSoft <a title="OpenPGP Library for Java" href="/products/java-openpgp-library/">OpenPGP Library for Java</a> as part of a web application, have noticed that the exception below is thrown when they perform a hot deploy on the application server:</p>
<p>org.bouncycastle.openpgp.PGPException: <strong>Exception constructing key</strong><br />
    at org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Unknown Source)<br />
    at org.bouncycastle.openpgp.PGPSecretKey.extractPrivateKey(Unknown Source)<br />
 &#8230;<br />
 Caused by: java.security.spec.InvalidKeySpecException: <strong>Unknown</strong> <strong>KeySpec type: org.bouncycastle.jce.spec.ElGamalPrivateKeySpec</strong><br />
    at org.bouncycastle.jce.provider.JDKKeyFactory.engineGeneratePrivate(Unknown Source)<br />
    at org.bouncycastle.jce.provider.JDKKeyFactory$ElGamal.engineGeneratePrivate(Unknown Source)</p>
<p><strong><br />
 The reason</strong> for the above exceptions is that the library JAR files are bundled with the web application. Hence after an application is stopped/started, they are loaded in another class loader, while the BouncyCastle security provider is already registered with a class loader that is now unavailable (<em>has been destroyed after the web application has stopped</em>).</p>
<p><strong>The solution</strong> to this situation is to ship the application without the library JAR files.<br />
 They must be placed in a folder shared for all applications running on the Application server.</p>
<p> Below are listed the shared folders for some application servers.</p>
<p>Tomcat 5.x<br />
 &lt;tomcat folder&gt;/shared/lib/</p>
<p>Tomcat 6.x<br />
 $CATALINA_BASE/lib/</p>
<p>Web Sphere<br />
 &lt;was folder&gt;/lib</p>
<p>WebLogic<br />
 &lt;weblogic folder&gt;/common/lib</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/kb/unknown-keyspec-type-elgamalprivatekeyspec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unknown object in stream 9</title>
		<link>http://www.didisoft.com/kb/unknown-object-in-stream-9/</link>
		<comments>http://www.didisoft.com/kb/unknown-object-in-stream-9/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 19:39:11 +0000</pubDate>
		<dc:creator>nasko</dc:creator>
				<category><![CDATA[Java PGP]]></category>
		<category><![CDATA[Knowledge Base]]></category>

		<guid isPermaLink="false">http://www.didisoft.com/?p=1320</guid>
		<description><![CDATA[This exception is equivalent to unknown object in stream SymmetricKeyEncrypted. Usually occurs when we try to decrypt a conventionally OpenPGP encrypted file (also known as password encrypted or PBE) that was created with PGP 2.x or McAfee E-Business Server 7.x. This issue has been addressed in OpenPGP Library for Java version 2.5.6 and upper and [...]]]></description>
			<content:encoded><![CDATA[<p>This exception is equivalent to <strong id="mf14"></strong><a href="/kb/unknown-object-in-stream-symmetrickeyencrypted/"><strong id="mf14">unknown object in stream SymmetricKeyEncrypted</strong></a>. Usually occurs when we try to decrypt a conventionally OpenPGP encrypted file (also known as password encrypted or PBE) that was created with PGP 2.x or McAfee E-Business Server 7.x.</p>
<p>This issue has been addressed in <a title="Java pgp sdk library" href="/products/java-openpgp-library/">OpenPGP Library for Java</a> version 2.5.6 and upper and <a title="c# and vb.net pgp api" href="/net-openpgp/">OpenPGP Library for .NET</a> 1.7.1 and upper versions. Please update your version in order to resolve this issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.didisoft.com/kb/unknown-object-in-stream-9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

