You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2008/08/12 02:09:05 UTC

svn commit: r684997 - in /maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org: ./ apache/ apache/maven/ apache/maven/mercury/ apache/maven/mercury/crypto/ apache/maven/mercury/crypto/pgp/

Author: ogusakov
Date: Mon Aug 11 17:09:05 2008
New Revision: 684997

URL: http://svn.apache.org/viewvc?rev=684997&view=rev
Log:
implemented PGP signatures, changed StreamVerifier modus operandi to get initialized with signature upfront as crypto signature needs that. Changed http client to follow this new paradigm

Added:
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/pgp/
    maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/pgp/PgpStreamVerifierTest.java

Added: maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/pgp/PgpStreamVerifierTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/pgp/PgpStreamVerifierTest.java?rev=684997&view=auto
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/pgp/PgpStreamVerifierTest.java (added)
+++ maven/sandbox/trunk/mercury/mercury-crypto/mercury-crypto-basic/src/test/java/org/apache/maven/mercury/crypto/pgp/PgpStreamVerifierTest.java Mon Aug 11 17:09:05 2008
@@ -0,0 +1,131 @@
+package org.apache.maven.mercury.crypto.pgp;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import org.apache.maven.mercury.crypto.api.StreamObserverException;
+import org.apache.maven.mercury.crypto.api.StreamVerifierAttributes;
+import org.apache.maven.mercury.crypto.api.StreamVerifierException;
+import org.bouncycastle.openpgp.PGPPublicKey;
+import org.bouncycastle.openpgp.PGPSecretKey;
+import org.bouncycastle.openpgp.PGPSecretKeyRing;
+
+import junit.framework.TestCase;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class PgpStreamVerifierTest
+    extends TestCase
+{
+  private static final String keyId   = "0EDB5D91141BC4F2";
+
+  private static final String secretKeyFile = "/secring.gpg";
+  private static final String secretKeyPass = "testKey82";
+
+  private static final String publicKeyFile = "/pubring.gpg";
+  
+  private PGPSecretKeyRing secretKeyRing;
+  private PGPSecretKey secretKey;
+  private PGPPublicKey publicKey;
+  
+  PgpStreamVerifierFactory svf;
+  
+  PgpStreamVerifier sv;
+  
+
+  protected void setUp()
+      throws Exception
+  {
+    InputStream in = getClass().getResourceAsStream( secretKeyFile );
+    assertNotNull( in );
+    
+    secretKeyRing = PgpHelper.readKeyRing( in, keyId );
+    assertNotNull( secretKeyRing );
+    
+    secretKey = secretKeyRing.getSecretKey( Long.parseLong( keyId, 16 ) );
+    publicKey = secretKeyRing.getPublicKey();
+    
+    StreamVerifierAttributes attributes = new StreamVerifierAttributes(PgpStreamVerifierFactory.DEFAULT_EXTENSION, true, true);
+    
+    InputStream is = getClass().getResourceAsStream( publicKeyFile );
+    svf = new PgpStreamVerifierFactory( attributes, is );
+    is.close();
+    
+    is = getClass().getResourceAsStream( secretKeyFile );
+    svf.init( is, keyId, secretKeyPass );
+    is.close();
+  }
+
+  protected void tearDown()
+      throws Exception
+  {
+    super.tearDown();
+  }
+  //-------------------------------------------------------------------------------------------------
+  public void testGenerateSignature()
+  throws IOException, StreamObserverException
+  {
+    PgpStreamVerifier sv = (PgpStreamVerifier)svf.newInstance();
+    InputStream in = getClass().getResourceAsStream( "/file.gif" );
+    
+    int b;
+    while( (b = in.read()) != -1 )
+      sv.byteReady( b );
+    
+    String sig = sv.getSignature();
+    
+    assertNotNull( sig );
+    
+    assertTrue( sig.length() > 10 );
+    
+//    System.out.println("Signature is \n"+sig+"\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
+  }
+  //-------------------------------------------------------------------------------------------------
+  public void testVerifySignature()
+  throws IOException, StreamObserverException
+  {
+    PgpStreamVerifier sv = (PgpStreamVerifier)svf.newInstance();
+
+    InputStream in = getClass().getResourceAsStream( "/file.gif" );
+    String sig = PgpHelper.streamToString( getClass().getResourceAsStream( "/file.gif.asc" ) );
+    
+    sv.initSignature( sig );
+    
+    int b;
+    while( (b = in.read()) != -1 )
+      sv.byteReady( b );
+    
+    boolean verified = sv.verifySignature();
+    
+    assertTrue( verified );
+    
+    System.out.println("BouncyCastle Signature is "+verified);
+  }
+  //-------------------------------------------------------------------------------------------------
+  public void testVerifyExternalSignature()
+  throws IOException, StreamObserverException
+  {
+    PgpStreamVerifier sv = (PgpStreamVerifier)svf.newInstance();
+
+    InputStream in = getClass().getResourceAsStream( "/file.gif" );
+    String sig = PgpHelper.streamToString( getClass().getResourceAsStream( "/file.gif.asc.external" ) );
+    
+    sv.initSignature( sig );
+    
+    int b;
+    while( (b = in.read()) != -1 )
+      sv.byteReady( b );
+    
+    boolean verified = sv.verifySignature();
+    
+    assertTrue( verified );
+    
+    System.out.println("3rd Party Signature is "+verified);
+  }
+  //-------------------------------------------------------------------------------------------------
+}