GithubHelp home page GithubHelp logo

grendel's People

Contributors

codahale avatar emerose avatar precipice avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

grendel's Issues

Build failing on OS X 10.8

Hi There,

Apologies if I'm posting in the wrong place.

I'm trying to install grendel on OS X following the GETTING-STARTED.md file. I have installed the latest Java JDK, which on OS X put's JAVA_HOME in /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home and added the Bouncy Castle .jar to /Library/Java/Extentions as described here.

When I clone grendel, and run mvn clean package I get the below output.

I'm not really sure where to begin with this issue - any help is much appreciated! :)

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Grendel 0.4.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: http://repository.jboss.org/maven2/com/wideplay/warp/warp-persist/2.0-SNAPSHOT/maven-metadata.xml

[WARNING] Could not transfer metadata com.wideplay.warp:warp-persist:2.0-SNAPSHOT/maven-metadata.xml from/to jboss (http://repository.jboss.org/maven2): Access denied to: http://repository.jboss.org/maven2/com/wideplay/warp/warp-persist/2.0-SNAPSHOT/maven-metadata.xml, ReasonPhrase:Forbidden.
[WARNING] Failure to transfer com.wideplay.warp:warp-persist:2.0-SNAPSHOT/maven-metadata.xml from http://repository.jboss.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of jboss has elapsed or updates are forced. Original error: Could not transfer metadata com.wideplay.warp:warp-persist:2.0-SNAPSHOT/maven-metadata.xml from/to jboss (http://repository.jboss.org/maven2): Access denied to: http://repository.jboss.org/maven2/com/wideplay/warp/warp-persist/2.0-SNAPSHOT/maven-metadata.xml, ReasonPhrase:Forbidden.
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ grendel ---
[INFO] Deleting /Users/fred/Library/grendel/target
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ grendel ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:2.0.2:compile (default-compile) @ grendel ---
[INFO] Compiling 53 source files to /Users/fred/Library/grendel/target/classes
[INFO] 
[INFO] --- maven-resources-plugin:2.3:testResources (default-testResources) @ grendel ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] 
[INFO] --- maven-compiler-plugin:2.0.2:testCompile (default-testCompile) @ grendel ---
[INFO] Compiling 46 source files to /Users/fred/Library/grendel/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ grendel ---
[INFO] Surefire report directory: /Users/fred/Library/grendel/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.wesabe.grendel.auth.tests.BasicAuthProviderTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.273 sec
Running com.wesabe.grendel.auth.tests.CredentialsTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.195 sec
Running com.wesabe.grendel.auth.tests.SessionTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.wesabe.grendel.entities.dao.tests.DocumentDAOTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.194 sec
Running com.wesabe.grendel.entities.dao.tests.UserDAOTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec
Running com.wesabe.grendel.entities.tests.DocumentTest
Tests run: 15, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.196 sec <<< FAILURE!
Running com.wesabe.grendel.entities.tests.UserTest
Tests run: 7, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.013 sec <<< FAILURE!
Running com.wesabe.grendel.modules.tests.SecureRandomProviderTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.235 sec
Running com.wesabe.grendel.openpgp.tests.AsymmetricAlgorithmTest
Tests run: 26, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.033 sec
Running com.wesabe.grendel.openpgp.tests.CompressionAlgorithmTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.009 sec
Running com.wesabe.grendel.openpgp.tests.CryptographicExceptionTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Running com.wesabe.grendel.openpgp.tests.HashAlgorithmTest
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.03 sec
Running com.wesabe.grendel.openpgp.tests.KeyFlagTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.012 sec
Running com.wesabe.grendel.openpgp.tests.KeySetGeneratorTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.852 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.KeySetTest
Tests run: 5, Failures: 0, Errors: 5, Skipped: 0, Time elapsed: 0.007 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.KeySignatureTest
Tests run: 9, Failures: 0, Errors: 9, Skipped: 0, Time elapsed: 0.015 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.MasterKeyTest
Tests run: 16, Failures: 0, Errors: 16, Skipped: 0, Time elapsed: 0.025 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.MessageReaderTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.001 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.MessageWriterTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.PregeneratedDHParameterSpecTest
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.468 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.PregeneratedDSAParameterSpecTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.047 sec
Running com.wesabe.grendel.openpgp.tests.SignatureTypeTest
Tests run: 30, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.034 sec
Running com.wesabe.grendel.openpgp.tests.SubKeyTest
Tests run: 11, Failures: 0, Errors: 11, Skipped: 0, Time elapsed: 0.021 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.SymmetricAlgorithmTest
Tests run: 24, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.019 sec
Running com.wesabe.grendel.openpgp.tests.UnlockedKeySetTest
Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 0.003 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.UnlockedMasterKeyTest
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.002 sec <<< FAILURE!
Running com.wesabe.grendel.openpgp.tests.UnlockedSubKeyTest
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 0.002 sec <<< FAILURE!
Running com.wesabe.grendel.representations.tests.CreateUserRepresentationTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.125 sec
Running com.wesabe.grendel.representations.tests.DocumentListRepresentationTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 sec
Running com.wesabe.grendel.representations.tests.LinkedDocumentListRepresentationTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec
Running com.wesabe.grendel.representations.tests.LinkListRepresentationTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.007 sec
Running com.wesabe.grendel.representations.tests.UpdateUserRepresentationTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.wesabe.grendel.representations.tests.UserInfoRepresentationTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.013 sec
Running com.wesabe.grendel.representations.tests.UserListRepresentationTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.wesabe.grendel.representations.tests.ValidationExceptionTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.wesabe.grendel.resources.tests.DocumentResourceTest
Tests run: 13, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.124 sec
Running com.wesabe.grendel.resources.tests.DocumentsResourceTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec
Running com.wesabe.grendel.resources.tests.LinkedDocumentResourceTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.033 sec
Running com.wesabe.grendel.resources.tests.LinkedDocumentsResourceTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec
Running com.wesabe.grendel.resources.tests.LinkResourceTest
Tests run: 8, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.032 sec
Running com.wesabe.grendel.resources.tests.LinksResourceTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.wesabe.grendel.resources.tests.UserResourceTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 sec
Running com.wesabe.grendel.resources.tests.UsersResourceTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.049 sec
Running com.wesabe.grendel.util.tests.HashCodeTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.wesabe.grendel.util.tests.IntegerEquivalentsTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.009 sec
Running com.wesabe.grendel.util.tests.IteratorsTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec

