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:
-
digestAlgorithm
per l'algoritmo digest (hash) e i relativi parametri associati e -
signatureAlgorithm
per 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
digestAlgorithm
contengasha-1
( RFC3370 Sezione 2.1 ). C'è qualche differenza tra sceglierersaEncryption
esha1WithRSAEncryption
per il camposignatureAlgorithm
? -
Che succede se metto
sha-1
indigestAlgorithm
ma scelgomd5WithRSAEncryption
persignatureAlgorithm
?