Source: https://www.oidp.net/docs/repo/doc549.pdf