2017-06-19 3 views
0

Je travaille sur une application qui est utilisée pour signer/vérifier des fichiers selon pkcs7. J'utilise Bouncycastle. Le problème est que chaque fois que je passe (pour vérifier!) Un fichier contenant une signature, je n'arrive pas à trouver un moyen de distinguer si le fichier contient à la fois une signature et des données signées ou simplement une signature. Le but est de demander à l'utilisateur de sélectionner un deuxième fichier si le premier contient uniquement la signature/et afficher l'erreur appropriée /. Y a-t-il un moyen de contourner ce problème?Bouncycastle - comment distinguer un fichier de signature détaché par programme

+0

Pourriez-vous clarifier quelles classes BC vous utilisez, CMSSignedData peut-être? –

+0

Ouais, j'utilise CMSSignedData. –

+0

J'ai essayé 'cmsSignedData.getSignedContent(). GetContent()', mais cela ne semble pas être une bonne idée, car je dois d'abord créer l'instance cmsSignedData, qui doit être fournie avec signature et contenu signé/ou un fichier contenant les deux /. Par conséquent, il retourne toujours le contenu signé/jamais null par exemple /. –

Répondre

2

Pour construire le CMSSignedData (la première fois, avant de savoir s'il contient du contenu encapsulé), utilisez simplement le constructeur CMSSignedData (byte []), où byte [] est le contenu complet du fichier. Une fois que vous avez l'instance CMSSignedData, alors getSignedContent() renvoie simplement null si le contenu n'a pas été encapsulé. Une fois que vous avez travaillé sur les bases, si vous avez affaire à des fichiers très volumineux, vous pouvez regarder CMSSignedDataParser comme une option plus avancée qui évitera de lire tout le fichier.

+0

A travaillé comme un charme! –