Skip to content

Commit 621d703

Browse files
committed
Is_Secure: New routine in Socket API
1 parent f3a784b commit 621d703

File tree

8 files changed

+30
-5
lines changed

8 files changed

+30
-5
lines changed

regtests/0155_user_sock/usock.ads

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ package USock is
8585

8686
overriding function Is_Listening (Socket : U_Socket) return Boolean;
8787

88+
overriding function Is_Secure (Socket : U_Socket) return Boolean;
89+
8890
overriding procedure Set_Send_Buffer_Size
8991
(Socket : U_Socket;
9092
Size : Natural);
@@ -115,4 +117,7 @@ private
115117
Server : Boolean := False;
116118
end record;
117119

120+
overriding function Is_Secure (Socket : U_Socket) return Boolean
121+
is (False);
122+
118123
end USock;

src/core/aws-client.adb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,7 +493,7 @@ package body AWS.Client is
493493
Connect (Connection.Self.all);
494494
end if;
495495

496-
if Connection.Socket.all in AWS.Net.SSL.Socket_Type'Class then
496+
if Connection.Socket.Is_Secure then
497497
return Net.SSL.Certificate.Get
498498
(Net.SSL.Socket_Type (Connection.Socket.all));
499499
else

src/core/aws-net-memory.ads

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ package AWS.Net.Memory is
150150
overriding function Errno (Socket : Socket_Type) return Integer;
151151
-- Returns and clears error state in socket
152152

153+
overriding function Is_Secure (Socket : Socket_Type) return Boolean;
154+
153155
private
154156

155157
type Element_Access is access Stream_Element_Array;
@@ -171,4 +173,7 @@ private
171173

172174
overriding procedure Initialize (Socket : in out Socket_Type);
173175

176+
overriding function Is_Secure (Socket : Socket_Type) return Boolean
177+
is (False);
178+
174179
end AWS.Net.Memory;

src/core/aws-net-ssl.ads

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,8 @@ package AWS.Net.SSL is
336336
Key : Private_Key;
337337
Hash : Hash_Method) return Stream_Element_Array with Inline;
338338

339+
overriding function Is_Secure (Socket : Socket_Type) return Boolean;
340+
339341
private
340342

341343
package TSSL renames Standard.SSL.Thin;
@@ -425,4 +427,7 @@ private
425427
Hash : Hash_Method) return Stream_Element_Array
426428
is (Signature (Data'Address, Data'Length, Key, Hash));
427429

430+
overriding function Is_Secure (Socket : Socket_Type) return Boolean
431+
is (True);
432+
428433
end AWS.Net.SSL;

src/core/aws-net-std.ads

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ package AWS.Net.Std is
176176
overriding function Errno (Socket : Socket_Type) return Integer;
177177
-- Returns and clears error state in socket
178178

179+
overriding function Is_Secure (Socket : Socket_Type) return Boolean;
180+
179181
private
180182

181183
type Socket_Hidden;
@@ -200,4 +202,7 @@ private
200202
-- readable manner. Declare in specification because it is common code for
201203
-- GNAT and IPv6 implementations.
202204

205+
overriding function Is_Secure (Socket : Socket_Type) return Boolean
206+
is (False);
207+
203208
end AWS.Net.Std;

src/core/aws-net-websocket.ads

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ package AWS.Net.WebSocket is
257257
-- Returns a unique id for the given socket. The uniqueness for this socket
258258
-- is guaranteed during the lifetime of the application.
259259

260+
overriding function Is_Secure (Socket : Object) return Boolean;
261+
260262
private
261263

262264
type Internal_State is record
@@ -412,4 +414,7 @@ private
412414
-- stage, Socket.On_Message will be called.
413415
-- In case of error, other callbacks will be used as appropriate.
414416

417+
overriding function Is_Secure (Socket : Object) return Boolean
418+
is (Socket.Socket.Is_Secure);
419+
415420
end AWS.Net.WebSocket;

src/core/aws-net.ads

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,9 @@ package AWS.Net is
228228
-- Returns true if the socket has been marked to accept connections with
229229
-- listen.
230230

231+
function Is_Secure (Socket : Socket_Type) return Boolean is abstract;
232+
-- Returns True if socket is secure
233+
231234
function IPv6_Available return Boolean;
232235
-- Returns True if IPv6 available in OS and in AWS socket implementation
233236

src/core/aws-server.adb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
pragma Ada_2012;
3131

3232
with Ada.Streams;
33-
with Ada.Tags;
3433
with Ada.Text_IO;
3534
with Ada.Unchecked_Deallocation;
3635

@@ -77,8 +76,6 @@ package body AWS.Server is
7776
(Server : not null access HTTP)
7877
return not null access Net.Socket_Type'Class
7978
is
80-
use type Ada.Tags.Tag;
81-
8279
New_Socket : Net.Socket_Access;
8380

8481
procedure Accept_Error (E : Ada.Exceptions.Exception_Occurrence);
@@ -101,7 +98,7 @@ package body AWS.Server is
10198
Net.Acceptors.Get (Server.Acceptor, New_Socket, Accept_Error'Access);
10299

103100
if CNF.Security (Server.Properties)
104-
and then New_Socket'Tag /= Net.SSL.Socket_Type'Tag
101+
and then not New_Socket.Is_Secure
105102
then
106103
declare
107104
SSL_Socket : Net.Socket_Access;

0 commit comments

Comments
 (0)