Before everyone goes yelling: "NEVER DO YOUR OWN CRYPTO", I haven't, technically (I'm still half way), but apart from that I am making a TLS-like protocol, but way lighter.
I needed to secure communication between several embedded systems with very little RAM/ROM and processor power (well, it has 100 MHz, but a lot of it is in constant use and cannot be interrupted).
What I am going to do is use AES-128 with GCM (or CBC + HMAC) to secure the communication between the devices. Some devices can only use GCM, others use CBC + HMAC so (still working on it) I have to make a TLS-like structure to agree which one to use (device communicate through a server, not peer-to-peer, so having only 1 of the 2 isn't a problem; the server just needs both).
I've been doing a lot of research these past months (2 1/2), and I would like to say I have covered the basics. I'm now starting with implementing everything I have found (usage of keys, IVs, nonces, encrypt then MAC, etc.).
Now comes the question: when I'm finished I want to have the code I created checked. Obviously the deep level scrutiny TLS has gone through won't be achievable, but what ways are there? Are there sites where I can post my code for review? Are there companies which can 'certify' it? What would normally happen when a company created a secure communication and want to verify if it protects against the things they envisioned?
And yes, I know I'm not using a PKI. The hardware is in a secure environment, and no new devices can be added to the server (the server keeps a list of devices which can connect and monitors if one ever goes offline), so the company said PKI might be something they'd consider later on, but for a first version would not be necessary.
EDIT: I want to clarify (I'm taking back a few words). I will be using TLS to create this protocol, and the amount of TLS usages is of yet still unclear. When possible, I will simply try to remove everything I don't need from TLS and create it that way, I might take pieces of it (encrypt-then-mac, adding IV to ciphertext, etc.) and use that.
But either way, it is not TLS and even only removing stuff from TLS source code might introduce weaknesses so an 'audit' is still necessary.