|  | Home | Documentation | smdevp.h File Reference updated by Robert van Engelen |

Classes | Macros | Functions
smdevp.h File Reference
`#include "stdsoap2.h"`
`#include <openssl/evp.h>`
`#include <openssl/hmac.h>`
`#include <openssl/ssl.h>`
`#include <openssl/err.h>`
Include dependency graph for smdevp.h:
This graph shows which files directly or indirectly include this file:

## Classes

struct | soap_smd_data
| The smdevp engine context data, which is hooked up to soap->data[0]. More...

## Macros

#define | SOAP_SMD_KEY_TYPE EVP_PKEY
#define | SOAP_SMD_MAX_SIZE EVP_MAX_MD_SIZE
#define | SOAP_SMD_MD5_SIZE (16)
#define | SOAP_SMD_SHA1_SIZE (20)
#define | SOAP_SMD_SHA224_SIZE (28)
#define | SOAP_SMD_SHA256_SIZE (32)
#define | SOAP_SMD_SHA384_SIZE (48)
#define | SOAP_SMD_SHA512_SIZE (64)
#define | SOAP_SMD_NONE (0x0000)
#define | SOAP_SMD_HASH (0x000F)
#define | SOAP_SMD_ALGO (0x0030)
#define | SOAP_SMD_MASK (0x01FF)
#define | SOAP_SMD_MD5 (0x00)
#define | SOAP_SMD_SHA1 (0x01)
#define | SOAP_SMD_SHA224 (0x02)
#define | SOAP_SMD_SHA256 (0x03)
#define | SOAP_SMD_SHA384 (0x04)
#define | SOAP_SMD_SHA512 (0x05)
#define | SOAP_SMD_HMAC (0x00)
#define | SOAP_SMD_DGST (0x10)
#define | SOAP_SMD_SIGN (0x20)
#define | SOAP_SMD_VRFY (0x30)
#define | SOAP_SMD_DSA (0x40)
#define | SOAP_SMD_ECDSA (0x80)
#define | SOAP_SMD_PASSTHRU (0x100)
#define | SOAP_SMD_HMAC_MD5 (SOAP_SMD_HMAC | SOAP_SMD_MD5)
#define | SOAP_SMD_HMAC_SHA1 (SOAP_SMD_HMAC | SOAP_SMD_SHA1)
#define | SOAP_SMD_HMAC_SHA224 (SOAP_SMD_HMAC | SOAP_SMD_SHA224)
#define | SOAP_SMD_HMAC_SHA256 (SOAP_SMD_HMAC | SOAP_SMD_SHA256)
#define | SOAP_SMD_HMAC_SHA384 (SOAP_SMD_HMAC | SOAP_SMD_SHA384)
#define | SOAP_SMD_HMAC_SHA512 (SOAP_SMD_HMAC | SOAP_SMD_SHA512)
#define | SOAP_SMD_DGST_MD5 (SOAP_SMD_DGST | SOAP_SMD_MD5)
#define | SOAP_SMD_DGST_SHA1 (SOAP_SMD_DGST | SOAP_SMD_SHA1)
#define | SOAP_SMD_DGST_SHA224 (SOAP_SMD_DGST | SOAP_SMD_SHA224)
#define | SOAP_SMD_DGST_SHA256 (SOAP_SMD_DGST | SOAP_SMD_SHA256)
#define | SOAP_SMD_DGST_SHA384 (SOAP_SMD_DGST | SOAP_SMD_SHA384)
#define | SOAP_SMD_DGST_SHA512 (SOAP_SMD_DGST | SOAP_SMD_SHA512)
#define | SOAP_SMD_SIGN_RSA_MD5 (SOAP_SMD_SIGN | SOAP_SMD_MD5)
#define | SOAP_SMD_SIGN_RSA_SHA1 (SOAP_SMD_SIGN | SOAP_SMD_SHA1)
#define | SOAP_SMD_SIGN_RSA_SHA224 (SOAP_SMD_SIGN | SOAP_SMD_SHA224)
#define | SOAP_SMD_SIGN_RSA_SHA256 (SOAP_SMD_SIGN | SOAP_SMD_SHA256)
#define | SOAP_SMD_SIGN_RSA_SHA384 (SOAP_SMD_SIGN | SOAP_SMD_SHA384)
#define | SOAP_SMD_SIGN_RSA_SHA512 (SOAP_SMD_SIGN | SOAP_SMD_SHA512)
#define | SOAP_SMD_SIGN_DSA_MD5 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_MD5)
#define | SOAP_SMD_SIGN_DSA_SHA1 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA1)
#define | SOAP_SMD_SIGN_DSA_SHA224 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA224)
#define | SOAP_SMD_SIGN_DSA_SHA256 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA256)
#define | SOAP_SMD_SIGN_DSA_SHA384 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA384)
#define | SOAP_SMD_SIGN_DSA_SHA512 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA512)
#define | SOAP_SMD_SIGN_ECDSA_MD5 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_MD5)
#define | SOAP_SMD_SIGN_ECDSA_SHA1 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA1)
#define | SOAP_SMD_SIGN_ECDSA_SHA224 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA224)
#define | SOAP_SMD_SIGN_ECDSA_SHA256 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA256)
#define | SOAP_SMD_SIGN_ECDSA_SHA384 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA384)
#define | SOAP_SMD_SIGN_ECDSA_SHA512 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA512)
#define | SOAP_SMD_VRFY_RSA_MD5 (SOAP_SMD_VRFY | SOAP_SMD_MD5)
#define | SOAP_SMD_VRFY_RSA_SHA1 (SOAP_SMD_VRFY | SOAP_SMD_SHA1)
#define | SOAP_SMD_VRFY_RSA_SHA224 (SOAP_SMD_VRFY | SOAP_SMD_SHA224)
#define | SOAP_SMD_VRFY_RSA_SHA256 (SOAP_SMD_VRFY | SOAP_SMD_SHA256)
#define | SOAP_SMD_VRFY_RSA_SHA384 (SOAP_SMD_VRFY | SOAP_SMD_SHA384)
#define | SOAP_SMD_VRFY_RSA_SHA512 (SOAP_SMD_VRFY | SOAP_SMD_SHA512)
#define | SOAP_SMD_VRFY_DSA_MD5 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_MD5)
#define | SOAP_SMD_VRFY_DSA_SHA1 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA1)
#define | SOAP_SMD_VRFY_DSA_SHA224 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA224)
#define | SOAP_SMD_VRFY_DSA_SHA256 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA256)
#define | SOAP_SMD_VRFY_DSA_SHA384 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA384)
#define | SOAP_SMD_VRFY_DSA_SHA512 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA512)
#define | SOAP_SMD_VRFY_ECDSA_MD5 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_MD5)
#define | SOAP_SMD_VRFY_ECDSA_SHA1 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA1)
#define | SOAP_SMD_VRFY_ECDSA_SHA224 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA224)
#define | SOAP_SMD_VRFY_ECDSA_SHA256 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA256)
#define | SOAP_SMD_VRFY_ECDSA_SHA384 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA384)
#define | SOAP_SMD_VRFY_ECDSA_SHA512 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA512)

