#include "stdsoap2.h"
#include <openssl/evp.h>
#include <openssl/hmac.h>
#include <openssl/ssl.h>
|
size_t | 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. More...
|
|
int | soap_smd_begin (struct soap *soap, int alg, const void *key, int keylen) |
| Initiates a digest or signature computation. More...
|
|
int | 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(). More...
|
|
int | soap_smd_init (struct soap *soap, struct soap_smd_data *data, int alg, const void *key, int keylen) |
| Initiates a (signed) digest computation. More...
|
|
int | soap_smd_update (struct soap *soap, struct soap_smd_data *data, const char *buf, size_t len) |
| Updates (signed) digest computation with message part. More...
|
|
int | soap_smd_final (struct soap *soap, struct soap_smd_data *data, char *buf, int *len) |
| Finalizes (signed) digest computation and returns digest or signature. More...
|
|
#define SOAP_SMD_ALGO (0x0030) |
#define SOAP_SMD_DGST (0x10) |
DGST-MD5 digest algorithm
DGST-SHA1 digest algorithm
DGST-SHA224 digest algorithm
DGST-SHA256 digest algorithm
DGST-SHA384 digest algorithm
DGST-SHA512 digest algorithm
#define SOAP_SMD_DSA (0x40) |
#define SOAP_SMD_ECDSA (0x80) |
#define SOAP_SMD_HASH (0x000F) |
#define SOAP_SMD_HMAC (0x00) |
HMAC-MD5 shared key signature algorithm
HMAC-SHA1 shared key signature algorithm
HMAC-SHA224 shared key signature algorithm
HMAC-SHA256 shared key signature algorithm
HMAC-SHA384 shared key signature algorithm
HMAC-SHA512 shared key signature algorithm
#define SOAP_SMD_KEY_TYPE EVP_PKEY |
Expose EVP_PKEY in a portable representation
#define SOAP_SMD_MASK (0x01FF) |
#define SOAP_SMD_MAX_SIZE EVP_MAX_MD_SIZE |
Expose EVP_MAX_MD_SIZE in a portable representation
#define SOAP_SMD_MD5 (0x00) |
#define SOAP_SMD_MD5_SIZE (16) |
MD5 digest size in octets
#define SOAP_SMD_NONE (0x0000) |
#define SOAP_SMD_PASSTHRU (0x100) |
Additional flag: msg sends will pass through digest/signature algorithm
#define SOAP_SMD_SHA1 (0x01) |
#define SOAP_SMD_SHA1_SIZE (20) |
SHA1 digest size in octets
#define SOAP_SMD_SHA224 (0x02) |
#define SOAP_SMD_SHA224_SIZE (28) |
SHA224 digest size in octets
#define SOAP_SMD_SHA256 (0x03) |
#define SOAP_SMD_SHA256_SIZE (32) |
SHA256 digest size in octets
#define SOAP_SMD_SHA384 (0x04) |
#define SOAP_SMD_SHA384_SIZE (48) |
SHA384 digest size in octets
#define SOAP_SMD_SHA512 (0x05) |
#define SOAP_SMD_SHA512_SIZE (64) |
SHA512 digest size in octets
#define SOAP_SMD_SIGN (0x20) |
DSA-MD5 secret key signature algorithm
DSA-SHA1 secret key signature algorithm
DSA-SHA224 secret key signature algorithm
DSA-SHA256 secret key signature algorithm
DSA-SHA384 secret key signature algorithm
DSA-SHA512 secret key signature algorithm
ECDSA-MD5 secret key signature algorithm
ECDSA-SHA1 secret key signature algorithm
ECDSA-SHA224 secret key signature algorithm
ECDSA-SHA256 secret key signature algorithm
ECDSA-SHA384 secret key signature algorithm
ECDSA-SHA512 secret key signature algorithm
RSA-MD5 secret key signature algorithm
RSA-SHA1 secret key signature algorithm
RSA-SHA224 secret key signature algorithm
RSA-SHA256 secret key signature algorithm
RSA-SHA384 secret key signature algorithm
RSA-SHA512 secret key signature algorithm
#define SOAP_SMD_VRFY (0x30) |
DSA-MD5 secret key signature verification algorithm
DSA-SHA1 secret key signature verification algorithm
DSA-SHA224 secret key signature verification algorithm
DSA-SHA256 secret key signature verification algorithm
DSA-SHA384 secret key signature verification algorithm
DSA-SHA512 secret key signature verification algorithm
ECDSA-MD5 secret key signature verification algorithm
ECDSA-SHA1 secret key signature verification algorithm
ECDSA-SHA224 secret key signature verification algorithm
ECDSA-SHA256 secret key signature verification algorithm
ECDSA-SHA384 secret key signature verification algorithm
ECDSA-SHA512 secret key signature verification algorithm
RSA-MD5 secret key signature verification algorithm
RSA-SHA1 secret key signature verification algorithm
RSA-SHA224 secret key signature verification algorithm
RSA-SHA256 secret key signature verification algorithm
RSA-SHA384 secret key signature verification algorithm
RSA-SHA512 secret key signature verification algorithm
int 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
int 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
int soap_smd_final |
( |
struct soap * |
soap, |
|
|
struct soap_smd_data * |
data, |
|
|
char * |
buf, |
|
|
int * |
len |
|
) |
| |
Finalizes (signed) digest computation and returns digest or signature.
- Parameters
-
| soap | context |
[in,out] | data | smdevp engine context |
[in] | buf | contains signature for verification (SOAP_SMD_VRFY algorithms) |
[out] | buf | is populated with the digest or signature |
[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
int 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
size_t 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.
int 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