Top Fields Constructors Methods
com.mysql.cj.protocol.a.authentication

public Class Sha256PasswordPlugin

extends Object
implements AuthenticationPlugin<NativePacketPayload>
Class Inheritance
All Implemented Interfaces
com.mysql.cj.protocol.AuthenticationPlugin
Known Direct Subclasses
com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin
Imports
java.io.BufferedInputStream, .File, .FileInputStream, .IOException, java.util.List, com.mysql.cj.Messages, com.mysql.cj.callback.MysqlCallbackHandler, .UsernameCallback, com.mysql.cj.conf.PropertyKey, .PropertySet, .RuntimeProperty, com.mysql.cj.exceptions.CJException, .ExceptionFactory, .ExceptionInterceptor, .UnableToConnectException, .WrongArgumentException, com.mysql.cj.protocol.AuthenticationPlugin, .ExportControlled, .Protocol, .Security, com.mysql.cj.protocol.a.NativeConstants, .NativeConstants.IntegerDataType, .NativeConstants.StringSelfDataType, .NativePacketPayload, com.mysql.cj.util.StringUtils

Field Summary

Modifier and TypeField and Description
protected String
public static String
protected Protocol<NativePacketPayload>
protected boolean
protected String
protected String
protected RuntimeProperty<String>
protected MysqlCallbackHandler

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
destroy()

Overrides default com.mysql.cj.protocol.AuthenticationPlugin.destroy.

Called by the driver when this extension should release any resources it is holding and cleanup internally before the connection is closed.

protected byte[]
protected byte[]
encryptPassword(String transformation)

public String
getProtocolPluginName()

Implements com.mysql.cj.protocol.AuthenticationPlugin.getProtocolPluginName.

Returns the client-side name that the MySQL server uses on the wire for this plugin.

public void
init(Protocol<NativePacketPayload>
the protocol instance
prot
,
MysqlCallbackHandler
a callback handler to provide additional information to the authentication provider
cbh
)

Overrides default com.mysql.cj.protocol.AuthenticationPlugin.init.

Initializes this plugin with a direct Protocol reference and a generic MysqlCallbackHandler that can be used to pass over information back to the authentication provider.

public boolean
public boolean
nextAuthenticationStep(NativePacketPayload
a buffer containing handshake data payload from server (can be empty).
fromServer
,
List<NativePacketPayload>
list of buffers with data to be sent to the server (the list can be empty, but buffers in the list should contain data).
toServer
)

Implements com.mysql.cj.protocol.AuthenticationPlugin.nextAuthenticationStep.

Process authentication handshake data from server and optionally produce data to be sent back to the server.

protected static String
readRSAKey(String pkPath, PropertySet propertySet, ExceptionInterceptor exceptionInterceptor)

public boolean
requiresConfidentiality()

Implements com.mysql.cj.protocol.AuthenticationPlugin.requiresConfidentiality.

Does this plugin require the connection itself to be confidential (i.e. tls/ssl)...Highly recommended to return "true" for plugins that return the credentials in the clear.

public void
setAuthenticationParameters(String
user name
user
,
String
user password
password
)

Implements com.mysql.cj.protocol.AuthenticationPlugin.setAuthenticationParameters.

This method called from Connector/J before first nextAuthenticationStep call.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

passwordback to summary
protected String password
PLUGIN_NAMEback to summary
public static String PLUGIN_NAME
protocolback to summary
protected Protocol<NativePacketPayload> protocol
publicKeyRequestedback to summary
protected boolean publicKeyRequested
publicKeyStringback to summary
protected String publicKeyString
seedback to summary
protected String seed
serverRSAPublicKeyFileback to summary
protected RuntimeProperty<String> serverRSAPublicKeyFile
usernameCallbackHandlerback to summary
protected MysqlCallbackHandler usernameCallbackHandler

Constructor Detail

Sha256PasswordPluginback to summary
public Sha256PasswordPlugin()

Method Detail

destroyback to summary
public void destroy()

Overrides default com.mysql.cj.protocol.AuthenticationPlugin.destroy.

Doc from com.mysql.cj.protocol.AuthenticationPlugin.destroy.