## Functions

SOAP_FMAC1 size_t SOAP_FMAC2 | soap_smd_size (int alg, const void *key)
| Returns the number of octets needed to store the digest or signature returned by soap_smd_end.
SOAP_FMAC1 int SOAP_FMAC2 | soap_smd_begin (struct soap *soap, int alg, const void *key, int keylen)
| Initiates a digest or signature computation.
SOAP_FMAC1 int SOAP_FMAC2 | soap_smd_end (struct soap *soap, char *buf, int *len)
| Completes a digest or signature computation. Also deallocates temporary storage allocated by soap_smd_begin(), so MUST be called after soap_smd_begin().
SOAP_FMAC1 int SOAP_FMAC2 | soap_smd_init (struct soap *soap, struct soap_smd_data *data, int alg, const void *key, int keylen)
| Initiates a (signed) digest computation.
SOAP_FMAC1 int SOAP_FMAC2 | soap_smd_update (struct soap *soap, struct soap_smd_data *data, const char *buf, size_t len)
| Updates (signed) digest computation with message part.
SOAP_FMAC1 int SOAP_FMAC2 | soap_smd_final (struct soap *soap, struct soap_smd_data *data, char *buf, int *len)
| Finalizes (signed) digest computation, delete context and returns digest or signature.
SOAP_FMAC1 void SOAP_FMAC2 | soap_smd_cleanup (struct soap *soap, struct soap_smd_data *data)
| Clear (signed) digest computation and delete context.

