Added SRP_VBASE_add0_user()
authorAntoine Salon <asalon@vmware.com>
Thu, 1 Nov 2018 18:56:55 +0000 (11:56 -0700)
committerMatt Caswell <matt@openssl.org>
Thu, 15 Nov 2018 10:53:47 +0000 (10:53 +0000)
Signed-off-by: Antoine Salon <asalon@vmware.com>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/7522)

crypto/srp/srp_vfy.c
doc/man3/SRP_VBASE_new.pod
doc/man3/SRP_create_verifier.pod
include/openssl/srp.h
util/libcrypto.num

index 622fffbcd0665c89d02578b310c5db5806e1fa09..397d26c9d7e0b835f85b72678c69539895849351 100644 (file)
@@ -514,6 +514,13 @@ static SRP_user_pwd *find_user(SRP_VBASE *vb, char *username)
     return NULL;
 }
 
+int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd)
+{
+    if (sk_SRP_user_pwd_push(vb->users_pwd, user_pwd) <= 0)
+        return 0;
+    return 1;
+}
+
 # if OPENSSL_API_COMPAT < 0x10100000L
 /*
  * DEPRECATED: use SRP_VBASE_get1_by_user instead.
index b235e58710164ece6a132c9b5d194d549e45b815..76044ac451469aaabf7590244264c8b4460b11df 100644 (file)
@@ -6,6 +6,7 @@ SRP_VBASE_new,
 SRP_VBASE_free,
 SRP_user_pwd_free,
 SRP_VBASE_init,
+SRP_VBASE_add0_user,
 SRP_VBASE_get1_by_user,
 SRP_VBASE_get_by_user
 - Functions to create and manage a stack of SRP user verifier information
@@ -20,6 +21,7 @@ SRP_VBASE_get_by_user
 
  int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file);
 
+ int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd);
  SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username);
  SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username);
 
@@ -47,6 +49,10 @@ where the flag can be 'V' (valid) or 'R' (revoked).
 Note that the base64 encoding used here is non-standard so it is recommended
 to use L<srp(1)> to generate this file.
 
+The SRP_VBASE_add0_user() function adds the B<user_pwd> verifier information
+to the B<vb> structure.
+The library takes ownership of B<user_pwd>, it should not be freed by the caller.
+
 The SRP_VBASE_get1_by_user() function returns the password info for the user
 whose username matches B<username>. It replaces the deprecated
 SRP_VBASE_get_by_user().
@@ -69,6 +75,8 @@ B<SRP_ERR_VBASE_INCOMPLETE_FILE> if the file could not be parsed,
 B<SRP_ERR_MEMORY> on memory allocation failure and B<SRP_ERR_VBASE_BN_LIB>
 for invalid decoded parameter values.
 
+SRP_VBASE_add0_user() returns 1 on success and 0 on failure.
+
 =head1 SEE ALSO
 
 L<srp(1)>,
@@ -77,7 +85,9 @@ L<SSL_CTX_set_srp_password(3)>
 
 =head1 HISTORY
 
-These functions were first added to OpenSSL 1.0.1.
+SRP_VBASE_add0_user() was first added to OpenSSL 1.2.0.
+
+All other functions were first added to OpenSSL 1.0.1.
 
 =head1 COPYRIGHT
 
index 9741c5c47cda886ba88028b57c95c0db95fd8b8f..f899b2471a428e21b477bd9e4202bc19ccda9c6c 100644 (file)
@@ -90,7 +90,7 @@ omitted for clarity):
  pwd->v = verifier;
  pwd->info = NULL;
 
sk_SRP_user_pwd_push(srpData->users_pwd, pwd);
SRP_VBASE_add0_user(srpData, pwd);
 
 =head1 SEE ALSO
 
index aaf13558e3cb4caeedc272914c6684d76cd25bf0..8189d3e403ed4b0ae6fe43c5824e707df91e2a5d 100644 (file)
@@ -75,6 +75,7 @@ SRP_VBASE *SRP_VBASE_new(char *seed_key);
 void SRP_VBASE_free(SRP_VBASE *vb);
 int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file);
 
+int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd);
 /* This method ignores the configured seed and fails for an unknown user. */
 DEPRECATEDIN_1_1_0(SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username))
 /* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/
index c6de172f8e72fe9d0131b771d453b74e83634e5a..c1c90110a8d2bee1fa40d22108ac1fcc89b65311 100644 (file)
@@ -4598,3 +4598,4 @@ EVP_MAC_do_all_sorted                   4551      1_1_2   EXIST::FUNCTION:
 EVP_str2ctrl                            4552   1_1_2   EXIST::FUNCTION:
 EVP_hex2ctrl                            4553   1_1_2   EXIST::FUNCTION:
 EVP_PKEY_supports_digest_nid            4554   1_1_2   EXIST::FUNCTION:
+SRP_VBASE_add0_user                     4555   1_1_2   EXIST::FUNCTION:SRP