Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
465 commits
Select commit Hold shift + click to select a range
4e45818
another test that requires entitlements
sbSteveK Nov 4, 2024
df15054
split out the tls block of parameters
sbSteveK Nov 5, 2024
649d554
s_setup_tls_options needs to be wrapped in ifdef Secitem
sbSteveK Nov 5, 2024
b3b6645
simplify parameters logic
sbSteveK Nov 5, 2024
b7882f9
SecItem does not use tls channel statistics
sbSteveK Nov 5, 2024
e875822
allow passing of an event loop into a server listener bind
sbSteveK Nov 5, 2024
8674aa7
forgot iocp socket_bind
sbSteveK Nov 5, 2024
1efece0
missed it
sbSteveK Nov 5, 2024
e66a9a6
cleanup and test fix for windows
sbSteveK Nov 5, 2024
6836232
restore s2n in cmakelists
sbSteveK Nov 6, 2024
b4c9306
aws_apple_network_framework.h should only be used with Apple OS
sbSteveK Nov 6, 2024
79ba389
documentation
sbSteveK Nov 6, 2024
32ea35d
more documentation and logic simplification
sbSteveK Nov 7, 2024
0ba007b
cleanup
sbSteveK Nov 7, 2024
565de94
simplify tls error_code reporting in channel bootstrap
sbSteveK Nov 7, 2024
b7b96ca
documentation and reorder
sbSteveK Nov 7, 2024
31eab1e
documentation and cleanup
sbSteveK Nov 8, 2024
bf4680a
unify tls options from context
sbSteveK Nov 8, 2024
bd6d2da
remove unecessary check
sbSteveK Nov 8, 2024
5e95bbb
wrap secitem function execution within a block to maintin min macOS v…
sbSteveK Nov 8, 2024
72b51a0
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 8, 2024
69c22b4
clean up merge changes
xiazhvera Nov 8, 2024
1b79cbd
fix dispatch queue test flag
xiazhvera Nov 8, 2024
e613e5d
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 9, 2024
28b7546
update socket api changes for network framework
xiazhvera Nov 9, 2024
351c682
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 9, 2024
f24d637
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 9, 2024
0d69dd7
add apple socket init
xiazhvera Nov 9, 2024
c408e30
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 11, 2024
145e7d7
hide dispatch_queue.h
xiazhvera Nov 11, 2024
3a4eaca
fix merge error
xiazhvera Nov 11, 2024
35934d3
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 12, 2024
11d0f84
rename enum
xiazhvera Nov 12, 2024
8320127
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 12, 2024
652195b
remove warning on nw socket
xiazhvera Nov 12, 2024
1637a88
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 12, 2024
658463a
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 12, 2024
d0dddda
extend the shutdown wait time
xiazhvera Nov 12, 2024
41923c1
initial merge with latest nw_socket
sbSteveK Nov 13, 2024
14a79cc
definition misspelling
sbSteveK Nov 13, 2024
31fd471
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Nov 29, 2024
d784f96
include private socket header
xiazhvera Nov 29, 2024
d880859
improve readme
xiazhvera Dec 3, 2024
8daedcb
merge with latest nw_socket
sbSteveK Dec 4, 2024
aa21e8b
include private socket header for secure_transport_tls_channel_handler.c
sbSteveK Dec 4, 2024
5c211f1
handle duplicate functions related to darwin
sbSteveK Dec 4, 2024
fd147d1
wrong define label
sbSteveK Dec 4, 2024
6b9a05b
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Dec 20, 2024
630d0bb
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 7, 2025
1dc7c7d
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 8, 2025
0b7ba13
update renamed files
xiazhvera Jan 8, 2025
e9576c0
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 8, 2025
9b8fb15
[WIP]socket shutdown test
xiazhvera Jan 9, 2025
f6e86f9
clean up s_setup_tls_options_from_context
sbSteveK Jan 9, 2025
252f118
additional checks and logging for s_socket_bind_fn
sbSteveK Jan 9, 2025
e12f697
check whether any tls options need to be retrieved before assigning
sbSteveK Jan 9, 2025
eb0ae4e
remove check against tls_options in retrieval of tls options
sbSteveK Jan 9, 2025
84b159b
update ci.yml to use new credentials
sbSteveK Jan 9, 2025
5a8ed58
fix permissions in github ci
sbSteveK Jan 9, 2025
535d92b
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 9, 2025
edb248d
forgot linux-byo-crypto
sbSteveK Jan 9, 2025
95464ab
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 9, 2025
a5094d2
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 9, 2025
4992f4e
Merge branch 'nw_socket' of github.com:awslabs/aws-c-io into nw_socke…
xiazhvera Jan 10, 2025
0588e5c
[WIP] quick test releasing connection in aws_socket_close
xiazhvera Jan 13, 2025
c094abf
verify connection is released
xiazhvera Jan 13, 2025
96c3c71
[WIP]test remove shutdown callbacks
xiazhvera Jan 13, 2025
d114817
[WIP]remove sleep for tests
xiazhvera Jan 13, 2025
84b3299
[WIP]test socket without channel change
xiazhvera Jan 16, 2025
c65daa0
[WIP]partially fixed the race condition
xiazhvera Jan 17, 2025
a457935
[wip]fix print and test again
xiazhvera Jan 17, 2025
967379a
validate close state before processing
xiazhvera Jan 17, 2025
0397c14
avoid state update after closing socket.
xiazhvera Jan 21, 2025
aabba3c
quick dispatch queue test
xiazhvera Jan 21, 2025
5f95766
fix event loop lock
xiazhvera Jan 21, 2025
e9e5ee3
fix compile
xiazhvera Jan 21, 2025
cff2fd1
WIP try not null out state_change handler
xiazhvera Jan 23, 2025
dbeb628
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Jan 23, 2025
44bb099
Merge branch 'nw_socket' of github.com:awslabs/aws-c-io into nw_socke…
xiazhvera Jan 23, 2025
d960c5a
WIP: shutdown callback invoked after aws_socket_clean_up()
xiazhvera Jan 27, 2025
a4c1468
revert cancel changes
xiazhvera Jan 28, 2025
b98c09a
experiment for close callback in socket handler
xiazhvera Jan 29, 2025
03eb5a1
improve channel handler shutdown...
xiazhvera Jan 29, 2025
7e709cc
setup shutdown callback on socket close
xiazhvera Jan 30, 2025
b1fcf8d
fix cmake merge
xiazhvera Jan 30, 2025
9733a56
fix use-after-free print
xiazhvera Jan 30, 2025
9fc5d4a
fix syntax
xiazhvera Jan 30, 2025
d0b3143
WIP add lock for socket state
xiazhvera Jan 31, 2025
1f9b1ef
TEST: test non-callback unit tests
xiazhvera Jan 31, 2025
c8484df
workaround deadlock...
xiazhvera Jan 31, 2025
1fa11ed
improve event loop validation
xiazhvera Feb 3, 2025
b3cc904
add cleanup callback...
xiazhvera Feb 3, 2025
4becc61
update test to avoid deadlock
xiazhvera Feb 3, 2025
b79b9a3
fix nw_socket state update workflow
xiazhvera Feb 3, 2025
2c54a76
TEST: clean up socket access
xiazhvera Feb 3, 2025
5e24039
TEST socket wrapped with lock
xiazhvera Feb 4, 2025
19cd3c1
TEST: sleep to wait for event loop cleanup
xiazhvera Feb 4, 2025
fe95355
clean up socket and more comments
xiazhvera Feb 4, 2025
73f701a
rename some functions
xiazhvera Feb 5, 2025
7bb9d06
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Feb 6, 2025
96e8643
fix merge conflicts
xiazhvera Feb 6, 2025
7590685
Merge branch 'nw_socket' of github.com:awslabs/aws-c-io into nw_socke…
xiazhvera Feb 6, 2025
7809d15
acquire event loop group for nw_socket
xiazhvera Feb 6, 2025
cdfab7e
set CI us DAWS_USE_APPLE_NETWORK_FRAMEWORK
xiazhvera Feb 6, 2025
43ee31f
use shutdown callback in test
xiazhvera Feb 6, 2025
c4d7096
add more sleep
xiazhvera Feb 6, 2025
36bf219
add more sleep & improve readable task
xiazhvera Feb 6, 2025
8709bb2
TEST: a quick hacky adjustment for unit tests..
xiazhvera Feb 7, 2025
1f4def1
clean up channel_bootstrap
xiazhvera Feb 7, 2025
f641e4e
add shutdown callbacks for windows
xiazhvera Feb 7, 2025
e6fcc3c
fix windows&setup listener state task
xiazhvera Feb 7, 2025
439b5ef
revert complete changes
xiazhvera Feb 7, 2025
1dfd6fa
TEST: verify event loop group ref count
xiazhvera Feb 7, 2025
3fc15b3
use event loop group in unit test
xiazhvera Feb 7, 2025
8ed037c
fix missing lock
xiazhvera Feb 7, 2025
de14a43
fix condition_var notify
xiazhvera Feb 10, 2025
35f94d9
clang-format
xiazhvera Feb 10, 2025
369eb0b
socket close on peer close
xiazhvera Feb 10, 2025
8c4bdba
NW Socket Shutdown Process Update (#705)
xiazhvera Feb 10, 2025
be1c90e
clean up
xiazhvera Feb 10, 2025
acd6659
Merge branch 'nw_socket' of github.com:awslabs/aws-c-io into nw_socket
xiazhvera Feb 10, 2025
07c46bd
Checkpoint
Feb 10, 2025
79e8b0e
fix channel destory after callback
xiazhvera Feb 10, 2025
e258edc
Checkpoint before migrating permanently to socket branch
Feb 11, 2025
b5098c0
add listener connect callback
xiazhvera Feb 11, 2025
0ad1471
Shutdown rework initial impl
Feb 11, 2025
a25c892
Merge branch 'dq_shutdown' into nw_socket_shutdown2
Feb 11, 2025
0c2face
use default socket impl
xiazhvera Feb 12, 2025
6aa2ee9
Updates
Feb 12, 2025
469615f
Merge branch 'dq_shutdown' into nw_socket_shutdown2
Feb 12, 2025
f661727
Apply updates and remove dispatch queue sleep
Feb 12, 2025
a49b771
fix listener test and on peer socket shutdown
xiazhvera Feb 12, 2025
2627d1c
Race condition fix. A connection that completes instantly would caus…
Feb 12, 2025
8d66c7f
fix state lock
xiazhvera Feb 12, 2025
7d7fc09
expose aws_socket_get_default_impl_type for test
xiazhvera Feb 12, 2025
9bb0a1e
Merge branch 'nw_socket' into nw_socket_shutdown2
Feb 12, 2025
cd41c8f
Doc updates
Feb 12, 2025
4c2a4d1
Merge branch 'dq_shutdown' into nw_socket_shutdown2
Feb 12, 2025
f81423f
Oops
Feb 12, 2025
d49533c
Merge branch 'dq_shutdown' into nw_socket_shutdown2
Feb 12, 2025
bd91776
schedule read request even after the last peer closed
xiazhvera Feb 12, 2025
e837f77
Merge branch 'nw_socket' of github.com:awslabs/aws-c-io into nw_socke…
xiazhvera Feb 12, 2025
6a95f72
bug fix: wrong lock
xiazhvera Feb 13, 2025
5fe71c6
Merge branch 'nw_socket' of github.com:awslabs/aws-c-io into nw_socke…
xiazhvera Feb 13, 2025
8dc88fd
use is_complete to close the socket
xiazhvera Feb 13, 2025
83981c3
add prints to trace read queue
xiazhvera Feb 13, 2025
7dec84e
try fix processing read data on error
xiazhvera Feb 14, 2025
bdcd5ee
WIP: do not cancel connection before write finished
xiazhvera Feb 17, 2025
b5a0e85
WIP: do not cancel connection before write finished
xiazhvera Feb 17, 2025
2d312da
WIP DEBUG read operation on closing
xiazhvera Feb 17, 2025
6043ce4
clean up socket
xiazhvera Feb 17, 2025
2f7eec7
update code review
xiazhvera Feb 18, 2025
043b468
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Feb 18, 2025
5ebcf77
Merge branch 'nw_socket_shutdown' of github.com:awslabs/aws-c-io into…
xiazhvera Feb 18, 2025
17d2190
fix merge
xiazhvera Feb 18, 2025
4b1a553
generaize aws_socket_start_accept api
xiazhvera Feb 18, 2025
b86e381
improve socket state setup
xiazhvera Feb 18, 2025
098b1bd
improve task mem allocation
xiazhvera Feb 19, 2025
c973549
fix socket_cancel and windows
xiazhvera Feb 19, 2025
0368bd9
make sure nw_socket close has an event loop
xiazhvera Feb 19, 2025
304f588
more code review feedback
xiazhvera Feb 19, 2025
214913a
fix windows socket compilation
xiazhvera Feb 19, 2025
5b26835
initial merge with nw_socket changes
sbSteveK Feb 24, 2025
25b5d40
merge fixes
sbSteveK Feb 24, 2025
031a0e0
fix race condition for releasing socket
xiazhvera Feb 24, 2025
ef77447
Merge branch 'nw_socket' into nw_secitem
sbSteveK Feb 24, 2025
460db3d
connection arg release fix
sbSteveK Feb 25, 2025
fbcafd8
[WIP] Test nw_socket with downstream (#711)
xiazhvera Feb 26, 2025
f4e37dc
rename locks...
xiazhvera Feb 27, 2025
438ba0c
WIP: cr update unify how to handle error_code
xiazhvera Feb 27, 2025
ca6cce2
WIP: address comments that are quick fixes...
xiazhvera Feb 27, 2025
a86220d
fix socket state concurrent issue
xiazhvera Feb 27, 2025
166a6c2
clean up locks
xiazhvera Feb 28, 2025
d54729a
clean up s_schedule_next_read & listener_state_changed_hanlder
xiazhvera Feb 28, 2025
6e76302
make sure handle task_cancelled
xiazhvera Feb 28, 2025
e76ee5e
function renames
xiazhvera Feb 28, 2025
894c021
merge latest nw_socket
sbSteveK Mar 3, 2025
e0bdbb5
proof alarm
sbSteveK Mar 3, 2025
d728eb3
format
sbSteveK Mar 3, 2025
89f8856
merge fixes
sbSteveK Mar 3, 2025
c8c50f4
reorder
sbSteveK Mar 3, 2025
f87bfed
remove unecessary defines
sbSteveK Mar 3, 2025
daec16c
rename aws_tls_connection_context
sbSteveK Mar 3, 2025
21ae6a0
minor cleanup and reorg
sbSteveK Mar 3, 2025
921b207
clarification text
sbSteveK Mar 3, 2025
1087070
more clarity
sbSteveK Mar 3, 2025
7f70915
clarification and reordering
sbSteveK Mar 3, 2025
64905a7
clarification and cleanup
sbSteveK Mar 4, 2025
3f96afc
finish cleanup of darwin_pki_utils.c
sbSteveK Mar 4, 2025
6e90de4
remove unecessary declaration
sbSteveK Mar 4, 2025
e5ba712
remove uneccessary include
sbSteveK Mar 4, 2025
c1e04dc
don't need secitem options clean up function
sbSteveK Mar 4, 2025
df223c9
more cleanup
sbSteveK Mar 4, 2025
7617e69
cleanup and change parameter setup to switch
sbSteveK Mar 4, 2025
29c2234
add clarification to what's happening in s_setup_tls_options_from_con…
sbSteveK Mar 4, 2025
312296f
initial removal of event_loop arg from param setup and use of eventlo…
sbSteveK Mar 4, 2025
52616f2
add event_loop check when setting up parameters with tls
sbSteveK Mar 4, 2025
62870e7
worked through s_scoket_connect_fn()
sbSteveK Mar 4, 2025
3a4f245
get event_loop for nw_socket from tls_connection_context in s_socket_…
sbSteveK Mar 4, 2025
0cad5c2
final edits
sbSteveK Mar 4, 2025
8f3fbec
we don't need to pass around an event loop for server
sbSteveK Mar 5, 2025
20d9d70
we need aws_tls_secitem_options_cleanup() in aws-crt-swift
sbSteveK Mar 5, 2025
702989b
fix bootstrap failed count & improve print
xiazhvera Mar 5, 2025
c0ef4fa
don't double report error and don't touch nw_socket from within verif…
sbSteveK Mar 5, 2025
7a7389b
update code review comments
xiazhvera Mar 5, 2025
a8a5b53
aws_socket_connect_options struct
sbSteveK Mar 5, 2025
1ca3eca
windows test
sbSteveK Mar 5, 2025
5b87289
merge latest nw_socket
sbSteveK Mar 5, 2025
c33be54
update async start accept
xiazhvera Mar 5, 2025
12454c6
remove warning
xiazhvera Mar 5, 2025
7aa6656
remove aws_server_bootstrap_new_socket_listener_async
xiazhvera Mar 5, 2025
8b6b925
update server boostrap listener
xiazhvera Mar 5, 2025
188a462
update iocp socket
xiazhvera Mar 5, 2025
8a96f05
Remove aws_server_bootstrap_new_socket_listener_async (#713)
xiazhvera Mar 6, 2025
0c93f4d
clean up socket handler test
xiazhvera Mar 6, 2025
ee20b20
Merge branch 'nw_socket_shutdown' of github.com:awslabs/aws-c-io into…
xiazhvera Mar 6, 2025
21f6177
more comments
xiazhvera Mar 6, 2025
94e7a5b
clang-format
xiazhvera Mar 6, 2025
0d1dd8e
merge latest nw_socket
sbSteveK Mar 6, 2025
1903725
Merge branch 'grand_dispatch_queue' of github.com:awslabs/aws-c-io in…
xiazhvera Mar 6, 2025
d19f6a5
Merge branch 'nw_socket' into nw_secitem
sbSteveK Mar 6, 2025
c56e5a0
initial code review changes
sbSteveK Mar 7, 2025
d584a98
no error overlap in checked errors
sbSteveK Mar 10, 2025
f679925
fix windows iocp socket
sbSteveK Mar 10, 2025
f7f798b
fix windows test
sbSteveK Mar 10, 2025
62d5790
fix windows test
sbSteveK Mar 10, 2025
e30af6f
&
sbSteveK Mar 10, 2025
43ce9ea
improve socket README
xiazhvera Mar 10, 2025
a7fd767
fix tcp keepalive value
xiazhvera Mar 10, 2025
cb09c0b
use a function/bool for secitem branching
sbSteveK Mar 10, 2025
4f99093
secitem_options is no longer a pointer
sbSteveK Mar 10, 2025
9f93834
PR changes: reorders and error on secondary setup of tls
sbSteveK Mar 10, 2025
5634d79
pull state change ready out into its own function
sbSteveK Mar 10, 2025
936509b
improve socket state logging
sbSteveK Mar 10, 2025
09dc97a
merge with latest ns_socket
sbSteveK Mar 11, 2025
ee46e19
fatal assert fix
sbSteveK Mar 11, 2025
03c520e
improve base socket lock & code review update
xiazhvera Mar 12, 2025
bcf3687
add separate logging for prev vs secitem import of pkcs12
sbSteveK Mar 12, 2025
07b2adf
move shared args to private header
xiazhvera Mar 13, 2025
f512314
remove memcpy
xiazhvera Mar 13, 2025
6bd46ab
improve error print
xiazhvera Mar 13, 2025
2855e35
merge with latest nw_socket
sbSteveK Mar 14, 2025
4e71d87
merge fix
sbSteveK Mar 14, 2025
a2fdef2
improve error reporting, state, and other logging
sbSteveK Mar 14, 2025
cf46aeb
rename aws_nw_socket_state enums with prefix
sbSteveK Mar 14, 2025
e80c20f
Secitem Testing (#715)
sbSteveK Mar 17, 2025
49cc8d5
log error
sbSteveK Mar 17, 2025
350d00d
merge with latest grand_dispatch_queue
sbSteveK Mar 17, 2025
717789b
secitem pr requested changes and refactors (#717)
sbSteveK Mar 27, 2025
7dfd44f
small fix
sbSteveK Mar 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,23 @@ jobs:
chmod a+x builder
./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DAWS_USE_APPLE_NETWORK_FRAMEWORK=${{ matrix.eventloop == 'dispatch_queue' && 'ON' || 'OFF' }} --cmake-extra=-DENABLE_SANITIZERS=ON --cmake-extra=-DSANITIZERS="${{ matrix.sanitizers }}" --config Debug

macos-secitem:
runs-on: macos-14 # latest
strategy:
fail-fast: false
matrix:
sanitizers: [",thread", ",address,undefined"]
steps:
- uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ env.CRT_CI_ROLE }}
aws-region: ${{ env.AWS_DEFAULT_REGION }}
- name: Build ${{ env.PACKAGE_NAME }} + consumers
run: |
python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
chmod a+x builder
./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DAWS_USE_SECITEM=ON --cmake-extra=-DAWS_USE_APPLE_NETWORK_FRAMEWORK=ON --cmake-extra=-DENABLE_SANITIZERS=ON --cmake-extra=-DSANITIZERS="${{ matrix.sanitizers }}"

freebsd:
runs-on: ubuntu-24.04 # latest
steps:
Expand Down
8 changes: 6 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ elseif (APPLE)
list(APPEND EVENT_LOOP_DEFINES "DISPATCH_QUEUE")
endif ()

# Enable KQUEUE on MacOS
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Enable KQUEUE on MacOS only if AWS_USE_SECITEM is not declared. SecItem requires Dispatch Queue.
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT DEFINED AWS_USE_SECITEM)
list(APPEND EVENT_LOOP_DEFINES "KQUEUE")
endif()

Expand Down Expand Up @@ -184,6 +184,10 @@ foreach(EVENT_LOOP_DEFINE IN LISTS EVENT_LOOP_DEFINES)
target_compile_definitions(${PROJECT_NAME} PUBLIC "-DAWS_ENABLE_${EVENT_LOOP_DEFINE}")
endforeach()

if (AWS_USE_SECITEM)
target_compile_definitions(${PROJECT_NAME} PUBLIC "-DAWS_USE_SECITEM")
endif()

if (BYO_CRYPTO)
target_compile_definitions(${PROJECT_NAME} PUBLIC "-DBYO_CRYPTO")
endif()
Expand Down
37 changes: 26 additions & 11 deletions include/aws/io/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,13 +99,6 @@ enum aws_io_errors {
AWS_IO_CHANNEL_READ_WOULD_EXCEED_WINDOW,
AWS_IO_EVENT_LOOP_ALREADY_ASSIGNED,
AWS_IO_EVENT_LOOP_SHUTDOWN,
AWS_IO_TLS_ERROR_NEGOTIATION_FAILURE,
AWS_IO_TLS_ERROR_NOT_NEGOTIATED,
Comment thread
sbSteveK marked this conversation as resolved.
AWS_IO_TLS_ERROR_WRITE_FAILURE,
AWS_IO_TLS_ERROR_ALERT_RECEIVED,
AWS_IO_TLS_CTX_ERROR,
AWS_IO_TLS_VERSION_UNSUPPORTED,
AWS_IO_TLS_CIPHER_PREF_UNSUPPORTED,
AWS_IO_MISSING_ALPN_MESSAGE,
AWS_IO_UNHANDLED_ALPN_PROTOCOL_MESSAGE,
AWS_IO_FILE_VALIDATION_FAILURE,
Expand All @@ -128,6 +121,7 @@ enum aws_io_errors {
AWS_IO_SOCKET_INVALID_ADDRESS,
AWS_IO_SOCKET_ILLEGAL_OPERATION_FOR_STATE,
AWS_IO_SOCKET_CONNECT_ABORTED,
AWS_IO_SOCKET_MISSING_EVENT_LOOP,
AWS_IO_DNS_QUERY_FAILED,
AWS_IO_DNS_INVALID_NAME,
AWS_IO_DNS_NO_ADDRESS_FOR_HOST,
Expand All @@ -137,12 +131,35 @@ enum aws_io_errors {
DEPRECATED_AWS_IO_INVALID_FILE_HANDLE,
AWS_IO_SHARED_LIBRARY_LOAD_FAILURE,
AWS_IO_SHARED_LIBRARY_FIND_SYMBOL_FAILURE,
AWS_IO_TLS_NEGOTIATION_TIMEOUT,
AWS_IO_TLS_ALERT_NOT_GRACEFUL,
AWS_IO_MAX_RETRIES_EXCEEDED,
AWS_IO_RETRY_PERMISSION_DENIED,

AWS_IO_TLS_ERROR_NEGOTIATION_FAILURE,
AWS_IO_TLS_ERROR_NOT_NEGOTIATED,
AWS_IO_TLS_ERROR_WRITE_FAILURE,
AWS_IO_TLS_ERROR_ALERT_RECEIVED,
AWS_IO_TLS_CTX_ERROR,
AWS_IO_TLS_VERSION_UNSUPPORTED,
AWS_IO_TLS_CIPHER_PREF_UNSUPPORTED,
AWS_IO_TLS_NEGOTIATION_TIMEOUT,
AWS_IO_TLS_ALERT_NOT_GRACEFUL,
AWS_IO_TLS_DIGEST_ALGORITHM_UNSUPPORTED,
AWS_IO_TLS_SIGNATURE_ALGORITHM_UNSUPPORTED,
AWS_IO_TLS_ERROR_READ_FAILURE,
AWS_IO_TLS_UNKNOWN_ROOT_CERTIFICATE,
AWS_IO_TLS_NO_ROOT_CERTIFICATE_FOUND,
AWS_IO_TLS_CERTIFICATE_EXPIRED,
AWS_IO_TLS_CERTIFICATE_NOT_YET_VALID,
AWS_IO_TLS_BAD_CERTIFICATE,
AWS_IO_TLS_PEER_CERTIFICATE_EXPIRED,
AWS_IO_TLS_BAD_PEER_CERTIFICATE,
AWS_IO_TLS_PEER_CERTIFICATE_REVOKED,
AWS_IO_TLS_PEER_CERTIFICATE_UNKNOWN,
AWS_IO_TLS_INTERNAL_ERROR,
AWS_IO_TLS_CLOSED_GRACEFUL,
AWS_IO_TLS_CLOSED_ABORT,
AWS_IO_TLS_INVALID_CERTIFICATE_CHAIN,
AWS_IO_TLS_HOST_NAME_MISSMATCH,

AWS_ERROR_PKCS11_VERSION_UNSUPPORTED,
AWS_ERROR_PKCS11_TOKEN_NOT_FOUND,
Expand Down Expand Up @@ -255,8 +272,6 @@ enum aws_io_errors {
AWS_IO_STREAM_SEEK_UNSUPPORTED,
AWS_IO_STREAM_GET_LENGTH_UNSUPPORTED,

AWS_IO_TLS_ERROR_READ_FAILURE,

AWS_ERROR_PEM_MALFORMED,

AWS_IO_ERROR_END_RANGE = AWS_ERROR_ENUM_END_RANGE(AWS_C_IO_PACKAGE_ID),
Expand Down
26 changes: 20 additions & 6 deletions include/aws/io/private/pki_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@
#ifdef AWS_OS_APPLE
/* It's ok to include external headers because this is a PRIVATE header file */
# include <CoreFoundation/CFArray.h>
# include <Security/Security.h>
#endif /* AWS_OS_APPLE */

struct aws_secitem_options;
struct aws_string;

AWS_EXTERN_C_BEGIN
Expand All @@ -29,7 +31,6 @@ AWS_IO_API const char *aws_determine_default_pki_dir(void);
AWS_IO_API const char *aws_determine_default_pki_ca_file(void);

#ifdef AWS_OS_APPLE
# if !defined(AWS_OS_IOS)
/**
* Imports a PEM armored PKCS#7 public/private key pair
* into identity for use with SecurityFramework.
Expand All @@ -41,7 +42,6 @@ int aws_import_public_and_private_keys_to_identity(
const struct aws_byte_cursor *private_key,
CFArrayRef *identity,
const struct aws_string *keychain_path);
# endif /* AWS_OS_IOS */

/**
* Imports a PKCS#12 file into identity for use with
Expand All @@ -64,14 +64,28 @@ int aws_import_trusted_certificates(
CFArrayRef *certs);

/**
* Releases identity (the output of the aws_import_* functions).
* Imports a PEM armored PKCS#7 public/private key pair
* into protected data keychain for use with Apple Network Framework.
* Currently only implemented for iOS.
*/
void aws_release_identity(CFArrayRef identity);
int aws_secitem_import_cert_and_key(
struct aws_allocator *alloc,
CFAllocatorRef cf_alloc,
const struct aws_byte_cursor *public_cert_chain,
const struct aws_byte_cursor *private_key,
sec_identity_t *secitem_identity,
const struct aws_secitem_options *secitem_options);

/**
* releases the output of aws_import_trusted_certificates.
* Imports a PKCS#12 file into protected data keychain for use with
* Apple Network Framework.
* Currently only implemented for iOS.
*/
void aws_release_certificates(CFArrayRef certs);
int aws_secitem_import_pkcs12(
CFAllocatorRef cf_alloc,
const struct aws_byte_cursor *pkcs12_cursor,
const struct aws_byte_cursor *password,
sec_identity_t *out_identity);

#endif /* AWS_OS_APPLE */

Expand Down
11 changes: 4 additions & 7 deletions include/aws/io/private/socket_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,8 @@ int aws_socket_init_apple_nw_socket(

struct aws_socket_vtable {
void (*socket_cleanup_fn)(struct aws_socket *socket);
int (*socket_connect_fn)(
struct aws_socket *socket,
const struct aws_socket_endpoint *remote_endpoint,
struct aws_event_loop *event_loop,
aws_socket_on_connection_result_fn *on_connection_result,
void *user_data);
int (*socket_bind_fn)(struct aws_socket *socket, const struct aws_socket_endpoint *local_endpoint);
int (*socket_connect_fn)(struct aws_socket *socket, struct aws_socket_connect_options *socket_connect_options);
int (*socket_bind_fn)(struct aws_socket *socket, struct aws_socket_bind_options *socket_bind_options);
int (*socket_listen_fn)(struct aws_socket *socket, int backlog_size);
int (*socket_start_accept_fn)(
struct aws_socket *socket,
Expand Down Expand Up @@ -85,6 +80,8 @@ struct aws_socket_vtable {
struct aws_socket *socket,
aws_socket_on_shutdown_complete_fn fn,
void *user_data);
struct aws_byte_buf (*socket_get_protocol_fn)(const struct aws_socket *socket);
struct aws_string *(*socket_get_server_name_fn)(const struct aws_socket *socket);
};

struct on_start_accept_result_args {
Expand Down
2 changes: 2 additions & 0 deletions include/aws/io/private/tls_channel_handler_shared.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ enum aws_tls_handler_read_state {

AWS_EXTERN_C_BEGIN

AWS_IO_API bool aws_is_using_secitem(void);

AWS_IO_API void aws_tls_channel_handler_shared_init(
struct aws_tls_channel_handler_shared *tls_handler_shared,
struct aws_channel_handler *handler,
Expand Down
41 changes: 32 additions & 9 deletions include/aws/io/socket.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ struct aws_socket_options {
};

struct aws_socket;
struct aws_event_loop;
Comment thread
sbSteveK marked this conversation as resolved.

/**
* Called in client mode when an outgoing connection has succeeded or an error has occurred.
Expand Down Expand Up @@ -168,6 +167,21 @@ struct aws_socket {
void *impl;
};

struct aws_socket_connect_options {
const struct aws_socket_endpoint *remote_endpoint;
struct aws_event_loop *event_loop;
aws_socket_on_connection_result_fn *on_connection_result;
void *user_data;

/*
* This is only set when using Apple SecItem for TLS negotiation.
* Apple Network Connections using SecItem require all TLS configuration options at the point of
* creating the socket slot as it handles both the TCP and TLS negotiation before returning a
* valid socket for use.
*/
struct aws_tls_connection_options *tls_connection_options;
};

struct aws_socket_listener_options {
aws_socket_on_accept_result_fn *on_accept_result;
void *on_accept_result_user_data;
Expand All @@ -178,6 +192,21 @@ struct aws_socket_listener_options {
void *on_accept_start_user_data;
};

struct aws_socket_bind_options {
const struct aws_socket_endpoint *local_endpoint;
void *user_data;

/*
* This is only set when using Apple SecItem for TLS negotiation.
* Apple Network Connections using SecItem require all TLS configuration options at the point of
* creating the socket slot as it handles both the TCP and TLS negotiation before returning a
* valid socket for use.
* Socket bind also needs an event loop to run its verification block.
*/
struct aws_event_loop *event_loop;
struct aws_tls_connection_options *tls_connection_options;
};

struct aws_byte_buf;
struct aws_byte_cursor;

Expand Down Expand Up @@ -212,21 +241,15 @@ AWS_IO_API void aws_socket_clean_up(struct aws_socket *socket);
* on_connection_result in the event-loop's thread. Upon completion, the socket will already be assigned
* an event loop. If NULL is passed for UDP, it will immediately return upon success, but you must call
* aws_socket_assign_to_event_loop before use.
*
*/
AWS_IO_API int aws_socket_connect(
struct aws_socket *socket,
const struct aws_socket_endpoint *remote_endpoint,
struct aws_event_loop *event_loop,
aws_socket_on_connection_result_fn *on_connection_result,
void *user_data);
AWS_IO_API int aws_socket_connect(struct aws_socket *socket, struct aws_socket_connect_options *socket_connect_options);

/**
* Binds the socket to a local address. In UDP mode, the socket is ready for `aws_socket_read()` operations. In
* connection oriented modes, you still must call `aws_socket_listen()` and `aws_socket_start_accept()` before using the
* socket. local_endpoint is copied.
*/
AWS_IO_API int aws_socket_bind(struct aws_socket *socket, const struct aws_socket_endpoint *local_endpoint);
AWS_IO_API int aws_socket_bind(struct aws_socket *socket, struct aws_socket_bind_options *socket_bind_options);

/**
* Get the local address which the socket is bound to.
Expand Down
Loading