## Macro Definition Documentation

## ◆ SOAP_SMD_ALGO

#define SOAP_SMD_ALGO (0x0030)

## ◆ SOAP_SMD_DGST

#define SOAP_SMD_DGST (0x10)

Digest ALGO

## ◆ SOAP_SMD_DGST_MD5

#define SOAP_SMD_DGST_MD5 (SOAP_SMD_DGST | SOAP_SMD_MD5)

DGST-MD5 digest algorithm

## ◆ SOAP_SMD_DGST_SHA1

#define SOAP_SMD_DGST_SHA1 (SOAP_SMD_DGST | SOAP_SMD_SHA1)

DGST-SHA1 digest algorithm

## ◆ SOAP_SMD_DGST_SHA224

#define SOAP_SMD_DGST_SHA224 (SOAP_SMD_DGST | SOAP_SMD_SHA224)

DGST-SHA224 digest algorithm

## ◆ SOAP_SMD_DGST_SHA256

#define SOAP_SMD_DGST_SHA256 (SOAP_SMD_DGST | SOAP_SMD_SHA256)

DGST-SHA256 digest algorithm

## ◆ SOAP_SMD_DGST_SHA384

#define SOAP_SMD_DGST_SHA384 (SOAP_SMD_DGST | SOAP_SMD_SHA384)

DGST-SHA384 digest algorithm

## ◆ SOAP_SMD_DGST_SHA512

#define SOAP_SMD_DGST_SHA512 (SOAP_SMD_DGST | SOAP_SMD_SHA512)

DGST-SHA512 digest algorithm

## ◆ SOAP_SMD_DSA

#define SOAP_SMD_DSA (0x40)

DSA Sign/Verify ALGO

## ◆ SOAP_SMD_ECDSA

#define SOAP_SMD_ECDSA (0x80)

ECDSA Sign/Verify ALGO

## ◆ SOAP_SMD_HASH

#define SOAP_SMD_HASH (0x000F)

## ◆ SOAP_SMD_HMAC

#define SOAP_SMD_HMAC (0x00)

HMAC ALGO

## ◆ SOAP_SMD_HMAC_MD5

#define SOAP_SMD_HMAC_MD5 (SOAP_SMD_HMAC | SOAP_SMD_MD5)

HMAC-MD5 shared key signature algorithm

## ◆ SOAP_SMD_HMAC_SHA1

#define SOAP_SMD_HMAC_SHA1 (SOAP_SMD_HMAC | SOAP_SMD_SHA1)

HMAC-SHA1 shared key signature algorithm

## ◆ SOAP_SMD_HMAC_SHA224

#define SOAP_SMD_HMAC_SHA224 (SOAP_SMD_HMAC | SOAP_SMD_SHA224)

HMAC-SHA224 shared key signature algorithm

## ◆ SOAP_SMD_HMAC_SHA256

#define SOAP_SMD_HMAC_SHA256 (SOAP_SMD_HMAC | SOAP_SMD_SHA256)

HMAC-SHA256 shared key signature algorithm

## ◆ SOAP_SMD_HMAC_SHA384

#define SOAP_SMD_HMAC_SHA384 (SOAP_SMD_HMAC | SOAP_SMD_SHA384)

HMAC-SHA384 shared key signature algorithm

## ◆ SOAP_SMD_HMAC_SHA512

#define SOAP_SMD_HMAC_SHA512 (SOAP_SMD_HMAC | SOAP_SMD_SHA512)

HMAC-SHA512 shared key signature algorithm

## ◆ SOAP_SMD_KEY_TYPE

#define SOAP_SMD_KEY_TYPE EVP_PKEY

Expose EVP_PKEY in a portable representation

## ◆ SOAP_SMD_MASK

#define SOAP_SMD_MASK (0x01FF)

## ◆ SOAP_SMD_MAX_SIZE

#define SOAP_SMD_MAX_SIZE EVP_MAX_MD_SIZE

Expose EVP_MAX_MD_SIZE in a portable representation

