aboutsummaryrefslogtreecommitdiff
path: root/doc/intro.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/intro.rst')
-rw-r--r--doc/intro.rst38
1 files changed, 38 insertions, 0 deletions
diff --git a/doc/intro.rst b/doc/intro.rst
new file mode 100644
index 0000000..e689bde
--- /dev/null
+++ b/doc/intro.rst
@@ -0,0 +1,38 @@
+Introduction & history
+======================
+
+Python-RSA's history starts in 2006. As a student assignment for the
+University of Amsterdam we wrote a RSA implementation. We chose Python
+for various reasons; one of the most important reasons was the
+`unlimited precision integer`_ support.
+
+.. _`unlimited precision integer`:
+ https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex
+
+It started out as just a module for calculating large primes, and RSA
+encryption, decryption, signing and verification using those large
+numbers. It also included generating public and private keys. There
+was no functionality for working with byte sequences (such as files)
+yet.
+
+Version 1.0 did include support for byte sequences, but quite clunky,
+mostly because it didn't support 0-bytes and thus was unsuitable for
+binary messages.
+
+Version 2.0 introduced a lot of improvements by Barry Mead, but still
+wasn't compatible with other RSA implementations and used no random
+padding.
+
+Version 3.0 introduced PKCS#1 v1.5 functionality, which resulted in
+compatibility with OpenSSL and many others implementing the same
+standard. Random padding was introduced that considerably increased
+security, which also resulted in the ability to encrypt and decrypt
+binary messages.
+
+Key generation was also improved in version 3.0, ensuring that you
+really get the number of bits you asked for. At the same time key
+generation speed was greatly improved. The ability to save and load
+public and private keys in PEM and DER format as also added.
+
+
+