The document introduces CAO, a domain specific language for developing cryptographic software. CAO aims to generate efficient and secure implementations from high-level cryptographic specifications. It has types for booleans, integers, bit strings, vectors and matrices. A bubble sort example demonstrates the language. The document also discusses transforming CAO code, platform specification, using generated code, and protecting against side-channel attacks. Future work includes improving code efficiency and supporting more platforms/countermeasures.