## ◆ SOAP_SMD_MD5

#define SOAP_SMD_MD5 (0x00)

MD5 HASH

## ◆ SOAP_SMD_MD5_SIZE

#define SOAP_SMD_MD5_SIZE (16)

MD5 digest size in octets

## ◆ SOAP_SMD_NONE

#define SOAP_SMD_NONE (0x0000)

## ◆ SOAP_SMD_PASSTHRU

#define SOAP_SMD_PASSTHRU (0x100)

Additional flag: msg sends will pass through digest/signature algorithm

## ◆ SOAP_SMD_SHA1

#define SOAP_SMD_SHA1 (0x01)

SHA1 HASH

## ◆ SOAP_SMD_SHA1_SIZE

#define SOAP_SMD_SHA1_SIZE (20)

SHA1 digest size in octets

## ◆ SOAP_SMD_SHA224

#define SOAP_SMD_SHA224 (0x02)

SHA224 HASH

## ◆ SOAP_SMD_SHA224_SIZE

#define SOAP_SMD_SHA224_SIZE (28)

SHA224 digest size in octets

## ◆ SOAP_SMD_SHA256

#define SOAP_SMD_SHA256 (0x03)

SHA256 HASH

## ◆ SOAP_SMD_SHA256_SIZE

#define SOAP_SMD_SHA256_SIZE (32)

SHA256 digest size in octets

## ◆ SOAP_SMD_SHA384

#define SOAP_SMD_SHA384 (0x04)

SHA384 HASH

## ◆ SOAP_SMD_SHA384_SIZE

#define SOAP_SMD_SHA384_SIZE (48)

SHA384 digest size in octets

## ◆ SOAP_SMD_SHA512

#define SOAP_SMD_SHA512 (0x05)

SHA512 HASH

## ◆ SOAP_SMD_SHA512_SIZE

#define SOAP_SMD_SHA512_SIZE (64)

SHA512 digest size in octets

## ◆ SOAP_SMD_SIGN

#define SOAP_SMD_SIGN (0x20)

Sign ALGO

## ◆ SOAP_SMD_SIGN_DSA_MD5

#define SOAP_SMD_SIGN_DSA_MD5 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_MD5)

DSA-MD5 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_DSA_SHA1

#define SOAP_SMD_SIGN_DSA_SHA1 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA1)

DSA-SHA1 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_DSA_SHA224

#define SOAP_SMD_SIGN_DSA_SHA224 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA224)

DSA-SHA224 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_DSA_SHA256

#define SOAP_SMD_SIGN_DSA_SHA256 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA256)

DSA-SHA256 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_DSA_SHA384

#define SOAP_SMD_SIGN_DSA_SHA384 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA384)

DSA-SHA384 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_DSA_SHA512

#define SOAP_SMD_SIGN_DSA_SHA512 (SOAP_SMD_SIGN | SOAP_SMD_DSA | SOAP_SMD_SHA512)

DSA-SHA512 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_ECDSA_MD5

#define SOAP_SMD_SIGN_ECDSA_MD5 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_MD5)

ECDSA-MD5 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_ECDSA_SHA1

#define SOAP_SMD_SIGN_ECDSA_SHA1 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA1)

ECDSA-SHA1 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_ECDSA_SHA224

#define SOAP_SMD_SIGN_ECDSA_SHA224 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA224)

ECDSA-SHA224 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_ECDSA_SHA256

#define SOAP_SMD_SIGN_ECDSA_SHA256 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA256)

ECDSA-SHA256 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_ECDSA_SHA384

#define SOAP_SMD_SIGN_ECDSA_SHA384 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA384)

ECDSA-SHA384 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_ECDSA_SHA512

#define SOAP_SMD_SIGN_ECDSA_SHA512 (SOAP_SMD_SIGN | SOAP_SMD_ECDSA | SOAP_SMD_SHA512)

ECDSA-SHA512 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_RSA_MD5

#define SOAP_SMD_SIGN_RSA_MD5 (SOAP_SMD_SIGN | SOAP_SMD_MD5)

RSA-MD5 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_RSA_SHA1

#define SOAP_SMD_SIGN_RSA_SHA1 (SOAP_SMD_SIGN | SOAP_SMD_SHA1)

