What you are trying to do is non-trivial
What you are trying to do is non-trivial. Proper crpyto implementations require a good attention to detail. Also, using a reputable library is important.
Even if you use a reputable library, if you don't know the correct techniques and pitfalls to avoid, you will end up with an insecure application.
With that disclaimer out of the way, here is a StackOverflow question:http://stackoverflow.com/questions/180870/what-is-the-best-encryption-library-in-c-c
I have used the TomCrypt library (google that) on a less powerful system than the cortex-m3, but not asymmetric crypto. Asym. crypto will be quite taxing, but not impossible. Give tomcrypt a try. I know it used to be well regarded, but may no longer be due to it's lack of a supporting developer. With crypto the more eyes you have on the library to find and fix bugs the better!