# dkim_resign()

[back to index]

SYNOPSIS

    #include <dkim.h>

    DKIM_STAT dkim_resign(
    	DKIM *sh,
    	DKIM *eh,
    	bool hdrbind
    );

Binds a signing handle to another handle to generate a second signature for a message being signed or verified. The message therefore only passes through the library once, but now produces either a verification result and a new signature, or multiple signatures.

DESCRIPTION

Called When | `dkim_resign()` must be called after a signing handle is acquired with `dkim_sign()` and a separate (signing or verifying) handle is acquired with `dkim_sign()` or `dkim_verify()`, but before any message data has been passed to either one.

ARGUMENTS

Argument | Description
--- | ---
sh | Message-specific handle, returned by `dkim_sign()`. It must not have been used to process any message data (i.e., no prior calls to `dkim_header()` or `dkim_eoh()`.
eh | Message-specific handle, returned by `dkim_sign()` or `dkim_verify()`. `dkim_eoh()` must not already have been called.

hdrbind | If TRUE, indicates that both the header and the body of the message are bound to the verifying handle. If FALSE, only the body is bound, meaning the caller must provide a complete (but possibly different) set of header fields using `dkim_header()` prior to calling `dkim_eoh()`.

RETURN VALUES

Value | Description
--- | ---
`DKIM_STAT_OK` | The binding was successful.
One or more of the following:

- `sh` is not a signing handle
- `eh` has already been passed to `dkim_eoh()`
- `eh` is already bound to another handle by a previous call to this function

`DKIM_STAT_INVALID`

NOTES

- Once the binding is made, passing `eh` to `dkim_free()` will fail until `sh` has been freed
- Multiple signing handles may be bound to a common verifying handle
- `eh` should be passed to `dkim_eom()` before `sh` is, after which the new signature can be extracted from `sh`; passing `sh` to `dkim_eom()` before doing so with `eh` will cause that function to return a status of `DKIM_STAT_INVALID`

Copyright (c) 2009, 2010, 2012, The Trusted Domain Project. All rights reserved.
By using this file, you agree to the terms and conditions set forth in the license.