+++ /dev/null
- RSA Sample Code Info
- last update 4/24/02 dmitch
-
-Introduction
-------------
-This directory contains a program which demonstrates how to
-write code associated with the RSA Public Key Cryptosystem using
-the CDSA API. One command-line executable program, called rsatool,
-currently resides here.
-
-Building
---------
-
-See the README in the parent directory (CDSA_Examples) for
-information on building this program.
-
-Running rsatool
----------------
-
-Rsatool is a UNIX command-line program which operates on files.
-It can generate key pairs (storing them in files), encrypt a file
-(placing the result in another file), decrypt, sign a file (placing
-the signature in another file), and verify signatures.
-
-Please note that this type of operation, in which private keys
-are stored in files which anyone can read, is certainly not
-recommended security procedure; the purpose of this tool is to
-demonstrate the use of the CDSA API.
-
-To get a full list of rsatool's command-line options, just run it
-with no arguments:
-
-localhost> rsatool
-usage: ./rsatool op [options]
- op:
- g generate key pair
- e encrypt
- d decrypt
- s sign
- v verify
- S SHA-1 digest
- M MD5 digest
- options:
- k=keyfileBase keys are keyFileBase_pub.der, keyFileBase_priv.der)
- p=plainFile
- c=cipherFile
- s=sigfile
- b=keySizeInBits (default 512)
- w (swap key class)
- r (raw sign/verify)
- P (no padding)
- a=alg d=DSA r=RSA, e=ECDSA, default = RSA
-localhost>
-
-
-Some examples:
---------------
-
-To perform any operations using RSA, one must first have a key pair.
-You generate them like so:
-
-localhost> rsatool g k=mykey b=1024
-...wrote 140 bytes to mykey_pub.der
-...wrote 636 bytes to mykey_priv.der
-localhostl>
-
-This generates a 1024-bit key pair, places the public key
-in mykey_pub.der, and the private key in mykey_priv.der.
-
-Now, say you want to encrypt a file. You encrypt with a public key.
-So first we create a file to encrypt:
-
-localhost:> cat > plaintext
-this is what we will encrypt
-localhostl>
-
-Now we encrypt it, placing the result in ciphertext:
-
-localhost> rsatool e k=mykey p=plaintext c=ciphertext
-...wrote 128 bytes to ciphertext
-localhost>
-
-The result looks like this:
-
-localhost> hexdump ciphertext
-0000000 8272 4ff9 d7ab 8ff0 3dee 543d 3f36 3d89
-0000010 ef80 f958 3b4f 1be1 bde8 6557 c215 9728
-0000020 4262 0c6a b81b 5782 444d 225c db3e 17d7
-0000030 7079 d3af 7e1e c215 2b14 bf35 20f7 ed33
-0000040 f311 6258 fd85 6679 e0bb ae33 4b26 c1f8
-0000050 4f33 ac24 1972 e048 915c 8386 5fc3 7f56
-0000060 e7b3 9b4a ad6b a192 84c3 fa6e 25ba 91a0
-0000070 05ef fe42 ebba 0290 99b1 5cc9 5e36 7954
-0000080
-localhost>
-
-We decrypt it like so:
-
-localhost> rsatool d k=mykey p=recovered c=ciphertext
-...wrote 29 bytes to recovered
-localhost>
-
-Yielding:
-
-localhost> cat recovered
-this is what we will encrypt
-localhost>
-
-To generate a digital signature, putting the signature in sigfile:
-
-localhost> rsatool s k=mykey p=plaintext s=sigfile
-...wrote 128 bytes to sigfile
-localhost>
-
-To verify the signature:
-
-localhost> rsatool v k=mykey p=plaintext s=sigfile
-...signature verifies OK
-localhost>
-
-Note what happens if we specify a file other than 'plaintext' to
-verify with plaintext's signature:
-
-localhost> rsatool v k=mykey p=ciphertext s=sigfile
-CSSM_VerifyData: CSP_VERIFY_FAILED
-sigVerify: CSP_VERIFY_FAILED
-localhost>