1 | /* Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved. |
2 | |
3 | This program is free software; you can redistribute it and/or |
4 | modify it under the terms of the GNU General Public License as |
5 | published by the Free Software Foundation; version 2 of the |
6 | License. |
7 | |
8 | This program is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
11 | GNU General Public License for more details. |
12 | |
13 | You should have received a copy of the GNU General Public License |
14 | along with this program; if not, write to the Free Software |
15 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ |
16 | |
17 | #include <my_global.h> |
18 | #include <mysql/plugin_auth.h> |
19 | #include <mysql/client_plugin.h> |
20 | #include <string.h> |
21 | #include <stdio.h> |
22 | #include <stdlib.h> |
23 | |
24 | /********************* SERVER SIDE ****************************************/ |
25 | |
26 | static int qa_auth_interface (MYSQL_PLUGIN_VIO *vio, MYSQL_SERVER_AUTH_INFO *info) |
27 | { |
28 | unsigned char *pkt; |
29 | int pkt_len, err= CR_OK; |
30 | |
31 | /* send a password question */ |
32 | if (vio->write_packet(vio, (const unsigned char *) PASSWORD_QUESTION, 1)) |
33 | return CR_ERROR; |
34 | |
35 | /* read the answer */ |
36 | if ((pkt_len= vio->read_packet(vio, &pkt)) < 0) |
37 | return CR_ERROR; |
38 | |
39 | info->password_used= PASSWORD_USED_YES; |
40 | |
41 | /* fail if the password is wrong */ |
42 | if (strcmp((const char *) pkt, info->auth_string)) |
43 | return CR_ERROR; |
44 | |
45 | /* Test of default_auth */ |
46 | if (strcmp(info->user_name, "qa_test_11_user" )== 0) |
47 | { |
48 | strcpy(info->authenticated_as, "qa_test_11_dest" ); |
49 | } |
50 | else |
51 | err= CR_ERROR; |
52 | return err; |
53 | } |
54 | |
55 | static struct st_mysql_auth qa_auth_test_handler= |
56 | { |
57 | MYSQL_AUTHENTICATION_INTERFACE_VERSION, |
58 | "qa_auth_interface" , /* requires test_plugin client's plugin */ |
59 | qa_auth_interface |
60 | }; |
61 | |
62 | mysql_declare_plugin(test_plugin) |
63 | { |
64 | MYSQL_AUTHENTICATION_PLUGIN, |
65 | &qa_auth_test_handler, |
66 | "qa_auth_server" , |
67 | "Horst Hunger" , |
68 | "plugin API test plugin" , |
69 | PLUGIN_LICENSE_GPL, |
70 | NULL, |
71 | NULL, |
72 | 0x0100, |
73 | NULL, |
74 | NULL, |
75 | NULL, |
76 | 0, |
77 | } |
78 | mysql_declare_plugin_end; |
79 | |