Cryptography

Eduardo Costa <[email protected]>
Newsgroups gmane.lisp.scheme.bigloo
Message-ID <CAKxnX2LzZ7kUcJguUgtBtNHQowWcfStb6ZEhSriWAQd4UDsGoQ@mail.gmail.com>
I already have sent this report. However, since I was not in the list, I
think that the first posting was refused. Therefore, I am posting it again.

I tried and learn the cryptography tools present in Bigloo. I followed the
steps from the manual carefully. As Maxwell Smart would put it, I used the
old trick of copying and pasting the instructions from the manual. Here is
what I did:

emacs &

From emacs:

M-x shell

~/wrk/crypto$ openssl genrsa -out my_rsa_key.pem 1024
Generating RSA private key, 1024 bit long modulus
..++++++
...........................................................++++++
e is 65537 (0x10001)
~/wrk/crypto$ bigloo
------------------------------------------------------------------------------
Bigloo (4.1a)
,--^,
`a practical Scheme compiler'                                      _ ___/
/|/
Thu Feb 20 08:08:12 CET 2014                                   ,;'( )__, )
'
Inria -- Sophia Antipolis                                     ;;  //
L__.
email: [email protected]                              '   \    /
'
url: http://www-sop.inria.fr/indes/fp/Bigloo                       ^
^
------------------------------------------------------------------------------


1:=> (module rsa-example (library crypto))
#unspecified
1:=> (define *key* (read-pem-key "my_rsa_key.pem"))
(define *public-key* (extract-public-rsa-key *key*))

*key*
1:=> *public-key*
1:=> ;; publish the *public-key*:
(write-pem-key-string *public-key*)
-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgK/BcqMKzd3vaYAF0dfHFPB4VdisbsNPzBtPSMhQ
sAWbgeyVcnvSGx3/TYEGQOVTFrl1qZQ+PRh+rtYOQqtxM5q1p/F8JUzZ5sUWUGx2eznZUAtE3jnt
11VMLtpTGPYvpy2tkg65gpXNwuv/XA/6w6dlJkHCV2AXXlWEY8NaqobdAgMBAAE=
-----END PUBLIC KEY-----

1:=> (define msg-hash (sha1sum "my message"))
(define msg-hash-bignum (octet-string->bignum msg-hash))
msg-hash
1:=> msg-hash-bignum
1:=> (define msg-hash-bignum (octet-string->bignum (string-hex-intern
msg-hash)))
msg-hash-bignum
1:=> (define signature (rsa-sign *key* msg-hash-bignum))
signature
1:=> (rsa-verify *public-key* msg-hash-bignum signature)
#t
1:=> (define encrypted (encrypt 'aes "Cryptography" "my random password"))
encrypted
1:=> (define encrypted-key (rsa-encrypt *public-key* (octet-string->bignum
"my random password")))
encrypted-key
1:=> (define aes-key (bignum->octet-string (rsa-decrypt *key*
encrypted-key)))
aes-key
1:=> (decrypt 'aes aes-key encrypted)
^\\274
1:=>

As you can see from the listing, I did not get the string "Cryptography"
back. Instead of it, I got ^\\274. The fun would be even greater if I had
gotten ^\\42.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.