Results :

Tests in error: 
  itCanDecryptIt(com.wesabe.grendel.entities.tests.DocumentTest$Decrypting_A_Document_Body): org/bouncycastle/asn1/DEREncodable
  itStoresItAsAnEncryptedOpenPGPMessage(com.wesabe.grendel.entities.tests.DocumentTest$Encrypting_A_Document_Body): org/bouncycastle/asn1/DEREncodable
  itHasAUserId(com.wesabe.grendel.entities.tests.UserTest$A_User_Loaded_From_The_Database): org/bouncycastle/asn1/DEREncodable
  com.wesabe.grendel.openpgp.tests.KeySetGeneratorTest$A_Freshly_Generated_KeySet: org/bouncycastle/asn1/DEREncodable
  itHasAMasterKey(com.wesabe.grendel.openpgp.tests.KeySetTest$A_Key_Set): org/bouncycastle/asn1/DEREncodable
  itHasASubKey(com.wesabe.grendel.openpgp.tests.KeySetTest$A_Key_Set): org/bouncycastle/asn1/DEREncodable
  itHasAUserID(com.wesabe.grendel.openpgp.tests.KeySetTest$A_Key_Set): org/bouncycastle/asn1/DEREncodable
  itSerializesItselfToAStream(com.wesabe.grendel.openpgp.tests.KeySetTest$A_Key_Set): org/bouncycastle/asn1/DEREncodable
  itIsHumanReadable(com.wesabe.grendel.openpgp.tests.KeySetTest$A_Key_Set): org/bouncycastle/asn1/DEREncodable
  itHasACreationTimestamp(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasAKeyID(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itIsAPositiveCertification(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasAHashAlgorithm(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasAKeyAlgorithm(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasKeyFlags(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasPreferredSymmetricAlgorithms(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasPreferredCompressionAlgorithms(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itHasPreferredHashAlgorithms(com.wesabe.grendel.openpgp.tests.KeySignatureTest$A_Self_Signature): org/bouncycastle/asn1/DEREncodable
  itReturnsAnUnlockedMasterKeyForTheCorrectPassphrase(com.wesabe.grendel.openpgp.tests.MasterKeyTest$Unlocking_A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itThrowsACryptographicExceptionForTheIncorrectPassphrase(com.wesabe.grendel.openpgp.tests.MasterKeyTest$Unlocking_A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itCannotBeLoadedAsAMasterKey(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasACreationTimestamp(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasAUserID(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasKeyFlags(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasPreferredSymmetricAlgorithms(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasPreferredCompressionAlgorithms(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasPreferredHashAlgorithms(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasAnID(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasAHumanReadableID(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itIsAnRSAKey(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itIs2048BitsLong(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itCannotEncryptData(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itCanSignData(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itIsHumanReadable(com.wesabe.grendel.openpgp.tests.MasterKeyTest$A_Master_Key): org/bouncycastle/asn1/DEREncodable
  itReadsAnEncryptedMessage(com.wesabe.grendel.openpgp.tests.MessageReaderTest$Reading_An_Encrypted_Message): org/bouncycastle/asn1/DEREncodable
  itIsDecryptableByMessageReader(com.wesabe.grendel.openpgp.tests.MessageWriterTest$Encrypting_A_Message): org/bouncycastle/asn1/DEREncodable
  itCanBeUsedToGenerateElGamalKeyPairs(com.wesabe.grendel.openpgp.tests.PregeneratedDHParameterSpecTest$A_Pregenerated_DHParameterSpec): Illegal key size or default parameters
  itHasACreationTimestamp(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itCannotSignData(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasAMasterKey(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasAUserID(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasPreferredSymmetricAlgorithms(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasPreferredCompressionAlgorithms(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasPreferredHashAlgorithms(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasAnID(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itIsAnRSAKey(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itIs2048BitsLong(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itCanEncryptData(com.wesabe.grendel.openpgp.tests.SubKeyTest$A_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasAnUnlockedSubKey(com.wesabe.grendel.openpgp.tests.UnlockedKeySetTest$An_Unlocked_Key_Set): org/bouncycastle/asn1/DEREncodable
  itHasAnUnlockedMasterKey(com.wesabe.grendel.openpgp.tests.UnlockedKeySetTest$An_Unlocked_Key_Set): org/bouncycastle/asn1/DEREncodable
  itCanRelockTheKeySetWithADifferentPassphrase(com.wesabe.grendel.openpgp.tests.UnlockedKeySetTest$An_Unlocked_Key_Set): org/bouncycastle/asn1/DEREncodable
  itReturnsItselfWhenUnlocked(com.wesabe.grendel.openpgp.tests.UnlockedMasterKeyTest$An_Unlocked_Master_Key): org/bouncycastle/asn1/DEREncodable
  itHasAPrivateKey(com.wesabe.grendel.openpgp.tests.UnlockedMasterKeyTest$An_Unlocked_Master_Key): org/bouncycastle/asn1/DEREncodable
  itReturnsItselfWhenUnlocked(com.wesabe.grendel.openpgp.tests.UnlockedSubKeyTest$An_Unlocked_Sub_Key): org/bouncycastle/asn1/DEREncodable
  itHasAPrivateKey(com.wesabe.grendel.openpgp.tests.UnlockedSubKeyTest$An_Unlocked_Sub_Key): org/bouncycastle/asn1/DEREncodable

Tests run: 322, Failures: 0, Errors: 55, Skipped: 1

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.710s
[INFO] Finished at: Fri Sep 13 17:18:00 PDT 2013
[INFO] Final Memory: 23M/233M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.10:test (default-test) on project grendel: There are test failures.
[ERROR] 
[ERROR] Please refer to /Users/fred/Library/grendel/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Grendel sessions

It would be good to be able to have a session handle that would allow access to Grendel without having to store the plaintext password during the session. For instance, let me create a session on user login, use that session during the user's session on the site, and destroy it when they log out.

Generated schema is incorrect

Following the instructions in GETTING-STARTED, I ran:
java -jar target/grendel-${VERSION}.jar schema -c grendel.properties > setup-grendel.sql
but the generated SQL starts with:
alter table documents drop foreign key FK_DOCUMENT_TO_OWNER;
alter table links drop foreign key FK_LINK_TO_USER;
alter table links drop foreign key FK_LINK_TO_DOCUMENT;
and since those tables don't exist yet, mysql barfs when you try to run the script.

I've been poking around the source to try to figure out how to fix this, and I'm not seeing how it's being generated. Is Shore doing it?

Zero-out sensitive data after use

The current Grendel code uses ordinary char[] and byte[] arrays to store secrets, including passphrases and documents. (I haven't investigated private key data yet…) These are cleared from memory only at the whim of the GC algorithm, which can mean that sensitive data remains in cleartext on the server well after it is needed.

This isn't a huge deal, but given Grendel's threat model — it's designed to protect secrets while not in use, even against attackers with access to local storage — it does represent a threat. To protect against it, the array objects' lifespan should be kept as short as possible, and they should be explicitly overwritten when no longer needed. Some Java sources explicitly recommend this practice — a quick search turns up the following:

http://java.sun.com/javase/6/docs/api/java/io/Console.html
http://java.sun.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#PBEEx

However, I wouldn't be surprised if the Java world is less than consistent on this point. (And indeed: more searching turns up http://java.sun.com/security/seccodeguide.html#0-6b which provides some less-than-helpful advice on the topic. "Reduced effectiveness" is still more effectiveness than no effectiveness, though.)

-sq

Signature validation error when jarfile is run

The README.md file says:

For help, simply run:

java -jar target/grendel-${VERSION}.jar

(Replace ${VERSION} with whatever version you're running.)

When I run that command I get an error:

localhost:grendel marc$ java -jar target/grendel-0.1.1.jar 
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:221)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:176)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:277)
    at java.util.jar.JarVerifier.update(JarVerifier.java:188)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:321)
    at java.util.jar.JarFile.getInputStream(JarFile.java:386)
    at sun.misc.URLClassPath$JarLoader$2.getInputStream(URLClassPath.java:689)
    at sun.misc.Resource.cachedInputStream(Resource.java:61)
    at sun.misc.Resource.getByteBuffer(Resource.java:144)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:249)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:315)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:330)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:250)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:398)

error when building Grendel

I followed the steps in Getting Started With Grendel and when I was building Grendel (in step 3), one failure test occurs, so that no JAR file is generated in target file. Could anyone give some advise on how to fix this problem?

this is the information about failure test in the file target/surefire-reports:
Test set: com.wesabe.grendel.openpgp.tests.MessageReaderTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.046 sec <<< FAILURE!
itReadsAnEncryptedMessage(com.wesabe.grendel.openpgp.tests.MessageReaderTest$Reading_An_Encrypted_Message) Time elapsed: 0.042 sec <<< FAILURE!
java.lang.AssertionError: expected:<[84, 104, 105, 115, 32, 105, 115, 32, 98, 97, 115, 105, 99, 97, 108, 108, 121, 32, 97, 32, 116, 101, 115, 116, 46, 13, 10, 13, 10, 87, 104, 97, 116, 32, 100, 111, 32, 121, 111, 117, 32, 116, 104, 105, 110, 107, 63]> but was:<[84, 104, 105, 115, 32, 105, 115, 32, 98, 97, 115, 105, 99, 97, 108, 108, 121, 32, 97, 32, 116, 101, 115, 116, 46, 10, 10, 87, 104, 97, 116, 32, 100, 111, 32, 121, 111, 117, 32, 116, 104, 105, 110, 107, 63]>
at org.fest.assertions.Fail.failure(Fail.java:206)
at org.fest.assertions.Assert.failure(Assert.java:141)
at org.fest.assertions.ByteArrayAssert.isEqualTo(ByteArrayAssert.java:197)
at com.wesabe.grendel.openpgp.tests.MessageReaderTest$Reading_An_Encrypted_Message.itReadsAnEncryptedMessage(MessageReaderTest.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:345)
at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:1009)

thanks in advance!

Running ./examples/create-user.sh throws PGP errors

Using the 0.1.2 build, I'm seeing a big stack trace when I run the example script:


localhost:examples marc$ ./create-user.sh marc testpw
* About to connect() to localhost port 8080 (#0)
*   Trying 127.0.0.1... connected
* Connected to localhost (127.0.0.1) port 8080 (#0)
> POST /users/ HTTP/1.1
> User-Agent: curl/7.17.1 (i386-apple-darwin9.1.0) libcurl/7.17.1 OpenSSL/0.9.8e zlib/1.2.3
> Host: localhost:8080
> Accept: */*
> Content-Type: application/json
> Content-Length: 33
> 
< HTTP/1.1 500 com.wesabe.grendel.openpgp.CryptographicException: org.bouncycastle.openpgp.PGPException: Exception creating cipher
< Content-Type: text/html;charset=ISO-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 27912
< 



<title>Error 500 com.wesabe.grendel.openpgp.CryptographicException: org.bouncycastle.openpgp.PGPException: Exception creating cipher</title>

HTTP ERROR 500

Problem accessing /users/. Reason:

    com.wesabe.grendel.openpgp.CryptographicException: org.bouncycastle.openpgp.PGPException: Exception creating cipher

Caused by:

com.sun.jersey.api.container.MappableContainerException: com.wesabe.grendel.openpgp.CryptographicException: org.bouncycastle.openpgp.PGPException: Exception creating cipher
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:74)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:756)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:721)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:712)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:340)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:452)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:633)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
at com.wideplay.warp.persist.SessionFilter$2.run(SessionFilter.java:68)
at com.wideplay.warp.util.Lifecycles.failEarlyAndLeaveNoOneBehind(Lifecycles.java:29)
at com.wideplay.warp.persist.SessionFilter.doFilter(SessionFilter.java:77)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:931)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
at org.eclipse.jetty.server.Server.handle(Server.java:334)
at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209)
at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
at java.lang.Thread.run(Thread.java:637)

Caused by: com.wesabe.grendel.openpgp.CryptographicException: org.bouncycastle.openpgp.PGPException: Exception creating cipher
at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:122)
at com.wesabe.grendel.resources.UsersResource.create(UsersResource.java:75)
at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.CGLIB$create$1(<generated>)
at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb$$FastClassByGuice$$41eb99b9.invoke(<generated>)
at com.google.inject.internal.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
at com.wideplay.warp.hibernate.HibernateLocalTxnInterceptor.invoke(HibernateLocalTxnInterceptor.java:70)
at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
at com.google.inject.InterceptorStackCallback.intercept(InterceptorStackCallback.java:44)
at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.create(<generated>)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
... 33 more
Caused by: org.bouncycastle.openpgp.PGPException: Exception creating cipher
at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:95)
... 48 more
Caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
at javax.crypto.Cipher.getInstance(DashoA13*..)
... 53 more
Caused by: java.util.jar.JarException: Cannot parse file:/Users/marc/wesabe/git/grendel/target/grendel-0.1.2.jar
at javax.crypto.SunJCE_c.a(DashoA13*..)
at javax.crypto.SunJCE_b.b(DashoA13*..)
at javax.crypto.SunJCE_b.a(DashoA13*..)
... 54 more

Caused by:

com.wesabe.grendel.openpgp.CryptographicException: org.bouncycastle.openpgp.PGPException: Exception creating cipher
    at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:122)
    at com.wesabe.grendel.resources.UsersResource.create(UsersResource.java:75)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.CGLIB$create$1(<generated>)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb$$FastClassByGuice$$41eb99b9.invoke(<generated>)
    at com.google.inject.internal.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.wideplay.warp.hibernate.HibernateLocalTxnInterceptor.invoke(HibernateLocalTxnInterceptor.java:70)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.google.inject.InterceptorStackCallback.intercept(InterceptorStackCallback.java:44)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.create(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:756)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:721)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:712)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:340)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:452)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:633)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
    at com.wideplay.warp.persist.SessionFilter$2.run(SessionFilter.java:68)
    at com.wideplay.warp.util.Lifecycles.failEarlyAndLeaveNoOneBehind(Lifecycles.java:29)
    at com.wideplay.warp.persist.SessionFilter.doFilter(SessionFilter.java:77)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:931)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:334)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
    at java.lang.Thread.run(Thread.java:637)
Caused by: org.bouncycastle.openpgp.PGPException: Exception creating cipher
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:95)
    ... 48 more
Caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
    at javax.crypto.Cipher.getInstance(DashoA13_..)
    ... 53 more
Caused by: java.util.jar.JarException: Cannot parse file:/Users/marc/wesabe/git/grendel/target/grendel-0.1.2.jar
    at javax.crypto.SunJCE_c.a(DashoA13_..)
    at javax.crypto.SunJCE_b.b(DashoA13_..)
    at javax.crypto.SunJCE_b.a(DashoA13_..)
    ... 54 more

Caused by:

org.bouncycastle.openpgp.PGPException: Exception creating cipher
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:95)
    at com.wesabe.grendel.resources.UsersResource.create(UsersResource.java:75)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.CGLIB$create$1(<generated>)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb$$FastClassByGuice$$41eb99b9.invoke(<generated>)
    at com.google.inject.internal.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.wideplay.warp.hibernate.HibernateLocalTxnInterceptor.invoke(HibernateLocalTxnInterceptor.java:70)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.google.inject.InterceptorStackCallback.intercept(InterceptorStackCallback.java:44)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.create(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:756)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:721)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:712)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:340)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:452)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:633)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
    at com.wideplay.warp.persist.SessionFilter$2.run(SessionFilter.java:68)
    at com.wideplay.warp.util.Lifecycles.failEarlyAndLeaveNoOneBehind(Lifecycles.java:29)
    at com.wideplay.warp.persist.SessionFilter.doFilter(SessionFilter.java:77)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:931)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:334)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
    at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
    at javax.crypto.Cipher.getInstance(DashoA13_..)
    ... 53 more
Caused by: java.util.jar.JarException: Cannot parse file:/Users/marc/wesabe/git/grendel/target/grendel-0.1.2.jar
    at javax.crypto.SunJCE_c.a(DashoA13_..)
    at javax.crypto.SunJCE_b.b(DashoA13_..)
    at javax.crypto.SunJCE_b.a(DashoA13_..)
    ... 54 more

Caused by:

java.lang.SecurityException: JCE cannot authenticate the provider BC
    at javax.crypto.Cipher.getInstance(DashoA13_..)
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:95)
    at com.wesabe.grendel.resources.UsersResource.create(UsersResource.java:75)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.CGLIB$create$1(<generated>)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb$$FastClassByGuice$$41eb99b9.invoke(<generated>)
    at com.google.inject.internal.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.wideplay.warp.hibernate.HibernateLocalTxnInterceptor.invoke(HibernateLocalTxnInterceptor.java:70)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.google.inject.InterceptorStackCallback.intercept(InterceptorStackCallback.java:44)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.create(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:756)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:721)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:712)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:340)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:452)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:633)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
    at com.wideplay.warp.persist.SessionFilter$2.run(SessionFilter.java:68)
    at com.wideplay.warp.util.Lifecycles.failEarlyAndLeaveNoOneBehind(Lifecycles.java:29)
    at com.wideplay.warp.persist.SessionFilter.doFilter(SessionFilter.java:77)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:931)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:334)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
    at java.lang.Thread.run(Thread.java:637)
Caused by: java.util.jar.JarException: Cannot parse file:/Users/marc/wesabe/git/grendel/target/grendel-0.1.2.jar
    at javax.crypto.SunJCE_c.a(DashoA13_..)
    at javax.crypto.SunJCE_b.b(DashoA13_..)
    at javax.crypto.SunJCE_b.a(DashoA13_..)
    ... 54 more

Caused by:

java.util.jar.JarException: Cannot parse file:/Users/marc/wesabe/git/grendel/target/grendel-0.1.2.jar
    at javax.crypto.SunJCE_c.a(DashoA13_..)
    at javax.crypto.SunJCE_b.b(DashoA13_..)
    at javax.crypto.SunJCE_b.a(DashoA13_..)
    at javax.crypto.Cipher.getInstance(DashoA13_..)
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPSecretKey.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at org.bouncycastle.openpgp.PGPKeyRingGenerator.<init>(Unknown Source)
    at com.wesabe.grendel.openpgp.KeySetGenerator.generate(KeySetGenerator.java:95)
    at com.wesabe.grendel.resources.UsersResource.create(UsersResource.java:75)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.CGLIB$create$1(<generated>)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb$$FastClassByGuice$$41eb99b9.invoke(<generated>)
    at com.google.inject.internal.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.wideplay.warp.hibernate.HibernateLocalTxnInterceptor.invoke(HibernateLocalTxnInterceptor.java:70)
    at com.google.inject.InterceptorStackCallback$InterceptedMethodInvocation.proceed(InterceptorStackCallback.java:64)
    at com.google.inject.InterceptorStackCallback.intercept(InterceptorStackCallback.java:44)
    at com.wesabe.grendel.resources.UsersResource$$EnhancerByGuice$$9974c4eb.create(<generated>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:175)
    at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
    at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208)
    at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:756)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:721)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:712)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:340)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:452)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:633)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:530)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1216)
    at com.wideplay.warp.persist.SessionFilter$2.run(SessionFilter.java:68)
    at com.wideplay.warp.util.Lifecycles.failEarlyAndLeaveNoOneBehind(Lifecycles.java:29)
    at com.wideplay.warp.persist.SessionFilter.doFilter(SessionFilter.java:77)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1187)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:425)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:931)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:362)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:867)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113)
    at org.eclipse.jetty.server.Server.handle(Server.java:334)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:559)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1007)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:747)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:209)
    at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:406)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:462)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
    at java.lang.Thread.run(Thread.java:637)

Powered by Jetty://



















- Connection #0 to host localhost left intact - Closing connection #0

Large document storage

I wonder if it would be worthwhile to have a way to store larger documents outside of the database -- e.g., PDFs (such as transaction attachments).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.