Index: third_party/gsutil/third_party/rsa/doc/compatibility.rst |
diff --git a/third_party/gsutil/third_party/rsa/doc/compatibility.rst b/third_party/gsutil/third_party/rsa/doc/compatibility.rst |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e6b59a3c99fd28a5b070ab80d1e11734370d2033 |
--- /dev/null |
+++ b/third_party/gsutil/third_party/rsa/doc/compatibility.rst |
@@ -0,0 +1,62 @@ |
+Compatibility with standards |
+================================================== |
+ |
+.. index:: OpenSSL |
+.. index:: compatibility |
+ |
+Python-RSA implements encryption and signatures according to PKCS#1 |
+version 1.5. This makes it compatible with the OpenSSL RSA module. |
+ |
+Keys are stored in PEM or DER format according to PKCS#1 v1.5. Private |
+keys are compatible with OpenSSL. However, OpenSSL uses X.509 for its |
+public keys, which are not supported. |
+ |
+Encryption: |
+ PKCS#1 v1.5 with at least 8 bytes of random padding |
+ |
+Signatures: |
+ PKCS#1 v1.5 using the following hash methods: |
+ MD5, SHA-1, SHA-256, SHA-384, SHA-512 |
+ |
+Private keys: |
+ PKCS#1 v1.5 in PEM and DER format, ASN.1 type RSAPrivateKey |
+ |
+Public keys: |
+ PKCS#1 v1.5 in PEM and DER format, ASN.1 type RSAPublicKey |
+ |
+:ref:`VARBLOCK <bigfiles>` encryption: |
+ Python-RSA only, not compatible with any other known application. |
+ |
+.. _openssl: |
+ |
+Interoperability with OpenSSL |
+-------------------------------------------------- |
+ |
+You can create a 512-bit RSA key in OpenSSL as follows:: |
+ |
+ openssl genrsa -out myprivatekey.pem 512 |
+ |
+To get a Python-RSA-compatible public key from OpenSSL, you need the |
+private key first, then run it through the ``pyrsa-priv2pub`` |
+command:: |
+ |
+ pyrsa-priv2pub -i myprivatekey.pem -o mypublickey.pem |
+ |
+Encryption and decryption is also compatible:: |
+ |
+ $ echo hello there > testfile.txt |
+ $ pyrsa-encrypt -i testfile.txt -o testfile.rsa publickey.pem |
+ $ openssl rsautl -in testfile.rsa -inkey privatekey.pem -decrypt |
+ hello there |
+ |
+Interoperability with PKCS#8 |
+-------------------------------------------------- |
+ |
+The standard PKCS#8 is widely used, and more complex than the PKCS#1 |
+v1.5 supported by Python-RSA. In order to extract a key from the |
+PKCS#8 format you need an external tool such as OpenSSL:: |
+ |
+ openssl rsa -in privatekey-pkcs8.pem -out privatekey.pem |
+ |
+You can then extract the corresponding public key as described above. |
+ |