The Linux bash script at the end of this message might be useful for anyone who wants to hack RSA or DH crypto in Lisp. The script converts an OpenSSL .pem file into a .lsp (Lisp) file. YMMV... cat key512.pem -----BEGIN RSA PRIVATE KEY----- MIIBOwIBAAJBALgG3dbTsWaMMd6l5KYLCVpP4O0xZ9OcMqWJHvPQ050BaFdgLRsj DOECyWb1HzWJ25E5EmwVV7xv6RTe/JzVcscCAwEAAQJBAKpFQDErQfMeOG5HlF3F zGuRiQ4uLmDvHzVmwArb51BWkQK/rYs2FRNdHwFVbECzn2FmakjokX17qJ4NiFFO QZECIQDjAnODewWyLr77b8QIFLz+Apo0tPcxWe9AW2frlsEp/QIhAM+HMce/j13H 1DANadMFnNAYAaYEHGRaDd5b722AnjkTAiAYQPjKgWhYYzowbv6Ixn5yvSBwpS0L 7snrHFj8CL1WmQIhALTx1e+qEKDeOR5ks55wyFeQdu9/qhm9g1Ybptk9SbfNAiBK 1COirtJRWGD4cWY4doI+qpR1/kGZ/w6mo6GTaQc4Vg== -----END RSA PRIVATE KEY----- cat key512.pem | ./rsa2lsp.sh ;;; RSA Private-Key (512 bit, 2 primes) (setq modulus #x00b806ddd6d3b1668c31dea5e4a60b095a4fe0ed3167d39c32a5891ef3d0d39d016857602d1b230ce102c966f51f3589db9139126c1557bc6fe914defc9cd572c7) (setq publicExponent 65537) (setq privateExponent #x00aa4540312b41f31e386e47945dc5cc6b91890e2e2e60ef1f3566c00adbe750569102bfad8b3615135d1f01556c40b39f61666a48e8917d7ba89e0d88514e4191) (setq prime1 #x00e30273837b05b22ebefb6fc40814bcfe029a34b4f73159ef405b67eb96c129fd) (setq prime2 #x00cf8731c7bf8f5dc7d4300d69d3059cd01801a6041c645a0dde5bef6d809e3913) (setq exponent1 #x1840f8ca816858633a306efe88c67e72bd2070a52d0beec9eb1c58fc08bd5699) (setq exponent2 #x00b4f1d5efaa10a0de391e64b39e70c8579076ef7faa19bd83561ba6d93d49b7cd) (setq coefficient #x4ad423a2aed2515860f871663876823eaa9475fe4199ff0ea6a3a19369073856) cat dhkey1.pem -----BEGIN PRIVATE KEY----- MFwCAQAwMwYJKoZIhvcNAQMBMCYCIQDOxpswAa6BOww02q1Y3OdzFblZJkIiQoxF FbUZgNHliwIBAgQiAiBCXWiQd0cpVXcNKj6j+knJWnLX6mbx/9o8oa99XPr4fA== -----END PRIVATE KEY----- cat dhkey1.pem | ./rsa2lsp.sh ;;; DH Private-Key (256 bit) (setq private-key #x425d689077472955770d2a3ea3fa49c95a72d7ea66f1ffda3ca1af7d5cfaf87c) (setq public-key #x4ac901eff14eb826b1c01d17408913f73fd55a30eb6d98d110f05ec07424a28a) (setq prime #x00cec69b3001ae813b0c34daad58dce77315b959264222428c4515b51980d1e58b) (setq generator 2) cat rsa2lsp.sh # Use "sed" to transform .pem keys into something readable by Common Lisp. openssl pkey -text -noout | \ tr '\n' '|' | \ sed 's/$/)\n/g' | \ sed 's/[[:space:]]*(0x10001)[[:space:]]*//g' | \ sed 's/[[:space:]]*(0x2)[[:space:]]*//g' | \ sed 's/|[[:space:]]*/|/g' | \ sed 's/RSA/\;\;\; RSA/g' | \ sed 's/DH/\;\;\; DH/g' | \ sed 's/|modulus:|/\n(setq modulus #x/g' | \ sed 's/|private-key:|/\n(setq private-key #x/g' | \ sed 's/|public-key:|/)\n(setq public-key #x/g' | \ sed 's/|prime:|/)\n(setq prime #x/g' | \ sed 's/|publicExponent: /)\n(setq publicExponent /g' | \ sed 's/|generator: /)\n(setq generator /g' | \ sed 's/|privateExponent:|/)\n(setq privateExponent #x/g' | \ sed 's/|prime1:|/)\n(setq prime1 #x/g' | \ sed 's/|prime2:|/)\n(setq prime2 #x/g' | \ sed 's/|exponent1:|/)\n(setq exponent1 #x/g' | \ sed 's/|exponent2:|/)\n(setq exponent2 #x/g' | \ sed 's/|coefficient:|/)\n(setq coefficient #x/g' | \ sed 's/|//g' | \ sed 's/://g'