diff options
author | Ulf Möller <ulf@openssl.org> | 2000-01-27 19:31:26 +0000 |
---|---|---|
committer | Ulf Möller <ulf@openssl.org> | 2000-01-27 19:31:26 +0000 |
commit | 38e33cef15e7965ad9fd9db4b08fb2f5dc1bc573 (patch) | |
tree | 27216af3df8adcdc381475ca7011f43fcf34e7fe /doc | |
parent | 0c23524963064a3bf8206b28c97f88e157d29fa7 (diff) |
Document DSA and SHA.
New function BN_pseudo_rand().
Use BN_prime_checks_size(BN_num_bits(w)) rounds of Miller-Rabin when
generating DSA primes (why not use BN_is_prime()?)
Diffstat (limited to 'doc')
-rw-r--r-- | doc/crypto/BN_mod_mul_montgomery.pod | 2 | ||||
-rw-r--r-- | doc/crypto/BN_rand.pod | 12 | ||||
-rw-r--r-- | doc/crypto/DH_generate_parameters.pod | 5 | ||||
-rw-r--r-- | doc/crypto/DH_get_ex_new_index.pod | 24 | ||||
-rw-r--r-- | doc/crypto/DH_new.pod | 2 | ||||
-rw-r--r-- | doc/crypto/DSA_SIG_new.pod | 39 | ||||
-rw-r--r-- | doc/crypto/DSA_do_sign.pod | 46 | ||||
-rw-r--r-- | doc/crypto/DSA_dup_DH.pod | 32 | ||||
-rw-r--r-- | doc/crypto/DSA_generate_key.pod | 33 | ||||
-rw-r--r-- | doc/crypto/DSA_generate_parameters.pod | 94 | ||||
-rw-r--r-- | doc/crypto/DSA_get_ex_new_index.pod | 36 | ||||
-rw-r--r-- | doc/crypto/DSA_new.pod | 41 | ||||
-rw-r--r-- | doc/crypto/DSA_set_method.pod | 111 | ||||
-rw-r--r-- | doc/crypto/DSA_sign.pod | 62 | ||||
-rw-r--r-- | doc/crypto/DSA_size.pod | 33 | ||||
-rw-r--r-- | doc/crypto/RSA_get_ex_new_index.pod | 7 | ||||
-rw-r--r-- | doc/crypto/SHA1.pod | 36 | ||||
-rw-r--r-- | doc/crypto/SHA1_Init.pod | 42 | ||||
-rw-r--r-- | doc/crypto/bn.pod | 1 | ||||
-rw-r--r-- | doc/crypto/dh.pod | 22 | ||||
-rw-r--r-- | doc/crypto/dsa.pod | 95 | ||||
-rw-r--r-- | doc/crypto/rsa.pod | 4 | ||||
-rw-r--r-- | doc/crypto/sha.pod | 36 |
23 files changed, 786 insertions, 29 deletions
diff --git a/doc/crypto/BN_mod_mul_montgomery.pod b/doc/crypto/BN_mod_mul_montgomery.pod index dacd83fc39..825a29f979 100644 --- a/doc/crypto/BN_mod_mul_montgomery.pod +++ b/doc/crypto/BN_mod_mul_montgomery.pod @@ -30,7 +30,7 @@ BN_from_montgomery, BN_to_montgomery - Montgomery multiplication These functions implement Montgomery multiplication. They are used automatically when BN_mod_exp(3) is called with suitable input, -but they may be useful when several operations are to be perfomed +but they may be useful when several operations are to be performed using the same modulus. BN_MONT_CTX_new() allocates and initializes a B<BN_MONT_CTX> structure. diff --git a/doc/crypto/BN_rand.pod b/doc/crypto/BN_rand.pod index 0f692684d2..47991b1abc 100644 --- a/doc/crypto/BN_rand.pod +++ b/doc/crypto/BN_rand.pod @@ -2,7 +2,7 @@ =head1 NAME -BN_rand - Generate pseudo-random number +BN_rand, BN_rand_pseudo - Generate pseudo-random number =head1 SYNOPSIS @@ -10,6 +10,8 @@ BN_rand - Generate pseudo-random number int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); + int BN_pseudo_rand(BIGNUM *rnd, int bits, int top,int bottom); + =head1 DESCRIPTION BN_rand() generates a cryptographically strong pseudo-random number of @@ -18,11 +20,16 @@ two most significant bits of the number will be set to 1, so that the product of two such random numbers will always have 2*B<bits> length. If B<bottom> is true, the number will be odd. +BN_pseudo_rand() does the same, but pseudo-random numbers generated by +this function are not necessarily unpredictable. They can be used for +non-cryptographic purposes and for certain purposes in cryptographic +protocols, but usually not for key generation etc. + The PRNG must be seeded prior to calling BN_rand(). =head1 RETURN VALUES -BN_rand() returns 1 on success, 0 on error. +BN_rand() and BN_pseudo_rand() return 1 on success, 0 on error. The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. =head1 SEE ALSO @@ -33,5 +40,6 @@ L<RAND_add(3)|RAND_add(3)>, L<RAND_bytes(3)|RAND_bytes(3)> =head1 HISTORY BN_rand() is available in all versions of SSLeay and OpenSSL. +BN_pseudo_rand() was added in OpenSSL 0.9.5. =cut diff --git a/doc/crypto/DH_generate_parameters.pod b/doc/crypto/DH_generate_parameters.pod index 137b3873f9..8102e536f3 100644 --- a/doc/crypto/DH_generate_parameters.pod +++ b/doc/crypto/DH_generate_parameters.pod @@ -52,6 +52,11 @@ suitable prime. The parameters generated by DH_generate_parameters() are not to be used in signature schemes. +=head1 BUGS + +If B<generator> is not 2 or 5, B<dh-E<gt>g>=B<generator> is not +a usable generator. + =head1 SEE ALSO L<dh(3)|dh(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>, L<DH_free(3)|DH_free(3)> diff --git a/doc/crypto/DH_get_ex_new_index.pod b/doc/crypto/DH_get_ex_new_index.pod index d52181e83f..4604859f08 100644 --- a/doc/crypto/DH_get_ex_new_index.pod +++ b/doc/crypto/DH_get_ex_new_index.pod @@ -2,33 +2,35 @@ =head1 NAME -DH_get_ex_new_index, DH_set_ex_data, DH_get_ex_data - ... +DH_get_ex_new_index, DH_set_ex_data, DH_get_ex_data - add application specific data to DH structures =head1 SYNOPSIS #include <openssl/dh.h> - int DH_get_ex_new_index(long argl, char *argp, int (*new_func)(), - int (*dup_func)(), void (*free_func)()); + int DH_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); - int DH_set_ex_data(DH *d, int idx, char *arg); + int DH_set_ex_data(DH *d, int idx, void *arg); char *DH_get_ex_data(DH *d, int idx); =head1 DESCRIPTION -... - -=head1 RETURN VALUES - -... +These functions handle application specific data in DH +structures. Their usage is identical to that of +RSA_get_ex_new_index(), RSA_set_ex_data() and RSA_get_ex_data() +as described in L<RSA_get_ex_new_index(3)>. =head1 SEE ALSO -... +L<RSA_get_ex_new_index()|RSA_get_ex_new_index()>, L<dh(3)|dh(3)> =head1 HISTORY -... +RSA_get_ex_new_index(), RSA_set_ex_data() and RSA_get_ex_data() are +available since OpenSSL 0.9.5. =cut diff --git a/doc/crypto/DH_new.pod b/doc/crypto/DH_new.pod index 9116b9f0df..64624b9d15 100644 --- a/doc/crypto/DH_new.pod +++ b/doc/crypto/DH_new.pod @@ -10,7 +10,7 @@ DH_new, DH_free - allocate and free DH objects DH* DH_new(void); - void DH_free(DH *rsa); + void DH_free(DH *dh); =head1 DESCRIPTION diff --git a/doc/crypto/DSA_SIG_new.pod b/doc/crypto/DSA_SIG_new.pod new file mode 100644 index 0000000000..671655554a --- /dev/null +++ b/doc/crypto/DSA_SIG_new.pod @@ -0,0 +1,39 @@ +=pod + +=head1 NAME + +DSA_SIG_new, DSA_SIG_free - allocate and free DSA signature objects + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + DSA_SIG *DSA_SIG_new(void); + + void DSA_SIG_free(DSA_SIG *a); + +=head1 DESCRIPTION + +DSA_SIG_new() allocates and initializes a B<DSA_SIG> structure. + +DSA_SIG_free() frees the B<DSA_SIG> structure and its components. The +values are erased before the memory is returned to the system. + +=head1 RETURN VALUES + +If the allocation fails, DSA_SIG_new() returns B<NULL> and sets an +error code that can be obtained by +L<ERR_get_error(3)|ERR_get_error(3)>. Otherwise it returns a pointer +to the newly allocated structure. + +DSA_SIG_free() returns no value. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<err(3)|err(3)>, L<DSA_do_sign(3)|DSA_do_sign(3)> + +=head1 HISTORY + +DSA_SIG_new() and DSA_SIG_free() were added in OpenSSL 0.9.3. + +=cut diff --git a/doc/crypto/DSA_do_sign.pod b/doc/crypto/DSA_do_sign.pod new file mode 100644 index 0000000000..9dcf73de16 --- /dev/null +++ b/doc/crypto/DSA_do_sign.pod @@ -0,0 +1,46 @@ +=pod + +=head1 NAME + +DSA_do_sign, DSA_do_verify - Raw DSA signature operations + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); + + int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +=head1 DESCRIPTION + +DSA_do_sign() computes a digital signature on the B<len> byte message +digest B<dgst> using the private key B<dsa> and returns it in a +newly allocated B<DSA_SIG> structure. + +L<DSA_sign_setup(3)|DSA_sign_setup(3)> may be used to precompute part +of the signing operation in case signature generation is +time-critical. + +DSA_do_verify() verifies that the signature B<sig> matches a given +message digest B<dgst> of size B<len>. B<dsa> is the signer's public +key. + +=head1 RETURN VALUES + +DSA_do_sign() returns the signature, NULL on error. DSA_do_verify() +returns 1 for a valid signature, 0 for an incorrect signature and -1 +on error. The error codes can be obtained by +L<ERR_get_error(3)|ERR_get_error(3)>. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<err(3)|err(3)>, L<DSA_SIG_new(3)|DSA_SIG_new(3)>, +L<DSA_sign(3)|DSA_sign(3)> + +=head1 HISTORY + +DSA_do_sign() and DSA_do_verify() were added in OpenSSL 0.9.3. + +=cut diff --git a/doc/crypto/DSA_dup_DH.pod b/doc/crypto/DSA_dup_DH.pod new file mode 100644 index 0000000000..0c15094b56 --- /dev/null +++ b/doc/crypto/DSA_dup_DH.pod @@ -0,0 +1,32 @@ +=pod + +=head1 NAME + +DSA_dup_DH - Create a DH structure out of DSA structure + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + DH * DSA_dup_DH(DSA *r); + +=head1 DESCRIPTION + +DSA_dup_DH() duplicates DSA parameters/keys as DH parameters/keys. q +is lost during that conversion, but the resulting DH parameters +contain its length. + +=head1 RETURN VALUE + +DSA_dup_DH() returns the new B<DH> structure, and NULL on error. The +error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. + +=head1 SEE ALSO + +L<dh(3)|dh(3)>, L<dsa(3)|dsa(3)>, L<err(3)|err(3)> + +=head1 HISTORY + +DSA_dup_DH() was added in OpenSSL 0.9.4. + +=cut diff --git a/doc/crypto/DSA_generate_key.pod b/doc/crypto/DSA_generate_key.pod new file mode 100644 index 0000000000..e253501ef2 --- /dev/null +++ b/doc/crypto/DSA_generate_key.pod @@ -0,0 +1,33 @@ +=pod + +=head1 NAME + +DSA_generate_key - Generate DSA key pair + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + int DSA_generate_key(DSA *a); + +=head1 DESCRIPTION + +DSA_generate_key() expects B<a> to contain DSA parameters. It generates +a new key pair and stores it in B<a-E<gt>pub_key> and B<a-E<gt>priv_key>. + +The PRNG must be seeded prior to calling DSA_generate_key(). + +=head1 RETURN VALUE + +DSA_generate_key() returns 1 on success, 0 otherwise. +The error codes can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>, L<DSA_generate_parameters(3)|DSA_generate_parameters(3)> + +=head1 HISTORY + +DSA_generate_key() is available since SSLeay 0.8. + +=cut diff --git a/doc/crypto/DSA_generate_parameters.pod b/doc/crypto/DSA_generate_parameters.pod new file mode 100644 index 0000000000..1058c5eb44 --- /dev/null +++ b/doc/crypto/DSA_generate_parameters.pod @@ -0,0 +1,94 @@ +=pod + +=head1 NAME + +DSA_generate_parameters - Generate DSA parameters + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + DSA * DSA_generate_parameters(int bits, unsigned char *seed, + int seed_len, int *counter_ret, unsigned long *h_ret, + void (*callback)(), void *cb_arg); + +=head1 DESCRIPTION + +DSA_generate_parameters() generates primes p and q and a generator g +for use in the DSA. + +B<bits> is the length of the prime to be generated; the DSS allows a +maximum of 1024 bits. + +If B<seed> is NULL or B<seed_len> E<lt> 20, the primes will be +generated at random. Otherwise, the seed is used to generate +them. If the given seed does not yield a prime q, a new random +seed is chosen and placed at B<seed>. + +DSA_generate_parameters() places the iteration count in +*B<counter_ret> and a counter used for finding a generator in +*B<h_ret>, unless these are NULL. + +A callback function may be used to provide feedback about the progress +of the key generation. If B<callback> is not B<NULL>, it will be +called as follows: + +=over 4 + +=item * + +When the the m-th candidate for q is generated, B<callback(0, m, +cb_arg)> is called. + +=item * + +B<callback(1, j++, cb_arg)> is called in the inner loop of the +Miller-Rabin primality test. + +=item * + +When a prime q has been found, B<callback(2, 0, cb_arg)> and +B<callback(3, 0, cb_arg)> are called. + +=item * + +While candidates for p are being tested, B<callback(1, j++, cb_arg)> +is called in the inner loop of the Miller-Rabin primality test, then +B<callback(0, counter, cb_arg)> is called when the next candidate +is chosen. + +=item * + +When p has been found, B<callback(2, 1, cb_arg)> is called. + +=item * + +When the generator has been found, B<callback(3, 1, cb_arg)> is called. + +=back + +=head1 RETURN VALUE + +DSA_generate_parameters() returns a pointer to the DSA structure, or +NULL if the parameter generation fails. The error codes can be +obtained by L<ERR_get_error(3)|ERR_get_error(3)>. + +=head1 BUGS + +The deterministic generation of p does not follow the NIST algorithm: +r0 is SHA1(s+k+1), but should be SHA1(s+j+k) with j_0=2, +j_counter=j_counter-1 + n + 1. + +Seed lengths E<gt> 20 are not supported. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>, +L<DSA_free(3)|DSA_free(3)> + +=head1 HISTORY + +DSA_generate_parameters() appeared in SSLeay 0.8. The B<cb_arg> +argument was added in SSLeay 0.9.0. + +=cut diff --git a/doc/crypto/DSA_get_ex_new_index.pod b/doc/crypto/DSA_get_ex_new_index.pod new file mode 100644 index 0000000000..0854567633 --- /dev/null +++ b/doc/crypto/DSA_get_ex_new_index.pod @@ -0,0 +1,36 @@ +=pod + +=head1 NAME + +DSA_get_ex_new_index, DSA_set_ex_data, DSA_get_ex_data - add application specific data to DSA structures + +=head1 SYNOPSIS + + #include <openssl/DSA.h> + + int DSA_get_ex_new_index(long argl, void *argp, + CRYPTO_EX_new *new_func, + CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); + + int DSA_set_ex_data(DSA *d, int idx, void *arg); + + char *DSA_get_ex_data(DSA *d, int idx); + +=head1 DESCRIPTION + +These functions handle application specific data in DSA +structures. Their usage is identical to that of +RSA_get_ex_new_index(), RSA_set_ex_data() and RSA_get_ex_data() +as described in L<RSA_get_ex_new_index(3)>. + +=head1 SEE ALSO + +L<RSA_get_ex_new_index()|RSA_get_ex_new_index()>, L<dsa(3)|dsa(3)> + +=head1 HISTORY + +DH_get_ex_new_index(), DH_set_ex_data() and DH_get_ex_data() are +available since OpenSSL 0.9.5. + +=cut diff --git a/doc/crypto/DSA_new.pod b/doc/crypto/DSA_new.pod new file mode 100644 index 0000000000..7dde54445b --- /dev/null +++ b/doc/crypto/DSA_new.pod @@ -0,0 +1,41 @@ +=pod + +=head1 NAME + +DSA_new, DSA_free - allocate and free DSA objects + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + DSA* DSA_new(void); + + void DSA_free(DSA *dsa); + +=head1 DESCRIPTION + +DSA_new() allocates and initializes a B<DSA> structure. + +DSA_free() frees the B<DSA> structure and its components. The values are +erased before the memory is returned to the system. + +=head1 RETURN VALUES + +If the allocation fails, DSA_new() returns B<NULL> and sets an error +code that can be obtained by +L<ERR_get_error(3)|ERR_get_error(3)>. Otherwise it returns a pointer +to the newly allocated structure. + +DSA_free() returns no value. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<err(3)|err(3)>, +L<DSA_generate_parameters(3)|DSA_generate_parameters(3)>, +L<DSA_generate_key(3)|DSA_generate_key(3)> + +=head1 HISTORY + +DSA_new() and DSA_free() are available in all versions of SSLeay and OpenSSL. + +=cut diff --git a/doc/crypto/DSA_set_method.pod b/doc/crypto/DSA_set_method.pod new file mode 100644 index 0000000000..c57ebb3146 --- /dev/null +++ b/doc/crypto/DSA_set_method.pod @@ -0,0 +1,111 @@ +=pod + +=head1 NAME + +DSA_set_default_method, DSA_get_default_method, DSA_set_method, +DSA_new_method, DSA_OpenSSL - Select RSA method + +=head1 SYNOPSIS + + #include <openssl/DSA.h> + + void DSA_set_default_method(DSA_METHOD *meth); + + DSA_METHOD *DSA_get_default_method(void); + + DSA_METHOD *DSA_set_method(DSA *dsa, DSA_METHOD *meth); + + DSA *DSA_new_method(DSA_METHOD *meth); + + DSA_METHOD *DSA_OpenSSL(void); + +=head1 DESCRIPTION + +A B<DSA_METHOD> specifies the functions that OpenSSL uses for DSA +operations. By modifying the method, alternative implementations +such as hardware accelerators may be used. + +Initially, the default is to use the OpenSSL internal implementation. +DSA_OpenSSL() returns a pointer to that method. + +DSA_set_default_method() makes B<meth> the default method for all B<DSA> +structures created later. + +DSA_get_default_method() returns a pointer to the current default +method. + +DSA_set_method() selects B<meth> for all operations using the structure B<DSA>. + +DSA_get_method() returns a pointer to the method currently selected +for B<DSA>. + +DSA_new_method() allocates and initializes a B<DSA> structure so that +B<method> will be used for the DSA operations. If B<method> is B<NULL>, +the default method is used. + +=head1 THE DSA_METHOD STRUCTURE + +struct + { + /* name of the implementation */ + const char *name; + + /* sign */ + DSA_SIG *(*dsa_do_sign)(const unsigned char *dgst, int dlen, + DSA *dsa); + + /* pre-compute k^-1 and r */ + int (*dsa_sign_setup)(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, + BIGNUM **rp); + + /* verify */ + int (*dsa_do_verify)(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + + /* compute rr = a1^p1 * a2^p2 mod m. May be NULL */ + int (*dsa_mod_exp)(DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1, + BIGNUM *a2, BIGNUM *p2, BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *in_mont); + + /* compute r = a ^ p mod m. May be NULL */ + int (*bn_mod_exp)(DSA *dsa, BIGNUM *r, BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *m_ctx); + + /* called at DSA_new */ + int (*init)(DSA *DSA); + + /* called at DSA_free */ + int (*finish)(DSA *DSA); + + int flags; + + char *app_data; /* ?? */ + + } DSA_METHOD; + +=head1 RETURN VALUES + +DSA_OpenSSL(), DSA_get_default_method() and DSA_get_method() return +pointers to the respective B<DSA_METHOD>s. + +DSA_set_default_method() returns no value. + +DSA_set_method() returns a pointer to the B<DSA_METHOD> previously +associated with B<dsa>. + +DSA_new_method() returns B<NULL> and sets an error code that can be +obtained by L<ERR_get_error(3)|ERR_get_error(3)> if the allocation +fails. Otherwise it returns a pointer to the newly allocated +structure. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<DSA_new(3)|DSA_new(3)> + +=head1 HISTORY + +DSA_set_default_method(), DSA_get_default_method(), DSA_set_method(), +DSA_new_method() and DSA_OpenSSL() were added in OpenSSL 0.9.4. + +=cut diff --git a/doc/crypto/DSA_sign.pod b/doc/crypto/DSA_sign.pod new file mode 100644 index 0000000000..e064fd1c42 --- /dev/null +++ b/doc/crypto/DSA_sign.pod @@ -0,0 +1,62 @@ +=pod + +=head1 NAME + +DSA_sign, DSA_sign_setup, DSA_verify - DSA signatures + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + int DSA_sign(int type, const unsigned char *dgst, int len, + unsigned char *sigret, unsigned int *siglen, DSA *dsa); + + int DSA_sign_setup(DSA *dsa, BN_CTX *ctx, BIGNUM **kinvp, + BIGNUM **rp); + + int DSA_verify(int type, const unsigned char *dgst, int len, + unsigned char *sigbuf, int siglen, DSA *dsa); + +=head1 DESCRIPTION + +DSA_sign() computes a digital signature on the B<len> byte message +digest B<dgst> using the private key B<dsa> and places its ASN.1 DER +encoding at B<sigret>. The length of the signature is places in +*B<siglen>. B<sigret> must point to DSA_size(B<dsa>) bytes of memory. + +DSA_sign_setup() may be used to precompute part of the signing +operation in case signature generation is time-critical. It expects +B<dsa> to contain DSA parameters. It places the precomputed values +in newly allocated B<BIGNUM>s at *B<kinvp> and *B<rp>, after freeing +the old ones unless *B<kinvp> and *B<rp> are NULL. These values may +be passed to DSA_sign() in B<dsa-E<gt>kinv> and B<dsa-E<gt>r>. +B<ctx> is a pre-allocated B<BN_CTX> or NULL. + +DSA_verify() verifies that the signature B<sigbuf> of size B<siglen> +matches a given message digest B<dgst> of size B<len>. +B<dsa> is the signer's public key. + +The B<type> parameter is ignored. + +=head1 RETURN VALUES + +DSA_sign() and DSA_sign_setup() return 1 on success, 0 on error. +DSA_verify() returns 1 for a valid signature, 0 for an incorrect +signature and -1 on error. The error codes can be obtained by +L<ERR_get_error(3)|ERR_get_error(3)>. + +=head1 CONFORMING TO + +US Federal Information Processing Standard FIPS 186 (Digital Signature +Standard, DSS), ANSI X9.30 + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<err(3)|err(3)>, L<DSA_do_sign(3)|DSA_do_sign(3)> + +=head1 HISTORY + +DSA_sign() and DSA_verify() are available in all versions of SSLeay. +DSA_sign_setup() was added in SSLeay 0.8. + +=cut diff --git a/doc/crypto/DSA_size.pod b/doc/crypto/DSA_size.pod new file mode 100644 index 0000000000..551d1e25ab --- /dev/null +++ b/doc/crypto/DSA_size.pod @@ -0,0 +1,33 @@ +=pod + +=head1 NAME + +DSA_size - Get DSA signature size + +=head1 SYNOPSIS + + #include <openssl/dsa.h> + + int DSA_size(DSA *dsa); + +=head1 DESCRIPTION + +This function returns the size of an ASN.1 encoded DSA signature in +bytes. It can be used to determine how much memory must be allocated +for a DSA signature. + +B<dsa-E<gt>q> must not be B<NULL>. + +=head1 RETURN VALUE + +The size in bytes. + +=head1 SEE ALSO + +L<dsa(3)|dsa(3)>, L<DSA_sign(3)|DSA_sign(3)> + +=head1 HISTORY + +DSA_size() is available in all versions of SSLeay and OpenSSL. + +=cut diff --git a/doc/crypto/RSA_get_ex_new_index.pod b/doc/crypto/RSA_get_ex_new_index.pod index 2d3d0a7390..d0267a2ea1 100644 --- a/doc/crypto/RSA_get_ex_new_index.pod +++ b/doc/crypto/RSA_get_ex_new_index.pod @@ -2,7 +2,7 @@ =head1 NAME -RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data - add application specific data to RSA structures. +RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data - add application specific data to RSA structures =head1 SYNOPSIS @@ -13,7 +13,7 @@ RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data - add application specifi CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); - int RSA_set_ex_data(RSA *r,int idx,void *arg); + int RSA_set_ex_data(RSA *r, int idx, void *arg); void *RSA_get_ex_data(RSA *r, int idx); @@ -22,6 +22,7 @@ RSA_get_ex_new_index, RSA_set_ex_data, RSA_get_ex_data - add application specifi void free_func(void *parent, void *ptr, CRYPTO_EX_DATA *ad, int idx, long argl, void *argp); + int dup_func(CRYPTO_EX_DATA *to, CRYPTO_EX_DATA *from, void *from_d, int idx, long argl, void *argp); @@ -115,7 +116,7 @@ L<rsa(3)|rsa(3)> =head1 HISTORY -RSA_get_ex_new_index(), RSA_set_ex_data() and RSA_get_ex_data are +RSA_get_ex_new_index(), RSA_set_ex_data() and RSA_get_ex_data() are available since SSLeay 0.9.0. =cut diff --git a/doc/crypto/SHA1.pod b/doc/crypto/SHA1.pod new file mode 100644 index 0000000000..30fc6c9ec1 --- /dev/null +++ b/doc/crypto/SHA1.pod @@ -0,0 +1,36 @@ +=pod + +=head1 NAME + +SHA1 - Compute SHA1 hash + +=head1 SYNOPSIS + + #include <openssl/sha.h> + + unsigned char *SHA1(const unsigned char *d, unsigned long n, + unsigned char *md); + +=head1 DESCRIPTION + +SHA1() computes the SHA-1 message digest of the B<n> bytes at B<d> and +places it in B<md> (which must have space for SHA_DIGEST_LENGTH == 20 +bytes of output). If B<md> is NULL, the digest is placed in a static +array. + +L<SHA1_Init(3)|SHA1_Init(3)> may be used if the message is not completely +stored in memory. + +=head1 RETURN VALUE + +SHA1() returns a pointer to the hash value. + +=head1 HISTORY + +SHA1() is available in all versions of SSLeay and OpenSSL. + +=head1 SEE ALSO + +sha(3), ripemd(3), SHA1_Init(3) + +=cut diff --git a/doc/crypto/SHA1_Init.pod b/doc/crypto/SHA1_Init.pod new file mode 100644 index 0000000000..258f189b9f --- /dev/null +++ b/doc/crypto/SHA1_Init.pod @@ -0,0 +1,42 @@ +=pod + +=head1 NAME + +SHA1_Init, SHA1_Update_SHA1_Final - Compute SHA1 hash + +=head1 SYNOPSIS + + #include <openssl/sha.h> + + void SHA1_Init(SHA_CTX *c); + void SHA1_Update(SHA_CTX *c, const unsigned char *data, + unsigned long len); + void SHA1_Final(unsigned char *md, SHA_CTX *c); + +=head1 DESCRIPTION + +SHA1_Init() initializes a B<SHA_CTX> structure. + +SHA1_Update() can be called repeatedly with chunks of the message to +be hashed (B<len> bytes at B<data>). + +SHA1_Final() places the message digest in B<md>, which must have space +for SHA_DIGEST_LENGTH == 20 bytes of output, and erases the B<SHA_CTX>. + +When the entire message is available at one time, L<SHA1(3)|SHA(1)> +can be used. + +=head1 RETURN VALUES + +SHA1_Init(), SHA1_Update() and SHA1_Final() do not return values. + +=head1 HISTORY + +SHA1_Init(), SHA1_Update() and SHA1_Final()are available in all +versions of SSLeay and OpenSSL. + +=head1 SEE ALSO + +sha(3), ripemd(3), SHA1(3) + +=cut diff --git a/doc/crypto/bn.pod b/doc/crypto/bn.pod index ca48019b96..3d4840f095 100644 --- a/doc/crypto/bn.pod +++ b/doc/crypto/bn.pod @@ -59,6 +59,7 @@ bn - Multiprecision integer arithmetics unsigned long BN_get_word(BIGNUM *a); int BN_rand(BIGNUM *rnd, int bits, int top,int bottom); + int BN_pseudo_rand(BIGNUM *rnd, int bits, int top,int bottom); BIGNUM *BN_generate_prime(BIGNUM *ret,int bits,int safe,BIGNUM *add, BIGNUM *rem,void (*callback)(int,int,void *),void *cb_arg); diff --git a/doc/crypto/dh.pod b/doc/crypto/dh.pod index ce32555367..0a9b7c03a2 100644 --- a/doc/crypto/dh.pod +++ b/doc/crypto/dh.pod @@ -8,22 +8,11 @@ dh - Diffie-Hellman key agreement #include <openssl/dh.h> - void DH_set_default_method(DH_METHOD *meth); - DH_METHOD *DH_get_default_method(void); - DH_METHOD *DH_set_method(DH *dh, DH_METHOD *meth); - DH *DH_new_method(DH_METHOD *meth); - DH_METHOD *DH_OpenSSL(void); - DH * DH_new(void); void DH_free(DH *dh); int DH_size(DH *dh); - int DH_get_ex_new_index(long argl, char *argp, int (*new_func)(), - int (*dup_func)(), void (*free_func)()); - int DH_set_ex_data(DH *d, int idx, char *arg); - char *DH_get_ex_data(DH *d, int idx); - DH * DH_generate_parameters(int prime_len, int generator, void (*callback)(int, int, void *), void *cb_arg); int DH_check(DH *dh, int *codes); @@ -31,6 +20,17 @@ dh - Diffie-Hellman key agreement int DH_generate_ke |