Sono confuso sulla selezione dell'algoritmo per gli oggetti firmati Cryptographic Message Syntax (aka CMS, PKCS # 7) ( RFC5652 Sezione 5.1 ).
La struttura SignerInfo ( RFC5652 Sezione 5.3 ) ha due campi di identificazione dell'algoritmo separati:
-
digestAlgorithmper l'algoritmo digest (hash) e i relativi parametri associati e -
signatureAlgorithmper l'algoritmo della firma e i relativi parametri associati.
(Ciò è in contrasto con i certificati ( RFC5280 ), CRL ( RFC5280 ) e richieste di certificazione ( RFC2986 , RFC4211 ) che non ha un campo separato per l'algoritmo del digest.)
Per il campo signatureAlgorithm , puoi scegliere rsaEncryption ( RFC3370 Sezione 3.2 ), oppure puoi scegliere una variante che specifica di per sé un algoritmo di digest, ad esempio sha1WithRSAEncryption o md5WithRSAEncryption .
Qual è la relazione tra l'algoritmo del digest dell'algoritmo della firma e l'algoritmo del digest specificato nel campo digestAlgorithm ?
Sottotemi specifici:
-
Supponi che
digestAlgorithmcontengasha-1( RFC3370 Sezione 2.1 ). C'è qualche differenza tra sceglierersaEncryptionesha1WithRSAEncryptionper il camposignatureAlgorithm? -
Che succede se metto
sha-1indigestAlgorithmma scelgomd5WithRSAEncryptionpersignatureAlgorithm?