[ 
https://issues.apache.org/jira/browse/JDKIM-42?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17940325#comment-17940325
 ] 

Jean Helou commented on JDKIM-42:
---------------------------------

Hello,

I stumbled upon this issue, you can find an client of the DKIMVerify api in 
[https://github.com/apache/james-project/blob/master/server/mailet/dkim/src/main/java/org/apache/james/jdkim/mailets/DKIMVerify.java#L53]

you can check how the tests for this are instantiated : 
[https://github.com/apache/james-project/blob/e09a085b8fb195495f0f0844bc91068a638b5f62/server/mailet/dkim/src/test/java/org/apache/james/jdkim/mailets/DKIMVerifyTest.java#L93]

 

I realize that 7 years later you are probably not expecting an answer anymore 
but hopefully this comment can help some else in the future :D

> Example on how to use verify bh in DKIM
> ---------------------------------------
>
>                 Key: JDKIM-42
>                 URL: https://issues.apache.org/jira/browse/JDKIM-42
>             Project: James jDKIM
>          Issue Type: Question
>            Reporter: BG
>            Priority: Major
>
> Trying to verify the DKIM bh value for an email using verify method from 
> tests.
> protected static List<SignatureRecord> verify(DKIMVerifier verifier, 
> MimeMessage message, boolean forceCRLF)
>         throws MessagingException, FailException {
>         Headers headers = new MimeMessageHeaders(message);
>         BodyHasher bh = verifier.newBodyHasher(headers);
>         try {
>             if (bh != null) {
>                 OutputStream os = new HeaderSkippingOutputStream(bh
>                     .getOutputStream());
>                 if (forceCRLF) os = new CRLFOutputStream(os);
>                 message.writeTo(os);
>                 bh.getOutputStream().close();
>             }
>         } catch (IOException e) {
>             throw new MessagingException("Exception calculating bodyhash: "
>                 + e.getMessage(), e);
>         }
>         return verifier.verify(bh);
>     }
> Created DKIMVerifier with a PublicKeyRecordRetriever. Call verify method with 
> following:
> {{verify(new DKIMVerifier(pkr), new 
> MimeMessage(Session.getDefaultInstance(new Properties()), new 
> ByteArrayInputStream(str.getBytes())), false);}}
> str is a String with all of the source (headers and content) of an email.
> verify throws error "Header signature does not verify" from line with 
> "BodyHasher bh = verifier.newBodyHasher(headers);".
> The only place in codebase where DKIMVerify.verify is used is in DKIMSignTest 
> which uses a MockPublicKeyRecordRetriever. 
> What is incorrect with implementation?
> Thanks.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to