Called by the driver when this extension should release any resources it is holding and cleanup internally before the connection is closed.

Annotations
@Override
encryptPasswordback to summary
protected byte[] encryptPassword()
encryptPasswordback to summary
protected byte[] encryptPassword(String transformation)
getProtocolPluginNameback to summary
public String getProtocolPluginName()

Implements com.mysql.cj.protocol.AuthenticationPlugin.getProtocolPluginName.

Doc from com.mysql.cj.protocol.AuthenticationPlugin.getProtocolPluginName.

Returns the client-side name that the MySQL server uses on the wire for this plugin.

Returns:String

plugin name

Annotations
@Override
initback to summary
public void init(Protocol<NativePacketPayload> prot, MysqlCallbackHandler cbh)

Overrides default com.mysql.cj.protocol.AuthenticationPlugin.init.

Doc from com.mysql.cj.protocol.AuthenticationPlugin.init.

Initializes this plugin with a direct Protocol reference and a generic MysqlCallbackHandler that can be used to pass over information back to the authentication provider. For example an authentication plugin may accept null usernames and use that information to obtain them from some external source, such as the system login.

Parameters
prot:Protocol<NativePacketPayload>

the protocol instance

cbh:MysqlCallbackHandler

a callback handler to provide additional information to the authentication provider

Annotations
@Override
isReusableback to summary
public boolean isReusable()

Implements com.mysql.cj.protocol.AuthenticationPlugin.isReusable.

Returns:boolean

Doc from com.mysql.cj.protocol.AuthenticationPlugin.isReusable.

true if plugin instance may be reused, false otherwise

Annotations
@Override
nextAuthenticationStepback to summary
public boolean nextAuthenticationStep(NativePacketPayload fromServer, List<NativePacketPayload> toServer)

Implements com.mysql.cj.protocol.AuthenticationPlugin.nextAuthenticationStep.

Doc from com.mysql.cj.protocol.AuthenticationPlugin.nextAuthenticationStep.

Process authentication handshake data from server and optionally produce data to be sent back to the server. The driver will keep calling this method on each new server packet arrival until either an Exception is thrown (authentication failure, please use appropriate SQLStates) or the number of exchange iterations exceeded max limit or an OK packet is sent by server indicating that the connection has been approved. If, on return from this method, toServer is a non-empty list of buffers, then these buffers will be sent to the server in the same order and without any reads in between them. If toServer is an empty list, no data will be sent to server, driver immediately reads the next packet from server. In case of errors the method should throw Exception.

Parameters
fromServer:NativePacketPayload

a buffer containing handshake data payload from server (can be empty).

toServer:List<NativePacketPayload>

list of buffers with data to be sent to the server (the list can be empty, but buffers in the list should contain data).

Returns:boolean

return value is ignored.

Annotations
@Override
readRSAKeyback to summary
protected static String readRSAKey(String pkPath, PropertySet propertySet, ExceptionInterceptor exceptionInterceptor)
requiresConfidentialityback to summary
public boolean requiresConfidentiality()

Implements com.mysql.cj.protocol.AuthenticationPlugin.requiresConfidentiality.

Doc from com.mysql.cj.protocol.AuthenticationPlugin.requiresConfidentiality.

Does this plugin require the connection itself to be confidential (i.e. tls/ssl)...Highly recommended to return "true" for plugins that return the credentials in the clear.

Returns:boolean

true if secure connection is required

Annotations
@Override
setAuthenticationParametersback to summary
public void setAuthenticationParameters(String user, String password)

Implements com.mysql.cj.protocol.AuthenticationPlugin.setAuthenticationParameters.

Doc from com.mysql.cj.protocol.AuthenticationPlugin.setAuthenticationParameters.

This method called from Connector/J before first nextAuthenticationStep call. Values of user and password parameters are passed from those in NativeAuthenticationProvider#changeUser() or NativeAuthenticationProvider#connect(). Plugin should use these values instead of values from connection properties because parent method may be a changeUser call which saves user and password into connection only after successful handshake.

Parameters
user:String

user name

password:String

user password

Annotations
@Override