When signed attributes are absent, the composite signature is computed over the message digest of the content. When signed attributes are present, a hash is computed over the content using the hash function specified in {{tab-cms-shas}}, and then a message-digest attribute is constructed to contain the resulting hash value, and then the result of DER encoding the set of signed attributes, which MUST include a content-type attribute and a message-digest attribute, and then the composite signature is computed over the DER-encoded output. In summary:
It seems to imply we MUST use the Hashing algorithm specified in the tab-cms-shas table, but that table says it is Mandatory strength considerations. So I think we are saying we would allow other Hash algorithms as long as they are considered as secure as the ones listed in tab-cms-shas, but this is not clear.
The text has been updated to be more clear in pull #72 . Added some text that alternate digest algorithms can be used as long as they preserve the performance and security of the Mandatory hash algorithms.
Currently we have this text:
When signed attributes are absent, the composite signature is computed over the message digest of the content. When signed attributes are present, a hash is computed over the content using the hash function specified in {{tab-cms-shas}}, and then a message-digest attribute is constructed to contain the resulting hash value, and then the result of DER encoding the set of signed attributes, which MUST include a content-type attribute and a message-digest attribute, and then the composite signature is computed over the DER-encoded output. In summary:
It seems to imply we MUST use the Hashing algorithm specified in the tab-cms-shas table, but that table says it is Mandatory strength considerations. So I think we are saying we would allow other Hash algorithms as long as they are considered as secure as the ones listed in tab-cms-shas, but this is not clear.