RSA-SHA1 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_RSA_SHA224

#define SOAP_SMD_SIGN_RSA_SHA224 (SOAP_SMD_SIGN | SOAP_SMD_SHA224)

RSA-SHA224 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_RSA_SHA256

#define SOAP_SMD_SIGN_RSA_SHA256 (SOAP_SMD_SIGN | SOAP_SMD_SHA256)

RSA-SHA256 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_RSA_SHA384

#define SOAP_SMD_SIGN_RSA_SHA384 (SOAP_SMD_SIGN | SOAP_SMD_SHA384)

RSA-SHA384 secret key signature algorithm

## ◆ SOAP_SMD_SIGN_RSA_SHA512

#define SOAP_SMD_SIGN_RSA_SHA512 (SOAP_SMD_SIGN | SOAP_SMD_SHA512)

RSA-SHA512 secret key signature algorithm

## ◆ SOAP_SMD_VRFY

#define SOAP_SMD_VRFY (0x30)

Verify ALGO

## ◆ SOAP_SMD_VRFY_DSA_MD5

#define SOAP_SMD_VRFY_DSA_MD5 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_MD5)

DSA-MD5 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_DSA_SHA1

#define SOAP_SMD_VRFY_DSA_SHA1 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA1)

DSA-SHA1 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_DSA_SHA224

#define SOAP_SMD_VRFY_DSA_SHA224 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA224)

DSA-SHA224 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_DSA_SHA256

#define SOAP_SMD_VRFY_DSA_SHA256 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA256)

DSA-SHA256 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_DSA_SHA384

#define SOAP_SMD_VRFY_DSA_SHA384 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA384)

DSA-SHA384 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_DSA_SHA512

#define SOAP_SMD_VRFY_DSA_SHA512 (SOAP_SMD_VRFY | SOAP_SMD_DSA | SOAP_SMD_SHA512)

DSA-SHA512 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_ECDSA_MD5

#define SOAP_SMD_VRFY_ECDSA_MD5 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_MD5)

ECDSA-MD5 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_ECDSA_SHA1

#define SOAP_SMD_VRFY_ECDSA_SHA1 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA1)

ECDSA-SHA1 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_ECDSA_SHA224

#define SOAP_SMD_VRFY_ECDSA_SHA224 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA224)

ECDSA-SHA224 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_ECDSA_SHA256

#define SOAP_SMD_VRFY_ECDSA_SHA256 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA256)

ECDSA-SHA256 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_ECDSA_SHA384

#define SOAP_SMD_VRFY_ECDSA_SHA384 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA384)

ECDSA-SHA384 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_ECDSA_SHA512

#define SOAP_SMD_VRFY_ECDSA_SHA512 (SOAP_SMD_VRFY | SOAP_SMD_ECDSA | SOAP_SMD_SHA512)

ECDSA-SHA512 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_RSA_MD5

#define SOAP_SMD_VRFY_RSA_MD5 (SOAP_SMD_VRFY | SOAP_SMD_MD5)

RSA-MD5 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_RSA_SHA1

#define SOAP_SMD_VRFY_RSA_SHA1 (SOAP_SMD_VRFY | SOAP_SMD_SHA1)

RSA-SHA1 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_RSA_SHA224

#define SOAP_SMD_VRFY_RSA_SHA224 (SOAP_SMD_VRFY | SOAP_SMD_SHA224)

RSA-SHA224 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_RSA_SHA256

#define SOAP_SMD_VRFY_RSA_SHA256 (SOAP_SMD_VRFY | SOAP_SMD_SHA256)

RSA-SHA256 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_RSA_SHA384

#define SOAP_SMD_VRFY_RSA_SHA384 (SOAP_SMD_VRFY | SOAP_SMD_SHA384)

RSA-SHA384 secret key signature verification algorithm

## ◆ SOAP_SMD_VRFY_RSA_SHA512

#define SOAP_SMD_VRFY_RSA_SHA512 (SOAP_SMD_VRFY | SOAP_SMD_SHA512)

RSA-SHA512 secret key signature verification algorithm

## Function Documentation

## ◆ soap_smd_begin()

SOAP_FMAC1 int SOAP_FMAC2 soap_smd_begin | ( | struct soap * | soap,
|  | int | alg,
|  | const void * | key,
|  | int | keylen )

