So far, we have covered three pillars of our four pillars of cryptography. We discussed integrity and how cryptographic primitives, like hashing with SHA-256, can help us solve that problem. We then discussed authentication and I explained hashed message authentication codes, such as HMAC-SHA-256. We then covered confidentiality by looking at both symmetric and asymmetric encryption. In this chapter we will take a look at the non-repudiation pillar of cryptography by discussing digital signatures.