diff --git a/.gitmodules b/.gitmodules index c97560b..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "vendor/pycrypto"] - path = vendor/pycrypto - url = git://github.com/Legrandin/pycrypto.git diff --git a/README.md b/README.md index 114eab8..52a8867 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The JWS spec reserves several algorithms for cryptographic signing. Out of the 9 * HS512 – HMAC using SHA-512 hash algorithm -**RSA** – requires special version of pycrypto, read below +**RSA** – requires pycrypto >= 2.5: ``pip install pycrypto`` * RS256 – RSA using SHA-256 hash algorithm @@ -34,12 +34,7 @@ There is also a mechanism for extending functionality by adding your own algorithms without cracking open the whole codebase. See the advanced usage section for an example. -NOTE: you must use the version of pycrypto submoduled to -``vendor/pycrypto`` to get RSA256 support. However if you don't ever plan on using -RSA, you don't have to worry about it – all crypto libraries are lazily loaded -so you won't even notice it's not there. - -If you want to know why RSA support is limited, read this: https://github.com/brianlovesdata/python-jws/blob/master/jws/algos.py#L42 +For RSA and ECDSA, all crypto libraries are lazily loaded so you won't need the dependencies unless you try to use the functionality. Usage ----- diff --git a/README.txt b/README.txt index 143fb3b..52a8867 100644 --- a/README.txt +++ b/README.txt @@ -4,8 +4,7 @@ A Python implementation of [JSON Web Signatures draft 02](http://self-issued.inf Installing ---------- - $ git://github.com/brianlovesdata/python-jws.git - $ python setup.py install + $ pip install jws @@ -21,7 +20,7 @@ The JWS spec reserves several algorithms for cryptographic signing. Out of the 9 * HS512 – HMAC using SHA-512 hash algorithm -**RSA** – requires special version of pycrypto, read below +**RSA** – requires pycrypto >= 2.5: ``pip install pycrypto`` * RS256 – RSA using SHA-256 hash algorithm @@ -35,12 +34,7 @@ There is also a mechanism for extending functionality by adding your own algorithms without cracking open the whole codebase. See the advanced usage section for an example. -NOTE: you must use the version of pycrypto submoduled to -``vendor/pycrypto`` to get RSA256 support. However if you don't ever plan on using -RSA, you don't have to worry about it – all crypto libraries are lazily loaded -so you won't even notice it's not there. - -If you want to know why RSA support is limited, read this: https://github.com/brianlovesdata/python-jws/blob/master/jws/algos.py#L42 +For RSA and ECDSA, all crypto libraries are lazily loaded so you won't need the dependencies unless you try to use the functionality. Usage ----- @@ -116,11 +110,11 @@ Other Stuff --------- Check out -https://github.com/brianlovesdata/python-jws/blob/master/examples/minijwt.py +https://github.com/brianloveswords/python-jws/blob/master/examples/minijwt.py for a 14-line implemention of JWT. See -https://github.com/brianlovesdata/python-jws/blob/master/examples/ragecrypto.py +https://github.com/brianloveswords/python-jws/blob/master/examples/ragecrypto.py for a rage-comic inspired cryptography extension. TODO diff --git a/jws/algos.py b/jws/algos.py index dae1498..fa389c1 100644 --- a/jws/algos.py +++ b/jws/algos.py @@ -43,24 +43,8 @@ class RSABase(HasherBase): """ Support for RSA signing. - The ``Crypto`` package is required. However... + The ``Crypto`` package >= 2.5 is required. - NOTE: THIS ALGORITHM IS CRIPPLED AND INCOMPLETE - - Section 7.2 of the specification (found at - http://self-issued.info/docs/draft-jones-json-web-signature.html) - describes the algorithm for creating a JWS with RSA. It is mandatory to - use RSASSA-PKCS1-V1_5-SIGN and either SHA256, 385 or 512. - - Problem 1: The Crypto library doesn't currently support PKCS1-V1_5. There - is a fork that does have support: - - https://github.com/Legrandin/pycrypto/tree/pkcs1 - - Problem 2: The PKCS signing method requires a Crypto.Hash class. - Crypto.Hash doesn't yet have support anything above SHA256. - - Bottom line, you should probably use ECDSA instead. """ supported_bits = (256,384,512,) #:Seems to worka > 256 diff --git a/vendor/pycrypto b/vendor/pycrypto deleted file mode 160000 index a2ef0a2..0000000 --- a/vendor/pycrypto +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a2ef0a2bde6f226c458dbf0c218e8fa317f7da59