Initiates a digest or signature computation.

Parameters

  | soap | context
  [in] | alg | is the digest or signature (sign/verification) algorithm used
  [in] | key | is a HMAC key or pointer to EVP_PKEY object or NULL for digests
  [in] | keylen | is the length of the HMAC key or 0

Returns
  SOAP_OK, SOAP_EOM, or SOAP_SSL_ERROR

## ◆ soap_smd_cleanup()

SOAP_FMAC1 void SOAP_FMAC2 soap_smd_cleanup | ( | struct soap * | soap,
|  | struct soap_smd_data * | data )

Clear (signed) digest computation and delete context.

Parameters

  | soap | context
  [in,out] | data | smdevp engine context

## ◆ soap_smd_end()

SOAP_FMAC1 int SOAP_FMAC2 soap_smd_end | ( | struct soap * | soap,
|  | char * | buf,
|  | int * | len )

Completes a digest or signature computation. Also deallocates temporary storage allocated by soap_smd_begin(), so MUST be called after soap_smd_begin().

Parameters

  | soap | context
  [in] | buf | contains signature for verification (when using a SOAP_SMD_VRFY algorithm) or NULL for cleanup
  [out] | buf | is populated with the digest or signature with maximum length soap_smd_size(alg, key)
  [in] | len | points to length of signature to verify (when using a SOAP_SMD_VRFY algorithm) or NULL for cleanup
  [out] | len | points to length of stored digest or signature (when not NULL)

Returns
  SOAP_OK, SOAP_USER_ERROR, or SOAP_SSL_ERROR

## ◆ soap_smd_final()

SOAP_FMAC1 int SOAP_FMAC2 soap_smd_final | ( | struct soap * | soap,
|  | struct soap_smd_data * | data,
|  | char * | buf,
|  | int * | len )

Finalizes (signed) digest computation, delete context and returns digest or signature.

Parameters

  | soap | context
  [in,out] | data | smdevp engine context
  [in] | buf | contains signature for verification (SOAP_SMD_VRFY algorithms) maximum length soap_smd_size(alg, key)
  [out] | buf | is populated with the digest or signature of
  [in] | len | points to length of signature to verify (SOAP_SMD_VRFY algorithms)
  [out] | len | points to length of stored digest or signature (pass NULL if you are not interested in this value)

Returns
  SOAP_OK or SOAP_SSL_ERROR

## ◆ soap_smd_init()

SOAP_FMAC1 int SOAP_FMAC2 soap_smd_init | ( | struct soap * | soap,
|  | struct soap_smd_data * | data,
|  | int | alg,
|  | const void * | key,
|  | int | keylen )

Initiates a (signed) digest computation.

Parameters

  | soap | context
  [in,out] | data | smdevp engine context
  [in] | alg | is algorithm to use
  [in] | key | is key to use or NULL for digests
  [in] | keylen | is length of HMAC key (when provided)

Returns
  SOAP_OK or SOAP_SSL_ERROR

## ◆ soap_smd_size()

SOAP_FMAC1 size_t SOAP_FMAC2 soap_smd_size | ( | int | alg,
|  | const void * | key )

Returns the number of octets needed to store the digest or signature returned by soap_smd_end.

Parameters

  [in] | alg | is the digest or signature algorithm to be used
  [in] | key | is a pointer to an EVP_PKEY object for RSA/DSA signatures or NULL for digests and HMAC

Returns
  size_t number of octets that is needed to hold digest or signature

See also
  soap_smd_end

The values returned for digests are SOAP_SMD_MD5_SIZE, SOAP_SMD_SHA1_SIZE, SOAP_SMD_SHA256_SIZE, SOAP_SMD_SHA512_SIZE.

## ◆ soap_smd_update()

SOAP_FMAC1 int SOAP_FMAC2 soap_smd_update | ( | struct soap * | soap,
|  | struct soap_smd_data * | data,
|  | const char * | buf,
|  | size_t | len )

Updates (signed) digest computation with message part.

Parameters

  | soap | context
  [in,out] | data | smdevp engine context
  [in] | buf | contains message part
  [in] | len | of message part

Returns
  SOAP_OK or SOAP_SSL_ERROR