crypto: check for and report errors setting PSK credentials
If setting credentials fails, the handshake will later fail to complete with an obscure error message which is hard to diagnose. Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
		
							parent
							
								
									dd84a906e0
								
							
						
					
					
						commit
						3983bf1b41
					
				| @ -109,7 +109,12 @@ qcrypto_tls_creds_psk_load(QCryptoTLSCredsPSK *creds, | ||||
|             goto cleanup; | ||||
|         } | ||||
| 
 | ||||
|         gnutls_psk_set_server_credentials_file(creds->data.server, pskfile); | ||||
|         ret = gnutls_psk_set_server_credentials_file(creds->data.server, pskfile); | ||||
|         if (ret < 0) { | ||||
|             error_setg(errp, "Cannot set PSK server credentials: %s", | ||||
|                        gnutls_strerror(ret)); | ||||
|             goto cleanup; | ||||
|         } | ||||
|         gnutls_psk_set_server_dh_params(creds->data.server, | ||||
|                                         creds->parent_obj.dh_params); | ||||
|     } else { | ||||
| @ -135,8 +140,13 @@ qcrypto_tls_creds_psk_load(QCryptoTLSCredsPSK *creds, | ||||
|             goto cleanup; | ||||
|         } | ||||
| 
 | ||||
|         gnutls_psk_set_client_credentials(creds->data.client, | ||||
|                                           username, &key, GNUTLS_PSK_KEY_HEX); | ||||
|         ret = gnutls_psk_set_client_credentials(creds->data.client, | ||||
|                                                 username, &key, GNUTLS_PSK_KEY_HEX); | ||||
|         if (ret < 0) { | ||||
|             error_setg(errp, "Cannot set PSK client credentials: %s", | ||||
|                        gnutls_strerror(ret)); | ||||
|             goto cleanup; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     rv = 0; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Daniel P. Berrangé
						Daniel P. Berrangé